Extend widget not fully possible for Profile widget
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.