diff options
author | Jonathan Yap <none@none> | 2013-11-07 16:27:38 -0500 |
---|---|---|
committer | Jonathan Yap <none@none> | 2013-11-07 16:27:38 -0500 |
commit | e988fffbca2199156ed656a091409394246f929d (patch) | |
tree | 53546b8edf2660e8ca70e0ba410748f94772947a | |
parent | c817166ebe67cefd02f8c9e3bb9195a6a86fa199 (diff) |
STORM-68 Add initial support to use a capability for setting default object
permissions on the server.
-rw-r--r-- | indra/newview/llfloaterperms.cpp | 45 | ||||
-rw-r--r-- | indra/newview/llfloaterperms.h | 1 | ||||
-rw-r--r-- | indra/newview/llviewerregion.cpp | 4 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 11 |
4 files changed, 58 insertions, 3 deletions
diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index 4e9acfc780..c167c03c30 100644 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -32,7 +32,9 @@ #include "llviewerwindow.h" #include "lluictrlfactory.h" #include "llpermissions.h" - +#include "llagent.h" +#include "llviewerregion.h" +#include "llnotificationsutil.h" LLFloaterPerms::LLFloaterPerms(const LLSD& seed) : LLFloater(seed) @@ -96,7 +98,7 @@ U32 LLFloaterPerms::getNextOwnerPermsInverted(std::string prefix) } LLFloaterPermsDefault::LLFloaterPermsDefault(const LLSD& seed) -: LLFloater(seed) + : LLFloater(seed) { mCommitCallbackRegistrar.add("PermsDefault.Copy", boost::bind(&LLFloaterPermsDefault::onCommitCopy, this, _2)); mCommitCallbackRegistrar.add("PermsDefault.OK", boost::bind(&LLFloaterPermsDefault::onClickOK, this)); @@ -145,9 +147,46 @@ void LLFloaterPermsDefault::onCommitCopy(const LLSD& user_data) xfer->setEnabled(copyable); } +class LLFloaterPermsResponder : public LLHTTPClient::Responder +{ +public: + LLFloaterPermsResponder(): LLHTTPClient::Responder() {} + + void error(U32 status, const std::string& reason) + { + LLSD args; + args["REASON"] = reason; + LLNotificationsUtil::add("DefaultObjectPermissions", args); + } + void result(const LLSD& content) + { + LL_INFOS("FloaterPermsResponder") << "Set new values" << LL_ENDL; + } +}; + +void LLFloaterPermsDefault::updateCap() +{ + std::string object_url = gAgent.getRegion()->getCapability("DefaultObjectPermissions"); + + if(!object_url.empty()) + { + LLSD report = LLSD::emptyMap(); + report["Group"] = (LLSD::Integer)LLFloaterPerms::getGroupPerms("Objects"); + report["Everyone"] = (LLSD::Integer)LLFloaterPerms::getEveryonePerms("Objects"); + report["NextOwner"] = (LLSD::Integer)LLFloaterPerms::getNextOwnerPerms("Objects"); + LLHTTPClient::post(object_url, report, new LLFloaterPermsResponder()); + } +} + void LLFloaterPermsDefault::ok() { - refresh(); // Changes were already applied to saved settings. Refreshing internal values makes it official. +// Changes were already applied automatically 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() diff --git a/indra/newview/llfloaterperms.h b/indra/newview/llfloaterperms.h index bb4a6f9702..5fe39a2c1b 100644 --- a/indra/newview/llfloaterperms.h +++ b/indra/newview/llfloaterperms.h @@ -59,6 +59,7 @@ public: void onClickOK(); void onClickCancel(); void onCommitCopy(const LLSD& user_data); + static void updateCap(); enum Categories { diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index e3cb985ddb..7b5721cb39 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -70,6 +70,7 @@ #include "stringize.h" #include "llviewercontrol.h" #include "llsdserialize.h" +#include "llfloaterperms.h" #ifdef LL_WINDOWS #pragma warning(disable:4355) @@ -1485,6 +1486,8 @@ void LLViewerRegion::unpackRegionHandshake() msg->nextBlock("RegionInfo"); msg->addU32("Flags", 0x0 ); msg->sendReliable(host); + + LLFloaterPermsDefault::updateCap(); } void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) @@ -1494,6 +1497,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) capabilityNames.append("ChatSessionRequest"); capabilityNames.append("CopyInventoryFromNotecard"); capabilityNames.append("CreateInventoryCategory"); + capabilityNames.append("DefaultObjectPermissions"); capabilityNames.append("DispatchRegionInfo"); capabilityNames.append("EstateChangeInfo"); capabilityNames.append("EventQueueGet"); diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index afc5b916e7..a46cce996b 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -7722,5 +7722,16 @@ Disabling future updates for this file. Attempted to add an invalid or unreadable image file [FNAME] which could not be opened or decoded. Attempt cancelled. </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> </notifications> |