refactoring

main
Paul Schneider 10 years ago
parent 1805cb3e17
commit bb5e34a61d
29 changed files with 609 additions and 272 deletions

@ -1,3 +1,9 @@
2015-10-17 Paul Schneider <paul@pschneider.fr>
* NpgsqlTagInfo.cs:
* NpgsqlBlogProvider.cs:
* NpgsqlBlogProvider.csproj:
2015-10-17 Paul Schneider <paul@pschneider.fr> 2015-10-17 Paul Schneider <paul@pschneider.fr>
* NpgsqlBlogProvider.cs: * NpgsqlBlogProvider.cs:

@ -16,10 +16,20 @@ namespace Npgsql.Web.Blog
/// </summary> /// </summary>
public class NpgsqlBlogProvider : BlogProvider public class NpgsqlBlogProvider : BlogProvider
{ {
string applicationName; string applicationName;
string connectionString; string connectionString;
#region implemented abstract members of BlogProvider #region implemented abstract members of BlogProvider
/// <summary>
/// Gets the tag info.
/// </summary>
/// <returns>The tag info.</returns>
/// <param name="tagname">Tagname.</param>
public override TagInfo GetTagInfo (string tagname)
{
return new NpgsqlTagInfo (connectionString, tagname);
}
/// <summary> /// <summary>
/// Tag the specified post by identifier /// Tag the specified post by identifier

@ -34,6 +34,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="NpgsqlBlogProvider.cs" /> <Compile Include="NpgsqlBlogProvider.cs" />
<Compile Include="AssemblyInfo.cs" /> <Compile Include="AssemblyInfo.cs" />
<Compile Include="NpgsqlTagInfo.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Sql\" /> <Folder Include="Sql\" />

@ -0,0 +1,96 @@
//
// NpgsqlTagInfo.cs
//
// 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/>.
using System;
using Yavsc.Model.Blogs;
using System.Collections.Generic;
namespace Npgsql.Web.Blog
{
/// <summary>
/// Npgsql tag info.
/// </summary>
public class NpgsqlTagInfo: TagInfo
{
/// <summary>
/// Initializes a new instance of the <see cref="Npgsql.Web.Blog.NpgsqlTagInfo"/> class.
/// </summary>
/// <param name="connectionString">Connection string.</param>
/// <param name="tagname">Tagname.</param>
public NpgsqlTagInfo (string connectionString, string tagname): base(tagname)
{
titles = new List<BasePostInfo>();
using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
cmd.CommandText = "SELECT \n" +
" blog.username, \n" +
" blog.posted, \n" +
" blog.modified, \n" +
" blog.title, \n" +
" blog.bcontent, \n" +
" blog.visible, \n" +
" blog._id, \n" +
" blog.photo, \n" +
" tag.name\nFROM \n" +
" public.blog, \n" +
" public.tagged, \n" +
" public.tag\nWHERE \n" +
" tagged.postid = blog._id AND \n" +
" tag._id = tagged.tagid AND \n" +
" public.tag.name = :name";
cmd.Parameters.AddWithValue ("name", tagname);
using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
while (rdr.Read ()) {
bool truncated;
var pi = new BasePostInfo {
Title = rdr.GetString(3),
Author = rdr.GetString (0),
Id = rdr.GetInt64 (6),
Intro = MarkdownHelper.MarkdownIntro (
rdr.GetString (4),
out truncated),
Visible = rdr.GetBoolean(5),
Photo = (!rdr.IsDBNull (7))?null:rdr.GetString (7),
Modified = rdr.GetDateTime(2),
Posted = rdr.GetDateTime(1)
};
titles.Add (pi);
}
}
}
}
List<BasePostInfo> titles;
#region implemented abstract members of TagInfo
/// <summary>
/// Gets the titles.
/// </summary>
/// <value>The titles.</value>
public override System.Collections.Generic.IEnumerable<BasePostInfo> Titles {
get {
return titles;
}
}
#endregion
}
}

@ -39,7 +39,6 @@ body.loading .modal {
} }
.iconsmall { max-height: 1.3em; max-width: 1.3em; } .iconsmall { max-height: 1.3em; max-width: 1.3em; }
.photo { width: 100%; } .photo { width: 100%; }
.blogbanner { float: left; top:0; } .blogbanner { float: left; top:0; }
.subtitle { font-size:small; font-style: italic; } .subtitle { font-size:small; font-style: italic; }
@ -96,7 +95,7 @@ legend {
footer p { display:inline-block; } footer p { display:inline-block; }
footer img { max-height: 3em; vertical-align: middle; } footer img { max-height: 3em; vertical-align: middle; }
a img, h1 img, .menuitem img { max-height: 1em; vertical-align: middle; } a img, h1 img, .menuitem img { vertical-align: middle; }
#gspacer { #gspacer {
background-color: rgba(20,20,20,.8); background-color: rgba(20,20,20,.8);
@ -275,12 +274,6 @@ input, select, textarea {
border-radius:25px; border-radius:25px;
white-space: pre-wrap; white-space: pre-wrap;
} }
.avatar {
max-width: 64px;
max-height: 64px;
}
#avatar { #avatar {
float: left; float: left;
margin:1em; margin:1em;
@ -323,6 +316,10 @@ header {
padding-bottom:1em; padding-bottom:1em;
} }
#avatar {
margin:.5em;
}
header h1, header a , .actionlink, .menuitem, a { padding:.5em;} header h1, header a , .actionlink, .menuitem, a { padding:.5em;}
nav { nav {

@ -1,3 +1,17 @@
2015-10-17 Paul Schneider <paul@pschneider.fr>
* Web.csproj:
* Global.asax.cs:
* yavsc.js:
* App.master:
* style.css:
* NoLogin.master:
* YavscHelpers.cs:
* TagPanel.ascx:
* UserPosts.aspx:
* AccountController.cs:
* FrontOfficeController.cs:
2015-10-17 Paul Schneider <paul@pschneider.fr> 2015-10-17 Paul Schneider <paul@pschneider.fr>
* Web.csproj: * Web.csproj:

@ -332,7 +332,7 @@ namespace Yavsc.Controllers
UserManager.ChangeName (id, model.Name); UserManager.ChangeName (id, model.Name);
FormsAuthentication.SetAuthCookie (model.Name, model.RememberMe); FormsAuthentication.SetAuthCookie (model.Name, model.RememberMe);
} }
ViewData ["Message"] = "Profile enregistré"+((editsMyName)?", nom public inclu.":""); YavscHelpers.Notify(ViewData, "Profile enregistré"+((editsMyName)?", nom public inclu.":""));
} }
return View (model); return View (model);
} }

@ -14,6 +14,7 @@ using Yavsc.Model.FrontOffice;
using Yavsc.Model.FileSystem; using Yavsc.Model.FileSystem;
using Yavsc.Model.Calendar; using Yavsc.Model.Calendar;
using System.Configuration; using System.Configuration;
using Yavsc.Helpers;
namespace Yavsc.Controllers namespace Yavsc.Controllers
{ {
@ -206,7 +207,7 @@ namespace Yavsc.Controllers
ViewData ["ProdRef"] = pref; ViewData ["ProdRef"] = pref;
Catalog cat = CatalogManager.GetCatalog (); Catalog cat = CatalogManager.GetCatalog ();
if (cat == null) { if (cat == null) {
ViewData ["Message"] = "Catalog introuvable"; YavscHelpers.Notify(ViewData, "Catalog introuvable");
ViewData ["RefType"] = "Catalog"; ViewData ["RefType"] = "Catalog";
return View ("ReferenceNotFound"); return View ("ReferenceNotFound");
} }
@ -249,10 +250,10 @@ namespace Yavsc.Controllers
// Add specified product command to the basket, // Add specified product command to the basket,
// saves it in db // saves it in db
new Command(collection,HttpContext.Request.Files); new Command(collection,HttpContext.Request.Files);
ViewData ["Message"] = LocalizedText.Item_added_to_basket; YavscHelpers.Notify(ViewData, LocalizedText.Item_added_to_basket);
return View (collection); return View (collection);
} catch (Exception e) { } catch (Exception e) {
ViewData ["Message"] = "Exception:" + e.Message; YavscHelpers.Notify(ViewData,"Exception:" + e.Message);
return View (collection); return View (collection);
} }
} }

@ -48,13 +48,13 @@ namespace Yavsc
routes.IgnoreRoute ("robots.txt"); // for search engine robots routes.IgnoreRoute ("robots.txt"); // for search engine robots
routes.MapRoute ( routes.MapRoute (
"Titles", "Titles",
"t/{title}", "title/{title}",
new { controller = "Blogs", action = "Index", new { controller = "Blogs", action = "Index",
title=UrlParameter.Optional } title=UrlParameter.Optional }
); );
routes.MapRoute ( routes.MapRoute (
"Blogs", "Blogs",
"b/{user}", "blog/{user}",
new { controller = "Blogs", new { controller = "Blogs",
action = "UserPosts", action = "UserPosts",
user="Paul Schneider" } user="Paul Schneider" }
@ -75,11 +75,6 @@ namespace Yavsc
new { controller = "Blogs", action = "Index", new { controller = "Blogs", action = "Index",
postid=UrlParameter.Optional } postid=UrlParameter.Optional }
); );
/* routes.MapRoute (
"Artistes",
"a/{artiste}",
new { controller = "Artistes", action = "Index", artiste = UrlParameter.Optional }
); */
routes.MapRoute ( routes.MapRoute (
"Default", "Default",
"{controller}/{action}/{id}", "{controller}/{action}/{id}",

@ -55,7 +55,9 @@ namespace Yavsc.Helpers
/// <param name="user">User.</param> /// <param name="user">User.</param>
public static void SendActivationMessage(this System.Web.Http.Routing.UrlHelper helper, MembershipUser user) public static void SendActivationMessage(this System.Web.Http.Routing.UrlHelper helper, MembershipUser user)
{ {
SendActivationMessage (helper.Route("~/Account/Validate/",new { id=user.UserName, key=user.ProviderUserKey.ToString() } ) SendActivationMessage (helper.Route("Default", new { controller="Account",
action = "Validate",
key=user.ProviderUserKey.ToString() } )
, WebConfigurationManager.AppSettings ["RegistrationMessage"], , WebConfigurationManager.AppSettings ["RegistrationMessage"],
user); user);
} }

@ -1,4 +1,4 @@
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" CodeBehind="App.master.cs" %> <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<asp:ContentPlaceHolder id="init" runat="server"> <asp:ContentPlaceHolder id="init" runat="server">
@ -35,20 +35,15 @@ var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder> <asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
<div id="notifications"></div> <div id="notifications"></div>
<%if (ViewData ["Notifications"]!=null) { %>
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
<%if (ViewData ["Notifications"]!=null) { %> <% foreach (string note in (IEnumerable<string>) ViewData ["Notifications"] ) { %>
<% foreach (string notice in (IEnumerable<string>) ViewData ["Notifications"] ) { %> Yavsc.notice('<%=note%>');
Yavsc.notice('<%=notice%>');
<% } %>
<% } %> <% } %>
$body = $("body");
$(document).on({
ajaxStart: function() { $body.addClass("loading"); },
ajaxStop: function() { $body.removeClass("loading"); }
});
}); });
</script> </script>
<% } %>
</header> </header>
<nav data-type="background" data-speed="2"> <nav data-type="background" data-speed="2">
<% if (Membership.GetUser()==null) { %> <% if (Membership.GetUser()==null) { %>
@ -71,7 +66,7 @@ $(document).on({
</a> </a>
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Logout", returnUrl=Request.Url.PathAndQuery}) %>" accesskey = "C" class="menuitem"> <a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Logout", returnUrl=Request.Url.PathAndQuery}) %>" accesskey = "C" class="menuitem">
<i class="fa fa-sign-out">Deconnexion</i></a> <i class="fa fa-sign-out"><%=Html.Translate("Logout")%></i></a>
<% } %> <% } %>
</nav> </nav>
<main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" > <main data-type="background" data-speed="10" data-emheight="10" data-posx="0" data-posy="22" >

@ -2,64 +2,80 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<asp:ContentPlaceHolder id="init" runat="server"> <asp:ContentPlaceHolder id="init" runat="server">
</asp:ContentPlaceHolder><% </asp:ContentPlaceHolder>
ViewState["orgtitle"] = T.GetString(Page.Title); <% ViewState["orgtitle"] = Html.Translate(Page.Title);
Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName; Page.Title = ViewState["orgtitle"] + " - " + YavscHelpers.SiteName;
%><head runat="server"> %><head runat="server">
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <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" /> <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/parralax.js")%>"></script>
<script type="text/javascript">
var apiBaseUrl = '<%=Url.Content(Yavsc.WebApiConfig.UrlPrefixRelative)%>';
</script>
<script src="<%=Url.Content("~/Scripts/yavsc.js")%>">
</script>
<asp:ContentPlaceHolder id="head" runat="server"> <asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
<link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/>
</head> </head>
<body> <body>
<header> <header data-type="background" data-speed="8" >
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server"> <asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
<h1><a href="<%= Url.Content("~/") %>"> <%=ViewState["orgtitle"]%> </a> - <h1><a href="<%= Url.Content("~/") %>">
<a href="<%=Request.Url.Scheme + "://" + Request.Url.Authority%>"><%= YavscHelpers.SiteName %></a> <%=ViewState["orgtitle"]%></a>
</h1> - <a href="<%= Url.Content("~/") %>"><%= YavscHelpers.SiteName %></a>
</asp:ContentPlaceHolder><asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder><% </h1>
if (ViewData["Error"]!=null) { </asp:ContentPlaceHolder>
%><div class="error"><%= Html.Encode(ViewData["Error"]) %> <asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
</div><% } <div id="notifications"></div>
if (ViewData["Message"]!=null) { <%if (ViewData ["Notifications"]!=null) { %>
%><div class="message"><%= Html.Encode(ViewData["Message"]) %></div><% } <script>
%> $(document).ready(function(){
<% foreach (string note in (IEnumerable<string>) ViewData ["Notifications"] ) { %>
Yavsc.notice('<%=note%>');
<% } %>
});
</script>
<% } %>
</header> </header>
<main> <nav data-type="background" data-speed="2">
<a href="<%= Url.RouteUrl("Default", new { controller = "Account", action = "Logout", returnUrl=Request.Url.PathAndQuery}) %>" accesskey = "C" class="menuitem">
<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" >
<asp:ContentPlaceHolder ID="MainContent" runat="server"> <asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
</main> </main>
<asp:ContentPlaceHolder ID="MASContent" runat="server"> <asp:ContentPlaceHolder ID="MASContent" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
<footer> <footer data-type="background" data-speed="2" >
<script src="https://apis.google.com/js/platform.js" async defer> <div id="copyr">
© 2012 Totem Production. Tous droits réservés.
</div>
<div >
<p class="control">
<%= 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>
<script src="https://apis.google.com/js/platform.js" defer>
{lang: 'fr'} {lang: 'fr'}
</script> </script>
<%= Html.ActionLink("Contact","Contact","Home",null, new { @class="thanks" }) %> <div id="gspacer" class="control"><div class="g-plusone" data-annotation="inline" data-width="170"></div>
<% foreach ( Link link in Html.Thanks()) { %> </div>
<a class="thanks" href="<%=link.Url%>"><% if (link.Image !=null) { </div>
%><img src="<%= link.Image %>" alt="<%= link.Text %>"/></a><% </footer><div class="modal"></div>
} 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>
</body> </body>
</html> </html>

@ -63,6 +63,13 @@ return self;
})(); })();
$(document).ready(function(){ $(document).ready(function(){
$body = $("body");
$(document).on({
ajaxStart: function() { $body.addClass("loading"); },
ajaxStop: function() { $body.removeClass("loading"); }
});
var $window = $(window); var $window = $(window);
$(window).scroll(function() { $(window).scroll(function() {
var $ns = $('#notifications'); var $ns = $('#notifications');

@ -0,0 +1,10 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TagInfo>" %>
<div class="panel">
<i class="fa fa-tag"><%=Model.Name%></i>
<ul>
<% foreach (BasePostInfo be in Model.Titles) { %>
<li><%= be.Title %>
<span><%= be.Intro %></span>
</li>
<% } %></ul>
</div>

@ -14,7 +14,7 @@
<h1 class="blogtitle"> <h1 class="blogtitle">
<a href="<%=Url.RouteUrl( "Blogs", new { user = Model.Author } )%>"> <a href="<%=Url.RouteUrl( "Blogs", new { user = Model.Author } )%>">
<%=Html.Encode(ViewData["BlogTitle"])%></a> <%=Html.Encode(ViewData["BlogTitle"])%></a>
- <a href="<%= Url.RouteUrl( "Default") %>"><%= YavscHelpers.SiteName %></a> - <a href="<%= Url.RouteUrl( "Default", new { controller = "Home" } ) %>"><%= YavscHelpers.SiteName %></a>
</h1> </h1>
</asp:Content> </asp:Content>

@ -434,6 +434,7 @@
<Content Include="Scripts\knockout-jqAutocomplete.js" /> <Content Include="Scripts\knockout-jqAutocomplete.js" />
<Content Include="Scripts\knockout-jqAutocomplete.min.js" /> <Content Include="Scripts\knockout-jqAutocomplete.min.js" />
<Content Include="Views\Blogs\PageLinks.ascx" /> <Content Include="Views\Blogs\PageLinks.ascx" />
<Content Include="Views\Blogs\TagPanel.ascx" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

@ -30,8 +30,6 @@ using System.ComponentModel.DataAnnotations;
namespace Yavsc.Model.Blogs namespace Yavsc.Model.Blogs
{ {
/// <summary> /// <summary>
/// Base post. /// Base post.
/// </summary> /// </summary>
@ -55,8 +53,6 @@ namespace Yavsc.Model.Blogs
} }
} }
/// <summary> /// <summary>
/// The posted. /// The posted.
/// </summary> /// </summary>
@ -139,12 +135,10 @@ namespace Yavsc.Model.Blogs
set; set;
} }
/// <summary> /// <summary>
/// Gets or sets a value indicating whether this <see cref="Yavsc.Model.Blogs.BlogEntry"/> is visible. /// Gets or sets a value indicating whether this <see cref="Yavsc.Model.Blogs.BlogEntry"/> is visible.
/// </summary> /// </summary>
/// <value><c>true</c> if visible; otherwise, <c>false</c>.</value> /// <value><c>true</c> if visible; otherwise, <c>false</c>.</value>
public bool Visible { get; set ; } public bool Visible { get; set ; }
} }
} }

@ -0,0 +1,42 @@
//
// BasePostInfo.cs
//
// 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/>.
using System;
using System.Configuration;
using System.Collections.Generic;
using Yavsc.Model.Blogs;
using System.Linq;
using Yavsc.Model.Circles;
namespace Yavsc.Model.Blogs
{
/// <summary>
/// Base post info.
/// </summary>
public class BasePostInfo: BasePost {
/// <summary>
/// The intro.
/// </summary>
public string Intro;
}
}

@ -18,15 +18,17 @@ namespace Yavsc.Model.Blogs
public BlogEntryCollection () public BlogEntryCollection ()
{ {
} }
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="Yavsc.Model.Blogs.BlogEntryCollection"/> class. /// Initializes a new instance of the <see cref="Yavsc.Model.Blogs.BlogEntryCollection"/> class.
/// </summary> /// </summary>
/// <param name="items">Items.</param> /// <param name="items">Items.</param>
public BlogEntryCollection(IEnumerable<BlogEntry> items) public BlogEntryCollection (IEnumerable<BlogEntry> items)
{ {
if (items!=null) if (items != null)
this.AddRange (items); this.AddRange (items);
} }
/// <summary> /// <summary>
/// Returns a <see cref="System.String"/> that represents the current <see cref="Yavsc.Model.Blogs.BlogEntryCollection"/>. /// Returns a <see cref="System.String"/> that represents the current <see cref="Yavsc.Model.Blogs.BlogEntryCollection"/>.
/// </summary> /// </summary>
@ -57,115 +59,81 @@ namespace Yavsc.Model.Blogs
{ {
return this.Where (x => x.Title == title).ToArray (); return this.Where (x => x.Title == title).ToArray ();
} }
/// <summary> /// <summary>
/// Filters the current collection for a given user by its name. /// Filters the current collection for a given user by its name.
/// Assumes that this user is not an author of any of these posts. /// Assumes that this user is not an author of any of these posts.
/// </summary> /// </summary>
/// <param name="username">Username.</param> /// <param name="username">Username.</param>
public BlogEntryCollection FilterFor(string username) public BlogEntryCollection FilterFor (string username)
{ {
BlogEntryCollection res = new BlogEntryCollection (); BlogEntryCollection res = new BlogEntryCollection ();
foreach (BlogEntry be in this) { foreach (BlogEntry be in this) {
if (be.Visible && if (be.Visible &&
(be.AllowedCircles == null || (be.AllowedCircles == null ||
(username!= null && CircleManager.DefaultProvider.Matches (username != null && CircleManager.DefaultProvider.Matches
(be.AllowedCircles,username)))) (be.AllowedCircles, username)))) {
{ res.Add (be);
res.Add(be); }
}
} }
return res; return res;
} }
/// <summary>
/// Base post info.
/// </summary>
public class BasePostInfo: BasePost {
/// <summary>
/// The intro.
/// </summary>
public string Intro;
}
/// <summary>
/// Post info.
/// </summary>
public class PostInfoByTitle : BasePostInfo {
/// <summary>
/// The name of the user.
/// </summary>
public string Author;
}
/// <summary>
/// Post info by user.
/// </summary>
public class PostInfoByUser : BasePostInfo {
/// <summary>
/// The name of the user.
/// </summary>
public string Title;
}
/// <summary> /// <summary>
/// Groups by title. /// Groups by title.
/// </summary> /// </summary>
public IEnumerable<IGrouping<string,PostInfoByTitle>> GroupByTitle() public IEnumerable<IGrouping<string,PostInfoByTitle>> GroupByTitle ()
{ {
bool truncated; bool truncated;
return from be in this return from be in this
orderby be.Posted descending orderby be.Posted descending
group group
new PostInfoByTitle { Author=be.Author, Id=be.Id, new PostInfoByTitle { Author = be.Author, Id = be.Id,
Posted=be.Posted, Modified=be.Modified, Posted = be.Posted, Modified = be.Modified,
Intro = MarkdownHelper.MarkdownIntro(be.Content, out truncated), Intro = MarkdownHelper.MarkdownIntro (be.Content, out truncated),
Visible = be.Visible, Visible = be.Visible,
Photo = be.Photo Photo = be.Photo
} }
by be.Title by be.Title
into titlegroup into titlegroup
select titlegroup; select titlegroup;
} }
/// <summary> /// <summary>
/// Groups by user. /// Groups by user.
/// </summary> /// </summary>
/// <returns>The by user.</returns> /// <returns>The by user.</returns>
public IEnumerable<IGrouping<string,PostInfoByUser>> GroupByUser() public IEnumerable<IGrouping<string,PostInfoByUser>> GroupByUser ()
{ {
bool truncated; bool truncated;
return from be in this return from be in this
orderby be.Posted descending orderby be.Posted descending
group group
new PostInfoByUser { new PostInfoByUser {
Title=be.Title, Title = be.Title,
Id=be.Id, Id = be.Id,
Posted=be.Posted, Posted = be.Posted,
Modified=be.Modified, Modified = be.Modified,
Intro = MarkdownHelper.MarkdownIntro(be.Content, out truncated) , Intro = MarkdownHelper.MarkdownIntro (be.Content, out truncated),
Photo = be.Photo, Photo = be.Photo,
Visible = be.Visible Visible = be.Visible
} }
by be.Author by be.Author
into usergroup into usergroup
select usergroup; select usergroup;
} }
/// <summary> /// <summary>
/// Gets the titles. /// Gets the titles.
/// </summary> /// </summary>
/// <value>The titles.</value> /// <value>The titles.</value>
public string[] Titles { get { public string[] Titles {
get {
string[] result = this.Select (x => x.Title).Distinct ().ToArray (); string[] result = this.Select (x => x.Title).Distinct ().ToArray ();
if (result == null) if (result == null)
return new string[0]; return new string[0];
return result; return result;
} } }
}
} }
} }

@ -19,6 +19,8 @@ namespace Yavsc.Model.Blogs
/// <param name="postid">Postid.</param> /// <param name="postid">Postid.</param>
public abstract BlogEntry GetPost (long postid); public abstract BlogEntry GetPost (long postid);
public abstract TagInfo GetTagInfo (string tagname);
/// <summary> /// <summary>
/// Gets the post collection from a given user and at a given title. /// Gets the post collection from a given user and at a given title.
/// </summary> /// </summary>

@ -0,0 +1,44 @@
//
// PostInfoByTitle.cs
//
// 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/>.
using System;
using System.Configuration;
using System.Collections.Generic;
using Yavsc.Model.Blogs;
using System.Linq;
using Yavsc.Model.Circles;
namespace Yavsc.Model.Blogs
{
/// <summary>
/// Post info.
/// </summary>
public class PostInfoByTitle : BasePostInfo {
/// <summary>
/// The name of the user.
/// </summary>
public string Author;
}
}

@ -0,0 +1,43 @@
//
// PostInfoByUser.cs
//
// 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/>.
using System;
using System.Configuration;
using System.Collections.Generic;
using Yavsc.Model.Blogs;
using System.Linq;
using Yavsc.Model.Circles;
namespace Yavsc.Model.Blogs
{
/// <summary>
/// Post info by user.
/// </summary>
public class PostInfoByUser : BasePostInfo {
/// <summary>
/// The name of the user.
/// </summary>
public string Title;
}
}

@ -0,0 +1,60 @@
//
// TagInfo.cs
//
// 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/>.
using System;
using System.Collections.Generic;
namespace Yavsc.Model.Blogs
{
/// <summary>
/// Tag info.
/// </summary>
public abstract class TagInfo
{
string name;
/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>The name.</value>
public string Name {
get {
return name;
}
set {
name = value;
}
}
/// <summary>
/// Initializes a new instance of the <see cref="Yavsc.Model.Blogs.TagInfo"/> class.
/// </summary>
/// <param name="tagname">Tagname.</param>
public TagInfo (string tagname)
{
Name = tagname;
}
/// <summary>
/// Gets the titles.
/// </summary>
/// <value>The titles.</value>
public abstract IEnumerable<BasePostInfo> Titles { get; }
}
}

@ -1,3 +1,18 @@
2015-10-17 Paul Schneider <paul@pschneider.fr>
* TagInfo.cs:
* YavscModel.csproj:
* BasePost.cs:
* LocalizedText.resx:
* LocalizedText.fr.resx:
* BlogProvider.cs:
* BasePostInfo.cs:
* PostInfoByUser.cs:
* PostInfoByTitle.cs:
* LocalizedText.Designer.cs:
* LocalizedText.fr.Designer.cs:
* BlogEntryCollection.cs:
2015-10-17 Paul Schneider <paul@pschneider.fr> 2015-10-17 Paul Schneider <paul@pschneider.fr>
* PostTag.cs: * PostTag.cs:

@ -64,6 +64,12 @@ namespace Yavsc.Model {
} }
} }
public static string Location {
get {
return ResourceManager.GetString("Location", resourceCulture);
}
}
public static string Circles { public static string Circles {
get { get {
return ResourceManager.GetString("Circles", resourceCulture); return ResourceManager.GetString("Circles", resourceCulture);
@ -250,9 +256,9 @@ namespace Yavsc.Model {
} }
} }
public static string Location { public static string Tag_name {
get { get {
return ResourceManager.GetString("Location", resourceCulture); return ResourceManager.GetString("Tag_name", resourceCulture);
} }
} }
@ -280,9 +286,9 @@ namespace Yavsc.Model {
} }
} }
public static string Tag_name { public static string Logout {
get { get {
return ResourceManager.GetString("Tag_name", resourceCulture); return ResourceManager.GetString("Logout", resourceCulture);
} }
} }

@ -46,387 +46,393 @@ namespace Yavsc.Model {
} }
} }
public static string was_added_to_the_empty_role { public static string EventWebPage {
get { get {
return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture); return ResourceManager.GetString("EventWebPage", resourceCulture);
} }
} }
public static string Bill_edition { public static string ProviderId {
get { get {
return ResourceManager.GetString("Bill_edition", resourceCulture); return ResourceManager.GetString("ProviderId", resourceCulture);
} }
} }
public static string Tex_version { public static string Pdf_version {
get { get {
return ResourceManager.GetString("Tex_version", resourceCulture); return ResourceManager.GetString("Pdf_version", resourceCulture);
} }
} }
public static string Message_sent { public static string Location {
get { get {
return ResourceManager.GetString("Message_sent", resourceCulture); return ResourceManager.GetString("Location", resourceCulture);
} }
} }
public static string Count { public static string Circles {
get { get {
return ResourceManager.GetString("Count", resourceCulture); return ResourceManager.GetString("Circles", resourceCulture);
} }
} }
public static string Create { public static string Preview {
get { get {
return ResourceManager.GetString("Create", resourceCulture); return ResourceManager.GetString("Preview", resourceCulture);
} }
} }
public static string Description { public static string DisplayName {
get { get {
return ResourceManager.GetString("Description", resourceCulture); return ResourceManager.GetString("DisplayName", resourceCulture);
} }
} }
public static string Profile_edition { public static string none {
get { get {
return ResourceManager.GetString("Profile_edition", resourceCulture); return ResourceManager.GetString("none", resourceCulture);
} }
} }
public static string Title { public static string Count {
get { get {
return ResourceManager.GetString("Title", resourceCulture); return ResourceManager.GetString("Count", resourceCulture);
} }
} }
public static string My_Estimates { public static string ProviderName {
get { get {
return ResourceManager.GetString("My_Estimates", resourceCulture); return ResourceManager.GetString("ProviderName", resourceCulture);
} }
} }
public static string Google_error { public static string Not_Approuved {
get { get {
return ResourceManager.GetString("Google_error", resourceCulture); return ResourceManager.GetString("Not Approuved", resourceCulture);
} }
} }
public static string StartDate { public static string User_name {
get { get {
return ResourceManager.GetString("StartDate", resourceCulture); return ResourceManager.GetString("User_name", resourceCulture);
} }
} }
public static string no_content { public static string Estimate_not_found {
get { get {
return ResourceManager.GetString("no_content", resourceCulture); return ResourceManager.GetString("Estimate_not_found", resourceCulture);
} }
} }
public static string View_source { public static string Members {
get { get {
return ResourceManager.GetString("View_source", resourceCulture); return ResourceManager.GetString("Members", resourceCulture);
} }
} }
public static string Ciffer { public static string Google_calendar {
get { get {
return ResourceManager.GetString("Ciffer", resourceCulture); return ResourceManager.GetString("Google_calendar", resourceCulture);
} }
} }
public static string Modify { public static string younotadmin {
get { get {
return ResourceManager.GetString("Modify", resourceCulture); return ResourceManager.GetString("younotadmin", resourceCulture);
} }
} }
public static string MaxDate { public static string was_added_to_the_empty_role {
get { get {
return ResourceManager.GetString("MaxDate", resourceCulture); return ResourceManager.GetString("was_added_to_the_empty_role", resourceCulture);
} }
} }
public static string New_Tag { public static string access_denied {
get { get {
return ResourceManager.GetString("New_Tag", resourceCulture); return ResourceManager.GetString("access_denied", resourceCulture);
} }
} }
public static string ProviderName { public static string Ciffer {
get { get {
return ResourceManager.GetString("ProviderName", resourceCulture); return ResourceManager.GetString("Ciffer", resourceCulture);
} }
} }
public static string Date_search { public static string Create {
get { get {
return ResourceManager.GetString("Date_search", resourceCulture); return ResourceManager.GetString("Create", resourceCulture);
} }
} }
public static string Members { public static string Submit {
get { get {
return ResourceManager.GetString("Members", resourceCulture); return ResourceManager.GetString("Submit", resourceCulture);
} }
} }
public static string ImportException { public static string ImgLocator {
get { get {
return ResourceManager.GetString("ImportException", resourceCulture); return ResourceManager.GetString("ImgLocator", resourceCulture);
} }
} }
public static string Preview { public static string entries {
get { get {
return ResourceManager.GetString("Preview", resourceCulture); return ResourceManager.GetString("entries", resourceCulture);
} }
} }
public static string Register { public static string Description {
get { get {
return ResourceManager.GetString("Register", resourceCulture); return ResourceManager.GetString("Description", resourceCulture);
} }
} }
public static string Hide_source { public static string Google_error {
get { get {
return ResourceManager.GetString("Hide_source", resourceCulture); return ResourceManager.GetString("Google_error", resourceCulture);
} }
} }
public static string access_denied { public static string Comment {
get { get {
return ResourceManager.GetString("access_denied", resourceCulture); return ResourceManager.GetString("Comment", resourceCulture);
} }
} }
public static string DoTag { public static string Tex_version {
get { get {
return ResourceManager.GetString("DoTag", resourceCulture); return ResourceManager.GetString("Tex_version", resourceCulture);
} }
} }
public static string Product_reference { public static string Item_added_to_basket {
get { get {
return ResourceManager.GetString("Product_reference", resourceCulture); return ResourceManager.GetString("Item_added_to_basket", resourceCulture);
} }
} }
public static string EndDate { public static string ImportException {
get { get {
return ResourceManager.GetString("EndDate", resourceCulture); return ResourceManager.GetString("ImportException", resourceCulture);
} }
} }
public static string Google_calendar { public static string Product_reference {
get { get {
return ResourceManager.GetString("Google_calendar", resourceCulture); return ResourceManager.GetString("Product_reference", resourceCulture);
} }
} }
public static string Consultant { public static string Hide {
get { get {
return ResourceManager.GetString("Consultant", resourceCulture); return ResourceManager.GetString("Hide", resourceCulture);
} }
} }
public static string EventWebPage { public static string Register {
get { get {
return ResourceManager.GetString("EventWebPage", resourceCulture); return ResourceManager.GetString("Register", resourceCulture);
} }
} }
public static string User_List { public static string Tag_name {
get { get {
return ResourceManager.GetString("User List", resourceCulture); return ResourceManager.GetString("Tag_name", resourceCulture);
} }
} }
public static string ImgLocator { public static string New_Tag {
get { get {
return ResourceManager.GetString("ImgLocator", resourceCulture); return ResourceManager.GetString("New_Tag", resourceCulture);
} }
} }
public static string Submit { public static string Modify {
get { get {
return ResourceManager.GetString("Submit", resourceCulture); return ResourceManager.GetString("Modify", resourceCulture);
} }
} }
public static string Not_Approuved { public static string Remove {
get { get {
return ResourceManager.GetString("Not Approuved", resourceCulture); return ResourceManager.GetString("Remove", resourceCulture);
} }
} }
public static string Remember_me { public static string Title {
get { get {
return ResourceManager.GetString("Remember_me", resourceCulture); return ResourceManager.GetString("Title", resourceCulture);
} }
} }
public static string DocTemplateException { public static string Logout {
get { get {
return ResourceManager.GetString("DocTemplateException", resourceCulture); return ResourceManager.GetString("Logout", resourceCulture);
} }
} }
public static string Unitary_cost { public static string Message_sent {
get { get {
return ResourceManager.GetString("Unitary_cost", resourceCulture); return ResourceManager.GetString("Message_sent", resourceCulture);
} }
} }
public static string Circles { public static string Offline {
get { get {
return ResourceManager.GetString("Circles", resourceCulture); return ResourceManager.GetString("Offline", resourceCulture);
} }
} }
public static string Location { public static string Bill_edition {
get { get {
return ResourceManager.GetString("Location", resourceCulture); return ResourceManager.GetString("Bill_edition", resourceCulture);
} }
} }
public static string Tag_name { public static string InternalServerError {
get { get {
return ResourceManager.GetString("Tag_name", resourceCulture); return ResourceManager.GetString("InternalServerError", resourceCulture);
} }
} }
public static string Remove { public static string MaxDate {
get { get {
return ResourceManager.GetString("Remove", resourceCulture); return ResourceManager.GetString("MaxDate", resourceCulture);
} }
} }
public static string none { public static string Welcome {
get { get {
return ResourceManager.GetString("none", resourceCulture); return ResourceManager.GetString("Welcome", resourceCulture);
} }
} }
public static string Hide { public static string Edit {
get { get {
return ResourceManager.GetString("Hide", resourceCulture); return ResourceManager.GetString("Edit", resourceCulture);
} }
} }
public static string Estimate_not_found { public static string Date_search {
get { get {
return ResourceManager.GetString("Estimate_not_found", resourceCulture); return ResourceManager.GetString("Date_search", resourceCulture);
} }
} }
public static string ProviderId { public static string View_source {
get { get {
return ResourceManager.GetString("ProviderId", resourceCulture); return ResourceManager.GetString("View_source", resourceCulture);
} }
} }
public static string Welcome { public static string role_created {
get { get {
return ResourceManager.GetString("Welcome", resourceCulture); return ResourceManager.GetString("role_created", resourceCulture);
} }
} }
public static string Online { public static string ReadMore {
get { get {
return ResourceManager.GetString("Online", resourceCulture); return ResourceManager.GetString("ReadMore", resourceCulture);
} }
} }
public static string Home { public static string EndDate {
get { get {
return ResourceManager.GetString("Home", resourceCulture); return ResourceManager.GetString("EndDate", resourceCulture);
} }
} }
public static string Offline { public static string MinDate {
get { get {
return ResourceManager.GetString("Offline", resourceCulture); return ResourceManager.GetString("MinDate", resourceCulture);
} }
} }
public static string MinDate { public static string Remember_me {
get { get {
return ResourceManager.GetString("MinDate", resourceCulture); return ResourceManager.GetString("Remember_me", resourceCulture);
} }
} }
public static string Comment { public static string Home {
get { get {
return ResourceManager.GetString("Comment", resourceCulture); return ResourceManager.GetString("Home", resourceCulture);
} }
} }
public static string User_name { public static string Consultant {
get { get {
return ResourceManager.GetString("User_name", resourceCulture); return ResourceManager.GetString("Consultant", resourceCulture);
} }
} }
public static string DisplayName { public static string was_added_to_the_role {
get { get {
return ResourceManager.GetString("DisplayName", resourceCulture); return ResourceManager.GetString("was_added_to_the_role", resourceCulture);
} }
} }
public static string Pdf_version { public static string DoTag {
get { get {
return ResourceManager.GetString("Pdf_version", resourceCulture); return ResourceManager.GetString("DoTag", resourceCulture);
} }
} }
public static string ReadMore { public static string DocTemplateException {
get { get {
return ResourceManager.GetString("ReadMore", resourceCulture); return ResourceManager.GetString("DocTemplateException", resourceCulture);
} }
} }
public static string younotadmin { public static string no_content {
get { get {
return ResourceManager.GetString("younotadmin", resourceCulture); return ResourceManager.GetString("no_content", resourceCulture);
} }
} }
public static string Item_added_to_basket { public static string Unitary_cost {
get { get {
return ResourceManager.GetString("Item_added_to_basket", resourceCulture); return ResourceManager.GetString("Unitary_cost", resourceCulture);
} }
} }
public static string role_created { public static string Online {
get { get {
return ResourceManager.GetString("role_created", resourceCulture); return ResourceManager.GetString("Online", resourceCulture);
} }
} }
public static string Edit { public static string StartDate {
get { get {
return ResourceManager.GetString("Edit", resourceCulture); return ResourceManager.GetString("StartDate", resourceCulture);
} }
} }
public static string InternalServerError { public static string Hide_source {
get { get {
return ResourceManager.GetString("InternalServerError", resourceCulture); return ResourceManager.GetString("Hide_source", resourceCulture);
} }
} }
public static string entries { public static string User_List {
get { get {
return ResourceManager.GetString("entries", resourceCulture); return ResourceManager.GetString("User List", resourceCulture);
} }
} }
public static string was_added_to_the_role { public static string Profile_edition {
get { get {
return ResourceManager.GetString("was_added_to_the_role", resourceCulture); return ResourceManager.GetString("Profile_edition", resourceCulture);
}
}
public static string My_Estimates {
get {
return ResourceManager.GetString("My_Estimates", resourceCulture);
} }
} }
} }

@ -41,6 +41,7 @@
<data name="InternalServerError"><value>Erreur serveur interne</value></data> <data name="InternalServerError"><value>Erreur serveur interne</value></data>
<data name="Item_added_to_basket"><value>Article ajouté au panier</value></data> <data name="Item_added_to_basket"><value>Article ajouté au panier</value></data>
<data name="Location"><value>Lieu</value></data> <data name="Location"><value>Lieu</value></data>
<data name="Logout"><value>Déconnection</value></data>
<data name="MaxDate"><value>Date maximale du rendez-vous</value></data> <data name="MaxDate"><value>Date maximale du rendez-vous</value></data>
<data name="Members"><value>Membres</value></data> <data name="Members"><value>Membres</value></data>
<data name="Message_sent"><value>Votre message a été envoyé</value></data> <data name="Message_sent"><value>Votre message a été envoyé</value></data>

@ -43,6 +43,7 @@
<data name="ImportException"><value>Exception at importing</value></data> <data name="ImportException"><value>Exception at importing</value></data>
<data name="Item_added_to_basket"><value>Item added to basket</value></data> <data name="Item_added_to_basket"><value>Item added to basket</value></data>
<data name="Location"><value>Location</value></data> <data name="Location"><value>Location</value></data>
<data name="Logout"><value>Logout</value></data>
<data name="MaxDate"><value>Maximal date for the rendez-vous</value></data> <data name="MaxDate"><value>Maximal date for the rendez-vous</value></data>
<data name="Members"><value>Members</value></data> <data name="Members"><value>Members</value></data>
<data name="Message_sent"><value>Your message has been sent.</value></data> <data name="Message_sent"><value>Your message has been sent.</value></data>

@ -174,6 +174,10 @@
<Compile Include="Blogs\UTBlogEntryCollection.cs" /> <Compile Include="Blogs\UTBlogEntryCollection.cs" />
<Compile Include="Blogs\BasePost.cs" /> <Compile Include="Blogs\BasePost.cs" />
<Compile Include="Blogs\PostTag.cs" /> <Compile Include="Blogs\PostTag.cs" />
<Compile Include="Blogs\BasePostInfo.cs" />
<Compile Include="Blogs\PostInfoByTitle.cs" />
<Compile Include="Blogs\PostInfoByUser.cs" />
<Compile Include="Blogs\TagInfo.cs" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup> <ItemGroup>

Loading…