Casey,
Thanks for you reply!
But I dont think I can do it the way you describe.
I want to use my usercontrol as a datatype, to store a property to a document (and also do some other logic). I have then created the datatype as a "Usercontrol Wrapper".
But besides the public value property of the "IUsercontrolDataEditor" interface, I cant see other references to Umbraco - neither how I can get use of the [#pageID] as you mention, as I dont use it in a macro.
I've allreday tried to use "umbraco.library.GetXmlNodeCurrent()",
but it doesn't return anything usable. Maybe because it is used inside a usercontrol?
Here are my very-early-stage code... Imaginge there is an .ascx file also with 2 listbox controls. Look around line 35:
Code:using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using umbraco.cms.businesslogic.member;
using umbraco.cms.businesslogic.web;
namespace memberGroup
{
public partial class memberGroup : System.Web.UI.UserControl, umbraco.editorControls.userControlGrapper.IUsercontrolDataEditor
{
private umbraco.cms.businesslogic.member.MemberGroup[] _availableMemberGroups;
private ArrayList _availableMembers = null;
private ArrayList _selectedMembers = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
_availableMembers = new ArrayList();
_selectedMembers = new ArrayList();
UniqueAvailableMembers();
PopulateControls();
}
}
private void UniqueAvailableMembers()
{
_availableMemberGroups = umbraco.cms.businesslogic.web.Access.GetAccessingGroups(3733);
//_availableMemberGroups = umbraco.cms.businesslogic.member.MemberGroup.GetAll;
umbraco.cms.businesslogic.member.Member[] allMembers = umbraco.cms.businesslogic.member.Member.GetAll;
foreach (umbraco.cms.businesslogic.member.MemberGroup _availableMemberGroup in _availableMemberGroups)
foreach (Member m in allMembers)
if (m.Groups.ContainsKey(_availableMemberGroup.Id) && !_availableMembers.Contains(m))
_availableMembers.Add(m);
}
private void PopulateControls()
{
lstAvailableMembers.DataSource = _availableMembers;
lstAvailableMembers.DataTextField = "LoginName";
lstAvailableMembers.DataValueField = "Id";
lstAvailableMembers.DataBind();
}
private void getDataFromSelected()
{
_selectedMembers = new ArrayList();
foreach (ListItem li in lstSelectedMembers.Items)
{
Member m = new Member(int.Parse(li.Value));
_selectedMembers.Add(m);
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
lstSelectedMembers.Items.Add(lstAvailableMembers.SelectedItem);
lstAvailableMembers.Items.Remove(lstAvailableMembers.SelectedItem);
}
protected void btnRemove_Click(object sender, EventArgs e)
{
lstSelectedMembers.Items.Remove(lstSelectedMembers.SelectedItem);
lstAvailableMembers.Items.Add(lstSelectedMembers.SelectedItem);
}
#region IUsercontrolDataEditor Members
public object value
{
get
{
umbraco.cms.businesslogic.member.MemberGroup g;
try
{
// create memberGroup if not exist
g = umbraco.cms.businesslogic.member.MemberGroup.MakeNew(txtMemberGroupName.Text,new umbraco.BusinessLogic.User(-1));
}
catch {}
// some check stuff is needed here...
g = umbraco.cms.businesslogic.member.MemberGroup.GetByName(txtMemberGroupName.Text);
getDataFromSelected();
// add selected members to group
foreach (object member in _selectedMembers)
{
Member selMember = (Member)member;
selMember.AddGroup(g.Id);
}
return txtMemberGroupName.Text;
}
set
{
txtMemberGroupName.Text = value.ToString();
}
}
#endregion
}
}
Martin
Udblog.dk