A new presentation, using parallax effects
* style.css: Makes a better style * Banner.png: Made obsolete * Profile.cs: Groups profile properties * ChangeLog: * ChangeLog: Must not exist in the source tree * Web.config: * instdbws.sql: Groups profile properties * App.master: A better Html structure * AccountController.cs: Fixes the Profile edition * MarkdownHelper.cs: Adds an extraction of an introduction from a Markdown text * Edit.aspx: * Index.aspx: * UserPost.aspx: a better html structure * UserPosts.aspx: * a better html structure * post previews * Web.csproj: Adds and removes images
This commit is contained in:
@ -1,54 +1,100 @@
|
||||
|
||||
|
||||
body {
|
||||
background-image: url('/images/Banner.png');
|
||||
background-repeat: no-repeat;
|
||||
background-color: black;
|
||||
color: #D0FFD0;
|
||||
font-family: 'Arial', cursive;
|
||||
padding: 0em;
|
||||
margin-bottom:3em;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width:25em;
|
||||
height:5em;
|
||||
}
|
||||
.iconsmall { max-height: 1.3em; max-width: 1.3em; }
|
||||
|
||||
input, textarea, checkbox {
|
||||
color: #FFFFA0;
|
||||
background: black;
|
||||
}
|
||||
|
||||
main {
|
||||
header {
|
||||
border-radius:10px;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
background-color: rgba(64,64,64,0.6);
|
||||
border-radius:10px;
|
||||
clear: both;
|
||||
display: block;
|
||||
background: url("/images/helix-nebula-1400x1400.s.jpg") 50% 0 repeat fixed;
|
||||
min-height: 25em;
|
||||
}
|
||||
|
||||
nav {
|
||||
border-radius:10px;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
display: block;
|
||||
background: url("/images/live-concert-388160_1280.s.jpg") 50% 0 repeat fixed ;
|
||||
min-height: 25em;
|
||||
}
|
||||
|
||||
main {
|
||||
border-radius:10px;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
display: block;
|
||||
background: url("/images/musician-923526_1280.s.jpg") 50% 0 repeat fixed ;
|
||||
min-height: 25em;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-radius:10px;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
display: block;
|
||||
background: url("/images/drummer-652345_1280.s.jpg") 50% 0 repeat fixed ;
|
||||
min-height: 25em;
|
||||
clear: both;
|
||||
display: flex;
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
background-color: rgba(32,16,16,0.8);
|
||||
border-radius:5px; border: solid 1px #000060;
|
||||
}
|
||||
|
||||
video,img {
|
||||
video, img {
|
||||
max-width:100%;
|
||||
max-height:75%;
|
||||
position:relative;
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
footer {
|
||||
position:fixed;
|
||||
bottom:0;
|
||||
left:0;
|
||||
right:0;
|
||||
background-color:rgba(16,0,0,0.8);
|
||||
display: flex;
|
||||
z-index:-1;
|
||||
font-size: smaller;
|
||||
aside {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
max-width: 40em;
|
||||
}
|
||||
|
||||
.postpreview {
|
||||
display: inline-block;
|
||||
max-width: 40em;
|
||||
padding: .5em;
|
||||
margin: .5em;
|
||||
background-color: rgba(32,32,64,0.8);
|
||||
border-radius:10px;
|
||||
}
|
||||
.postpreview video, .postpreview img {
|
||||
max-width:100%;
|
||||
max-height:5em;
|
||||
}
|
||||
.post {
|
||||
display:block;
|
||||
margin:1em;
|
||||
padding:1em;
|
||||
background-color: rgba(32,32,64,0.8);
|
||||
color: #aaa;
|
||||
border-radius:10px;
|
||||
}
|
||||
.hiddenpost { background-color: rgba(16,16,0,0.3); }
|
||||
.fullwidth { width: 100%; }
|
||||
|
||||
textarea.fullwidth { min-height:10em; }
|
||||
|
||||
.thanks {
|
||||
max-width: 10%;
|
||||
text-align: center;
|
||||
@ -58,7 +104,7 @@ footer {
|
||||
}
|
||||
|
||||
|
||||
.panel,.bshpanel,aside {
|
||||
.panel,.bshpanel, aside {
|
||||
background-color: rgba(32,16,16,0.8);
|
||||
border-radius:5px;
|
||||
margin:.5em;
|
||||
@ -66,23 +112,10 @@ footer {
|
||||
}
|
||||
|
||||
|
||||
#appmenu {
|
||||
line-height: 1em;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
border-radius:10px;
|
||||
color: #ff8;
|
||||
background-color: rgba(32,16,16,.6);
|
||||
float: right;
|
||||
}
|
||||
|
||||
#appmenu img { max-height:2em; max-width:2em; }
|
||||
|
||||
.menuitem {
|
||||
}
|
||||
.hint {
|
||||
display: inline;
|
||||
font-style: italic;
|
||||
font-size: smaller;
|
||||
}
|
||||
.hint::before {
|
||||
content: "(";
|
||||
@ -91,16 +124,10 @@ content: "(";
|
||||
content: ")";
|
||||
}
|
||||
|
||||
header {
|
||||
border-radius:10px;
|
||||
background-color:rgba(16,16,0,0.8);
|
||||
display: block;
|
||||
float:left;
|
||||
margin: .5em;
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
h1 img { vertical-align: text-top; }
|
||||
|
||||
h1 img { vertical-align: text-top;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
@ -136,32 +163,6 @@ label {
|
||||
background-color: rgba(64,0,0,0.3);
|
||||
}
|
||||
|
||||
.editblog {
|
||||
width: 95%;
|
||||
height: 95%;
|
||||
}
|
||||
|
||||
.metablog {
|
||||
font-style: italic;
|
||||
font-size: small;
|
||||
text-align: right;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.blogtitle {
|
||||
display:inline;
|
||||
}
|
||||
.blogpost {
|
||||
display:block;
|
||||
margin:1em;
|
||||
padding:1em;
|
||||
background-color: #090609;
|
||||
color: #aaa;
|
||||
border-radius:5px;
|
||||
}
|
||||
.contenu {
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.hidden { display:none; }
|
||||
|
||||
@ -223,6 +224,13 @@ a.actionlink img { top:4px; }
|
||||
}
|
||||
|
||||
|
||||
.menuitem {
|
||||
background-color: rgba(0,0,40,.8);
|
||||
border-radius:5px;
|
||||
margin:.5em;
|
||||
padding:.5em;
|
||||
}
|
||||
|
||||
.onhover {
|
||||
display:none;
|
||||
position: absolute;
|
||||
@ -243,7 +251,7 @@ a.actionlink img { top:4px; }
|
||||
|
||||
@media print {
|
||||
body {background-color:white;color:black;}
|
||||
header,footer,.postcomment,.actionlink,.metablog,#appmenu
|
||||
header,footer,.postcomment,.actionlink,nav
|
||||
{ display:none;}
|
||||
}
|
||||
|
||||
@ -257,13 +265,12 @@ a.actionlink img { top:4px; }
|
||||
}
|
||||
|
||||
@media all and (max-width: 640px) {
|
||||
#appmenu {display:inline;}
|
||||
|
||||
|
||||
.menuitem {
|
||||
display: inline;
|
||||
}
|
||||
.menuitem:not(:last-child):after {
|
||||
content:' |';
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.bshpanel { cursor:zoom-in; }
|
||||
footer {
|
||||
clear:both;
|
||||
@ -280,5 +287,3 @@ a.actionlink img { top:4px; }
|
||||
.c2-alt { display:initial; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,3 +1,69 @@
|
||||
2015-09-30 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* style.css: Makes a better style
|
||||
|
||||
* Banner.png: Made obsolete
|
||||
|
||||
* ChangeLog: Must not exist in the source tree
|
||||
|
||||
* Web.config:
|
||||
* instdbws.sql: Groups profile properties
|
||||
|
||||
* App.master: A better Html structure
|
||||
|
||||
* AccountController.cs: Fixes the Profile edition
|
||||
|
||||
* MarkdownHelper.cs: Adds an extraction of an introduction
|
||||
from a Markdown text
|
||||
|
||||
* Edit.aspx:
|
||||
* Index.aspx:
|
||||
* UserPost.aspx: a better html structure
|
||||
|
||||
* UserPosts.aspx: * a better html structure
|
||||
* post previews
|
||||
|
||||
* Web.csproj: Adds and removes images
|
||||
|
||||
2015-09-30 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* drummer-652345_1280.jpg:
|
||||
* musician-923526_1280.jpg:
|
||||
* an-pierle-876094_1280.jpg:
|
||||
* drummer-652345_1280.s.jpg:
|
||||
* musician-923526_1280.s.jpg:
|
||||
* helix-nebula-1400x1400.jpg:
|
||||
* live-concert-388160_1280.jpg:
|
||||
* helix-nebula-1400x1400.s.jpg:
|
||||
* live-concert-388160_1280.s.jpg: some image
|
||||
|
||||
* style.css: makes a new style
|
||||
|
||||
* AccountController.cs: fixes the profile edition
|
||||
|
||||
* MarkdownHelper.cs: implements an helper to build a preview
|
||||
from some Markdown text
|
||||
|
||||
* App.master: * use the non-min jquery-ui.js
|
||||
* use a simpler code for parallax
|
||||
* nicer code
|
||||
* small icon in the link to blog posts
|
||||
* do not show G+1 in Debug mode
|
||||
|
||||
* Web.config:
|
||||
* Edit.aspx:
|
||||
* Index.aspx:
|
||||
* UserPost.aspx: a better html structure
|
||||
|
||||
* UserPosts.aspx: * a better html structure
|
||||
* displays a post preview
|
||||
|
||||
* Web.csproj: image additions and deletion
|
||||
|
||||
* instdbws.sql: groups some profile attributes
|
||||
|
||||
* Banner.png: obsolete
|
||||
|
||||
2015-09-28 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* App.master: Use local copies for jquery & jquery-ui
|
||||
|
@ -291,7 +291,7 @@ namespace Yavsc.Controllers
|
||||
|
||||
string logdu = Membership.GetUser ().UserName;
|
||||
ViewData ["UserName"] = id;
|
||||
bool editsMyName = (id != model.Name);
|
||||
bool editsMyName = (string.Compare(id,model.Name)==0);
|
||||
if (!editsMyName)
|
||||
if (!Roles.IsUserInRole ("Admin"))
|
||||
if (!Roles.IsUserInRole ("FrontOffice"))
|
||||
|
@ -43,6 +43,30 @@ namespace Yavsc.Helpers
|
||||
// Wrap the html in an MvcHtmlString otherwise it'll be HtmlEncoded and displayed to the user as HTML :(
|
||||
return new MvcHtmlString(html);
|
||||
}
|
||||
|
||||
public static IHtmlString MarkdownToHtmlIntro(this HtmlHelper helper, out bool truncated, string text, string urlBaseLocation="")
|
||||
{
|
||||
int maxLen = 250;
|
||||
// Transform the supplied text (Markdown) into HTML.
|
||||
var markdownTransformer = new Markdown();
|
||||
markdownTransformer.ExtraMode = true;
|
||||
markdownTransformer.UrlBaseLocation = urlBaseLocation;
|
||||
if (text.Length < maxLen) {
|
||||
truncated = false;
|
||||
return new MvcHtmlString(markdownTransformer.Transform(text));
|
||||
}
|
||||
string intro = text.Remove (maxLen);
|
||||
truncated = true;
|
||||
int inl = intro.LastIndexOf ("\n");
|
||||
if (inl > 20)
|
||||
intro = intro.Remove (inl);
|
||||
intro += " ...";
|
||||
|
||||
string html = markdownTransformer.Transform(intro);
|
||||
// Wrap the html in an MvcHtmlString otherwise it'll be HtmlEncoded and displayed to the user as HTML :(
|
||||
return new MvcHtmlString(html);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Transforms a string of Markdown into HTML.
|
||||
/// </summary>
|
||||
|
@ -9,36 +9,53 @@
|
||||
<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="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.min.js")%>"></script>
|
||||
<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
|
||||
$(window).scroll(function() {
|
||||
var yPos = -($window.scrollTop() / $bgobj.data('speed'));
|
||||
// Put together our final background position
|
||||
var coords = '50% '+ yPos + 'px';
|
||||
// Move the background
|
||||
$bgobj.css({ backgroundPosition: coords });
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script src="/Scripts/yavsc.js">
|
||||
</script>
|
||||
<script src="/Scripts/yavsc.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="10">
|
||||
|
||||
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
|
||||
|
||||
<h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>"> <%=ViewState["orgtitle"]%> </a>
|
||||
<span> -
|
||||
<a href="<%=Request.Url.Scheme + "://" + Request.Url.Authority%>"><%= YavscHelpers.SiteName %></a>
|
||||
<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>
|
||||
|
||||
<div id="appmenu" >
|
||||
<nav data-type="background" data-speed="10">
|
||||
<% if (Membership.GetUser()==null) { %>
|
||||
<div class="menuitem">
|
||||
<%= Html.ActionLink("Authentification", "Login", "Account", new { returnUrl=Request.Url.PathAndQuery },null) %>
|
||||
@ -46,7 +63,7 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
</div>
|
||||
<% } else { %><div class="menuitem">
|
||||
<a href="/Blog/<%= HttpContext.Current.User.Identity.Name%>">
|
||||
<img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" width="25%" alt="vos billets" /></a>
|
||||
<img src="<%=Html.AvatarUrl(HttpContext.Current.User.Identity.Name)%>" alt="vos billets" class="iconsmall" /></a>
|
||||
<div class="hint">Vos billets</div>
|
||||
</div>
|
||||
|
||||
@ -62,28 +79,32 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
|
||||
<%= Html.ActionLink( "Deconnexion", "Logout", "Account", new { returnUrl=Request.Url.PathAndQuery }, null) %>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
<main>
|
||||
</nav>
|
||||
<main data-type="background" data-speed="10">
|
||||
<div>
|
||||
<asp:ContentPlaceHolder ID="MainContent" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
</div>
|
||||
</main>
|
||||
<asp:ContentPlaceHolder ID="MASContent" runat="server">
|
||||
</asp:ContentPlaceHolder>
|
||||
|
||||
<footer>
|
||||
<script src="https://apis.google.com/js/platform.js" defer>
|
||||
{lang: 'fr'}
|
||||
</script>
|
||||
<%= Html.ActionLink("Contact","Contact","Home",null, new { @class="thanks" }) %>
|
||||
<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>
|
||||
<% #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>
|
||||
<% #endif %>
|
||||
</footer>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -11,17 +11,18 @@
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<h1><div id="vtitle" for="Title" class="post title editable"><%=Html.Markdown(Model.Title)%></div></h1>
|
||||
<div id="vcontent" for="Content" class="post content editable">
|
||||
<%=Html.Markdown(Model.Content,"/bfiles/"+Model.Id+"/")%>
|
||||
</div>
|
||||
<div>
|
||||
<% using(Html.BeginForm("ValidateEdit","Blogs")) { %>
|
||||
<fieldset>
|
||||
<legend>Billet</legend>
|
||||
<%= Html.LabelFor(model => model.Title) %> <%= Html.ValidationMessage("Title") %> : <br>
|
||||
<input name="Title" id="Title">
|
||||
<input name="Title" id="Title" class="fullwidth">
|
||||
<br>
|
||||
<%= Html.LabelFor(model => model.Content) %>
|
||||
<%= Html.ValidationMessage("Content") %>: <br>
|
||||
<textarea id="Content" name="Content"><%=Html.Markdown(Model.Content)%></textarea><br>
|
||||
<style> #Content { }
|
||||
</style>
|
||||
<textarea id="Content" name="Content" class="fullwidth" ><%=Html.Markdown(Model.Content)%></textarea><br>
|
||||
|
||||
<%= Html.CheckBox( "Visible" ) %>
|
||||
<%= Html.LabelFor(model => model.Visible) %>
|
||||
@ -37,7 +38,16 @@
|
||||
<%=Html.Hidden("Author")%>
|
||||
<%=Html.Hidden("Id")%>
|
||||
<input type="submit">
|
||||
</fieldset>
|
||||
<% } %>
|
||||
</div>
|
||||
<div class="post">
|
||||
<h1><div id="vtitle" for="Title" class="post title editable"><%=Html.Markdown(Model.Title)%></div></h1>
|
||||
<div id="vcontent" for="Content" class="post content editable">
|
||||
<%=Html.Markdown(Model.Content,"/bfiles/"+Model.Id+"/")%>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
jQuery('#vtitle').hallo({
|
||||
@ -166,16 +176,18 @@ function submitFile()
|
||||
{ submitFilesTo('PostFile'); }
|
||||
</script>
|
||||
<form id="uploads" method="post" enctype="multipart/form-data">
|
||||
<fieldset>
|
||||
<legend>Fichiers attachés</legend>
|
||||
<input type="file" name="attached" id="postedfile" multiple>
|
||||
<input type="button" value="attacher les ficher" onclick="submitFile()">
|
||||
<input type="button" value="importer les documents" onclick="submitImport()">
|
||||
</fieldset>
|
||||
</form>
|
||||
</asp:Content>
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MASContent" ID="MASContentContent" runat="server">
|
||||
<div class="metablog">
|
||||
(Id:<a href="/Blogs/UserPost/<%= Model.Id %>">
|
||||
<i><%= Model.Id %></i></a>, <%= Model.Posted.ToString("yyyy/MM/dd") %> - <%= Model.Modified.ToString("yyyy/MM/dd") %> <%= Model.Visible? "":", Invisible!" %>) <%= Html.ActionLink("Supprimer","RemovePost", new { user=Model.Author, title = Model.Title }, new { @class="actionlink" } ) %>
|
||||
</div>
|
||||
</asp:Content>
|
||||
<aside>
|
||||
Id:<%= Html.ActionLink( Model.Id.ToString() , "UserPost", new { user= Model.Author, title=Model.Title, id = Model.Id }, new { @class = "usertitleref actionlink" }) %>
|
||||
, Posted: <%= Model.Posted.ToString("yyyy/MM/dd") %> - Modified: <%= Model.Modified.ToString("yyyy/MM/dd") %>
|
||||
Visible: <%= Model.Visible? "oui":"non" %> <%= Html.ActionLink("Supprimer","RemovePost", new { user=Model.Author, title = Model.Title }, new { @class="actionlink" } ) %>
|
||||
</aside>
|
||||
|
||||
</asp:Content>
|
@ -4,23 +4,23 @@
|
||||
|
||||
<div>
|
||||
<% foreach (var g in Model.GroupByUser()) { %>
|
||||
<h1><a href="<%= Url.Content("~/Blog/"+g.Key) %>" class="actionlink userref">
|
||||
<%=g.Key%></a></h1>
|
||||
<h2><a href="<%= Url.Content("~/Blog/"+g.Key) %>" class="actionlink userref">
|
||||
<%=g.Key%></a></h2>
|
||||
<% foreach (var p in g) { %>
|
||||
<div class="blogpost">
|
||||
|
||||
|
||||
<div class="postpreview">
|
||||
<%= Html.ActionLink(p.Title, "UserPost",
|
||||
new { user = g.Key, title = p.Title }, new { @class = "usertitleref actionlink" , style="display:block;"} ) %>
|
||||
le <%=p.Posted.ToString("D") %>
|
||||
new { user = g.Key, title = p.Title }, new { @class = "usertitleref actionlink" } ) %>
|
||||
|
||||
<aside>
|
||||
(Posté le <%=p.Posted.ToString("D") %>)
|
||||
|
||||
<% if (Membership.GetUser()!=null)
|
||||
if ((Membership.GetUser().UserName==g.Key)
|
||||
|| (Roles.IsUserInRole ("Admin")))
|
||||
{ %><aside>
|
||||
{ %>
|
||||
<%= Html.ActionLink("Editer","Edit", new { id = p.Id }, new { @class="actionlink" }) %>
|
||||
<%= Html.ActionLink("Supprimer","RemovePost", new { id = p.Id }, new { @class="actionlink" } ) %>
|
||||
</aside><% } %>
|
||||
<% } %> </aside>
|
||||
</div> <% } %>
|
||||
<% } %>
|
||||
</div>
|
||||
|
@ -17,25 +17,27 @@
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<% foreach (var be in Model) { %>
|
||||
<div class="blogpost">
|
||||
<div class="post">
|
||||
<%= Html.Markdown(be.Content,"/bfiles/"+be.Id+"/") %>
|
||||
</div>
|
||||
|
||||
<% string username = Membership.GetUser().UserName; %>
|
||||
<% foreach (var c in (Comment[]) BlogManager.GetComments(be.Id)) { %>
|
||||
<div class="comment" style="min-height:32px;"> <img style="clear:left;float:left;max-width:32px;max-height:32px;margin:.3em;" src="<%= Url.Content("~/Account/Avatar/"+c.From) %>" alt="<%=c.From%>"/>
|
||||
<%= Html.Markdown(c.CommentText) %>
|
||||
<% if ( username == Model.Author || c.From == username ) { %>
|
||||
<%= Html.ActionLink("Supprimer","RemoveComment", new { cmtid = c.Id } , new { @class="actionlink" })%>
|
||||
<% } %>
|
||||
</div><% } %>
|
||||
|
||||
|
||||
<% if (Membership.GetUser()!=null) {
|
||||
if (Membership.GetUser().UserName==be.Author)
|
||||
{ %> <div class="metapost">
|
||||
<%= Html.ActionLink("Editer","Edit", new { id = be.Id }, new { @class="actionlink" }) %>
|
||||
<%= Html.ActionLink("Supprimer","RemovePost", new { id = be.Id }, new { @class="actionlink" } ) %>
|
||||
</div> <% } %>
|
||||
<%
|
||||
string username = Membership.GetUser().UserName; %>
|
||||
<% foreach (var c in (Comment[]) BlogManager.GetComments(be.Id)) { %>
|
||||
<div class="comment" style="min-height:32px;"> <img style="clear:left;float:left;max-width:32px;max-height:32px;margin:.3em;" src="/Blogs/Avatar/<%=c.From%>" alt="<%=c.From%>"/>
|
||||
<%= Html.Markdown(c.CommentText) %>
|
||||
<% if ( username == Model.Author || c.From == username ) { %>
|
||||
<%= Html.ActionLink("Supprimer","RemoveComment", new { cmtid = c.Id } , new { @class="actionlink" })%>
|
||||
<% } %>
|
||||
</div><% } %>
|
||||
<div class="postcomment">
|
||||
|
||||
<aside>
|
||||
<% using (Html.BeginForm("Comment","Blogs")) { %>
|
||||
<%=Html.Hidden("Author")%>
|
||||
<%=Html.Hidden("Title")%>
|
||||
@ -43,6 +45,6 @@
|
||||
<%=Html.Hidden("PostId",be.Id)%>
|
||||
<input type="submit" value="Poster un commentaire"/>
|
||||
<% } %>
|
||||
</div>
|
||||
<% } %><% } %>
|
||||
</aside>
|
||||
<% } %></div><% } %>
|
||||
</asp:Content>
|
||||
|
@ -18,10 +18,14 @@
|
||||
|
||||
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
|
||||
<% foreach (BlogEntry e in this.Model) { %>
|
||||
<div <% if (!e.Visible) { %> style="background-color:#022;" <% } %>>
|
||||
|
||||
<h2 class="blogtitle" ><%= Html.ActionLink(e.Title,"UserPost", new { user=e.Author, title=e.Title, id = e.Id }, new { @class = "usertitleref actionlink" , style="display:block;"}) %></h2>
|
||||
<div class="metablog">(<%= e.Posted.ToString("yyyy/MM/dd") %>
|
||||
<div class="postpreview<% if (!e.Visible) { %> hiddenpost<% } %>" >
|
||||
<h2><%= Html.ActionLink(e.Title,"UserPost", new { user=e.Author, title=e.Title, id = e.Id }, new { @class = "usertitleref actionlink" }) %></h2>
|
||||
<% bool truncated = false; %>
|
||||
<%= Html.MarkdownToHtmlIntro(out truncated, e.Content,"/bfiles/"+e.Id+"/") %>
|
||||
<% if (truncated) { %>
|
||||
<i><%= Html.ActionLink( "lire la suite" ,"UserPost", new { user=e.Author, title=e.Title, id = e.Id }, new { @class = "usertitleref actionlink" }) %></i>
|
||||
<% } %>
|
||||
<aside>(<%= e.Posted.ToString("yyyy/MM/dd") %>
|
||||
- <%= e.Modified.ToString("yyyy/MM/dd") %> <%= e.Visible? "":", Invisible!" %>)
|
||||
<% if (Membership.GetUser()!=null)
|
||||
if (Membership.GetUser().UserName==e.Author)
|
||||
@ -29,8 +33,7 @@
|
||||
<%= Html.ActionLink("Editer","Edit", new { id = e.Id }, new { @class="actionlink" }) %>
|
||||
<%= Html.ActionLink("Supprimer","RemovePost", new { id = e.Id }, new { @class="actionlink" } ) %>
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
</aside>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
|
@ -117,30 +117,39 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
|
||||
<add name="NpgsqlProfileProvider" type="Npgsql.Web.NpgsqlProfileProvider, NpgsqlMRPProviders" connectionStringName="yavsc" applicationName="/" description="ProfileProvider for yavsc" />
|
||||
</providers>
|
||||
<properties>
|
||||
<add name="avatar" />
|
||||
<add name="BlogVisible" type="System.Boolean" />
|
||||
<add name="Address" />
|
||||
<add name="BlogTitle" />
|
||||
<add name="CityAndState" />
|
||||
<add name="ZipCode" />
|
||||
<add name="WebSite" />
|
||||
<add name="Country" />
|
||||
<add name="Name" />
|
||||
<add name="Phone" />
|
||||
<add name="Mobile" />
|
||||
<add name="BankCode" />
|
||||
<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>
|
||||
|
||||
<group name="bank">
|
||||
<add name="Code" />
|
||||
<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" />
|
||||
<add name="Key" />
|
||||
</group>
|
||||
|
||||
<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">
|
||||
|
@ -221,7 +221,6 @@
|
||||
<Content Include="Views\Account\ChangePasswordSuccess.aspx" />
|
||||
<Content Include="Views\Account\Index.aspx" />
|
||||
<Content Include="Views\Account\Login.aspx" />
|
||||
<Content Include="images\Banner.png" />
|
||||
<Content Include="images\noavatar.png" />
|
||||
<Content Include="images\apache_pbw.png" />
|
||||
<Content Include="images\debian-logo.png" />
|
||||
@ -377,6 +376,17 @@
|
||||
<Content Include="Scripts\rangy-core.js" />
|
||||
<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" />
|
||||
<Content Include="images\live-concert-388160_1280.jpg" />
|
||||
<Content Include="images\musician-923526_1280.jpg" />
|
||||
<Content Include="images\drummer-652345_1280.s.jpg" />
|
||||
<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" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 91 KiB |
@ -98,31 +98,30 @@ WITH (
|
||||
CREATE TABLE profiledata
|
||||
(
|
||||
uniqueid integer,
|
||||
zipcode character varying(10),
|
||||
cityandstate character varying(255),
|
||||
"address.zipcode" character varying(10),
|
||||
"address.cityandstate" character varying(255),
|
||||
blogtitle character varying(255), -- Blog Title
|
||||
address character varying(2048), -- Postal address
|
||||
country character varying(100),
|
||||
"address.address" character varying(2048), -- Postal address
|
||||
"address.country" character varying(100),
|
||||
website character varying(256),
|
||||
blogvisible boolean,
|
||||
hasavatar boolean, -- True when user has specified an image for avatar
|
||||
name character varying(1024),
|
||||
phone character varying(15),
|
||||
mobile character varying(15),
|
||||
accountnumber character varying(15), -- Numero de compte
|
||||
bankedkey integer, -- clé RIB
|
||||
bankcode character varying(5), -- Code banque
|
||||
wicketcode character varying(5),
|
||||
iban character varying(33),
|
||||
bic character varying(15),
|
||||
gtoken character varying(512),
|
||||
grefreshtoken character varying(512), -- Google refresh token
|
||||
gtokentype character varying(256), -- Google access token type
|
||||
gcalid character varying(255),
|
||||
gtokenexpir timestamp with time zone, -- Google access token expiration date
|
||||
"bank.accountnumber" character varying(15), -- Numero de compte
|
||||
"bank.key" integer, -- clé RIB
|
||||
"bank.code" character varying(5), -- Code banque
|
||||
"bank.wicketcode" character varying(5),
|
||||
"bank.iban" character varying(33),
|
||||
"bank.bic" character varying(15),
|
||||
"google.token" character varying(512), -- Google authentification token
|
||||
"google.refreshtoken" character varying(512), -- Google refresh token
|
||||
"google.tokentype" character varying(256), -- Google access token type
|
||||
"google.calid" character varying(255), -- Google calendar identifier
|
||||
"google.tokenexpir" timestamp with time zone, -- Google access token expiration date
|
||||
avatar character varying(512), -- url for an avatar
|
||||
gcalapi boolean NOT NULL DEFAULT false, -- true when user authorized to use its Google calendar
|
||||
gregid character varying(1024), -- Google Cloud Message registration identifier
|
||||
"google.calapi" boolean NOT NULL DEFAULT false,
|
||||
"google.regid" character varying(1024), -- Google Cloud Message registration identifier
|
||||
CONSTRAINT fkprofiles2 FOREIGN KEY (uniqueid)
|
||||
REFERENCES profiles (uniqueid) MATCH SIMPLE
|
||||
ON UPDATE CASCADE ON DELETE CASCADE
|
||||
@ -130,22 +129,24 @@ 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.address IS 'Postal address';
|
||||
COMMENT ON COLUMN profiledata.hasavatar IS 'True when user has specified an image for avatar';
|
||||
COMMENT ON COLUMN profiledata.accountnumber IS 'Numero de compte';
|
||||
COMMENT ON COLUMN profiledata.bankedkey IS 'clé RIB';
|
||||
COMMENT ON COLUMN profiledata.bankcode IS 'Code banque';
|
||||
COMMENT ON COLUMN profiledata.gtoken IS 'Google authentification token';
|
||||
COMMENT ON COLUMN profiledata.gcalid IS 'Google calendar identifier';
|
||||
COMMENT ON COLUMN profiledata.gtokentype IS 'Google access token type';
|
||||
COMMENT ON COLUMN profiledata.grefreshtoken IS 'Google refresh token';
|
||||
COMMENT ON COLUMN profiledata.gtokenexpir IS 'Google access token expiration date';
|
||||
COMMENT ON COLUMN profiledata.avatar IS 'url for an avatar';
|
||||
COMMENT ON COLUMN profiledata.gregid IS 'Google Cloud Message registration identifier';
|
||||
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';
|
||||
COMMENT ON COLUMN profiledata."google.token" IS 'Google authentification token';
|
||||
COMMENT ON COLUMN profiledata."google.refreshtoken" IS 'Google refresh token';
|
||||
COMMENT ON COLUMN profiledata."google.tokentype" IS 'Google access token type';
|
||||
COMMENT ON COLUMN profiledata."google.calid" IS 'Google calendar identifier';
|
||||
COMMENT ON COLUMN profiledata."google.tokenexpir" IS 'Google access token expiration date';
|
||||
COMMENT ON COLUMN profiledata."google.regid" IS 'Google Cloud Message registration identifier';
|
||||
|
||||
-- Index: fki_fkprofiles2
|
||||
|
||||
-- Index: fki_fkprofiles2
|
||||
|
||||
-- DROP INDEX fki_fkprofiles2;
|
||||
|
||||
@ -154,6 +155,8 @@ CREATE INDEX fki_fkprofiles2
|
||||
USING btree
|
||||
(uniqueid);
|
||||
|
||||
|
||||
|
||||
-- Table: profiles
|
||||
|
||||
|
||||
|
@ -1,3 +1,13 @@
|
||||
2015-09-30 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* Profile.cs: Groups profile properties
|
||||
|
||||
* ChangeLog: Must not exist in the source tree
|
||||
|
||||
2015-09-30 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* Profile.cs: Grouping profile properties
|
||||
|
||||
2015-09-23 Paul Schneider <paul@pschneider.fr>
|
||||
|
||||
* BlogEntry.cs:
|
||||
|
@ -246,16 +246,18 @@ namespace Yavsc.Model.RolesAndMembers
|
||||
s = profile.GetPropertyValue ("avatar");
|
||||
avatar = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("Address");
|
||||
var address = profile.GetProfileGroup ("address");
|
||||
|
||||
s = address.GetPropertyValue ("address");
|
||||
Address = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("CityAndState");
|
||||
s = address.GetPropertyValue ("cityandstate");
|
||||
CityAndState = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("Country");
|
||||
s = address.GetPropertyValue ("country");
|
||||
Country = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("ZipCode");
|
||||
s = address.GetPropertyValue ("zipcode");
|
||||
ZipCode = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("WebSite");
|
||||
@ -272,25 +274,28 @@ namespace Yavsc.Model.RolesAndMembers
|
||||
|
||||
userName = profile.UserName;
|
||||
|
||||
s = profile.GetPropertyValue ("BankCode");
|
||||
var bank = profile.GetProfileGroup ("bank");
|
||||
|
||||
s = bank.GetPropertyValue ("Code");
|
||||
BankCode = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("IBAN");
|
||||
s = bank.GetPropertyValue ("IBAN");
|
||||
IBAN = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("BIC");
|
||||
s = bank.GetPropertyValue ("BIC");
|
||||
BIC = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("WicketCode");
|
||||
s = bank.GetPropertyValue ("WicketCode");
|
||||
WicketCode = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("AccountNumber");
|
||||
s = bank.GetPropertyValue ("AccountNumber");
|
||||
this.AccountNumber = (s is DBNull) ? null : (string)s;
|
||||
|
||||
s = profile.GetPropertyValue ("BankedKey");
|
||||
s = bank.GetPropertyValue ("Key");
|
||||
BankedKey = (s == null) ? 0 : (s is DBNull)? 0 : (int)s;
|
||||
|
||||
s = profile.GetPropertyValue ("gcalid");
|
||||
var google = profile.GetProfileGroup ("google");
|
||||
s = google.GetPropertyValue ("calid");
|
||||
GoogleCalendar = (s is DBNull)? null : (string) s;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user