summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llcommon/roles_constants.h3
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/lleventinfo.cpp98
-rw-r--r--indra/newview/lleventinfo.h74
-rw-r--r--indra/newview/lleventnotifier.cpp336
-rw-r--r--indra/newview/lleventnotifier.h29
-rw-r--r--indra/newview/llfloaterevent.cpp290
-rw-r--r--indra/newview/llfloaterevent.h46
-rw-r--r--indra/newview/llfloaterworldmap.h1
-rw-r--r--indra/newview/llstartup.cpp11
-rw-r--r--indra/newview/skins/default/xui/da/floater_event.xml108
-rw-r--r--indra/newview/skins/default/xui/da/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/de/floater_event.xml105
-rw-r--r--indra/newview/skins/default/xui/de/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_event.xml331
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml8
-rw-r--r--indra/newview/skins/default/xui/en/role_actions.xml3
-rw-r--r--indra/newview/skins/default/xui/es/floater_event.xml108
-rw-r--r--indra/newview/skins/default/xui/es/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/fr/floater_event.xml105
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/it/floater_event.xml108
-rw-r--r--indra/newview/skins/default/xui/it/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/ja/floater_event.xml105
-rw-r--r--indra/newview/skins/default/xui/ja/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/nl/floater_event.xml40
-rw-r--r--indra/newview/skins/default/xui/nl/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/pl/floater_event.xml108
-rw-r--r--indra/newview/skins/default/xui/pl/notifications.xml3
-rw-r--r--indra/newview/skins/default/xui/pt/floater_event.xml108
-rw-r--r--indra/newview/skins/default/xui/pt/notifications.xml3
32 files changed, 608 insertions, 1557 deletions
diff --git a/indra/llcommon/roles_constants.h b/indra/llcommon/roles_constants.h
index 70bca821c7..effd15ea72 100644
--- a/indra/llcommon/roles_constants.h
+++ b/indra/llcommon/roles_constants.h
@@ -52,7 +52,6 @@ enum LLRoleChangeType
//
// KNOWN HOLES: use these for any single bit powers you need
-// bit 0x1 << 41
// bit 0x1 << 46
// bit 0x1 << 49 and above
@@ -103,6 +102,8 @@ const U64 GP_LAND_ALLOW_FLY = 0x1 << 24; // Bypass Fly Restriction
const U64 GP_LAND_ALLOW_CREATE = 0x1 << 25; // Bypass Create/Edit Objects Restriction
const U64 GP_LAND_ALLOW_LANDMARK = 0x1 << 26; // Bypass Landmark Restriction
const U64 GP_LAND_ALLOW_SET_HOME = 0x1 << 28; // Bypass Set Home Point Restriction
+const U64 GP_LAND_ALLOW_HOLD_EVENT = 0x1LL << 41; // Allowed to hold events on group-owned land
+
// Parcel Access
const U64 GP_LAND_MANAGE_ALLOWED = 0x1 << 29; // Manage Allowed List
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index bd2489769a..ada51ffe12 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -140,7 +140,6 @@ set(viewer_SOURCE_FILES
lldriverparam.cpp
lldynamictexture.cpp
llemote.cpp
- lleventinfo.cpp
lleventnotifier.cpp
lleventpoll.cpp
llexpandabletextbox.cpp
@@ -673,7 +672,6 @@ set(viewer_HEADER_FILES
lldriverparam.h
lldynamictexture.h
llemote.h
- lleventinfo.h
lleventnotifier.h
lleventpoll.h
llexpandabletextbox.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 86ca8b121b..005f76eef8 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2897,6 +2897,17 @@
<key>Value</key>
<integer>175</integer>
</map>
+ <key>EventURL</key>
+ <map>
+ <key>Comment</key>
+ <string>URL for Event website, displayed in the event floater</string>
+ <key>Persist</key>
+ <integer>0</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>http://search.secondlife.com/viewer/embed/event/</string>
+ </map>
<key>EveryoneCopy</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/lleventinfo.cpp b/indra/newview/lleventinfo.cpp
deleted file mode 100644
index b7b4e10b17..0000000000
--- a/indra/newview/lleventinfo.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file lleventinfo.cpp
- * @brief LLEventInfo class implementation
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "llviewerprecompiledheaders.h"
-#include "lleventinfo.h"
-
-#include "lluuid.h"
-#include "message.h"
-
-LLEventInfo::cat_map LLEventInfo::sCategories;
-
-void LLEventInfo::unpack(LLMessageSystem *msg)
-{
- U32 event_id;
- msg->getU32("EventData", "EventID", event_id);
- mID = event_id;
-
- msg->getString("EventData", "Name", mName);
-
- msg->getString("EventData", "Category", mCategoryStr);
-
- msg->getString("EventData", "Date", mTimeStr);
-
- U32 duration;
- msg->getU32("EventData","Duration",duration);
- mDuration = duration;
-
- U32 date;
- msg->getU32("EventData", "DateUTC", date);
- mUnixTime = date;
-
- msg->getString("EventData", "Desc", mDesc);
-
- std::string buffer;
- msg->getString("EventData", "Creator", buffer);
- mRunByID = LLUUID(buffer);
-
- U32 foo;
- msg->getU32("EventData", "Cover", foo);
-
- mHasCover = foo ? TRUE : FALSE;
- if (mHasCover)
- {
- U32 cover;
- msg->getU32("EventData", "Amount", cover);
- mCover = cover;
- }
-
- msg->getString("EventData", "SimName", mSimName);
-
- msg->getVector3d("EventData", "GlobalPos", mPosGlobal);
-
- // Mature content
- U32 event_flags;
- msg->getU32("EventData", "EventFlags", event_flags);
- mEventFlags = event_flags;
-}
-
-// static
-void LLEventInfo::loadCategories(const LLSD& options)
-{
- for(LLSD::array_const_iterator resp_it = options.beginArray(),
- end = options.endArray(); resp_it != end; ++resp_it)
- {
- LLSD name = (*resp_it)["category_name"];
- if(name.isDefined())
- {
- LLSD id = (*resp_it)["category_id"];
- if(id.isDefined())
- {
- LLEventInfo::sCategories[id.asInteger()] = name.asString();
- }
- }
- }
-}
diff --git a/indra/newview/lleventinfo.h b/indra/newview/lleventinfo.h
deleted file mode 100644
index 958a276fbf..0000000000
--- a/indra/newview/lleventinfo.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file lleventinfo.h
- * @brief LLEventInfo class definition
- *
- * $LicenseInfo:firstyear=2004&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLEVENTINFO_H
-#define LL_LLEVENTINFO_H
-
-#include <map>
-
-#include "v3dmath.h"
-#include "lluuid.h"
-
-class LLMessageSystem;
-
-class LLEventInfo
-{
-public:
- LLEventInfo() :
- mID(0),
- mDuration(0),
- mUnixTime(0),
- mHasCover(FALSE),
- mCover(0),
- mEventFlags(0),
- mSelected(FALSE)
- {}
-
- void unpack(LLMessageSystem *msg);
-
- static void loadCategories(const LLSD& options);
-
-public:
- std::string mName;
- U32 mID;
- std::string mDesc;
- std::string mCategoryStr;
- U32 mDuration;
- std::string mTimeStr;
- LLUUID mRunByID;
- std::string mSimName;
- LLVector3d mPosGlobal;
- time_t mUnixTime; // seconds from 1970
- BOOL mHasCover;
- U32 mCover;
- U32 mEventFlags;
- BOOL mSelected;
-
- typedef std::map<U32, std::string> cat_map;
- static cat_map sCategories;
-};
-
-#endif // LL_LLEVENTINFO_H
diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp
index 68559a4236..bedab75f98 100644
--- a/indra/newview/lleventnotifier.cpp
+++ b/indra/newview/lleventnotifier.cpp
@@ -31,10 +31,63 @@
#include "llnotificationsutil.h"
#include "message.h"
-#include "lleventinfo.h"
#include "llfloaterreg.h"
#include "llfloaterworldmap.h"
+#include "llfloaterevent.h"
#include "llagent.h"
+#include "llcommandhandler.h" // secondlife:///app/... support
+
+class LLEventHandler : public LLCommandHandler
+{
+public:
+ // requires trusted browser to trigger
+ LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { }
+ bool handle(const LLSD& params, const LLSD& query_map,
+ LLMediaCtrl* web)
+ {
+ if (params.size() < 2)
+ {
+ return false;
+ }
+ std::string event_command = params[1].asString();
+ S32 event_id = params[0].asInteger();
+ if(event_command == "details")
+ {
+ LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
+ if (floater)
+ {
+ floater->setEventID(event_id);
+ LLFloaterReg::showTypedInstance<LLFloaterEvent>("event");
+ return true;
+ }
+ }
+ else if(event_command == "notify")
+ {
+ // we're adding or removing a notification, so grab the date, name and notification bool
+ if (params.size() < 3)
+ {
+ return false;
+ }
+ if(params[2].asString() == "enable")
+ {
+ gEventNotifier.add(event_id);
+ // tell the server to modify the database as this was a slurl event notification command
+ gEventNotifier.serverPushRequest(event_id, true);
+
+ }
+ else
+ {
+ gEventNotifier.remove(event_id);
+ }
+ return true;
+ }
+
+
+ return false;
+ }
+};
+LLEventHandler gEventHandler;
+
LLEventNotifier gEventNotifier;
@@ -63,31 +116,102 @@ void LLEventNotifier::update()
// Check our notifications again and send out updates
// if they happen.
- time_t alert_time = time_corrected() + 5 * 60;
+ F64 alert_time = LLDate::now().secondsSinceEpoch() + 5 * 60;
en_map::iterator iter;
for (iter = mEventNotifications.begin();
iter != mEventNotifications.end();)
{
LLEventNotification *np = iter->second;
- if (np->getEventDate() < (alert_time))
+ iter++;
+ if (np->getEventDateEpoch() < alert_time)
{
LLSD args;
args["NAME"] = np->getEventName();
+
args["DATE"] = np->getEventDateStr();
LLNotificationsUtil::add("EventNotification", args, LLSD(),
- boost::bind(&LLEventNotification::handleResponse, np, _1, _2));
- mEventNotifications.erase(iter++);
+ boost::bind(&LLEventNotifier::handleResponse, this, np->getEventID(), _1, _2));
+ remove(np->getEventID());
+
}
- else
+ }
+ mNotificationTimer.reset();
+ }
+}
+
+
+
+bool LLEventNotifier::handleResponse(U32 eventId, const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ switch (option)
+ {
+ case 0:
+ {
+ LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
+ if (floater)
{
- iter++;
+ floater->setEventID(eventId);
+ LLFloaterReg::showTypedInstance<LLFloaterEvent>("event");
}
+ break;
}
- mNotificationTimer.reset();
+ case 1:
+ break;
}
+ return true;
}
+bool LLEventNotifier::add(U32 eventId, F64 eventEpoch, const std::string& eventDateStr, const std::string &eventName)
+{
+ LLEventNotification *new_enp = new LLEventNotification(eventId, eventEpoch, eventDateStr, eventName);
+
+ llinfos << "Add event " << eventName << " id " << eventId << " date " << eventDateStr << llendl;
+ if(!new_enp->isValid())
+ {
+ delete new_enp;
+ return false;
+ }
+
+ mEventNotifications[new_enp->getEventID()] = new_enp;
+ return true;
+
+}
+
+void LLEventNotifier::add(U32 eventId)
+{
+
+ gMessageSystem->newMessageFast(_PREHASH_EventInfoRequest);
+ gMessageSystem->nextBlockFast(_PREHASH_AgentData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
+ gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() );
+ gMessageSystem->nextBlockFast(_PREHASH_EventData);
+ gMessageSystem->addU32Fast(_PREHASH_EventID, eventId);
+ gAgent.sendReliableMessage();
+
+}
+
+//static
+void LLEventNotifier::processEventInfoReply(LLMessageSystem *msg, void **)
+{
+ // extract the agent id
+ LLUUID agent_id;
+ U32 event_id;
+ std::string event_name;
+ std::string eventd_date;
+ U32 event_time_utc;
+
+ msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
+ msg->getU32("EventData", "EventID", event_id);
+ msg->getString("EventData", "Name", event_name);
+ msg->getString("EventData", "Date", eventd_date);
+ msg->getU32("EventData", "DateUTC", event_time_utc);
+
+ gEventNotifier.add(event_id, (F64)event_time_utc, eventd_date, event_name);
+}
+
+
void LLEventNotifier::load(const LLSD& event_options)
{
for(LLSD::array_const_iterator resp_it = event_options.beginArray(),
@@ -95,15 +219,7 @@ void LLEventNotifier::load(const LLSD& event_options)
{
LLSD response = *resp_it;
- LLEventNotification *new_enp = new LLEventNotification();
-
- if(!new_enp->load(response))
- {
- delete new_enp;
- continue;
- }
-
- mEventNotifications[new_enp->getEventID()] = new_enp;
+ add(response["event_id"].asInteger(), response["event_date_ut"], response["event_date"].asString(), response["event_name"].asString());
}
}
@@ -117,32 +233,6 @@ BOOL LLEventNotifier::hasNotification(const U32 event_id)
return FALSE;
}
-
-void LLEventNotifier::add(LLEventInfo &event_info)
-{
- // We need to tell the simulator that we want to pay attention to
- // this event, as well as add it to our list.
-
- if (mEventNotifications.find(event_info.mID) != mEventNotifications.end())
- {
- // We already have a notification for this event, don't bother.
- return;
- }
-
- // Push up a message to tell the server we have this notification.
- gMessageSystem->newMessage("EventNotificationAddRequest");
- gMessageSystem->nextBlockFast(_PREHASH_AgentData);
- gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
- gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
- gMessageSystem->nextBlock("EventData");
- gMessageSystem->addU32("EventID", event_info.mID);
- gAgent.sendReliableMessage();
-
- LLEventNotification *enp = new LLEventNotification;
- enp->load(event_info);
- mEventNotifications[event_info.mID] = enp;
-}
-
void LLEventNotifier::remove(const U32 event_id)
{
en_map::iterator iter;
@@ -153,164 +243,36 @@ void LLEventNotifier::remove(const U32 event_id)
return;
}
- // Push up a message to tell the server to remove this notification.
- gMessageSystem->newMessage("EventNotificationRemoveRequest");
+ serverPushRequest(event_id, false);
+ delete iter->second;
+ mEventNotifications.erase(iter);
+}
+
+
+void LLEventNotifier::serverPushRequest(U32 event_id, bool add)
+{
+ // Push up a message to tell the server we have this notification.
+ gMessageSystem->newMessage(add?"EventNotificationAddRequest":"EventNotificationRemoveRequest");
gMessageSystem->nextBlockFast(_PREHASH_AgentData);
gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
gMessageSystem->nextBlock("EventData");
gMessageSystem->addU32("EventID", event_id);
gAgent.sendReliableMessage();
-
- delete iter->second;
- mEventNotifications.erase(iter);
-}
-
-LLEventNotification::LLEventNotification() :
- mEventID(0),
- mEventDate(0),
- mEventName("")
-{
}
-LLEventNotification::~LLEventNotification()
+LLEventNotification::LLEventNotification(U32 eventId, F64 eventEpoch, const std::string& eventDateStr, const std::string &eventName) :
+ mEventID(eventId),
+ mEventName(eventName),
+ mEventDateEpoch(eventEpoch),
+ mEventDateStr(eventDateStr)
{
+
}
-bool LLEventNotification::handleResponse(const LLSD& notification, const LLSD& response)
-{
- S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
- switch (option)
- {
- case 0:
- {
- gAgent.teleportViaLocation(getEventPosGlobal());
- LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
- if(floater_world_map) floater_world_map->trackLocation(getEventPosGlobal());
- break;
- }
- case 1:
- LLFloaterReg::showInstance("search", LLSD().with("category", "events").with("id", S32(getEventID())));
- break;
- case 2:
- break;
- }
- // We could clean up the notification on the server now if we really wanted to.
- return false;
-}
-BOOL LLEventNotification::load(const LLSD& response)
-{
- BOOL event_ok = TRUE;
- LLSD option = response.get("event_id");
- if (option.isDefined())
- {
- mEventID = option.asInteger();
- }
- else
- {
- event_ok = FALSE;
- }
- option = response.get("event_name");
- if (option.isDefined())
- {
- llinfos << "Event: " << option.asString() << llendl;
- mEventName = option.asString();
- }
- else
- {
- event_ok = FALSE;
- }
- option = response.get("event_date");
- if (option.isDefined())
- {
- llinfos << "EventDate: " << option.asString() << llendl;
- mEventDateStr = option.asString();
- }
- else
- {
- event_ok = FALSE;
- }
-
- option = response.get("event_date_ut");
- if (option.isDefined())
- {
- llinfos << "EventDate: " << option.asString() << llendl;
- mEventDate = strtoul(option.asString().c_str(), NULL, 10);
- }
- else
- {
- event_ok = FALSE;
- }
-
- S32 grid_x = 0;
- S32 grid_y = 0;
- S32 x_region = 0;
- S32 y_region = 0;
-
- option = response.get("grid_x");
- if (option.isDefined())
- {
- llinfos << "GridX: " << option.asInteger() << llendl;
- grid_x= option.asInteger();
- }
- else
- {
- event_ok = FALSE;
- }
-
- option = response.get("grid_y");
- if (option.isDefined())
- {
- llinfos << "GridY: " << option.asInteger() << llendl;
- grid_y = option.asInteger();
- }
- else
- {
- event_ok = FALSE;
- }
-
- option = response.get("x_region");
- if (option.isDefined())
- {
- llinfos << "RegionX: " << option.asInteger() << llendl;
- x_region = option.asInteger();
- }
- else
- {
- event_ok = FALSE;
- }
-
- option = response.get("y_region");
- if (option.isDefined())
- {
- llinfos << "RegionY: " << option.asInteger() << llendl;
- y_region = option.asInteger();
- }
- else
- {
- event_ok = FALSE;
- }
-
- mEventPosGlobal.mdV[VX] = grid_x * 256 + x_region;
- mEventPosGlobal.mdV[VY] = grid_y * 256 + y_region;
- mEventPosGlobal.mdV[VZ] = 0.f;
-
- return event_ok;
-}
-
-BOOL LLEventNotification::load(const LLEventInfo &event_info)
-{
-
- mEventID = event_info.mID;
- mEventName = event_info.mName;
- mEventDateStr = event_info.mTimeStr;
- mEventDate = event_info.mUnixTime;
- mEventPosGlobal = event_info.mPosGlobal;
- return TRUE;
-}
diff --git a/indra/newview/lleventnotifier.h b/indra/newview/lleventnotifier.h
index 0367fc47b0..697a708762 100644
--- a/indra/newview/lleventnotifier.h
+++ b/indra/newview/lleventnotifier.h
@@ -30,7 +30,6 @@
#include "llframetimer.h"
#include "v3dmath.h"
-class LLEventInfo;
class LLEventNotification;
@@ -41,15 +40,21 @@ public:
virtual ~LLEventNotifier();
void update(); // Notify the user of the event if it's coming up
+ bool add(U32 eventId, F64 eventEpoch, const std::string& eventDateStr, const std::string &eventName);
+ void add(U32 eventId);
+
void load(const LLSD& event_options); // In the format that it comes in from login
- void add(LLEventInfo &event_info); // Add a new notification for an event
void remove(U32 event_id);
BOOL hasNotification(const U32 event_id);
+ void serverPushRequest(U32 event_id, bool add);
typedef std::map<U32, LLEventNotification *> en_map;
+ bool handleResponse(U32 eventId, const LLSD& notification, const LLSD& response);
+ static void processEventInfoReply(LLMessageSystem *msg, void **);
+
protected:
en_map mEventNotifications;
LLFrameTimer mNotificationTimer;
@@ -59,25 +64,21 @@ protected:
class LLEventNotification
{
public:
- LLEventNotification();
- virtual ~LLEventNotification();
+ LLEventNotification(U32 eventId, F64 eventEpoch, const std::string& eventDateStr, const std::string &eventName);
+
- BOOL load(const LLSD& en); // In the format it comes in from login
- BOOL load(const LLEventInfo &event_info); // From existing event_info on the viewer.
- //void setEventID(const U32 event_id);
- //void setEventName(std::string &event_name);
U32 getEventID() const { return mEventID; }
const std::string &getEventName() const { return mEventName; }
- time_t getEventDate() const { return mEventDate; }
- const std::string &getEventDateStr() const { return mEventDateStr; }
- LLVector3d getEventPosGlobal() const { return mEventPosGlobal; }
- bool handleResponse(const LLSD& notification, const LLSD& payload);
+ bool isValid() const { return mEventID > 0 && mEventDateEpoch != 0 && mEventName.size() > 0; }
+ const F64 &getEventDateEpoch() const { return mEventDateEpoch; }
+ const std::string &getEventDateStr() const { return mEventDateStr; }
+
+
protected:
U32 mEventID; // EventID for this event
std::string mEventName;
+ F64 mEventDateEpoch;
std::string mEventDateStr;
- time_t mEventDate;
- LLVector3d mEventPosGlobal;
};
extern LLEventNotifier gEventNotifier;
diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp
index ee2ba2ba54..0b5ac8e798 100644
--- a/indra/newview/llfloaterevent.cpp
+++ b/indra/newview/llfloaterevent.cpp
@@ -38,10 +38,11 @@
#include "llcachename.h"
#include "llcommandhandler.h" // secondlife:///app/chat/ support
#include "lleventflags.h"
-#include "lleventnotifier.h"
+#include "llmediactrl.h"
#include "llexpandabletextbox.h"
#include "llfloater.h"
#include "llfloaterreg.h"
+#include "llmediactrl.h"
#include "llfloaterworldmap.h"
#include "llinventorymodel.h"
#include "llsecondlifeurls.h"
@@ -57,35 +58,10 @@
#include "lltrans.h"
-class LLEventHandler : public LLCommandHandler
-{
-public:
- // requires trusted browser to trigger
- LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { }
- bool handle(const LLSD& params, const LLSD& query_map,
- LLMediaCtrl* web)
- {
- if (params.size() < 1)
- {
- return false;
- }
-
- LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
- if (floater)
- {
- floater->setEventID(params[0].asInteger());
- LLFloaterReg::showTypedInstance<LLFloaterEvent>("event");
- return true;
- }
-
- return false;
- }
-};
-LLEventHandler gEventHandler;
-
LLFloaterEvent::LLFloaterEvent(const LLSD& key)
: LLFloater(key),
-
+ LLViewerMediaObserver(),
+ mBrowser(NULL),
mEventID(0)
{
}
@@ -98,253 +74,51 @@ LLFloaterEvent::~LLFloaterEvent()
BOOL LLFloaterEvent::postBuild()
{
- mTBName = getChild<LLTextBox>("event_name");
-
- mTBCategory = getChild<LLTextBox>("event_category");
-
- mTBDate = getChild<LLTextBox>("event_date");
-
- mTBDuration = getChild<LLTextBox>("event_duration");
-
- mTBDesc = getChild<LLExpandableTextBox>("event_desc");
-
- mTBRunBy = getChild<LLTextBox>("event_runby");
- mTBLocation = getChild<LLTextBox>("event_location");
- mTBCover = getChild<LLTextBox>("event_cover");
-
- mTeleportBtn = getChild<LLButton>( "teleport_btn");
- mTeleportBtn->setClickedCallback(onClickTeleport, this);
-
- mMapBtn = getChild<LLButton>( "map_btn");
- mMapBtn->setClickedCallback(onClickMap, this);
-
- mNotifyBtn = getChild<LLButton>( "notify_btn");
- mNotifyBtn->setClickedCallback(onClickNotify, this);
-
- mCreateEventBtn = getChild<LLButton>( "create_event_btn");
- mCreateEventBtn->setClickedCallback(onClickCreateEvent, this);
-
- mGodDeleteEventBtn = getChild<LLButton>( "god_delete_event_btn");
- mGodDeleteEventBtn->setClickedCallback(boost::bind(&LLFloaterEvent::onClickDeleteEvent, this));
-
- return TRUE;
-}
-
-void LLFloaterEvent::setEventID(const U32 event_id)
-{
- mEventID = event_id;
- // Should reset all of the panel state here
- resetInfo();
-
- if (event_id != 0)
+ mBrowser = getChild<LLMediaCtrl>("browser");
+ if (mBrowser)
{
- sendEventInfoRequest();
+ mBrowser->addObserver(this);
}
-}
-
-void LLFloaterEvent::onClickDeleteEvent()
-{
- LLMessageSystem* msg = gMessageSystem;
-
- msg->newMessageFast(_PREHASH_EventGodDelete);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
-
- msg->nextBlockFast(_PREHASH_EventData);
- msg->addU32Fast(_PREHASH_EventID, mEventID);
- gAgent.sendReliableMessage();
-}
-
-void LLFloaterEvent::sendEventInfoRequest()
-{
- LLMessageSystem *msg = gMessageSystem;
-
- msg->newMessageFast(_PREHASH_EventInfoRequest);
- msg->nextBlockFast(_PREHASH_AgentData);
- msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() );
- msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() );
- msg->nextBlockFast(_PREHASH_EventData);
- msg->addU32Fast(_PREHASH_EventID, mEventID);
- gAgent.sendReliableMessage();
+ return TRUE;
}
-//static
-void LLFloaterEvent::processEventInfoReply(LLMessageSystem *msg, void **)
+void LLFloaterEvent::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event)
{
- // extract the agent id
- LLUUID agent_id;
- msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
-
- LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
-
- if(floater)
+ switch (event)
{
- floater->mEventInfo.unpack(msg);
- floater->mTBName->setText(floater->mEventInfo.mName);
- floater->mTBCategory->setText(floater->mEventInfo.mCategoryStr);
- floater->mTBDate->setText(floater->mEventInfo.mTimeStr);
- floater->mTBDesc->setText(floater->mEventInfo.mDesc);
- floater->mTBRunBy->setText(LLSLURL("agent", floater->mEventInfo.mRunByID, "inspect").getSLURLString());
-
- floater->mTBDuration->setText(llformat("%d:%.2d", floater->mEventInfo.mDuration / 60, floater->mEventInfo.mDuration % 60));
-
- if (!floater->mEventInfo.mHasCover)
- {
- floater->mTBCover->setText(floater->getString("none"));
- }
- else
- {
- floater->mTBCover->setText(llformat("%d", floater->mEventInfo.mCover));
- }
-
- F32 global_x = (F32)floater->mEventInfo.mPosGlobal.mdV[VX];
- F32 global_y = (F32)floater->mEventInfo.mPosGlobal.mdV[VY];
-
- S32 region_x = llround(global_x) % REGION_WIDTH_UNITS;
- S32 region_y = llround(global_y) % REGION_WIDTH_UNITS;
- S32 region_z = llround((F32)floater->mEventInfo.mPosGlobal.mdV[VZ]);
-
- std::string desc = floater->mEventInfo.mSimName + llformat(" (%d, %d, %d)", region_x, region_y, region_z);
- floater->mTBLocation->setText(desc);
-
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("unknown"));
-
- //for some reason there's not adult flags for now, so see if region is adult and then
- //set flags
- LLWorldMapMessage::url_callback_t cb = boost::bind( &regionInfoCallback, floater->mEventInfo.mID, _1);
- LLWorldMapMessage::getInstance()->sendNamedRegionRequest(floater->mEventInfo.mSimName, cb, std::string("unused"), false);
-
- if (floater->mEventInfo.mUnixTime < time_corrected())
- {
- floater->mNotifyBtn->setEnabled(FALSE);
- }
- else
- {
- floater->mNotifyBtn->setEnabled(TRUE);
- }
-
- if (gEventNotifier.hasNotification(floater->mEventInfo.mID))
- {
- floater->mNotifyBtn->setLabel(floater->getString("dont_notify"));
- }
- else
- {
- floater->mNotifyBtn->setLabel(floater->getString("notify"));
- }
-
- floater->mMapBtn->setEnabled(TRUE);
- floater->mTeleportBtn->setEnabled(TRUE);
+ case MEDIA_EVENT_NAVIGATE_BEGIN:
+ getChild<LLUICtrl>("status_text")->setValue(getString("loading_text"));
+ break;
+
+ case MEDIA_EVENT_NAVIGATE_COMPLETE:
+ getChild<LLUICtrl>("status_text")->setValue(getString("done_text"));
+ break;
+
+ default:
+ break;
}
}
-//static
-void LLFloaterEvent::regionInfoCallback(U32 event_id, U64 region_handle)
+void LLFloaterEvent::setEventID(const U32 event_id)
{
- LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromHandle(region_handle);
- LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event");
+ mEventID = event_id;
- if (sim_info && floater && (event_id == floater->getEventID()))
+ if (event_id != 0)
{
- // update the event with the maturity info
- if (sim_info->isAdult())
- {
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( TRUE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("adult"));
-
- }
- else if (floater->mEventInfo.mEventFlags & EVENT_FLAG_MATURE)
- {
- floater->getChildView("rating_icon_m")->setVisible( TRUE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( FALSE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("moderate"));
- }
- else
- {
- floater->getChildView("rating_icon_m")->setVisible( FALSE);
- floater->getChildView("rating_icon_r")->setVisible( FALSE);
- floater->getChildView("rating_icon_pg")->setVisible( TRUE);
- floater->getChild<LLUICtrl>("rating_value")->setValue(floater->getString("general"));
- }
+ LLSD subs;
+ subs["EVENT_ID"] = (S32)event_id;
+ // get the search URL and expand all of the substitutions
+ // (also adds things like [LANGUAGE], [VERSION], [OS], etc.)
+ std::ostringstream url;
+ url << gSavedSettings.getString("EventURL") << event_id << "/" << std::endl;
+ // and load the URL in the web view
+ mBrowser->navigateTo(url.str());
+
}
}
void LLFloaterEvent::draw()
{
- mGodDeleteEventBtn->setVisible(gAgent.isGodlike());
-
LLPanel::draw();
}
-
-void LLFloaterEvent::resetInfo()
-{
- mTBName->setText(LLStringUtil::null);
- mTBCategory->setText(LLStringUtil::null);
- mTBDate->setText(LLStringUtil::null);
- mTBDesc->setText(LLStringUtil::null);
- mTBDuration->setText(LLStringUtil::null);
- mTBCover->setText(LLStringUtil::null);
- mTBLocation->setText(LLStringUtil::null);
- mTBRunBy->setText(LLStringUtil::null);
- mNotifyBtn->setEnabled(FALSE);
- mMapBtn->setEnabled(FALSE);
- mTeleportBtn->setEnabled(FALSE);
-}
-
-// static
-void LLFloaterEvent::onClickTeleport(void* data)
-{
- LLFloaterEvent* self = (LLFloaterEvent*)data;
- LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
- if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance)
- {
- gAgent.teleportViaLocation(self->mEventInfo.mPosGlobal);
- worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal);
- }
-}
-
-
-// static
-void LLFloaterEvent::onClickMap(void* data)
-{
- LLFloaterEvent* self = (LLFloaterEvent*)data;
- LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
-
- if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance)
- {
- worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal);
- LLFloaterReg::showInstance("world_map", "center");
- }
-}
-
-
-// static
-void LLFloaterEvent::onClickCreateEvent(void* data)
-{
- LLNotificationsUtil::add("PromptGoToEventsPage");//, LLSD(), LLSD(), callbackCreateEventWebPage);
-}
-
-
-// static
-void LLFloaterEvent::onClickNotify(void *data)
-{
- LLFloaterEvent* self = (LLFloaterEvent*)data;
-
- if (!gEventNotifier.hasNotification(self->mEventID))
- {
- gEventNotifier.add(self->mEventInfo);
- self->mNotifyBtn->setLabel(self->getString("dont_notify"));
- }
- else
- {
- gEventNotifier.remove(self->mEventInfo.mID);
- self->mNotifyBtn->setLabel(self->getString("notify"));
- }
-}
diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h
index bfed2f259b..b1963309da 100644
--- a/indra/newview/llfloaterevent.h
+++ b/indra/newview/llfloaterevent.h
@@ -28,17 +28,15 @@
#define LL_LLFLOATEREVENT_H
#include "llfloater.h"
-#include "lleventinfo.h"
-#include "lluuid.h"
-#include "v3dmath.h"
+#include "llviewermediaobserver.h"
-class LLTextBox;
-class LLTextEditor;
+
+class LLMediaCtrl;
class LLButton;
-class LLExpandableTextBox;
-class LLMessageSystem;
-class LLFloaterEvent : public LLFloater
+class LLFloaterEvent : public LLFloater,
+ public LLViewerMediaObserver
+
{
public:
LLFloaterEvent(const LLSD& key);
@@ -48,44 +46,18 @@ public:
/*virtual*/ void draw();
void setEventID(const U32 event_id);
- void sendEventInfoRequest();
-
- static void processEventInfoReply(LLMessageSystem *msg, void **);
U32 getEventID() { return mEventID; }
-protected:
- void resetInfo();
-
- static void onClickTeleport(void*);
- static void onClickMap(void*);
- //static void onClickLandmark(void*);
- static void onClickCreateEvent(void*);
- static void onClickNotify(void*);
- void onClickDeleteEvent();
-
- static void regionInfoCallback(U32 event_id, U64 region_handle);
protected:
+ /*virtual*/ void handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event);
+
U32 mEventID;
- LLEventInfo mEventInfo;
-
- LLTextBox* mTBName;
- LLTextBox* mTBCategory;
- LLTextBox* mTBDate;
- LLTextBox* mTBDuration;
- LLExpandableTextBox* mTBDesc;
- LLTextBox* mTBRunBy;
- LLTextBox* mTBLocation;
- LLTextBox* mTBCover;
+ LLMediaCtrl* mBrowser;
- LLButton* mTeleportBtn;
- LLButton* mMapBtn;
- LLButton* mCreateEventBtn;
- LLButton* mGodDeleteEventBtn;
- LLButton* mNotifyBtn;
};
#endif // LL_LLFLOATEREVENT_H
diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h
index 6327039b7f..1628a421ec 100644
--- a/indra/newview/llfloaterworldmap.h
+++ b/indra/newview/llfloaterworldmap.h
@@ -39,7 +39,6 @@
#include "lltracker.h"
#include "llslurl.h"
-class LLEventInfo;
class LLFriendObserver;
class LLInventoryModel;
class LLInventoryObserver;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index af808a0f9c..5ee4599200 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -119,7 +119,6 @@
#include "llpanellogin.h"
#include "llmutelist.h"
#include "llavatarpropertiesprocessor.h"
-#include "llfloaterevent.h"
#include "llpanelclassified.h"
#include "llpanelpick.h"
#include "llpanelgrouplandmoney.h"
@@ -1596,12 +1595,6 @@ bool idle_startup()
LLFloaterReg::showInstance("hud", LLSD(), FALSE);
}
- LLSD event_categories = response["event_categories"];
- if(event_categories.isDefined())
- {
- LLEventInfo::loadCategories(event_categories);
- }
-
LLSD event_notifications = response["event_notifications"];
if(event_notifications.isDefined())
{
@@ -2312,8 +2305,8 @@ void register_viewer_callbacks(LLMessageSystem* msg)
msg->setHandlerFunc("MapBlockReply", LLWorldMapMessage::processMapBlockReply);
msg->setHandlerFunc("MapItemReply", LLWorldMapMessage::processMapItemReply);
-
- msg->setHandlerFunc("EventInfoReply", LLFloaterEvent::processEventInfoReply);
+ msg->setHandlerFunc("EventInfoReply", LLEventNotifier::processEventInfoReply);
+
msg->setHandlerFunc("PickInfoReply", &LLAvatarPropertiesProcessor::processPickInfoReply);
// msg->setHandlerFunc("ClassifiedInfoReply", LLPanelClassified::processClassifiedInfoReply);
msg->setHandlerFunc("ClassifiedInfoReply", LLAvatarPropertiesProcessor::processClassifiedInfoReply);
diff --git a/indra/newview/skins/default/xui/da/floater_event.xml b/indra/newview/skins/default/xui/da/floater_event.xml
index 1816144b45..58f2e555dd 100644
--- a/indra/newview/skins/default/xui/da/floater_event.xml
+++ b/indra/newview/skins/default/xui/da/floater_event.xml
@@ -1,72 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Event" name="Event" title="EVENT DETALJER">
- <floater.string name="none">
- ingen
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Henter...
</floater.string>
- <floater.string name="notify">
- Meddel
- </floater.string>
- <floater.string name="dont_notify">
- Meddel ikke
- </floater.string>
- <floater.string name="moderate">
- Moderat
- </floater.string>
- <floater.string name="adult">
- Voksent
- </floater.string>
- <floater.string name="general">
- Generelt
- </floater.string>
- <floater.string name="unknown">
- Ukendt
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Event uden navn.
- </text>
- <text name="event_category">
- (ingen kategori)
- </text>
- <text name="event_runby_label">
- Afholdt af:
- </text>
- <text initial_value="(henter)" name="event_runby"/>
- <text name="event_date_label">
- Dato:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Varighed:
- </text>
- <text name="event_duration">
- 1 time
- </text>
- <text name="event_covercharge_label">
- Pris:
- </text>
- <text name="event_cover">
- Gratis
- </text>
- <text name="event_location_label">
- Lokation:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Rating:"/>
- <text name="rating_value" value="ukendt"/>
- <expandable_text name="event_desc">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- </expandable_text>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Opret event"/>
- <button name="god_delete_event_btn" tool_tip="Slet event"/>
- <button label="Giv besked" name="notify_btn"/>
- <button label="Teleport" name="teleport_btn"/>
- <button label="Kort" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index eaae513e74..917b7cc21e 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -1085,8 +1085,7 @@ Prøv at vælge mindre stykker land.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleportér"/>
- <button name="Description" text="Beskrivelse"/>
+ <button name="Details" text="Beskrivelse"/>
<button name="Cancel" text="Annullér"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/de/floater_event.xml b/indra/newview/skins/default/xui/de/floater_event.xml
index cf663e2e1b..87fb580aba 100644
--- a/indra/newview/skins/default/xui/de/floater_event.xml
+++ b/indra/newview/skins/default/xui/de/floater_event.xml
@@ -1,69 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Event" name="Event" title="EVENT-DETAILS">
- <floater.string name="none">
- keines
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Wird geladen...
</floater.string>
- <floater.string name="notify">
- Benachrichtigen
- </floater.string>
- <floater.string name="dont_notify">
- Nicht benachrichtigen
- </floater.string>
- <floater.string name="moderate">
- Moderat
- </floater.string>
- <floater.string name="adult">
- Adult
- </floater.string>
- <floater.string name="general">
- Allgemein
- </floater.string>
- <floater.string name="unknown">
- Unbekannt
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Namenloses Event....namenlos! Tadaaa! Tadatadaaaah!
- </text>
- <text name="event_category">
- (keine Kategorie)
- </text>
- <text name="event_runby_label">
- Ausgeführt von:
- </text>
- <text initial_value="(wird in Datenbank gesucht)" name="event_runby"/>
- <text name="event_date_label">
- Datum:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Dauer:
- </text>
- <text name="event_duration">
- 1 Stunde
- </text>
- <text name="event_covercharge_label">
- Eintritt:
- </text>
- <text name="event_cover">
- Kostenlos
- </text>
- <text name="event_location_label">
- Standort:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Einstufung:"/>
- <text name="rating_value" value="unbekannt"/>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Event erstellen"/>
- <button name="god_delete_event_btn" tool_tip="Event löschen"/>
- <button label="Mich benachrichtigen" name="notify_btn"/>
- <button label="Teleportieren" name="teleport_btn"/>
- <button label="Karte" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 0d966de380..c518c193a0 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -2199,8 +2199,7 @@ Wählen Sie eine kleinere Landfläche.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleportieren"/>
- <button name="Description" text="Beschreibung"/>
+ <button name="Details" text="Beschreibung"/>
<button name="Cancel" text="Abbrechen"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 9864083442..7ed020f832 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -1,311 +1,40 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<floater
follows="all"
- height="350"
+ height="400"
+ can_resize="true"
help_topic="event_details"
label="Event"
layout="topleft"
name="Event"
+ save_rect="true"
+ save_visibility="false"
title="EVENT DETAILS"
- width="330">
- <floater.string
- name="none">
- none
- </floater.string>
- <floater.string
- name="notify">
- Notify
- </floater.string>
- <floater.string
- name="dont_notify">
- Don&apos;t Notify
- </floater.string>
- <floater.string
- name="moderate">
- Moderate
- </floater.string>
- <floater.string
- name="adult">
- Adult
- </floater.string>
- <floater.string
- name="general">
- General
- </floater.string>
- <floater.string
- name="unknown">
- Unknown
- </floater.string>
- <layout_stack
- name="layout"
- orientation="vertical"
- follows="all"
- layout="topleft"
- left="0"
- top="0"
- height="350"
- width="330"
- border_size="0">
- <layout_panel
- name="profile_stack"
- follows="top|left"
- layout="topleft"
- top="0"
- left="0"
- height="305"
- width="330">
- <text
- follows="top|left|right"
- font="SansSerifLarge"
- text_color="white"
- height="17"
- layout="topleft"
- left="10"
- name="event_name"
- top="5"
- use_ellipses="true"
- width="310">
- Nameless Event...of Doom! De doom! Doom doom.
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- height="13"
- text_color="LtGray_50"
- layout="topleft"
- left="25"
- name="event_category"
- width="300">
- (no category)
- </text>
-
- <text
- type="string"
- length="1"
- follows="top|left"
- layout="topleft"
- left="10"
- top_pad="7"
- name="event_runby_label"
- width="90">
- Run by:
- </text>
- <text
- follows="left|top"
- height="20"
- initial_value="(retrieving)"
- layout="topleft"
- left_pad="0"
- link="true"
- name="event_runby"
- top_delta="0"
- use_ellipses="true"
- width="240" />
- <text
- type="string"
- length="1"
- follows="top|left"
- layout="topleft"
- left="10"
- top_pad="5"
- name="event_date_label"
- width="90">
- Date:
- </text>
- <text
- type="string"
- length="1"
- left_pad="0"
- height="17"
- top_delta="0"
- follows="top|left"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Loading...
+ </floater.string>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
layout="topleft"
- name="event_date"
- width="240">
- 10/10/2010
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- layout="topleft"
- left="10"
- top_pad="5"
- name="event_duration_label"
- width="90">
- Duration:
- </text>
- <text
- type="string"
- height="14"
- length="1"
- left_pad="0"
- follows="top|left"
- layout="topleft"
- name="event_duration"
- top_delta="0"
- width="240">
- 1 hour
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- layout="topleft"
- left="10"
- top_pad="5"
- name="event_covercharge_label"
- width="90">
- Cover charge:
- </text>
- <text
- type="string"
- follows="left|top"
- height="16"
- layout="topleft"
- left_pad="0"
- name="event_cover"
- visible="true"
- width="240"
- top_delta="0">
- Free
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- layout="topleft"
- left="10"
- top_pad="5"
- name="event_location_label"
- width="90">
- Location:
- </text>
- <text
- type="string"
- length="1"
- height="20"
- left_pad="0"
- follows="top|left"
- layout="topleft"
- name="event_location"
- use_ellipses="true"
- top_delta="0"
- value="SampleParcel, Name Long (145, 228, 26)"
- width="240" />
- <icon
- follows="top|left"
- height="16"
- image_name="Parcel_PG_Dark"
- layout="topleft"
- left="10"
- name="rating_icon_pg"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="Parcel_M_Dark"
- layout="topleft"
- left="10"
- name="rating_icon_m"
- top_delta="0"
- width="18" />
- <icon
- follows="top|left"
- height="16"
- image_name="Parcel_R_Dark"
- layout="topleft"
- left="10"
- name="rating_icon_r"
- top_delta="0"
- width="18" />
- <text
- follows="left|top"
- height="16"
- layout="topleft"
- left_pad="12"
- name="rating_label"
- top_delta="3"
- value="Rating:"
- width="90" />
- <text
- follows="left|right|top"
- height="16"
- layout="topleft"
- left_pad="2"
- name="rating_value"
- top_delta="0"
- value="unknown"
- width="240" />
- <expandable_text
- follows="left|top|right"
- height="65"
- layout="topleft"
- left="6"
- name="event_desc"
- width="322">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</expandable_text>
- </layout_panel>
- <layout_panel
- follows="left|right"
- height="24"
- layout="topleft"
- mouse_opaque="false"
- name="button_panel"
- top="0"
- left="0"
- user_resize="false">
- <button
- follows="left|top"
- height="18"
- image_selected="AddItem_Press"
- image_unselected="AddItem_Off"
- image_disabled="AddItem_Disabled"
- layout="topleft"
- left="6"
- name="create_event_btn"
- tool_tip="Create Event"
- width="18" />
- <button
- follows="left|top"
- height="18"
- image_selected="MinusItem_Press"
- image_unselected="MinusItem_Off"
- image_disabled="MinusItem_Disabled"
- layout="topleft"
- visible="false"
- left="6"
- top_pad="-7"
- name="god_delete_event_btn"
- tool_tip="Delete Event"
- width="18" />
- <button
- follows="left|top"
- height="23"
- label="Notify Me"
- layout="topleft"
- left_pad="3"
- top_delta="-12"
- name="notify_btn"
- width="100" />
- <button
- follows="left|top"
- height="23"
- label="Teleport"
- layout="topleft"
- left_pad="5"
- name="teleport_btn"
- width="100" />
- <button
- follows="left|top"
- height="23"
- label="Map"
- layout="topleft"
- left_pad="5"
- name="map_btn"
- width="85" />
- </layout_panel>
- </layout_stack>
- </floater>
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index de1ff10fcd..83cbcb3344 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4926,14 +4926,10 @@ Event Notification:
<form name="form">
<button
index="0"
- name="Teleport"
- text="Teleport"/>
+ name="Details"
+ text="Details"/>
<button
index="1"
- name="Description"
- text="Description"/>
- <button
- index="2"
name="Cancel"
text="Cancel"/>
</form>
diff --git a/indra/newview/skins/default/xui/en/role_actions.xml b/indra/newview/skins/default/xui/en/role_actions.xml
index a6036f8b78..89aef57cca 100644
--- a/indra/newview/skins/default/xui/en/role_actions.xml
+++ b/indra/newview/skins/default/xui/en/role_actions.xml
@@ -108,6 +108,9 @@
<action description="Allow &apos;Set Home to Here&apos; on group land"
longdescription="Members in a Role with this Ability can use World menu &gt; Landmarks &gt; Set Home to Here on a parcel deeded to this group."
name="land allow set home" value="28" />
+ <action description="Allow &apos;Event Hosting&apos; on group land"
+ longdescription="Members in a Role with this Ability can select group owned parcels as venus when hosting an event."
+ name="land allow host event" value="41" />
</action_set>
<action_set
description="These Abilities include powers to allow or restrict access to group-owned parcels, including freezing and ejecting Residents."
diff --git a/indra/newview/skins/default/xui/es/floater_event.xml b/indra/newview/skins/default/xui/es/floater_event.xml
index 4bc5221796..8bca7783ab 100644
--- a/indra/newview/skins/default/xui/es/floater_event.xml
+++ b/indra/newview/skins/default/xui/es/floater_event.xml
@@ -1,72 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Evento" name="Event" title="DETALLES DEL EVENTO">
- <floater.string name="none">
- ninguno
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Cargando...
</floater.string>
- <floater.string name="notify">
- Notificar
- </floater.string>
- <floater.string name="dont_notify">
- No notificar
- </floater.string>
- <floater.string name="moderate">
- Moderado
- </floater.string>
- <floater.string name="adult">
- Adulto
- </floater.string>
- <floater.string name="general">
- General
- </floater.string>
- <floater.string name="unknown">
- desconocida
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Evento sin nombre...
- </text>
- <text name="event_category">
- (sin categoría)
- </text>
- <text name="event_runby_label">
- Organizado por:
- </text>
- <text initial_value="(obteniendo)" name="event_runby"/>
- <text name="event_date_label">
- Fecha:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Duración:
- </text>
- <text name="event_duration">
- 1 hora
- </text>
- <text name="event_covercharge_label">
- Entrada:
- </text>
- <text name="event_cover">
- Gratis
- </text>
- <text name="event_location_label">
- Localización:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Calificación:"/>
- <text name="rating_value" value="desconocida"/>
- <expandable_text name="event_desc">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- </expandable_text>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Crear el evento"/>
- <button name="god_delete_event_btn" tool_tip="Borrar el evento"/>
- <button label="Notificarme" name="notify_btn"/>
- <button label="Teleportar" name="teleport_btn"/>
- <button label="Mapa" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index eec3111495..6379722553 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -2190,8 +2190,7 @@ Inténtalo seleccionando un trozo más pequeño de terreno.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleportar"/>
- <button name="Description" text="Descripción"/>
+ <button name="Details" text="Detalles"/>
<button name="Cancel" text="Cancelar"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/fr/floater_event.xml b/indra/newview/skins/default/xui/fr/floater_event.xml
index b005ce3b36..3527d89973 100644
--- a/indra/newview/skins/default/xui/fr/floater_event.xml
+++ b/indra/newview/skins/default/xui/fr/floater_event.xml
@@ -1,69 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Événement" name="Event" title="DÉTAILS SUR L&apos;ÉVÉNEMENT">
- <floater.string name="none">
- aucun
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Chargement...
</floater.string>
- <floater.string name="notify">
- Prévenir
- </floater.string>
- <floater.string name="dont_notify">
- Ne pas prévenir
- </floater.string>
- <floater.string name="moderate">
- Modéré
- </floater.string>
- <floater.string name="adult">
- Adulte
- </floater.string>
- <floater.string name="general">
- Général
- </floater.string>
- <floater.string name="unknown">
- Inconnu
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Nameless Event...of Doom! De doom! Doom doom.
- </text>
- <text name="event_category">
- (pas de catégorie)
- </text>
- <text name="event_runby_label">
- Organisé par :
- </text>
- <text initial_value="(récupération en cours)" name="event_runby"/>
- <text name="event_date_label">
- Date :
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Durée :
- </text>
- <text name="event_duration">
- 1 heure
- </text>
- <text name="event_covercharge_label">
- Prix :
- </text>
- <text name="event_cover">
- Gratuit
- </text>
- <text name="event_location_label">
- Lieu :
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Catégorie :"/>
- <text name="rating_value" value="inconnu"/>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Créer un événement"/>
- <button name="god_delete_event_btn" tool_tip="Supprimer l&apos;événement"/>
- <button label="Me prévenir" name="notify_btn"/>
- <button label="Téléporter" name="teleport_btn"/>
- <button label="Carte" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 5325dcda78..243bad8f8a 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -2181,8 +2181,7 @@ Veuillez sélectionner un terrain plus petit.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Téléporter"/>
- <button name="Description" text="Description"/>
+ <button name="Description" text="Détails"/>
<button name="Cancel" text="Annuler"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/it/floater_event.xml b/indra/newview/skins/default/xui/it/floater_event.xml
index a0807e04c9..9a0105a589 100644
--- a/indra/newview/skins/default/xui/it/floater_event.xml
+++ b/indra/newview/skins/default/xui/it/floater_event.xml
@@ -1,72 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Evento" name="Event" title="DETTAGLI DELL&apos;EVENTO">
- <floater.string name="none">
- nessuno
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Caricamento in corso...
</floater.string>
- <floater.string name="notify">
- Avvisare
- </floater.string>
- <floater.string name="dont_notify">
- Non avvisare
- </floater.string>
- <floater.string name="moderate">
- Moderato
- </floater.string>
- <floater.string name="adult">
- Adulto
- </floater.string>
- <floater.string name="general">
- Generale
- </floater.string>
- <floater.string name="unknown">
- Sconosciuto
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Evento senza nome...di Doom De doom! Doom doom.
- </text>
- <text name="event_category">
- (nessuna categoria)
- </text>
- <text name="event_runby_label">
- Organizzato da:
- </text>
- <text initial_value="(recupero)" name="event_runby"/>
- <text name="event_date_label">
- Data:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Durata:
- </text>
- <text name="event_duration">
- 1 ora
- </text>
- <text name="event_covercharge_label">
- Costo:
- </text>
- <text name="event_cover">
- Gratis
- </text>
- <text name="event_location_label">
- Luogo:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Categoria:"/>
- <text name="rating_value" value="sconosciuto"/>
- <expandable_text name="event_desc">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- </expandable_text>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Crea evento"/>
- <button name="god_delete_event_btn" tool_tip="Elimina evento"/>
- <button label="Avvisami" name="notify_btn"/>
- <button label="Teleport" name="teleport_btn"/>
- <button label="Mappa" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index 2346c19926..ffd27d55e8 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -2187,8 +2187,7 @@ Prova a selezionare una parte di terreno più piccola.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleport"/>
- <button name="Description" text="Descrizione"/>
+ <button name="Details" text="Descrizione"/>
<button name="Cancel" text="Cancella"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/ja/floater_event.xml b/indra/newview/skins/default/xui/ja/floater_event.xml
index 671f9077d9..9e99c4a931 100644
--- a/indra/newview/skins/default/xui/ja/floater_event.xml
+++ b/indra/newview/skins/default/xui/ja/floater_event.xml
@@ -1,69 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="イベント" name="Event" title="イベント詳細">
- <floater.string name="none">
- なし
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ ローディング...
</floater.string>
- <floater.string name="notify">
- 知らせる
- </floater.string>
- <floater.string name="dont_notify">
- 知らせない
- </floater.string>
- <floater.string name="moderate">
- Moderate
- </floater.string>
- <floater.string name="adult">
- Adult
- </floater.string>
- <floater.string name="general">
- General
- </floater.string>
- <floater.string name="unknown">
- 不明
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Nameless Event...of Doom! De doom! Doom doom.
- </text>
- <text name="event_category">
- (カテゴリなし)
- </text>
- <text name="event_runby_label">
- 主催者:
- </text>
- <text initial_value="(取得中)" name="event_runby"/>
- <text name="event_date_label">
- 日付:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- 期間:
- </text>
- <text name="event_duration">
- 1 時間
- </text>
- <text name="event_covercharge_label">
- カバーチャージ:
- </text>
- <text name="event_cover">
- 無料
- </text>
- <text name="event_location_label">
- 場所:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="レーティング区分:"/>
- <text name="rating_value" value="不明"/>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="イベント作成"/>
- <button name="god_delete_event_btn" tool_tip="イベント削除"/>
- <button label="知らせる" name="notify_btn"/>
- <button label="テレポート" name="teleport_btn"/>
- <button label="地図" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index e0b72e31de..93d6644902 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -2235,8 +2235,7 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="テレポート"/>
- <button name="Description" text="説明"/>
+ <button name="Details" text="説明"/>
<button name="Cancel" text="取り消し"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/nl/floater_event.xml b/indra/newview/skins/default/xui/nl/floater_event.xml
new file mode 100644
index 0000000000..45ec58abdf
--- /dev/null
+++ b/indra/newview/skins/default/xui/nl/floater_event.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Laden...
+ </floater.string>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
+</floater>
+
diff --git a/indra/newview/skins/default/xui/nl/notifications.xml b/indra/newview/skins/default/xui/nl/notifications.xml
index a282c267a1..a282c70364 100644
--- a/indra/newview/skins/default/xui/nl/notifications.xml
+++ b/indra/newview/skins/default/xui/nl/notifications.xml
@@ -2550,8 +2550,7 @@ Probeer een kleiner stuk land te selecteren.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleport"/>
- <button name="Description" text="Omschrijving"/>
+ <button name="Details" text="Omschrijving"/>
<button name="Cancel" text="Annuleren"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/pl/floater_event.xml b/indra/newview/skins/default/xui/pl/floater_event.xml
index 80862bfd2f..6b24720d86 100644
--- a/indra/newview/skins/default/xui/pl/floater_event.xml
+++ b/indra/newview/skins/default/xui/pl/floater_event.xml
@@ -1,72 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="IMPREZA" name="Event" title="IMPREZA">
- <floater.string name="none">
- żadne
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Ładowanie...
</floater.string>
- <floater.string name="notify">
- Zawiadom
- </floater.string>
- <floater.string name="dont_notify">
- Nie zawiadamiaj
- </floater.string>
- <floater.string name="moderate">
- Mature
- </floater.string>
- <floater.string name="adult">
- Adult
- </floater.string>
- <floater.string name="general">
- General
- </floater.string>
- <floater.string name="unknown">
- Nieznana
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Brak nazwy dla wydarzenia.
- </text>
- <text name="event_category">
- (bez kategorii)
- </text>
- <text name="event_runby_label">
- Prowadzona przez:
- </text>
- <text initial_value="(przetwarzanie)" name="event_runby"/>
- <text name="event_date_label">
- Data:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Długość:
- </text>
- <text name="event_duration">
- 1 godzina
- </text>
- <text name="event_covercharge_label">
- Opłata:
- </text>
- <text name="event_cover">
- Bez opłaty
- </text>
- <text name="event_location_label">
- Lokalizacja:
- </text>
- <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/>
- <text name="rating_label" value="Rodzaj:"/>
- <text name="rating_value" value="nieznane"/>
- <expandable_text name="event_desc">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- </expandable_text>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Stwórz imprezę"/>
- <button name="god_delete_event_btn" tool_tip="Skasuj imprezę"/>
- <button label="Zawiadom mnie" name="notify_btn"/>
- <button label="Teleportuj" name="teleport_btn"/>
- <button label="Mapa" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 7fda575c29..36c662394e 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -2157,8 +2157,7 @@ Spróbuj wybrać mniejszy obszar.
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teleportuj"/>
- <button name="Description" text="Opis"/>
+ <button name="Details" text="Opis"/>
<button name="Cancel" text="Anuluj"/>
</form>
</notification>
diff --git a/indra/newview/skins/default/xui/pt/floater_event.xml b/indra/newview/skins/default/xui/pt/floater_event.xml
index 1cd4dcbda4..df4fe9a6a8 100644
--- a/indra/newview/skins/default/xui/pt/floater_event.xml
+++ b/indra/newview/skins/default/xui/pt/floater_event.xml
@@ -1,72 +1,40 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater label="Evento" name="Event" title="DETALHES DO EVENTO">
- <floater.string name="none">
- nenhum
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ follows="all"
+ height="400"
+ can_resize="true"
+ help_topic="event_details"
+ label="Event"
+ layout="topleft"
+ name="Event"
+ save_rect="true"
+ save_visibility="false"
+ title="EVENT DETAILS"
+ width="600">
+ <floater.string
+ name="loading_text">
+ Carregando...
</floater.string>
- <floater.string name="notify">
- Avisar
- </floater.string>
- <floater.string name="dont_notify">
- Não avisar
- </floater.string>
- <floater.string name="moderate">
- Moderado
- </floater.string>
- <floater.string name="adult">
- Adulto
- </floater.string>
- <floater.string name="general">
- Público geral
- </floater.string>
- <floater.string name="unknown">
- Desconhecido
- </floater.string>
- <layout_stack name="layout">
- <layout_panel name="profile_stack">
- <text name="event_name">
- Evento sem nome... Terror! Terror Aterrorizante.
- </text>
- <text name="event_category">
- (não categorizado)
- </text>
- <text name="event_runby_label">
- Organização:
- </text>
- <text initial_value="(pesquisando)" name="event_runby"/>
- <text name="event_date_label">
- Data:
- </text>
- <text name="event_date">
- 10/10/2010
- </text>
- <text name="event_duration_label">
- Duração:
- </text>
- <text name="event_duration">
- 1 hora
- </text>
- <text name="event_covercharge_label">
- Cover:
- </text>
- <text name="event_cover">
- Grátis
- </text>
- <text name="event_location_label">
- Localização:
- </text>
- <text name="event_location" value="LoteExemplo, Nome extenso (145, 228, 26)"/>
- <text name="rating_label" value="Classificação:"/>
- <text name="rating_value" value="(Desconhecido)"/>
- <expandable_text name="event_desc">
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
- </expandable_text>
- </layout_panel>
- <layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Criar evento"/>
- <button name="god_delete_event_btn" tool_tip="Excluir evento"/>
- <button label="Avise-me" name="notify_btn"/>
- <button label="Teletransportar" name="teleport_btn"/>
- <button label="Mapa" name="map_btn"/>
- </layout_panel>
- </layout_stack>
+ <floater.string
+ name="done_text">
+ Done
+ </floater.string>
+ <web_browser
+ trusted_content="true"
+ follows="left|right|top|bottom"
+ layout="topleft"
+ left="10"
+ name="browser"
+ height="365"
+ width="580"
+ top="0"/>
+ <text
+ follows="bottom|left"
+ height="16"
+ layout="topleft"
+ left_delta="0"
+ name="status_text"
+ top_pad="10"
+ width="150" />
</floater>
+
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index ec0ea9efff..9a7c9579e2 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -2169,8 +2169,7 @@ Selecione o residente da lista e clique em &apos;MI&apos; na parte de baixo do p
[NAME]
[DATE]
<form name="form">
- <button name="Teleport" text="Teletransporte"/>
- <button name="Description" text="Descrição"/>
+ <button name="Details" text="Descrição"/>
<button name="Cancel" text="Cancelar"/>
</form>
</notification>