Custo totem ++

* parralax.js: refactoring

* drummer-652345_1280.xxs.jpg:
* musician-923526_1280.xxs.jpg:
* live-concert-388160_1280.xxs.jpg: totem style

* Makefile: cleaner code

* style.css: -> Totem

* BlogsController.cs: Fixes edition validation

* App.master: externalize the parralax javascript code, finishes the
  merge from yavsc

* UserPosts.aspx: Affiche "pas de contenu" quand aucun post n'est à
  afficher

* Web.csproj: Totem images

* instdbws.sql: Header images
vnext
Paul Schneider 9 years ago
parent 8042031871
commit 40a49f5284
14 changed files with 177 additions and 168 deletions

@ -1,3 +1,7 @@
2015-10-04 Paul Schneider <paul@pschneider.fr>
* Makefile: cleaner code
2015-08-20 Paul Schneider <paul@pschneider.fr>
* Yavsc.sln: Adds the `Presta` project

@ -3,25 +3,17 @@ VERSION=1.1
CONFIG=Debug
LDYDESTDIR=build/web/$(CONFIG)
COPYUNCHANGED="false"
HOST_rsync_local=localhost
DESTDIR_rsync_local=/srv/www/yavsc
HOST_rsync_test=localhost
DESTDIR_rsync_test=/srv/www/lua
HOST_rsync_pre=lua.localdomain
DESTDIR_rsync_pre=/srv/www/yavsc
HOST_rsync_prod=lua.localdomain
DESTDIR_rsync_prod=/srv/www/lua
DOCASSBS=NpgsqlBlogProvider.dll WorkFlowProvider.dll Yavsc.WebControls.dll ITContentProvider.dll NpgsqlMRPProviders.dll Yavsc.dll SalesCatalog.dll YavscModel.dll
RSYNCCMD=rsync -ravu --chown=www-data:www-data
HOST_rsync_dev=totemdev.localdomain
DESTDIR_rsync_dev=/srv/www/totemdev
HOST_rsync_pre=totempre.localdomain
DESTDIR_rsync_pre=/srv/www/totempre
HOST_rsync_prod=totemprod.pschneider.fr
DESTDIR_rsync_prod=/srv/www/totemprod
DOCASSBS=NpgsqlBlogProvider.dll WorkFlowProvider.dll Yavsc.WebControls.dll ITContentProvider.dll NpgsqlMRPProviders.dll Yavsc.dll SalesCatalog.dll YavscModel.dll
all: deploy
ddir:
mkdir -p $(LDYDESTDIR)
@ -30,15 +22,13 @@ deploy: ddir build
xbuild /p:Configuration=$(CONFIG) /p:SkipCopyUnchangedFiles=$(COPYUNCHANGED) /p:DeployDir=../$(LDYDESTDIR) /t:Deploy web/Web.csproj
mv $(LDYDESTDIR)/Web.config $(LDYDESTDIR)/Web.config.new
rsync_% : HOST = $(HOST_$@)
rsync_% : DESTDIR = $(DESTDIR_$@)
rsync_% : deploy
echo "!Deploying to $(HOST)!"
$(RSYNCCMD) build/web/$(CONFIG)/ root@$(HOST):$(DESTDIR)
ssh root@$(HOST) apachectl restart
build:
xbuild /p:Configuration=$(CONFIG) /t:Build Yavsc.sln
@ -46,6 +36,8 @@ build:
clean:
xbuild /t:Clean
find -name "StyleCop.Cache" -exec rm {} \;
distclean: clean
rm -rf $(LDYDESTDIR)
sourcepkg:
@ -63,14 +55,9 @@ htmldoc: xmldoc
docdeploy-prod: htmldoc
rsync -ravu web/htmldoc root@$(PRODHOSTDIR)
rsync_local:
rsync_test:
rsync_dev:
rsync_pre:
rsync_prod:
bigrsync: rsync_test rsync_local rsync_pre rsync_prod

@ -5,13 +5,14 @@ body {
color: #D0FFD0;
font-family: 'Arial', cursive;
padding: 0em;
margin: 0;
}
.iconsmall { max-height: 1.3em; max-width: 1.3em; }
input, textarea, checkbox {
color: #FFFFA0;
background: black;
background-color: black;
}
header {
@ -22,8 +23,11 @@ header {
display: block;
min-height: 10em;
text-align: center;
background: url("/images/star-939235_1280.jpg") 0 0 no-repeat fixed;
background: url("/images/totemprod.png") 0 0 no-repeat fixed;
}
header h1, header a {
background-color: rgba(0,0,0,.5);
}
nav {
border-radius:1em;
@ -55,14 +59,13 @@ footer {
justify-content: center;
}
footer a {
background-color: rgba(0,0,40,.8);
border-radius:5px;
margin:.5em;
padding:1em;
}
#copyr { text-align: center; }
footer p { background-color: rgba(20,20,20,.5); }
#copyr { text-align: center; display: block; background-color: rgba(20,20,20,.5); }
footer p { display:inline-block; }
footer img { max-height: 2em; vertical-align: middle; }
a.actionlink img, h1 img, .menuitem img { vertical-align: middle; }
@ -108,7 +111,7 @@ aside {
color: #aaa;
border-radius:10px;
}
.hiddenpost { background-color: rgba(16,16,0,0.3); }
.hiddenpost { background-color: rgba(16,16,16,0.7); }
.fullwidth { width: 100%; }
textarea.fullwidth { min-height:10em; }
@ -144,8 +147,6 @@ content: ")";
a {
text-decoration: none;
color: #B0B080;
background-color:rgba(20,0,20,0.5);
text-decoration: none;
}
.usertitleref {
color: #B0B080;
@ -281,25 +282,25 @@ input, select {
margin: .5em;
padding: .5em;
min-height: 3em;
background: url("/images/star-939235_1280.xxs.jpg") 0 0 no-repeat fixed;
padding-top: 5em;
}
nav {
margin: .5em;
padding: .5em;
min-height: 3em;
background: url("/images/helix-nebula-1400x1400.xxs.jpg") 50% 10% repeat fixed ;
background: url("/images/live-concert-388160_1280.xxs.jpg") 50% 10% repeat fixed ;
}
main {
margin: .5em;
padding: .5em;
min-height: 7em;
background: url("/images/p8-av4.xxs.jpg") 50% 20em no-repeat fixed ;
background: url("/images/musician-923526_1280.xxs.jpg") 50% 20em repeat fixed ;
}
footer {
margin: .5em;
padding: .5em;
min-height: 3em;
background: url("/images/helix-nebula-1400x1400.xxs.jpg") 50% 90% repeat fixed ;
background: url("/images/drummer-652345_1280.xxs.jpg") 50% 90% repeat fixed ;
}
.menuitem {
display: block;

@ -1,3 +1,25 @@
2015-10-04 Paul Schneider <paul@pschneider.fr>
* parralax.js: refactoring
* drummer-652345_1280.xxs.jpg:
* musician-923526_1280.xxs.jpg:
* live-concert-388160_1280.xxs.jpg: totem style
* style.css: -> Totem
* BlogsController.cs: Fixes edition validation
* App.master: externalize the parralax javascript code,
finishes the merge from yavsc
* UserPosts.aspx: Affiche "pas de contenu" quand aucun post
n'est à afficher
* Web.csproj: Totem images
* instdbws.sql: Header images
2015-10-02 Paul Schneider <paul@pschneider.fr>
* style.css: yauniformisation small & large screens.

@ -276,6 +276,13 @@ namespace Yavsc.Controllers
model.Id = BlogManager.Post (model.Author, model.Title, model.Content, model.Visible, model.AllowedCircles);
return RedirectToAction ("UserPosts", new { user = model.Author, title = model.Title });
}
ViewData ["AllowedCircles"] =
CircleManager.DefaultProvider.List (
Membership.GetUser ().UserName).Select (x => new SelectListItem {
Value = x.Id.ToString(),
Text = x.Title,
Selected = model.AllowedCircles.Contains (x.Id)
});
return View ("Edit", model);
}

@ -15,64 +15,9 @@
<link rel="icon" type="image/png" href="/favicon.png?v=3" />
<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/parralax.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 speed = $bgobj.data('speed');
var xPos = $bgobj.attr('orgbgpx') - Math.round($window.scrollLeft() / speed);
var yPos = $bgobj.attr('orgbgpy') - Math.round($window.scrollTop() / speed);
// Put together our final background position
var coords = '' + xPos + $bgobj.attr('orgbgpxu') + yPos + $bgobj.attr('orgbgpyu');
// Move the background
$bgobj.css({ backgroundPosition: coords });
// console.log($bgobj.get()[0].localName+' backgroundPosition: '+coords);
});
});
});
</script>
<script src="/Scripts/yavsc.js"></script>
<asp:ContentPlaceHolder id="head" runat="server">
@ -80,79 +25,43 @@ $(document).ready(function(){
<link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/>
</head>
<body>
<<<<<<< HEAD
<header data-type="background" data-speed="10" >
=======
<header data-type="background" data-speed="8" >
>>>>>>> bdae927f67893f93bc3681bb9c7fa08d0ca04a93
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
<h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>"> <%=ViewState["orgtitle"]%> </a>
<h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>">
<%=ViewState["orgtitle"]%></a>
<span> -
<a href="<%= Url.Content("~/") %>"><%= YavscHelpers.SiteName %></a>
</span></h1>
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
<div id="error"><%= (ViewData["Error"]!=null)? Html.Encode(ViewData["Error"]) : "" %></div>
<div id="message"><%= Html.Encode(ViewData["Message"]) %></div>
</header>
<<<<<<< HEAD
<nav data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="11" >
=======
<nav data-type="background" data-speed="2">
>>>>>>> bdae927f67893f93bc3681bb9c7fa08d0ca04a93
<% if (Membership.GetUser()==null) { %>
<a href="<%= Url.Content("~/Account/Login/?returnUrl=") + Url.Encode( Request.Url.PathAndQuery )%>" >
<div class="menuitem">
<<<<<<< HEAD
<%= 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%>" accesskey = "B" >
<img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="vos billets" class="iconsmall" /></a>
<div class="hint">Vos billets</div>
=======
<i class="fa fa-sign-in"></i> Connexion
<div class="hint">Pour pouvoir publier, facturer</div>
>>>>>>> bdae927f67893f93bc3681bb9c7fa08d0ca04a93
</div>
</a>
<% } else { %>
<a href="/Blog/<%= HttpContext.Current.User.Identity.Name%>" accesskey = "B" >
<div class="menuitem">
<<<<<<< HEAD
<%= 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" 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 }, new { accesskey = "L" }) %>
=======
<img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="vos billets" class="iconsmall" />
<div class="hint">Vos billets</div>
</div>
</a>
<a href="<%= Url.Content("~/Account/Profile/" + HttpContext.Current.User.Identity.Name) %>" accesskey="L" class="menuitem">
<i class="fa fa-user"></i> <%= HttpContext.Current.User.Identity.Name %>
<div class="hint"> &Eacute;dition de votre profile </div></a>
<i class="fa fa-user"><%= HttpContext.Current.User.Identity.Name %>
<div class="hint"> &Eacute;dition de votre profile </div></i>
</a>
<a href="/Blogs/Post" accesskey="P" class="menuitem">
<i class="fa fa-pencil"></i>
<u>P</u>oster
<div class="hint">&Eacute;dition d'un nouveau billet </div></a>
<i class="fa fa-pencil"><u>P</u>oster
<span class="hint">&Eacute;dition d'un nouveau billet </span></i>
</a>
<a href="<%= Url.Content( "~/Account/Logout/?returnUrl=")+Url.Encode(Request.Url.PathAndQuery)%>" accesskey = "P" class="menuitem">
<i class="fa fa-sign-out"></i>Deconnexion</a>
>>>>>>> bdae927f67893f93bc3681bb9c7fa08d0ca04a93
<i class="fa fa-sign-out">Deconnexion</i></a>
<% } %>
</nav>
<main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" >
@ -163,43 +72,22 @@ $(document).ready(function(){
</main>
<asp:ContentPlaceHolder ID="MASContent" runat="server">
</asp:ContentPlaceHolder>
<<<<<<< HEAD
<footer data-type="background" data-speed="10" >
<p id="copyr">
<footer data-type="background" data-speed="2" >
<div id="copyr">
© 2012 Totem Production. Tous droits réservés.
</div>
<p>
<%= Html.ActionLink("Formulaire de contact","Contact","Home") %>
</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 data-type="background" data-speed="2">
<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 id="gspacer"><div class="g-plusone" data-annotation="inline" data-width="170"></div>
</div>
<script src="https://apis.google.com/js/platform.js" defer>
{lang: 'fr'}
</script>
<div id="gspacer"><div class="g-plusone" data-annotation="inline" data-width="170"></div></div>
>>>>>>> bdae927f67893f93bc3681bb9c7fa08d0ca04a93
</footer>
</footer>
</body>
</html>

@ -0,0 +1,74 @@
//
// parralax.js
//
// Author:
// Paul Schneider <paul@pschneider.fr>
//
// Copyright (c) 2015 GNU GPL
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
$(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 speed = $bgobj.data('speed');
var xPos = $bgobj.attr('orgbgpx') - Math.round($window.scrollLeft() / speed);
var yPos = $bgobj.attr('orgbgpy') - Math.round($window.scrollTop() / speed);
// Put together our final background position
var coords = '' + xPos + $bgobj.attr('orgbgpxu') + yPos + $bgobj.attr('orgbgpyu');
// Move the background
$bgobj.css({ backgroundPosition: coords });
// console.log($bgobj.get()[0].localName+' backgroundPosition: '+coords);
});
});
});

@ -45,7 +45,9 @@
%>
<aside>
<yavsc:ResultPages id="rp1" Action = "?pageIndex={0}" runat="server"></yavsc:ResultPages>
<yavsc:ResultPages id="rp1" Action = "?pageIndex={0}" runat="server">
<None><i>Pas de contenu</i></None>
</yavsc:ResultPages>
</aside>
<asp:HiddenField id="user" runat="server"></asp:HiddenField>
</form>

@ -415,6 +415,10 @@
<Content Include="images\star-939235_1280.xxs.jpg" />
<Content Include="images\p8-av4.xxs.png" />
<Content Include="images\p8-av4.xxs.jpg" />
<Content Include="images\musician-923526_1280.xxs.jpg" />
<Content Include="images\drummer-652345_1280.xxs.jpg" />
<Content Include="images\live-concert-388160_1280.xxs.jpg" />
<Content Include="Scripts\parralax.js" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

@ -728,3 +728,23 @@ WITH (
OIDS=FALSE
);
-- Table: postheader
-- DROP TABLE postheader;
CREATE TABLE postheader
(
postid bigserial NOT NULL, -- Blog post identifier, to which will be associated this head image
url character varying(512), -- Url for this header image,...
CONSTRAINT postheader_pkey PRIMARY KEY (postid),
CONSTRAINT postheader_postid_fkey FOREIGN KEY (postid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN postheader.postid IS 'Blog post identifier, to which will be associated this head image';
COMMENT ON COLUMN postheader.url IS 'Url for this header image, if relative, it will be on the path "~/bfiles/<postid>"';

Loading…