Totem Prod customisation

* Web.config:
* YavscHelpers.cs:
* GoogleController.cs:
* Profile.cs: refactoring

* OAuth2.cs: refactoring

* AccountController.cs: * refactoring profile properties
* fixes profile edition auth

* instdbws.sql: remove some ownership attribution

* Web.csproj: totem prod custo

* App.master: Totem prod custo
nice and simple parralax effect,
quiet working on my android browser ...

* Profile.aspx: a smaller avatar

* style.css: Totem prod custo
vnext
Paul Schneider 9 years ago
parent 82de63a0ba
commit e8ccc67bb1
13 changed files with 170 additions and 99 deletions

@ -17,10 +17,12 @@ input, textarea, checkbox {
header {
border-radius:10px;
margin: .5em;
padding: .5em;
padding: 3em;
padding-top: 5em;
display: block;
background: url("/images/helix-nebula-1400x1400.s.jpg") 50% 0 repeat fixed;
min-height: 25em;
background: url("/images/totemprod.png") 50% 0 no-repeat fixed;
min-height: 10em;
text-align: center;
}
nav {
@ -28,8 +30,8 @@ nav {
margin: .5em;
padding: .5em;
display: block;
background: url("/images/live-concert-388160_1280.s.jpg") 50% 0 repeat fixed ;
min-height: 25em;
background: url("/images/live-concert-388160_1280.s.jpg") 50% 10em repeat fixed ;
min-height: 10em;
}
main {
@ -37,22 +39,26 @@ main {
margin: .5em;
padding: .5em;
display: block;
background: url("/images/musician-923526_1280.s.jpg") 50% 0 repeat fixed ;
min-height: 25em;
background: url("/images/musician-923526_1280.s.jpg") 50% 20em repeat fixed ;
min-height: 10em;
}
footer {
border-radius:10px;
margin: .5em;
padding: .5em;
margin: 1em;
padding: 1em;
display: block;
background: url("/images/drummer-652345_1280.s.jpg") 50% 0 repeat fixed ;
min-height: 25em;
background: url("/images/drummer-652345_1280.s.jpg") 50% 30em repeat fixed ;
min-height: 10em;
clear: both;
display: flex;
font-size: smaller;
justify-content: center;
}
#copyr { text-align: center; }
footer p { background-color: rgba(20,20,20,.5); }
fieldset {
background-color: rgba(32,16,16,0.8);
border-radius:5px; border: solid 1px #000060;
@ -248,7 +254,6 @@ a.actionlink img { top:4px; }
.c2 { font-size: small; font-style: italic; }
.c3 { font-size: x-small; font-style: italic; }
@media print {
body {background-color:white;color:black;}
header,footer,.postcomment,.actionlink,nav

@ -1,3 +1,27 @@
2015-10-01 Paul Schneider <paul@pschneider.fr>
* Web.config:
* YavscHelpers.cs:
* GoogleController.cs: refactoring
* OAuth2.cs: refactoring
* AccountController.cs: * refactoring profile properties
* fixes profile edition auth
* instdbws.sql: remove some ownership attribution
* Web.csproj: totem prod custo
* App.master: Totem prod custo
nice and simple parralax effect,
quiet working on my android browser ...
* Profile.aspx: a smaller avatar
* style.css: Totem prod custo
2015-10-01 Paul Schneider <paul@pschneider.fr>
* UserPost.aspx: Fixes the anonymous access !

@ -38,7 +38,7 @@ namespace Yavsc.Controllers
public ActionResult Avatar (string user)
{
ProfileBase pr = ProfileBase.Create (user);
string avpath = (string ) pr.GetPropertyValue("avatar") ;
string avpath = (string ) pr.GetPropertyValue("Avatar") ;
if (avpath == null) {
FileInfo fia = new FileInfo (Server.MapPath (defaultAvatar));
return File (fia.OpenRead (), defaultAvatarMimetype);
@ -291,7 +291,7 @@ namespace Yavsc.Controllers
string logdu = Membership.GetUser ().UserName;
ViewData ["UserName"] = id;
bool editsMyName = (string.Compare(id,model.Name)==0);
bool editsMyName = (string.Compare(id,logdu)==0);
if (!editsMyName)
if (!Roles.IsUserInRole ("Admin"))
if (!Roles.IsUserInRole ("FrontOffice"))
@ -321,9 +321,9 @@ namespace Yavsc.Controllers
prf.SetPropertyValue ("BlogVisible", model.BlogVisible);
prf.SetPropertyValue ("BlogTitle", model.BlogTitle);
if (AvatarFile != null) {
prf.SetPropertyValue ("avatar", model.avatar);
prf.SetPropertyValue ("Avatar", model.avatar);
} else {
model.avatar = (string) prf.GetPropertyValue ("avatar");
model.avatar = (string) prf.GetPropertyValue ("Avatar");
}
prf.SetPropertyValue ("Address", model.Address);
prf.SetPropertyValue ("CityAndState", model.CityAndState);
@ -346,7 +346,7 @@ namespace Yavsc.Controllers
UserManager.ChangeName (id, model.Name);
FormsAuthentication.SetAuthCookie (model.Name, model.RememberMe);
}
ViewData ["Message"] = "Profile enregistré"+((editsMyName)?", nom public inclus.":"");
ViewData ["Message"] = "Profile enregistré"+((editsMyName)?", nom public inclu.":"");
}
return View (model);
}

@ -118,7 +118,7 @@ namespace Yavsc.Controllers
/// </summary>
/// <param name="gat">Gat.</param>
private void SaveToken (AuthToken gat)
{
{
HttpContext.Profile.SetPropertyValue ("gtoken", gat.access_token);
if (gat.refresh_token != null)
HttpContext.Profile.SetPropertyValue ("grefreshtoken", gat.refresh_token);
@ -212,7 +212,7 @@ namespace Yavsc.Controllers
HttpContext.Profile.SetPropertyValue ("Name", me.displayName);
// TODO use image
if (me.image != null) {
HttpContext.Profile.SetPropertyValue ("avatar", me.image.url);
HttpContext.Profile.SetPropertyValue ("Avatar", me.image.url);
}
if (me.placesLived != null) {
People.Place pplace = me.placesLived.Where (x => x.primary).First ();

@ -243,7 +243,7 @@ namespace Yavsc.Helpers.Google
}
pr.SetPropertyValue ("gtoken", token);
pr.Save ();
// ASSERT gat.token_type == pr.GetPropertyValue("token_type")
// ASSERT gat.token_type == pr.GetPropertyValue("gtokentype")
}
return token_type + " " + token;
}

@ -163,10 +163,15 @@ namespace Yavsc.Helpers
foreach (MembershipUser u in users)
YavscHelpers.SendActivationMessage (u);
}
/// <summary>
/// Avatars the URL.
/// </summary>
/// <returns>The URL.</returns>
/// <param name="helper">Helper.</param>
/// <param name="username">Username.</param>
public static string AvatarUrl (this HtmlHelper helper, string username) {
ProfileBase pr = ProfileBase.Create (username);
string avpath = (string ) pr.GetPropertyValue("avatar") ;
var avpath = pr.GetPropertyValue("Avatar") ;
if (avpath != null)
return helper.Encode (avpath);
return "/avatars/" + helper.Encode(username)+".png";

@ -17,14 +17,55 @@
<script src="<%=Url.Content("~/Scripts/jquery-ui-1.11.4.js")%>"></script>
<script type="text/javascript">
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
$(document).ready(function(){
var $window = $(window);
$('[data-type="background"]').each(function(){
var $bgobj = $(this); // assigning the object
// get the initial background position, assumes a "X% Yem" ?
var orgpos = $bgobj.css('backgroundPosition');
var bgpos = orgpos.split(" ");
var bgposx = bgpos[0];
var bgposy = bgpos[1];
if (/%$/.test(bgposx)){
bgposx = bgposx.substr(0,bgposx.length-1);
$bgobj.attr('orgbgpxu','% ');
}
else if (/em$/.test(bgposx)){
bgposx = bgposx.substr(0,bgposx.length-2);
$bgobj.attr('orgbgpxu','em ');
}
else if (/px$/.test(bgposx)){
bgposx = bgposx.substr(0,bgposx.length-2);
$bgobj.attr('orgbgpxu','px ');
}
else { $bgobj.attr('orgbgpxu','px '); }
if (/%$/.test(bgposy)){
bgposy = bgposy.substr(0,bgposy.length-1);
$bgobj.attr('orgbgpyu','% ');
}
else if (/em$/.test(bgposy)){
bgposy = bgposy.substr(0,bgposy.length-2);
$bgobj.attr('orgbgpyu','em ');
}
else if (/px$/.test(bgposy)){
bgposy = bgposy.substr(0,bgposy.length-2);
$bgobj.attr('orgbgpyu','px ');
}
else { $bgobj.attr('orgbgpyu','px '); }
$bgobj.attr('orgbgpx',parseInt(bgposx));
$bgobj.attr('orgbgpy',parseInt(bgposy));
$(window).scroll(function() {
var yPos = -($window.scrollTop() / $bgobj.data('speed'));
var xPos = $bgobj.attr('orgbgpx') - ($window.scrollLeft() / $bgobj.data('speed'));
var yPos = $bgobj.attr('orgbgpy') - ($window.scrollTop() / $bgobj.data('speed'));
// Put together our final background position
var coords = '50% '+ yPos + 'px';
var coords = '' + xPos + $bgobj.attr('orgbgpxu') + yPos + $bgobj.attr('orgbgpyu');
// Move the background
$bgobj.css({ backgroundPosition: coords });
});
@ -37,7 +78,7 @@ $(document).ready(function(){
<link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/>
</head>
<body>
<header data-type="background" data-speed="10">
<header data-type="background" data-speed="10" >
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
@ -55,32 +96,32 @@ $(document).ready(function(){
</header>
<nav data-type="background" data-speed="10">
<nav data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="11" >
<% if (Membership.GetUser()==null) { %>
<div class="menuitem">
<%= Html.ActionLink("Authentification", "Login", "Account", new { returnUrl=Request.Url.PathAndQuery },null) %>
<%= Html.ActionLink("Authentification", "Login", "Account", new { returnUrl=Request.Url.PathAndQuery }, new { accesskey = "L" } ) %>
<div class="hint">Pour pouvoir publier, facturer</div>
</div>
<% } else { %><div class="menuitem">
<a href="/Blog/<%= HttpContext.Current.User.Identity.Name%>">
<a href="/Blog/<%= HttpContext.Current.User.Identity.Name%>" accesskey = "B" >
<img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="vos billets" class="iconsmall" /></a>
<div class="hint">Vos billets</div>
</div>
<div class="menuitem">
<%= Html.ActionLink(HttpContext.Current.User.Identity.Name, "Profile", "Account", new { id = HttpContext.Current.User.Identity.Name }, null) %>
<%= Html.ActionLink(HttpContext.Current.User.Identity.Name, "Profile", "Account", new { id = HttpContext.Current.User.Identity.Name }, new { accesskey = "P" } ) %>
<div class="hint"> &Eacute;dition de votre profile </div></div>
<div class="menuitem">
<a href="/Blogs/Post" >Poster</a>
<a href="/Blogs/Post" accesskey="P"><u>P</u>oster</a>
<div class="hint">
&Eacute;dition d'un nouveau billet </div></div>
<div class="menuitem">
<%= Html.ActionLink( "Deconnexion", "Logout", "Account", new { returnUrl=Request.Url.PathAndQuery }, null) %>
<%= Html.ActionLink( "Deconnexion", "Logout", "Account", new { returnUrl=Request.Url.PathAndQuery }, new { accesskey = "L" }) %>
<% } %>
</div>
</nav>
<main data-type="background" data-speed="10">
<main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" >
<div>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
@ -89,22 +130,25 @@ $(document).ready(function(){
<asp:ContentPlaceHolder ID="MASContent" runat="server">
</asp:ContentPlaceHolder>
<footer data-type="background" data-speed="10">
<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>
<footer data-type="background" data-speed="10" >
<p id="copyr">
© 2012 Totem Production. Tous droits réservés.
</p>
<p>
<a href="https://fr-fr.facebook.com/Brahms.Totem.officiel" ><img src="/images/facebook.png" alt="facebook"/></a>
<a href="http://twitter.com/TotemOfficiel"><img src="/images/twiter.png" alt="twiter"/></a>
</p>
<% #if !DEBUG %>
<script src="https://apis.google.com/js/platform.js" defer>
{lang: 'fr'}
</script>
<div class="g-plusone" data-annotation="inline" data-width="230"></div>
<% #else %>
<p><i>(Version de développement, G+1 desactivé)</i></p>
<% #endif %>
</footer>
</body>
</html>

@ -28,7 +28,8 @@ table.layout TR TD { max-width:40%; }
<%= Html.ValidationMessage("WebSite", "*") %>
<br>
Avatar : <img class="avatar" src="<%=Model.avatar%>?version=<%=Html.Encode(DateTime.Now.ToString())%>" alt=""/>
Avatar : <img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="avatar" class="iconsmall" />
<input type="file" id="AvatarFile" name="AvatarFile"/>
<%= Html.ValidationMessage("AvatarFile", "*") %>

@ -120,36 +120,31 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
<add name="Name" />
<add name="Phone" />
<add name="Mobile" />
<add name="avatar" />
<add name="Avatar" />
<add name="BlogVisible" type="System.Boolean" />
<add name="BlogTitle" />
<add name="WebSite" />
<group name="address">
<add name="address" />
<add name="cityandstate" />
<add name="zipcode" />
<add name="country" />
</group>
<add name="Address" />
<add name="CityAndState" />
<add name="ZipCode" />
<add name="Country" />
<group name="bank">
<add name="Code" />
<add name="IBAN" />
<add name="BIC" />
<add name="WicketCode" />
<add name="AccountNumber" />
<add name="Key" />
</group>
<add name="BankCode" />
<add name="IBAN" />
<add name="BIC" />
<add name="WicketCode" />
<add name="AccountNumber" />
<add name="BankedKey" />
<add name="gtoken" />
<add name="grefreshtoken" />
<add name="gtokentype" />
<add name="gtokenexpir" />
<add name="gcalapi" />
<add name="gcalid" />
<add name="gregid" />
<group name="google">
<add name="token" />
<add name="refreshtoken" />
<add name="tokentype" />
<add name="tokenexpir" />
<add name="calapi" />
<add name="calid" />
<add name="regid" />
</group>
</properties>
</profile>
<blog defaultProvider="NpgsqlBlogProvider">
@ -260,15 +255,15 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
</root>
</log4net>
<connectionStrings>
<add name="yavsc" connectionString="Server=127.0.0.1;Port=5432;Database=YavscDev;User Id=yavscdev;Password=admin;" providerName="Npgsql" />
<add name="yavsc" connectionString="Server=127.0.0.1;Port=5432;Database=totem;User Id=totemweb;Password=cZeoft2k5_d4;" providerName="Npgsql" />
</connectionStrings>
<appSettings>
<add key="MonoServerDefaultIndexFiles" value="index.html,Index.aspx" />
<add key="WorkflowContentProviderClass" value="yavsc.NpgsqlContentProvider" />
<add key="SmtpServer" value="smtp.free.fr" />
<add key="AdminEMail" value="paulschneider@free.fr" />
<add key="OwnerEMail" value="paulschneider@free.fr" />
<add key="Name" value="Psc" />
<add key="OwnerEMail" value="" />
<add key="Name" value="Totem production" />
<add key="DefaultController" value="Blogs" />
<add key="DefaultAvatar" value="/images/noavatar.png;image/png" />
<add key="RegistrationMessage" value="/RegistrationMail.txt" />

@ -377,7 +377,6 @@
<Content Include="Scripts\rangy-selectionsaverestore.js" />
<Content Include="Scripts\jquery.htmlClean.min.js" />
<Content Include="Views\Blogs\ChooseMedia.aspx" />
<Content Include="Scripts\parallax.js" />
<Content Include="images\helix-nebula-1400x1400.jpg" />
<Content Include="images\an-pierle-876094_1280.jpg" />
<Content Include="images\drummer-652345_1280.jpg" />
@ -387,6 +386,10 @@
<Content Include="images\helix-nebula-1400x1400.s.jpg" />
<Content Include="images\live-concert-388160_1280.s.jpg" />
<Content Include="images\musician-923526_1280.s.jpg" />
<Content Include="images\facebook.png" />
<Content Include="images\twiter.png" />
<Content Include="images\concert.clear.jpg" />
<Content Include="images\totemprod.png" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

@ -129,12 +129,9 @@ CREATE TABLE profiledata
WITH (
OIDS=FALSE
);
ALTER TABLE profiledata
OWNER TO yavscdev;
COMMENT ON COLUMN profiledata."address.address" IS 'Postal address';
COMMENT ON COLUMN profiledata.blogtitle IS 'Blog Title';
COMMENT ON COLUMN profiledata.avatar IS 'url for an avatar';
COMMENT ON COLUMN profiledata.hasavatar IS 'True when user has specified an image for avatar';
COMMENT ON COLUMN profiledata."bank.accountnumber" IS 'Numero de compte';
COMMENT ON COLUMN profiledata."bank.key" IS 'clé RIB';
COMMENT ON COLUMN profiledata."bank.code" IS 'Code banque';
@ -183,23 +180,20 @@ WITH (
OIDS=FALSE
);
-- Table: blfiles
CREATE TABLE blfiles
(
_id bigserial NOT NULL, -- Identifier
name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash.
blid bigint, -- Blog entry identifier (foreign key)
CONSTRAINT blfiles_pkey PRIMARY KEY (_id),
CONSTRAINT blfiles_blid_fkey FOREIGN KEY (blid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
alt_text character varying(512),
CONSTRAINT bltags_pkey PRIMARY KEY (_id)
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN blfiles._id IS 'Identifier';
COMMENT ON COLUMN blfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.';
COMMENT ON COLUMN blfiles.blid IS 'Blog entry identifier (foreign key)';
-- Table: commandes
@ -259,7 +253,7 @@ CREATE TABLE comment
CONSTRAINT comment_pkey PRIMARY KEY (_id),
CONSTRAINT fkey_blog FOREIGN KEY (postid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE ,
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fkey_users FOREIGN KEY (username, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
@ -670,8 +664,7 @@ CREATE TABLE circle
WITH (
OIDS=FALSE
);
ALTER TABLE circle
OWNER TO yavscdev;
COMMENT ON COLUMN circle._id IS 'Circle identifier';
COMMENT ON COLUMN circle.owner IS 'creator of this circle';
COMMENT ON COLUMN circle.applicationname IS 'Application name';

@ -1,3 +1,7 @@
2015-10-01 Paul Schneider <paul@pschneider.fr>
* Profile.cs: refactoring
2015-09-30 Paul Schneider <paul@pschneider.fr>
* Profile.cs: Groups profile properties

@ -243,21 +243,20 @@ namespace Yavsc.Model.RolesAndMembers
object s = profile.GetPropertyValue ("BlogTitle");
BlogTitle = (s is DBNull) ? null : (string)s;
s = profile.GetPropertyValue ("avatar");
s = profile.GetPropertyValue ("Avatar");
avatar = (s is DBNull) ? null : (string)s;
var address = profile.GetProfileGroup ("address");
s = address.GetPropertyValue ("address");
s = profile.GetPropertyValue ("Address");
Address = (s is DBNull) ? null : (string)s;
s = address.GetPropertyValue ("cityandstate");
s = profile.GetPropertyValue ("CityAndState");
CityAndState = (s is DBNull) ? null : (string)s;
s = address.GetPropertyValue ("country");
s = profile.GetPropertyValue ("Country");
Country = (s is DBNull) ? null : (string)s;
s = address.GetPropertyValue ("zipcode");
s = profile.GetPropertyValue ("ZipCode");
ZipCode = (s is DBNull) ? null : (string)s;
s = profile.GetPropertyValue ("WebSite");
@ -274,28 +273,26 @@ namespace Yavsc.Model.RolesAndMembers
userName = profile.UserName;
var bank = profile.GetProfileGroup ("bank");
s = bank.GetPropertyValue ("Code");
s = profile.GetPropertyValue ("BankCode");
BankCode = (s is DBNull) ? null : (string)s;
s = bank.GetPropertyValue ("IBAN");
s = profile.GetPropertyValue ("IBAN");
IBAN = (s is DBNull) ? null : (string)s;
s = bank.GetPropertyValue ("BIC");
s = profile.GetPropertyValue ("BIC");
BIC = (s is DBNull) ? null : (string)s;
s = bank.GetPropertyValue ("WicketCode");
s = profile.GetPropertyValue ("WicketCode");
WicketCode = (s is DBNull) ? null : (string)s;
s = bank.GetPropertyValue ("AccountNumber");
s = profile.GetPropertyValue ("AccountNumber");
this.AccountNumber = (s is DBNull) ? null : (string)s;
s = bank.GetPropertyValue ("Key");
s = profile.GetPropertyValue ("BankedKey");
BankedKey = (s == null) ? 0 : (s is DBNull)? 0 : (int)s;
var google = profile.GetProfileGroup ("google");
s = google.GetPropertyValue ("calid");
s = profile.GetPropertyValue ("gcalid");
GoogleCalendar = (s is DBNull)? null : (string) s;
}
}

Loading…