Hi all,
This is to let you know that Sitefinity 7.0 Beta 2 is available for download on this link. In addition to what was released in Beta1, this build also includes:
Also:
Note, that this build is not production ready and upgrades from it will not be supported. For a list of breaking changes and upgrade instructions, see this post. Please send us your feedback and issues reports, and will try to incorporate them in the official release coming in a few weeks.
Instructions on the new features are below:
RELEASE NOTES Related Content To relate News to Events:
The same can be done for any content type supporting Custom Fields.
Media fields (images, videos, files) in Pages To relate Pages to Images:
The above can be done to associate videos and files as well.
HTML5 Player for Videos Telerik's Media Player is used for playing videos in the Backend and Frontend Video widgets. It offers support for all HTML5 video formats such as: MP4, WebM, Ogv, and removes the current limitation for wmv files only. Users can upload custom video thumbnails. Note: if you upgrade to 7.0, you need to go to Settings>Advanced> Libraries and enter “Html5” in properties “UploadMode” and “MediaPlayerMode”.
Revision History in Dynamic Content Types Revision log is stored for changes in Dynamic Content Items (created with Module Builder). To see it, to go to the grid with dynamic content items, and click on Actions> Revision History.
Ability to edit layout placeholder labels in Layout and Content Placeholders To add a label to a Layout Element, click on Edit Layout Element, and go to Tab “Classes&Labels”. In section Labels, enter a label for each column in the layout element, and click on Done. From this moment on, the label will show to users editing a Page with this layout element. The id of a Master Page Content Placeholder will be displayed as label to users editing a Page based on this master page. To add a custom descriptive label, enter your text between the opening <asp:ContentPlaceHolder> and closing </asp:ContentPlaceHolder> tags. Personalization per User Role In Personalization, Segments can be created based on filter by User roles.
Search: Ability to exclude Pages and Content Block Widgets from Sitefinity Search To exclude a Page form Sitefinity search, to go Titles and Properties and uncheck option “Allow site search to index this page”. To exclude a Content Block widget from search, go to Widget Edit>Advanced and set property “ExcludeFromSearchIndex” to “true”.
Page Templates: Option to set content widget to be editable on the Pages based on the template When editing Content Widget on a Page Template, you can click on More and select “Make editable in page”. From this moment on, this widget will be editable by users working with Pages based on this Page Template.
Multisite: Option to copy a page between sites In multisite mode, when Duplicating a page, users see option to select a Site to which the Page should be duplicated.
We look forward to receiving your feedback,
Sitefinity Team
Notes:
docs.google.com/.../edit
...is it safe to do "test" upgrades on our existing sites to see what happens?
Hi Steve,
Thank you very much for time you have spent with the beta release and the feedback!
About the "Disable the limit of active simultaneous backend users" and "Automatically logout backend users from other HTTP clients on login" settings - what you describe is the case where the second option will work preventing the dialog from appearing right after you have entered your credentials and clicked on the login button but the first option that prevents the dialog in all other cases will not work because by design it only works with unlimited users license or when windows authentication is used.
Oh good, we have one of those unlimited licenses, fantastic...this will make so many people happy.
Can someone please post some details on the new related content API(s)...I'd like to have a go at those as well.
Okay so I tried an upgrade...needed to fix a ton of service stack usings, but usually just removing the nested namespaces and changing to just "using ServiceStack;"....so...sweet :)
However the site doesn't fire up...I get this error Server Error in '/' Application. Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [NullReferenceException: Object reference not set to an instance of an object.] Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +1400 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +416 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +504 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +453 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +1474 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +416 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +504 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +453 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +504 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +453 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(String relativeFilePath, Func`2 elementFactory, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isDefault) +208 Telerik.Sitefinity.Configuration.Data.<>c__DisplayClass17.<LoadCollectionElement>b__10() +175 Telerik.Sitefinity.Configuration.<>c__DisplayClass1.<Unload>b__0() +41 System.Lazy`1.CreateValue() +416 System.Lazy`1.LazyInitValue() +152 System.Lazy`1.get_Value() +75 Telerik.Sitefinity.Configuration.ConfigElementLazyItem`1.get_Element() +114 Telerik.Sitefinity.Configuration.ConfigElementDictionary`2.TryGetValueInternal(TKey key, TElement& element) +101 Telerik.Sitefinity.Configuration.ConfigElementDictionary`2.TryGetValue(TKey key, TElement& value) +40 Telerik.Sitefinity.Configuration.ConfigElementDictionary`2.GetElementByKey(String key) +149 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +2331 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +416 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +504 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +453 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +1474 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +416 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo) +504 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, UpgradingInfo upgradingInfo, Boolean isNew, Boolean validateTagName) +453 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadSectionFromReader(ConfigSection section, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean checkForUpgrade, UpgradingInfo& upgradingInfo) +335 [ConfigurationErrorsException: Unable to load config section "librariesConfig"] Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadSectionFromReader(ConfigSection section, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean checkForUpgrade, UpgradingInfo& upgradingInfo) +441 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadSectionFromFile(ConfigSection section, ConfigPolicyHandler policyHandler, String policyName, Boolean withUpgrade) +130 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadSection(ConfigSection section, ConfigPolicyHandler policyHandler, String policyName) +152 Telerik.Sitefinity.Configuration.ConfigSection.Initialize(ConfigProvider provider, ConfigPolicyHandler policyHandler, String policyName, Boolean singlePolicy) +361 Telerik.Sitefinity.Configuration.ConfigSection.Initialize(ConfigProvider provider) +45 Telerik.Sitefinity.Configuration.Config.GetSectionInternal(Type sectionType, Boolean safeMode) +229 Telerik.Sitefinity.Configuration.Config.GetSectionPrivate(Type sectionType, Boolean safeMode) +175 Telerik.Sitefinity.Configuration.Config.GetSectionPrivate(Boolean safeMode) +104 Telerik.Sitefinity.Configuration.Config.Get(Boolean safeMode) +85 Telerik.Sitefinity.Configuration.Config.Get() +80 Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute..cctor() +47 [TypeInitializationException: The type initializer for 'Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute' threw an exception.] Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute..ctor() +0 BuildUp_Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute(IBuilderContext ) +140 Telerik.Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context) +42 Telerik.Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) +319 Telerik.Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) +260 Telerik.Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) +372 [ResolutionFailedException: Resolution of the dependency failed, type = "Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute", name = "(none)". Exception occurred while: Calling constructor Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute(). Exception is: TypeInitializationException - The type initializer for 'Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute' threw an exception. ----------------------------------------------- At the time of the exception, the container was: Resolving Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute,(none) Calling constructor Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute() ] Telerik.Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides) +435 Telerik.Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides) +50 Telerik.Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) +48 Telerik.Microsoft.Practices.Unity.UnityContainerExtensions.Resolve(IUnityContainer container, ResolverOverride[] overrides) +134 Telerik.Sitefinity.Abstractions.ObjectFactory.Resolve() +107 Telerik.Sitefinity.Modules.Libraries.LibrariesModule.Initialize(ModuleSettings settings) +692 Telerik.Sitefinity.Services.SystemManager.InitializeModule(ModuleSettings settings, InstallContext installContext, Nullable`1 start, Boolean skipLoading) +1114 Telerik.Sitefinity.Services.SystemManager.Initialize() +2281 Telerik.Sitefinity.Abstractions.Bootstrapper.RegisterRoutes() +1026 Telerik.Sitefinity.Abstractions.Bootstrapper.Bootstrap() +370 Telerik.Sitefinity.Web.SitefinityHttpModule.Init(HttpApplication context) +130 System.Web.Routing.UrlRoutingModule.System.Web.IHttpModule.Init(HttpApplication application) +10 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +418 System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 [HttpException (0x80004005): Resolution of the dependency failed, type = "Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute", name = "(none)". Exception occurred while: Calling constructor Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute(). Exception is: TypeInitializationException - The type initializer for 'Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute' threw an exception. ----------------------------------------------- At the time of the exception, the container was: Resolving Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute,(none) Calling constructor Telerik.Sitefinity.Modules.Libraries.Web.LibraryRoute() ] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9885044 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009
Hey, Steve we will provide more details on the related content API by the end of this week -since we are still changing and adding some of the publicly exposed methods.
Hi Steve, we were able to identify the cause of the upgrade problem reported above.
It has to do with the fact that you customized the backend definitions for Images (ImagesBackendView ), and in this release we introduce automatic filtering by custom taxonomy in this section. So, CategoryFilter element is not any more in the ByCategory section.
The workaround is to remove the following lines from LibrariesConfig.contentViewControls.ImagesBackend.views.ImagesBackendList.config: <section name="ByCategory"> <items> <item pageSize="100" name="CategoryFilter" /> </items> </section>
We will also think of a general solution.
Hope that helps, let us know if you discover more problems with the upgraded project.
-Kalina
I've gone ahead and tested some of the 7.0b2 features. You can find my feedback here: docs.google.com/.../edit
Getting more and more excited about this release. Keep up the great work.
@Caleb:
1) I haven't tried this at all, but I assume it would work...if you dont want them to resize could you not just hide the entire element with CSS?...might be tricky as you'd need to do the draghandle as well in the designer as well the backend sizes you show in your image. I do support the reset idea though...some "editors" are near blind and shouldn't be editing anything outside of just text changes.
2) GOOD CATCH ON THE CUSTOM LAYOUTS NEEDING LABELS!...does this work, or was it a question by you?
3) Exclude navigation should be removed from search as of 6.3.5023 (internal build)...maybe the option isn't there because it's already happening, or maybe the updated code just isn't in there *yet? www.sitefinity.com/.../Sc1miIWhwUabWHOzTGS5sw
4) Can you post what you did related to the "Buggy" part? Seems okay on my instance?
1) Agreed. something as simple as this seems to be a good hackfix for now: .sfPageEditor .sfLayoutWidthSlider display: none; .sfLayoutPropsContainer #columnList display: none;
2) It works, just making sure that's how we should be using labels.
3) Awesome, that's good to know.
4) I can try and get a screencast of it later but here is what I'm doing:
Add navigation and content block to the template. Select More -> Make editable in page. Publish
Go back into the page and I see that the content block shows "editable in pages" but the navigation doesn't have the visual callout (it still works and shows that it's editable by clicking the more button).
The other bug I'm having is I can't click on the "View Where widget is edited". I've tested in chrome and firefox. The javascript drag functionality seems to be preventing this from triggering. I've tested this a bit more and it might be a style conflict as it worked on the default template but not my custom one.
Hello Caleb,
about the naming of content place holders you are completely correct. You just need to add the data-placeholder-label attribute and that's it.
full example with the cols and etc:
<div runat="server" class="sf_cols"> <div runat="server" class="sf_colsOut sf_1col_1_100" data-placeholder-label="Footer"> <div runat="server" class="sf_colsIn sf_1col_1in_100"> </div> </div> </div>
Also if you use .master file you have 2 options.
The id of the <asp:ContentPlaceHolder ID="LabelHeaderForExample" runat="server" /> will be shown as label. But if you want a label with spaces and etc you can put a literal control inside the contentPlaceHolder that will be used as label :
<asp:ContentPlaceHolder ID="Header" runat="server"> Header goes here </asp:ContentPlaceHolder>
(the priority is.. first to check is there literal control inside the content place holder and if there is none to use the ID)
Hi,
Regarding your question for the CustomFields in Pages and the setting of the css class attribute of the body tag. There are two ways you can go about solving this problem (here is a download link containing examples for both options).
1. The first option is directly implementing your logic in your master page file. Here we need to set the body tag of the master page file to have an ID and a runat='server' attribute so that we can reference is from the master pages' codebehind.
2. The second option is subscribing to the IPagePreRenderCompleted event of the EventHub class. I've done this in the Global.asax file ( this example also includes how you can add support for Facebook Open Graph - can be adapted to the first example with the master page file ).
Hi Kami, unfortunately we haven't fixed this in 7.0 but we will try to do this in some of the 7.0 weekly hot fixes soon after the release.