[STORM-68b] Default permissions floater overhaul
Adds separated default permissions for Objects, Uploads, Scripts, Notecards, Gestures and Wearables. Compatible with Export Permission Backwards compatible with default permissions for objects on regions where AgentPreferences capability is not available (opensim users rejoice!) These changes to llfloaterperms are made available under lgpl, if there's a v3 that wants to adopt default export permission for opensim.
This commit is contained in:
@@ -934,6 +934,7 @@ P(fetchScriptLimitsRegionDetailsResponder);
|
||||
P(fetchScriptLimitsRegionInfoResponder);
|
||||
P(fetchScriptLimitsRegionSummaryResponder);
|
||||
P(fnPtrResponder);
|
||||
P(floaterPermsResponder);
|
||||
P2(gamingDataReceived, transfer_22s_connect_10s);
|
||||
P2(groupMemberDataResponder, transfer_300s);
|
||||
P2(groupProposalBallotResponder, transfer_300s);
|
||||
|
||||
@@ -6553,17 +6553,6 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>175</integer>
|
||||
</map>
|
||||
<key>EveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created objects</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FPSLogFrequency</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -10861,39 +10850,6 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>20</integer>
|
||||
</map>
|
||||
<key>NextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>NewCacheLocation</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -14549,39 +14505,6 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>SearchURLDefault</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -14744,17 +14667,6 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ShowActiveSpeakers</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -17991,6 +17903,336 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<integer>0</integer>
|
||||
</array>
|
||||
</map>
|
||||
<key>ObjectsNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ObjectsNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ObjectsNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ObjectsEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created object</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ObjectsShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created objects are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UploadsNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly uploaded items can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UploadsNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly uploaded items can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UploadsNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly uploaded items can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>UploadsEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly uploaded item</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UploadsShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly uploaded items are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptsNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptsNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptsNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ScriptsEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created script</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptsShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NotecardsNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created notecards can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>NotecardsNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created notecards can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>NotecardsNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created notecards can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>NotecardsEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created notecard</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NotecardsShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created scripts are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>GesturesNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created gestures can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>GesturesNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created gestures can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>GesturesNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created gestures can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>GesturesEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created gesture</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>GesturesShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created gestures are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>WearablesNextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created clothing or body part can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>WearablesNextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created clothing or body part can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>WearablesNextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created clothing or body part can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>WearablesEveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Everyone can copy the newly created clothing or body part</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>WearablesShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Newly created clothing or body part is shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>SimulateFBOFailure</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
@@ -18263,6 +18505,62 @@ This should be as low as possible, but too low may break functionality</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
|
||||
<key>EveryoneCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Everyone can copy the newly created objects</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NextOwnerCopy</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Newly created objects can be copied by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NextOwnerModify</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Newly created objects can be modified by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NextOwnerTransfer</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Newly created objects can be resold or given away by next owner</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>ShareWithGroup</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Newly created objects are shared with the currently active group</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
||||
|
||||
@@ -463,7 +463,40 @@
|
||||
</map>
|
||||
|
||||
|
||||
<key>DefaultUploadPermissionsConverted</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default upload permissions have been converted to default creation permissions</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>EveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>(obsolete) Whether content you upload has exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ObjectsEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether objects you create have exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>UploadsEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether content you upload has exportability permission by default</string>
|
||||
@@ -474,6 +507,50 @@
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>ScriptsEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether scripts you make have exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>NotecardsEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether notecards you make have exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>GesturesEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether gestures you make have exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>WearablesEveryoneExport</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Whether wearables you make have exportability permission by default</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RLVaLoginLastLocation</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
||||
@@ -121,11 +121,11 @@ void LLPrefsAscentSys::onCommitCheckBox(LLUICtrl* ctrl, const LLSD& value)
|
||||
}
|
||||
else if (name == "next_owner_copy")
|
||||
{
|
||||
if (!enabled) gSavedSettings.setBOOL("NextOwnerTransfer", true);
|
||||
if (!enabled) gSavedSettings.setBOOL("ObjectsNextOwnerTransfer", true);
|
||||
}
|
||||
else if (name == "script_next_owner_copy")
|
||||
{
|
||||
if (!enabled) gSavedSettings.setBOOL("ScriptNextOwnerTransfer", true);
|
||||
if (!enabled) gSavedSettings.setBOOL("ScriptsNextOwnerTransfer", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,12 +214,12 @@ void LLPrefsAscentSys::refreshValues()
|
||||
mGlow = gSavedSettings.getF32("EmeraldBuildPrefs_Glow");
|
||||
mItem = gSavedPerAccountSettings.getString("EmeraldBuildPrefs_Item");
|
||||
mMaterial = gSavedSettings.getString("BuildPrefs_Material");
|
||||
mNextCopy = gSavedSettings.getBOOL("NextOwnerCopy");
|
||||
mNextMod = gSavedSettings.getBOOL("NextOwnerModify");
|
||||
mNextTrans = gSavedSettings.getBOOL("NextOwnerTransfer");
|
||||
mScriptNextCopy = gSavedSettings.getBOOL("ScriptNextOwnerCopy");
|
||||
mScriptNextMod = gSavedSettings.getBOOL("ScriptNextOwnerModify");
|
||||
mScriptNextTrans = gSavedSettings.getBOOL("ScriptNextOwnerTransfer");
|
||||
mNextCopy = gSavedSettings.getBOOL("ObjectsNextOwnerCopy");
|
||||
mNextMod = gSavedSettings.getBOOL("ObjectsNextOwnerModify");
|
||||
mNextTrans = gSavedSettings.getBOOL("ObjectsNextOwnerTransfer");
|
||||
mScriptNextCopy = gSavedSettings.getBOOL("ScriptsNextOwnerCopy");
|
||||
mScriptNextMod = gSavedSettings.getBOOL("ScriptsNextOwnerModify");
|
||||
mScriptNextTrans = gSavedSettings.getBOOL("ScriptsNextOwnerTransfer");
|
||||
mShiny = gSavedSettings.getString("EmeraldBuildPrefs_Shiny");
|
||||
mTemporary = gSavedSettings.getBOOL("EmeraldBuildPrefs_Temporary");
|
||||
mTexture = gSavedSettings.getString("EmeraldBuildPrefs_Texture");
|
||||
@@ -356,12 +356,12 @@ void LLPrefsAscentSys::cancel()
|
||||
gSavedSettings.setF32("EmeraldBuildPrefs_Glow", mGlow);
|
||||
gSavedPerAccountSettings.setString("EmeraldBuildPrefs_Item", mItem);
|
||||
gSavedSettings.setString("BuildPrefs_Material", mMaterial);
|
||||
gSavedSettings.setBOOL("NextOwnerCopy", mNextCopy);
|
||||
gSavedSettings.setBOOL("NextOwnerModify", mNextMod);
|
||||
gSavedSettings.setBOOL("NextOwnerTransfer", mNextTrans);
|
||||
gSavedSettings.setBOOL("ScriptNextOwnerCopy", mScriptNextCopy);
|
||||
gSavedSettings.setBOOL("ScriptNextOwnerModify", mScriptNextMod);
|
||||
gSavedSettings.setBOOL("ScriptNextOwnerTransfer", mScriptNextTrans);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerCopy", mNextCopy);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerModify", mNextMod);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerTransfer", mNextTrans);
|
||||
gSavedSettings.setBOOL("ScriptsNextOwnerCopy", mScriptNextCopy);
|
||||
gSavedSettings.setBOOL("ScriptsNextOwnerModify", mScriptNextMod);
|
||||
gSavedSettings.setBOOL("ScriptsNextOwnerTransfer", mScriptNextTrans);
|
||||
gSavedSettings.setBOOL("EmeraldBuildPrefs_Phantom", mPhantom);
|
||||
gSavedSettings.setBOOL("EmeraldBuildPrefs_Physical", mPhysical);
|
||||
gSavedSettings.setString("EmeraldBuildPrefs_Shiny", mShiny);
|
||||
|
||||
@@ -226,7 +226,9 @@ void ImportTracker::get_update(S32 newid, BOOL justCreated, BOOL createSelected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Anything below here must be permissions!!!
|
||||
if (gAgent.getRegion()->getCapability("AgentPreferences").empty()) break; // This cap automates perm setting on the server
|
||||
msg->newMessageFast(_PREHASH_ObjectPermissions);
|
||||
msg->nextBlockFast(_PREHASH_AgentData);
|
||||
msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
|
||||
@@ -238,16 +240,16 @@ void ImportTracker::get_update(S32 newid, BOOL justCreated, BOOL createSelected)
|
||||
msg->addU8Fast(_PREHASH_Field, PERM_NEXT_OWNER);
|
||||
msg->addU8Fast(_PREHASH_Set, PERM_SET_TRUE);
|
||||
U32 flags = 0;
|
||||
if ( gSavedSettings.getBOOL("NextOwnerCopy") )
|
||||
if ( gSavedSettings.getBOOL("ObjectsNextOwnerCopy") )
|
||||
{
|
||||
flags |= PERM_COPY;
|
||||
}
|
||||
if ( gSavedSettings.getBOOL("NextOwnerModify") )
|
||||
if ( gSavedSettings.getBOOL("ObjectsNextOwnerModify") )
|
||||
{
|
||||
flags |= PERM_MODIFY;
|
||||
}
|
||||
bool next_owner_trans;
|
||||
if ( next_owner_trans = gSavedSettings.getBOOL("NextOwnerTransfer") )
|
||||
if ( next_owner_trans = gSavedSettings.getBOOL("ObjectsNextOwnerTransfer") )
|
||||
{
|
||||
flags |= PERM_TRANSFER;
|
||||
}
|
||||
@@ -399,7 +401,7 @@ public:
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH), data->tid, data->name,
|
||||
data->description, data->type, LLInventoryType::defaultForAssetType(data->type), data->wear_type,
|
||||
LLFloaterPerms::getNextOwnerPerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Uploads"),
|
||||
cb);
|
||||
|
||||
}
|
||||
@@ -542,7 +544,7 @@ void JCImportInventorycallback(const LLUUID& uuid, void* user_data, S32 result,
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH), data->tid, data->name,
|
||||
data->description, data->type, LLInventoryType::defaultForAssetType(data->type), data->wear_type,
|
||||
LLFloaterPerms::getNextOwnerPerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Uploads"),
|
||||
cb);
|
||||
}else cmdline_printchat("err: "+std::string(LLAssetStorage::getErrorString(result)));
|
||||
}
|
||||
@@ -690,7 +692,7 @@ void ImportTracker::send_inventory(LLSD& prim)
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH), data->tid, data->name,
|
||||
data->description, data->type, LLInventoryType::defaultForAssetType(data->type), data->wear_type,
|
||||
LLFloaterPerms::getNextOwnerPerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Notecards"),
|
||||
cb);
|
||||
}
|
||||
break;
|
||||
@@ -702,7 +704,7 @@ void ImportTracker::send_inventory(LLSD& prim)
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH), data->tid, data->name,
|
||||
data->description, data->type, LLInventoryType::defaultForAssetType(data->type), data->wear_type,
|
||||
LLFloaterPerms::getNextOwnerPerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Scripts"),
|
||||
cb);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "llwearablelist.h"
|
||||
|
||||
#include "llfloatercustomize.h"
|
||||
#include "llfloaterperms.h"
|
||||
|
||||
|
||||
// [RLVa:KB] - Checked: 2011-05-22 (RLVa-1.3.1)
|
||||
@@ -77,7 +78,20 @@ using namespace LLAvatarAppearanceDefines;
|
||||
void wear_and_edit_cb(const LLUUID& inv_item)
|
||||
{
|
||||
if (inv_item.isNull()) return;
|
||||
|
||||
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (!item) return;
|
||||
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskNext(LLFloaterPerms::getNextOwnerPerms("Wearables"));
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Wearables"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Wearables"));
|
||||
item->setPermissions(perm);
|
||||
|
||||
item->updateServer(FALSE);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
// Request editing the item after it gets worn.
|
||||
gAgentWearables.requestEditingWearable(inv_item);
|
||||
|
||||
@@ -85,6 +99,26 @@ void wear_and_edit_cb(const LLUUID& inv_item)
|
||||
LLAppearanceMgr::instance().wearItemOnAvatar(inv_item);
|
||||
}
|
||||
|
||||
void wear_cb(const LLUUID& inv_item)
|
||||
{
|
||||
if (!inv_item.isNull())
|
||||
{
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskNext(LLFloaterPerms::getNextOwnerPerms("Wearables"));
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Wearables"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Wearables"));
|
||||
item->setPermissions(perm);
|
||||
|
||||
item->updateServer(FALSE);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// HACK: For EXT-3923: Pants item shows in inventory with skin icon and messes with "current look"
|
||||
@@ -502,6 +536,7 @@ LLViewerWearable* LLAgentWearables::saveWearableAs(const LLWearableType::EType t
|
||||
old_wearable,
|
||||
trunc_name,
|
||||
trunc_description);
|
||||
|
||||
LLPointer<LLInventoryCallback> cb =
|
||||
new addWearableToAgentInventoryCallback(
|
||||
LLPointer<LLRefCount>(NULL),
|
||||
@@ -1976,7 +2011,7 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
|
||||
LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
|
||||
LLAssetType::EType asset_type = wearable->getAssetType();
|
||||
LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
|
||||
LLPointer<LLInventoryCallback> cb = wear ? new LLBoostFuncInventoryCallback(wear_and_edit_cb) : NULL;
|
||||
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(wear ? wear_and_edit_cb : wear_cb);
|
||||
LLUUID folder_id;
|
||||
|
||||
if (parent_id.notNull())
|
||||
@@ -1989,10 +2024,16 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
|
||||
folder_id = gInventory.findCategoryUUIDForType(folder_type);
|
||||
}
|
||||
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
folder_id, wearable->getTransactionID(), wearable->getName(),
|
||||
wearable->getDescription(), asset_type, inv_type, wearable->getType(),
|
||||
wearable->getPermissions().getMaskNextOwner(),
|
||||
create_inventory_item(gAgent.getID(),
|
||||
gAgent.getSessionID(),
|
||||
folder_id,
|
||||
wearable->getTransactionID(),
|
||||
wearable->getName(),
|
||||
wearable->getDescription(),
|
||||
asset_type,
|
||||
inv_type,
|
||||
wearable->getType(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Wearables"),
|
||||
cb);
|
||||
}
|
||||
|
||||
|
||||
@@ -1269,7 +1269,7 @@ void LLFloaterBvhPreview::onBtnOK(void* userdata)
|
||||
0,
|
||||
LLFolderType::FT_NONE,
|
||||
LLInventoryType::IT_ANIMATION,
|
||||
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Uploads"), LLFloaterPerms::getGroupPerms("Uploads"), LLFloaterPerms::getEveryonePerms("Uploads"),
|
||||
name,
|
||||
callback, expected_upload_cost, userdata);
|
||||
}
|
||||
|
||||
@@ -34,32 +34,24 @@
|
||||
|
||||
#include "llfloatergesture.h"
|
||||
|
||||
#include "lldir.h"
|
||||
#include "llinventory.h"
|
||||
#include "llmultigesture.h"
|
||||
|
||||
#include "llagent.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llgesturemgr.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llfloaterperms.h"
|
||||
#include "llgesturemgr.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llinventorypanel.h"
|
||||
#include "llkeyboard.h"
|
||||
#include "lllineeditor.h"
|
||||
#include "llpreviewgesture.h"
|
||||
#include "llresizehandle.h"
|
||||
#include "llscrollbar.h"
|
||||
#include "llscrollcontainer.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "lltextbox.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llviewergesture.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llviewertexturelist.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoavatar.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
// static
|
||||
LLFloaterGesture* LLFloaterGesture::sInstance = NULL;
|
||||
@@ -367,27 +359,38 @@ void LLFloaterGesture::onClickPlay(void* data)
|
||||
class GestureShowCallback : public LLInventoryCallback
|
||||
{
|
||||
public:
|
||||
GestureShowCallback(std::string &title)
|
||||
{
|
||||
mTitle = title;
|
||||
}
|
||||
void fire(const LLUUID &inv_item)
|
||||
{
|
||||
LLPreviewGesture::show(mTitle, inv_item, LLUUID::null);
|
||||
LLPreviewGesture::show("Gesture: New Gesture", inv_item, LLUUID::null);
|
||||
|
||||
LLInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskNext(LLFloaterPerms::getNextOwnerPerms("Gestures"));
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Gestures"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Gestures"));
|
||||
item->setPermissions(perm);
|
||||
item->updateServer(FALSE);
|
||||
}
|
||||
}
|
||||
private:
|
||||
std::string mTitle;
|
||||
};
|
||||
|
||||
// static
|
||||
void LLFloaterGesture::onClickNew(void* data)
|
||||
{
|
||||
std::string title("Gesture: ");
|
||||
title.append("New Gesture");
|
||||
LLPointer<LLInventoryCallback> cb = new GestureShowCallback(title);
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
LLUUID::null, LLTransactionID::tnull, "New Gesture", "", LLAssetType::AT_GESTURE,
|
||||
LLInventoryType::IT_GESTURE, NOT_WEARABLE, PERM_MOVE | PERM_TRANSFER, cb);
|
||||
LLPointer<LLInventoryCallback> cb = new GestureShowCallback();
|
||||
create_inventory_item(gAgent.getID(),
|
||||
gAgent.getSessionID(),
|
||||
LLUUID::null,
|
||||
LLTransactionID::tnull,
|
||||
"New Gesture",
|
||||
"",
|
||||
LLAssetType::AT_GESTURE,
|
||||
LLInventoryType::IT_GESTURE,
|
||||
NOT_WEARABLE,
|
||||
LLFloaterPerms::getNextOwnerPerms("Gestures"),
|
||||
cb);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -176,11 +176,14 @@ void LLFloaterNameDesc::onBtnOK()
|
||||
S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); // kinda hack - assumes that unsubclassed LLFloaterNameDesc is only used for uploading chargeable assets, which it is right now (it's only used unsubclassed for the sound upload dialog, and THAT should be a subclass).
|
||||
void *nruserdata = NULL;
|
||||
std::string display_name = LLStringUtil::null;
|
||||
|
||||
upload_new_resource(mFilenameAndPath, // file
|
||||
getChild<LLUICtrl>("name_form")->getValue().asString(),
|
||||
getChild<LLUICtrl>("description_form")->getValue().asString(),
|
||||
0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
|
||||
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
|
||||
LLFloaterPerms::getNextOwnerPerms("Uploads"),
|
||||
LLFloaterPerms::getGroupPerms("Uploads"),
|
||||
LLFloaterPerms::getEveryonePerms("Uploads"),
|
||||
display_name, callback, expected_upload_cost, nruserdata);
|
||||
close(false);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @file llfloaterperms.cpp
|
||||
* @brief Asset creation permission preferences.
|
||||
* @author Coco
|
||||
* @author Jonathan Yap
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewergpl$
|
||||
*
|
||||
@@ -33,152 +33,57 @@
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "lfsimfeaturehandler.h"
|
||||
#include "llagent.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llfloaterperms.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llpermissions.h"
|
||||
#include "hippogridmanager.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
bool everyone_export;
|
||||
void handle_checkboxes(LLUICtrl* ctrl, const LLSD& value)
|
||||
{
|
||||
LLPanel* view = static_cast<LLPanel*>(ctrl->getParent());
|
||||
if (ctrl->getName() == "everyone_export")
|
||||
{
|
||||
view->childSetEnabled("next_owner_copy", !value);
|
||||
view->childSetEnabled("next_owner_modify", !value);
|
||||
view->childSetEnabled("next_owner_transfer", !value);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ctrl->getName() == "next_owner_copy")
|
||||
{
|
||||
if (!value) // Implements fair use
|
||||
gSavedSettings.setBOOL("NextOwnerTransfer", true);
|
||||
view->childSetEnabled("next_owner_transfer", value);
|
||||
}
|
||||
if (!value) // If any of these are unchecked, export can no longer be checked.
|
||||
view->childSetEnabled("everyone_export", false);
|
||||
else
|
||||
view->childSetEnabled("everyone_export", LFSimFeatureHandler::instance().simSupportsExport() && (LLFloaterPerms::getNextOwnerPerms() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
extern class AIHTTPTimeoutPolicy floaterPermsResponder_timeout;
|
||||
|
||||
LLFloaterPerms::LLFloaterPerms(const LLSD& seed)
|
||||
{
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_perm_prefs.xml");
|
||||
}
|
||||
|
||||
BOOL LLFloaterPerms::postBuild()
|
||||
{
|
||||
//handle_checkboxes
|
||||
{
|
||||
bool export_support = LFSimFeatureHandler::instance().simSupportsExport();
|
||||
const U32 next_owner_perms = getNextOwnerPerms();
|
||||
childSetEnabled("everyone_export", export_support && (next_owner_perms & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED);
|
||||
if (!gHippoGridManager->getCurrentGrid()->isSecondLife())
|
||||
childSetVisible("everyone_export", false);
|
||||
|
||||
if (!(next_owner_perms & PERM_COPY))
|
||||
{
|
||||
childSetEnabled("next_owner_transfer", false);
|
||||
}
|
||||
else if (export_support)
|
||||
{
|
||||
bool export_off = !gSavedPerAccountSettings.getBOOL("EveryoneExport");
|
||||
childSetEnabled("next_owner_copy", export_off);
|
||||
childSetEnabled("next_owner_modify", export_off);
|
||||
childSetEnabled("next_owner_transfer", export_off);
|
||||
}
|
||||
else // Set EveryoneExport false, just in case.
|
||||
gSavedPerAccountSettings.setBOOL("EveryoneExport", false);
|
||||
}
|
||||
childSetAction("help", onClickHelp, this);
|
||||
childSetAction("ok", onClickOK, this);
|
||||
childSetAction("cancel", onClickCancel, this);
|
||||
getChild<LLUICtrl>("next_owner_copy")->setCommitCallback(handle_checkboxes);
|
||||
getChild<LLUICtrl>("next_owner_modify")->setCommitCallback(handle_checkboxes);
|
||||
getChild<LLUICtrl>("next_owner_transfer")->setCommitCallback(handle_checkboxes);
|
||||
getChild<LLUICtrl>("everyone_export")->setCommitCallback(handle_checkboxes);
|
||||
|
||||
refresh();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterPerms::onClickOK(void* data)
|
||||
{
|
||||
LLFloaterPerms* self = static_cast<LLFloaterPerms*>(data);
|
||||
self->ok();
|
||||
self->close();
|
||||
}
|
||||
|
||||
//static
|
||||
void LLFloaterPerms::onClickCancel(void* data)
|
||||
{
|
||||
LLFloaterPerms* self = static_cast<LLFloaterPerms*>(data);
|
||||
self->cancel();
|
||||
self->close();
|
||||
}
|
||||
|
||||
void LLFloaterPerms::ok()
|
||||
{
|
||||
refresh(); // Changes were already applied to saved settings. Refreshing internal values makes it official.
|
||||
}
|
||||
|
||||
void LLFloaterPerms::cancel()
|
||||
{
|
||||
gSavedSettings.setBOOL("ShareWithGroup", mShareWithGroup);
|
||||
gSavedSettings.setBOOL("EveryoneCopy", mEveryoneCopy);
|
||||
gSavedSettings.setBOOL("NextOwnerCopy", mNextOwnerCopy);
|
||||
gSavedSettings.setBOOL("NextOwnerModify", mNextOwnerModify);
|
||||
gSavedSettings.setBOOL("NextOwnerTransfer", mNextOwnerTransfer);
|
||||
gSavedPerAccountSettings.setBOOL("EveryoneExport", everyone_export);
|
||||
}
|
||||
|
||||
void LLFloaterPerms::refresh()
|
||||
{
|
||||
mShareWithGroup = gSavedSettings.getBOOL("ShareWithGroup");
|
||||
mEveryoneCopy = gSavedSettings.getBOOL("EveryoneCopy");
|
||||
mNextOwnerCopy = gSavedSettings.getBOOL("NextOwnerCopy");
|
||||
mNextOwnerModify = gSavedSettings.getBOOL("NextOwnerModify");
|
||||
mNextOwnerTransfer = gSavedSettings.getBOOL("NextOwnerTransfer");
|
||||
everyone_export = gSavedPerAccountSettings.getBOOL("EveryoneExport");
|
||||
}
|
||||
|
||||
void LLFloaterPerms::onClose(bool app_quitting)
|
||||
{
|
||||
// Cancel any unsaved changes before closing.
|
||||
// Note: when closed due to the OK button this amounts to a no-op.
|
||||
cancel();
|
||||
LLFloater::onClose(app_quitting);
|
||||
}
|
||||
|
||||
//static
|
||||
//static
|
||||
U32 LLFloaterPerms::getGroupPerms(std::string prefix)
|
||||
{
|
||||
return gSavedSettings.getBOOL(prefix+"ShareWithGroup") ? PERM_COPY : PERM_NONE;
|
||||
{
|
||||
return gSavedSettings.getBOOL(prefix+"ShareWithGroup") ? PERM_COPY | PERM_MOVE | PERM_MODIFY : PERM_NONE;
|
||||
}
|
||||
|
||||
//static
|
||||
//static
|
||||
U32 LLFloaterPerms::getEveryonePerms(std::string prefix)
|
||||
{
|
||||
U32 flags = PERM_NONE;
|
||||
if (LFSimFeatureHandler::instance().simSupportsExport() && prefix.empty() && gSavedPerAccountSettings.getBOOL("EveryoneExport")) // TODO: Bulk enable export?
|
||||
if (prefix != "Bulk" && LFSimFeatureHandler::instance().simSupportsExport() && prefix.empty() && gSavedPerAccountSettings.getBOOL(prefix+"EveryoneExport")) // Singu TODO: Bulk?
|
||||
flags |= PERM_EXPORT;
|
||||
if (gSavedSettings.getBOOL(prefix+"EveryoneCopy"))
|
||||
flags |= PERM_COPY;
|
||||
return flags;
|
||||
}
|
||||
|
||||
//static
|
||||
//static
|
||||
U32 LLFloaterPerms::getNextOwnerPermsInverted(std::string prefix)
|
||||
{
|
||||
// Sets bits for permissions that are off
|
||||
U32 flags = PERM_MOVE;
|
||||
if (!gSavedSettings.getBOOL(prefix+"NextOwnerCopy"))
|
||||
{
|
||||
flags |= PERM_COPY;
|
||||
}
|
||||
if (!gSavedSettings.getBOOL(prefix+"NextOwnerModify"))
|
||||
{
|
||||
flags |= PERM_MODIFY;
|
||||
}
|
||||
if (!gSavedSettings.getBOOL(prefix+"NextOwnerTransfer"))
|
||||
{
|
||||
flags |= PERM_TRANSFER;
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
//static
|
||||
U32 LLFloaterPerms::getNextOwnerPerms(std::string prefix)
|
||||
{
|
||||
U32 flags = PERM_MOVE;
|
||||
@@ -197,9 +102,228 @@ U32 LLFloaterPerms::getNextOwnerPerms(std::string prefix)
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
//static
|
||||
void LLFloaterPerms::onClickHelp(void* data)
|
||||
namespace
|
||||
{
|
||||
LLNotificationsUtil::add("ClickUploadHelpPermissions");
|
||||
bool everyone_export;
|
||||
void handle_checkboxes(LLView* view, const std::string& ctrl_name, const LLSD& value, const std::string& type)
|
||||
{
|
||||
if (ctrl_name == type+"everyone_export")
|
||||
{
|
||||
view->getChildView(type+"next_owner_copy")->setEnabled(!value);
|
||||
view->getChildView(type+"next_owner_modify")->setEnabled(!value);
|
||||
view->getChildView(type+"next_owner_transfer")->setEnabled(!value);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ctrl_name == type+"next_owner_copy")
|
||||
{
|
||||
if (!value) // Implements fair use
|
||||
gSavedSettings.setBOOL(type+"NextOwnerTransfer", true);
|
||||
view->getChildView(type+"next_owner_transfer")->setEnabled(value);
|
||||
}
|
||||
if (!value) // If any of these are unchecked, export can no longer be checked.
|
||||
view->getChildView(type+"everyone_export")->setEnabled(false);
|
||||
else
|
||||
view->getChildView(type+"everyone_export")->setEnabled(LFSimFeatureHandler::instance().simSupportsExport() && LLFloaterPerms::getNextOwnerPerms(type) == PERM_ITEM_UNRESTRICTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool mCapSent = false;
|
||||
|
||||
LLFloaterPermsDefault::LLFloaterPermsDefault(const LLSD& seed)
|
||||
: LLFloater()
|
||||
{
|
||||
mCommitCallbackRegistrar.add("PermsDefault.OK", boost::bind(&LLFloaterPermsDefault::onClickOK, this));
|
||||
mCommitCallbackRegistrar.add("PermsDefault.Cancel", boost::bind(&LLFloaterPermsDefault::onClickCancel, this));
|
||||
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_perm_prefs.xml");
|
||||
}
|
||||
|
||||
// String equivalents of enum Categories - initialization order must match enum order!
|
||||
const std::string LLFloaterPermsDefault::sCategoryNames[CAT_LAST] =
|
||||
{
|
||||
"Objects",
|
||||
"Uploads",
|
||||
"Scripts",
|
||||
"Notecards",
|
||||
"Gestures",
|
||||
"Wearables"
|
||||
};
|
||||
|
||||
void LLFloaterPermsDefault::initCheckboxes(bool export_support, const std::string& type)
|
||||
{
|
||||
const U32 next_owner_perms = LLFloaterPerms::getNextOwnerPerms(type);
|
||||
getChildView(type + "everyone_export")->setEnabled(export_support && next_owner_perms == PERM_ITEM_UNRESTRICTED);
|
||||
|
||||
if (!(next_owner_perms & PERM_COPY))
|
||||
{
|
||||
getChildView(type + "next_owner_transfer")->setEnabled(false);
|
||||
}
|
||||
else if (export_support)
|
||||
{
|
||||
bool export_off = !gSavedPerAccountSettings.getBOOL(type+"EveryoneExport");
|
||||
getChildView(type + "next_owner_copy")->setEnabled(export_off);
|
||||
getChildView(type + "next_owner_modify")->setEnabled(export_off);
|
||||
getChildView(type + "next_owner_transfer")->setEnabled(export_off);
|
||||
}
|
||||
else // Set type+EveryoneExport false, just in case.
|
||||
gSavedPerAccountSettings.setBOOL(type+"EveryoneExport", false);
|
||||
}
|
||||
|
||||
BOOL LLFloaterPermsDefault::postBuild()
|
||||
{
|
||||
//handle_checkboxes
|
||||
bool export_support = LFSimFeatureHandler::instance().simSupportsExport();
|
||||
bool is_sl = gHippoGridManager->getCurrentGrid()->isSecondLife();
|
||||
for (S32 i = 0; i < CAT_LAST; ++i)
|
||||
{
|
||||
const std::string& type(sCategoryNames[i]);
|
||||
initCheckboxes(export_support, type);
|
||||
commit_callback_t handle_checks(boost::bind(handle_checkboxes, this, boost::bind(&LLView::getName, _1), _2, type));
|
||||
getChild<LLUICtrl>(type + "next_owner_copy")->setCommitCallback(handle_checks);
|
||||
getChild<LLUICtrl>(type + "next_owner_modify")->setCommitCallback(handle_checks);
|
||||
getChild<LLUICtrl>(type + "next_owner_transfer")->setCommitCallback(handle_checks);
|
||||
if (is_sl)
|
||||
getChildView(type + "everyone_export")->setVisible(false);
|
||||
else
|
||||
getChild<LLUICtrl>(type + "everyone_export")->setCommitCallback(handle_checks);
|
||||
}
|
||||
if (is_sl)
|
||||
{
|
||||
LLView* view(getChildView("ExportationLabel"));
|
||||
S32 shift(view->getRect().getWidth()); // Determine size of export area
|
||||
LLRect rect(getRect());
|
||||
rect.mRight -= shift;
|
||||
setRect(rect); // Cut off the export side
|
||||
view->setVisible(false); // Hide label
|
||||
// Move bottom buttons over so they look nice.
|
||||
shift /= -2;
|
||||
view = getChildView("ok");
|
||||
rect = view->getRect();
|
||||
rect.translate(shift, 0);
|
||||
view->setRect(rect);
|
||||
view = getChildView("cancel");
|
||||
rect = view->getRect();
|
||||
rect.translate(shift, 0);
|
||||
view->setRect(rect);
|
||||
}
|
||||
|
||||
refresh();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::onClickOK()
|
||||
{
|
||||
ok();
|
||||
close();
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::onClickCancel()
|
||||
{
|
||||
cancel();
|
||||
close();
|
||||
}
|
||||
|
||||
class LLFloaterPermsResponder : public LLHTTPClient::ResponderWithResult
|
||||
{
|
||||
public:
|
||||
LLFloaterPermsResponder() : LLHTTPClient::ResponderWithResult() {}
|
||||
private:
|
||||
static std::string sPreviousReason;
|
||||
|
||||
void error(U32 status, const std::string& reason)
|
||||
{
|
||||
// Do not display the same error more than once in a row
|
||||
if (reason != sPreviousReason)
|
||||
{
|
||||
sPreviousReason = reason;
|
||||
LLSD args;
|
||||
args["REASON"] = reason;
|
||||
LLNotificationsUtil::add("DefaultObjectPermissions", args);
|
||||
}
|
||||
}
|
||||
void result(const LLSD& content)
|
||||
{
|
||||
// Since we have had a successful POST call be sure to display the next error message
|
||||
// even if it is the same as a previous one.
|
||||
sPreviousReason = "";
|
||||
mCapSent = true;
|
||||
LL_INFOS("FloaterPermsResponder") << "Sent default permissions to simulator" << LL_ENDL;
|
||||
}
|
||||
/*virtual*/ AIHTTPTimeoutPolicy const& getHTTPTimeoutPolicy() const { return floaterPermsResponder_timeout; }
|
||||
/*virtual*/ char const* getName() const { return "LLFloaterPermsResponder"; }
|
||||
};
|
||||
|
||||
std::string LLFloaterPermsResponder::sPreviousReason;
|
||||
|
||||
void LLFloaterPermsDefault::sendInitialPerms()
|
||||
{
|
||||
if (!mCapSent)
|
||||
{
|
||||
updateCap();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::updateCap()
|
||||
{
|
||||
std::string object_url = gAgent.getRegion()->getCapability("AgentPreferences");
|
||||
|
||||
if (!object_url.empty())
|
||||
{
|
||||
LLSD report = LLSD::emptyMap();
|
||||
report["default_object_perm_masks"]["Group"] =
|
||||
(LLSD::Integer)LLFloaterPerms::getGroupPerms(sCategoryNames[CAT_OBJECTS]);
|
||||
report["default_object_perm_masks"]["Everyone"] =
|
||||
(LLSD::Integer)LLFloaterPerms::getEveryonePerms(sCategoryNames[CAT_OBJECTS]);
|
||||
report["default_object_perm_masks"]["NextOwner"] =
|
||||
(LLSD::Integer)LLFloaterPerms::getNextOwnerPerms(sCategoryNames[CAT_OBJECTS]);
|
||||
|
||||
LLHTTPClient::post(object_url, report, new LLFloaterPermsResponder());
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::ok()
|
||||
{
|
||||
// Changes were already applied to saved settings.
|
||||
// Refreshing internal values makes it official.
|
||||
refresh();
|
||||
|
||||
// We know some setting has changed but not which one. Just in case it was a setting for
|
||||
// object permissions tell the server what the values are.
|
||||
updateCap();
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::cancel()
|
||||
{
|
||||
for (U32 iter = CAT_OBJECTS; iter < CAT_LAST; iter++)
|
||||
{
|
||||
gSavedSettings.setBOOL(sCategoryNames[iter]+"ShareWithGroup", mShareWithGroup[iter]);
|
||||
gSavedSettings.setBOOL(sCategoryNames[iter]+"EveryoneCopy", mEveryoneCopy[iter]);
|
||||
gSavedSettings.setBOOL(sCategoryNames[iter]+"NextOwnerCopy", mNextOwnerCopy[iter]);
|
||||
gSavedSettings.setBOOL(sCategoryNames[iter]+"NextOwnerModify", mNextOwnerModify[iter]);
|
||||
gSavedSettings.setBOOL(sCategoryNames[iter]+"NextOwnerTransfer", mNextOwnerTransfer[iter]);
|
||||
gSavedPerAccountSettings.setBOOL(sCategoryNames[iter]+"EveryoneExport", mEveryoneExport[iter]);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::refresh()
|
||||
{
|
||||
for (U32 iter = CAT_OBJECTS; iter < CAT_LAST; iter++)
|
||||
{
|
||||
mShareWithGroup[iter] = gSavedSettings.getBOOL(sCategoryNames[iter]+"ShareWithGroup");
|
||||
mEveryoneCopy[iter] = gSavedSettings.getBOOL(sCategoryNames[iter]+"EveryoneCopy");
|
||||
mNextOwnerCopy[iter] = gSavedSettings.getBOOL(sCategoryNames[iter]+"NextOwnerCopy");
|
||||
mNextOwnerModify[iter] = gSavedSettings.getBOOL(sCategoryNames[iter]+"NextOwnerModify");
|
||||
mNextOwnerTransfer[iter] = gSavedSettings.getBOOL(sCategoryNames[iter]+"NextOwnerTransfer");
|
||||
mEveryoneExport[iter] = gSavedPerAccountSettings.getBOOL(sCategoryNames[iter]+"EveryoneExport");
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPermsDefault::onClose(bool app_quitting)
|
||||
{
|
||||
// Cancel any unsaved changes before closing.
|
||||
// Note: when closed due to the OK button this amounts to a no-op.
|
||||
cancel();
|
||||
LLFloater::onClose(app_quitting);
|
||||
}
|
||||
|
||||
@@ -36,35 +36,55 @@
|
||||
|
||||
#include "llfloater.h"
|
||||
|
||||
class LLFloaterPerms : public LLFloater, public LLFloaterSingleton<LLFloaterPerms>
|
||||
namespace LLFloaterPerms
|
||||
{
|
||||
friend class LLUISingleton<LLFloaterPerms, VisibilityPolicy<LLFloater> >;
|
||||
// Convenience methods to get current permission preference bitfields from saved settings:
|
||||
U32 getEveryonePerms(std::string prefix=""); // prefix + "EveryoneCopy"
|
||||
U32 getGroupPerms(std::string prefix=""); // prefix + "ShareWithGroup"
|
||||
U32 getNextOwnerPerms(std::string prefix=""); // bitfield for prefix + "NextOwner" + "Copy", "Modify", and "Transfer"
|
||||
U32 getNextOwnerPermsInverted(std::string prefix="");
|
||||
}
|
||||
|
||||
class LLFloaterPermsDefault : public LLFloater, public LLFloaterSingleton<LLFloaterPermsDefault>
|
||||
{
|
||||
friend class LLUISingleton<LLFloaterPermsDefault, VisibilityPolicy<LLFloater> >;
|
||||
|
||||
public:
|
||||
/*virtual*/ void onClose(bool app_quitting = false);
|
||||
/*virtual*/ BOOL postBuild();
|
||||
void initCheckboxes(bool export_support, const std::string& type);
|
||||
void ok();
|
||||
void cancel();
|
||||
static void onClickOK(void*);
|
||||
static void onClickCancel(void*);
|
||||
// Convenience methods to get current permission preference bitfields from saved settings:
|
||||
static U32 getEveryonePerms(std::string prefix=""); // prefix + "EveryoneCopy"
|
||||
static U32 getGroupPerms(std::string prefix=""); // prefix + "ShareWithGroup"
|
||||
static U32 getNextOwnerPerms(std::string prefix=""); // bitfield for prefix + "NextOwner" + "Copy", "Modify", and "Transfer"
|
||||
void onClickOK();
|
||||
void onClickCancel();
|
||||
static void sendInitialPerms();
|
||||
static void updateCap();
|
||||
|
||||
// Update instantiation of sCategoryNames in the .cpp file to match if you change this!
|
||||
enum Categories
|
||||
{
|
||||
CAT_OBJECTS,
|
||||
CAT_UPLOADS,
|
||||
CAT_SCRIPTS,
|
||||
CAT_NOTECARDS,
|
||||
CAT_GESTURES,
|
||||
CAT_WEARABLES,
|
||||
CAT_LAST
|
||||
};
|
||||
|
||||
private:
|
||||
LLFloaterPerms(const LLSD& seed);
|
||||
LLFloaterPermsDefault(const LLSD& seed);
|
||||
void refresh();
|
||||
|
||||
/// callback for the menus help button
|
||||
static void onClickHelp(void* data);
|
||||
static const std::string sCategoryNames[CAT_LAST];
|
||||
|
||||
BOOL // cached values only for implementing cancel.
|
||||
mShareWithGroup,
|
||||
mEveryoneCopy,
|
||||
mNextOwnerCopy,
|
||||
mNextOwnerModify,
|
||||
mNextOwnerTransfer;
|
||||
// cached values only for implementing cancel.
|
||||
bool mShareWithGroup[CAT_LAST];
|
||||
bool mEveryoneCopy[CAT_LAST];
|
||||
bool mEveryoneExport[CAT_LAST];
|
||||
bool mNextOwnerCopy[CAT_LAST];
|
||||
bool mNextOwnerModify[CAT_LAST];
|
||||
bool mNextOwnerTransfer[CAT_LAST];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1434,8 +1434,8 @@ void LLSnapshotLivePreview::saveTexture()
|
||||
LLFolderType::FT_SNAPSHOT_CATEGORY,
|
||||
LLInventoryType::IT_SNAPSHOT,
|
||||
PERM_ALL, // Note: Snapshots to inventory is a special case of content upload
|
||||
LLFloaterPerms::getGroupPerms(), // that is more permissive than other uploads
|
||||
LLFloaterPerms::getEveryonePerms(),
|
||||
LLFloaterPerms::getGroupPerms("Uploads"), // that is more permissive than other uploads
|
||||
LLFloaterPerms::getEveryonePerms("Uploads"),
|
||||
"Snapshot : " + pos_string,
|
||||
callback, expected_upload_cost, user_data, &LLSnapshotLivePreview::saveTextureDone2))
|
||||
{
|
||||
|
||||
@@ -305,7 +305,7 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, std::string type,
|
||||
parent_id,
|
||||
LLAssetType::AT_LSL_TEXT,
|
||||
LLInventoryType::IT_LSL,
|
||||
LLFloaterPerms::getNextOwnerPerms("Script"));
|
||||
LLFloaterPerms::getNextOwnerPerms("Scripts"));
|
||||
}
|
||||
else if ("notecard" == type)
|
||||
{
|
||||
@@ -314,7 +314,7 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, std::string type,
|
||||
parent_id,
|
||||
LLAssetType::AT_NOTECARD,
|
||||
LLInventoryType::IT_NOTECARD,
|
||||
PERM_ALL);
|
||||
LLFloaterPerms::getNextOwnerPerms("Notecards"));
|
||||
}
|
||||
else if ("gesture" == type)
|
||||
{
|
||||
@@ -323,7 +323,7 @@ void do_create(LLInventoryModel *model, LLInventoryPanel *ptr, std::string type,
|
||||
parent_id,
|
||||
LLAssetType::AT_GESTURE,
|
||||
LLInventoryType::IT_GESTURE,
|
||||
PERM_ALL);
|
||||
LLFloaterPerms::getNextOwnerPerms("Gestures"));
|
||||
}
|
||||
else if ("outfit" == type || ("update outfit" == type && !LLAppearanceMgr::getInstance()->updateBaseOutfit())) // If updateBaseOutfit fails, prompt to make a new outfit
|
||||
{
|
||||
|
||||
@@ -237,7 +237,7 @@ struct MenuFloaterDict : public LLSingleton<MenuFloaterDict>
|
||||
registerFloater<LLFloaterOutbox> ("outbox");
|
||||
registerFloater<LLFloaterPathfindingCharacters> ("pathfinding_characters");
|
||||
registerFloater<LLFloaterPathfindingLinksets> ("pathfinding_linksets");
|
||||
registerFloater<LLFloaterPerms> ("perm prefs");
|
||||
registerFloater<LLFloaterPermsDefault> ("perm prefs");
|
||||
registerFloater<LLFloaterAvatarList> ("radar");
|
||||
registerFloater<LLFloaterScriptLimits> ("script info");
|
||||
registerFloater<LLFloaterStats> ("stat bar");
|
||||
|
||||
@@ -1544,9 +1544,9 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
|
||||
result["asset_type"] = "mesh";
|
||||
result["inventory_type"] = "object";
|
||||
result["description"] = "(No Description)";
|
||||
result["next_owner_mask"] = LLSD::Integer(LLFloaterPerms::getNextOwnerPerms());
|
||||
result["group_mask"] = LLSD::Integer(LLFloaterPerms::getGroupPerms());
|
||||
result["everyone_mask"] = LLSD::Integer(LLFloaterPerms::getEveryonePerms());
|
||||
result["next_owner_mask"] = LLSD::Integer(LLFloaterPerms::getNextOwnerPerms("Uploads"));
|
||||
result["group_mask"] = LLSD::Integer(LLFloaterPerms::getGroupPerms("Uploads"));
|
||||
result["everyone_mask"] = LLSD::Integer(LLFloaterPerms::getEveryonePerms("Uploads"));
|
||||
|
||||
res["mesh_list"] = LLSD::emptyArray();
|
||||
res["texture_list"] = LLSD::emptyArray();
|
||||
|
||||
@@ -181,12 +181,14 @@ void LLPanelContents::onClickNewScript(void *userdata)
|
||||
|
||||
LLPermissions perm;
|
||||
perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, LLUUID::null);
|
||||
|
||||
// Parameters are base, owner, everyone, group, next
|
||||
perm.initMasks(
|
||||
PERM_ALL,
|
||||
PERM_ALL,
|
||||
PERM_NONE,
|
||||
PERM_NONE,
|
||||
LLFloaterPerms::getNextOwnerPerms("Script"));
|
||||
LLFloaterPerms::getEveryonePerms("Scripts"),
|
||||
LLFloaterPerms::getGroupPerms("Scripts"),
|
||||
LLFloaterPerms::getNextOwnerPerms("Scripts"));
|
||||
std::string desc;
|
||||
LLViewerAssetType::generateDescriptionFor(LLAssetType::AT_LSL_TEXT, desc);
|
||||
LLPointer<LLViewerInventoryItem> new_item =
|
||||
|
||||
@@ -1904,7 +1904,7 @@ void LLLiveLSLEditor::loadAsset()
|
||||
mScriptEd->enableSave(FALSE);
|
||||
LLPermissions perm;
|
||||
perm.init(gAgent.getID(), gAgent.getID(), LLUUID::null, gAgent.getGroupID());
|
||||
perm.initMasks(PERM_ALL, PERM_ALL, PERM_NONE, PERM_NONE, LLFloaterPerms::getNextOwnerPerms("Script"));
|
||||
perm.initMasks(PERM_ALL, PERM_ALL, LLFloaterPerms::getEveryonePerms("Scripts"), LLFloaterPerms::getGroupPerms("Scripts"), LLFloaterPerms::getNextOwnerPerms("Scripts"));
|
||||
mItem = new LLViewerInventoryItem(mItemUUID,
|
||||
mObjectUUID,
|
||||
perm,
|
||||
|
||||
@@ -374,6 +374,30 @@ void hooked_process_sound_trigger(LLMessageSystem *msg, void **)
|
||||
LLFloaterAvatarList::sound_trigger_hook(msg,NULL);
|
||||
}
|
||||
|
||||
void convert_legacy_settings()
|
||||
{
|
||||
// Convert legacy settings to new ones here.
|
||||
if (!gSavedPerAccountSettings.getBOOL("DefaultUploadPermissionsConverted"))
|
||||
{
|
||||
gSavedSettings.setBOOL("UploadsEveryoneCopy", gSavedSettings.getBOOL("EveryoneCopy"));
|
||||
bool val = gSavedPerAccountSettings.getBOOL("EveryoneExport");
|
||||
gSavedPerAccountSettings.setBOOL("UploadsEveryoneExport", val);
|
||||
gSavedPerAccountSettings.setBOOL("ObjectsEveryoneExport", val);
|
||||
val = gSavedSettings.getBOOL("NextOwnerCopy");
|
||||
gSavedSettings.setBOOL("UploadsNextOwnerCopy", val);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerCopy", val);
|
||||
val = gSavedSettings.getBOOL("NextOwnerModify");
|
||||
gSavedSettings.setBOOL("UploadsNextOwnerModify", val);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerModify", val);
|
||||
val = gSavedSettings.getBOOL("NextOwnerTransfer");
|
||||
gSavedSettings.setBOOL("UploadsNextOwnerTransfer", val);
|
||||
gSavedSettings.setBOOL("ObjectsNextOwnerTransfer", val);
|
||||
val = gSavedSettings.getBOOL("NextOwnerTransfer");
|
||||
gSavedSettings.setBOOL("UploadsShareWithGroup", gSavedSettings.getBOOL("ShareWithGroup"));
|
||||
gSavedPerAccountSettings.setBOOL("DefaultUploadPermissionsConverted", true);
|
||||
}
|
||||
}
|
||||
|
||||
void init_audio()
|
||||
{
|
||||
if (FALSE == gSavedSettings.getBOOL("NoAudio"))
|
||||
@@ -1039,6 +1063,8 @@ bool idle_startup()
|
||||
gSavedPerAccountSettings.setU32("LastLogoff", time_corrected());
|
||||
}
|
||||
|
||||
convert_legacy_settings();
|
||||
|
||||
//Default the path if one isn't set.
|
||||
if (gSavedPerAccountSettings.getString("InstantMessageLogPath").empty())
|
||||
{
|
||||
@@ -1554,6 +1580,7 @@ bool idle_startup()
|
||||
}
|
||||
if (gSavedSettings.getBOOL("LiruGridInTitle")) gWindowTitle += "- " + gHippoGridManager->getCurrentGrid()->getGridName() + " ";
|
||||
gViewerWindow->getWindow()->setTitle(gWindowTitle += "- " + name);
|
||||
|
||||
// Pass the user information to the voice chat server interface.
|
||||
LLVoiceClient::getInstance()->userAuthorized(name, gAgentID);
|
||||
// create the default proximal channel
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#include "llinventorybridge.h"
|
||||
#include "llinventorypanel.h"
|
||||
#include "llfloaterinventory.h"
|
||||
#include "llfloaterperms.h"
|
||||
|
||||
#include "lllandmark.h"
|
||||
#include "llviewerassettype.h"
|
||||
@@ -950,23 +951,72 @@ void activate_gesture_cb(const LLUUID& inv_item)
|
||||
LLGestureMgr::instance().activateGesture(inv_item);
|
||||
}
|
||||
|
||||
void create_script_cb(const LLUUID& inv_item)
|
||||
{
|
||||
if (!inv_item.isNull())
|
||||
{
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Scripts"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Scripts"));
|
||||
|
||||
item->setPermissions(perm);
|
||||
|
||||
item->updateServer(FALSE);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void create_gesture_cb(const LLUUID& inv_item)
|
||||
{
|
||||
if (inv_item.isNull())
|
||||
return;
|
||||
|
||||
LLGestureMgr::instance().activateGesture(inv_item);
|
||||
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (!item) return;
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
if(!LLPreview::show(inv_item,FALSE))
|
||||
if (!inv_item.isNull())
|
||||
{
|
||||
LLPreviewGesture* preview = LLPreviewGesture::show(std::string("Gesture: ") + item->getName(), inv_item, LLUUID::null);
|
||||
// Force to be entirely onscreen.
|
||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
||||
LLGestureMgr::instance().activateGesture(inv_item);
|
||||
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Gestures"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Gestures"));
|
||||
|
||||
item->setPermissions(perm);
|
||||
|
||||
item->updateServer(FALSE);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
if (!LLPreview::show(inv_item,FALSE))
|
||||
{
|
||||
LLPreviewGesture* preview = LLPreviewGesture::show(std::string("Gesture: ") + item->getName(), inv_item, LLUUID::null);
|
||||
// Force to be entirely onscreen.
|
||||
gFloaterView->adjustToFitScreen(preview, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void create_notecard_cb(const LLUUID& inv_item)
|
||||
{
|
||||
if (!inv_item.isNull())
|
||||
{
|
||||
LLViewerInventoryItem* item = gInventory.getItem(inv_item);
|
||||
if (item)
|
||||
{
|
||||
LLPermissions perm = item->getPermissions();
|
||||
perm.setMaskEveryone(LLFloaterPerms::getEveryonePerms("Notecards"));
|
||||
perm.setMaskGroup(LLFloaterPerms::getGroupPerms("Notecards"));
|
||||
|
||||
item->setPermissions(perm);
|
||||
|
||||
item->updateServer(FALSE);
|
||||
gInventory.updateItem(item);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1225,22 +1275,45 @@ void create_new_item(const std::string& name,
|
||||
LLViewerAssetType::generateDescriptionFor(asset_type, desc);
|
||||
next_owner_perm = (next_owner_perm) ? next_owner_perm : PERM_MOVE | PERM_TRANSFER;
|
||||
|
||||
|
||||
if (inv_type == LLInventoryType::IT_GESTURE)
|
||||
LLPointer<LLInventoryCallback> cb = NULL;
|
||||
|
||||
switch(inv_type)
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = new LLBoostFuncInventoryCallback(create_gesture_cb);
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type,
|
||||
NOT_WEARABLE, next_owner_perm, cb);
|
||||
case LLInventoryType::IT_LSL:
|
||||
{
|
||||
cb = new LLBoostFuncInventoryCallback(create_script_cb);
|
||||
next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Scripts");
|
||||
break;
|
||||
}
|
||||
|
||||
case LLInventoryType::IT_GESTURE:
|
||||
{
|
||||
cb = new LLBoostFuncInventoryCallback(create_gesture_cb);
|
||||
next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Gestures");
|
||||
break;
|
||||
}
|
||||
|
||||
case LLInventoryType::IT_NOTECARD:
|
||||
{
|
||||
cb = new LLBoostFuncInventoryCallback(create_notecard_cb);
|
||||
next_owner_perm = LLFloaterPerms::getNextOwnerPerms("Notecards");
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
LLPointer<LLInventoryCallback> cb = NULL;
|
||||
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
|
||||
parent_id, LLTransactionID::tnull, name, desc, asset_type, inv_type,
|
||||
NOT_WEARABLE, next_owner_perm, cb);
|
||||
}
|
||||
|
||||
|
||||
create_inventory_item(gAgent.getID(),
|
||||
gAgent.getSessionID(),
|
||||
parent_id,
|
||||
LLTransactionID::tnull,
|
||||
name,
|
||||
desc,
|
||||
asset_type,
|
||||
inv_type,
|
||||
NOT_WEARABLE,
|
||||
next_owner_perm,
|
||||
cb);
|
||||
}
|
||||
|
||||
const std::string NEW_LSL_NAME = "New Script"; // *TODO:Translate? (probably not)
|
||||
@@ -1281,7 +1354,7 @@ const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probabl
|
||||
parent_id,
|
||||
LLAssetType::AT_LSL_TEXT,
|
||||
LLInventoryType::IT_LSL,
|
||||
PERM_MOVE | PERM_TRANSFER);
|
||||
PERM_MOVE | PERM_TRANSFER); // overridden in create_new_item
|
||||
}
|
||||
else if ("notecard" == type_name)
|
||||
{
|
||||
@@ -1290,7 +1363,7 @@ const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probabl
|
||||
parent_id,
|
||||
LLAssetType::AT_NOTECARD,
|
||||
LLInventoryType::IT_NOTECARD,
|
||||
PERM_ALL);
|
||||
PERM_ALL); // overridden in create_new_item
|
||||
}
|
||||
else if ("gesture" == type_name)
|
||||
{
|
||||
@@ -1299,7 +1372,7 @@ const std::string NEW_GESTURE_NAME = "New Gesture"; // *TODO:Translate? (probabl
|
||||
parent_id,
|
||||
LLAssetType::AT_GESTURE,
|
||||
LLInventoryType::IT_GESTURE,
|
||||
PERM_ALL);
|
||||
PERM_ALL); // overridden in create_new_item
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -440,9 +440,20 @@ class LLFileUploadBulk : public view_listener_t
|
||||
S32 expected_upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
|
||||
void *userdata = NULL;
|
||||
gSavedSettings.setBOOL("TemporaryUpload", enabled);
|
||||
upload_new_resource(filename, asset_name, asset_name, 0, LLFolderType::FT_NONE, LLInventoryType::IT_NONE,
|
||||
LLFloaterPerms::getNextOwnerPerms(), LLFloaterPerms::getGroupPerms(), LLFloaterPerms::getEveryonePerms(),
|
||||
display_name, callback, expected_upload_cost, userdata);
|
||||
upload_new_resource(
|
||||
filename,
|
||||
asset_name,
|
||||
asset_name,
|
||||
0,
|
||||
LLFolderType::FT_NONE,
|
||||
LLInventoryType::IT_NONE,
|
||||
LLFloaterPerms::getNextOwnerPerms("Uploads"),
|
||||
LLFloaterPerms::getGroupPerms("Uploads"),
|
||||
LLFloaterPerms::getEveryonePerms("Uploads"),
|
||||
display_name,
|
||||
callback,
|
||||
expected_upload_cost,
|
||||
userdata);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -925,7 +936,7 @@ void upload_new_resource(const std::string& src_filename, std::string name,
|
||||
if(exten == "lsl" || exten == "gesture" || exten == "notecard") // added notecard Oct 15 2009
|
||||
{
|
||||
LLInventoryType::EType inv_type = LLInventoryType::IT_GESTURE;
|
||||
if(exten == "lsl") inv_type = LLInventoryType::IT_LSL;
|
||||
if (exten == "lsl") inv_type = LLInventoryType::IT_LSL;
|
||||
else if(exten == "gesture") inv_type = LLInventoryType::IT_GESTURE;
|
||||
else if(exten == "notecard") inv_type = LLInventoryType::IT_NOTECARD;
|
||||
create_inventory_item( gAgent.getID(),
|
||||
@@ -1374,6 +1385,18 @@ void NewResourceItemCallback::fire(const LLUUID& new_item_id)
|
||||
LLUUID vfile_id = LLUUID(new_item->getDescription());
|
||||
if(vfile_id.isNull()) return;
|
||||
new_item->setDescription("(No Description)");
|
||||
std::string type("Uploads");
|
||||
switch(new_item->getInventoryType())
|
||||
{
|
||||
case LLInventoryType::IT_LSL: type = "Scripts"; break;
|
||||
case LLInventoryType::IT_GESTURE: type = "Gestures"; break;
|
||||
case LLInventoryType::IT_NOTECARD: type = "Notecard"; break;
|
||||
}
|
||||
LLPermissions perms = new_item->getPermissions();
|
||||
perms.setMaskNext(LLFloaterPerms::getNextOwnerPerms(type));
|
||||
perms.setMaskGroup(LLFloaterPerms::getGroupPerms(type));
|
||||
perms.setMaskEveryone(LLFloaterPerms::getEveryonePerms(type));
|
||||
new_item->setPermissions(perms);
|
||||
new_item->updateServer(FALSE);
|
||||
gInventory.updateItem(new_item);
|
||||
gInventory.notifyObservers();
|
||||
|
||||
@@ -2622,6 +2622,7 @@ void LLViewerObject::saveScript(
|
||||
* interaction with doUpdateInventory() called below.
|
||||
*/
|
||||
lldebugs << "LLViewerObject::saveScript() " << item->getUUID() << " " << item->getAssetUUID() << llendl;
|
||||
|
||||
LLPointer<LLViewerInventoryItem> task_item =
|
||||
new LLViewerInventoryItem(item->getUUID(), mID, item->getPermissions(),
|
||||
item->getAssetUUID(), item->getType(),
|
||||
|
||||
@@ -967,8 +967,8 @@ void LLObjectBackup::importObject_continued(AIFilePicker* filepicker)
|
||||
// User canceled save.
|
||||
return;
|
||||
}
|
||||
|
||||
std::string file_name = filepicker->getFilename();
|
||||
|
||||
std::string file_name = filepicker->getFilename();
|
||||
mFolder = gDirUtilp->getDirName(file_name);
|
||||
llifstream import_file(file_name);
|
||||
LLSDSerialize::fromXML(mLLSD, import_file);
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
#include "lldir.h"
|
||||
#include "lleventpoll.h"
|
||||
#include "llfloatergodtools.h"
|
||||
#include "llfloaterperms.h"
|
||||
#include "llfloaterreporter.h"
|
||||
#include "llfloaterregioninfo.h"
|
||||
#include "llhttpnode.h"
|
||||
@@ -1694,6 +1695,7 @@ void LLViewerRegion::unpackRegionHandshake()
|
||||
|
||||
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
||||
{
|
||||
capabilityNames.append("AgentPreferences");
|
||||
capabilityNames.append("AgentState");
|
||||
capabilityNames.append("AttachmentResources");
|
||||
//capabilityNames.append("AvatarPickerSearch"); //Display name/SLID lookup (llfloateravatarpicker.cpp)
|
||||
@@ -1998,6 +2000,8 @@ void LLViewerRegion::setCapabilitiesReceived(bool received)
|
||||
{
|
||||
mCapabilitiesReceivedSignal(getRegionID());
|
||||
|
||||
LLFloaterPermsDefault::sendInitialPerms();
|
||||
|
||||
// This is a single-shot signal. Forget callbacks to save resources.
|
||||
mCapabilitiesReceivedSignal.disconnect_all_slots();
|
||||
|
||||
|
||||
@@ -210,8 +210,6 @@ Dieses Kontrollkästchen zeigt Folgendes an:
|
||||
|
||||
Die Second Life Website für weitere Informationen über Partnerschaften öffnen?<usetemplate name="okcancelbuttons" yestext="Gehe zu Seite"/></notification>
|
||||
|
||||
<notification name="ClickUploadHelpPermissions">Ihre Standardberechtigung funktionieren in älteren Regionen möglicherweise nicht.</notification>
|
||||
|
||||
<notification name="ClickWebProfileHelpAvatar">Wenn dieser Einwohner einen Webprofil-URL angegeben hat, können Sie:
|
||||
* Auf „Laden“ klicken und die Seite in dieser Web-Registerkarte anzeigen.
|
||||
* Auf Laden > „In externem Browser“ klicken und die Seite im Standard-Browser anzeigen.
|
||||
|
||||
@@ -1,15 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater name="perm prefs" title="Default Upload Permissions" width="315" height="180" rect_control="FloaterPermPrefsRect" can_close="true" can_minimize="true">
|
||||
<panel label="Permissions" name="permissions" width="292" height="120" left="10" border="true" bottom="-140">
|
||||
<button name="help" label="?" label_selected="?" bottom_delta="-25" height="18" width="22" left="260"/>
|
||||
<check_box bottom_delta="0" width="106" height="16" left="10" initial_value="false" label="Share with group" name="share_with_group" control_name="ShareWithGroup"/>
|
||||
<check_box bottom_delta="-20" width="130" height="16" initial_value="false" label="Allow anyone to copy" name="everyone_copy" control_name="EveryoneCopy"/>
|
||||
<check_box bottom_delta="-20" label="Allow exportation" name="everyone_export" control_name="EveryoneExport"/>
|
||||
<text bottom_delta="-18" name="NextOwnerLabel" height="10">Next owner can:</text>
|
||||
<check_box bottom_delta="-30" width="78" height="16" initial_value="false" label="Modify" name="next_owner_modify" control_name="NextOwnerModify"/>
|
||||
<check_box bottom_delta="0" width="88" height="16" left_delta="78" initial_value="false" label="Copy" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
||||
<check_box bottom_delta="0" width="106" height="16" left_delta="88" initial_value="true" label="Resell/Give away" name="next_owner_transfer" control_name="NextOwnerTransfer"/>
|
||||
<floater name="perm prefs" title="Default Creation Permissions" width="820" height="250" rect_control="FloaterPermPrefsRect" can_close="true" can_minimize="true">
|
||||
<panel label="Permissions" name="permissions" width="800" height="180" left="10" border="false" bottom="-210" mouse_opaque="false">
|
||||
<view_border bevel_style="none" height="18" bottom_delta="-26" left="0" width="430"/>
|
||||
<text follows="left|top" bottom_delta="0" left="4" name="NextOwnerLabel" height="16">Next owner:</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="120" name="NextOwnerCopyLabel" height="16">Copy</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="105" name="NextOwnerModifyLabel" height="16">Modify</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="105" name="NextOwnerTransferLabel" height="16">Transfer</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="105" name="ShareWithGroupLabel" height="16">Share With Group</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="105" name="AnyoneCopyLabel" height="16">Allow anyone to copy</text>
|
||||
<text follows="left|top" bottom_delta="0" left_delta="125" width="120" name="ExportationLabel" height="16">Allow exportation</text>
|
||||
<text follows="left|top" bottom_delta="-26" left="4" name="ObjectsLabel" height="16" tool_tip="Set default permissions for when Objects are created">Objects</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_object.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Objectsnext_owner_copy" control_name="ObjectsNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Objectsnext_owner_modify" control_name="ObjectsNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Objectsnext_owner_transfer" control_name="ObjectsNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Objectsshare_with_group" control_name="ObjectsShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Objectseveryone_copy" control_name="ObjectsEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Objectseveryone_export" control_name="ObjectsEveryoneExport"/>
|
||||
<text follows="left|top" bottom_delta="-20" left="4" name="UploadsLabel" height="16" tool_tip="Set default permissions for uploaded items">Uploads</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_texture.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Uploadsnext_owner_copy" control_name="UploadsNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Uploadsnext_owner_modify" control_name="UploadsNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Uploadsnext_owner_transfer" control_name="UploadsNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Uploadsshare_with_group" control_name="UploadsShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Uploadseveryone_copy" control_name="UploadsEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Uploadseveryone_export" control_name="UploadsEveryoneExport"/>
|
||||
<text follows="left|top" bottom_delta="-20" left="4" name="ScriptsLabel" height="16" tool_tip="Set default permissions for when Scripts are created">Scripts</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_script.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Scriptsnext_owner_copy" control_name="ScriptsNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Scriptsnext_owner_modify" control_name="ScriptsNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Scriptsnext_owner_transfer" control_name="ScriptsNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Scriptsshare_with_group" control_name="ScriptsShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Scriptseveryone_copy" control_name="ScriptsEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Scriptseveryone_export" control_name="ScriptsEveryoneExport"/>
|
||||
<text follows="left|top" bottom_delta="-20" left="4" name="NotecardsLabel" height="16" tool_tip="Set default permissions for when Notecards are created">Notecards</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_notecard.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Notecardsnext_owner_copy" control_name="NotecardsNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Notecardsnext_owner_modify" control_name="NotecardsNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Notecardsnext_owner_transfer" control_name="NotecardsNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Notecardsshare_with_group" control_name="NotecardsShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Notecardseveryone_copy" control_name="NotecardsEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Notecardseveryone_export" control_name="NotecardsEveryoneExport"/>
|
||||
<text follows="left|top" bottom_delta="-20" left="4" name="GesturesLabel" height="16" tool_tip="Set default permissions for when Gestures are created">Gestures</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_gesture.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Gesturesnext_owner_copy" control_name="GesturesNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Gesturesnext_owner_modify" control_name="GesturesNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Gesturesnext_owner_transfer" control_name="GesturesNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Gesturesshare_with_group" control_name="ShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Gestureseveryone_copy" control_name="GesturesEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Gestureseveryone_export" control_name="GesturesEveryoneExport"/>
|
||||
<text follows="left|top" bottom_delta="-20" left="4" name="WearablesLabel" height="16" tool_tip="Set default permissions for when Clothing or Body Parts are created">Wearables</text>
|
||||
<icon follows="left|top" bottom_delta="0" left_delta="102" image_name="inv_item_clothing.tga" width="18" height="16"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="18" label="" name="Wearablesnext_owner_copy" control_name="WearablesNextOwnerCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Wearablesnext_owner_modify" control_name="WearablesNextOwnerModify"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Wearablesnext_owner_transfer" control_name="WearablesNextOwnerTransfer"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="100" height="16" left_delta="110" label="" name="Wearablesshare_with_group" control_name="WearablesShareWithGroup"/>
|
||||
<check_box follows="left|top" bottom_delta="0" width="120" height="16" left_delta="110" label="" name="Wearableseveryone_copy" control_name="WearablesEveryoneCopy"/>
|
||||
<check_box follows="left|top" bottom_delta="0" height="16" left_delta="130" label="" name="Wearableseveryone_export" control_name="WearablesEveryoneExport"/>
|
||||
</panel>
|
||||
<button bottom_delta="-30" height="20" label="OK" label_selected="OK" left="90" name="ok" width="100"/>
|
||||
<button bottom_delta="0" height="20" label="Cancel" label_selected="Cancel" left_delta="105" name="cancel" width="100"/>
|
||||
<button bottom_delta="-30" height="20" label="OK" label_selected="OK" left="297" name="ok" width="100">
|
||||
<button.commit_callback function="PermsDefault.OK"/>
|
||||
</button>
|
||||
<button bottom_delta="0" height="20" label="Cancel" label_selected="Cancel" left_delta="105" name="cancel" width="100">
|
||||
<button.commit_callback function="PermsDefault.Cancel"/>
|
||||
</button>
|
||||
</floater>
|
||||
|
||||
@@ -693,13 +693,6 @@ Go to the [SECOND_LIFE] web site for more information on partnering?
|
||||
yestext="Go to Page"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="ClickUploadHelpPermissions"
|
||||
type="alertmodal">
|
||||
Your default permissions may not work in older regions.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="ClickWebProfileHelpAvatar"
|
||||
@@ -9750,6 +9743,17 @@ An internal error prevented us from properly updating your viewer. The L$ balan
|
||||
Cannot create large prims that intersect other players. Please re-try when other players have moved.
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="DefaultObjectPermissions"
|
||||
type="alert">
|
||||
There was a problem saving the default permissions due to the following reason: [REASON]. Please try setting the default permissions later.
|
||||
<tag>fail</tag>
|
||||
<usetemplate
|
||||
name="okbutton"
|
||||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
|
||||
<!-- Singularity Specific notifications should go below here, alphabetically -->
|
||||
<!-- Singu Note: RLVa notifications come first here -->
|
||||
|
||||
@@ -137,13 +137,13 @@
|
||||
</combo_box>
|
||||
<text bottom="-19" left_delta="85" name="text_box7" halign="center" width="145">Next Owner Perms</text>
|
||||
<text bottom="-34" left_delta="0" name="text_box8" halign="center" width="65">Objects</text>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Copy" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="NextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Modify" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="NextOwnerModify"/>
|
||||
<check_box follows="top" height="16" initial_value="true" label="Transfer" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="NextOwnerTransfer" enabled_control="NextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Copy" tool_tip="Next owner can make copies of creations" name="next_owner_copy" control_name="ObjectsNextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" initial_value="false" label="Modify" tool_tip="Next owner can edit creations" name="next_owner_modify" control_name="ObjectsNextOwnerModify"/>
|
||||
<check_box follows="top" height="16" initial_value="true" label="Transfer" tool_tip="Next owner can give(or sell) creations" name="next_owner_transfer" control_name="ObjectsNextOwnerTransfer" enabled_control="ObjectsNextOwnerCopy"/>
|
||||
<text bottom="-34" left_delta="85" name="text_box9" halign="center" width="65">Scripts</text>
|
||||
<check_box follows="top" height="16" label="Copy" tool_tip="Next owner can make copies of scripts" name="script_next_owner_copy" control_name="ScriptNextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" label="Modify" tool_tip="Next owner can edit scripts" name="script_next_owner_modify" control_name="ScriptNextOwnerModify"/>
|
||||
<check_box follows="top" height="16" label="Transfer" tool_tip="Next owner can give(or sell) scripts" name="script_next_owner_transfer" control_name="ScriptNextOwnerTransfer" enabled_control="ScriptNextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" label="Copy" tool_tip="Next owner can make copies of scripts" name="script_next_owner_copy" control_name="ScriptsNextOwnerCopy"/>
|
||||
<check_box follows="top" height="16" label="Modify" tool_tip="Next owner can edit scripts" name="script_next_owner_modify" control_name="ScriptsNextOwnerModify"/>
|
||||
<check_box follows="top" height="16" label="Transfer" tool_tip="Next owner can give(or sell) scripts" name="script_next_owner_transfer" control_name="ScriptsNextOwnerTransfer" enabled_control="ScriptsNextOwnerCopy"/>
|
||||
<check_box bottom="-131" left="5" follows="top" height="16" label="Phantom" name="EmPhantomToggle" control_name="EmeraldBuildPrefs_Phantom"/>
|
||||
<check_box follows="top" height="16" label="Physical" name="EmPhysicalToggle" control_name="EmeraldBuildPrefs_Physical"/>
|
||||
<check_box follows="top" height="16" label="Temporary" name="EmTemporaryToggle" control_name="EmeraldBuildPrefs_Temporary"/>
|
||||
|
||||
@@ -372,10 +372,6 @@ Marcando este ítem, se mostrará:
|
||||
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir a la Página"/>
|
||||
</notification>
|
||||
|
||||
<notification name="ClickUploadHelpPermissions">
|
||||
Tus permisos por defecto no funcionarán en regiones antiguas.
|
||||
</notification>
|
||||
|
||||
<notification name="ClickWebProfileHelpAvatar">
|
||||
Si este residente ha indicado una URL para mostrar un perfil en la web, tu puedes:
|
||||
* Pulsar 'Cargar' para ver la página en esta pestaña web.
|
||||
|
||||
@@ -244,10 +244,6 @@ Aller sur le site de [SECOND_LIFE_GRID] pour avoir plus d'informations sur les p
|
||||
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Aller sur cette page"/>
|
||||
</notification>
|
||||
|
||||
<notification name="ClickUploadHelpPermissions">
|
||||
Il est possible que vos droits par défaut ne fonctionnent pas dans les anciennes régions.
|
||||
</notification>
|
||||
|
||||
<notification name="ClickWebProfileHelpAvatar">
|
||||
Si ce résident a défini une URL de profil web, vous pouvez:
|
||||
* Cliquer sur Charger pour afficher la page dans cet onglet;
|
||||
|
||||
@@ -235,9 +235,6 @@ Marcando questo campo si mostrerà:
|
||||
Vai al sito web di Second Life per ulteriori informazioni sulla partnership?
|
||||
<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Vai alla pagina"/>
|
||||
</notification>
|
||||
<notification name="ClickUploadHelpPermissions">
|
||||
I tuoi permessi di base possono non funzionare nelle regioni più vecchie.
|
||||
</notification>
|
||||
<notification name="ClickWebProfileHelpAvatar">
|
||||
Se questo/a residente ha impostato una URL nel suo profilo puoi:
|
||||
* Cliccare 'Carica' per vedere la pagina in questa finestra web.
|
||||
|
||||
@@ -300,10 +300,6 @@ Ir para o site do [SECOND_LIFE] para mais informações sobre parceria?
|
||||
<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir para a Página"/>
|
||||
</notification>
|
||||
|
||||
<notification name="ClickUploadHelpPermissions">
|
||||
Suas permissões padrão podem não funcionar em regiões antigas.
|
||||
</notification>
|
||||
|
||||
<notification name="ClickWebProfileHelpAvatar">
|
||||
Se este Residente definiu uma URL de perfil na web, então você pode:
|
||||
* Clicar em 'Carregar' para ver a página na aba Web.
|
||||
|
||||
Reference in New Issue
Block a user