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?