Many fixes
* Profile.aspx: * ProfileEdition.cs: Fixes the username modification * Book-next.aspx: pollution * NpgsqlMembershipProvider.cs: xmldoc * NpgsqlProfileProvider.cs: use default values from configuration * NpgsqlUserNameProvider.cs: Fixes the username detection * test-domain-TestAPI.config: profile dates must be returned as DateTime * instdbws.sql: The conversion to a valid .Net DateTime requires a credible date time as source value, the null one is not supported. * style.css: Fixes the new notification style * AccountController.cs: Fixes the profile edition. Now using the anti forgery key at login time * Book.aspx: * LocalizedText.resx: * LocalizedText.fr.resx: * CalendarApi.cs: * GoogleController.cs: * LocalizedText.Designer.cs: * LocalizedText.fr.Designer.cs: WIP booking * HomeController.cs: code prettying * Global.asax.cs: Limits the usage of titles in a route to the blog controller * OAuth2.cs: Profile values may be of type DBNull ... * T.cs: All translated strings will be Html encoded, as expected from an html helper * YavscHelpers.cs: A new method to build a javascript string... * App.master: * AppAdmin.master: Notification.body is now a js string literal * NoLogin.master: sync with the true master * Login.aspx: Permits the anti forgery key usage * Estimate.aspx: refactoring * Web.config: Fixes a later commit on the catalog name space * Web.csproj: An ajax helper to notify * ChangePasswordModel.cs: * RegisterClientModel.cs: A regexp for user name * LoginModel.cs: A regexp for user name and password * Profile.cs: A regexp for user name, and profile usage fixes * UserManager.cs: Checks for username availability before trying to modify it * YavscModel.csproj: `ProfileEdition` class addition * ChangeLog: should not be indexed * ChangeLog: useless here * ValidateAjaxAttribute.cs: Fixes usage of HtmlFieldPrefix * BookQuery.cs: Start, end hour and role are required * OtherWebException.cs: useless
This commit is contained in:
@ -118,7 +118,7 @@ CREATE TABLE profiledata
|
||||
grefreshtoken character varying(512), -- Google refresh token
|
||||
gtokentype character varying(256), -- Google access token type
|
||||
gcalid character varying(255), -- Google calendar identifier
|
||||
gtokenexpir timestamp with time zone, -- Google access token expiration date
|
||||
gtokenexpir timestamp with time zone NOT NULL DEFAULT now(), -- Google access token expiration date
|
||||
avatar character varying(512), -- url for an avatar
|
||||
gcalapi boolean NOT NULL DEFAULT false,
|
||||
gregid character varying(1024), -- Google Cloud Message registration identifier
|
||||
@ -211,7 +211,7 @@ CREATE TABLE commandes
|
||||
id bigserial NOT NULL, -- Identifiant unique de commande e, cours
|
||||
validation date, -- Date de validation
|
||||
prdref character varying(255) NOT NULL, -- Product reference from the unique valid catalog at the validation date
|
||||
creation timestamp with time zone, -- creation date
|
||||
creation timestamp with time zone NOT NULL, -- creation date
|
||||
clientname character varying(255), -- user who created the command, client of this command
|
||||
applicationname character varying(255), -- application concerned by this command
|
||||
params json,
|
||||
|
@ -34,8 +34,7 @@ body {
|
||||
z-index: 1000;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
right: 0;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
@ -60,7 +59,7 @@ header {
|
||||
transition: margin 2s, padding 2s;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding-top: 201px;
|
||||
padding-top: 2em;
|
||||
padding-bottom:2em;
|
||||
display: block;
|
||||
background: url("/images/star-939235_1280.jpg") -3em -3em no-repeat fixed;
|
||||
@ -145,8 +144,8 @@ aside {
|
||||
border-radius:1em;
|
||||
}
|
||||
.postpreview video, .postpreview img {
|
||||
max-width:100%;
|
||||
max-height:5em;
|
||||
max-width: 100%;
|
||||
padding: 1em;
|
||||
}
|
||||
.post {
|
||||
display:block;
|
||||
@ -266,7 +265,7 @@ a {
|
||||
|
||||
.actionlink, .menuitem, a {
|
||||
display:inline-block;
|
||||
color: white;
|
||||
color: yellow;
|
||||
border-radius:1em;
|
||||
border: solid black 1px;
|
||||
background-color: rgba(20,20,20,.8);
|
||||
@ -340,6 +339,7 @@ a:active {
|
||||
|
||||
@media all and (max-width: 640px) {
|
||||
header {
|
||||
padding-top:1em;
|
||||
padding-bottom:1em;
|
||||
background: url("/images/star-939235_1280.s.jpg") 0 0 no-repeat fixed;
|
||||
}
|
||||
@ -394,8 +394,8 @@ header h1, header a , .actionlink, .menuitem, a { padding:.5em;}
|
||||
|
||||
@media all and (max-width: 350px) {
|
||||
header {
|
||||
padding-top: 101px;
|
||||
padding-bottom:1em;
|
||||
padding-top:.5em;
|
||||
padding-bottom:.5em;
|
||||
background: url("/images/star-939235_1280.xxs.jpg") 0 0 no-repeat fixed;
|
||||
}
|
||||
header h1, header a { padding:.2em;}
|
||||
|
@ -1,3 +1,72 @@
|
||||
2015-11-01 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* Book-next.aspx: pollution
|
||||
|
||||
* instdbws.sql: The conversion to a valid .Net DateTime
|
||||
requires a credible date time as source value, the null one is
|
||||
not supported.
|
||||
|
||||
* style.css: Fixes the new notification style
|
||||
|
||||
* AccountController.cs: Fixes the profile edition.
|
||||
Now using the anti forgery key at login time
|
||||
|
||||
* Book.aspx:
|
||||
* CalendarApi.cs:
|
||||
* GoogleController.cs: WIP booking
|
||||
|
||||
* HomeController.cs: code prettying
|
||||
|
||||
* Global.asax.cs: Limits the usage of titles in a route to the
|
||||
blog controller
|
||||
|
||||
* OAuth2.cs: Profile values may be of type DBNull ...
|
||||
|
||||
* T.cs: All translated strings will be Html encoded, as
|
||||
expected from an html helper
|
||||
|
||||
* YavscHelpers.cs: A new method to build a javascript
|
||||
string...
|
||||
|
||||
* App.master:
|
||||
* AppAdmin.master: Notification.body is now a js string
|
||||
literal
|
||||
|
||||
* NoLogin.master: sync with the true master
|
||||
|
||||
* Login.aspx: Permits the anti forgery key usage
|
||||
|
||||
* Profile.aspx: Fixes the username modification
|
||||
|
||||
* Estimate.aspx: refactoring
|
||||
|
||||
* Web.config: Fixes a later commit on the catalog name space
|
||||
|
||||
* Web.csproj: An ajax helper to notify
|
||||
|
||||
* ChangeLog: should not be indexed
|
||||
|
||||
* ValidateAjaxAttribute.cs: Fixes usage of HtmlFieldPrefix
|
||||
|
||||
2015-10-31 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* Web.csproj:
|
||||
* Web.config:
|
||||
* T.cs:
|
||||
* Global.asax.cs:
|
||||
* App.master:
|
||||
* Book.aspx:
|
||||
* YavscHelpers.cs:
|
||||
* OAuth2.cs:
|
||||
* Profile.aspx:
|
||||
* YavscAjaxHelper.cs:
|
||||
* Book-next.aspx:
|
||||
* CalendarApi.cs:
|
||||
* HomeController.cs:
|
||||
* GoogleController.cs:
|
||||
* Estimate.aspx:
|
||||
* AccountController.cs:
|
||||
|
||||
2015-10-30 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* packages.config:
|
||||
|
@ -16,6 +16,7 @@ using System.Collections.Specialized;
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Configuration;
|
||||
using Yavsc.Model;
|
||||
|
||||
namespace Yavsc.Controllers
|
||||
{
|
||||
@ -61,7 +62,7 @@ namespace Yavsc.Controllers
|
||||
/// <returns>The login.</returns>
|
||||
/// <param name="model">Model.</param>
|
||||
/// <param name="returnUrl">Return URL.</param>
|
||||
[HttpPost]
|
||||
[HttpPost,ValidateAntiForgeryToken]
|
||||
public ActionResult Login (LoginModel model, string returnUrl)
|
||||
{
|
||||
if (ModelState.IsValid) {
|
||||
@ -187,7 +188,7 @@ namespace Yavsc.Controllers
|
||||
ViewData ["UserName"] = id;
|
||||
if (!confirmed)
|
||||
return View ();
|
||||
string logged = Membership.GetUser ().UserName;
|
||||
string logged = this.User.Identity.Name;
|
||||
if (logged != id)
|
||||
if (!Roles.IsUserInRole ("Admin"))
|
||||
throw new Exception ("Unregister another user");
|
||||
@ -250,7 +251,7 @@ namespace Yavsc.Controllers
|
||||
if (id == null)
|
||||
id = Membership.GetUser ().UserName;
|
||||
ViewData ["UserName"] = id;
|
||||
Profile model = new Profile (ProfileBase.Create (id));
|
||||
ProfileEdition model = new ProfileEdition (ProfileBase.Create (id));
|
||||
model.RememberMe = FormsAuthentication.GetAuthCookie (id, true) == null;
|
||||
return View (model);
|
||||
}
|
||||
@ -265,20 +266,32 @@ namespace Yavsc.Controllers
|
||||
/// <param name="AvatarFile">Avatar file.</param>
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public ActionResult Profile (string id, Profile model, HttpPostedFileBase AvatarFile)
|
||||
public ActionResult Profile (string id, ProfileEdition model, HttpPostedFileBase AvatarFile)
|
||||
{
|
||||
// ASSERT("Membership.GetUser ().UserName is made of simple characters, no slash nor backslash"
|
||||
|
||||
string logdu = Membership.GetUser ().UserName;
|
||||
if (string.IsNullOrWhiteSpace (id))
|
||||
id = logdu;
|
||||
string logdu = User.Identity.Name;
|
||||
if (string.IsNullOrWhiteSpace (id)) {
|
||||
if (string.IsNullOrWhiteSpace (model.UserName)) {
|
||||
model.UserName = logdu;
|
||||
return View (model);
|
||||
} else {
|
||||
id = logdu;
|
||||
}
|
||||
}
|
||||
ViewData ["UserName"] = id;
|
||||
bool editsMyName = (string.Compare(id,logdu)==0);
|
||||
if (!editsMyName)
|
||||
bool editsTheUserName = model.NewUserName!=null&&(string.Compare(id,model.NewUserName)!=0);
|
||||
// Checks authorisation
|
||||
if (logdu!=id)
|
||||
if (!Roles.IsUserInRole ("Admin"))
|
||||
if (!Roles.IsUserInRole ("FrontOffice"))
|
||||
throw new UnauthorizedAccessException ("Your are not authorized to modify this profile");
|
||||
|
||||
// checks availability of a new username
|
||||
if (editsTheUserName)
|
||||
if (!UserManager.IsAvailable (model.NewUserName))
|
||||
ModelState.AddModelError ("UserName",
|
||||
string.Format (
|
||||
LocalizedText.DuplicateUserName,
|
||||
model.NewUserName
|
||||
));
|
||||
if (AvatarFile != null) {
|
||||
// if said valid, move as avatar file
|
||||
// else invalidate the model
|
||||
@ -295,10 +308,6 @@ namespace Yavsc.Controllers
|
||||
string.Format ("Image type {0} is not supported (suported formats : {1})",
|
||||
AvatarFile.ContentType, "image/png"));
|
||||
}
|
||||
/* Sync the property in the Profile model to display :
|
||||
* string cAvat = HttpContext.Profile.GetPropertyValue ("Avatar") as string;
|
||||
if (cAvat != null) if (model.avatar == null) model.avatar = cAvat;
|
||||
*/
|
||||
if (ModelState.IsValid) {
|
||||
ProfileBase prf = ProfileBase .Create (id);
|
||||
prf.SetPropertyValue ("Name", model.Name);
|
||||
@ -328,11 +337,12 @@ namespace Yavsc.Controllers
|
||||
prf.SetPropertyValue ("gcalid", model.GoogleCalendar);
|
||||
prf.Save ();
|
||||
|
||||
if (editsMyName) {
|
||||
UserManager.ChangeName (id, model.Name);
|
||||
FormsAuthentication.SetAuthCookie (model.Name, model.RememberMe);
|
||||
if (editsTheUserName) {
|
||||
UserManager.ChangeName (id, model.NewUserName);
|
||||
FormsAuthentication.SetAuthCookie (model.NewUserName, model.RememberMe);
|
||||
model.UserName = model.NewUserName;
|
||||
}
|
||||
YavscHelpers.Notify(ViewData, "Profile enregistré"+((editsMyName)?", nom public inclu.":""));
|
||||
YavscHelpers.Notify(ViewData, "Profile enregistré"+((editsTheUserName)?", nom public inclu.":""));
|
||||
}
|
||||
return View (model);
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ namespace Yavsc.Controllers
|
||||
YavscHelpers.Notify(ViewData, msg);
|
||||
return View ("Auth");
|
||||
}
|
||||
SaveToken (gat);
|
||||
SaveToken (HttpContext.Profile,gat);
|
||||
HttpContext.Profile.SetPropertyValue ("gcalapi", true);
|
||||
string returnUrl = (string)Session ["returnUrl"];
|
||||
Session ["returnUrl"] = null;
|
||||
@ -126,14 +126,14 @@ namespace Yavsc.Controllers
|
||||
/// order to save a descent value as expiration date.
|
||||
/// </summary>
|
||||
/// <param name="gat">Gat.</param>
|
||||
private void SaveToken (AuthToken gat)
|
||||
private void SaveToken (ProfileBase pr, AuthToken gat)
|
||||
{
|
||||
HttpContext.Profile.SetPropertyValue ("gtoken", gat.access_token);
|
||||
pr.SetPropertyValue ("gtoken", gat.access_token);
|
||||
if (gat.refresh_token != null)
|
||||
HttpContext.Profile.SetPropertyValue ("grefreshtoken", gat.refresh_token);
|
||||
HttpContext.Profile.SetPropertyValue ("gtokentype", gat.token_type);
|
||||
HttpContext.Profile.SetPropertyValue ("gtokenexpir", DateTime.Now.AddSeconds (gat.expires_in));
|
||||
HttpContext.Profile.Save ();
|
||||
pr.SetPropertyValue ("grefreshtoken", gat.refresh_token);
|
||||
pr.SetPropertyValue ("gtokentype", gat.token_type);
|
||||
pr.SetPropertyValue ("gtokenexpir", DateTime.Now.AddSeconds (gat.expires_in));
|
||||
pr.Save ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -161,7 +161,9 @@ namespace Yavsc.Controllers
|
||||
// just set this user as logged on
|
||||
foreach (MembershipUser u in mbrs) {
|
||||
string username = u.UserName;
|
||||
FormsAuthentication.SetAuthCookie (username, true);
|
||||
FormsAuthentication.SetAuthCookie (username, true);
|
||||
/* var upr = ProfileBase.Create (username);
|
||||
SaveToken (upr,gat); */
|
||||
}
|
||||
Session ["returnUrl"] = null;
|
||||
return Redirect (returnUrl);
|
||||
@ -230,7 +232,7 @@ namespace Yavsc.Controllers
|
||||
}
|
||||
if (me.url != null)
|
||||
HttpContext.Profile.SetPropertyValue ("WebSite", me.url);
|
||||
SaveToken (gat);
|
||||
SaveToken (HttpContext.Profile,gat);
|
||||
// already done in SaveToken: HttpContext.Profile.Save ();
|
||||
return Redirect (returnUrl);
|
||||
}
|
||||
@ -256,7 +258,6 @@ namespace Yavsc.Controllers
|
||||
[HttpGet]
|
||||
public ActionResult ChooseCalendar (string returnUrl)
|
||||
{
|
||||
|
||||
bool hasCalAuth = (bool)HttpContext.Profile.GetPropertyValue ("gcalapi");
|
||||
if (!hasCalAuth) {
|
||||
Session ["returnUrl"] = Request.Url.Scheme + "://" + Request.Url.Authority + "/Google/ChooseCalendar";
|
||||
@ -296,8 +297,7 @@ namespace Yavsc.Controllers
|
||||
/// Dates the query.
|
||||
/// </summary>
|
||||
/// <returns>The query.</returns>
|
||||
[Authorize]
|
||||
[HttpGet]
|
||||
[Authorize,HttpGet]
|
||||
public ActionResult Book ()
|
||||
{
|
||||
return View (new BookQuery ());
|
||||
@ -308,42 +308,50 @@ namespace Yavsc.Controllers
|
||||
/// </summary>
|
||||
/// <returns>The query.</returns>
|
||||
/// <param name="model">Model.</param>
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
[Authorize,HttpPost]
|
||||
public ActionResult Book (BookQuery model)
|
||||
{
|
||||
if (ModelState.IsValid) {
|
||||
DateTime mindate = DateTime.Now;
|
||||
if (model.StartDate < mindate)
|
||||
model.StartDate = mindate;
|
||||
if (model.EndDate < mindate)
|
||||
model.EndDate = mindate.AddYears (1).Date;
|
||||
if (model.StartDate < mindate){
|
||||
ModelState.AddModelError ("StartDate", LocalizedText.FillInAFutureDate);
|
||||
}
|
||||
if (model.EndDate < model.StartDate)
|
||||
ModelState.AddModelError ("EndDate", LocalizedText.StartDateAfterEndDate);
|
||||
|
||||
var muc = Membership.FindUsersByName (model.Person);
|
||||
if (muc.Count == 0) {
|
||||
ModelState.AddModelError ("Person", LocalizedText.Non_existent_user);
|
||||
return View (model);
|
||||
}
|
||||
if (!Roles.IsUserInRole (model.Role)) {
|
||||
ModelState.AddModelError ("Role", LocalizedText.UserNotInThisRole);
|
||||
return View (model);
|
||||
}
|
||||
|
||||
ProfileBase upr = ProfileBase.Create (model.Person);
|
||||
|
||||
string calid = (string)upr.GetPropertyValue ("gcalid");
|
||||
if (string.IsNullOrWhiteSpace (calid)) {
|
||||
var gcalid = upr.GetPropertyValue ("gcalid");
|
||||
if (gcalid is DBNull)
|
||||
ModelState.AddModelError ("Person", LocalizedText.No_calendar_for_this_user);
|
||||
return View (model);
|
||||
}
|
||||
DateTime maxdate = model.EndDate;
|
||||
CalendarApi c = new CalendarApi ();
|
||||
CalendarEventList res;
|
||||
try {
|
||||
var events = c.GetCalendar (calid, mindate, maxdate, upr);
|
||||
|
||||
} catch (OtherWebException ex) {
|
||||
return View ("OtherWebException", ex);
|
||||
if (ModelState.IsValid) {
|
||||
string calid = (string) gcalid;
|
||||
DateTime maxdate = model.EndDate;
|
||||
CalendarApi c = new CalendarApi ();
|
||||
CalendarEventList events;
|
||||
try {
|
||||
events = c.GetCalendar (calid, mindate, maxdate, upr);
|
||||
YavscHelpers.Notify (ViewData, "Google calendar API call success");
|
||||
} catch (WebException ex) {
|
||||
string response;
|
||||
using (var stream = ex.Response.GetResponseStream())
|
||||
using (var reader = new StreamReader(stream))
|
||||
{
|
||||
response = reader.ReadToEnd();
|
||||
}
|
||||
YavscHelpers.Notify (ViewData,
|
||||
string.Format(
|
||||
"Google calendar API exception {0} : {1}<br><pre>{2}</pre>",
|
||||
ex.Status.ToString(),
|
||||
ex.Message,
|
||||
response));
|
||||
}
|
||||
}
|
||||
}
|
||||
return View (model);
|
||||
|
@ -92,7 +92,8 @@ namespace Yavsc.Controllers
|
||||
if (!Request.IsAuthenticated) {
|
||||
ProfileBase anonymousProfile = ProfileBase.Create(anonid);
|
||||
object ac = anonymousProfile.GetPropertyValue ("allowcookies");
|
||||
if (ac is string && ac!="true")
|
||||
|
||||
if (ac is string && ((string)ac)!="true")
|
||||
YavscHelpers.Notify (ViewData, LocalizedText.ThisSiteUsesCookies,
|
||||
"function(){Yavsc.ajax(\"/Yavsc/AllowCookies\", { id:'"+anonid+"' });}");
|
||||
}
|
||||
|
@ -77,8 +77,8 @@ namespace Yavsc
|
||||
);
|
||||
routes.MapRoute (
|
||||
"BackCompat",
|
||||
"{controller}/{action}/{user}/{title}",
|
||||
new { controller = "Home", action = "Index", user = UrlParameter.Optional, title = UrlParameter.Optional }
|
||||
"Blogs/{action}/{user}/{title}",
|
||||
new { controller = "Blogs", action = "Index", user = UrlParameter.Optional, title = UrlParameter.Optional }
|
||||
);
|
||||
|
||||
routes.MapRoute (
|
||||
|
@ -106,18 +106,18 @@ namespace Yavsc.Helpers.Google
|
||||
using (Stream respstream = resp.GetResponseStream ()) {
|
||||
try {
|
||||
res = (CalendarEventList) new DataContractJsonSerializer(typeof(CalendarEventList)).ReadObject (respstream);
|
||||
} catch (Exception ex) {
|
||||
} catch (Exception ) {
|
||||
respstream.Close ();
|
||||
resp.Close ();
|
||||
webreq.Abort ();
|
||||
throw ex;
|
||||
throw ;
|
||||
}
|
||||
}
|
||||
resp.Close ();
|
||||
}
|
||||
} catch (WebException ex) {
|
||||
} catch (WebException ) {
|
||||
webreq.Abort ();
|
||||
throw new OtherWebException (ex);
|
||||
throw;
|
||||
}
|
||||
webreq.Abort ();
|
||||
return res;
|
||||
|
@ -226,16 +226,15 @@ namespace Yavsc.Helpers.Google
|
||||
public static string GetFreshGoogleCredential (ProfileBase pr)
|
||||
{
|
||||
string token = (string)pr.GetPropertyValue ("gtoken");
|
||||
string token_type = (string)pr.GetPropertyValue ("gtokentype");
|
||||
DateTime token_exp = (DateTime)pr.GetPropertyValue ("gtokenexpir");
|
||||
string token_type = (string) pr.GetPropertyValue ("gtokentype");
|
||||
DateTime token_exp = (DateTime) pr.GetPropertyValue ("gtokenexpir");
|
||||
if (token_exp < DateTime.Now) {
|
||||
object ort = pr.GetPropertyValue ("grefreshtoken");
|
||||
if (ort == null) {
|
||||
if (ort == null || ort is DBNull) {
|
||||
throw new InvalidOAuth2RefreshToken ("Google");
|
||||
}
|
||||
else {
|
||||
string refresh_token = ort as string;
|
||||
|
||||
AuthToken gat = OAuth2.GetTokenPosting (
|
||||
string.Format ("grant_type=refresh_token&client_id={0}&client_secret={1}&refresh_token={2}",
|
||||
CLIENT_ID, CLIENT_SECRET, refresh_token));
|
||||
|
@ -33,10 +33,10 @@ namespace Yavsc.Helpers
|
||||
/// </summary>
|
||||
/// <param name="helper">Helper.</param>
|
||||
/// <param name="text">Text.</param>
|
||||
public static string Translate(this HtmlHelper helper, string text)
|
||||
public static IHtmlString Translate(this HtmlHelper helper, string text)
|
||||
{
|
||||
// Just call the other one, to avoid having two copies (we don't use the HtmlHelper).
|
||||
return GetString(text);
|
||||
return new MvcHtmlString(helper.Encode(GetString(text)));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ using Yavsc.Model.Messaging;
|
||||
namespace Yavsc.Helpers
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Yavsc helpers.
|
||||
/// </summary>
|
||||
@ -62,7 +61,7 @@ namespace Yavsc.Helpers
|
||||
{
|
||||
SendActivationMessage (helper.Route("Default", new { controller="Account",
|
||||
action = "Validate",
|
||||
key=user.ProviderUserKey.ToString() } )
|
||||
key=user.ProviderUserKey.ToString(), id = user.UserName } )
|
||||
, WebConfigurationManager.AppSettings ["RegistrationMessage"],
|
||||
user);
|
||||
}
|
||||
@ -73,7 +72,12 @@ namespace Yavsc.Helpers
|
||||
/// <param name="user">User.</param>
|
||||
public static void SendActivationMessage(this System.Web.Mvc.UrlHelper helper, MembershipUser user)
|
||||
{
|
||||
SendActivationMessage (helper.Content("~/Account/Validate/"+user.UserName+"/?key="+user.ProviderUserKey.ToString())
|
||||
SendActivationMessage (
|
||||
string.Format("{2}://{3}/Account/Validate/{1}?key={0}",
|
||||
user.ProviderUserKey.ToString(), user.UserName ,
|
||||
helper.RequestContext.HttpContext.Request.Url.Scheme,
|
||||
helper.RequestContext.HttpContext.Request.Url.Authority
|
||||
)
|
||||
, WebConfigurationManager.AppSettings ["RegistrationMessage"],
|
||||
user);
|
||||
}
|
||||
@ -221,25 +225,11 @@ namespace Yavsc.Helpers
|
||||
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
||||
return serializer.Serialize(obj);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Notify the specified helper and message.
|
||||
/// </summary>
|
||||
/// <param name="helper">Helper.</param>
|
||||
/// <param name="message">Message.</param>
|
||||
public static void Notify (this HtmlHelper helper, string message) {
|
||||
Notify (helper.ViewData, message);
|
||||
}
|
||||
/// <summary>
|
||||
/// Notify the specified viewData and message.
|
||||
/// </summary>
|
||||
/// <param name="viewData">View data.</param>
|
||||
/// <param name="message">Message.</param>
|
||||
public static void Notify(ViewDataDictionary viewData, string message, string click_action=null) {
|
||||
if (viewData ["Notifications"] == null)
|
||||
viewData ["Notifications"] = new List<Notification> ();
|
||||
(viewData ["Notifications"] as List<Notification>).Add (
|
||||
new Notification { body = message.Replace("\'","\\\'"),
|
||||
public static void Notify(ViewDataDictionary ViewData, string message, string click_action=null) {
|
||||
if (ViewData ["Notifications"] == null)
|
||||
ViewData ["Notifications"] = new List<Notification> ();
|
||||
(ViewData ["Notifications"] as List<Notification>).Add (
|
||||
new Notification { body = YavscAjaxHelper.QuoteJavascriptString(message),
|
||||
click_action = click_action } ) ;
|
||||
}
|
||||
/// <summary>
|
||||
@ -339,7 +329,7 @@ namespace Yavsc.Helpers
|
||||
}
|
||||
}
|
||||
if (ResultCount == 0) {
|
||||
writer.Write (none);
|
||||
writer.WriteEncodedText(none);
|
||||
}
|
||||
return new MvcHtmlString(strwr.ToString());
|
||||
}
|
||||
|
@ -40,8 +40,8 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
<% foreach (Notification note in (IEnumerable<Notification>) ViewData ["Notifications"] ) {
|
||||
if (note.click_action == null) {%> Yavsc.notice('<%=note.body%>'); <% }
|
||||
else {%> Yavsc.notice('<%=note.body%>', <%=note.click_action%>); <% } %>
|
||||
if (note.click_action == null) {%> Yavsc.notice(<%=note.body%>); <% }
|
||||
else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>); <% } %>
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
|
@ -36,11 +36,12 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
</asp:ContentPlaceHolder>
|
||||
<asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
|
||||
<div id="notifications"></div>
|
||||
<%if (ViewData ["Notifications"]!=null) { %>
|
||||
<% if (ViewData ["Notifications"]!=null) { %>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
<% foreach (string note in (IEnumerable<string>) ViewData ["Notifications"] ) { %>
|
||||
Yavsc.notice('<%=note%>');
|
||||
<% foreach (Notification note in (IEnumerable<Notification>) ViewData ["Notifications"] ) {
|
||||
if (note.click_action == null) {%> Yavsc.notice(<%=note.body%>); <% }
|
||||
else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>); <% } %>
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
|
@ -1,65 +1,69 @@
|
||||
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<% ViewState["orgtitle"] = Html.Translate(Page.Title); %>
|
||||
<% Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName; %>
|
||||
<asp:ContentPlaceHolder id="init" runat="server">
|
||||
</asp:ContentPlaceHolder><%
|
||||
ViewState["orgtitle"] = T.GetString(Page.Title);
|
||||
Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName;
|
||||
%><head runat="server">
|
||||
</asp:ContentPlaceHolder><head runat="server">
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="/App_Themes/style.css" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/style.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/font-awesome.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/jquery-ui.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/prettify.css")%>" />
|
||||
<link rel="stylesheet" href="<%=Url.Content("~/App_Themes/doxy.css")%>" />
|
||||
<link rel="icon" type="image/png" href="/favicon.png?v=3" />
|
||||
<script type="text/javascript" src="<%=Url.Content("~/Scripts/jquery-2.1.4.min.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/jquery-2.1.4.min.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/jquery-ui-1.11.4.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/parallax.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/Prettify/run_prettify.js")%>"></script>
|
||||
<script type="text/javascript">
|
||||
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
</script>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.js")%>"></script>
|
||||
<script src="<%=Url.Content("~/Scripts/yavsc.tags.js")%>"></script>
|
||||
<asp:ContentPlaceHolder id="head" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
<link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<header data-type="background" data-speed="8" >
|
||||
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
|
||||
<h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>"> <%=ViewState["orgtitle"]%> </a> -
|
||||
<a href="<%=Request.Url.Scheme + "://" + Request.Url.Authority%>"><%= YavscHelpers.SiteName %></a>
|
||||
</h1>
|
||||
</asp:ContentPlaceHolder><asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder><%
|
||||
if (ViewData["Error"]!=null) {
|
||||
%><div class="error"><%= Html.Encode(ViewData["Error"]) %>
|
||||
</div><% }
|
||||
if (ViewData["Message"]!=null) {
|
||||
%><div class="message"><%= Html.Encode(ViewData["Message"]) %></div><% }
|
||||
%>
|
||||
<h1><a href="<%= Url.RouteUrl("Default") %>">
|
||||
<%=ViewState["orgtitle"]%></a>
|
||||
- <a href="<%= Url.RouteUrl("Default", new {controller = "Home" , action = "Index" }) %>"><%= YavscHelpers.SiteName %></a>
|
||||
</h1>
|
||||
</asp:ContentPlaceHolder>
|
||||
<asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
|
||||
<div id="notifications"></div>
|
||||
<% if (ViewData ["Notifications"]!=null) { %>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
<% foreach (Notification note in (IEnumerable<Notification>) ViewData ["Notifications"] ) {
|
||||
if (note.click_action == null) {%> Yavsc.notice(<%=note.body%>); <% }
|
||||
else {%> Yavsc.notice(<%=note.body%>, <%=note.click_action%>); <% } %>
|
||||
<% } %>
|
||||
});
|
||||
</script>
|
||||
<% } %>
|
||||
</header>
|
||||
<main>
|
||||
<main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" >
|
||||
<asp:ContentPlaceHolder ID="MainContent" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
</main>
|
||||
<asp:ContentPlaceHolder ID="MASContent" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
|
||||
<footer>
|
||||
<script src="https://apis.google.com/js/platform.js" async defer>
|
||||
{lang: 'fr'}
|
||||
</script>
|
||||
<%= Html.ActionLink("Contact","Contact","Home",null, new { @class="thanks" }) %>
|
||||
<footer data-type="background" data-speed="5" >
|
||||
<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><% }} %>
|
||||
<div class="g-plusone" data-annotation="inline" data-width="230"></div>
|
||||
</footer>
|
||||
<script type="text/javascript">
|
||||
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
</script> <script>
|
||||
$( ".bshd" ).on("click",function(e) {
|
||||
if (e.target == "[object HTMLElement]") {
|
||||
var panel = $(this).children(".bshpanel");
|
||||
if (panel.hasClass("hidden")) panel.css("cursor","zoom-out");
|
||||
else panel.css("cursor","zoom-in");
|
||||
panel.toggleClass("hidden");
|
||||
$(this).children(".bsh").toggleClass("hidden");
|
||||
} });
|
||||
</script>
|
||||
%><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a>
|
||||
<% } else { %>
|
||||
<a class="thanks" href="<%=link.Url%>"><%= link.Text %></a>
|
||||
<% }} %>
|
||||
</footer><div class="modal"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
@ -43,7 +43,8 @@ namespace Yavsc
|
||||
where modelState[x].Errors.Count > 0
|
||||
select new
|
||||
{
|
||||
key = x,
|
||||
// FIXME why?
|
||||
key = x.Replace(".","_"),
|
||||
errors = modelState[x].Errors.
|
||||
Select(y => y.ErrorMessage).
|
||||
ToArray()
|
||||
|
@ -16,6 +16,7 @@
|
||||
<%= Html.CheckBox("RememberMe") %>
|
||||
<%= Html.ValidationMessage("RememberMe", "") %><br/>
|
||||
<%= Html.Hidden("returnUrl",ViewData["returnUrl"]) %>
|
||||
<%= Html.AntiForgeryToken() %>
|
||||
<!-- Html.AntiForgeryToken() -->
|
||||
<input type="submit"/>
|
||||
<% } %></div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%@ Page Title="Profile_edition" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<Profile>" %>
|
||||
<%@ Page Title="Profile_edition" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage<ProfileEdition>" %>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="init" ID="init1" runat="server">
|
||||
<% Title = ViewData["UserName"] + " : " +Html.Translate("Profile_edition"); %>
|
||||
@ -18,9 +18,9 @@ table.layout TR TD { max-width:40%; }
|
||||
<fieldset><legend>Informations publiques</legend>
|
||||
|
||||
|
||||
<%= Html.LabelFor(model => model.Name) %> :
|
||||
<%= Html.TextBox("Name") %>
|
||||
<%= Html.ValidationMessage("Name", "*") %>
|
||||
<%= Html.LabelFor(model => model.NewUserName) %> :
|
||||
<%= Html.TextBox("NewUserName") %>
|
||||
<%= Html.ValidationMessage("NewUserName", "*") %>
|
||||
<br>
|
||||
|
||||
<%= Html.LabelFor(model => model.WebSite) %> :
|
||||
@ -34,7 +34,11 @@ Avatar : <img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" a
|
||||
<%= Html.ValidationMessage("AvatarFile", "*") %>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<fieldset><legend>Informations administratives</legend>
|
||||
<%= Html.LabelFor(model => model.Name) %> :
|
||||
<%= Html.TextBox("Name") %>
|
||||
<%= Html.ValidationMessage("Name", "*") %>
|
||||
</fieldset>
|
||||
<fieldset><legend>Blog</legend>
|
||||
<div class="spanel">
|
||||
<%= Html.LabelFor(model => model.BlogVisible) %> :
|
||||
@ -117,7 +121,7 @@ Avatar : <img src="<%=Url.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" a
|
||||
<% } %>
|
||||
<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.ActionLink("Désincription", "Unregister", "Account", new { id = ViewData["UserName"] } , new { @class="actionlink" })%>
|
||||
</aside>
|
||||
<aside>
|
||||
<% if (Roles.IsUserInRole((string)ViewData ["UserName"],"Admin")) { %>
|
||||
|
@ -308,11 +308,7 @@ function addRow(){
|
||||
message(false);
|
||||
},
|
||||
statusCode: {
|
||||
400: function(data) {
|
||||
$.each(data.responseJSON, function (key, value) {
|
||||
document.getElementById("Err_wr_" + value.key).innerHTML=value.errors.join("<br/>");
|
||||
});
|
||||
}
|
||||
400: Yavsc.onAjaxBadInput
|
||||
},
|
||||
error: function (xhr, ajaxOptions, thrownError) {
|
||||
if (xhr.status!=400)
|
||||
|
@ -1,73 +0,0 @@
|
||||
<%@ Page Title="Booking" Language="C#" Inherits="System.Web.Mvc.ViewPage<BookQuery>" MasterPageFile="~/Models/App.master" %>
|
||||
<asp:Content ContentPlaceHolderID="head" ID="headContent" runat="server">
|
||||
<link rel='stylesheet' href='/Scripts/fullcalendar/fullcalendar.css' />
|
||||
<script type="text/javascript" src="/Scripts/jquery.mousewheel.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/App_Themes/jquery.timepicker.css" />
|
||||
<script type="text/javascript" src="/Scripts/globalize/globalize.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/globalize/cultures/globalize.culture.fr.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/datepicker-fr.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/datepicker-en-GB.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/datepair.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/jquery.timepicker.min.js"></script>
|
||||
<script type="text/javascript" src="/Scripts/jquery.datepair.min.js"></script>
|
||||
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
|
||||
<% using ( Html.BeginForm("Book","Google") ) { %>
|
||||
<div id="book" ><fieldset>
|
||||
<legend>Date d'intervention</legend>
|
||||
Intervention souhaitée entre le
|
||||
<input type="text" id="StartDate" class="start date" value="<%= DateTime.Now.ToString("yyyy/MM/dd")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.StartDate) %>
|
||||
et le
|
||||
<input type="text" id="EndDate" class="end date" value="<%= DateTime.Now.AddDays(2).ToString("yyyy/MM/dd")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.EndDate) %>
|
||||
</fieldset>
|
||||
<fieldset >
|
||||
<legend>Heure et durée d'intervention souhaitée</legend>
|
||||
<%= Html.LabelFor(model=>model.StartHour) %>
|
||||
<input type="text" id="StartHour" class="start time" value="<%= DateTime.Now.ToString("H:mm")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.StartHour) %>
|
||||
|
||||
<%= Html.LabelFor(model=>model.EndHour) %>
|
||||
<input type="text" id="EndHour" class="end time" value="<%= DateTime.Now.AddMinutes(30).ToString("H:mm")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.EndHour) %>
|
||||
</fieldset>
|
||||
</div>
|
||||
<fieldset>
|
||||
<legend>Intervenant</legend>
|
||||
<%= Html.LabelFor(model=>model.Role) %>:
|
||||
<%= Html.TextBoxFor(model=>model.Role) %>
|
||||
<%= Html.ValidationMessageFor(model=>model.Role) %>
|
||||
<br>
|
||||
<%= Html.LabelFor(model=>model.Person) %>:
|
||||
<%= Html.TextBoxFor(model=>model.Person) %>
|
||||
<%= Html.ValidationMessageFor(model=>model.Person) %>
|
||||
</fieldset>
|
||||
<script>
|
||||
$(function() {
|
||||
var tpconfig = {
|
||||
'timeFormat': 'H:i',
|
||||
'showDuration': true,
|
||||
'disableTimeRanges': [
|
||||
['17:01pm', '24:01pm'],
|
||||
['0am', '9am']
|
||||
]};
|
||||
// $.datepicker.setDefaults($.datepicker.regional[ "fr" ] );
|
||||
var dpconfig = {
|
||||
'format': 'yy/mm/dd',
|
||||
'autoclose': true } ;
|
||||
|
||||
$('#book .time').timepicker(tpconfig);
|
||||
$('#book .date').datepicker(dpconfig);
|
||||
$('#book').datepair();
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="submit">
|
||||
<% } %>
|
||||
<pre><%= Html.Encode(ViewData["json"]) %></pre>
|
||||
|
||||
</asp:Content>
|
@ -16,19 +16,19 @@
|
||||
<% using ( Html.BeginForm("Book","Google") ) { %>
|
||||
<div id="book" >Date d'intervention :
|
||||
Intervention souhaitée entre le
|
||||
<input type="text" id="StartDate" class="start date" >
|
||||
<input type="text" id="StartDate" name="StartDate" class="start date" value="<%=Model.StartDate.ToString("yyyy/MM/dd")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.StartDate) %>
|
||||
et le
|
||||
<input type="text" id="EndDate" class="end date" >
|
||||
<input type="text" id="EndDate" name="EndDate" class="end date" value="<%=Model.StartDate.ToString("yyyy/MM/dd")%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.EndDate) %>
|
||||
<br>
|
||||
Heure et durée d'intervention souhaitée
|
||||
<%= Html.LabelFor(model=>model.StartHour) %>
|
||||
<input type="text" id="StartHour" class="start time" >
|
||||
<input type="text" id="StartHour" name="StartHour" class="start time" value="<%=Model.StartHour%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.StartHour) %>
|
||||
|
||||
<%= Html.LabelFor(model=>model.EndHour) %>
|
||||
<input type="text" id="EndHour" class="end time" >
|
||||
<input type="text" id="EndHour" name="EndHour" class="end time" value="<%=Model.EndHour%>">
|
||||
<%= Html.ValidationMessageFor(model=>model.EndHour) %>
|
||||
|
||||
</div>
|
||||
|
@ -23,7 +23,7 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<sectionGroup name="system.web">
|
||||
<section name="blog" type="Yavsc.Model.DataProviderConfigurationSection, YavscModel" allowLocation="true" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="thanks" type="Yavsc.ThanksConfigurationSection, Yavsc" allowLocation="true" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="catalog" type="Yavsc.Model.FrontOffice.Configuration.CatalogProvidersConfigurationSection, YavscModel" allowLocation="true" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="catalog" type="Yavsc.Model.FrontOffice.Catalog.Configuration.CatalogProvidersConfigurationSection, YavscModel" allowLocation="true" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="workflow" type="Yavsc.Model.DataProviderConfigurationSection, YavscModel" allowLocation="true" requirePermission="false" allowDefinition="Everywhere" />
|
||||
<section name="circleProviders" type="Yavsc.Model.DataProviderConfigurationSection, YavscModel" />
|
||||
<section name="userNameManager" type="Yavsc.Model.DataProviderConfigurationSection, YavscModel" />
|
||||
@ -121,7 +121,7 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<add name="Phone" />
|
||||
<add name="Mobile" />
|
||||
<add name="Avatar" />
|
||||
<add name="BlogVisible" type="System.Boolean" />
|
||||
<add name="BlogVisible" type="System.Boolean" defaultValue="false" />
|
||||
<add name="BlogTitle" />
|
||||
<add name="WebSite" />
|
||||
<add name="Address" />
|
||||
@ -133,12 +133,12 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<add name="BIC" />
|
||||
<add name="WicketCode" />
|
||||
<add name="AccountNumber" />
|
||||
<add name="BankedKey" />
|
||||
<add name="BankedKey" type="System.Int32" defaultValue="0"/>
|
||||
<add name="gtoken" />
|
||||
<add name="grefreshtoken" />
|
||||
<add name="gtokentype" />
|
||||
<add name="gtokenexpir" />
|
||||
<add name="gcalapi" />
|
||||
<add name="gtokenexpir" type="System.DateTime" defaultValue="2008-05-01 7:34:42Z" />
|
||||
<add name="gcalapi" type="System.Boolean" defaultValue="false" />
|
||||
<add name="gcalid" />
|
||||
<add name="gregid" />
|
||||
<add name="allowcookies" type="System.Boolean" allowAnonymous="true" defaultValue="false"/>
|
||||
@ -167,6 +167,11 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<!-- <machineKey validationKey="13CA2E37A5A99AD8CE4A6B895BAF0ED3A022AA584B8D922256BA072189CEB085EEB4E573CA833D9B34FBF68687F6A6B3E008FB4EB67585A4D90551B9D36D42A1" decryptionKey="DA89CC83F6FB2EB12D5929DABC89299AC3928E0751705D33D02DB4162ED56536" validation="SHA1" decryption="AES" /> -->
|
||||
<!--- <sessionState cookieless="true" regenerateExpiredSessionId="true" timeout="120"/> -->
|
||||
<trust level="High" />
|
||||
<catalog defaultProvider="XmlCatalogProvider">
|
||||
<providers>
|
||||
<add name="XmlCatalogProvider" connection="~/Catalog.xml" applicationName="/" type="SalesCatalog.XmlImplementation.XmlCatalogProvider, SalesCatalog" />
|
||||
</providers>
|
||||
</catalog>
|
||||
</system.web>
|
||||
<system.codedom>
|
||||
<compilers>
|
||||
@ -193,11 +198,6 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql" />
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
<catalog defaultProvider="XmlCatalogProvider">
|
||||
<providers>
|
||||
<add name="XmlCatalogProvider" connection="~/Catalog.xml" applicationName="/" type="SalesCatalog.XmlImplementation.XmlCatalogProvider, SalesCatalog" />
|
||||
</providers>
|
||||
</catalog>
|
||||
<system.net>
|
||||
<!-- not supported: <defaultProxy enabled="true" /> -->
|
||||
<settings>
|
||||
|
@ -206,6 +206,7 @@
|
||||
<Compile Include="ApiControllers\PaypalController.cs" />
|
||||
<Compile Include="ApiControllers\AuthorizationDenied.cs" />
|
||||
<Compile Include="ApiControllers\YavscController.cs" />
|
||||
<Compile Include="Helpers\YavscAjaxHelper.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Views\Web.config" />
|
||||
@ -467,7 +468,6 @@
|
||||
<Content Include="Scripts\jquery.datepair.js" />
|
||||
<Content Include="Scripts\jquery.datepair.min.js" />
|
||||
<Content Include="Scripts\jquery-1.11.3.min.js" />
|
||||
<Content Include="Views\Google\Book-next.aspx" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
|
Reference in New Issue
Block a user