Hi,
I'am extend MonoX profile based on this post:
http://www.mono-software.com/blog/post/Mono/98/How-to-Extend-MonoX-and-ASP-NET-Profile/
I add several(about 10) custom fields(gender, height, education etc.).
Now I want to add ability to manipulate privacy for these fields (but not for all):
Question 1: How can I do this? Should I use PrivacyEditor or PrivacyManager?
Question 2: How does PrivacyEditor and PrivacyManager is working?
At first,
I try to use
PrivacyManager in following way
control markup(*.ascx):
<
MonoX:PrivacyManager
ID
=
"uxPrivacyManager"
runat
=
"server"
ImageButtonCssClass
=
"privacy-button"
CssClass
=
"privacy-content"
/>
code-behind:
privacyManager.UserId = SecurityUtility.GetUserId();
privacyManager.ObjectTypeFullName =
typeof
(MainContentTemplate).FullName;
privacyManager.PrivacyButtonImageUrl = Paths.App_Themes.img.privacy_icon_png;
privacyManager.PrivacyButtonHoverImageUrl = Paths.App_Themes.img.privacy_icon_hover_png;
privacyManager.Visible = !IsPreviewMode;
....
privacyManager.CurrentDataManager = DataManagerMain;
After that I look into my page and see
PrivacyEditor for all my fields.
For example,
Question 3: How can I catch event changing privacy for some fields?
I not found any event for this.
At second,
I try use only PrivacyEditor
control markup:
<
monox:PrivacyEditor
id
=
"privacyEditor"
runat
=
"server"
CssClass
=
"privacy-content"
></
monox:PrivacyEditor
>
code-behind:
UserProfileRepository instance = UserProfileRepository.GetInstance();
privacyEditor.UserId = SecurityUtility.GetUserId();
privacyEditor.ObjectTypeFullName =
typeof
(MainContentTemplate).FullName;
privacyEditor.FieldName =
"Gender"
;
privacyEditor.PrivacyLevels = instance.GetPrivacyLevelIds(privacyEditor.UserId, privacyEditor.ObjectTypeFullName, privacyEditor.FieldName);
privacyEditor.ConfirmPrivacy += privacyEditor_ConfirmPrivacy;
....
void
privacyEditor_ConfirmPrivacy(
object
sender, MonoSoftware.Core.CancelEventArgs<Guid[]> e)
{
PrivacyEditorEditTemplate privacyEditorEditTemplate = (PrivacyEditorEditTemplate)sender;
UserProfileRepository instance = UserProfileRepository.GetInstance();
instance.UpdatePrivacyLevelDefinitions(privacyEditorEditTemplate.UserId, privacyEditorEditTemplate.ObjectTypeFullName, privacyEditorEditTemplate.FieldName, e.Value);
}
Question 4: When ConfirmPrivacy event occurs? I didn't get code inside my event handler
And last my question:
Question 5: How privacy information store in database?
I look into MonoX database and find table
PrivacyLevelDefinition I suppose that this table uses for store privacy information. Also I found row with information about privacy of my field "Gender". I think this row was insert after exucuting this line:
privacyEditor.PrivacyLevels = instance.GetPrivacyLevelIds(privacyEditor.UserId, privacyEditor.ObjectTypeFullName, privacyEditor.FieldName);
P.S. Thank you for your help and any information about my questions.
Best regards,
Denis.