Take the community feedback survey now.
Take the community feedback survey now.
Hi Alfredo,
I'm not sure I understand your question. Could you be a bit more specific?
Sure, I have block type class like this:
using System.ComponentModel.DataAnnotations;
<pre>
using System.ComponentModel.DataAnnotations;
using EPiServer.Core;
using EPiServer.DataAbstraction;
using EPiServer.DataAnnotations;
using EPiServer.Web;
using EPiServer;
using NextGen.CMS.Models.Media;
using EPiServer.Shell.ObjectEditing;
using EPiServer.ServiceLocation;
using System;
namespace NextGen.CMS.Models.Blocks.Silverpop
{
[ContentType(DisplayName = "Blog Offer Type Block"
, GUID = "a7a0a0a7-e644-447b-9605-6996b387f89d"
, GroupName = "Silverpop Offer Types"
, Description = "The widget displays a blog offer.")]
public class BlogOfferBlock : ContentData
{
/// <summary>
/// Gets or sets ProductInterestType.
/// </summary>
/// <value>
/// ProductInterestType.
/// </value>
[Display(
Name = "Product Interest",
Description = "Product Interest",
GroupName = SystemTabNames.PageHeader,
Order = 101)]
[SelectMany(SelectionFactoryType = typeof(ProductInterestsFactory))]
public virtual string ProductInterestType { get; set; }
/// <summary>
/// Gets or sets RegionType.
/// </summary>
/// <value>
/// RegionType.
/// </value>
[Display(
Name = "Region",
Description = "Region",
GroupName = SystemTabNames.PageHeader,
Order = 102)]
[SelectMany(SelectionFactoryType = typeof(MemberRegionsFactory))]
public virtual string RegionType { get; set; }
/// <summary>
/// Gets or sets PreferenceType.
/// </summary>
/// <value>
/// PreferenceType.
/// </value>
[Display(
Name = "Preferred Destination",
Description = "PreferredDestination",
GroupName = SystemTabNames.PageHeader,
Order = 103)]
[SelectMany(SelectionFactoryType = typeof(PreferredDestinationFactory))]
public virtual string PreferredDestinationType { get; set; }
}
}
</pre>
Very simple, right?, well when the content editor (the user) creates a new block from this block type class he/she lets the default name, "New Block 1" by example, then when the content editor changes/sets the property values, I must read the property values and change, to build a string, already I have the process to do it, after, when the content editor will publish the block I must change the block name (if we remember the block was created with the "New Block 1" name) insted the new name, by example:
Content editor's selection:
ProductInterestType: 1,3
RegionType: 4
PreferredDestinationType: 5,7
And the property values corresponds to
ProductInterestType: Cruise Interest(1),(Hotel Interest)3
RegionType: (Southeast)4
PreferredDestinationType: Caribbean Exotic(7)
Then, the block name will be:
"Blog Offer for Prod: Cruise, Hotel - Rg: Southeast Dest: Caribbean"
To do it I need to catch the publish event (I think), hope to be clear
Hook to SavingContent event and set the built-in Name (from IContent) to your name. If you do it in publishing event - you may still get dialog window in UI asking you to consider renaming default block name to something more meaningful :)
You need to use an initializable module:
[InitializableModule]
[ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
public class InitializationModule1 : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
var contentEvents = context.Locate.Advanced.GetInstance<IContentEvents>();
contentEvents.SavingContent += this.SavingContent;
}
public void Uninitialize(InitializationEngine context)
{
}
private void SavingContent(object sender, ContentEventArgs e)
{
var block = e.Content as BlogOfferBlock;
if (block != null)
{
e.Content.Name = "Custom name"
}
}
}
but I guess that you will still receive this annoying dialog window - as saving and publishing events are triggered on the server, but check for default name happens in client-side. haven't tested. just speculations.
The magic was done, Valdis, I did several test because I have a lot of blocks where I had to applied the change and there was no problem with any message box, I can to share the code if anybody asks me for it, thanks again to Johan and Valdis.
I'm from Mexico City, where can I know your office addresss? Valdis and Johan, I'll find the way to express my thankful
Have somebody done something about of to auto-name a Block depending from the properties selected?