Justin,<div><br></div><div>I'm actually using a couple of repos locally, so it was fairly simple to reset one to a point just before where I was working and simply update that commit with my final changes, thus taking the failed work (and the patch to the patch) out of the loop.</div>
<div><br></div><div>As per your secondary instructions in skype, I used git show <commit ID> <file> to produce the following patch for <span class="Apple-style-span" style="border-collapse: collapse; color: rgb(51, 51, 51); font-family: arial, sans-serif; ">OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs:</span></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br></span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><div>
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs</div><div>+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs</div><div>@@ -1231,20 +1231,36 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups</div>
<div> List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID);</div><div> GroupMembershipData[] membershipArray;</div><div> </div>
<div>- if (requestingClient.AgentId != dataForAgentID)</div><div>- {</div><div>+ // c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group attributes for</div>
<div>+ // those with a GodLike aspect.</div><div>+ Scene c_scene = (Scene) requestingClient.Scene;</div><div>+ bool is_god = c_scene.Permissions.IsGod(requestingClient.AgentId);</div><div>
+</div><div>+ if(is_god) {</div><div> Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)</div><div> {</div><div> return membership.ListInProfile;</div>
<div> };</div><div> </div><div>- membershipArray = membershipData.FindAll(showInProfile).ToArray();</div><div>+ membershipArray = membershipData.ToArray();</div><div> }</div>
<div> else</div><div> {</div><div>- membershipArray = membershipData.ToArray();</div><div>- }</div><div> </div><div>+ if (requestingClient.AgentId != dataForAgentID)</div>
<div>+ {</div><div>+ Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)</div><div>+ {</div><div>+ return membership.ListInProfile;</div>
<div>+ };</div><div>+</div><div>+ membershipArray = membershipData.FindAll(showInProfile).ToArray();</div><div>+ }</div><div>+ else</div><div>+ {</div>
<div>+ membershipArray = membershipData.ToArray();</div><div>+ }</div><div>+ }</div><div> if (m_debugEnabled)</div><div> {</div><div> m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId);</div>
<div>@@ -1257,6 +1273,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups</div><div> return membershipArray;</div><div> }</div><div> </div><div>+ </div><div> private void SendAgentDataUpdate(IClientAPI remoteClient, UUID dataForAgentID, UUID activeGroupID, string activeGroupName, ulong activeGroupPowers, string activeGroupTitle)</div>
<div> {</div><div> if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);</div><div><br></div><div><br></div><div>Let me know if this is the right sort of thing. Note that I cut a few lines from the top that git output to the patchfile, that I cut out. They may be necessary Idk, but if so let me know and I'll save them before I make a redux on the mantis site.</div>
<div><br></div><div>Cheers Justin!</div><div>James</div><div><br></div><div><br></div></span></font><br><div class="gmail_quote">On Fri, May 27, 2011 at 7:08 PM, James Stallings II <span dir="ltr"><<a href="mailto:james.stallings@gmail.com">james.stallings@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Thanks Justin,<div><br></div><div>Will do just shortly.</div><div><br></div><div>Cheers!</div><div>James<div><div></div>
<div class="h5"><br><br><div class="gmail_quote">On Fri, May 27, 2011 at 7:08 PM, Justin Clark-Casey <span dir="ltr"><<a href="mailto:jjustincc@googlemail.com" target="_blank">jjustincc@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes, please could you consolidate the patches (from a brief look it appears that later ones are now editing earlier ones) and attach to a mantis, which should be in patch included state.<br>
<br>
The best way to generate a suitable patch is to use<br>
<br>
git am <commit uuid>^<br>
<br>
on the command line.<div><br>
<br>
On 27/05/11 02:01, James Stallings II wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
Just a quick apology to the list for the oldskool diff, Melanie_T tells me I should use udiff, and next time, I will.<br>
<br>
Cheers!<br>
James/Hiro<br>
<br></div><div><div></div><div>
On Thu, May 26, 2011 at 6:19 PM, James Stallings II <<a href="mailto:james.stallings@gmail.com" target="_blank">james.stallings@gmail.com</a> <mailto:<a href="mailto:james.stallings@gmail.com" target="_blank">james.stallings@gmail.com</a>>> wrote:<br>
<br>
My apologies, but the previous code was completely ineffective on testing. I know, it should be tested before<br>
submission. Mea Culpa, it looked really good.<br>
<br>
This, however, actually works:<br>
<br>
1103d1102<br>
<<br>
1117,1125c1116,1125<br>
<<br>
< if (GetRequestingAgentID(remoteClient) != dataForAgentID)<br>
< {<br>
< if (!membership.ListInProfile)<br>
< {<br>
< // If we're sending group info to remoteclient about another agent,<br>
< // filter out groups the other agent doesn't want to share.<br>
< continue;<br>
< }<br>
---<br>
> if (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))<br>
> if (GetRequestingAgentID(remoteClient) != dataForAgentID)<br>
> {<br>
> if (!membership.ListInProfile)<br>
> {<br>
> // If we're sending group info to remoteclient about another agent,<br>
> // filter out groups the other agent doesn't want to share.<br>
> continue;<br>
> }<br>
> }<br>
1128d1127<br>
<<br>
1237,1242c1236,1237<br>
< // c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden' group<br>
attributes for<br>
< // those with a GodLike aspect.<br>
< Scene c_scene = (Scene) requestingClient.Scene;<br>
< bool is_god = c_scene.Permissions.IsGod(requestingClient.AgentId);<br>
<<br>
< if(is_god) {<br>
---<br>
> if (requestingClient.AgentId != dataForAgentID)<br>
> {<br>
1248c1243<br>
< membershipArray = membershipData.ToArray();<br>
---<br>
> membershipArray = membershipData.FindAll(showInProfile).ToArray();<br>
1252,1265c1247<br>
<<br>
< if (requestingClient.AgentId != dataForAgentID)<br>
< {<br>
< Predicate<GroupMembershipData> showInProfile = delegate(GroupMembershipData membership)<br>
< {<br>
< return membership.ListInProfile;<br>
< };<br>
<<br>
< membershipArray = membershipData.FindAll(showInProfile).ToArray();<br>
< }<br>
< else<br>
< {<br>
< membershipArray = membershipData.ToArray();<br>
< }<br>
---<br>
> membershipArray = membershipData.ToArray();<br>
1266a1249<br>
><br>
<br></div></div>
On Thu, May 26, 2011 at 11:36 AM, James Stallings II <<a href="mailto:james.stallings@gmail.com" target="_blank">james.stallings@gmail.com</a> <mailto:<a href="mailto:james.stallings@gmail.com" target="_blank">james.stallings@gmail.com</a>>><div>
<br>
wrote:<br>
<br>
Greetings, OpenSimulator developers :)<br>
<br>
I'm writing to propose the addition of certain functionality<br>
to OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs, to wit:<br>
<br>
Present 'Hidden' groups and other related group detail to agents requesting such iniformation via CAPs as have<br>
assumed a 'godlike' aspect, or in other words, have successfully activated the administrative functionality in<br>
the client.<br>
<br>
The changes to the substance of the code involve credits more than not; a diff is both attached and included for<br>
convenient review. A fork has been created on github at git://<a href="http://github.com/JamesStallings/opensim.git" target="_blank">github.com/JamesStallings/opensim.git</a><br></div>
<<a href="http://github.com/JamesStallings/opensim.git" target="_blank">http://github.com/JamesStallings/opensim.git</a>> which contains the changes for convenience should contribution of<div><div></div><div>
<br>
source be accepted. I will also open a mantis on the topic for the sake of thoroughness and attach the diff there.<br>
<br>
<br>
Many thanks and cheers!<br>
<br>
James Stallings aka Hiro Protagonist<br>
<br>
<br>
Diff follows:<br>
<br>
1103,1107d1102<br>
< // c_scene and property accessor 'is_god' are in support of the opertions to bypass 'hidden'<br>
group attributes for<br>
< // those with a GodLike aspect.<br>
< Scene c_scene = (Scene) remoteClient.Scene;<br>
< bool is_god = c_scene.Permissions.IsGod(remoteClient.AgentId);<br>
<<br>
1121,1138c1116,1126<br>
< // bypass the 'hidden' attributes of groups for those who have<br>
< // a GodLike aspect<br>
< //<br>
< // Big shout out to Dan Banner for showing me his running proof-of-concept and endorsing this<br>
idea as meaningful work<br>
< // Another big shout out to BlueWall Slade for helping me chase down all the elements required to<br>
properly access<br>
< // Scene and IClientAPI properties. JS aka HP<br>
< if (!is_god)<br>
< {<br>
< if (GetRequestingAgentID(remoteClient) != dataForAgentID)<br>
< {<br>
< if (!membership.ListInProfile)<br>
< {<br>
< // If we're sending group info to remoteclient about another agent,<br>
< // filter out groups the other agent doesn't want to share.<br>
< continue;<br>
< }<br>
< }<br>
< }<br>
---<br>
> if (!remoteClient.Scene.Permissions.IsGod(remoteClient.AgentID))<br>
> if (GetRequestingAgentID(remoteClient) != dataForAgentID)<br>
> {<br>
> if (!membership.ListInProfile)<br>
> {<br>
> // If we're sending group info to remoteclient about another agent,<br>
> // filter out groups the other agent doesn't want to share.<br>
> continue;<br>
> }<br>
> }<br>
> }<br>
<br>
<br>
--<br>
===================================<br>
<a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br>
<a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
<br>
<br>
<br>
<br>
--<br>
===================================<br>
<a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br>
<a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
<br>
<br>
<br>
<br>
--<br>
===================================<br>
<a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br>
<a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
<br>
<br>
<br></div></div>
_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de" target="_blank">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
</blockquote>
<br>
<br>
-- <br>
Justin Clark-Casey (justincc)<br>
<a href="http://justincc.org/blog" target="_blank">http://justincc.org/blog</a><br>
<a href="http://twitter.com/justincc" target="_blank">http://twitter.com/justincc</a><br>
_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de" target="_blank">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
</blockquote></div><br><br clear="all"><br></div></div>-- <br><div class="im">===================================<br><a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br><a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
</div></div>
</blockquote></div><br><br clear="all"><br>-- <br>===================================<br><a href="http://simhost.com" target="_blank">http://simhost.com</a> <a href="http://osgrid.org" target="_blank">http://osgrid.org</a><br>
<a href="http://twitter.com/jstallings2" target="_blank">http://twitter.com/jstallings2</a><br><a href="http://www.linkedin.com/pub/5/770/a49" target="_blank">http://www.linkedin.com/pub/5/770/a49</a><br>
</div>