ChangeLog Creuna.Platform =============================================================================== Definitions BUG - Fixed bug CHG - Minor not breaking change BCH - Non interface compatible breaking change ENH - Enhanced feature NEW - New feature =============================================================================== Changes for V4.0.0.0 - 2010-02-15 =============================================================================== **** Creuna.* BCH: All code for non EPiServer components are removed and the code is donated to the nJupiter project http://code.google.com/p/njupiter/ **** Creuna.Cms.EPiSrvr.* **** Creuna.EPiSrvr.* BCH: All EPiServer components are now using nJupiter =============================================================================== Changes for V3.14.0.0 - 2010-02-10 =============================================================================== **** Creuna.DataAccess.Users BUG: Fixed a bug that made the GetPropertySchema method crash when application started (sometimes). BUG: UsersDAOMembershipProvider locally cached an object that could result in that old values could be rewritten when a user was saved BUG: HybridMembershipProvider could not save users to primary provider that had an non-Guid user identity **** Creuna.UI.Controls BUG: Made InnerSpan of WebAnchor with NoLink=true write out the ID if RenderId is true BUG: Made InnerSpan of WebAnchor with NoLink=true write out attributes added to the WebAnchor ENH: Implemented VisibleLevels in WebNavigation, returns the number of visible levels in the navigation tree **** Creuna.Cms.EPiSrvr NEW: PropertyCompareFilter added ENH: EPiServer.Web.WebControls.SearchDataSource.PageSearch..Select suddenly does not accept null values and throw null exeptions (!) so a workaround for this is now added **** Creuna.Cms.EPiSrvr.PortletFramework ENH: Portlet Manager enhanched to be compatible with migrated EPiServer 4 properties. ENH: A workaround for EPiServer bug #177965 was added to get it to work with EPiServer CMS 5 R2 SP2 **** Creuna.Cms.EPiSrvr.Services.Calendar NEW: New class converted for EPiServer 5 =============================================================================== Changes for V3.13.0.0 - 2009-09-30 =============================================================================== **** Creuna.UI.Controls ENH: In the pageing control it is now possible to change the number of pages shown, it was hard coded to 5 before. BUG: Made checklist controls care about the Enabled property of ListItem. ENH: Made it possible to override the rendering of the label in checklist controls. **** Creuna.Configuration NEW: Config object now have a method called GetConfigurationSectionHandler that can read System.Configuration.IConfigurationSectionHandler configurations. **** Creuna.DataAccess.Users ENH: It is now possible to unload properties for a specific context for a user. Can be useful when overriding a UsersDAO implementation and you are fetching a context from another data source and for example want to unlaod it before you send it back down to the main implementation. **** Creuna.EPiSrvr.UI CHG: The GetPage method in the PageHandler does no longer throw an exeption if a specific language branch does not exist. **** Creuna.Cms.EPiSrvr.PagePropertySerializer NEW: Class added. Contains functionality to serialize a EPiServer PageData to for example JSON or XML. **** Creuna.Cms.EPiSrvr.Services.Newsletter **** Creuna.EPiSrvr.Services.Newsletter BUG: In the alternative content of the mail the link back to the published newsletter used the fetching adress rather than the real adress to the page. This bug is now fixed. **** Creuna.EPiSrvr.Services.Newsletter BUG: NewsletterHandlerImpl does no longer que up newsletters when one newsletter failing. **** Creuna.UI.Web.CssCompressor BUG: Fixed a bug related to invalid if-modified-since-dates sent by IE6 Changes for V3.12.0.0 - 2009-06-08 =============================================================================== **** Creuna.Services.Forum BCH: The interface in the ForumDao is slightly changed. Now you have to specify the mandatory fields already in the CreateCategoryInstance and CreatePostInstance methods instead of doing it when you save a category or a post. **** Creuna.DataAccess.Users BCH: UsersDAOImplDS moved to an own assembly Creuna.DataAccess.Users.DirectoryService.UsersDAO so Creuna.DataAccess.Users no longer shall have any dependencies to Creuna.DataAccess.DirectoryService BCH: The Cache handeling make no longer use of inheritance, insted the cache handler is a composition object on the UsersDAO object so it is possibe to use other caching handlers than the generic one. NEW: New cache handler added: HttpRuntimeUserCache which make use of the System.Web.Caching.HttpRuntime cache. Please take a look in the Creuna.DataAccess.Users.config file in the Shared Resources project for examples how to configure, or how to add your own cach hadler. **** Creuna.UI.Web.Syndication NEW: Factory Method added to the FeedType class Changes for V3.11.0.0 - 2009-04-17 =============================================================================== **** General BUG: Fixed code to follow new coding standard NEW: Added ReSharper 4.5 file with new coding standard **** Creuna.UI.Controls BCH: Old legacy-ascx-files removed for Paging, GeneralListing and PagedListing **** Creuna.UI.Web.CssCompressor ENH: Fixed support for Virtual Path Providers **** Creuna.UI.Web.EmailObfuscator BUG: Fixed support for emails with querystrings **** Creuna.DataAccess.Users BUG: Small bugfixes **** Creuna.UI.Web.Syndication NEW: Support for custom elements added. NEW: Support for atom feeds added NEW: Syndication Reader added with support for RSS 0.9-2.0 and Atom Changes for V3.10.0.0 - 2009-03-18 =============================================================================== **** Creuna.Cms.EPiSrvr NEW: New class BuiltInPropertyName containing all built in property names in EPiServer ENH: Support for configurable culture and ui-culture added to DomainConfig NEW: XFormControl added. A web control that inherits the equivalent control from EPiServer but that generate div-tags instead of tables ENH: In PagedListing it is now possible to set paging controls externaly NEW: An IComparer named PropertySorter added. With this you can sort PageData objects by a given property, but also specify a fallback property to sort by if the first specified property is not set. NEW: GetUnifiedFile method added to the PropertyHandler **** Creuna.Cms.EPiSrvr.Services.Newsletter ENH: Now possible to configure the newsletter tab from the parent page of the newsletter page. ENH: Newsletter tab now shows number of times sent and last time sent for "sharp" newsletters. BUG: With the configuration taken from the parent page it is possible that the subscriber list is empty, thus the newsletter tab now tells that a newsletter did not get sent if the subscriber list is empty. BUG: Fixed a bug where strangely specified urls in the newsletter HTML crashed the sending of the newsletter. BUG: Fixed a bug where URLs in tags got encoded wrongly in the HTML. ENH_ Implemented a bounce service for the netstar implementation for EPiServer to send bounces to. ENH: Made the netstar implementation find the first image in the newsletter and attach the email of the user to it, thus making it possible to see a unique reader count. BUG: The dispatcher implementations didn't put a trailing slash on the url of the newsletter page itself (the "see this on the web" link), making EPiServers FriendlyUrl redirect adding this trailing slash, and making StatisticsTab disappear. ENH: Made Go.aspx aware of the email parameter, thus registering unique reader count. ENH: Go.aspx now handles the case where the subscriber is gone from the subscriber data source. NEW: NewsletterHandler now has a method GetSubscribersByStatus to retrieve users with a certain status, like HardBounce. NEW: Implemented a new tab, StatisticsTab, that shows information about sending of newsletters, including unique readers, bounces, total number of reads, and how many times links have been clicked. Also it is capable of exporting this data. BUG: Handled various cases throughout the project where users had disappaered from the data source and thus causing null reference exceptions. ENH: Made better error handling in the dispatching of newsletters, thus making the Scheduled Job not abort on first failure to send a newsletter, making the rest of newsletter never reach the point of being sent. Now the Scheduled Job logs failed send attempts and also tells what is wrong. Not published, not accessible BUG: Fixed a bug in Scheduled Job where it delayed its next execution with the configured interval when you sent a newsletter through the newsletter tab. BUG: Fixed so that new newsletter tab and the statistic tabs are shown in mentioned order. NEW: Added the possiblility to add the "EPiServer-Mail-OrderMail-Version" header to the order mail in the netstar dispatcher. **** Creuna.Cms.EPiSrvr.PortletFramework BUG: Fix a workaround for the language translation so texts in the GUI gets translated even if they are not in the EPiServer system folder NEW: Support added so it now is possible to configure PageType and Category in the PortletAttribute CHG: Changed so if a PortletControl is added as a user control to a page the PortletPage property will be sett to CurrentPage instead of null BUG: Bug fixed, EditPortlet crached when EPiServers UIUrl contained a tilde (~) **** Creuna.DataAccess.Users NEW: Does now have support for MembershipProvider and ProfileProvider, also contains a HybridMembershipProvider and a HybridMembershipUser that wrap a UsersDAO-user around any another typ of MembershipUser CHG: All indexers are now case insensitive NEW: A lot of new Common Property Names added CHG: Changed the User object so it is immutable NEW: XmlSerializedProperty added. Similar to the BinaryProperty but uses Xml Serialization instead of Binary Serialization **** Creuna.Util ENH: ImageScale does now support configurable values for the image quality parameters SmoothingMode, InterpolationMode and PixelOffsetMode BUG: Bug fixed in Creuna.Util.Web.Mail.Attachment, attachment never used the content type if it was explicitly set **** Creuna.UI.Controls NEW: Several control adapters added ENH: In PagedListing it is now possible to set paging controls externaly CHG: Removed implementation for page validation from WebButton. It didn't work anyway since Microsoft has make it impossible to fully implement this in custom controls by closing down their own interface and make it private :( **** Creuna.DataAccess ENH: DataSource can now get its connection strings from the ConfigurationManager Changes for V3.9.0.0 - 2009-01-23 =============================================================================== **** Creuna.EPiSrvr.UI ENH: Use LoadRawPageData = true by default in the navigation object to increse performance. BUG: Changes in the HtmlWriter used by the TemplatePage to make posting work with friendly urls that does not end with a slash. **** Creuna.UI.Web.Syndication NEW: New componenet that handle syndications. Mainly RSS-feeds in the first version. **** Creuna.Util BUG: Fixed a bug in UrlHandler, namely that no UrlHandler method took care of the case where a URL contained fragment information, #. NEW: Added the Headers property to the class Mail, to be able to send custom headers in emails Changes for V3.8.0.0 - 2008-10-21 =============================================================================== **** Creuna.Util.Web NEW: IndenterModule, experimental HTTP Module added, adds an http-filter to all html requests that will indent all well formed XHTML. Use with care. **** Creuna.EPiSrvr.UI ENH: The CrossSiteRedirectionHandler can now exclude Page Types too. **** Creuna.Cms.EPiSrvr.PortletFramework BUG: Small fixes to work with EPiServer CMS 5.1 R2 **** Creuna.Configuration NEW: New methods to fetch attribute arrays. Changes for V3.7.0.0 - 2008-09-11 =============================================================================== **** Creuna.UI.Controls NEW: New abstract base class for navigation controls calles Creuna.UI.Controls.Web.WebNavigation, which makes it possible to make more generic navigations and to mix different implementations in the same navigation. A new delegate is added named CreateWebNavigationControl that returns the current implementation. **** Creuna.EPiSrvr.UI **** Creuna.Cms.EPiSrvr CHG: In Navigation, if the delegate to get the anchor defines CssClass, NavigateUrl and Text, the properties do not get overwritten. In the case of CssClass we append to CssClass instead of overwriting it. In the case of NavigateUrl and Text we do not evaluate the delegates for getting the url and text if the properties are already set. BCH: Navigation now inherits from an abstract base class in Creuna.UI.Controls.Web.WebNavigation. All delegates are moved to this namespace and all event arguments are renamed with a "Web" prefix. Changes for V3.6.0.0 - 2008-08-11 =============================================================================== **** Creuna.Cms.EPiSrvr.Services.Poll NEW: Added a setting, redirectToSelfOnVote, that makes us not have a latent POST request in the page after voting. **** Creuna.Cms.EPiSrvr.Services.Newsletter NEW: Added the possibility to specify user name and password for smtp server, in Creuna.Cms.EPiSrvr.Services.Newsletter.config just like it is possible in System.config **** Creuna.Util BUG: Removed the sending of two extra \r\n in SmtpClient that sendmail on Linux didn't like and that we saw no reason to keep. Changes for V3.5.1.0 - 2008-07-04 =============================================================================== **** Creuna.EPiSrvr.UI NEW: SimpleAddressRedirectionHandler, added support for redirect of aspx-files. 404-handling changed when asp.net files are requested. **** Creuna.Cms.EPiSrvr NEW: Added the possibility to exclude paths to be rewritten inside the HTML that EPiServer rewrites. Also added the possibility to exclude an entire page request to not be touched at all. Use the "friendlyUrl/nonRewrittenUrls" and "friendlyUrl/untouchedPaths" settings in Creuna.Cms.EPiServer.config. **** Creuna.Cms.EPiSrvr.Services.Newsletter NEW: Added the possibility to specify username and password for the url from which the Dispatchers retrieve the html to build up the newsletter to send. BUG: Fixed so that friendly urls are correctly "re-based" as all urls touched by Friendly Url automatically are relative. NEW: Added the possibility to specify a user agent for the fetch request of the newsletter. Changes for V3.5.0.0 - 2008-07-01 =============================================================================== **** Creuna.EPiSrvr.PortletFramework BUG: Minor fix to make css changes on portlets (ie theme changes and background images) appear in the portlet manager immediately **** Creuna.Cms.EPiSrvr.PortletFramework BUG: Minor fix to make css changes on portlets (ie theme changes and background images) appear in the portlet manager immediately **** Creuna.UI.Controls BUG: Fixed bug i Paging where url got cut in browser due to incorrect encoding of the query string Changes for V3.4.0.0 - 2008-06-10 =============================================================================== **** Creuna.UI.Web.CssCompressor NEW: Added a HttpHandler that merges all css imported with @import to one file, and caches it **** Creuna.Cms.EPiSrvr.PortletFramework BUG: Some fixes for FURL in EPiServer 5 **** Creuna.EPiSrvr **** Creuna.Cms.EPiSrvr ENH: DateFilter now has the possibility to use a delegate to determine the property name ENH: PageDataCollectionSorter now has the possibility to use delegates to determine the property names **** Creuna.Cms.EPiSrvr NEW: Added the property CookieDomain to DomainConfig NEW: Added the possibility to make the start publish date and create date in the edit UI of EPiServer be empty by default by using the "editUI/pageStartPublishEmpty" and "editUI/pageCreatedEmpty" settings in Creuna.Cms.EPiServer.config. **** Creuna.Cms.EPiSrvr.Services.Newsletter NEW: Ported the CMS 4 project to a new CMS 5 project **** Creuna.UI.Controls NEW: New class WebScriptHolder makes it possible to place scripts outside head. If such an object exists on the page ControlHandler.RegisterClientScriptBlock places the script there, otherwise the WebHead, and lastly it resorts to ASP.NET default behaviour. Changes for V3.3.0.0 - 2008-05-02 =============================================================================== **** Creuna.Configuration BUG: Major memory bug fixed in filewathcing functionality. **** Creuna.UI.Controls NEW: New class HtmlHandler that can let you automatically hyperlink informal urls, strip all HTML tags from a string or convert line breaks to
. NEW: WebButton now has a property IsClicked, than can be checked before the actual Click event occurs. **** Creuna.EPiSrvr **** Creuna.Cms.EPiSrvr BCH: DataBindOnLoad property has changed name to AutoDataBind because the auto databinding is not done on load but on prerender because of the post back events. BUG: Possible crashes in template page fixed, when DomainConfig is loaded before the request object was initilized the page could crash in some rare situations. NEW: CrossSiteRedirectionHandler added. NEW: Now possible to specify an AccessLevel for Navigation **** Creuna.Cms.EPiSrvr.PortletFramework **** Creuna.EPiSrvr.PortletFramework BCH: PortletPageMasterBranch removed from PortletBase, user fallback in propertyhandler instead. NEW: New Creuna.Cms.EpiSrvr.Web.Hosting.VirtualPathSqlProvider using SqlServer as file storage. **** Creuna.Cms.EPiSrvr.Services.Poll NEW: Ported the CMS 4 project to a new CMS 5 project **** Creuna.UI.Controls.Web.WebFlash ENH: Now uses SwfObject2Emebeded as default. SwfObject2 is now updated to v1.0 sharp **** Creuna.UI.Web.EmailObfuscator NEW: New component that works as a http-filter and obfuscate email addresses in html-pages. **** Creuna.Cms.EpiSrvr.Web.Hosting **** Creuna.Cms.EpiSrvr.Web.Hosting.Tests NEW: Alpha version of VirtualPathSqlVersioningProvider added Changes for V3.2.0.0 - 2008-02-18 =============================================================================== **** All projects ENH: Lock-statements optimized and fixed ENH: Fixed so web pathes now are relative, not absolute, so it will be easier to customize web pathes. **** Creuna.Configuration BUG: Bugfixes in the filewatcher functionality. The configuration handler shall no longer hang or crach if a non valid xml is saved. **** Creuna.DataAccess BUG: Bugfixes for datareaders. **** Creuna.DataAccess.Users CHG: SetPassword no longer saves the user **** Creuna.Util ENH: Creuna.Util.Globalization.CultureHandler does now have shortcuts for CurrentCulture and CurrentUICulture **** Creuna.UI.Controls BUG: Fixed bug in WebLinkButton where NoLink=true resulted in an unencoded string ENH: Paging is now a templated control, so you can make HTML of your own choice now, or just use the builting defaults. NEW: Paging now has an additional paging mode: Anchors. ENH: StrictHtmlTextWriter now fixes IDN encoded URLs. ENH: StreamImage now works with Virtual Path Providers BUG: WebForm fixed to work correctly even with .NET 2.0 SP1 BUG: WebRadioButton does now works correctly again, no ugly spans or other Microsoftish HTML-rubbish **** Creuna.Cms.EPiSrvr ENH: Now it is possible to specify in the optional configuration file Creuna.EPiSrvr.Cms.config the default value of "PageChangedOnPublish". ENH: Now it is possible to specify in the optional configuration file properties to hide from the edit interface of EPiServer. NEW: Navigation has a new property: IncludeChildrenOfRemovedNodesMode This automatically finds pages hidden under VisibleInMenu=false pages. Setting it to InSelectedPathOnly makes it suitable for generating breadcrumbs where a page in the path is hidden in the menu. ENH: Now possible to also get the filtered away items on PageDataCollection.Filter NEW: New property on Navigation: SelectedPath. Contains a PageDataCollection with all pages in the selected path. NEW: Has now a WebUFSImage that make use of EPiServers Virtual Path Provider ENH: PropertyHandler has now support for language fallback on property level, not just page level ENH: Right click menu does now work with WebForms BUG: Bug fixes in unspecified id hadling and default language handling **** Creuna.Cms.EPiSrvr.PortletFramework ENH: Does now work in EPiServer 5 **** Creuna.EPiSrvr.UI NEW: Navigation has a new property: IncludeChildrenOfRemovedNodesMode This automatically finds pages hidden under VisibleInMenu=false pages. Setting it to InSelectedPathOnly makes it suitable for generating breadcrumbs where a page in the path is hidden in the menu. ENH: Now possible to also get the filtered away items on PageDataCollection.Filter. NEW: New property on Navigation: SelectedPath. Contains a PageDataCollection with all pages in the selected path. BUG: Bugfix: The custom filters is now passed to the subnavigations ENH: PropertyHandler has now support for language fallback on property level, not just page level **** Creuna.EPiSrvr.Services.Newsletter BUG: Sending newsletter to different language branshes shall now work **** Creuna.EPiSrvr.PortletFramework ENH: Small optimisations **** Creuna.UI.Web.EmailObfuscator NEW: New project, first beta version. Runs as an http-filter an obfuscates all email-adresses on a web-page. Changes for V3.1.0.0 - 2007-11-15 =============================================================================== **** Creuna.Util BCH: DateHandler is moved from the namespace Creuna.Util.Date to Creuna.Util.Globalization **** Creuna.EPiSrvr.UI CHG: Log4net is now configured in the standard way that is recommended by Apache. Logging shall now always be done to a logger declared by the type beloning to the class from within the logging is performed, and can therewith be filtered from the namespaces hierarchy. Look at the following URLs for more information http://logging.apache.org/log4net/release/manual/introduction.html#Logger%20hierarchy http://logging.apache.org/log4net/release/faq.html#How%20do%20I%20get%20the%20fully-qualified%20name%20of%20a%20class%20in%20a%20static%20block%3f ENH: The log4net file is now watched so the logging config can be updated while the application is running. NEW: New property on Navigation: VisibleDescendants. Tells how many visible pages are in the navigation. VisibleDescendants - VisibleChildren = how many kids are in expanded menu. **** Creuna.UI.Controls ENH: WebGenericControl and all its inheritors does no longer render if they are completely empty. ENH: SWFObject in WebFlash is now updated to version 1.5 and does now support custom express install movies. ENH: WebFlash has now support for SWFObject2 http://www.swffix.org/ Both normal and embeded method are supported. Normal method will probably be default render mode when out of alpha stage. **** Creuna.Services.Forum NEW: New properties on Post: RootPostId, RootPostTitle. These properties reflect what root post a post has either through inheritance (not being a root post) or being a root post. ENH: Now possible to sort on the attribute values of posts and categories. This is done by setting the SortAttributeName property on the result configuration types. If set, it always overrides the SortProperty property. Also, if set, attributes are always loaded and the LoadAttributes property is always ignored. **** Creuna.Services.Forum.UI CHG: Creuna.Services.Forum.UI.config not mandatory anymore ENH: FlatTabularPostList now has a RootPostTitle column which can be hyperlinked through the UrlWithoutTrailingRootPostId property. If UrlWithoutTrailingPostId is not set, the Title column will be linked with the UrlWithoutTrailingRootPostId value. ENH: FlatTabularPostList now exposes a PostsSorting event which can be used to intercept what is to be sorted and change it. ENH: FlatTabularPostList can now be sorted by any property belonging to a post and not just the columns that are implemented in it. This was accomplished by removing the SortColumn property and exchanging it with the SortProperty property. ENH: FlatTabularPostList can now be sorted by any attribute belonging to a post by setting the SortAttributeName property. If this property is set, it always overrides any value set on the SortProperty property. ENH: UpdatePost can now be set to ignore updates made concurrently. This is done by setting the IgnoreConcurrentUpdate property to true. The default is false. Changes for V3.0.0.0 - 2007-09-13 =============================================================================== **** Creuna.DataAccess.Users ENH: Now it is also possible to do range searches with GreatherThan, GreatherThanOrEqual, LessThan and LessThanOrEqual also for BoolProperty, IntProperty and DateTimeProperty as the serialized form of those preserves order, which was needed for this to work. NEW: New property on AbstractProperty: SerializationPreservesOrder. Set to false if an implementation does not preserve order in its serialized form. BUG: Fixed a bug where we never searched in specific contexts BCH: Took away the Context property on SearchCriteria, as it exists on SearchCriteria.Property already. **** Creuna.EPiSrvr.UI ENH: Creuna.EPiSrvr.UI.Util.PageHandler does now handle EPiServer language settings when compiled for EPiServer 4.60 and above. NEW: Creuna.EPiSrvr.UI.Util.PageHandler does now also contain shortcuts and better overloads for FindPagesWithCriteria NEW: OnPreInit added to UserControlBase **** Creuna.EPiSrvr.PortletFramework BUG: Critical bug fixed that messed up portlet references when copying or importing pages. NEW: Copy/Paste between pages CHG: Local Portlets renamed to Page Portlets CHG: Global Portlets renamed to Site Portlets ENH: Better overview of portlets where it is also possible to see which portlets that are used on the current page and which are not. NEW: New portletpanel NEW: Possibility to remove unused portlets ENH: Better handling of Page Portlets and security so a Page Portlet cannot be added to another page than it is belonging to. NEW: Functionality to manage portlets from listings, not just from the portlet manager has been added. ENH: Better loading functionality for the portlet manager. Now it is first loaded when it is visible. NEW: Functionality to redefine portlets from Page Portlets to Site Portlets and vice versa. NEW: plus many minor updates... **** Creuna.Services.Forum ENH: Sorting is now using a secondary sort, TimePosted, when the sort key is not unique. Makes sorting on for instance Visible more predictable NEW: New method, GetNumberOfPosts, retrieves number of posts. Optionally one can specify a time interval and include or not include hidden posts in the count. **** Creuna.Services.Forum.UI: ENH: Now possible to put an "All" item in the NumberOfItemsSelector ENH: Now possible to limit the length of title in FlatTabularPostList. CHG: Now odd rows have the css class "odd" and even rows have the css class "even". It was the other way around before. ENH: FlatTabularPostList now exposes a MaximumTitleLength property. **** Creuna.EPiSrvr.Services.Noticeboard CHG: Now odd rows have the css class "odd" and even rows have the css class "even". It was the other way around before. **** Creuna.EPiSrvr.Services.FAQ CHG: Now odd rows have the css class "odd" and even rows have the css class "even". It was the other way around before. **** Creuna.EPiSrvr.Services.News CHG: Now odd rows have the css class "odd" and even rows have the css class "even". It was the other way around before. Changes for V2.1.0.0 - 2007-05-18 =============================================================================== **** Creuna.EPiSrvr.UI ENH: Now also the heading is passed through the GetNavigationItemName and GetNavigationItemLink delegates. **** Creuna.EPiSrvr.Mirroring ENH: Now supports inverting of the blnMirroringChildNodesFetchContentFromMaster property so fetch from content can be the default behaviour. ENH: Now supports automatic moving of pages in a mirrored structure. Set automaticallyMovingPages to true to enable this behaviour. ENH: Support for including the slave root in the mirroring. BUG: Minor bugfixes **** Creuna.Services.Forum NEW: New properties on Post: EffectiveCategoryId, EffectiveCategoryName. These properties reflect what category a post has either through inheritance (not being a thread) or being a thread which belongs to a category directly. NEW: New Property on Post: ParentId. Indicates the parent post of the post in the same way CategoryId indicates what category a root post belongs to. ENH: SavePost and SaveCategory now throws exception if (1) the updated item has been deleted and (2) if the item has been updated by someone else since the item was retrieved NEW: New method on ForumDao: GetDomains BUG: Bug fix of one overload of GetPost: it would crash if we didn't find a post *** Creuna.Services.Forum.UI: ENH: HierarchicalPostList can now be configured to specify a custom target for where a post should be added. The choices are the current post, the root or a specified post. This is done via the AddPostTargetLocation and AddPostTargetPostId properties. The choice is reflected in what is sent in the event arguments of the AddPost event. AddPostEventArgs is typically used when one configures an instance of AddPost. ENH: HierarchicalPostList can now be configured to specify a custom source for the reply text. The choices are the current post, the root or a specified post. This is done via the via the AddPostReplySourceLocation and AddPostReplySourcePostId properties. The choice is reflected in what is sent in the event arguments of the AddPost event, more specifically in the ReplySourcePostId property. AddPostEventArgs is typically used when one configures an instance of AddPost. BCH: AddPost now has a ReplySourcePostId property. The UseTitleFromParentPost has been renamed to UseTitleFromReplySource. ENH: Now possible to implement a custom TextFormatter, which makes it possible to write own routines for how the forum output is rendered, for instance to allow HTML or to convert textual smileys to graphical smileys. The standard implementation encodes input as HTML, converts newlines to
and automatically hyperlinks what looks like urls. ENH: AddPost and UpdatePost now both have a mandatory fields "legend" ENH: AddPost and UpdatePost now can present Author textbox after the Title and Body textboxes ENH: FlatTabularPostList now has a CategoryName column which can be hyperlinked through the UrlWithoutTrailingCategoryId property. NEW: New control: CategorySelector. Is an implementation that facilitates the choosing of categories in different scenarios. ENH: Now possible to get only children of a post, instead of retrieving the post _with_ the children in HierarchicalPostList ENH: Now possible to hide the column headers in FlatTabularPostList ENH: UpdatePost now handles concurrent updates and deletes ENH: New AuthorResolver property on HierarchicalPostList and FlatTabularPostList makes it possible for the Author text to come from another source, for instance UsersDAO. BUG: Bug fix of HierarchicalPostList: send an empty object array if GetPost returns null (fixes so that the list becomes empty after deletion of the root post) ENH: Now possible to filter on dates in HierarchicalPostList ENH: Now possible to include the body from the reply source in AddPost via the UseBodyFromReplySource property. Implementing the PostQuoter interface and setting the PostQuoter property on AddPost makes it possible to handle quoting of posts in a customized way. **** Creuna.UI.Controls BUG: Bug fix in WebRadioButtonList concerning the name attribute. In .NET 2.0 Microsoft does not add the UniqueId to the radiobutton name attribute. This is needed for WebRadioButtonList to work ENH: Added WMode property on WebFlash. The Transparent property is now obsolete. It will still work as before, but please update your code. ENH: TrailingBreak and TrailingLinefeed is now implemented in all relevant controls. **** Creuna.DataAccess ENH: Now FullTextHandler.GetContainsSearchCondition takes an ImplicitOperator parameter. The default is "And". Possible values are "And" and "Or". BUG: Bug fix of FullTextHandler.GetContainsSearchCondition not recognizing upper case OR, NOT and NEAR. Changes for V2.0.0.0 - 2007-02-21 =============================================================================== **** Creuna.Services.Forum NEW: New methods for archiving posts, that is moving threads from one category to another. Optionally one can specify until what date threads should be moved. ENH: DeletePost, DeletePosts and MovePosts now return number of affected posts ENH: DeleteCategory now return a bool signalling if a category was affected ENH: DeleteCategories now return number of affected categories BCH: GetCategory now takes a CategoryResultConfiguration, as it didn't make sense to give it a CategoriesResultConfiguration CHG: Fulltext is now Neutral by default, not US English. ENH: Comparison now has inequality operators, before it was only equal and notequal ENH: ForumSqlDao implementation: In .NET 1.1 every date sent in to API methods is assumed to be a UTC date. In 2.0 a date with the kind Unspecified is assumed to be a UTC date. A date with the kind Local is converted to a UTC date before being sent to the database. For DateTimeAttributes the logic is up to the consumer. NEW: New property on Category: Domain NEW: New property on Post: EffectivelyVisible. Tells if the post is visible from the perspective of what filter you have used when you retrieved posts. ENH: Setting the date filter properties in ThreadedPostsResultConfiguration now actually does something in the GetPost method, namely filters the first level of descendant posts ENH: Now possible to page on the first level of child posts through the GetPost overload that takes a PagingResultConfiguration BUG: A bug with how the update and delete triggers handled updates of several rows has been fixed. The bug cause the PostCountVisible and PostCountAll in the table FORUM_PostDerivedInformation to contain wrong values. **** Creuna.Services.Forum.UI: ENH: AddPost now supports reply indicators when using the UseTitleFromParentPost property ENH: Now possible to show/hide title in HierarchicalPostList ENH: Now possible to show body in FlatTabularPostList and limit the length of what is displayed ENH: Now possible to show Visible and EffectivelyVisible in FlatTabularPostList ENH: Now possible to filter on attributes via AttributeCriteria property in FlatTabularPostList ENH: Now possible to filter on user identity via UserIdentity property in FlatTabularPostList ENH: UpdatePost now includes all fields that AddPost contains ENH: AddPost, UpdatePost: now possible to hide Title field (makes Body unconditionally mandatory) ENH: HierarchicalPostList now takes virtually no viewstate at all when no buttons are visible on the control ENH: FlatTabularPostList now automatically adjusts when the paging gets out of bound. This happens when a combination of setting NumberOfItems and pressing a paging button makes us come outside the TotalNumberOfItems of the list. This is done by looping until we have items or we are at page one. Rests on the logic in PagedListing that adjusts CurrentPageNumber on out of bound situations. ENH: HierarchicalPostList can now be sorted in descending chronological order ENH: FlatTabularPostList and HierarchicalPostList now provides possibility to hyperlink the authors' names via the UrlWithoutTrailingUserIdentity property. ENH: Now possible to filter out levels in HierarchicalPostList, via Levels property. For instance blog pages might want to display the first level of posts. ENH: Now possible to set maximum length on Author and Title in AddPost and UpdatePost CHG: All -ing events can now be cancelled, by setting the Cancel property on the eventargs to true. **** Creuna.DataAccess NEW: New utility class for translating a user entered search text to a string with the format that the CONTAINS function in SQL Server requires. ENH: Unused exception classes has been excluded from the assembly BCH: Change of casing on Username to UserName to be consistent with the casing of "user name" in the rest of the namespace **** Creuna.DataAccess.Users ENH: Cascading deletes when deleting rows from USER_User (USER_Property rows are deleted automatically). Applies for USER_Context also. CHG: Fulltext is now Neutral by default, not US English. BCH: Breaking change for the SearchCriteria object. It now exposes a Property instead of Name and Value. Now it is also possible to do range searches with GreatherThan, GreatherThanOrEqual, LessThan and LessThanOrEqual. Does not work with Int, DateTime, Binary and Decimal until the serialized form of those preserves order, which is not implemented as of now. **** Creuna.Configuration CHG: ConfigKey in ConfigHandler.GetConfig is no longer case sensitive ENH: Has now support for relative paths in config. See the ReadMe.txt in the install folder for example how to use. **** Creuna.Util BCH: The config for userName and password used in Creuna.Util.Web.Mail.MailSender has been changed. The userName and password are now attributes on the smtpServer-key instead of own elements. ENH: Creuna.Util.Web.Mail.Mail is rewritten and uses base64-encoding for all UTF-8 content. **** Creuna.EPiSrvr.UI BCH: Creuna.EPiSrvr.UI.Web.Navigation has been deprecated. Please use Creuna.EPiSrvr.UI.WebControls.Navigation instead. This is a pure WebControl with no ascx, and has now better support for templating. BCH: Creuna.EPiSrvr.UI.Web.RelatedLinks has been deprecated. Please use Creuna.EPiSrvr.UI.WebControls.RelatedLinks instead. This is a pure WebControl with no ascx, and has now better support for templating. BCH: Everything beneath namespace Creuna.EPiSrvr.UI.Listings has been deprecated. Use controls with the same name under Creuna.EPiSrvr.UI.WebControls instead. These controls are no longer dependent on any ascx files. The lists are no longer put to viewstate by default. If you need to have the datasource viewstated, then set ViewStateList to true. This is almost only needed when you have form controls inside your list. BCH: ReadMoreLink.ascx removed. Please use WebAnchor instead. BCH: The event CategorySelectorPopulated in CategoryListing renamed to CategoriesPopulated CHG: The content/region-handling in Creuna.EPiSrvr.UI.WebControls.ContentFramework completely rewritten. The old version didn't manage to handle viewstate for repeaters correctly. So now there is no need to always put datasources for repeaters in viewstate if there isn't any form controls inside the repeater. ENH: PagedListing now automatically adjusts CurrentPageNumber to the highest possible page number given the total count if we get out of bound (by setting ItemsPerPage and pressing next and getting out of bound). This doesn't happen if DisablePaging is true. NEW: A LastModifed property has been added to TemplatePage. This property also checks listins objects and portlets to chack what is last changed. NEW: Config and property for SetLastModifiedHeader has been added to TemplatePage. If this is set to true, a last-modifed http-header is added to all pages NEW: Config and properties has been added for full Xhtml Content Negotiation. Can either be set for the whole server, the whole site or programatically for a speciffic page. NEW: Simple EPiServer search-API has been added to PageHandler NEW: A FindPagesOnType-method has been added to PageHandler NEW: A GetPageType(string) has been added to PageHandler. The input-string can eihter be a GUID, ID or the name of the PageType. NEW: A GetPageRelations-method has been added to the PageHandler. This will return a collection of pagerelations in the same way as the generic delete-function will do in EPiServer. NEW: A GetUrlValue/UrlValue-method has been added to the PropertyHandler. Use this for properties that can either be an external url or an internal url. This will fix a bug in EPi4.61 so you automatically will get a link to the right language branch. NEW: An abstract PropertyDropDown has been added to make it easier to buld drop down properties in EpiServer. ENH: Better support for EPi4.61 in general **** Creuna.EPiSrvr.Services.Calendar **** Creuna.EPiSrvr.Services.FAQ **** Creuna.EPiSrvr.Services.News **** Creuna.EPiSrvr.Services.Noticeboard **** Creuna.EPiSrvr.Personalization.Subscriptions BCH: Now makes use of the new listing controls in Creuna.EPiSrvr.UI. If custom versions of this control is used in your project, please update the backend and possible inheritances from the ascx files. **** Creuna.UI.Controls **** Creuna.EPiSrvr.UI **** Creuna.EPiSrvr.Services.News BCH: Changed name on property SuppressAutoDatabinding to SuppressAutoDataBinding **** Creuna.EPiSrvr.Services.Calendar BCH: CalendarListing does no longer contain any frontend. Everything is rendered from codebehind. If you have made an override of this, please remove the ascx and populate your control on PopulateListControls instead. **** Creuna.EPiSrvr.Mirroring ENH: blnMirroringDisabled EPiServer Property is no longer mandatory in EPiServer PageTypes that is using Mirroring. **** Creuna.UI.Controls BUG: Bug fix for Paging component where "..." links were shown even though buttons were active BUG: Bug fix in WebFlash.cs. It now inherits from WebGenericControl instead of HtmlGenericControl. This makes sure it renders a div tag. BCH: GeneralListing and PagedListing are now pure webcontrols, please remove the reference to the ascx's in your project and refer to the namespace instead. The lists are no longer put to viewstate by default. If you need to have the datasource viewstated, then set ViewStateList to true. This is almost only needed when you have form controls inside your list. ENH: Paging is now a pure webcontrol, please remove the reference to the ascx in your project and refer to the namespace instead. ENH: PagedListing now automatically adjusts CurrentPageNumber to the highest possible page number given the total count if we get out of bound (by setting ItemsPerPage and pressing next and getting out of bound). This happens regardless of how DisablePaging is set. ENH: WebFlash has now support for UFO which is default instead of SWF object. BCH: ControlUtils are renamed to ControlHandler BCH: IsWorthlessBrowser in ControlHandler is renamed to IsIE NEW: A new property is added to detect PreIE7-browsers NEW: A new class called WebHead has been added. Use this instead of the head element to be able to add scripts and styles to the head with the new function ControlHandler.RegisterClientScriptBlock ENH: Paging has now full support for accessable linked paging (Use Links insted of Buttons) NEW: A new more accessible WebLinkButton has been added ENH: WebButton does no longer make use of scripts in IE7 or above (?. we hope it will never be any above) CHG: WebDropDownList does now inherit directly from DropDownList in .NET2.0 and above ENH: WebForm does now add application/xhtml+xml compliant comments to all script tags **** Creuna.EPiSrvr.Services.Newsletter BCH: The PopulateSubscriberListDropDown() method now send a PageData instead of a PageReference into GetDomains to be compatible with EPi4.61 language support. CHG: Parameters to all methods that is dependent on language has been added to be compatible with EPi4.61 language support. **** Creuna.EPiSrvr.DataAccess.XmlImportExport CHG: Rewritten to support EPiServer 4.61. Not tested. Still beta. **** Creuna.EPiSrvr.UI.Properties.Specialized NEW: This special property has been added. Contains a XHTMLlongtext-property that parses its content thru Tidy.NET before saveing it to EPiServer. **** Creuna.EPiSrvr.PortletFramework NEW: The new Portlet Framework has been added to the platform Changes for V1.3.0.0 - 2006-10-13 =============================================================================== **** Creuna.EPiSrvr.UI BCH: DateFormat and DateTimeFormat removed from TemplatePage and Config. Use CultureInfo instead: myDate.ToString(DomainConfig.DateFormat) --> myDate.ToString("d") myDate.ToString(DomainConfig.DateTimeFormat) --> myDateTime.ToString("g") And to get UtcOffset use the GetUtcOffset method in .NET instead. BUG: Bug that caused the SmtpClient to throw an exception in some situations when closing the connection to smtp-server has now been fixed. **** Creuna.EPiSrvr.Services.Newsletter BCH: Total remake of this control. Not backward compatible with the old control **** Creuna.Services.Forum.UI BUG: Search functionality in FlatTabularPostList.ascx is no longer broken (was broken from 1.2.0.0) Changes for V1.2.0.0 - 2006-05-18 =============================================================================== **** Creuna.Util NEW: Own SmtpClient added CHG: MailSender now using our own SmtpClient instead of the one included in .NET