Extend widget not fully possible for Profile widget

Posted by Community Admin on 05-Aug-2018 13:29

Extend widget not fully possible for Profile widget

All Replies

Posted by Community Admin on 30-Jun-2017 00:00

I was following the following link docs.sitefinity.com/feather-extend-the-navigation-widget-model
Because I need some extra attributes on the profile page to be saved to a custom database but I noticed most methods on the models are not marked as virtual so I can not override them use my custom implementation is this intended?

Example code:

PortalProfileModel

public class PortalProfileModel : ProfileModel
    public PortalProfileModel() : base()
    
 
    
 
    public ProfilePreviewViewModel GetProfilePreviewViewModel()
    
        if (this.SelectedUserProfiles == null || this.SelectedUserProfiles.Count == 0)
            return null;
 
        var viewModel = new PortalProfilePreviewViewModel(this.SelectedUserProfiles)
        
            CssClass = this.CssClass,
            CanEdit = this.CanEdit()
        ;
 
        return viewModel;
    

PortalProfilePreviewViewModel

public class PortalProfilePreviewViewModel: ProfilePreviewViewModel
   
       /// <summary>
       /// Initializes a new instance of the <see cref="ProfilePreviewViewModel"/> class.
       /// </summary>
       public PortalProfilePreviewViewModel() : base()
       
       
 
       /// <summary>
       /// Initializes a new instance of the <see cref="ProfilePreviewViewModel"/> class.
       /// </summary>
       /// <param name="userProfile">The user profile.</param>
       public PortalProfilePreviewViewModel(IList<UserProfile> userProfiles) : base(userProfiles)
       
           if (userProfiles != null && userProfiles.Count() > 0)
           
               this.InitializeUserRelatedData(userProfiles.First().User);
           
       
 
       public bool MailBinEmptiedNotification get; set;
       public bool MailDoorOpenNotification get; set;
       public bool MailHatchOpenNotification get; set;
       public bool MailBinIsFullNotification get; set;
       public bool MailBinAlmostFullNotification get; set;
 
       /// <summary>
       /// Initializes the user related data.
       /// </summary>
       /// <param name="user">The user.</param>
       private void InitializeUserRelatedData(User user)
       
           MailBinAlmostFullNotification = true;
           MailDoorOpenNotification = true;
       
   

Read.ProfilePreview.cshtml

@model ECOnXWebApp.Mvc.Models.Profile.PortalProfilePreviewViewModel
@using Telerik.Sitefinity.Frontend.Identity.Mvc.Models.Profile;
@using Telerik.Sitefinity.Frontend.Mvc.Helpers;
 
<div class="@Model.CssClass">
    <form class="form-horizontal col-sm-10">
        <div class="row">
            <h3>@Model.DisplayName</h3>
            <p>@Model.Email</p>
 
            <div class="form-group">
                <label class="control-label col-sm-3" for="email">Mail almost full notification</label>
                <div class="col-sm-8">
                    <div class="checkbox">
                        <label><input type="checkbox">@Model.MailBinAlmostFullNotification</label>
                    </div>
                </div>
            </div>
            @if (Model.CanEdit && ViewBag.Mode == ViewMode.Both)
            
                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-8">
                        @Html.ActionLink(Html.Resource("EditProfileLink"), "EditProfile");
                    </div>
                </div>
            
        </div>
 
</form>
</div>

 

Global.asax

protected void Application_Start(object sender, EventArgs e)
    Bootstrapper.Initialized += this.Bootstrapper_Initialized;
 
private void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
    if (e.CommandName == "Bootstrapped")
    
        FrontendModule.Current.DependencyResolver.Rebind<IProfileModel>().To<PortalProfileModel>();
    

 

I get exceptions because my GetProfilePreviewViewModel() never gets called (with or without new keyword. 

 

 

 

This thread is closed