Due to a number of reasons (some of them are the flu epidemic, the release scope changes and the global warming) we could not reach all of our goals for Sense/Net 6.0 Beta 5 till December 24. We will release a source only preview – because we promised it and although the system is DANGEROUSLY UNSTABLE, the new features surely worth a look.
First and foremost the most important new features are:
Lists and Libraries
We now have a fully working Content List feature. Lists are collections of contents – much like folders – but with many powerful features in addition. Some of these are:
- Users can define extra list fields – fields that are represented on all list items regardless of content type
- The Content List View framework is a convenient way to present lists of items in many of the predefined ways like List View, Folder View or Calendar View. You can easily create your own views in a wide set of ASP.NET technologies and XSLT.
- Lists provide an easy to learn extensibility point in the system through the means of New Item Actions, List Actions (menus), Setting Actions and View Actions
- Libraries are special lists where the list items are files. For example a List of Documents is a Document Library.
Here is how a Document Library is presented in our Demo Workspace. It may look quite familiar to SharePoint users and developers. Lists are presented with the Content List Portlet now in the SenseNet.CorePortlets namespace.

Settings –> Edit Properties navigate to the Edit Action associated with the list. Inputs are bit raw :) but hell, do you see the Matrix as code too?

From the list properties, most important is Enabled (Child) Content Types and Default view. Items enlisted in the allowed child types will populate the default New Item Action list:

Items in the List can have custom fields. Select Settings –> Manage Fields to get into the Manage Fields Action. I guess it looks pretty self.explanatory

(The collection of Fields looks and behaves much like a Content List – heyy it IS a content list in the background anyway :))
As everything else in this release, the editing experience of a custom field definition is implemented with the Sense/Net 6.0 Content View and Application Model technologies. This means that you can customize parts or all of the editing experience utilizing your existing investment in the conventional Sense/Net 6.0 portal development technology.

Custom fields then appear on the New Item form of the Lists
Beyond managing, extending and filling in with items, lists also have to be presented somehow. This is the Content List View framework – the pendant of the Content View technology for individual content types.

Views can be built on many different ways:
- markup only ASCX or
- XSLT or
- a custom subclass of our ListView or
- a User Controls with code behind.
Select Settings –> Manage Views to see something already familiar: a List of Views assigned to the Document List.

Views can have properties that define their runtime behavior. Configuring a View is practically the same thing as editing a content’s property page. (Yes – before I forget to mention, from Sense/Net 6.0 Beta 5 POCOs can be Contents too, they don’t have to subclass the GenericContent class, we call it Virtual Content Type Framework.)

My Little Custom Fields just appeared.

Our default ConntentListViews are very simple and easy to customize, here is the code for a ListView with to columns
<%@ Control Language="C#" Inherits="SenseNet.Portal.UI.ContentListViews.ListView" %>
<sn:ListGrid ID="ViewBody" DataSourceID="ViewDatasource" runat="server" >
<LayoutTemplate>
<table class="viewBody">
<tr id="Tr1" runat="server">
<th>Name</th>
<th>Modified by</th>
</tr>
<tr runat="server" id="itemPlaceHolder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<sn:SmartMenu NodePath='<%# Eval("Path") %>' runat="server" >
<a href='<%# Eval("BrowseActionUrl")%>'><%# Eval("GenericContent_DisplayName") %></a>
</sn:SmartMenu>
</td>
<td><%# Eval("GenericContent_ModifiedBy") %><td>
</tr>
</ItemTemplate>
</sn:ListGrid>
<asp:Literal runat="server" id="ViewScript" />
<sn:SenseNetDataSource ID="ViewDatasource" runat="server" />
ContentQuery is now Lucene.Net based
This means that it is much faster plus apart from the previous XML Query, you can use the Lucene Query syntax as well.
More to come as this is just the half of it, next time we dig deep in the code and the means of extensiblity.
The eval package will be on codeplex.com in a day or so, so check back often if you are interested.
bb08414d-c80a-4ab3-b469-56b559a4f105|3|5.0