From bdbda2a21f620bed9d0e6616d3e69322775645da Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Thu, 20 Aug 2015 20:02:46 +0200 Subject: [PATCH] * Presta.csproj: A first class * AssemblyInfo.cs: initial commit * NpgsqlCircleProvider.cs: circle members are now stored in bd upon their user's name * InputCircle.cs: fixes the new CircleManager interface usage * Yavsc.sln: Adds the `Presta` project * CircleController.cs: * Authorize some Http methods * Lists circles as circles * style.css: Fixes the missing "hidden" css class * AccountController.cs: using the new Circle provider interface * BlogsController.cs: * using the new Circle provider interface * do not test blog entry collections in order to group them by a unique user name or title, it's too bad, instead, keep user's request id as guide to model and view. * YavscHelpers.cs: Adds a Circle Html formatter * Circles.aspx: List of circles is now given as a list of `Circle` objects * instdbws.sql: fixes the db in order to store user names in circle member's records. * BlogEntryCollection.cs: ConcernsAUniqueTitle and ConcernsAUniqueUser are now Obsoletes * UUTBlogEntryCollection.cs: Drops a useless ctor * CircleProvider.cs: The `CircleManager` now delivers the user's circle as a `Circle` object collection. --- ChangeLog | 4 ++ NpgsqlContentProvider/ChangeLog | 5 ++ NpgsqlContentProvider/NpgsqlCircleProvider.cs | 64 ++++++++++++------- Presta/ChangeLog | 6 ++ Presta/Presta.csproj | 45 +++++++++++++ Presta/Properties/AssemblyInfo.cs | 47 ++++++++++++++ WebControls/ChangeLog | 4 ++ WebControls/InputCircle.cs | 17 +++-- Yavsc.sln | 6 ++ web/ApiControllers/CircleController.cs | 18 ++++-- web/App_Themes/style.css | 27 ++++---- web/ChangeLog | 25 ++++++++ web/Controllers/AccountController.cs | 7 +- web/Controllers/BlogsController.cs | 16 ++--- web/Helpers/YavscHelpers.cs | 26 ++++++++ web/Views/Account/Circles.aspx | 55 ++++++++++++---- web/instdbws.sql | 9 +-- yavscModel/Blogs/BlogEntryCollection.cs | 2 + yavscModel/Blogs/UUTBlogEntryCollection.cs | 9 +-- yavscModel/ChangeLog | 10 +++ yavscModel/Circles/CircleProvider.cs | 2 +- 21 files changed, 322 insertions(+), 82 deletions(-) create mode 100644 Presta/ChangeLog create mode 100644 Presta/Presta.csproj create mode 100644 Presta/Properties/AssemblyInfo.cs diff --git a/ChangeLog b/ChangeLog index f6a52348..abc93c00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2015-08-20 Paul Schneider + + * Yavsc.sln: Adds the `Presta` project + 2015-08-14 Paul Schneider * README.md: blanked: not clear enough diff --git a/NpgsqlContentProvider/ChangeLog b/NpgsqlContentProvider/ChangeLog index 5acf5451..cae08936 100644 --- a/NpgsqlContentProvider/ChangeLog +++ b/NpgsqlContentProvider/ChangeLog @@ -1,3 +1,8 @@ +2015-08-20 Paul Schneider + + * NpgsqlCircleProvider.cs: circle members are now stored in bd + upon their user's name + 2015-08-04 Paul Schneider * NpgsqlCircleProvider.cs: Fixes the "Match" method. diff --git a/NpgsqlContentProvider/NpgsqlCircleProvider.cs b/NpgsqlContentProvider/NpgsqlCircleProvider.cs index d724126d..75cbe039 100644 --- a/NpgsqlContentProvider/NpgsqlCircleProvider.cs +++ b/NpgsqlContentProvider/NpgsqlCircleProvider.cs @@ -179,8 +179,7 @@ namespace WorkFlowProvider cmd.Prepare (); if (users!=null) foreach (string user in users) { - object pkid = Membership.GetUser (user).ProviderUserKey; - cmd.Parameters[1].Value = pkid.ToString(); + cmd.Parameters[1].Value = user; cmd.ExecuteNonQuery (); } } @@ -190,7 +189,7 @@ namespace WorkFlowProvider } /// - /// Delete the specified owner and title. + /// Delete the specified title. /// /// Identifier. public override void Delete (long id) @@ -209,32 +208,51 @@ namespace WorkFlowProvider /// List user's circles. /// /// User. - public override IEnumerable List (string user) + public override IEnumerable List (string user) { - List cc = new List (); - using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) - using (NpgsqlCommand cmd = cnx.CreateCommand ()) { - cmd.CommandText = "select _id, title from circle where owner = :wnr"; - cmd.Parameters.AddWithValue("wnr",user); - cnx.Open (); - cmd.Prepare (); - using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { - if (rdr.HasRows) { + List cc = new List (); + using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) { + using (NpgsqlCommand cmd = cnx.CreateCommand ()) { + cmd.CommandText = "select _id, title from circle where owner = :wnr"; + cmd.Parameters.AddWithValue ("wnr", user); + cnx.Open (); + cmd.Prepare (); + using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { + if (rdr.HasRows) { - while (rdr.Read ()) { - string title = null; - int ottl = rdr.GetOrdinal ("title"); - if (!rdr.IsDBNull (ottl)) - title = rdr.GetString (ottl); - long id = (long) rdr.GetInt64 ( - rdr.GetOrdinal ("_id")); - cc.Add (new ListItem { Value = id.ToString(), Text = title} ); + while (rdr.Read ()) { + string title = null; + int ottl = rdr.GetOrdinal ("title"); + if (!rdr.IsDBNull (ottl)) + title = rdr.GetString (ottl); + long id = (long)rdr.GetInt64 ( + rdr.GetOrdinal ("_id")); + cc.Add (new Circle { Id = id, Title = title }); + } + } + rdr.Close (); + } + } + // select members + using (NpgsqlCommand cmd = cnx.CreateCommand ()) { + cmd.CommandText = "select member from circle_members where circle_id = :cid"; + cmd.Parameters.Add("cid",NpgsqlDbType.Bigint); + cmd.Prepare (); + foreach (Circle c in cc) { + cmd.Parameters ["cid"].Value = c.Id; + using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) { + if (rdr.HasRows) { + var res = new List (); + while (rdr.Read ()) { + res.Add (rdr.GetString (0)); + } + c.Members = res.ToArray (); + } + rdr.Close (); } } - rdr.Close (); } cnx.Close (); - } return cc; } diff --git a/Presta/ChangeLog b/Presta/ChangeLog new file mode 100644 index 00000000..4445aedf --- /dev/null +++ b/Presta/ChangeLog @@ -0,0 +1,6 @@ +2015-08-20 Paul Schneider + + * Presta.csproj: A first class + + * AssemblyInfo.cs: initial commit + diff --git a/Presta/Presta.csproj b/Presta/Presta.csproj new file mode 100644 index 00000000..fd631d3e --- /dev/null +++ b/Presta/Presta.csproj @@ -0,0 +1,45 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {6A312228-9641-478D-916F-4681CC65A35D} + Library + Presta + Presta + v4.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + full + true + bin\Release + prompt + 4 + false + + + + + + + + + + + {68F5B80A-616E-4C3C-91A0-828AA40000BD} + YavscModel + + + \ No newline at end of file diff --git a/Presta/Properties/AssemblyInfo.cs b/Presta/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..ada1df10 --- /dev/null +++ b/Presta/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +// +// AssemblyInfo.cs +// +// Author: +// Paul Schneider +// +// 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 . +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Presta")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("GNU GPL")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/WebControls/ChangeLog b/WebControls/ChangeLog index de0f9eff..5d7ca6a4 100644 --- a/WebControls/ChangeLog +++ b/WebControls/ChangeLog @@ -1,3 +1,7 @@ +2015-08-20 Paul Schneider + + * InputCircle.cs: fixes the new CircleManager interface usage + 2015-07-15 Paul Schneider * WebControls.csproj: Moves to Mono framework diff --git a/WebControls/InputCircle.cs b/WebControls/InputCircle.cs index 753757fa..efa68da0 100644 --- a/WebControls/InputCircle.cs +++ b/WebControls/InputCircle.cs @@ -154,15 +154,24 @@ namespace Yavsc.WebControls } var u = Membership.GetUser (); if (u != null) { - foreach (Yavsc.Model.ListItem ci in CircleManager.DefaultProvider.List(u.UserName)) { + foreach (var ci in CircleManager.DefaultProvider.List(u.UserName)) { foreach (SelectListItem sli in Value) - if (sli.Value == ci.Value) { + if (sli.Value == ci.Id.ToString()) { writer.AddAttribute ("selected", null); break; } - writer.AddAttribute ("value", ci.Value ); + writer.AddAttribute ("value", ci.Id.ToString() ); writer.RenderBeginTag ("option"); - writer.Write (ci.Text); + writer.Write (ci.Title); + if (ci.Members.Length > 0) { + writer.RenderBeginTag ("br"); + writer.RenderEndTag (); + writer.RenderBeginTag ("i"); + writer.Write (ci.Members [0]); + for (int i=1; i /// Model. - [Authorize] + [Authorize, + AcceptVerbs ("POST")] public long Create(NewCircle model) { string user = Membership.GetUser ().UserName; @@ -72,7 +73,8 @@ namespace Yavsc.ApiControllers /// /// Circle Identifier. /// username. - [Authorize] + [Authorize, + AcceptVerbs ("POST")] public void Add(long id, string username) { checkIsOwner (CircleManager.DefaultProvider.Get (id)); @@ -84,7 +86,9 @@ namespace Yavsc.ApiControllers /// Delete the circle specified by id. /// /// Identifier. - [Authorize] public void Delete(long id) + [Authorize, + AcceptVerbs ("GET")] + public void Delete(long id) { checkIsOwner (CircleManager.DefaultProvider.Get(id)); CircleManager.DefaultProvider.Delete (id); @@ -101,7 +105,8 @@ namespace Yavsc.ApiControllers /// Get the circle specified id. /// /// Identifier. - [Authorize] + [Authorize, + AcceptVerbs ("GET")] public Circle Get(long id) { var c = CircleManager.DefaultProvider.Get (id); @@ -112,8 +117,9 @@ namespace Yavsc.ApiControllers /// /// List the circles /// - [Authorize] - public IEnumerable List() + [Authorize, + AcceptVerbs ("GET")] + public IEnumerable List() { string user = Membership.GetUser ().UserName; return CircleManager.DefaultProvider.List (user); diff --git a/web/App_Themes/style.css b/web/App_Themes/style.css index 0fa25916..41c88a8b 100644 --- a/web/App_Themes/style.css +++ b/web/App_Themes/style.css @@ -12,7 +12,7 @@ body { textarea { width:25em; height:5em; - } +} input, textarea, checkbox { color: #FFFFA0; @@ -86,7 +86,7 @@ footer { font-size:75%; } - #login img { max-height:5em; max-width:5em; } +#login img { max-height:5em; max-width:5em; } header { background-color:rgba(16,16,0,0.8); @@ -155,6 +155,7 @@ label { padding-left: 20px; } +.hidden { display:none; } ul.preview li:nth-child(-n+10) { display:inline; @@ -180,6 +181,7 @@ usertitleref { font-family: 'Arial', cursive; font-size: 140%; display:block; + padding: .2em; } input, select { @@ -230,34 +232,35 @@ a.actionlink img { top:4px; } .field-validation-error { color: red; } .c2 { font-size: small; font-style: italic; } .c3 { font-size: x-small; font-style: italic; } + @media print { body {background-color:white;color:black;} - header,footer,.postcomment,.actionlink,.metablog,#login{ display:none;} + header,footer,.postcomment,.actionlink,.metablog,#login + { display:none;} } + @media all and (min-width: 641px) { .bshpanel { display:block; } .bsh { display: none; } .c3 { display:initial; } .c3-alt { display:none; } } + @media all and (max-width: 640px) { - .bshpanel { cursor:zoom-in; } - footer { font-size: x-small; } - .c2 { display:initial; } .c2-alt { display:none; } .c3 { display:none; } .c3-alt { display:initial; } - } - - @media all and (max-width: 350px) { - .c2 { display:none; } - .c2-alt { display:initial; } - } +} +@media all and (max-width: 350px) { + .c2 { display:none; } + .c2-alt { display:initial; } } + + diff --git a/web/ChangeLog b/web/ChangeLog index 457d3e58..9bdb71a3 100644 --- a/web/ChangeLog +++ b/web/ChangeLog @@ -1,3 +1,28 @@ +2015-08-20 Paul Schneider + + * CircleController.cs: * Authorize some Http methods + * Lists circles as circles + + + * style.css: Fixes the missing "hidden" css class + + * AccountController.cs: using the new Circle provider + interface + + * BlogsController.cs: * using the new Circle provider + interface + * do not test blog entry collections in order to group them by + a unique user name or title, it's too bad, + instead, keep user's request id as guide to model and view. + + * YavscHelpers.cs: Adds a Circle Html formatter + + * Circles.aspx: List of circles is now given as a list of + `Circle` objects + + * instdbws.sql: fixes the db in order to store user names in + circle member's records. + 2015-08-14 Paul Schneider * FileSystemController.cs: Fixes the route to user's Files by diff --git a/web/Controllers/AccountController.cs b/web/Controllers/AccountController.cs index b183b9ac..afd4c1e7 100644 --- a/web/Controllers/AccountController.cs +++ b/web/Controllers/AccountController.cs @@ -13,6 +13,7 @@ using Yavsc.Helpers; using System.Web.Mvc; using Yavsc.Model.Circles; using System.Collections.Specialized; +using System.Text; namespace Yavsc.Controllers { @@ -309,12 +310,10 @@ namespace Yavsc.Controllers public ActionResult Circles () { string user = Membership.GetUser ().UserName; - ViewData["Circles"] = CircleManager.DefaultProvider.List (user).Select (x => new SelectListItem { - Value = x.Value, - Text = x.Text - });; + ViewData["Circles"] = CircleManager.DefaultProvider.List (user); return View (); } + /// /// Logout the specified returnUrl. /// diff --git a/web/Controllers/BlogsController.cs b/web/Controllers/BlogsController.cs index 75177b5a..dbe50e51 100644 --- a/web/Controllers/BlogsController.cs +++ b/web/Controllers/BlogsController.cs @@ -18,6 +18,7 @@ using Yavsc.Model.RolesAndMembers; using System.Net; using System.Web.Mvc; using Yavsc.Model.Circles; +using Yavsc.Helpers; namespace Yavsc.Controllers { @@ -131,11 +132,6 @@ namespace Yavsc.Controllers ViewData ["Avatar"] = bupr.avatar; ViewData ["RecordCount"] = tr; UUBlogEntryCollection uuc = new UUBlogEntryCollection (user, c); - if (uuc.ConcernsAUniqueTitle) { - var uutc = new UUTBlogEntryCollection (uuc.UserName, - uuc [0].Title, uuc); - return View ("UserPost", uutc ); - } return View ("UserPosts", uuc); } @@ -259,8 +255,8 @@ namespace Yavsc.Controllers title = ""; ViewData ["UserName"] = un; ViewData ["AllowedCircles"] = CircleManager.DefaultProvider.List (Membership.GetUser ().UserName).Select (x => new SelectListItem { - Value = x.Value, - Text = x.Text + Value = x.Id.ToString(), + Text = YavscHelpers.FormatCircle(x).ToHtmlString() }); return View ("Edit", new BlogEntry { Title = title }); @@ -306,9 +302,9 @@ namespace Yavsc.Controllers e.AllowedCircles = new long[0]; ViewData ["AllowedCircles"] = CircleManager.DefaultProvider.List (Membership.GetUser ().UserName).Select (x => new SelectListItem { - Value = x.Value, - Text = x.Text, - Selected = e.AllowedCircles.Contains (long.Parse (x.Value)) + Value = x.Id.ToString(), + Text = YavscHelpers.FormatCircle(x).ToHtmlString(), + Selected = e.AllowedCircles.Contains (x.Id) }); return View (e); } diff --git a/web/Helpers/YavscHelpers.cs b/web/Helpers/YavscHelpers.cs index 984f2626..b975bc5e 100644 --- a/web/Helpers/YavscHelpers.cs +++ b/web/Helpers/YavscHelpers.cs @@ -21,6 +21,32 @@ namespace Yavsc.Helpers /// public static class YavscHelpers { + /// + /// Formats the circle. + /// + /// The circle. + /// C. + public static HtmlString FormatCircle (Circle c) + { + if (c.Members!=null) + if (c.Members.Length > 0) { + TagBuilder i = new TagBuilder ("i"); + i.SetInnerText (String.Join (", ", c.Members)); + return new HtmlString (c.Title+"
\n"+i.ToString()); + } + return new HtmlString (c.Title); + } + /// + /// Formats the circle. + /// + /// The circle as Html string. + /// Helper. + /// C. + public static HtmlString FormatCircle(this HtmlHelper helper, Circle c) + { + return FormatCircle (c); + } + private static string siteName = null; /// /// Gets the name of the site. diff --git a/web/Views/Account/Circles.aspx b/web/Views/Account/Circles.aspx index e38a21ad..ec6f0b71 100644 --- a/web/Views/Account/Circles.aspx +++ b/web/Views/Account/Circles.aspx @@ -13,12 +13,11 @@ <% int lc=0; - foreach (SelectListItem ci in (IEnumerable) ViewData["Circles"]) { lc++; %> -row" id="c_<%=ci.Value%>"> -<%=ci.Text%> + foreach (var ci in (IEnumerable) ViewData["Circles"]) { lc++; %> +row" id="c_<%=ci.Id%>"> +<%=Html.FormatCircle(ci)%> - " class="actionlink rowbtnrm"/> - " class="actionlink rowbtnvw"/> + " class="btnremovecircle actionlink" cid="<%=ci.Id%>"/> <% } %> @@ -33,13 +32,13 @@ $("#tbc").stupidtable();
@@ -87,9 +86,38 @@ $("#tbc").stupidtable(); $("#Err_ur_IsApprouved").text(""); } function clearCircleValidation() {} + function removeCircle() { + message(false); + var id = $(this).attr('cid'); + $.ajax({ + url: "<%=Url.Content("~/api/Circle/Delete/")%>"+id, + type: "GET", + success: function (data) { + // Drops the detroyed circle row + $("c_"+id).remove(); + }, + statusCode: { + 400: function(data) { + $.each(data.responseJSON, function (key, value) { + var errspanid = "Err_cr_" + value.key.replace("model.",""); + var errspan = document.getElementById(errspanid); + if (errspan==null) + alert('enoent '+errspanid); + else + errspan.innerHTML=value.errors.join("
"); + }); + } + }, + error: function (xhr, ajaxOptions, thrownError) { + if (xhr.status!=400) + message(xhr.status+" : "+xhr.responseText); + else message(false); + }}); + } function addCircle() { + message(false); var circle = { title: $("#title").val(), users: $("#users").val() } ; $("#title").text(''); $("#users").val(''); @@ -98,7 +126,8 @@ $("#tbc").stupidtable(); type: "POST", data: circle, success: function (data) { - $("#users option:last").after($('')); + // Adds a node rendering the new circle + $("#tbcb").append(""+circle.title+"
"+circle.users+""); }, statusCode: { 400: function(data) { @@ -121,6 +150,7 @@ $("#tbc").stupidtable(); function addUser() { + message(false); var user={ UserName: $("#ur_UserName").val(), Name: $("#ur_Name").val(), @@ -174,6 +204,7 @@ $("#tbc").stupidtable(); $(document).ready(function () { $("#btnnewuser").click(addUser); $("#btnnewcircle").click(addCircle); + $(".btnremovecircle").click(removeCircle); }); diff --git a/web/instdbws.sql b/web/instdbws.sql index e648f3b8..84385232 100644 --- a/web/instdbws.sql +++ b/web/instdbws.sql @@ -680,11 +680,12 @@ COMMENT ON COLUMN circle.public IS 'true when this circle is a public circle, fr CREATE TABLE circle_members ( - circle_id bigint NOT NULL, - member character varying NOT NULL, + circle_id bigserial NOT NULL, + member character varying (255) NOT NULL, + applicationname character varying (255) NOT NULL, CONSTRAINT circle_members_pkey PRIMARY KEY (circle_id, member), - CONSTRAINT circle_members_member_fkey FOREIGN KEY (member) - REFERENCES users (pkid) MATCH SIMPLE + CONSTRAINT fk_circle_members_users FOREIGN KEY (member, applicationname) + REFERENCES users (username, applicationname) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE ) WITH ( diff --git a/yavscModel/Blogs/BlogEntryCollection.cs b/yavscModel/Blogs/BlogEntryCollection.cs index 7993f14c..9a95fc71 100644 --- a/yavscModel/Blogs/BlogEntryCollection.cs +++ b/yavscModel/Blogs/BlogEntryCollection.cs @@ -148,6 +148,7 @@ namespace Yavsc.Model.Blogs /// Gets a value indicating whether this concerns A unique title. ///
/// true if concerns A unique title; otherwise, false. + [Obsolete("And what if no title? Do you really need this test?")] public bool ConcernsAUniqueTitle { get { if (this.Count <= 1) @@ -160,6 +161,7 @@ namespace Yavsc.Model.Blogs /// Gets a value indicating whether this concerns A unique title. /// /// true if concerns A unique title; otherwise, false. + [Obsolete("And what if no title? Do you really need this test?")] public bool ConcernsAUniqueUser { get { if (this.Count <= 1) diff --git a/yavscModel/Blogs/UUTBlogEntryCollection.cs b/yavscModel/Blogs/UUTBlogEntryCollection.cs index dcd97852..b35c2ca6 100644 --- a/yavscModel/Blogs/UUTBlogEntryCollection.cs +++ b/yavscModel/Blogs/UUTBlogEntryCollection.cs @@ -33,12 +33,7 @@ namespace Yavsc.Model.Blogs /// Username. /// Title. /// Items. - public UUTBlogEntryCollection(string username, string title, - IEnumerable items = null) : base(username,items) { - if (Count>0) { - if (!(ConcernsAUniqueTitle && ConcernsAUniqueTitle)) - throw new InvalidOperationException (); - } + public UUTBlogEntryCollection(string username, string title) : base(username) { _title = title; } @@ -58,6 +53,8 @@ namespace Yavsc.Model.Blogs return string.Format ("[UUTBlogEntryCollection: " + "Title={0} User={1} Count={2}]", Title, UserName, Count); } + + } } diff --git a/yavscModel/ChangeLog b/yavscModel/ChangeLog index 3185eb96..92996237 100644 --- a/yavscModel/ChangeLog +++ b/yavscModel/ChangeLog @@ -1,3 +1,13 @@ +2015-08-20 Paul Schneider + + * BlogEntryCollection.cs: ConcernsAUniqueTitle and + ConcernsAUniqueUser are now Obsoletes + + * UUTBlogEntryCollection.cs: Drops a useless ctor + + * CircleProvider.cs: The `CircleManager` now delivers the + user's circle as a `Circle` object collection. + 2015-08-14 Paul Schneider * FileSystemManager.cs: * Fixes the dir separator usage diff --git a/yavscModel/Circles/CircleProvider.cs b/yavscModel/Circles/CircleProvider.cs index c5d46846..b3ae6ff5 100644 --- a/yavscModel/Circles/CircleProvider.cs +++ b/yavscModel/Circles/CircleProvider.cs @@ -72,7 +72,7 @@ namespace Yavsc.Model.Circles /// /// List this instance. /// - public abstract IEnumerable List(string user); + public abstract IEnumerable List(string user); /// /// Covers the specified username.