Commit 868aac50f983a99247e4688340f45955c0d7f08d

  • avatar
  • Sergey 'Jin' Bostandzhyan <jin @deve…per.digitalstrom.org>
  • Tue Sep 07 14:27:05 CEST 2010
Added MR #163 (JS rework) on top of alpha2

As discussed, added MR:
http://gitorious.digitalstrom.org/dss/dss-mainline/merge_requests/163
"JS rework for cleaner destruction of js bound objects"
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0001-Let-JS-GC-free-loggers.patch
(160 / 0)
  
1From cbe7ae4ce656428b90ba8320869c95400ffa1b11 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Tue, 27 Jul 2010 12:23:15 +0200
4Subject: [PATCH 01/12] Let JS-GC free loggers
5
6---
7 core/jshandler.cpp | 4 +-
8 core/scripting/jslogger.cpp | 65 ++++++++++++++++++------------------------
9 2 files changed, 30 insertions(+), 39 deletions(-)
10
11diff --git a/core/jshandler.cpp b/core/jshandler.cpp
12index fa898a2..5aca7e6 100644
13--- a/core/jshandler.cpp
14+++ b/core/jshandler.cpp
15@@ -297,11 +297,11 @@ namespace dss {
16 } // ctor
17
18 ScriptContext::~ScriptContext() {
19- scrubVector(m_AttachedObjects);
20+ JS_GC(m_pContext);
21 if(!m_AttachedObjects.empty()) {
22 Logger::getInstance()->log("Still have some attached objects (" + intToString(m_AttachedObjects.size()) + "). Memory leak?", lsError);
23 }
24-// JS_GC(m_pContext);
25+ scrubVector(m_AttachedObjects);
26 JS_SetContextPrivate(m_pContext, NULL);
27 JS_DestroyContext(m_pContext);
28 m_pContext = NULL;
29diff --git a/core/scripting/jslogger.cpp b/core/scripting/jslogger.cpp
30index 2a9f073..6e9cf64 100644
31--- a/core/scripting/jslogger.cpp
32+++ b/core/scripting/jslogger.cpp
33@@ -1,7 +1,8 @@
34 /*
35 Copyright (c) 2010 digitalSTROM.org, Zurich, Switzerland
36
37-Author: Sergey 'Jin' Bostandzhyan <jin@dev.digitalstrom.org>
38+Authors: Sergey 'Jin' Bostandzhyan <jin@dev.digitalstrom.org>,
39+ Patrick Staehlin <pstaehlin@futurelab.ch>
40
41 This file is part of digitalSTROM Server.
42
43@@ -32,15 +33,16 @@ along with digitalSTROM Server. If not, see <http://www.gnu.org/licenses/>.
44 #include <boost/bind.hpp>
45
46 #define LOG_OBJECT_IDENTIFIER "logfile"
47+
48 namespace dss {
49+
50 const std::string ScriptLoggerExtensionName = "scriptloggerextension";
51
52 const std::string LoggerObjectName = "ScriptLoggerContextWrapper";
53- class ScriptLoggerContextWrapper : public ScriptContextAttachedObject {
54+ class ScriptLoggerContextWrapper {
55 public:
56- ScriptLoggerContextWrapper(ScriptContext* _pContext, boost::shared_ptr<ScriptLogger> _logger)
57- : ScriptContextAttachedObject(_pContext, LoggerObjectName + _logger->getLogName()),
58- m_ScriptLogger(_logger)
59+ ScriptLoggerContextWrapper(boost::shared_ptr<ScriptLogger> _logger)
60+ : m_ScriptLogger(_logger)
61 { }
62
63 boost::shared_ptr<ScriptLogger> getLogger() { return m_ScriptLogger; }
64@@ -72,25 +74,17 @@ namespace dss {
65 return JS_TRUE;
66 }
67
68- jsval v;
69- if (JS_GetProperty(cx, obj, LOG_OBJECT_IDENTIFIER, &v) == JS_TRUE) {
70- if(v != JSVAL_VOID) {
71- JSString *logfile = JSVAL_TO_STRING(v);
72- std::string logfileStr = JS_GetStringBytes(logfile);
73- ScriptContextAttachedObject* attachedObj = ctx->getAttachedObjectByName(LoggerObjectName + logfileStr);
74- ScriptLoggerContextWrapper* wrapper =
75- dynamic_cast<ScriptLoggerContextWrapper*>(attachedObj);
76- if(wrapper != NULL) {
77- Logger::getInstance()->log(JS_GetStringBytes(str));
78- if(newline) {
79- wrapper->getLogger()->logln(JS_GetStringBytes(str));
80- } else {
81- wrapper->getLogger()->log(JS_GetStringBytes(str));
82- }
83- } else {
84- Logger::getInstance()->log("Could not find logger named: " + LoggerObjectName + logfileStr, lsWarning);
85- }
86+ ScriptLoggerContextWrapper* wrapper = static_cast<ScriptLoggerContextWrapper*>(JS_GetPrivate(cx, obj));
87+ if(wrapper != NULL) {
88+ Logger::getInstance()->log(JS_GetStringBytes(str));
89+ if(newline) {
90+ wrapper->getLogger()->logln(JS_GetStringBytes(str));
91+ } else {
92+ wrapper->getLogger()->log(JS_GetStringBytes(str));
93 }
94+ } else {
95+ Logger::getInstance()->log("ScriptLoggerExtension_log_common: wrapper is null!", lsFatal);
96+ return JS_FALSE;
97 }
98 return JS_TRUE;
99 }
100@@ -124,13 +118,9 @@ namespace dss {
101 }
102
103 boost::shared_ptr<ScriptLogger> pLogger = ext->getLogger(JS_GetStringBytes(str));
104- ctx->attachObject(new ScriptLoggerContextWrapper(ctx, pLogger));
105- jsval v = STRING_TO_JSVAL(str);
106- JS_SetProperty(cx, obj, LOG_OBJECT_IDENTIFIER, &v);
107- JSBool foundp;
108- JS_SetPropertyAttributes(cx, obj, LOG_OBJECT_IDENTIFIER, JSPROP_READONLY, &foundp);
109+ ScriptLoggerContextWrapper* wrapper = new ScriptLoggerContextWrapper(pLogger);
110+ JS_SetPrivate(cx, obj, wrapper);
111 return JS_TRUE;
112-
113 } catch(const ScriptException& e) {
114 Logger::getInstance()->log(std::string("ScriptLogger: Caught script exception: ") + e.what());
115 }
116@@ -141,12 +131,19 @@ namespace dss {
117 return JS_FALSE;
118 }
119
120+ void ScriptLogger_finalize(JSContext *cx, JSObject *obj) {
121+ ScriptLoggerContextWrapper* pWrapper = static_cast<ScriptLoggerContextWrapper*>(JS_GetPrivate(cx, obj));
122+ Logger::getInstance()->log("Finalizing ScriptLogger");
123+ JS_SetPrivate(cx, obj, NULL);
124+ delete pWrapper;
125+ } // finalize_set
126+
127 static JSClass ScriptLogger_class = {
128 "Logger", JSCLASS_HAS_PRIVATE,
129 JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
130 JS_EnumerateStandardClasses,
131 JS_ResolveStub,
132- JS_ConvertStub, JS_FinalizeStub, JSCLASS_NO_OPTIONAL_MEMBERS
133+ JS_ConvertStub, ScriptLogger_finalize, JSCLASS_NO_OPTIONAL_MEMBERS
134 };
135
136 static JSFunctionSpec ScriptLogger_methods[] = {
137@@ -155,12 +152,6 @@ namespace dss {
138 {NULL, NULL, 0, 0, 0},
139 };
140
141- static JSFunctionSpec ScriptLogger_static_methods[] = {
142- {"getChannel", ScriptLoggerExtension_log, 1, 0, 0},
143- {NULL, NULL, 0, 0, 0},
144- };
145-
146-
147 ScriptLogger::ScriptLogger(const std::string& _filePath,
148 const std::string& _filename,
149 ScriptLoggerExtension* _pExtension) {
150@@ -265,7 +256,7 @@ namespace dss {
151 JS_InitClass(_context.getJSContext(),
152 _context.getRootObject().getJSObject(),
153 NULL, &ScriptLogger_class, ScriptLogger_construct, 1, NULL,
154- ScriptLogger_methods, NULL, ScriptLogger_static_methods);
155+ ScriptLogger_methods, NULL, NULL);
156
157 } // extendContext
158
159--
1601.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0002-Properly-unsubscribe-property-listeners.patch
(128 / 0)
  
1From b9cba6385a3e8c9e1550b4519e5afc5043652077 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Tue, 27 Jul 2010 15:22:12 +0200
4Subject: [PATCH 02/12] Properly unsubscribe property listeners
5
6---
7 core/scripting/propertyscriptextension.cpp | 16 ++++++++++++----
8 core/scripting/propertyscriptextension.h | 6 +++---
9 tests/modeljstests.cpp | 8 +++-----
10 3 files changed, 18 insertions(+), 12 deletions(-)
11
12diff --git a/core/scripting/propertyscriptextension.cpp b/core/scripting/propertyscriptextension.cpp
13index 1d90f46..6d2f30e 100644
14--- a/core/scripting/propertyscriptextension.cpp
15+++ b/core/scripting/propertyscriptextension.cpp
16@@ -37,6 +37,10 @@ namespace dss {
17 m_NextListenerID(1)
18 { } // ctor
19
20+ PropertyScriptExtension::~PropertyScriptExtension() {
21+ scrubVector(m_Listeners);
22+ } // dtor
23+
24 JSBool global_prop_setProperty(JSContext* cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
25 if(argc < 2) {
26 Logger::getInstance()->log("JS: global_prop_setProperty: need two arguments: property-path & value", lsError);
27@@ -247,12 +251,16 @@ namespace dss {
28 m_Listeners.push_back(_pListener);
29 } // addListener
30
31- void PropertyScriptExtension::removeListener(const std::string& _identifier) {
32+ void PropertyScriptExtension::removeListener(const std::string& _identifier, bool _destroy) {
33 for(std::vector<PropertyScriptListener*>::iterator it = m_Listeners.begin(), e = m_Listeners.end();
34 it != e; ++it) {
35 if((*it)->getIdentifier() == _identifier) {
36- (*it)->unsubscribe();
37+ PropertyScriptListener* pListener = *it;
38+ pListener->unsubscribe();
39 m_Listeners.erase(it);
40+ if(_destroy) {
41+ delete pListener;
42+ }
43 return;
44 }
45 }
46@@ -276,8 +284,8 @@ namespace dss {
47 } // ctor
48
49 PropertyScriptListener::~PropertyScriptListener() {
50- m_pExtension->removeListener(m_Identifier);
51- } // dtor
52+ m_pExtension->removeListener(m_Identifier, false);
53+ }
54
55 void PropertyScriptListener::createScriptObject() {
56 if(m_pScriptObject == NULL) {
57diff --git a/core/scripting/propertyscriptextension.h b/core/scripting/propertyscriptextension.h
58index f12c476..fb9eedd 100644
59--- a/core/scripting/propertyscriptextension.h
60+++ b/core/scripting/propertyscriptextension.h
61@@ -48,7 +48,7 @@ namespace dss {
62 PropertyScriptExtension* m_pExtension;
63 JSObject* m_pFunctionObject;
64 jsval m_Function;
65- std::string m_Identifier;
66+ const std::string m_Identifier;
67 boost::scoped_ptr<ScriptObject> m_pScriptObject;
68 ScriptFunctionRooter m_FunctionRoot;
69 }; // PropertyScriptListener
70@@ -56,7 +56,7 @@ namespace dss {
71 class PropertyScriptExtension : public ScriptExtension {
72 public:
73 PropertyScriptExtension(PropertySystem& _propertySystem);
74- virtual ~PropertyScriptExtension() {}
75+ virtual ~PropertyScriptExtension();
76
77 virtual void extendContext(ScriptContext& _context);
78
79@@ -65,7 +65,7 @@ namespace dss {
80 JSObject* createJSProperty(ScriptContext& _ctx, boost::shared_ptr<PropertyNode> _node);
81 std::string produceListenerID();
82 void addListener(PropertyScriptListener* _pListener);
83- void removeListener(const std::string& _identifier);
84+ void removeListener(const std::string& _identifier, bool _destroy = true);
85 private:
86 PropertySystem& m_PropertySystem;
87 std::vector<PropertyScriptListener*> m_Listeners;
88diff --git a/tests/modeljstests.cpp b/tests/modeljstests.cpp
89index 136a27a..e06ec6a 100644
90--- a/tests/modeljstests.cpp
91+++ b/tests/modeljstests.cpp
92@@ -362,7 +362,7 @@ BOOST_AUTO_TEST_CASE(testPropertyListener) {
93
94 boost::scoped_ptr<ScriptContext> ctx(env->getContext());
95 ctx->evaluate<void>("setProperty('/testing', 1); setProperty('/triggered', false); "
96- "listener_ident = setListener('/testing', function(changedNode) { setProperty('/triggered', true); }); "
97+ "var listener_ident = setListener('/testing', function(changedNode) { setProperty('/triggered', true); }); "
98 );
99
100 BOOST_CHECK_EQUAL(propSys.getBoolValue("/triggered"), false);
101@@ -414,15 +414,14 @@ BOOST_AUTO_TEST_CASE(testReentrancy) {
102
103 boost::scoped_ptr<ScriptContext> ctx(env->getContext());
104 ctx->evaluate<void>("setProperty('/testing', 1); setProperty('/triggered', false); "
105- "other_ident = setListener('/triggered', function() { setProperty('/itWorks', true); } ); "
106- "listener_ident = setListener('/testing', function(changedNode) { setProperty('/triggered', true); }); "
107+ "var other_ident = setListener('/triggered', function() { setProperty('/itWorks', true); } ); "
108+ "var listener_ident = setListener('/testing', function(changedNode) { setProperty('/triggered', true); }); "
109 );
110
111 propSys.setBoolValue("/testing", true);
112
113 BOOST_CHECK_EQUAL(propSys.getBoolValue("/itWorks"), true);
114
115- // TODO: find out why it crashes w/o those lines
116 ctx->evaluate<void>("removeListener(other_ident); "
117 "removeListener(listener_ident); "
118 );
119@@ -495,7 +494,6 @@ BOOST_AUTO_TEST_CASE(testThreading) {
120 sleepMS(100);
121 }
122
123- // TODO: find out why it crashes w/o those lines
124 ctx->evaluate<void>("removeListener(l1); removeListener(l2);");
125 } // testThreading
126
127--
1281.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0003-Deprecate-keepContext.patch
(159 / 0)
  
1From 563a6dbb5fe1e2c8b13983cd0c9634c7b54ba021 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Thu, 29 Jul 2010 11:25:40 +0200
4Subject: [PATCH 03/12] Deprecate keepContext
5
6Check if the context has session attached objects instead.
7---
8 core/eventinterpreterplugins.cpp | 44 ++++++++++++++++++++++++++++++++++++-
9 core/eventinterpreterplugins.h | 6 +++++
10 core/jshandler.cpp | 6 +---
11 core/jshandler.h | 3 --
12 4 files changed, 50 insertions(+), 9 deletions(-)
13
14diff --git a/core/eventinterpreterplugins.cpp b/core/eventinterpreterplugins.cpp
15index 2a7ff10..688e0fa 100644
16--- a/core/eventinterpreterplugins.cpp
17+++ b/core/eventinterpreterplugins.cpp
18@@ -141,9 +141,9 @@ namespace dss {
19
20 ctx->evaluateScript<void>(scriptName);
21
22- if(ctx->getKeepContext()) {
23+ if(ctx->hasAttachedObjects()) {
24 m_KeptContexts.push_back(ctx);
25- Logger::getInstance()->log("EventInterpreterPluginJavascript::handleEvent: keeping script " + scriptName + " in memory", lsInfo);
26+ Logger::getInstance()->log("EventInterpreterPluginJavascript::handleEvent: still has objects, keeping " + scriptName + " in memory", lsInfo);
27 }
28 } catch(ScriptException& e) {
29 Logger::getInstance()->log(std::string("EventInterpreterPluginJavascript::handleEvent: Caught event while running/parsing script '")
30@@ -154,6 +154,8 @@ namespace dss {
31 }
32 } // handleEvent
33
34+ const std::string EventInterpreterPluginJavascript::kCleanupScriptsEventName = "EventInterpreteRPluginJavascript_cleanupScripts";
35+
36 void EventInterpreterPluginJavascript::initializeEnvironment() {
37 m_Environment.initialize();
38 if(DSS::hasInstance()) {
39@@ -171,9 +173,47 @@ namespace dss {
40 m_Environment.addExtension(ext);
41 ext = new ScriptLoggerExtension(DSS::getInstance()->getJSLogDirectory(), DSS::getInstance()->getEventInterpreter());
42 m_Environment.addExtension(ext);
43+ setupCleanupEvent();
44 }
45 } // initializeEnvironment
46
47+ void EventInterpreterPluginJavascript::setupCleanupEvent() {
48+ EventInterpreterInternalRelay* pRelay =
49+ dynamic_cast<EventInterpreterInternalRelay*>(getEventInterpreter().getPluginByName(EventInterpreterInternalRelay::getPluginName()));
50+ m_pRelayTarget = boost::shared_ptr<InternalEventRelayTarget>(new InternalEventRelayTarget(*pRelay));
51+
52+ boost::shared_ptr<EventSubscription> cleanupEventSubscription(
53+ new dss::EventSubscription(
54+ kCleanupScriptsEventName,
55+ EventInterpreterInternalRelay::getPluginName(),
56+ getEventInterpreter(),
57+ boost::shared_ptr<SubscriptionOptions>())
58+ );
59+ m_pRelayTarget->subscribeTo(cleanupEventSubscription);
60+ m_pRelayTarget->setCallback(boost::bind(&EventInterpreterPluginJavascript::cleanupTerminatedScripts, this, _1, _2));
61+ sendCleanupEvent();
62+ } // setupCleanupEvent
63+
64+ void EventInterpreterPluginJavascript::cleanupTerminatedScripts(Event& _event, const EventSubscription& _subscription) {
65+ typedef std::vector<boost::shared_ptr<ScriptContext> >::iterator tScriptContextIterator;
66+ tScriptContextIterator ipScriptContext = m_KeptContexts.begin();
67+ while(ipScriptContext != m_KeptContexts.end()) {
68+ if(!(*ipScriptContext)->hasAttachedObjects()) {
69+ ipScriptContext = m_KeptContexts.erase(ipScriptContext);
70+ } else {
71+ ++ipScriptContext;
72+ }
73+ }
74+ sendCleanupEvent();
75+ } // cleanupTerminatedScripts
76+
77+ void EventInterpreterPluginJavascript::sendCleanupEvent() {
78+ boost::shared_ptr<Event> pEvent(new Event(kCleanupScriptsEventName));
79+ pEvent->setProperty("time", "+" + intToString(20));
80+ getEventInterpreter().getQueue().pushEvent(pEvent);
81+ } // sendCleanupEvent
82+
83+
84
85 //================================================== EventInterpreterPluginDS485
86
87diff --git a/core/eventinterpreterplugins.h b/core/eventinterpreterplugins.h
88index 65c74b3..c1525f3 100644
89--- a/core/eventinterpreterplugins.h
90+++ b/core/eventinterpreterplugins.h
91@@ -32,6 +32,7 @@
92 namespace dss {
93
94 class Apartment;
95+ class InternalEventRelayTarget;
96
97 class EventInterpreterPluginRaiseEvent : public EventInterpreterPlugin {
98 private:
99@@ -48,8 +49,13 @@ namespace dss {
100 private:
101 ScriptEnvironment m_Environment;
102 std::vector<boost::shared_ptr<ScriptContext> > m_KeptContexts;
103+ boost::shared_ptr<InternalEventRelayTarget> m_pRelayTarget;
104+ static const std::string kCleanupScriptsEventName;
105 private:
106 void initializeEnvironment();
107+ void setupCleanupEvent();
108+ void cleanupTerminatedScripts(Event& _event, const EventSubscription& _subscription);
109+ void sendCleanupEvent();
110 public:
111 EventInterpreterPluginJavascript(EventInterpreter* _pInterpreter);
112
113diff --git a/core/jshandler.cpp b/core/jshandler.cpp
114index 5aca7e6..3cbc02d 100644
115--- a/core/jshandler.cpp
116+++ b/core/jshandler.cpp
117@@ -206,8 +206,7 @@ namespace dss {
118 } // global_print
119
120 JSBool global_keepContext(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
121- ScriptContext* ctx = static_cast<ScriptContext*>(JS_GetContextPrivate(cx));
122- ctx->setKeepContext(true);
123+ Logger::getInstance()->log("keepContext() is deprecated", lsWarning);
124 return JS_TRUE;
125 } // global_keepContext
126
127@@ -271,8 +270,7 @@ namespace dss {
128
129 ScriptContext::ScriptContext(ScriptEnvironment& _env, JSContext* _pContext)
130 : m_Environment(_env),
131- m_pContext(_pContext),
132- m_KeepContext(false)
133+ m_pContext(_pContext)
134 {
135 JSRequest req(m_pContext);
136 JS_SetOptions(m_pContext, JSOPTION_VAROBJFIX | JSOPTION_DONT_REPORT_UNCAUGHT);
137diff --git a/core/jshandler.h b/core/jshandler.h
138index d4e5462..1f4d09e 100644
139--- a/core/jshandler.h
140+++ b/core/jshandler.h
141@@ -91,7 +91,6 @@ namespace dss {
142 boost::scoped_ptr<ScriptObject> m_RootObject;
143 ScriptEnvironment& m_Environment;
144 JSContext* m_pContext;
145- bool m_KeepContext;
146 std::vector<ScriptContextAttachedObject*> m_AttachedObjects;
147 static void jsErrorHandler(JSContext *ctx, const char *msg, JSErrorReport *er);
148 public:
149@@ -117,8 +116,6 @@ namespace dss {
150 ScriptEnvironment& getEnvironment() { return m_Environment; }
151 ScriptObject& getRootObject() { return *m_RootObject; }
152 bool raisePendingExceptions();
153- bool getKeepContext() { return m_KeepContext; };
154- void setKeepContext(bool _value) { m_KeepContext = _value; }
155
156 void attachObject(ScriptContextAttachedObject* _pObject);
157 void removeAttachedObject(ScriptContextAttachedObject* _pObject);
158--
1591.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0004-Prevent-destruction-in-callbacks.patch
(131 / 0)
  
1From 2536059dd91812a35c729bfad7d9d2965cc701c4 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Thu, 5 Aug 2010 14:56:06 +0200
4Subject: [PATCH 04/12] Prevent destruction in callbacks
5
6---
7 core/scripting/jssocket.cpp | 22 ++++++++++++++++++++--
8 1 files changed, 20 insertions(+), 2 deletions(-)
9
10diff --git a/core/scripting/jssocket.cpp b/core/scripting/jssocket.cpp
11index 3aff70b..c86bb44 100644
12--- a/core/scripting/jssocket.cpp
13+++ b/core/scripting/jssocket.cpp
14@@ -103,7 +103,7 @@ namespace dss {
15 + e.what(), lsError);
16 }
17 }
18- //JS_GC(m_pContext->getJSContext());
19+ JS_GC(m_pContext->getJSContext());
20 }
21
22 ScriptContext& getContext() const {
23@@ -134,6 +134,14 @@ namespace dss {
24 }
25
26 protected:
27+ void blockingCallback() {
28+ m_pAttachedObject.reset(new ScriptContextAttachedObject(&getContext()));
29+ }
30+
31+ void leavingBlockingCallback() {
32+ m_pAttachedObject.reset();
33+ }
34+ protected:
35 SocketScriptContextExtension& m_Extension;
36 private:
37 void ensureIOServiceAvailable() {
38@@ -148,6 +156,7 @@ namespace dss {
39 boost::shared_ptr<ScriptObject> m_pCallbackObject;
40 boost::shared_ptr<ScriptFunctionRooter> m_pFunctionRooter;
41 jsval m_CallbackFunction;
42+ boost::shared_ptr<ScriptContextAttachedObject> m_pAttachedObject;
43 }; // SocketHelper
44
45 class SocketHelperInstance : public SocketHelper,
46@@ -182,6 +191,7 @@ namespace dss {
47 this,
48 boost::asio::placeholders::error,
49 ++iterator));
50+ blockingCallback();
51 startIOThread();
52 }
53
54@@ -196,11 +206,13 @@ namespace dss {
55 this,
56 boost::asio::placeholders::error,
57 boost::asio::placeholders::bytes_transferred));
58+ blockingCallback();
59 startIOThread();
60 }
61
62 void close() {
63 m_pSocket->close();
64+ leavingBlockingCallback();
65 }
66
67 void receive(const int _numberOfBytes) {
68@@ -214,6 +226,7 @@ namespace dss {
69 this,
70 boost::asio::placeholders::error,
71 boost::asio::placeholders::bytes_transferred));
72+ blockingCallback();
73 startIOThread();
74 }
75
76@@ -240,6 +253,7 @@ namespace dss {
77 if(m_pSocket == NULL && m_pAcceptor != NULL) {
78 createSocket();
79 m_pAcceptor->async_accept(*m_pSocket, boost::bind(&SocketHelperInstance::acceptCallback, this, boost::asio::placeholders::error));
80+ blockingCallback();
81 startIOThread();
82 } else {
83 Logger::getInstance()->log("SocketHelperInstance::accept: Please call bind first", lsFatal);
84@@ -251,6 +265,7 @@ namespace dss {
85 tcp::resolver::iterator endpoint_iterator) {
86 Logger::getInstance()->log("*** Connection callback");
87 AssertLocked lock(&getContext());
88+ leavingBlockingCallback();
89 //JS_SetContextThread(getContext().getJSContext());
90 JSRequest req(getContext().getJSContext());
91 if (!error) {
92@@ -273,6 +288,7 @@ namespace dss {
93 void sendCallback(const boost::system::error_code& error, std::size_t bytesTransfered) {
94 Logger::getInstance()->log("*** Send callback");
95 AssertLocked lock(&getContext());
96+ leavingBlockingCallback();
97 //JS_SetContextThread(getContext().getJSContext());
98 JSRequest req(getContext().getJSContext());
99 if(!error) {
100@@ -295,11 +311,13 @@ namespace dss {
101 JSRequest req(getContext().getJSContext());
102 if(!error) {
103 if(bytesTransfered == m_BytesToRead) {
104+ leavingBlockingCallback();
105 std::string result(m_DataBuffer, m_BytesToRead);
106 callDataCallback(result);
107 m_BytesToRead = 0;
108 }
109 } else {
110+ leavingBlockingCallback();
111 Logger::getInstance()->log("SocketHelperInstance::readCallback: error: " + error.message());
112 callDataCallback("");
113 }
114@@ -309,6 +327,7 @@ namespace dss {
115
116 void acceptCallback(const boost::system::error_code& error) {
117 AssertLocked lock(&getContext());
118+ leavingBlockingCallback();
119 //JS_SetContextThread(getContext().getJSContext());
120 JSRequest req(getContext().getJSContext());
121 if(!error) {
122@@ -417,7 +436,6 @@ namespace dss {
123 boost::bind(&SocketHelperSendOneShot::handle_write, this,
124 boost::asio::placeholders::error));
125 }
126- void req();
127
128 private:
129 void handle_connect(const boost::system::error_code& error,
130--
1311.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0005-Print-something-when-cleaning-up-a-script.patch
(31 / 0)
  
1From 7ac13ee0fcc1edb96644b1a84f52707134bcee69 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Wed, 11 Aug 2010 15:22:11 +0200
4Subject: [PATCH 05/12] Print something when cleaning up a script
5
6---
7 core/eventinterpreterplugins.cpp | 2 +-
8 1 files changed, 1 insertions(+), 1 deletions(-)
9
10diff --git a/core/eventinterpreterplugins.cpp b/core/eventinterpreterplugins.cpp
11index 688e0fa..ca3cf8e 100644
12--- a/core/eventinterpreterplugins.cpp
13+++ b/core/eventinterpreterplugins.cpp
14@@ -199,6 +199,7 @@ namespace dss {
15 tScriptContextIterator ipScriptContext = m_KeptContexts.begin();
16 while(ipScriptContext != m_KeptContexts.end()) {
17 if(!(*ipScriptContext)->hasAttachedObjects()) {
18+ Logger::getInstance()->log("cleanupTerminatedScripts: erasing script");
19 ipScriptContext = m_KeptContexts.erase(ipScriptContext);
20 } else {
21 ++ipScriptContext;
22@@ -214,7 +215,6 @@ namespace dss {
23 } // sendCleanupEvent
24
25
26-
27 //================================================== EventInterpreterPluginDS485
28
29 EventInterpreterPluginDS485::EventInterpreterPluginDS485(Apartment& _apartment, DS485Interface* _pInterface, EventInterpreter* _pInterpreter)
30--
311.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0006-Call-GC-again.patch
(24 / 0)
  
1From f87952129e5b803c7e306d02e868e37976542440 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Wed, 11 Aug 2010 15:22:40 +0200
4Subject: [PATCH 06/12] Call GC again
5
6---
7 core/scripting/ds485scriptextension.cpp | 2 +-
8 1 files changed, 1 insertions(+), 1 deletions(-)
9
10diff --git a/core/scripting/ds485scriptextension.cpp b/core/scripting/ds485scriptextension.cpp
11index 80d361b..93ffcf0 100644
12--- a/core/scripting/ds485scriptextension.cpp
13+++ b/core/scripting/ds485scriptextension.cpp
14@@ -119,7 +119,7 @@ namespace dss {
15 }
16 goOn = _callbackObject->callFunctionByReference<bool>(_function, paramList);
17 }
18- //JS_GC(cx);
19+ JS_GC(cx);
20 req.endRequest();
21 //JS_ClearContextThread(cx);
22 } catch(ScriptException& e) {
23--
241.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0007-Replaced-ScriptContext-by-a-Wrapper.patch
(101 / 0)
  
1From d46267984bedf2322e1552280216f3214cd55cbc Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Tue, 24 Aug 2010 21:30:19 +0200
4Subject: [PATCH 07/12] Replaced ScriptContext by a Wrapper
5
6---
7 core/eventinterpreterplugins.cpp | 34 +++++++++++++++++++++++++++-------
8 core/eventinterpreterplugins.h | 3 ++-
9 2 files changed, 29 insertions(+), 8 deletions(-)
10
11diff --git a/core/eventinterpreterplugins.cpp b/core/eventinterpreterplugins.cpp
12index ca3cf8e..e414816 100644
13--- a/core/eventinterpreterplugins.cpp
14+++ b/core/eventinterpreterplugins.cpp
15@@ -102,6 +102,24 @@ namespace dss {
16 } // applyOptionsWithSuffix
17
18
19+ //================================================== ScriptContextWrapper
20+
21+ class ScriptContextWrapper {
22+ public:
23+ ScriptContextWrapper(boost::shared_ptr<ScriptContext> _pContext)
24+ : m_pContext(_pContext)
25+ { }
26+
27+ boost::shared_ptr<ScriptContext> get() { return m_pContext; }
28+ void addFile(const std::string& _name) {
29+ m_LoadedFiles.push_back(_name);
30+ }
31+ private:
32+ boost::shared_ptr<ScriptContext> m_pContext;
33+ DateTime m_StartTime;
34+ std::vector<std::string> m_LoadedFiles;
35+ };
36+
37 //================================================== EventInterpreterPluginJavascript
38
39 EventInterpreterPluginJavascript::EventInterpreterPluginJavascript(EventInterpreter* _pInterpreter)
40@@ -118,6 +136,7 @@ namespace dss {
41
42 try {
43 boost::shared_ptr<ScriptContext> ctx(m_Environment.getContext());
44+ boost::shared_ptr<ScriptContextWrapper> wrapper(new ScriptContextWrapper(ctx));
45 ScriptObject raisedEvent(*ctx, NULL);
46 raisedEvent.setProperty<const std::string&>("name", _event.getName());
47 ctx->getRootObject().setProperty("raisedEvent", &raisedEvent);
48@@ -139,10 +158,11 @@ namespace dss {
49 raisedEvent.setProperty("subscription", &subscriptionObj);
50 subscriptionObj.setProperty<const std::string&>("name", _subscription.getEventName());
51
52+ wrapper->addFile(scriptName);
53 ctx->evaluateScript<void>(scriptName);
54
55 if(ctx->hasAttachedObjects()) {
56- m_KeptContexts.push_back(ctx);
57+ m_WrappedContexts.push_back(wrapper);
58 Logger::getInstance()->log("EventInterpreterPluginJavascript::handleEvent: still has objects, keeping " + scriptName + " in memory", lsInfo);
59 }
60 } catch(ScriptException& e) {
61@@ -195,14 +215,14 @@ namespace dss {
62 } // setupCleanupEvent
63
64 void EventInterpreterPluginJavascript::cleanupTerminatedScripts(Event& _event, const EventSubscription& _subscription) {
65- typedef std::vector<boost::shared_ptr<ScriptContext> >::iterator tScriptContextIterator;
66- tScriptContextIterator ipScriptContext = m_KeptContexts.begin();
67- while(ipScriptContext != m_KeptContexts.end()) {
68- if(!(*ipScriptContext)->hasAttachedObjects()) {
69+ typedef std::vector<boost::shared_ptr<ScriptContextWrapper> >::iterator tScriptContextWrapperIterator;
70+ tScriptContextWrapperIterator ipScriptContextWrapper = m_WrappedContexts.begin();
71+ while(ipScriptContextWrapper != m_WrappedContexts.end()) {
72+ if(!(*ipScriptContextWrapper)->get()->hasAttachedObjects()) {
73 Logger::getInstance()->log("cleanupTerminatedScripts: erasing script");
74- ipScriptContext = m_KeptContexts.erase(ipScriptContext);
75+ ipScriptContextWrapper = m_WrappedContexts.erase(ipScriptContextWrapper);
76 } else {
77- ++ipScriptContext;
78+ ++ipScriptContextWrapper;
79 }
80 }
81 sendCleanupEvent();
82diff --git a/core/eventinterpreterplugins.h b/core/eventinterpreterplugins.h
83index c1525f3..b05e923 100644
84--- a/core/eventinterpreterplugins.h
85+++ b/core/eventinterpreterplugins.h
86@@ -44,11 +44,12 @@ namespace dss {
87 virtual void handleEvent(Event& _event, const EventSubscription& _subscription);
88 }; // EventInterpreterPluginRaiseEvent
89
90+ class ScriptContextWrapper;
91
92 class EventInterpreterPluginJavascript : public EventInterpreterPlugin {
93 private:
94 ScriptEnvironment m_Environment;
95- std::vector<boost::shared_ptr<ScriptContext> > m_KeptContexts;
96+ std::vector<boost::shared_ptr<ScriptContextWrapper> > m_WrappedContexts;
97 boost::shared_ptr<InternalEventRelayTarget> m_pRelayTarget;
98 static const std::string kCleanupScriptsEventName;
99 private:
100--
1011.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0008-Expose-info-about-running-scripts-with-properties.patch
(119 / 0)
  
1From c782bbafd9f347b715868705079cafbf9188c467 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Tue, 24 Aug 2010 23:16:22 +0200
4Subject: [PATCH 08/12] Expose info about running scripts with properties
5
6---
7 core/eventinterpreterplugins.cpp | 39 ++++++++++++++++++++++++++++++++++---
8 core/eventinterpreterplugins.h | 3 ++
9 core/jshandler.h | 1 +
10 3 files changed, 39 insertions(+), 4 deletions(-)
11
12diff --git a/core/eventinterpreterplugins.cpp b/core/eventinterpreterplugins.cpp
13index e414816..8363779 100644
14--- a/core/eventinterpreterplugins.cpp
15+++ b/core/eventinterpreterplugins.cpp
16@@ -106,18 +106,44 @@ namespace dss {
17
18 class ScriptContextWrapper {
19 public:
20- ScriptContextWrapper(boost::shared_ptr<ScriptContext> _pContext)
21+ ScriptContextWrapper(boost::shared_ptr<ScriptContext> _pContext, PropertyNodePtr _pRootNode, const std::string& _identifier)
22 : m_pContext(_pContext)
23- { }
24+ {
25+ if((_pRootNode != NULL) && !_identifier.empty()) {
26+ m_pPropertyNode = _pRootNode->createProperty(_identifier + "+");
27+ m_pPropertyNode->createProperty("stopScript")->linkToProxy(
28+ PropertyProxyMemberFunction<ScriptContextWrapper,bool>(*this, NULL, &ScriptContextWrapper::stopScript));
29+ m_pPropertyNode->createProperty("startedAt")->linkToProxy(
30+ PropertyProxyMemberFunction<DateTime, std::string, false>(m_StartTime, &DateTime::toString));
31+ m_pPropertyNode->createProperty("attachedObjects")->linkToProxy(
32+ PropertyProxyMemberFunction<ScriptContext,int>(*m_pContext, &ScriptContext::getAttachedObjectsCount));
33+ }
34+ }
35+
36+ ~ScriptContextWrapper() {
37+ m_pPropertyNode->getParentNode()->removeChild(m_pPropertyNode);
38+ }
39+
40+ boost::shared_ptr<ScriptContext> get() {
41+ return m_pContext;
42+ }
43
44- boost::shared_ptr<ScriptContext> get() { return m_pContext; }
45 void addFile(const std::string& _name) {
46 m_LoadedFiles.push_back(_name);
47+ if(m_pPropertyNode != NULL) {
48+ m_pPropertyNode->createProperty("files/file+")->setStringValue(_name);
49+ }
50+ }
51+ private:
52+ void stopScript(bool _value) {
53+ // TODO: implement
54+ Logger::getInstance()->log("Script would be stopped if this would have been implemented");
55 }
56 private:
57 boost::shared_ptr<ScriptContext> m_pContext;
58 DateTime m_StartTime;
59 std::vector<std::string> m_LoadedFiles;
60+ PropertyNodePtr m_pPropertyNode;
61 };
62
63 //================================================== EventInterpreterPluginJavascript
64@@ -136,7 +162,11 @@ namespace dss {
65
66 try {
67 boost::shared_ptr<ScriptContext> ctx(m_Environment.getContext());
68- boost::shared_ptr<ScriptContextWrapper> wrapper(new ScriptContextWrapper(ctx));
69+ std::string scriptID = _event.getPropertyByName("script_id");
70+ if(scriptID.empty()) {
71+ scriptID = _event.getName() + _subscription.getID();
72+ }
73+ boost::shared_ptr<ScriptContextWrapper> wrapper(new ScriptContextWrapper(ctx, m_pScriptRootNode, scriptID));
74 ScriptObject raisedEvent(*ctx, NULL);
75 raisedEvent.setProperty<const std::string&>("name", _event.getName());
76 ctx->getRootObject().setProperty("raisedEvent", &raisedEvent);
77@@ -194,6 +224,7 @@ namespace dss {
78 ext = new ScriptLoggerExtension(DSS::getInstance()->getJSLogDirectory(), DSS::getInstance()->getEventInterpreter());
79 m_Environment.addExtension(ext);
80 setupCleanupEvent();
81+ m_pScriptRootNode = DSS::getInstance()->getPropertySystem().createProperty("/scripts");
82 }
83 } // initializeEnvironment
84
85diff --git a/core/eventinterpreterplugins.h b/core/eventinterpreterplugins.h
86index b05e923..7f30d2a 100644
87--- a/core/eventinterpreterplugins.h
88+++ b/core/eventinterpreterplugins.h
89@@ -45,6 +45,8 @@ namespace dss {
90 }; // EventInterpreterPluginRaiseEvent
91
92 class ScriptContextWrapper;
93+ class PropertyNode;
94+ typedef boost::shared_ptr<PropertyNode> PropertyNodePtr;
95
96 class EventInterpreterPluginJavascript : public EventInterpreterPlugin {
97 private:
98@@ -52,6 +54,7 @@ namespace dss {
99 std::vector<boost::shared_ptr<ScriptContextWrapper> > m_WrappedContexts;
100 boost::shared_ptr<InternalEventRelayTarget> m_pRelayTarget;
101 static const std::string kCleanupScriptsEventName;
102+ PropertyNodePtr m_pScriptRootNode;
103 private:
104 void initializeEnvironment();
105 void setupCleanupEvent();
106diff --git a/core/jshandler.h b/core/jshandler.h
107index 1f4d09e..ad7c3a0 100644
108--- a/core/jshandler.h
109+++ b/core/jshandler.h
110@@ -120,6 +120,7 @@ namespace dss {
111 void attachObject(ScriptContextAttachedObject* _pObject);
112 void removeAttachedObject(ScriptContextAttachedObject* _pObject);
113 bool hasAttachedObjects() const { return !m_AttachedObjects.empty(); }
114+ int getAttachedObjectsCount() const { return m_AttachedObjects.size(); }
115 ScriptContextAttachedObject* getAttachedObjectByName(const std::string& _name);
116 public:
117
118--
1191.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0009-Prevent-context-destruction-when-waiting-for-frame.patch
(23 / 0)
  
1From 57bf9d7391114ad7bc532eaa1dec70b1127f5b55 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Patrick=20St=C3=A4hlin?= <pstaehlin@futurelab.ch>
3Date: Wed, 25 Aug 2010 13:30:35 +0200
4Subject: [PATCH 09/12] Prevent context destruction when waiting for frame
5
6---
7 core/scripting/ds485scriptextension.cpp | 1 +
8 1 files changed, 1 insertions(+), 0 deletions(-)
9
10diff --git a/core/scripting/ds485scriptextension.cpp b/core/scripting/ds485scriptextension.cpp
11index 93ffcf0..7b1a3f6 100644
12--- a/core/scripting/ds485scriptextension.cpp
13+++ b/core/scripting/ds485scriptextension.cpp
14@@ -81,6 +81,7 @@ namespace dss {
15 void waitForFrame(boost::shared_ptr<FrameBucketCollector> _bucket, boost::shared_ptr<ScriptObject> _callbackObject, jsval _function, int _timeout, boost::shared_ptr<ScriptFunctionRooter> _rootedFunction) {
16 bool goOn = true;
17 JSContext* cx = getContext()->getJSContext();
18+ boost::shared_ptr<ScriptContextAttachedObject> preventContextDestruction(new ScriptContextAttachedObject(getContext()));
19 do {
20 bool hasFrame = _bucket->waitForFrame(_timeout);
21 try {
22--
231.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0011-Fixed-assert-that-was-seen-during-the-tests.patch
(33 / 0)
  
1From 91b8194b9526fe968f55aa25786d7857558adfa2 Mon Sep 17 00:00:00 2001
2From: Sergey 'Jin' Bostandzhyan <jin@developer.digitalstrom.org>
3Date: Tue, 7 Sep 2010 11:30:18 +0200
4Subject: [PATCH 11/12] Fixed assert that was seen during the tests
5
6The cleanup code in the ScriptContextWrapper object was expecting an
7existing property node, which is not the case in the test environment.
8While the constructor was handling this correctly, the check in the
9destructor was not made.
10
11Fixed by adding the check to the destructor ScriptContextWrapper
12destructor.
13---
14 core/eventinterpreterplugins.cpp | 4 +++-
15 1 files changed, 3 insertions(+), 1 deletions(-)
16
17diff --git a/core/eventinterpreterplugins.cpp b/core/eventinterpreterplugins.cpp
18index 8363779..0d07bb5 100644
19--- a/core/eventinterpreterplugins.cpp
20+++ b/core/eventinterpreterplugins.cpp
21@@ -121,7 +121,9 @@ namespace dss {
22 }
23
24 ~ScriptContextWrapper() {
25- m_pPropertyNode->getParentNode()->removeChild(m_pPropertyNode);
26+ if ((m_pPropertyNode != NULL) && (m_pPropertyNode->getParentNode() != NULL)) {
27+ m_pPropertyNode->getParentNode()->removeChild(m_pPropertyNode);
28+ }
29 }
30
31 boost::shared_ptr<ScriptContext> get() {
32--
331.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/0012-Better-function-naming.patch
(117 / 0)
  
1From 436e32f9676e522c42ca49d6ae17b48a3d4dd751 Mon Sep 17 00:00:00 2001
2From: Sergey 'Jin' Bostandzhyan <jin@developer.digitalstrom.org>
3Date: Tue, 7 Sep 2010 11:31:38 +0200
4Subject: [PATCH 12/12] Better function naming
5
6As discussed, renamed blockingCallback() to startBlockingCall() and
7leavingBlockingCallback() to endBlockingCall()
8---
9 core/scripting/jssocket.cpp | 24 ++++++++++++------------
10 1 files changed, 12 insertions(+), 12 deletions(-)
11
12diff --git a/core/scripting/jssocket.cpp b/core/scripting/jssocket.cpp
13index c86bb44..7e5f008 100644
14--- a/core/scripting/jssocket.cpp
15+++ b/core/scripting/jssocket.cpp
16@@ -134,11 +134,11 @@ namespace dss {
17 }
18
19 protected:
20- void blockingCallback() {
21+ void startBlockingCall() {
22 m_pAttachedObject.reset(new ScriptContextAttachedObject(&getContext()));
23 }
24
25- void leavingBlockingCallback() {
26+ void endBlockingCall() {
27 m_pAttachedObject.reset();
28 }
29 protected:
30@@ -191,7 +191,7 @@ namespace dss {
31 this,
32 boost::asio::placeholders::error,
33 ++iterator));
34- blockingCallback();
35+ startBlockingCall();
36 startIOThread();
37 }
38
39@@ -206,13 +206,13 @@ namespace dss {
40 this,
41 boost::asio::placeholders::error,
42 boost::asio::placeholders::bytes_transferred));
43- blockingCallback();
44+ startBlockingCall();
45 startIOThread();
46 }
47
48 void close() {
49 m_pSocket->close();
50- leavingBlockingCallback();
51+ endBlockingCall();
52 }
53
54 void receive(const int _numberOfBytes) {
55@@ -226,7 +226,7 @@ namespace dss {
56 this,
57 boost::asio::placeholders::error,
58 boost::asio::placeholders::bytes_transferred));
59- blockingCallback();
60+ startBlockingCall();
61 startIOThread();
62 }
63
64@@ -253,7 +253,7 @@ namespace dss {
65 if(m_pSocket == NULL && m_pAcceptor != NULL) {
66 createSocket();
67 m_pAcceptor->async_accept(*m_pSocket, boost::bind(&SocketHelperInstance::acceptCallback, this, boost::asio::placeholders::error));
68- blockingCallback();
69+ startBlockingCall();
70 startIOThread();
71 } else {
72 Logger::getInstance()->log("SocketHelperInstance::accept: Please call bind first", lsFatal);
73@@ -265,7 +265,7 @@ namespace dss {
74 tcp::resolver::iterator endpoint_iterator) {
75 Logger::getInstance()->log("*** Connection callback");
76 AssertLocked lock(&getContext());
77- leavingBlockingCallback();
78+ endBlockingCall();
79 //JS_SetContextThread(getContext().getJSContext());
80 JSRequest req(getContext().getJSContext());
81 if (!error) {
82@@ -288,7 +288,7 @@ namespace dss {
83 void sendCallback(const boost::system::error_code& error, std::size_t bytesTransfered) {
84 Logger::getInstance()->log("*** Send callback");
85 AssertLocked lock(&getContext());
86- leavingBlockingCallback();
87+ endBlockingCall();
88 //JS_SetContextThread(getContext().getJSContext());
89 JSRequest req(getContext().getJSContext());
90 if(!error) {
91@@ -311,13 +311,13 @@ namespace dss {
92 JSRequest req(getContext().getJSContext());
93 if(!error) {
94 if(bytesTransfered == m_BytesToRead) {
95- leavingBlockingCallback();
96+ endBlockingCall();
97 std::string result(m_DataBuffer, m_BytesToRead);
98 callDataCallback(result);
99 m_BytesToRead = 0;
100 }
101 } else {
102- leavingBlockingCallback();
103+ endBlockingCall();
104 Logger::getInstance()->log("SocketHelperInstance::readCallback: error: " + error.message());
105 callDataCallback("");
106 }
107@@ -327,7 +327,7 @@ namespace dss {
108
109 void acceptCallback(const boost::system::error_code& error) {
110 AssertLocked lock(&getContext());
111- leavingBlockingCallback();
112+ endBlockingCall();
113 //JS_SetContextThread(getContext().getJSContext());
114 JSRequest req(getContext().getJSContext());
115 if(!error) {
116--
1171.7.2.2
targets/dss11/recipes/dss/dss-0.8.0+0.9.0-alpha2/relative-css-urls.patch
(1595 / 0)
  
1diff -Naur dss-0.9.0-alpha2.orig/data/webroot/js/dss/css/ds_gui.css dss-0.9.0-alpha2/data/webroot/js/dss/css/ds_gui.css
2--- dss-0.9.0-alpha2.orig/data/webroot/js/dss/css/ds_gui.css 2010-09-06 16:59:22.000000000 +0200
3+++ dss-0.9.0-alpha2/data/webroot/js/dss/css/ds_gui.css 2010-09-07 02:24:21.000000000 +0200
4@@ -343,7 +343,7 @@
5 position: absolute;
6 left: 0;
7 top: 0;
8- background-image:url(/images/default/s.gif);
9+ background-image:url(../../../images/default/s.gif);
10 z-index: 20000;
11 }
12
13@@ -4727,72 +4727,72 @@
14
15 .x-html-editor-tb .x-edit-bold, .x-menu-item img.x-edit-bold {
16 background-position:0 0;
17- background-image:url(/images/default/editor/tb-sprite.gif);
18+ background-image:url(../../../images/default/editor/tb-sprite.gif);
19 }
20
21 .x-html-editor-tb .x-edit-italic, .x-menu-item img.x-edit-italic {
22 background-position:-16px 0;
23- background-image:url(/images/default/editor/tb-sprite.gif);
24+ background-image:url(../../../images/default/editor/tb-sprite.gif);
25 }
26
27 .x-html-editor-tb .x-edit-underline, .x-menu-item img.x-edit-underline {
28 background-position:-32px 0;
29- background-image:url(/images/default/editor/tb-sprite.gif);
30+ background-image:url(../../../images/default/editor/tb-sprite.gif);
31 }
32
33 .x-html-editor-tb .x-edit-forecolor, .x-menu-item img.x-edit-forecolor {
34 background-position:-160px 0;
35- background-image:url(/images/default/editor/tb-sprite.gif);
36+ background-image:url(../../../images/default/editor/tb-sprite.gif);
37 }
38
39 .x-html-editor-tb .x-edit-backcolor, .x-menu-item img.x-edit-backcolor {
40 background-position:-176px 0;
41- background-image:url(/images/default/editor/tb-sprite.gif);
42+ background-image:url(../../../images/default/editor/tb-sprite.gif);
43 }
44
45 .x-html-editor-tb .x-edit-justifyleft, .x-menu-item img.x-edit-justifyleft {
46 background-position:-112px 0;
47- background-image:url(/images/default/editor/tb-sprite.gif);
48+ background-image:url(../../../images/default/editor/tb-sprite.gif);
49 }
50
51 .x-html-editor-tb .x-edit-justifycenter, .x-menu-item img.x-edit-justifycenter {
52 background-position:-128px 0;
53- background-image:url(/images/default/editor/tb-sprite.gif);
54+ background-image:url(../../../images/default/editor/tb-sprite.gif);
55 }
56
57 .x-html-editor-tb .x-edit-justifyright, .x-menu-item img.x-edit-justifyright {
58 background-position:-144px 0;
59- background-image:url(/images/default/editor/tb-sprite.gif);
60+ background-image:url(../../../images/default/editor/tb-sprite.gif);
61 }
62
63 .x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item img.x-edit-insertorderedlist {
64 background-position:-80px 0;
65- background-image:url(/images/default/editor/tb-sprite.gif);
66+ background-image:url(../../../images/default/editor/tb-sprite.gif);
67 }
68
69 .x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item img.x-edit-insertunorderedlist {
70 background-position:-96px 0;
71- background-image:url(/images/default/editor/tb-sprite.gif);
72+ background-image:url(../../../images/default/editor/tb-sprite.gif);
73 }
74
75 .x-html-editor-tb .x-edit-increasefontsize, .x-menu-item img.x-edit-increasefontsize {
76 background-position:-48px 0;
77- background-image:url(/images/default/editor/tb-sprite.gif);
78+ background-image:url(../../../images/default/editor/tb-sprite.gif);
79 }
80
81 .x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item img.x-edit-decreasefontsize {
82 background-position:-64px 0;
83- background-image:url(/images/default/editor/tb-sprite.gif);
84+ background-image:url(../../../images/default/editor/tb-sprite.gif);
85 }
86
87 .x-html-editor-tb .x-edit-sourceedit, .x-menu-item img.x-edit-sourceedit {
88 background-position:-192px 0;
89- background-image:url(/images/default/editor/tb-sprite.gif);
90+ background-image:url(../../../images/default/editor/tb-sprite.gif);
91 }
92
93 .x-html-editor-tb .x-edit-createlink, .x-menu-item img.x-edit-createlink {
94 background-position:-208px 0;
95- background-image:url(/images/default/editor/tb-sprite.gif);
96+ background-image:url(../../../images/default/editor/tb-sprite.gif);
97 }
98
99 .x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
100@@ -5002,12 +5002,12 @@
101 }
102
103 .x-layout-split-h{
104- background-image:url(/images/default/s.gif);
105+ background-image:url(../../../images/default/s.gif);
106 background-position: left;
107 }
108
109 .x-layout-split-v{
110- background-image:url(/images/default/s.gif);
111+ background-image:url(../../../images/default/s.gif);
112 background-position: top;
113 }
114
115@@ -5414,7 +5414,7 @@
116 .ext-el-mask-msg {
117 border-color:#65cf8a;
118 background-color:#c3daf9;
119- background-image:url(/images/default/box/tb-blue.gif);
120+ background-image:url(../../../images/default/box/tb-blue.gif);
121 }
122 .ext-el-mask-msg div {
123 background-color: #eee;
124@@ -5425,7 +5425,7 @@
125
126 .x-mask-loading div {
127 background-color:#fbfbfb;
128- background-image:url(/images/default/grid/loading.gif);
129+ background-image:url(../../../images/default/grid/loading.gif);
130 }
131
132 .x-item-disabled {
133@@ -5458,20 +5458,20 @@
134 }
135
136 .x-shadow .xsmc {
137- background-image: url(/images/default/shadow-c.png);
138+ background-image: url(../../../images/default/shadow-c.png);
139 }
140
141 .x-shadow .xsml, .x-shadow .xsmr {
142- background-image: url(/images/default/shadow-lr.png);
143+ background-image: url(../../../images/default/shadow-lr.png);
144 }
145
146 .x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{
147- background-image: url(/images/default/shadow.png);
148+ background-image: url(../../../images/default/shadow.png);
149 }
150
151 .loading-indicator {
152 font-size: 11px;
153- background-image: url(/images/default/grid/loading.gif);
154+ background-image: url(../../../images/default/grid/loading.gif);
155 }
156
157 .x-spotlight {
158@@ -5487,13 +5487,13 @@
159
160 ul.x-tab-strip-top{
161 background-color:#ffffff;
162- /* background-image: url(/images/default/tabs/tab-strip-bg.gif); */
163+ /* background-image: url(../../../images/default/tabs/tab-strip-bg.gif); */
164 border-bottom-color:#88EE99;
165 }
166
167 ul.x-tab-strip-bottom{
168 background-color:#cedff5;
169- background-image: url(/images/default/tabs/tab-strip-btm-bg.gif);
170+ background-image: url(../../../images/default/tabs/tab-strip-btm-bg.gif);
171 border-top-color:#97e38d;
172 }
173
174@@ -5522,31 +5522,31 @@
175 }
176
177 .x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{
178- background-image: url(/images/default/tabs/tabs-sprite.gif);
179+ background-image: url(../../../images/default/tabs/tabs-sprite.gif);
180 }
181
182 .x-tab-strip-bottom .x-tab-right {
183- background-image: url(/images/default/tabs/tab-btm-inactive-right-bg.gif);
184+ background-image: url(../../../images/default/tabs/tab-btm-inactive-right-bg.gif);
185 }
186
187 .x-tab-strip-bottom .x-tab-left {
188- background-image: url(/images/default/tabs/tab-btm-inactive-left-bg.gif);
189+ background-image: url(../../../images/default/tabs/tab-btm-inactive-left-bg.gif);
190 }
191
192 .x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
193- background-image: url(/images/default/tabs/tab-btm-right-bg.gif);
194+ background-image: url(../../../images/default/tabs/tab-btm-right-bg.gif);
195 }
196
197 .x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
198- background-image: url(/images/default/tabs/tab-btm-left-bg.gif);
199+ background-image: url(../../../images/default/tabs/tab-btm-left-bg.gif);
200 }
201
202 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
203- background-image:url(/images/default/tabs/tab-close.gif);
204+ background-image:url(../../../images/default/tabs/tab-close.gif);
205 }
206
207 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
208- background-image:url(/images/default/tabs/tab-close.gif);
209+ background-image:url(../../../images/default/tabs/tab-close.gif);
210 }
211
212 .x-tab-panel-body {
213@@ -5563,7 +5563,7 @@
214 }
215
216 .x-tab-scroller-left {
217- background-image:url(/images/default/tabs/scroll-left.gif);
218+ background-image:url(../../../images/default/tabs/scroll-left.gif);
219 border-bottom-color:#97e38d;
220 }
221
222@@ -5580,7 +5580,7 @@
223 }
224
225 .x-tab-scroller-right {
226- background-image:url(/images/default/tabs/scroll-right.gif);
227+ background-image:url(../../../images/default/tabs/scroll-right.gif);
228 border-bottom-color:#97e38d;
229 }
230
231@@ -5592,7 +5592,7 @@
232
233 .x-form-text, textarea.x-form-field{
234 background-color:#fff;
235- background-image:url(/images/default/form/text-bg.gif);
236+ background-image:url(../../../images/default/form/text-bg.gif);
237 border-color:#b5b8c8;
238 }
239
240@@ -5611,20 +5611,20 @@
241 }
242
243 .x-form-field-wrap .x-form-trigger{
244- background-image:url(/images/default/form/trigger.gif);
245+ background-image:url(../../../images/default/form/trigger.gif);
246 border-bottom-color:#b5b8c8;
247 }
248
249 .x-form-field-wrap .x-form-date-trigger{
250- background-image: url(/images/default/form/date-trigger.gif);
251+ background-image: url(../../../images/default/form/date-trigger.gif);
252 }
253
254 .x-form-field-wrap .x-form-clear-trigger{
255- background-image: url(/images/default/form/clear-trigger.gif);
256+ background-image: url(../../../images/default/form/clear-trigger.gif);
257 }
258
259 .x-form-field-wrap .x-form-search-trigger{
260- background-image: url(/images/default/form/search-trigger.gif);
261+ background-image: url(../../../images/default/form/search-trigger.gif);
262 }
263
264 .x-trigger-wrap-focus .x-form-trigger{
265@@ -5645,7 +5645,7 @@
266
267 .x-form-invalid, textarea.x-form-invalid{
268 background-color:#fff;
269- background-image:url(/images/default/grid/invalid_line.gif);
270+ background-image:url(../../../images/default/grid/invalid_line.gif);
271 border-color:#c30;
272 }
273
274@@ -5656,7 +5656,7 @@
275
276 .x-form-inner-invalid, textarea.x-form-inner-invalid{
277 background-color:#fff;
278- background-image:url(/images/default/grid/invalid_line.gif);
279+ background-image:url(../../../images/default/grid/invalid_line.gif);
280 }
281
282 .x-form-grow-sizer {
283@@ -5670,7 +5670,7 @@
284 .x-form-invalid-msg {
285 color:#c0272b;
286 font:normal 11px tahoma, arial, helvetica, sans-serif;
287- background-image:url(/images/default/shared/warning.gif);
288+ background-image:url(../../../images/default/shared/warning.gif);
289 }
290
291 .x-form-empty-field {
292@@ -5686,7 +5686,7 @@
293 }
294
295 .x-form-invalid-icon {
296- background-image:url(/images/default/form/exclamation.gif);
297+ background-image:url(../../../images/default/form/exclamation.gif);
298 }
299
300 .x-fieldset {
301@@ -5712,7 +5712,7 @@
302 }
303
304 .x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{
305- background-image:url(/images/default/button/btn.gif);
306+ background-image:url(../../../images/default/button/btn.gif);
307 }
308
309 .x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{
310@@ -5724,27 +5724,27 @@
311 }
312
313 .x-btn-mc em.x-btn-arrow {
314- background-image:url(/images/default/button/arrow.gif);
315+ background-image:url(../../../images/default/button/arrow.gif);
316 }
317
318 .x-btn-mc em.x-btn-split {
319- background-image:url(/images/default/button/s-arrow.gif);
320+ background-image:url(../../../images/default/button/s-arrow.gif);
321 }
322
323 .x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split {
324- background-image:url(/images/default/button/s-arrow-o.gif);
325+ background-image:url(../../../images/default/button/s-arrow-o.gif);
326 }
327
328 .x-btn-mc em.x-btn-arrow-bottom {
329- background-image:url(/images/default/button/s-arrow-b-noline.gif);
330+ background-image:url(../../../images/default/button/s-arrow-b-noline.gif);
331 }
332
333 .x-btn-mc em.x-btn-split-bottom {
334- background-image:url(/images/default/button/s-arrow-b.gif);
335+ background-image:url(../../../images/default/button/s-arrow-b.gif);
336 }
337
338 .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
339- background-image:url(/images/default/button/s-arrow-bo.gif);
340+ background-image:url(../../../images/default/button/s-arrow-bo.gif);
341 }
342
343 .x-btn-group-header {
344@@ -5752,42 +5752,42 @@
345 }
346
347 .x-btn-group-tc {
348- background-image: url(/images/default/button/group-tb.gif);
349+ background-image: url(../../../images/default/button/group-tb.gif);
350 }
351
352 .x-btn-group-tl {
353- background-image: url(/images/default/button/group-cs.gif);
354+ background-image: url(../../../images/default/button/group-cs.gif);
355 }
356
357 .x-btn-group-tr {
358- background-image: url(/images/default/button/group-cs.gif);
359+ background-image: url(../../../images/default/button/group-cs.gif);
360 }
361
362 .x-btn-group-bc {
363- background-image: url(/images/default/button/group-tb.gif);
364+ background-image: url(../../../images/default/button/group-tb.gif);
365 }
366
367 .x-btn-group-bl {
368- background-image: url(/images/default/button/group-cs.gif);
369+ background-image: url(../../../images/default/button/group-cs.gif);
370 }
371
372 .x-btn-group-br {
373- background-image: url(/images/default/button/group-cs.gif);
374+ background-image: url(../../../images/default/button/group-cs.gif);
375 }
376
377 .x-btn-group-ml {
378- background-image: url(/images/default/button/group-lr.gif);
379+ background-image: url(../../../images/default/button/group-lr.gif);
380 }
381 .x-btn-group-mr {
382- background-image: url(/images/default/button/group-lr.gif);
383+ background-image: url(../../../images/default/button/group-lr.gif);
384 }
385
386 .x-btn-group-notitle .x-btn-group-tc {
387- background-image: url(/images/default/button/group-tb.gif);
388+ background-image: url(../../../images/default/button/group-tb.gif);
389 }.x-toolbar{
390 border-color:#a9bfd3;
391 background-color:#d0def0;
392- background-image:url(/images/default/toolbar/bg.gif);
393+ background-image:url(../../../images/default/toolbar/bg.gif);
394 }
395
396 .x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
397@@ -5803,67 +5803,67 @@
398 }
399
400 .x-toolbar .x-btn-mc em.x-btn-split {
401- background-image:url(/images/default/button/s-arrow-noline.gif);
402+ background-image:url(../../../images/default/button/s-arrow-noline.gif);
403 }
404
405 .x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
406 .x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split
407 {
408- background-image:url(/images/default/button/s-arrow-o.gif);
409+ background-image:url(../../../images/default/button/s-arrow-o.gif);
410 }
411
412 .x-toolbar .x-btn-mc em.x-btn-split-bottom {
413- background-image:url(/images/default/button/s-arrow-b-noline.gif);
414+ background-image:url(../../../images/default/button/s-arrow-b-noline.gif);
415 }
416
417 .x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
418 .x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom
419 {
420- background-image:url(/images/default/button/s-arrow-bo.gif);
421+ background-image:url(../../../images/default/button/s-arrow-bo.gif);
422 }
423
424 .x-toolbar .xtb-sep {
425- background-image: url(/images/default/grid/grid-blue-split.gif);
426+ background-image: url(../../../images/default/grid/grid-blue-split.gif);
427 }
428
429 .x-tbar-page-first{
430- background-image: url(/images/default/grid/page-first.gif) !important;
431+ background-image: url(../../../images/default/grid/page-first.gif) !important;
432 }
433
434 .x-tbar-loading{
435- background-image: url(/images/default/grid/refresh.gif) !important;
436+ background-image: url(../../../images/default/grid/refresh.gif) !important;
437 }
438
439 .x-tbar-page-last{
440- background-image: url(/images/default/grid/page-last.gif) !important;
441+ background-image: url(../../../images/default/grid/page-last.gif) !important;
442 }
443
444 .x-tbar-page-next{
445- background-image: url(/images/default/grid/page-next.gif) !important;
446+ background-image: url(../../../images/default/grid/page-next.gif) !important;
447 }
448
449 .x-tbar-page-prev{
450- background-image: url(/images/default/grid/page-prev.gif) !important;
451+ background-image: url(../../../images/default/grid/page-prev.gif) !important;
452 }
453
454 .x-item-disabled .x-tbar-loading{
455- background-image: url(/images/default/grid/loading.gif) !important;
456+ background-image: url(../../../images/default/grid/loading.gif) !important;
457 }
458
459 .x-item-disabled .x-tbar-page-first{
460- background-image: url(/images/default/grid/page-first-disabled.gif) !important;
461+ background-image: url(../../../images/default/grid/page-first-disabled.gif) !important;
462 }
463
464 .x-item-disabled .x-tbar-page-last{
465- background-image: url(/images/default/grid/page-last-disabled.gif) !important;
466+ background-image: url(../../../images/default/grid/page-last-disabled.gif) !important;
467 }
468
469 .x-item-disabled .x-tbar-page-next{
470- background-image: url(/images/default/grid/page-next-disabled.gif) !important;
471+ background-image: url(../../../images/default/grid/page-next-disabled.gif) !important;
472 }
473
474 .x-item-disabled .x-tbar-page-prev{
475- background-image: url(/images/default/grid/page-prev-disabled.gif) !important;
476+ background-image: url(../../../images/default/grid/page-prev-disabled.gif) !important;
477 }
478
479 .x-paging-info {
480@@ -5871,11 +5871,11 @@
481 }
482
483 .x-toolbar-more-icon {
484- background-image: url(/images/default/toolbar/more.gif) !important;
485+ background-image: url(../../../images/default/toolbar/more.gif) !important;
486 }
487
488 .x-statusbar .x-status-busy {
489- background-image: url(/images/default/grid/loading.gif);
490+ background-image: url(../../../images/default/grid/loading.gif);
491 }
492
493 .x-statusbar .x-status-text-panel {
494@@ -5887,29 +5887,29 @@
495 .x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east,
496 .x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west
497 {
498- background-image:url(/images/default/sizer/e-handle.gif);
499+ background-image:url(../../../images/default/sizer/e-handle.gif);
500 }
501
502 .x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south,
503 .x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north
504 {
505- background-image:url(/images/default/sizer/s-handle.gif);
506+ background-image:url(../../../images/default/sizer/s-handle.gif);
507 }
508
509 .x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{
510- background-image:url(/images/default/sizer/s-handle.gif);
511+ background-image:url(../../../images/default/sizer/s-handle.gif);
512 }
513 .x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
514- background-image:url(/images/default/sizer/se-handle.gif);
515+ background-image:url(../../../images/default/sizer/se-handle.gif);
516 }
517 .x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
518- background-image:url(/images/default/sizer/nw-handle.gif);
519+ background-image:url(../../../images/default/sizer/nw-handle.gif);
520 }
521 .x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
522- background-image:url(/images/default/sizer/ne-handle.gif);
523+ background-image:url(../../../images/default/sizer/ne-handle.gif);
524 }
525 .x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
526- background-image:url(/images/default/sizer/sw-handle.gif);
527+ background-image:url(../../../images/default/sizer/sw-handle.gif);
528 }
529 .x-resizable-proxy{
530 border-color:#3b826b;
531@@ -5936,7 +5936,7 @@
532
533 .x-grid-row-loading {
534 background-color: #fff;
535- background-image:url(/images/default/shared/loading-balls.gif);
536+ background-image:url(../../../images/default/shared/loading-balls.gif);
537 }
538
539 .x-grid3-row {
540@@ -5951,7 +5951,7 @@
541 .x-grid3-row-over {
542 border-color:#ddd;
543 background-color:#efefef;
544- background-image:url(/images/default/grid/row-over.gif);
545+ background-image:url(../../../images/default/grid/row-over.gif);
546 }
547
548 .x-grid3-resize-proxy {
549@@ -5964,7 +5964,7 @@
550
551 .x-grid3-header{
552 background-color:#f9f9f9;
553- background-image:url(/images/default/grid/grid3-hrow.gif);
554+ background-image:url(../../../images/default/grid/grid3-hrow.gif);
555 }
556
557 .x-grid3-header-pop {
558@@ -5973,7 +5973,7 @@
559
560 .x-grid3-header-pop-inner {
561 border-left-color:#eee;
562- background-image:url(/images/default/grid/hd-pop.gif);
563+ background-image:url(../../../images/default/grid/hd-pop.gif);
564 }
565
566 td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
567@@ -5983,16 +5983,16 @@
568
569 td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner {
570 background-color:#ededed;
571- background-image:url(/images/default/grid/grid3-hrow-over.gif);
572+ background-image:url(../../../images/default/grid/grid3-hrow-over.gif);
573
574 }
575
576 .sort-asc .x-grid3-sort-icon {
577- background-image: url(/images/default/grid/sort_asc.gif);
578+ background-image: url(../../../images/default/grid/sort_asc.gif);
579 }
580
581 .sort-desc .x-grid3-sort-icon {
582- background-image: url(/images/default/grid/sort_desc.gif);
583+ background-image: url(../../../images/default/grid/sort_desc.gif);
584 }
585
586 .x-grid3-cell-text, .x-grid3-hd-text {
587@@ -6000,7 +6000,7 @@
588 }
589
590 .x-grid3-split {
591- background-image: url(/images/default/grid/grid-split.gif);
592+ background-image: url(../../../images/default/grid/grid-split.gif);
593 }
594
595 .x-grid3-hd-text {
596@@ -6009,16 +6009,16 @@
597
598 .x-dd-drag-proxy .x-grid3-hd-inner{
599 background-color:#ebf3fd;
600- background-image:url(/images/default/grid/grid3-hrow-over.gif);
601+ background-image:url(../../../images/default/grid/grid3-hrow-over.gif);
602 border-color:#aaccf6;
603 }
604
605 .col-move-top{
606- background-image:url(/images/default/grid/col-move-top.gif);
607+ background-image:url(../../../images/default/grid/col-move-top.gif);
608 }
609
610 .col-move-bottom{
611- background-image:url(/images/default/grid/col-move-bottom.gif);
612+ background-image:url(../../../images/default/grid/col-move-bottom.gif);
613 }
614
615 .x-grid3-row-selected {
616@@ -6042,7 +6042,7 @@
617
618 .x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{
619 background-color:#ebeadb !important;
620- background-image:url(/images/default/grid/grid-hrow.gif) !important;
621+ background-image:url(../../../images/default/grid/grid-hrow.gif) !important;
622 color:#000;
623 border-top-color:#fff;
624 border-right-color:#6fa0df !important;
625@@ -6053,7 +6053,7 @@
626 }
627
628 .x-grid3-dirty-cell {
629- background-image:url(/images/default/grid/dirty.gif);
630+ background-image:url(../../../images/default/grid/dirty.gif);
631 }
632
633 .x-grid3-topbar, .x-grid3-bottombar{
634@@ -6065,7 +6065,7 @@
635 }
636
637 .x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
638- background-image:url(/images/default/grid/grid3-special-col-bg.gif) !important;
639+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif) !important;
640 color:#000 !important;
641 }
642
643@@ -6075,44 +6075,44 @@
644 }
645
646 .xg-hmenu-sort-asc .x-menu-item-icon{
647- background-image: url(/images/default/grid/hmenu-asc.gif);
648+ background-image: url(../../../images/default/grid/hmenu-asc.gif);
649 }
650
651 .xg-hmenu-sort-desc .x-menu-item-icon{
652- background-image: url(/images/default/grid/hmenu-desc.gif);
653+ background-image: url(../../../images/default/grid/hmenu-desc.gif);
654 }
655
656 .xg-hmenu-lock .x-menu-item-icon{
657- background-image: url(/images/default/grid/hmenu-lock.gif);
658+ background-image: url(../../../images/default/grid/hmenu-lock.gif);
659 }
660
661 .xg-hmenu-unlock .x-menu-item-icon{
662- background-image: url(/images/default/grid/hmenu-unlock.gif);
663+ background-image: url(../../../images/default/grid/hmenu-unlock.gif);
664 }
665
666 .x-grid3-hd-btn {
667 background-color:#c3daf9;
668- background-image:url(/images/default/grid/grid3-hd-btn.gif);
669+ background-image:url(../../../images/default/grid/grid3-hd-btn.gif);
670 }
671
672 .x-grid3-body .x-grid3-td-expander {
673- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
674+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
675 }
676
677 .x-grid3-row-expander {
678- background-image:url(/images/default/grid/row-expand-sprite.gif);
679+ background-image:url(../../../images/default/grid/row-expand-sprite.gif);
680 }
681
682 .x-grid3-body .x-grid3-td-checker {
683- background-image: url(/images/default/grid/grid3-special-col-bg.gif);
684+ background-image: url(../../../images/default/grid/grid3-special-col-bg.gif);
685 }
686
687 .x-grid3-row-checker, .x-grid3-hd-checker {
688- background-image:url(/images/default/grid/row-check-sprite.gif);
689+ background-image:url(../../../images/default/grid/row-check-sprite.gif);
690 }
691
692 .x-grid3-body .x-grid3-td-numberer {
693- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
694+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
695 }
696
697 .x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
698@@ -6120,21 +6120,21 @@
699 }
700
701 .x-grid3-body .x-grid3-td-row-icon {
702- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
703+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
704 }
705
706 .x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
707 .x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
708 .x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
709- background-image:url(/images/default/grid/grid3-special-col-sel-bg.gif);
710+ background-image:url(../../../images/default/grid/grid3-special-col-sel-bg.gif);
711 }
712
713 .x-grid3-check-col {
714- background-image:url(/images/default/menu/unchecked.gif);
715+ background-image:url(../../../images/default/menu/unchecked.gif);
716 }
717
718 .x-grid3-check-col-on {
719- background-image:url(/images/default/menu/checked.gif);
720+ background-image:url(../../../images/default/menu/checked.gif);
721 }
722
723 .x-grid-group, .x-grid-group-body, .x-grid-group-hd {
724@@ -6146,25 +6146,25 @@
725 }
726
727 .x-grid-group-hd div.x-grid-group-title {
728- background-image:url(/images/default/grid/group-collapse.gif);
729+ background-image:url(../../../images/default/grid/group-collapse.gif);
730 color:#37a064;
731 font:bold 11px tahoma, arial, helvetica, sans-serif;
732 }
733
734 .x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
735- background-image:url(/images/default/grid/group-expand.gif);
736+ background-image:url(../../../images/default/grid/group-expand.gif);
737 }
738
739 .x-group-by-icon {
740- background-image:url(/images/default/grid/group-by.gif);
741+ background-image:url(../../../images/default/grid/group-by.gif);
742 }
743
744 .x-cols-icon {
745- background-image:url(/images/default/grid/columns.gif);
746+ background-image:url(../../../images/default/grid/columns.gif);
747 }
748
749 .x-show-groups-icon {
750- background-image:url(/images/default/grid/group-by.gif);
751+ background-image:url(../../../images/default/grid/group-by.gif);
752 }
753
754 .x-grid-empty {
755@@ -6190,34 +6190,34 @@
756 }
757
758 .x-dd-drop-nodrop .x-dd-drop-icon{
759- background-image: url(/images/default/dd/drop-no.gif);
760+ background-image: url(../../../images/default/dd/drop-no.gif);
761 }
762
763 .x-dd-drop-ok .x-dd-drop-icon{
764- background-image: url(/images/default/dd/drop-yes.gif);
765+ background-image: url(../../../images/default/dd/drop-yes.gif);
766 }
767
768 .x-dd-drop-ok-add .x-dd-drop-icon{
769- background-image: url(/images/default/dd/drop-add.gif);
770+ background-image: url(../../../images/default/dd/drop-add.gif);
771 }
772
773 .x-view-selector {
774 background-color:#c3daf9;
775 border-color:#33bb7d;
776 }.x-tree-node-expanded .x-tree-node-icon{
777- background-image:url(/images/default/tree/folder-open.gif);
778+ background-image:url(../../../images/default/tree/folder-open.gif);
779 }
780
781 .x-tree-node-leaf .x-tree-node-icon{
782- background-image:url(/images/default/tree/leaf.gif);
783+ background-image:url(../../../images/default/tree/leaf.gif);
784 }
785
786 .x-tree-node-collapsed .x-tree-node-icon{
787- background-image:url(/images/default/tree/folder.gif);
788+ background-image:url(../../../images/default/tree/folder.gif);
789 }
790
791 .x-tree-node-loading .x-tree-node-icon{
792- background-image:url(/images/default/tree/loading.gif) !important;
793+ background-image:url(../../../images/default/tree/loading.gif) !important;
794 }
795
796 .x-tree-node .x-tree-node-inline-icon {
797@@ -6235,63 +6235,63 @@
798 }
799
800 .x-tree-lines .x-tree-elbow{
801- background-image:url(/images/default/tree/elbow.gif);
802+ background-image:url(../../../images/default/tree/elbow.gif);
803 }
804
805 .x-tree-lines .x-tree-elbow-plus{
806- background-image:url(/images/default/tree/elbow-plus.gif);
807+ background-image:url(../../../images/default/tree/elbow-plus.gif);
808 }
809
810 .x-tree-lines .x-tree-elbow-minus{
811- background-image:url(/images/default/tree/elbow-minus.gif);
812+ background-image:url(../../../images/default/tree/elbow-minus.gif);
813 }
814
815 .x-tree-lines .x-tree-elbow-end{
816- background-image:url(/images/default/tree/elbow-end.gif);
817+ background-image:url(../../../images/default/tree/elbow-end.gif);
818 }
819
820 .x-tree-lines .x-tree-elbow-end-plus{
821- background-image:url(/images/default/tree/elbow-end-plus.gif);
822+ background-image:url(../../../images/default/tree/elbow-end-plus.gif);
823 }
824
825 .x-tree-lines .x-tree-elbow-end-minus{
826- background-image:url(/images/default/tree/elbow-end-minus.gif);
827+ background-image:url(../../../images/default/tree/elbow-end-minus.gif);
828 }
829
830 .x-tree-lines .x-tree-elbow-line{
831- background-image:url(/images/default/tree/elbow-line.gif);
832+ background-image:url(../../../images/default/tree/elbow-line.gif);
833 }
834
835 .x-tree-no-lines .x-tree-elbow-plus{
836- background-image:url(/images/default/tree/elbow-plus-nl.gif);
837+ background-image:url(../../../images/default/tree/elbow-plus-nl.gif);
838 }
839
840 .x-tree-no-lines .x-tree-elbow-minus{
841- background-image:url(/images/default/tree/elbow-minus-nl.gif);
842+ background-image:url(../../../images/default/tree/elbow-minus-nl.gif);
843 }
844
845 .x-tree-no-lines .x-tree-elbow-end-plus{
846- background-image:url(/images/default/tree/elbow-end-plus-nl.gif);
847+ background-image:url(../../../images/default/tree/elbow-end-plus-nl.gif);
848 }
849
850 .x-tree-no-lines .x-tree-elbow-end-minus{
851- background-image:url(/images/default/tree/elbow-end-minus-nl.gif);
852+ background-image:url(../../../images/default/tree/elbow-end-minus-nl.gif);
853 }
854
855 .x-tree-arrows .x-tree-elbow-plus{
856- background-image:url(/images/default/tree/arrows.gif);
857+ background-image:url(../../../images/default/tree/arrows.gif);
858 }
859
860 .x-tree-arrows .x-tree-elbow-minus{
861- background-image:url(/images/default/tree/arrows.gif);
862+ background-image:url(../../../images/default/tree/arrows.gif);
863 }
864
865 .x-tree-arrows .x-tree-elbow-end-plus{
866- background-image:url(/images/default/tree/arrows.gif);
867+ background-image:url(../../../images/default/tree/arrows.gif);
868 }
869
870 .x-tree-arrows .x-tree-elbow-end-minus{
871- background-image:url(/images/default/tree/arrows.gif);
872+ background-image:url(../../../images/default/tree/arrows.gif);
873 }
874
875 .x-tree-node{
876@@ -6341,26 +6341,26 @@
877 }
878
879 .x-tree-drop-ok-append .x-dd-drop-icon{
880- background-image: url(/images/default/tree/drop-add.gif);
881+ background-image: url(../../../images/default/tree/drop-add.gif);
882 }
883
884 .x-tree-drop-ok-above .x-dd-drop-icon{
885- background-image: url(/images/default/tree/drop-over.gif);
886+ background-image: url(../../../images/default/tree/drop-over.gif);
887 }
888
889 .x-tree-drop-ok-below .x-dd-drop-icon{
890- background-image: url(/images/default/tree/drop-under.gif);
891+ background-image: url(../../../images/default/tree/drop-under.gif);
892 }
893
894 .x-tree-drop-ok-between .x-dd-drop-icon{
895- background-image: url(/images/default/tree/drop-between.gif);
896+ background-image: url(../../../images/default/tree/drop-between.gif);
897 }.x-date-picker {
898 border-color: #1b6c5e;
899 background-color:#fff;
900 }
901
902 .x-date-middle,.x-date-left,.x-date-right {
903- background-image: url(/images/default/shared/hd-sprite.gif);
904+ background-image: url(../../../images/default/shared/hd-sprite.gif);
905 color:#fff;
906 font:bold 11px "sans serif", tahoma, verdana, helvetica;
907 }
908@@ -6370,20 +6370,20 @@
909 }
910
911 .x-date-middle .x-btn-mc em.x-btn-arrow {
912- background-image:url(/images/default/toolbar/btn-arrow-light.gif);
913+ background-image:url(../../../images/default/toolbar/btn-arrow-light.gif);
914 }
915
916 .x-date-right a {
917- background-image: url(/images/default/shared/right-btn.gif);
918+ background-image: url(../../../images/default/shared/right-btn.gif);
919 }
920
921 .x-date-left a{
922- background-image: url(/images/default/shared/left-btn.gif);
923+ background-image: url(../../../images/default/shared/left-btn.gif);
924 }
925
926 .x-date-inner th {
927 background-color:#dfecfb;
928- background-image:url(/images/default/shared/glass-bg.gif);
929+ background-image:url(../../../images/default/shared/glass-bg.gif);
930 border-bottom-color:#a3bad9;
931 font:normal 10px arial, helvetica,tahoma,sans-serif;
932 color:#236d5c;
933@@ -6404,7 +6404,7 @@
934
935 .x-date-inner .x-date-selected a{
936 background-color:#dfecfb;
937- background-image:url(/images/default/shared/glass-bg.gif);
938+ background-image:url(../../../images/default/shared/glass-bg.gif);
939 border-color:#97e38d;
940 }
941
942@@ -6423,7 +6423,7 @@
943 .x-date-bottom {
944 border-top-color:#a3bad9;
945 background-color:#dfecfb;
946- background-image:url(/images/default/shared/glass-bg.gif);
947+ background-image:url(../../../images/default/shared/glass-bg.gif);
948 }
949
950 .x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
951@@ -6462,7 +6462,7 @@
952
953 .x-date-mp-btns {
954 background-color: #dfecfb;
955- background-image: url(/images/default/shared/glass-bg.gif);
956+ background-image: url(../../../images/default/shared/glass-bg.gif);
957 }
958
959 .x-date-mp-btns td {
960@@ -6480,22 +6480,22 @@
961
962 td.x-date-mp-sel a {
963 background-color: #dfecfb;
964- background-image: url(/images/default/shared/glass-bg.gif);
965+ background-image: url(../../../images/default/shared/glass-bg.gif);
966 border-color:#97e38d;
967 }
968
969 .x-date-mp-ybtn a {
970- background-image:url(/images/default/panel/tool-sprites.gif);
971+ background-image:url(../../../images/default/panel/tool-sprites.gif);
972 }
973
974 td.x-date-mp-sep {
975 border-right-color:#c5d2df;
976 }.x-tip .x-tip-close{
977- background-image: url(/images/default/qtip/close.gif);
978+ background-image: url(../../../images/default/qtip/close.gif);
979 }
980
981 .x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr {
982- background-image: url(/images/default/qtip/tip-sprite.gif);
983+ background-image: url(../../../images/default/qtip/tip-sprite.gif);
984 }
985
986 .x-tip .x-tip-mc {
987@@ -6518,18 +6518,18 @@
988 .x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc,
989 .x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr
990 {
991- background-image: url(/images/default/form/error-tip-corners.gif);
992+ background-image: url(../../../images/default/form/error-tip-corners.gif);
993 }
994
995 .x-form-invalid-tip .x-tip-body {
996- background-image:url(/images/default/form/exclamation.gif);
997+ background-image:url(../../../images/default/form/exclamation.gif);
998 }
999
1000 .x-tip-anchor {
1001- background-image:url(/images/default/qtip/tip-anchor-sprite.gif);
1002+ background-image:url(../../../images/default/qtip/tip-anchor-sprite.gif);
1003 }.x-menu {
1004 background-color:#f0f0f0;
1005- background-image:url(/images/default/menu/menu.gif);
1006+ background-image:url(../../../images/default/menu/menu.gif);
1007 }
1008
1009 .x-menu-floating{
1010@@ -6545,7 +6545,7 @@
1011 }
1012
1013 .x-menu-item-arrow{
1014- background-image:url(/images/default/menu/menu-parent.gif);
1015+ background-image:url(../../../images/default/menu/menu-parent.gif);
1016 }
1017
1018 .x-menu-sep {
1019@@ -6558,7 +6558,7 @@
1020 }
1021
1022 .x-menu-item-active {
1023- background-image: url(/images/default/menu/item-over.gif);
1024+ background-image: url(../../../images/default/menu/item-over.gif);
1025 background-color: #dbecf4;
1026 border-color:#aaccf6;
1027 }
1028@@ -6568,15 +6568,15 @@
1029 }
1030
1031 .x-menu-check-item .x-menu-item-icon{
1032- background-image:url(/images/default/menu/unchecked.gif);
1033+ background-image:url(../../../images/default/menu/unchecked.gif);
1034 }
1035
1036 .x-menu-item-checked .x-menu-item-icon{
1037- background-image:url(/images/default/menu/checked.gif);
1038+ background-image:url(../../../images/default/menu/checked.gif);
1039 }
1040
1041 .x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
1042- background-image:url(/images/default/menu/group-checked.gif);
1043+ background-image:url(../../../images/default/menu/group-checked.gif);
1044 }
1045
1046 .x-menu-group-item .x-menu-item-icon{
1047@@ -6597,31 +6597,31 @@
1048 }
1049
1050 .x-menu-scroller-top {
1051- background-image:url(/images/default/layout/mini-top.gif);
1052+ background-image:url(../../../images/default/layout/mini-top.gif);
1053 }
1054
1055 .x-menu-scroller-bottom {
1056- background-image:url(/images/default/layout/mini-bottom.gif);
1057+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1058 }
1059 .x-box-tl {
1060- background-image: url(/images/default/box/corners.gif);
1061+ background-image: url(../../../images/default/box/corners.gif);
1062 }
1063
1064 .x-box-tc {
1065- background-image: url(/images/default/box/tb.gif);
1066+ background-image: url(../../../images/default/box/tb.gif);
1067 }
1068
1069 .x-box-tr {
1070- background-image: url(/images/default/box/corners.gif);
1071+ background-image: url(../../../images/default/box/corners.gif);
1072 }
1073
1074 .x-box-ml {
1075- background-image: url(/images/default/box/l.gif);
1076+ background-image: url(../../../images/default/box/l.gif);
1077 }
1078
1079 .x-box-mc {
1080 background-color: #eee;
1081- background-image: url(/images/default/box/tb.gif);
1082+ background-image: url(../../../images/default/box/tb.gif);
1083 font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
1084 color: #393939;
1085 font-size: 12px;
1086@@ -6633,27 +6633,27 @@
1087 }
1088
1089 .x-box-mr {
1090- background-image: url(/images/default/box/r.gif);
1091+ background-image: url(../../../images/default/box/r.gif);
1092 }
1093
1094 .x-box-bl {
1095- background-image: url(/images/default/box/corners.gif);
1096+ background-image: url(../../../images/default/box/corners.gif);
1097 }
1098
1099 .x-box-bc {
1100- background-image: url(/images/default/box/tb.gif);
1101+ background-image: url(../../../images/default/box/tb.gif);
1102 }
1103
1104 .x-box-br {
1105- background-image: url(/images/default/box/corners.gif);
1106+ background-image: url(../../../images/default/box/corners.gif);
1107 }
1108
1109 .x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
1110- background-image: url(/images/default/box/corners-blue.gif);
1111+ background-image: url(../../../images/default/box/corners-blue.gif);
1112 }
1113
1114 .x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
1115- background-image: url(/images/default/box/tb-blue.gif);
1116+ background-image: url(../../../images/default/box/tb-blue.gif);
1117 }
1118
1119 .x-box-blue .x-box-mc {
1120@@ -6665,11 +6665,11 @@
1121 }
1122
1123 .x-box-blue .x-box-ml {
1124- background-image: url(/images/default/box/l-blue.gif);
1125+ background-image: url(../../../images/default/box/l-blue.gif);
1126 }
1127
1128 .x-box-blue .x-box-mr {
1129- background-image: url(/images/default/box/r-blue.gif);
1130+ background-image: url(../../../images/default/box/r-blue.gif);
1131 }#x-debug-browser .x-tree .x-tree-node a span {
1132 color:#229772;
1133 font-size:11px;
1134@@ -6700,7 +6700,7 @@
1135 .x-combo-list-hd {
1136 font:bold 11px tahoma, arial, helvetica, sans-serif;
1137 color:#158b76;
1138- background-image: url(/images/default/layout/panel-title-light-bg.gif);
1139+ background-image: url(../../../images/default/layout/panel-title-light-bg.gif);
1140 border-bottom-color:#98c0f4;
1141 }
1142
1143@@ -6733,7 +6733,7 @@
1144 font-size: 11px;
1145 font-family: tahoma,arial,verdana,sans-serif;
1146 border-color:#77DD88;
1147- background-image: url(/images/default/panel/white-top-bottom.gif);
1148+ background-image: url(../../../images/default/panel/white-top-bottom.gif);
1149 }
1150
1151 .x-panel-body {
1152@@ -6759,16 +6759,16 @@
1153 }
1154
1155 .x-panel-tc {
1156- background-image: url(/images/default/panel/top-bottom.gif);
1157+ background-image: url(../../../images/default/panel/top-bottom.gif);
1158 }
1159
1160 .x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{
1161- background-image: url(/images/default/panel/corners-sprite.gif);
1162+ background-image: url(../../../images/default/panel/corners-sprite.gif);
1163 border-bottom-color:#77dd88;
1164 }
1165
1166 .x-panel-bc {
1167- background-image: url(/images/default/panel/top-bottom.gif);
1168+ background-image: url(../../../images/default/panel/top-bottom.gif);
1169 }
1170
1171 .x-panel-mc {
1172@@ -6778,15 +6778,15 @@
1173
1174 .x-panel-ml {
1175 background-color: #fff;
1176- background-image:url(/images/default/panel/left-right.gif);
1177+ background-image:url(../../../images/default/panel/left-right.gif);
1178 }
1179
1180 .x-panel-mr {
1181- background-image: url(/images/default/panel/left-right.gif);
1182+ background-image: url(../../../images/default/panel/left-right.gif);
1183 }
1184
1185 .x-tool {
1186- background-image:url(/images/default/panel/tool-sprites.gif);
1187+ background-image:url(../../../images/default/panel/tool-sprites.gif);
1188 }
1189
1190 .x-panel-ghost {
1191@@ -6815,27 +6815,27 @@
1192 }
1193
1194 .x-window-tc {
1195- background-image: url(/images/default/window/top-bottom.png);
1196+ background-image: url(../../../images/default/window/top-bottom.png);
1197 }
1198
1199 .x-window-tl {
1200- background-image: url(/images/default/window/left-corners.png);
1201+ background-image: url(../../../images/default/window/left-corners.png);
1202 }
1203
1204 .x-window-tr {
1205- background-image: url(/images/default/window/right-corners.png);
1206+ background-image: url(../../../images/default/window/right-corners.png);
1207 }
1208
1209 .x-window-bc {
1210- background-image: url(/images/default/window/top-bottom.png);
1211+ background-image: url(../../../images/default/window/top-bottom.png);
1212 }
1213
1214 .x-window-bl {
1215- background-image: url(/images/default/window/left-corners.png);
1216+ background-image: url(../../../images/default/window/left-corners.png);
1217 }
1218
1219 .x-window-br {
1220- background-image: url(/images/default/window/right-corners.png);
1221+ background-image: url(../../../images/default/window/right-corners.png);
1222 }
1223
1224 .x-window-mc {
1225@@ -6845,11 +6845,11 @@
1226 }
1227
1228 .x-window-ml {
1229- background-image: url(/images/default/window/left-right.png);
1230+ background-image: url(../../../images/default/window/left-right.png);
1231 }
1232
1233 .x-window-mr {
1234- background-image: url(/images/default/window/left-right.png);
1235+ background-image: url(../../../images/default/window/left-right.png);
1236 }
1237
1238 .x-window-maximized .x-window-tc {
1239@@ -6888,7 +6888,7 @@
1240 background-color:#fff;
1241 }
1242 .x-html-editor-tb .x-btn-text {
1243- background-image:url(/images/default/editor/tb-sprite.gif);
1244+ background-image:url(../../../images/default/editor/tb-sprite.gif);
1245 }.x-panel-noborder .x-panel-header-noborder {
1246 border-bottom-color:#77dd88;
1247 }
1248@@ -6914,7 +6914,7 @@
1249 .x-accordion-hd {
1250 color:#222;
1251 font-weight:normal;
1252- background-image: url(/images/default/panel/light-hd.gif);
1253+ background-image: url(../../../images/default/panel/light-hd.gif);
1254 }
1255
1256 .x-layout-collapsed{
1257@@ -6927,44 +6927,44 @@
1258 }
1259
1260 .x-layout-split-west .x-layout-mini {
1261- background-image:url(/images/default/layout/mini-left.gif);
1262+ background-image:url(../../../images/default/layout/mini-left.gif);
1263 }
1264 .x-layout-split-east .x-layout-mini {
1265- background-image:url(/images/default/layout/mini-right.gif);
1266+ background-image:url(../../../images/default/layout/mini-right.gif);
1267 }
1268 .x-layout-split-north .x-layout-mini {
1269- background-image:url(/images/default/layout/mini-top.gif);
1270+ background-image:url(../../../images/default/layout/mini-top.gif);
1271 }
1272 .x-layout-split-south .x-layout-mini {
1273- background-image:url(/images/default/layout/mini-bottom.gif);
1274+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1275 }
1276
1277 .x-layout-cmini-west .x-layout-mini {
1278- background-image:url(/images/default/layout/mini-right.gif);
1279+ background-image:url(../../../images/default/layout/mini-right.gif);
1280 }
1281
1282 .x-layout-cmini-east .x-layout-mini {
1283- background-image:url(/images/default/layout/mini-left.gif);
1284+ background-image:url(../../../images/default/layout/mini-left.gif);
1285 }
1286
1287 .x-layout-cmini-north .x-layout-mini {
1288- background-image:url(/images/default/layout/mini-bottom.gif);
1289+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1290 }
1291
1292 .x-layout-cmini-south .x-layout-mini {
1293- background-image:url(/images/default/layout/mini-top.gif);
1294+ background-image:url(../../../images/default/layout/mini-top.gif);
1295 }.x-progress-wrap {
1296 border-color:#70a979;
1297 }
1298
1299 .x-progress-inner {
1300 background-color:#e0e8f3;
1301- background-image:url(/images/default/qtip/bg.gif);
1302+ background-image:url(../../../images/default/qtip/bg.gif);
1303 }
1304
1305 .x-progress-bar {
1306 background-color:#77dd88;
1307- background-image:url(/images/default/progress/progress-bg.gif);
1308+ background-image:url(../../../images/default/progress/progress-bg.gif);
1309 border-top-color:#77dd88;
1310 border-bottom-color:#77dd88;
1311 border-right-color:#77dd88;
1312@@ -6980,7 +6980,7 @@
1313 color:#005138;
1314 }.x-list-header{
1315 background-color:#f9f9f9;
1316- background-image:url(/images/default/grid/grid3-hrow.gif);
1317+ background-image:url(../../../images/default/grid/grid3-hrow.gif);
1318 }
1319
1320 .x-list-header-inner div em {
1321@@ -7006,22 +7006,22 @@
1322 }
1323
1324 .x-list-header-inner em.sort-asc, .x-list-header-inner em.sort-desc {
1325- background-image:url(/images/default/grid/sort-hd.gif);
1326+ background-image:url(../../../images/default/grid/sort-hd.gif);
1327 border-color: #77dd88;
1328 }.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner {
1329- background-image:url(/images/default/slider/slider-bg.png);
1330+ background-image:url(../../../images/default/slider/slider-bg.png);
1331 }
1332
1333 .x-slider-horz .x-slider-thumb {
1334- background-image:url(/images/default/slider/slider-thumb.png);
1335+ background-image:url(../../../images/default/slider/slider-thumb.png);
1336 }
1337
1338 .x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner {
1339- background-image:url(/images/default/slider/slider-v-bg.png);
1340+ background-image:url(../../../images/default/slider/slider-v-bg.png);
1341 }
1342
1343 .x-slider-vert .x-slider-thumb {
1344- background-image:url(/images/default/slider/slider-v-thumb.png);
1345+ background-image:url(../../../images/default/slider/slider-v-thumb.png);
1346 }.x-window-dlg .ext-mb-text,
1347 .x-window-dlg .x-window-header-text {
1348 font-size:12px;
1349@@ -7032,23 +7032,23 @@
1350 }
1351
1352 .x-window-dlg .x-msg-box-wait {
1353- background-image:url(/images/default/grid/loading.gif);
1354+ background-image:url(../../../images/default/grid/loading.gif);
1355 }
1356
1357 .x-window-dlg .ext-mb-info {
1358- background-image:url(/images/default/window/icon-info.gif);
1359+ background-image:url(../../../images/default/window/icon-info.gif);
1360 }
1361
1362 .x-window-dlg .ext-mb-warning {
1363- background-image:url(/images/default/window/icon-warning.gif);
1364+ background-image:url(../../../images/default/window/icon-warning.gif);
1365 }
1366
1367 .x-window-dlg .ext-mb-question {
1368- background-image:url(/images/default/window/icon-question.gif);
1369+ background-image:url(../../../images/default/window/icon-question.gif);
1370 }
1371
1372 .x-window-dlg .ext-mb-error {
1373- background-image:url(/images/default/window/icon-error.gif);
1374+ background-image:url(../../../images/default/window/icon-error.gif);
1375 }
1376
1377 .x-grid3-cell-inner.x-grid3-col-dsid,
1378@@ -7064,7 +7064,7 @@
1379
1380 .zonePanelMenu .x-btn-mc em.x-btn-arrow button
1381 {
1382- background-image: url(/images/default/panel/tool-sprites.gif);
1383+ background-image: url(../../../images/default/panel/tool-sprites.gif);
1384 background-position: 0px -195px;
1385 width: 15px;
1386 height: 15px;
1387@@ -7073,7 +7073,7 @@
1388
1389 .zonePanelMenu.x-btn-over .x-btn-mc em.x-btn-arrow button
1390 {
1391- background-image: url(/images/default/panel/tool-sprites.gif);
1392+ background-image: url(../../../images/default/panel/tool-sprites.gif);
1393 background-position: -15px -195px;
1394 width: 15px;
1395 height: 15px;
1396@@ -7122,12 +7122,12 @@
1397
1398 .x-view-over{
1399 border:1px solid #dddddd;
1400- background: #efefef url(/images/default/grid/row-over.gif) repeat-x left top;
1401+ background: #efefef url(../../../images/default/grid/row-over.gif) repeat-x left top;
1402 padding: 4px;
1403 }
1404
1405 .x-view-selected {
1406- background: #e9ffee url(/images/selected.gif) repeat-x right bottom;
1407+ background: #e9ffee url(../../../images/selected.gif) repeat-x right bottom;
1408 border:1px solid #77DD88;
1409 padding: 4px;
1410 }
1411@@ -7142,35 +7142,35 @@
1412 }
1413
1414 .reloadAction {
1415- background-image: url(/images/refresh.gif) !important;
1416+ background-image: url(../../../images/refresh.gif) !important;
1417 }
1418
1419 .newZoneAction {
1420- background-image: url(/images/add_zone.gif) !important;
1421+ background-image: url(../../../images/add_zone.gif) !important;
1422 }
1423
1424 .editZoneAction {
1425- background-image: url(/images/edit.gif) !important;
1426+ background-image: url(../../../images/edit.gif) !important;
1427 }
1428
1429 .sortZoneAction {
1430- background-image: url(/images/sort.gif) !important;
1431+ background-image: url(../../../images/sort.gif) !important;
1432 }
1433
1434 .editDeviceToolbarIcon {
1435- background-image: url(/images/edit.gif) !important;
1436+ background-image: url(../../../images/edit.gif) !important;
1437 }
1438
1439 .pingDeviceToolbarIcon {
1440- background-image: url(/images/application_osx_terminal.png) !important;
1441+ background-image: url(../../../images/application_osx_terminal.png) !important;
1442 }
1443
1444 .removeDeviceToolbarIcon {
1445- background-image: url(/images/delete.png) !important;
1446+ background-image: url(../../../images/delete.png) !important;
1447 }
1448
1449 .copyToClipboardToolbarIcon {
1450- background-image: url(/images/copy.gif) !important;
1451+ background-image: url(../../../images/copy.gif) !important;
1452 }
1453
1454 .nonPresentDevice table {
1455@@ -7179,118 +7179,118 @@
1456
1457 .isOn
1458 {
1459- background:url(/images/on.png) center no-repeat !important;
1460+ background:url(../../../images/on.png) center no-repeat !important;
1461 cursor: pointer;
1462 }
1463
1464 .isOff
1465 {
1466- background:url(/images/off.png) center no-repeat !important;
1467+ background:url(../../../images/off.png) center no-repeat !important;
1468 cursor: pointer;
1469 }
1470
1471 .isLocked
1472 {
1473- background:url(/images/lock.png) center no-repeat !important;
1474+ background:url(../../../images/lock.png) center no-repeat !important;
1475 cursor: pointer;
1476 }
1477
1478 .isUnlocked
1479 {
1480- background:url(/images/lock_open.png) center no-repeat !important;
1481+ background:url(../../../images/lock_open.png) center no-repeat !important;
1482 cursor: pointer;
1483 }
1484
1485 .lockDisabled
1486 {
1487- background:url(/images/lock_grey.png) center no-repeat !important;
1488+ background:url(../../../images/lock_grey.png) center no-repeat !important;
1489 }
1490
1491 .isDisabled
1492 {
1493- background:url(/images/noff.png) center no-repeat !important;
1494+ background:url(../../../images/noff.png) center no-repeat !important;
1495 }
1496
1497 .blink
1498 {
1499- background:url(/images/blink.png) center no-repeat !important;
1500+ background:url(../../../images/blink.png) center no-repeat !important;
1501 cursor: pointer;
1502 }
1503
1504 .blinkActive
1505 {
1506- background:url(/images/blink_active.png) center no-repeat !important;
1507+ background:url(../../../images/blink_active.png) center no-repeat !important;
1508 }
1509
1510 .functionLight
1511 {
1512- background:url(/images/brick_yellow.png) center no-repeat !important;
1513+ background:url(../../../images/brick_yellow.png) center no-repeat !important;
1514 cursor: pointer;
1515 }
1516
1517 .functionLightDisabled
1518 {
1519- background:url(/images/brick_yellow.png) center no-repeat !important;
1520+ background:url(../../../images/brick_yellow.png) center no-repeat !important;
1521 }
1522
1523 .functionLightIcon
1524 {
1525- background-image:url(/images/brick_yellow.png) !important;
1526+ background-image:url(../../../images/brick_yellow.png) !important;
1527 }
1528
1529 .functionShadow
1530 {
1531- background:url(/images/brick_grey.png) center no-repeat !important;
1532+ background:url(../../../images/brick_grey.png) center no-repeat !important;
1533 cursor: pointer;
1534 }
1535
1536 .functionShadowDisabled
1537 {
1538- background:url(/images/brick_grey.png) center no-repeat !important;
1539+ background:url(../../../images/brick_grey.png) center no-repeat !important;
1540 }
1541
1542 .functionShadowIcon
1543 {
1544- background-image:url(/images/brick_grey.png) !important;
1545+ background-image:url(../../../images/brick_grey.png) !important;
1546 }
1547
1548 .functionClimate
1549 {
1550- background:url(/images/brick_blue.png) center no-repeat !important;
1551+ background:url(../../../images/brick_blue.png) center no-repeat !important;
1552 }
1553
1554 .functionAudio
1555 {
1556- background:url(/images/brick_cyan.png) center no-repeat !important;
1557+ background:url(../../../images/brick_cyan.png) center no-repeat !important;
1558 }
1559
1560 .functionVideo
1561 {
1562- background:url(/images/brick_magenta.png) center no-repeat !important;
1563+ background:url(../../../images/brick_magenta.png) center no-repeat !important;
1564 }
1565
1566 .functionSecurity
1567 {
1568- background:url(/images/brick_red.png) center no-repeat !important;
1569+ background:url(../../../images/brick_red.png) center no-repeat !important;
1570 }
1571
1572 .functionAccess
1573 {
1574- background:url(/images/brick_green.png) center no-repeat !important;
1575+ background:url(../../../images/brick_green.png) center no-repeat !important;
1576 }
1577
1578 .functionJoker
1579 {
1580- background:url(/images/brick_darkgrey.png) center no-repeat !important;
1581+ background:url(../../../images/brick_darkgrey.png) center no-repeat !important;
1582 }
1583
1584 .lightbulbOn
1585 {
1586- background:url(/images/lightbulb.png) center no-repeat !important;
1587+ background:url(../../../images/lightbulb.png) center no-repeat !important;
1588 }
1589
1590 .lightbulbOff
1591 {
1592- background:url(/images/lightbulb_off.png) center no-repeat !important;
1593+ background:url(../../../images/lightbulb_off.png) center no-repeat !important;
1594 }
1595
targets/dss11/recipes/dss/dss_0.8.0+0.9.0-alpha2.bb
(12 / 1)
  
33SRC_URI="\
44 http://developer.digitalstrom.org/download/dss/0.9/pre-releases/dss-0.9.0-alpha2.tar.gz \
55 file://relative-css-urls.patch \
6 file://0001-Let-JS-GC-free-loggers.patch \
7 file://0002-Properly-unsubscribe-property-listeners.patch \
8 file://0003-Deprecate-keepContext.patch \
9 file://0004-Prevent-destruction-in-callbacks.patch \
10 file://0005-Print-something-when-cleaning-up-a-script.patch \
11 file://0006-Call-GC-again.patch \
12 file://0007-Replaced-ScriptContext-by-a-Wrapper.patch \
13 file://0008-Expose-info-about-running-scripts-with-properties.patch \
14 file://0009-Prevent-context-destruction-when-waiting-for-frame.patch \
15 file://0011-Fixed-assert-that-was-seen-during-the-tests.patch \
16 file://0012-Better-function-naming.patch \
617 "
718
819S="${WORKDIR}/dss-0.9.0-alpha2"
920
1021require dss.inc
1122
12PR = "r1.${INC_PR}"
23PR = "r2.${INC_PR}"
1324
1425SRC_URI[md5sum] = "5c2b21d263db87b6ad6ea7b9c35cdea3"
1526SRC_URI[sha256sum] = "5dbf9adf15f084ac995fdaca0e6623b417e1a4996c20a61814afbc47639c1182"
targets/dss11/recipes/dss/files/relative-css-urls.patch
(0 / 1595)
  
1diff -Naur dss-0.9.0-alpha2.orig/data/webroot/js/dss/css/ds_gui.css dss-0.9.0-alpha2/data/webroot/js/dss/css/ds_gui.css
2--- dss-0.9.0-alpha2.orig/data/webroot/js/dss/css/ds_gui.css 2010-09-06 16:59:22.000000000 +0200
3+++ dss-0.9.0-alpha2/data/webroot/js/dss/css/ds_gui.css 2010-09-07 02:24:21.000000000 +0200
4@@ -343,7 +343,7 @@
5 position: absolute;
6 left: 0;
7 top: 0;
8- background-image:url(/images/default/s.gif);
9+ background-image:url(../../../images/default/s.gif);
10 z-index: 20000;
11 }
12
13@@ -4727,72 +4727,72 @@
14
15 .x-html-editor-tb .x-edit-bold, .x-menu-item img.x-edit-bold {
16 background-position:0 0;
17- background-image:url(/images/default/editor/tb-sprite.gif);
18+ background-image:url(../../../images/default/editor/tb-sprite.gif);
19 }
20
21 .x-html-editor-tb .x-edit-italic, .x-menu-item img.x-edit-italic {
22 background-position:-16px 0;
23- background-image:url(/images/default/editor/tb-sprite.gif);
24+ background-image:url(../../../images/default/editor/tb-sprite.gif);
25 }
26
27 .x-html-editor-tb .x-edit-underline, .x-menu-item img.x-edit-underline {
28 background-position:-32px 0;
29- background-image:url(/images/default/editor/tb-sprite.gif);
30+ background-image:url(../../../images/default/editor/tb-sprite.gif);
31 }
32
33 .x-html-editor-tb .x-edit-forecolor, .x-menu-item img.x-edit-forecolor {
34 background-position:-160px 0;
35- background-image:url(/images/default/editor/tb-sprite.gif);
36+ background-image:url(../../../images/default/editor/tb-sprite.gif);
37 }
38
39 .x-html-editor-tb .x-edit-backcolor, .x-menu-item img.x-edit-backcolor {
40 background-position:-176px 0;
41- background-image:url(/images/default/editor/tb-sprite.gif);
42+ background-image:url(../../../images/default/editor/tb-sprite.gif);
43 }
44
45 .x-html-editor-tb .x-edit-justifyleft, .x-menu-item img.x-edit-justifyleft {
46 background-position:-112px 0;
47- background-image:url(/images/default/editor/tb-sprite.gif);
48+ background-image:url(../../../images/default/editor/tb-sprite.gif);
49 }
50
51 .x-html-editor-tb .x-edit-justifycenter, .x-menu-item img.x-edit-justifycenter {
52 background-position:-128px 0;
53- background-image:url(/images/default/editor/tb-sprite.gif);
54+ background-image:url(../../../images/default/editor/tb-sprite.gif);
55 }
56
57 .x-html-editor-tb .x-edit-justifyright, .x-menu-item img.x-edit-justifyright {
58 background-position:-144px 0;
59- background-image:url(/images/default/editor/tb-sprite.gif);
60+ background-image:url(../../../images/default/editor/tb-sprite.gif);
61 }
62
63 .x-html-editor-tb .x-edit-insertorderedlist, .x-menu-item img.x-edit-insertorderedlist {
64 background-position:-80px 0;
65- background-image:url(/images/default/editor/tb-sprite.gif);
66+ background-image:url(../../../images/default/editor/tb-sprite.gif);
67 }
68
69 .x-html-editor-tb .x-edit-insertunorderedlist, .x-menu-item img.x-edit-insertunorderedlist {
70 background-position:-96px 0;
71- background-image:url(/images/default/editor/tb-sprite.gif);
72+ background-image:url(../../../images/default/editor/tb-sprite.gif);
73 }
74
75 .x-html-editor-tb .x-edit-increasefontsize, .x-menu-item img.x-edit-increasefontsize {
76 background-position:-48px 0;
77- background-image:url(/images/default/editor/tb-sprite.gif);
78+ background-image:url(../../../images/default/editor/tb-sprite.gif);
79 }
80
81 .x-html-editor-tb .x-edit-decreasefontsize, .x-menu-item img.x-edit-decreasefontsize {
82 background-position:-64px 0;
83- background-image:url(/images/default/editor/tb-sprite.gif);
84+ background-image:url(../../../images/default/editor/tb-sprite.gif);
85 }
86
87 .x-html-editor-tb .x-edit-sourceedit, .x-menu-item img.x-edit-sourceedit {
88 background-position:-192px 0;
89- background-image:url(/images/default/editor/tb-sprite.gif);
90+ background-image:url(../../../images/default/editor/tb-sprite.gif);
91 }
92
93 .x-html-editor-tb .x-edit-createlink, .x-menu-item img.x-edit-createlink {
94 background-position:-208px 0;
95- background-image:url(/images/default/editor/tb-sprite.gif);
96+ background-image:url(../../../images/default/editor/tb-sprite.gif);
97 }
98
99 .x-html-editor-tip .x-tip-bd .x-tip-bd-inner {
100@@ -5002,12 +5002,12 @@
101 }
102
103 .x-layout-split-h{
104- background-image:url(/images/default/s.gif);
105+ background-image:url(../../../images/default/s.gif);
106 background-position: left;
107 }
108
109 .x-layout-split-v{
110- background-image:url(/images/default/s.gif);
111+ background-image:url(../../../images/default/s.gif);
112 background-position: top;
113 }
114
115@@ -5414,7 +5414,7 @@
116 .ext-el-mask-msg {
117 border-color:#65cf8a;
118 background-color:#c3daf9;
119- background-image:url(/images/default/box/tb-blue.gif);
120+ background-image:url(../../../images/default/box/tb-blue.gif);
121 }
122 .ext-el-mask-msg div {
123 background-color: #eee;
124@@ -5425,7 +5425,7 @@
125
126 .x-mask-loading div {
127 background-color:#fbfbfb;
128- background-image:url(/images/default/grid/loading.gif);
129+ background-image:url(../../../images/default/grid/loading.gif);
130 }
131
132 .x-item-disabled {
133@@ -5458,20 +5458,20 @@
134 }
135
136 .x-shadow .xsmc {
137- background-image: url(/images/default/shadow-c.png);
138+ background-image: url(../../../images/default/shadow-c.png);
139 }
140
141 .x-shadow .xsml, .x-shadow .xsmr {
142- background-image: url(/images/default/shadow-lr.png);
143+ background-image: url(../../../images/default/shadow-lr.png);
144 }
145
146 .x-shadow .xstl, .x-shadow .xstc, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbc, .x-shadow .xsbr{
147- background-image: url(/images/default/shadow.png);
148+ background-image: url(../../../images/default/shadow.png);
149 }
150
151 .loading-indicator {
152 font-size: 11px;
153- background-image: url(/images/default/grid/loading.gif);
154+ background-image: url(../../../images/default/grid/loading.gif);
155 }
156
157 .x-spotlight {
158@@ -5487,13 +5487,13 @@
159
160 ul.x-tab-strip-top{
161 background-color:#ffffff;
162- /* background-image: url(/images/default/tabs/tab-strip-bg.gif); */
163+ /* background-image: url(../../../images/default/tabs/tab-strip-bg.gif); */
164 border-bottom-color:#88EE99;
165 }
166
167 ul.x-tab-strip-bottom{
168 background-color:#cedff5;
169- background-image: url(/images/default/tabs/tab-strip-btm-bg.gif);
170+ background-image: url(../../../images/default/tabs/tab-strip-btm-bg.gif);
171 border-top-color:#97e38d;
172 }
173
174@@ -5522,31 +5522,31 @@
175 }
176
177 .x-tab-strip-top .x-tab-right, .x-tab-strip-top .x-tab-left, .x-tab-strip-top .x-tab-strip-inner{
178- background-image: url(/images/default/tabs/tabs-sprite.gif);
179+ background-image: url(../../../images/default/tabs/tabs-sprite.gif);
180 }
181
182 .x-tab-strip-bottom .x-tab-right {
183- background-image: url(/images/default/tabs/tab-btm-inactive-right-bg.gif);
184+ background-image: url(../../../images/default/tabs/tab-btm-inactive-right-bg.gif);
185 }
186
187 .x-tab-strip-bottom .x-tab-left {
188- background-image: url(/images/default/tabs/tab-btm-inactive-left-bg.gif);
189+ background-image: url(../../../images/default/tabs/tab-btm-inactive-left-bg.gif);
190 }
191
192 .x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
193- background-image: url(/images/default/tabs/tab-btm-right-bg.gif);
194+ background-image: url(../../../images/default/tabs/tab-btm-right-bg.gif);
195 }
196
197 .x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
198- background-image: url(/images/default/tabs/tab-btm-left-bg.gif);
199+ background-image: url(../../../images/default/tabs/tab-btm-left-bg.gif);
200 }
201
202 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
203- background-image:url(/images/default/tabs/tab-close.gif);
204+ background-image:url(../../../images/default/tabs/tab-close.gif);
205 }
206
207 .x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
208- background-image:url(/images/default/tabs/tab-close.gif);
209+ background-image:url(../../../images/default/tabs/tab-close.gif);
210 }
211
212 .x-tab-panel-body {
213@@ -5563,7 +5563,7 @@
214 }
215
216 .x-tab-scroller-left {
217- background-image:url(/images/default/tabs/scroll-left.gif);
218+ background-image:url(../../../images/default/tabs/scroll-left.gif);
219 border-bottom-color:#97e38d;
220 }
221
222@@ -5580,7 +5580,7 @@
223 }
224
225 .x-tab-scroller-right {
226- background-image:url(/images/default/tabs/scroll-right.gif);
227+ background-image:url(../../../images/default/tabs/scroll-right.gif);
228 border-bottom-color:#97e38d;
229 }
230
231@@ -5592,7 +5592,7 @@
232
233 .x-form-text, textarea.x-form-field{
234 background-color:#fff;
235- background-image:url(/images/default/form/text-bg.gif);
236+ background-image:url(../../../images/default/form/text-bg.gif);
237 border-color:#b5b8c8;
238 }
239
240@@ -5611,20 +5611,20 @@
241 }
242
243 .x-form-field-wrap .x-form-trigger{
244- background-image:url(/images/default/form/trigger.gif);
245+ background-image:url(../../../images/default/form/trigger.gif);
246 border-bottom-color:#b5b8c8;
247 }
248
249 .x-form-field-wrap .x-form-date-trigger{
250- background-image: url(/images/default/form/date-trigger.gif);
251+ background-image: url(../../../images/default/form/date-trigger.gif);
252 }
253
254 .x-form-field-wrap .x-form-clear-trigger{
255- background-image: url(/images/default/form/clear-trigger.gif);
256+ background-image: url(../../../images/default/form/clear-trigger.gif);
257 }
258
259 .x-form-field-wrap .x-form-search-trigger{
260- background-image: url(/images/default/form/search-trigger.gif);
261+ background-image: url(../../../images/default/form/search-trigger.gif);
262 }
263
264 .x-trigger-wrap-focus .x-form-trigger{
265@@ -5645,7 +5645,7 @@
266
267 .x-form-invalid, textarea.x-form-invalid{
268 background-color:#fff;
269- background-image:url(/images/default/grid/invalid_line.gif);
270+ background-image:url(../../../images/default/grid/invalid_line.gif);
271 border-color:#c30;
272 }
273
274@@ -5656,7 +5656,7 @@
275
276 .x-form-inner-invalid, textarea.x-form-inner-invalid{
277 background-color:#fff;
278- background-image:url(/images/default/grid/invalid_line.gif);
279+ background-image:url(../../../images/default/grid/invalid_line.gif);
280 }
281
282 .x-form-grow-sizer {
283@@ -5670,7 +5670,7 @@
284 .x-form-invalid-msg {
285 color:#c0272b;
286 font:normal 11px tahoma, arial, helvetica, sans-serif;
287- background-image:url(/images/default/shared/warning.gif);
288+ background-image:url(../../../images/default/shared/warning.gif);
289 }
290
291 .x-form-empty-field {
292@@ -5686,7 +5686,7 @@
293 }
294
295 .x-form-invalid-icon {
296- background-image:url(/images/default/form/exclamation.gif);
297+ background-image:url(../../../images/default/form/exclamation.gif);
298 }
299
300 .x-fieldset {
301@@ -5712,7 +5712,7 @@
302 }
303
304 .x-btn-tl, .x-btn-tr, .x-btn-tc, .x-btn-ml, .x-btn-mr, .x-btn-mc, .x-btn-bl, .x-btn-br, .x-btn-bc{
305- background-image:url(/images/default/button/btn.gif);
306+ background-image:url(../../../images/default/button/btn.gif);
307 }
308
309 .x-btn-click .x-btn-text, .x-btn-menu-active .x-btn-text, .x-btn-pressed .x-btn-text{
310@@ -5724,27 +5724,27 @@
311 }
312
313 .x-btn-mc em.x-btn-arrow {
314- background-image:url(/images/default/button/arrow.gif);
315+ background-image:url(../../../images/default/button/arrow.gif);
316 }
317
318 .x-btn-mc em.x-btn-split {
319- background-image:url(/images/default/button/s-arrow.gif);
320+ background-image:url(../../../images/default/button/s-arrow.gif);
321 }
322
323 .x-btn-over .x-btn-mc em.x-btn-split, .x-btn-click .x-btn-mc em.x-btn-split, .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-btn-pressed .x-btn-mc em.x-btn-split {
324- background-image:url(/images/default/button/s-arrow-o.gif);
325+ background-image:url(../../../images/default/button/s-arrow-o.gif);
326 }
327
328 .x-btn-mc em.x-btn-arrow-bottom {
329- background-image:url(/images/default/button/s-arrow-b-noline.gif);
330+ background-image:url(../../../images/default/button/s-arrow-b-noline.gif);
331 }
332
333 .x-btn-mc em.x-btn-split-bottom {
334- background-image:url(/images/default/button/s-arrow-b.gif);
335+ background-image:url(../../../images/default/button/s-arrow-b.gif);
336 }
337
338 .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-btn-click .x-btn-mc em.x-btn-split-bottom, .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-btn-pressed .x-btn-mc em.x-btn-split-bottom {
339- background-image:url(/images/default/button/s-arrow-bo.gif);
340+ background-image:url(../../../images/default/button/s-arrow-bo.gif);
341 }
342
343 .x-btn-group-header {
344@@ -5752,42 +5752,42 @@
345 }
346
347 .x-btn-group-tc {
348- background-image: url(/images/default/button/group-tb.gif);
349+ background-image: url(../../../images/default/button/group-tb.gif);
350 }
351
352 .x-btn-group-tl {
353- background-image: url(/images/default/button/group-cs.gif);
354+ background-image: url(../../../images/default/button/group-cs.gif);
355 }
356
357 .x-btn-group-tr {
358- background-image: url(/images/default/button/group-cs.gif);
359+ background-image: url(../../../images/default/button/group-cs.gif);
360 }
361
362 .x-btn-group-bc {
363- background-image: url(/images/default/button/group-tb.gif);
364+ background-image: url(../../../images/default/button/group-tb.gif);
365 }
366
367 .x-btn-group-bl {
368- background-image: url(/images/default/button/group-cs.gif);
369+ background-image: url(../../../images/default/button/group-cs.gif);
370 }
371
372 .x-btn-group-br {
373- background-image: url(/images/default/button/group-cs.gif);
374+ background-image: url(../../../images/default/button/group-cs.gif);
375 }
376
377 .x-btn-group-ml {
378- background-image: url(/images/default/button/group-lr.gif);
379+ background-image: url(../../../images/default/button/group-lr.gif);
380 }
381 .x-btn-group-mr {
382- background-image: url(/images/default/button/group-lr.gif);
383+ background-image: url(../../../images/default/button/group-lr.gif);
384 }
385
386 .x-btn-group-notitle .x-btn-group-tc {
387- background-image: url(/images/default/button/group-tb.gif);
388+ background-image: url(../../../images/default/button/group-tb.gif);
389 }.x-toolbar{
390 border-color:#a9bfd3;
391 background-color:#d0def0;
392- background-image:url(/images/default/toolbar/bg.gif);
393+ background-image:url(../../../images/default/toolbar/bg.gif);
394 }
395
396 .x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{
397@@ -5803,67 +5803,67 @@
398 }
399
400 .x-toolbar .x-btn-mc em.x-btn-split {
401- background-image:url(/images/default/button/s-arrow-noline.gif);
402+ background-image:url(../../../images/default/button/s-arrow-noline.gif);
403 }
404
405 .x-toolbar .x-btn-over .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split,
406 .x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split
407 {
408- background-image:url(/images/default/button/s-arrow-o.gif);
409+ background-image:url(../../../images/default/button/s-arrow-o.gif);
410 }
411
412 .x-toolbar .x-btn-mc em.x-btn-split-bottom {
413- background-image:url(/images/default/button/s-arrow-b-noline.gif);
414+ background-image:url(../../../images/default/button/s-arrow-b-noline.gif);
415 }
416
417 .x-toolbar .x-btn-over .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-click .x-btn-mc em.x-btn-split-bottom,
418 .x-toolbar .x-btn-menu-active .x-btn-mc em.x-btn-split-bottom, .x-toolbar .x-btn-pressed .x-btn-mc em.x-btn-split-bottom
419 {
420- background-image:url(/images/default/button/s-arrow-bo.gif);
421+ background-image:url(../../../images/default/button/s-arrow-bo.gif);
422 }
423
424 .x-toolbar .xtb-sep {
425- background-image: url(/images/default/grid/grid-blue-split.gif);
426+ background-image: url(../../../images/default/grid/grid-blue-split.gif);
427 }
428
429 .x-tbar-page-first{
430- background-image: url(/images/default/grid/page-first.gif) !important;
431+ background-image: url(../../../images/default/grid/page-first.gif) !important;
432 }
433
434 .x-tbar-loading{
435- background-image: url(/images/default/grid/refresh.gif) !important;
436+ background-image: url(../../../images/default/grid/refresh.gif) !important;
437 }
438
439 .x-tbar-page-last{
440- background-image: url(/images/default/grid/page-last.gif) !important;
441+ background-image: url(../../../images/default/grid/page-last.gif) !important;
442 }
443
444 .x-tbar-page-next{
445- background-image: url(/images/default/grid/page-next.gif) !important;
446+ background-image: url(../../../images/default/grid/page-next.gif) !important;
447 }
448
449 .x-tbar-page-prev{
450- background-image: url(/images/default/grid/page-prev.gif) !important;
451+ background-image: url(../../../images/default/grid/page-prev.gif) !important;
452 }
453
454 .x-item-disabled .x-tbar-loading{
455- background-image: url(/images/default/grid/loading.gif) !important;
456+ background-image: url(../../../images/default/grid/loading.gif) !important;
457 }
458
459 .x-item-disabled .x-tbar-page-first{
460- background-image: url(/images/default/grid/page-first-disabled.gif) !important;
461+ background-image: url(../../../images/default/grid/page-first-disabled.gif) !important;
462 }
463
464 .x-item-disabled .x-tbar-page-last{
465- background-image: url(/images/default/grid/page-last-disabled.gif) !important;
466+ background-image: url(../../../images/default/grid/page-last-disabled.gif) !important;
467 }
468
469 .x-item-disabled .x-tbar-page-next{
470- background-image: url(/images/default/grid/page-next-disabled.gif) !important;
471+ background-image: url(../../../images/default/grid/page-next-disabled.gif) !important;
472 }
473
474 .x-item-disabled .x-tbar-page-prev{
475- background-image: url(/images/default/grid/page-prev-disabled.gif) !important;
476+ background-image: url(../../../images/default/grid/page-prev-disabled.gif) !important;
477 }
478
479 .x-paging-info {
480@@ -5871,11 +5871,11 @@
481 }
482
483 .x-toolbar-more-icon {
484- background-image: url(/images/default/toolbar/more.gif) !important;
485+ background-image: url(../../../images/default/toolbar/more.gif) !important;
486 }
487
488 .x-statusbar .x-status-busy {
489- background-image: url(/images/default/grid/loading.gif);
490+ background-image: url(../../../images/default/grid/loading.gif);
491 }
492
493 .x-statusbar .x-status-text-panel {
494@@ -5887,29 +5887,29 @@
495 .x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east,
496 .x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west
497 {
498- background-image:url(/images/default/sizer/e-handle.gif);
499+ background-image:url(../../../images/default/sizer/e-handle.gif);
500 }
501
502 .x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south,
503 .x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north
504 {
505- background-image:url(/images/default/sizer/s-handle.gif);
506+ background-image:url(../../../images/default/sizer/s-handle.gif);
507 }
508
509 .x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{
510- background-image:url(/images/default/sizer/s-handle.gif);
511+ background-image:url(../../../images/default/sizer/s-handle.gif);
512 }
513 .x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{
514- background-image:url(/images/default/sizer/se-handle.gif);
515+ background-image:url(../../../images/default/sizer/se-handle.gif);
516 }
517 .x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{
518- background-image:url(/images/default/sizer/nw-handle.gif);
519+ background-image:url(../../../images/default/sizer/nw-handle.gif);
520 }
521 .x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{
522- background-image:url(/images/default/sizer/ne-handle.gif);
523+ background-image:url(../../../images/default/sizer/ne-handle.gif);
524 }
525 .x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{
526- background-image:url(/images/default/sizer/sw-handle.gif);
527+ background-image:url(../../../images/default/sizer/sw-handle.gif);
528 }
529 .x-resizable-proxy{
530 border-color:#3b826b;
531@@ -5936,7 +5936,7 @@
532
533 .x-grid-row-loading {
534 background-color: #fff;
535- background-image:url(/images/default/shared/loading-balls.gif);
536+ background-image:url(../../../images/default/shared/loading-balls.gif);
537 }
538
539 .x-grid3-row {
540@@ -5951,7 +5951,7 @@
541 .x-grid3-row-over {
542 border-color:#ddd;
543 background-color:#efefef;
544- background-image:url(/images/default/grid/row-over.gif);
545+ background-image:url(../../../images/default/grid/row-over.gif);
546 }
547
548 .x-grid3-resize-proxy {
549@@ -5964,7 +5964,7 @@
550
551 .x-grid3-header{
552 background-color:#f9f9f9;
553- background-image:url(/images/default/grid/grid3-hrow.gif);
554+ background-image:url(../../../images/default/grid/grid3-hrow.gif);
555 }
556
557 .x-grid3-header-pop {
558@@ -5973,7 +5973,7 @@
559
560 .x-grid3-header-pop-inner {
561 border-left-color:#eee;
562- background-image:url(/images/default/grid/hd-pop.gif);
563+ background-image:url(../../../images/default/grid/hd-pop.gif);
564 }
565
566 td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open {
567@@ -5983,16 +5983,16 @@
568
569 td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner {
570 background-color:#ededed;
571- background-image:url(/images/default/grid/grid3-hrow-over.gif);
572+ background-image:url(../../../images/default/grid/grid3-hrow-over.gif);
573
574 }
575
576 .sort-asc .x-grid3-sort-icon {
577- background-image: url(/images/default/grid/sort_asc.gif);
578+ background-image: url(../../../images/default/grid/sort_asc.gif);
579 }
580
581 .sort-desc .x-grid3-sort-icon {
582- background-image: url(/images/default/grid/sort_desc.gif);
583+ background-image: url(../../../images/default/grid/sort_desc.gif);
584 }
585
586 .x-grid3-cell-text, .x-grid3-hd-text {
587@@ -6000,7 +6000,7 @@
588 }
589
590 .x-grid3-split {
591- background-image: url(/images/default/grid/grid-split.gif);
592+ background-image: url(../../../images/default/grid/grid-split.gif);
593 }
594
595 .x-grid3-hd-text {
596@@ -6009,16 +6009,16 @@
597
598 .x-dd-drag-proxy .x-grid3-hd-inner{
599 background-color:#ebf3fd;
600- background-image:url(/images/default/grid/grid3-hrow-over.gif);
601+ background-image:url(../../../images/default/grid/grid3-hrow-over.gif);
602 border-color:#aaccf6;
603 }
604
605 .col-move-top{
606- background-image:url(/images/default/grid/col-move-top.gif);
607+ background-image:url(../../../images/default/grid/col-move-top.gif);
608 }
609
610 .col-move-bottom{
611- background-image:url(/images/default/grid/col-move-bottom.gif);
612+ background-image:url(../../../images/default/grid/col-move-bottom.gif);
613 }
614
615 .x-grid3-row-selected {
616@@ -6042,7 +6042,7 @@
617
618 .x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{
619 background-color:#ebeadb !important;
620- background-image:url(/images/default/grid/grid-hrow.gif) !important;
621+ background-image:url(../../../images/default/grid/grid-hrow.gif) !important;
622 color:#000;
623 border-top-color:#fff;
624 border-right-color:#6fa0df !important;
625@@ -6053,7 +6053,7 @@
626 }
627
628 .x-grid3-dirty-cell {
629- background-image:url(/images/default/grid/dirty.gif);
630+ background-image:url(../../../images/default/grid/dirty.gif);
631 }
632
633 .x-grid3-topbar, .x-grid3-bottombar{
634@@ -6065,7 +6065,7 @@
635 }
636
637 .x-props-grid .x-grid3-td-name .x-grid3-cell-inner{
638- background-image:url(/images/default/grid/grid3-special-col-bg.gif) !important;
639+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif) !important;
640 color:#000 !important;
641 }
642
643@@ -6075,44 +6075,44 @@
644 }
645
646 .xg-hmenu-sort-asc .x-menu-item-icon{
647- background-image: url(/images/default/grid/hmenu-asc.gif);
648+ background-image: url(../../../images/default/grid/hmenu-asc.gif);
649 }
650
651 .xg-hmenu-sort-desc .x-menu-item-icon{
652- background-image: url(/images/default/grid/hmenu-desc.gif);
653+ background-image: url(../../../images/default/grid/hmenu-desc.gif);
654 }
655
656 .xg-hmenu-lock .x-menu-item-icon{
657- background-image: url(/images/default/grid/hmenu-lock.gif);
658+ background-image: url(../../../images/default/grid/hmenu-lock.gif);
659 }
660
661 .xg-hmenu-unlock .x-menu-item-icon{
662- background-image: url(/images/default/grid/hmenu-unlock.gif);
663+ background-image: url(../../../images/default/grid/hmenu-unlock.gif);
664 }
665
666 .x-grid3-hd-btn {
667 background-color:#c3daf9;
668- background-image:url(/images/default/grid/grid3-hd-btn.gif);
669+ background-image:url(../../../images/default/grid/grid3-hd-btn.gif);
670 }
671
672 .x-grid3-body .x-grid3-td-expander {
673- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
674+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
675 }
676
677 .x-grid3-row-expander {
678- background-image:url(/images/default/grid/row-expand-sprite.gif);
679+ background-image:url(../../../images/default/grid/row-expand-sprite.gif);
680 }
681
682 .x-grid3-body .x-grid3-td-checker {
683- background-image: url(/images/default/grid/grid3-special-col-bg.gif);
684+ background-image: url(../../../images/default/grid/grid3-special-col-bg.gif);
685 }
686
687 .x-grid3-row-checker, .x-grid3-hd-checker {
688- background-image:url(/images/default/grid/row-check-sprite.gif);
689+ background-image:url(../../../images/default/grid/row-check-sprite.gif);
690 }
691
692 .x-grid3-body .x-grid3-td-numberer {
693- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
694+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
695 }
696
697 .x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner {
698@@ -6120,21 +6120,21 @@
699 }
700
701 .x-grid3-body .x-grid3-td-row-icon {
702- background-image:url(/images/default/grid/grid3-special-col-bg.gif);
703+ background-image:url(../../../images/default/grid/grid3-special-col-bg.gif);
704 }
705
706 .x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer,
707 .x-grid3-body .x-grid3-row-selected .x-grid3-td-checker,
708 .x-grid3-body .x-grid3-row-selected .x-grid3-td-expander {
709- background-image:url(/images/default/grid/grid3-special-col-sel-bg.gif);
710+ background-image:url(../../../images/default/grid/grid3-special-col-sel-bg.gif);
711 }
712
713 .x-grid3-check-col {
714- background-image:url(/images/default/menu/unchecked.gif);
715+ background-image:url(../../../images/default/menu/unchecked.gif);
716 }
717
718 .x-grid3-check-col-on {
719- background-image:url(/images/default/menu/checked.gif);
720+ background-image:url(../../../images/default/menu/checked.gif);
721 }
722
723 .x-grid-group, .x-grid-group-body, .x-grid-group-hd {
724@@ -6146,25 +6146,25 @@
725 }
726
727 .x-grid-group-hd div.x-grid-group-title {
728- background-image:url(/images/default/grid/group-collapse.gif);
729+ background-image:url(../../../images/default/grid/group-collapse.gif);
730 color:#37a064;
731 font:bold 11px tahoma, arial, helvetica, sans-serif;
732 }
733
734 .x-grid-group-collapsed .x-grid-group-hd div.x-grid-group-title {
735- background-image:url(/images/default/grid/group-expand.gif);
736+ background-image:url(../../../images/default/grid/group-expand.gif);
737 }
738
739 .x-group-by-icon {
740- background-image:url(/images/default/grid/group-by.gif);
741+ background-image:url(../../../images/default/grid/group-by.gif);
742 }
743
744 .x-cols-icon {
745- background-image:url(/images/default/grid/columns.gif);
746+ background-image:url(../../../images/default/grid/columns.gif);
747 }
748
749 .x-show-groups-icon {
750- background-image:url(/images/default/grid/group-by.gif);
751+ background-image:url(../../../images/default/grid/group-by.gif);
752 }
753
754 .x-grid-empty {
755@@ -6190,34 +6190,34 @@
756 }
757
758 .x-dd-drop-nodrop .x-dd-drop-icon{
759- background-image: url(/images/default/dd/drop-no.gif);
760+ background-image: url(../../../images/default/dd/drop-no.gif);
761 }
762
763 .x-dd-drop-ok .x-dd-drop-icon{
764- background-image: url(/images/default/dd/drop-yes.gif);
765+ background-image: url(../../../images/default/dd/drop-yes.gif);
766 }
767
768 .x-dd-drop-ok-add .x-dd-drop-icon{
769- background-image: url(/images/default/dd/drop-add.gif);
770+ background-image: url(../../../images/default/dd/drop-add.gif);
771 }
772
773 .x-view-selector {
774 background-color:#c3daf9;
775 border-color:#33bb7d;
776 }.x-tree-node-expanded .x-tree-node-icon{
777- background-image:url(/images/default/tree/folder-open.gif);
778+ background-image:url(../../../images/default/tree/folder-open.gif);
779 }
780
781 .x-tree-node-leaf .x-tree-node-icon{
782- background-image:url(/images/default/tree/leaf.gif);
783+ background-image:url(../../../images/default/tree/leaf.gif);
784 }
785
786 .x-tree-node-collapsed .x-tree-node-icon{
787- background-image:url(/images/default/tree/folder.gif);
788+ background-image:url(../../../images/default/tree/folder.gif);
789 }
790
791 .x-tree-node-loading .x-tree-node-icon{
792- background-image:url(/images/default/tree/loading.gif) !important;
793+ background-image:url(../../../images/default/tree/loading.gif) !important;
794 }
795
796 .x-tree-node .x-tree-node-inline-icon {
797@@ -6235,63 +6235,63 @@
798 }
799
800 .x-tree-lines .x-tree-elbow{
801- background-image:url(/images/default/tree/elbow.gif);
802+ background-image:url(../../../images/default/tree/elbow.gif);
803 }
804
805 .x-tree-lines .x-tree-elbow-plus{
806- background-image:url(/images/default/tree/elbow-plus.gif);
807+ background-image:url(../../../images/default/tree/elbow-plus.gif);
808 }
809
810 .x-tree-lines .x-tree-elbow-minus{
811- background-image:url(/images/default/tree/elbow-minus.gif);
812+ background-image:url(../../../images/default/tree/elbow-minus.gif);
813 }
814
815 .x-tree-lines .x-tree-elbow-end{
816- background-image:url(/images/default/tree/elbow-end.gif);
817+ background-image:url(../../../images/default/tree/elbow-end.gif);
818 }
819
820 .x-tree-lines .x-tree-elbow-end-plus{
821- background-image:url(/images/default/tree/elbow-end-plus.gif);
822+ background-image:url(../../../images/default/tree/elbow-end-plus.gif);
823 }
824
825 .x-tree-lines .x-tree-elbow-end-minus{
826- background-image:url(/images/default/tree/elbow-end-minus.gif);
827+ background-image:url(../../../images/default/tree/elbow-end-minus.gif);
828 }
829
830 .x-tree-lines .x-tree-elbow-line{
831- background-image:url(/images/default/tree/elbow-line.gif);
832+ background-image:url(../../../images/default/tree/elbow-line.gif);
833 }
834
835 .x-tree-no-lines .x-tree-elbow-plus{
836- background-image:url(/images/default/tree/elbow-plus-nl.gif);
837+ background-image:url(../../../images/default/tree/elbow-plus-nl.gif);
838 }
839
840 .x-tree-no-lines .x-tree-elbow-minus{
841- background-image:url(/images/default/tree/elbow-minus-nl.gif);
842+ background-image:url(../../../images/default/tree/elbow-minus-nl.gif);
843 }
844
845 .x-tree-no-lines .x-tree-elbow-end-plus{
846- background-image:url(/images/default/tree/elbow-end-plus-nl.gif);
847+ background-image:url(../../../images/default/tree/elbow-end-plus-nl.gif);
848 }
849
850 .x-tree-no-lines .x-tree-elbow-end-minus{
851- background-image:url(/images/default/tree/elbow-end-minus-nl.gif);
852+ background-image:url(../../../images/default/tree/elbow-end-minus-nl.gif);
853 }
854
855 .x-tree-arrows .x-tree-elbow-plus{
856- background-image:url(/images/default/tree/arrows.gif);
857+ background-image:url(../../../images/default/tree/arrows.gif);
858 }
859
860 .x-tree-arrows .x-tree-elbow-minus{
861- background-image:url(/images/default/tree/arrows.gif);
862+ background-image:url(../../../images/default/tree/arrows.gif);
863 }
864
865 .x-tree-arrows .x-tree-elbow-end-plus{
866- background-image:url(/images/default/tree/arrows.gif);
867+ background-image:url(../../../images/default/tree/arrows.gif);
868 }
869
870 .x-tree-arrows .x-tree-elbow-end-minus{
871- background-image:url(/images/default/tree/arrows.gif);
872+ background-image:url(../../../images/default/tree/arrows.gif);
873 }
874
875 .x-tree-node{
876@@ -6341,26 +6341,26 @@
877 }
878
879 .x-tree-drop-ok-append .x-dd-drop-icon{
880- background-image: url(/images/default/tree/drop-add.gif);
881+ background-image: url(../../../images/default/tree/drop-add.gif);
882 }
883
884 .x-tree-drop-ok-above .x-dd-drop-icon{
885- background-image: url(/images/default/tree/drop-over.gif);
886+ background-image: url(../../../images/default/tree/drop-over.gif);
887 }
888
889 .x-tree-drop-ok-below .x-dd-drop-icon{
890- background-image: url(/images/default/tree/drop-under.gif);
891+ background-image: url(../../../images/default/tree/drop-under.gif);
892 }
893
894 .x-tree-drop-ok-between .x-dd-drop-icon{
895- background-image: url(/images/default/tree/drop-between.gif);
896+ background-image: url(../../../images/default/tree/drop-between.gif);
897 }.x-date-picker {
898 border-color: #1b6c5e;
899 background-color:#fff;
900 }
901
902 .x-date-middle,.x-date-left,.x-date-right {
903- background-image: url(/images/default/shared/hd-sprite.gif);
904+ background-image: url(../../../images/default/shared/hd-sprite.gif);
905 color:#fff;
906 font:bold 11px "sans serif", tahoma, verdana, helvetica;
907 }
908@@ -6370,20 +6370,20 @@
909 }
910
911 .x-date-middle .x-btn-mc em.x-btn-arrow {
912- background-image:url(/images/default/toolbar/btn-arrow-light.gif);
913+ background-image:url(../../../images/default/toolbar/btn-arrow-light.gif);
914 }
915
916 .x-date-right a {
917- background-image: url(/images/default/shared/right-btn.gif);
918+ background-image: url(../../../images/default/shared/right-btn.gif);
919 }
920
921 .x-date-left a{
922- background-image: url(/images/default/shared/left-btn.gif);
923+ background-image: url(../../../images/default/shared/left-btn.gif);
924 }
925
926 .x-date-inner th {
927 background-color:#dfecfb;
928- background-image:url(/images/default/shared/glass-bg.gif);
929+ background-image:url(../../../images/default/shared/glass-bg.gif);
930 border-bottom-color:#a3bad9;
931 font:normal 10px arial, helvetica,tahoma,sans-serif;
932 color:#236d5c;
933@@ -6404,7 +6404,7 @@
934
935 .x-date-inner .x-date-selected a{
936 background-color:#dfecfb;
937- background-image:url(/images/default/shared/glass-bg.gif);
938+ background-image:url(../../../images/default/shared/glass-bg.gif);
939 border-color:#97e38d;
940 }
941
942@@ -6423,7 +6423,7 @@
943 .x-date-bottom {
944 border-top-color:#a3bad9;
945 background-color:#dfecfb;
946- background-image:url(/images/default/shared/glass-bg.gif);
947+ background-image:url(../../../images/default/shared/glass-bg.gif);
948 }
949
950 .x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{
951@@ -6462,7 +6462,7 @@
952
953 .x-date-mp-btns {
954 background-color: #dfecfb;
955- background-image: url(/images/default/shared/glass-bg.gif);
956+ background-image: url(../../../images/default/shared/glass-bg.gif);
957 }
958
959 .x-date-mp-btns td {
960@@ -6480,22 +6480,22 @@
961
962 td.x-date-mp-sel a {
963 background-color: #dfecfb;
964- background-image: url(/images/default/shared/glass-bg.gif);
965+ background-image: url(../../../images/default/shared/glass-bg.gif);
966 border-color:#97e38d;
967 }
968
969 .x-date-mp-ybtn a {
970- background-image:url(/images/default/panel/tool-sprites.gif);
971+ background-image:url(../../../images/default/panel/tool-sprites.gif);
972 }
973
974 td.x-date-mp-sep {
975 border-right-color:#c5d2df;
976 }.x-tip .x-tip-close{
977- background-image: url(/images/default/qtip/close.gif);
978+ background-image: url(../../../images/default/qtip/close.gif);
979 }
980
981 .x-tip .x-tip-tc, .x-tip .x-tip-tl, .x-tip .x-tip-tr, .x-tip .x-tip-bc, .x-tip .x-tip-bl, .x-tip .x-tip-br, .x-tip .x-tip-ml, .x-tip .x-tip-mr {
982- background-image: url(/images/default/qtip/tip-sprite.gif);
983+ background-image: url(../../../images/default/qtip/tip-sprite.gif);
984 }
985
986 .x-tip .x-tip-mc {
987@@ -6518,18 +6518,18 @@
988 .x-form-invalid-tip .x-tip-tc, .x-form-invalid-tip .x-tip-tl, .x-form-invalid-tip .x-tip-tr, .x-form-invalid-tip .x-tip-bc,
989 .x-form-invalid-tip .x-tip-bl, .x-form-invalid-tip .x-tip-br, .x-form-invalid-tip .x-tip-ml, .x-form-invalid-tip .x-tip-mr
990 {
991- background-image: url(/images/default/form/error-tip-corners.gif);
992+ background-image: url(../../../images/default/form/error-tip-corners.gif);
993 }
994
995 .x-form-invalid-tip .x-tip-body {
996- background-image:url(/images/default/form/exclamation.gif);
997+ background-image:url(../../../images/default/form/exclamation.gif);
998 }
999
1000 .x-tip-anchor {
1001- background-image:url(/images/default/qtip/tip-anchor-sprite.gif);
1002+ background-image:url(../../../images/default/qtip/tip-anchor-sprite.gif);
1003 }.x-menu {
1004 background-color:#f0f0f0;
1005- background-image:url(/images/default/menu/menu.gif);
1006+ background-image:url(../../../images/default/menu/menu.gif);
1007 }
1008
1009 .x-menu-floating{
1010@@ -6545,7 +6545,7 @@
1011 }
1012
1013 .x-menu-item-arrow{
1014- background-image:url(/images/default/menu/menu-parent.gif);
1015+ background-image:url(../../../images/default/menu/menu-parent.gif);
1016 }
1017
1018 .x-menu-sep {
1019@@ -6558,7 +6558,7 @@
1020 }
1021
1022 .x-menu-item-active {
1023- background-image: url(/images/default/menu/item-over.gif);
1024+ background-image: url(../../../images/default/menu/item-over.gif);
1025 background-color: #dbecf4;
1026 border-color:#aaccf6;
1027 }
1028@@ -6568,15 +6568,15 @@
1029 }
1030
1031 .x-menu-check-item .x-menu-item-icon{
1032- background-image:url(/images/default/menu/unchecked.gif);
1033+ background-image:url(../../../images/default/menu/unchecked.gif);
1034 }
1035
1036 .x-menu-item-checked .x-menu-item-icon{
1037- background-image:url(/images/default/menu/checked.gif);
1038+ background-image:url(../../../images/default/menu/checked.gif);
1039 }
1040
1041 .x-menu-item-checked .x-menu-group-item .x-menu-item-icon{
1042- background-image:url(/images/default/menu/group-checked.gif);
1043+ background-image:url(../../../images/default/menu/group-checked.gif);
1044 }
1045
1046 .x-menu-group-item .x-menu-item-icon{
1047@@ -6597,31 +6597,31 @@
1048 }
1049
1050 .x-menu-scroller-top {
1051- background-image:url(/images/default/layout/mini-top.gif);
1052+ background-image:url(../../../images/default/layout/mini-top.gif);
1053 }
1054
1055 .x-menu-scroller-bottom {
1056- background-image:url(/images/default/layout/mini-bottom.gif);
1057+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1058 }
1059 .x-box-tl {
1060- background-image: url(/images/default/box/corners.gif);
1061+ background-image: url(../../../images/default/box/corners.gif);
1062 }
1063
1064 .x-box-tc {
1065- background-image: url(/images/default/box/tb.gif);
1066+ background-image: url(../../../images/default/box/tb.gif);
1067 }
1068
1069 .x-box-tr {
1070- background-image: url(/images/default/box/corners.gif);
1071+ background-image: url(../../../images/default/box/corners.gif);
1072 }
1073
1074 .x-box-ml {
1075- background-image: url(/images/default/box/l.gif);
1076+ background-image: url(../../../images/default/box/l.gif);
1077 }
1078
1079 .x-box-mc {
1080 background-color: #eee;
1081- background-image: url(/images/default/box/tb.gif);
1082+ background-image: url(../../../images/default/box/tb.gif);
1083 font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;
1084 color: #393939;
1085 font-size: 12px;
1086@@ -6633,27 +6633,27 @@
1087 }
1088
1089 .x-box-mr {
1090- background-image: url(/images/default/box/r.gif);
1091+ background-image: url(../../../images/default/box/r.gif);
1092 }
1093
1094 .x-box-bl {
1095- background-image: url(/images/default/box/corners.gif);
1096+ background-image: url(../../../images/default/box/corners.gif);
1097 }
1098
1099 .x-box-bc {
1100- background-image: url(/images/default/box/tb.gif);
1101+ background-image: url(../../../images/default/box/tb.gif);
1102 }
1103
1104 .x-box-br {
1105- background-image: url(/images/default/box/corners.gif);
1106+ background-image: url(../../../images/default/box/corners.gif);
1107 }
1108
1109 .x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr {
1110- background-image: url(/images/default/box/corners-blue.gif);
1111+ background-image: url(../../../images/default/box/corners-blue.gif);
1112 }
1113
1114 .x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc {
1115- background-image: url(/images/default/box/tb-blue.gif);
1116+ background-image: url(../../../images/default/box/tb-blue.gif);
1117 }
1118
1119 .x-box-blue .x-box-mc {
1120@@ -6665,11 +6665,11 @@
1121 }
1122
1123 .x-box-blue .x-box-ml {
1124- background-image: url(/images/default/box/l-blue.gif);
1125+ background-image: url(../../../images/default/box/l-blue.gif);
1126 }
1127
1128 .x-box-blue .x-box-mr {
1129- background-image: url(/images/default/box/r-blue.gif);
1130+ background-image: url(../../../images/default/box/r-blue.gif);
1131 }#x-debug-browser .x-tree .x-tree-node a span {
1132 color:#229772;
1133 font-size:11px;
1134@@ -6700,7 +6700,7 @@
1135 .x-combo-list-hd {
1136 font:bold 11px tahoma, arial, helvetica, sans-serif;
1137 color:#158b76;
1138- background-image: url(/images/default/layout/panel-title-light-bg.gif);
1139+ background-image: url(../../../images/default/layout/panel-title-light-bg.gif);
1140 border-bottom-color:#98c0f4;
1141 }
1142
1143@@ -6733,7 +6733,7 @@
1144 font-size: 11px;
1145 font-family: tahoma,arial,verdana,sans-serif;
1146 border-color:#77DD88;
1147- background-image: url(/images/default/panel/white-top-bottom.gif);
1148+ background-image: url(../../../images/default/panel/white-top-bottom.gif);
1149 }
1150
1151 .x-panel-body {
1152@@ -6759,16 +6759,16 @@
1153 }
1154
1155 .x-panel-tc {
1156- background-image: url(/images/default/panel/top-bottom.gif);
1157+ background-image: url(../../../images/default/panel/top-bottom.gif);
1158 }
1159
1160 .x-panel-tl, .x-panel-tr, .x-panel-bl, .x-panel-br{
1161- background-image: url(/images/default/panel/corners-sprite.gif);
1162+ background-image: url(../../../images/default/panel/corners-sprite.gif);
1163 border-bottom-color:#77dd88;
1164 }
1165
1166 .x-panel-bc {
1167- background-image: url(/images/default/panel/top-bottom.gif);
1168+ background-image: url(../../../images/default/panel/top-bottom.gif);
1169 }
1170
1171 .x-panel-mc {
1172@@ -6778,15 +6778,15 @@
1173
1174 .x-panel-ml {
1175 background-color: #fff;
1176- background-image:url(/images/default/panel/left-right.gif);
1177+ background-image:url(../../../images/default/panel/left-right.gif);
1178 }
1179
1180 .x-panel-mr {
1181- background-image: url(/images/default/panel/left-right.gif);
1182+ background-image: url(../../../images/default/panel/left-right.gif);
1183 }
1184
1185 .x-tool {
1186- background-image:url(/images/default/panel/tool-sprites.gif);
1187+ background-image:url(../../../images/default/panel/tool-sprites.gif);
1188 }
1189
1190 .x-panel-ghost {
1191@@ -6815,27 +6815,27 @@
1192 }
1193
1194 .x-window-tc {
1195- background-image: url(/images/default/window/top-bottom.png);
1196+ background-image: url(../../../images/default/window/top-bottom.png);
1197 }
1198
1199 .x-window-tl {
1200- background-image: url(/images/default/window/left-corners.png);
1201+ background-image: url(../../../images/default/window/left-corners.png);
1202 }
1203
1204 .x-window-tr {
1205- background-image: url(/images/default/window/right-corners.png);
1206+ background-image: url(../../../images/default/window/right-corners.png);
1207 }
1208
1209 .x-window-bc {
1210- background-image: url(/images/default/window/top-bottom.png);
1211+ background-image: url(../../../images/default/window/top-bottom.png);
1212 }
1213
1214 .x-window-bl {
1215- background-image: url(/images/default/window/left-corners.png);
1216+ background-image: url(../../../images/default/window/left-corners.png);
1217 }
1218
1219 .x-window-br {
1220- background-image: url(/images/default/window/right-corners.png);
1221+ background-image: url(../../../images/default/window/right-corners.png);
1222 }
1223
1224 .x-window-mc {
1225@@ -6845,11 +6845,11 @@
1226 }
1227
1228 .x-window-ml {
1229- background-image: url(/images/default/window/left-right.png);
1230+ background-image: url(../../../images/default/window/left-right.png);
1231 }
1232
1233 .x-window-mr {
1234- background-image: url(/images/default/window/left-right.png);
1235+ background-image: url(../../../images/default/window/left-right.png);
1236 }
1237
1238 .x-window-maximized .x-window-tc {
1239@@ -6888,7 +6888,7 @@
1240 background-color:#fff;
1241 }
1242 .x-html-editor-tb .x-btn-text {
1243- background-image:url(/images/default/editor/tb-sprite.gif);
1244+ background-image:url(../../../images/default/editor/tb-sprite.gif);
1245 }.x-panel-noborder .x-panel-header-noborder {
1246 border-bottom-color:#77dd88;
1247 }
1248@@ -6914,7 +6914,7 @@
1249 .x-accordion-hd {
1250 color:#222;
1251 font-weight:normal;
1252- background-image: url(/images/default/panel/light-hd.gif);
1253+ background-image: url(../../../images/default/panel/light-hd.gif);
1254 }
1255
1256 .x-layout-collapsed{
1257@@ -6927,44 +6927,44 @@
1258 }
1259
1260 .x-layout-split-west .x-layout-mini {
1261- background-image:url(/images/default/layout/mini-left.gif);
1262+ background-image:url(../../../images/default/layout/mini-left.gif);
1263 }
1264 .x-layout-split-east .x-layout-mini {
1265- background-image:url(/images/default/layout/mini-right.gif);
1266+ background-image:url(../../../images/default/layout/mini-right.gif);
1267 }
1268 .x-layout-split-north .x-layout-mini {
1269- background-image:url(/images/default/layout/mini-top.gif);
1270+ background-image:url(../../../images/default/layout/mini-top.gif);
1271 }
1272 .x-layout-split-south .x-layout-mini {
1273- background-image:url(/images/default/layout/mini-bottom.gif);
1274+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1275 }
1276
1277 .x-layout-cmini-west .x-layout-mini {
1278- background-image:url(/images/default/layout/mini-right.gif);
1279+ background-image:url(../../../images/default/layout/mini-right.gif);
1280 }
1281
1282 .x-layout-cmini-east .x-layout-mini {
1283- background-image:url(/images/default/layout/mini-left.gif);
1284+ background-image:url(../../../images/default/layout/mini-left.gif);
1285 }
1286
1287 .x-layout-cmini-north .x-layout-mini {
1288- background-image:url(/images/default/layout/mini-bottom.gif);
1289+ background-image:url(../../../images/default/layout/mini-bottom.gif);
1290 }
1291
1292 .x-layout-cmini-south .x-layout-mini {
1293- background-image:url(/images/default/layout/mini-top.gif);
1294+ background-image:url(../../../images/default/layout/mini-top.gif);
1295 }.x-progress-wrap {
1296 border-color:#70a979;
1297 }
1298
1299 .x-progress-inner {
1300 background-color:#e0e8f3;
1301- background-image:url(/images/default/qtip/bg.gif);
1302+ background-image:url(../../../images/default/qtip/bg.gif);
1303 }
1304
1305 .x-progress-bar {
1306 background-color:#77dd88;
1307- background-image:url(/images/default/progress/progress-bg.gif);
1308+ background-image:url(../../../images/default/progress/progress-bg.gif);
1309 border-top-color:#77dd88;
1310 border-bottom-color:#77dd88;
1311 border-right-color:#77dd88;
1312@@ -6980,7 +6980,7 @@
1313 color:#005138;
1314 }.x-list-header{
1315 background-color:#f9f9f9;
1316- background-image:url(/images/default/grid/grid3-hrow.gif);
1317+ background-image:url(../../../images/default/grid/grid3-hrow.gif);
1318 }
1319
1320 .x-list-header-inner div em {
1321@@ -7006,22 +7006,22 @@
1322 }
1323
1324 .x-list-header-inner em.sort-asc, .x-list-header-inner em.sort-desc {
1325- background-image:url(/images/default/grid/sort-hd.gif);
1326+ background-image:url(../../../images/default/grid/sort-hd.gif);
1327 border-color: #77dd88;
1328 }.x-slider-horz, .x-slider-horz .x-slider-end, .x-slider-horz .x-slider-inner {
1329- background-image:url(/images/default/slider/slider-bg.png);
1330+ background-image:url(../../../images/default/slider/slider-bg.png);
1331 }
1332
1333 .x-slider-horz .x-slider-thumb {
1334- background-image:url(/images/default/slider/slider-thumb.png);
1335+ background-image:url(../../../images/default/slider/slider-thumb.png);
1336 }
1337
1338 .x-slider-vert, .x-slider-vert .x-slider-end, .x-slider-vert .x-slider-inner {
1339- background-image:url(/images/default/slider/slider-v-bg.png);
1340+ background-image:url(../../../images/default/slider/slider-v-bg.png);
1341 }
1342
1343 .x-slider-vert .x-slider-thumb {
1344- background-image:url(/images/default/slider/slider-v-thumb.png);
1345+ background-image:url(../../../images/default/slider/slider-v-thumb.png);
1346 }.x-window-dlg .ext-mb-text,
1347 .x-window-dlg .x-window-header-text {
1348 font-size:12px;
1349@@ -7032,23 +7032,23 @@
1350 }
1351
1352 .x-window-dlg .x-msg-box-wait {
1353- background-image:url(/images/default/grid/loading.gif);
1354+ background-image:url(../../../images/default/grid/loading.gif);
1355 }
1356
1357 .x-window-dlg .ext-mb-info {
1358- background-image:url(/images/default/window/icon-info.gif);
1359+ background-image:url(../../../images/default/window/icon-info.gif);
1360 }
1361
1362 .x-window-dlg .ext-mb-warning {
1363- background-image:url(/images/default/window/icon-warning.gif);
1364+ background-image:url(../../../images/default/window/icon-warning.gif);
1365 }
1366
1367 .x-window-dlg .ext-mb-question {
1368- background-image:url(/images/default/window/icon-question.gif);
1369+ background-image:url(../../../images/default/window/icon-question.gif);
1370 }
1371
1372 .x-window-dlg .ext-mb-error {
1373- background-image:url(/images/default/window/icon-error.gif);
1374+ background-image:url(../../../images/default/window/icon-error.gif);
1375 }
1376
1377 .x-grid3-cell-inner.x-grid3-col-dsid,
1378@@ -7064,7 +7064,7 @@
1379
1380 .zonePanelMenu .x-btn-mc em.x-btn-arrow button
1381 {
1382- background-image: url(/images/default/panel/tool-sprites.gif);
1383+ background-image: url(../../../images/default/panel/tool-sprites.gif);
1384 background-position: 0px -195px;
1385 width: 15px;
1386 height: 15px;
1387@@ -7073,7 +7073,7 @@
1388
1389 .zonePanelMenu.x-btn-over .x-btn-mc em.x-btn-arrow button
1390 {
1391- background-image: url(/images/default/panel/tool-sprites.gif);
1392+ background-image: url(../../../images/default/panel/tool-sprites.gif);
1393 background-position: -15px -195px;
1394 width: 15px;
1395 height: 15px;
1396@@ -7122,12 +7122,12 @@
1397
1398 .x-view-over{
1399 border:1px solid #dddddd;
1400- background: #efefef url(/images/default/grid/row-over.gif) repeat-x left top;
1401+ background: #efefef url(../../../images/default/grid/row-over.gif) repeat-x left top;
1402 padding: 4px;
1403 }
1404
1405 .x-view-selected {
1406- background: #e9ffee url(/images/selected.gif) repeat-x right bottom;
1407+ background: #e9ffee url(../../../images/selected.gif) repeat-x right bottom;
1408 border:1px solid #77DD88;
1409 padding: 4px;
1410 }
1411@@ -7142,35 +7142,35 @@
1412 }
1413
1414 .reloadAction {
1415- background-image: url(/images/refresh.gif) !important;
1416+ background-image: url(../../../images/refresh.gif) !important;
1417 }
1418
1419 .newZoneAction {
1420- background-image: url(/images/add_zone.gif) !important;
1421+ background-image: url(../../../images/add_zone.gif) !important;
1422 }
1423
1424 .editZoneAction {
1425- background-image: url(/images/edit.gif) !important;
1426+ background-image: url(../../../images/edit.gif) !important;
1427 }
1428
1429 .sortZoneAction {
1430- background-image: url(/images/sort.gif) !important;
1431+ background-image: url(../../../images/sort.gif) !important;
1432 }
1433
1434 .editDeviceToolbarIcon {
1435- background-image: url(/images/edit.gif) !important;
1436+ background-image: url(../../../images/edit.gif) !important;
1437 }
1438
1439 .pingDeviceToolbarIcon {
1440- background-image: url(/images/application_osx_terminal.png) !important;
1441+ background-image: url(../../../images/application_osx_terminal.png) !important;
1442 }
1443
1444 .removeDeviceToolbarIcon {
1445- background-image: url(/images/delete.png) !important;
1446+ background-image: url(../../../images/delete.png) !important;
1447 }
1448
1449 .copyToClipboardToolbarIcon {
1450- background-image: url(/images/copy.gif) !important;
1451+ background-image: url(../../../images/copy.gif) !important;
1452 }
1453
1454 .nonPresentDevice table {
1455@@ -7179,118 +7179,118 @@
1456
1457 .isOn
1458 {
1459- background:url(/images/on.png) center no-repeat !important;
1460+ background:url(../../../images/on.png) center no-repeat !important;
1461 cursor: pointer;
1462 }
1463
1464 .isOff
1465 {
1466- background:url(/images/off.png) center no-repeat !important;
1467+ background:url(../../../images/off.png) center no-repeat !important;
1468 cursor: pointer;
1469 }
1470
1471 .isLocked
1472 {
1473- background:url(/images/lock.png) center no-repeat !important;
1474+ background:url(../../../images/lock.png) center no-repeat !important;
1475 cursor: pointer;
1476 }
1477
1478 .isUnlocked
1479 {
1480- background:url(/images/lock_open.png) center no-repeat !important;
1481+ background:url(../../../images/lock_open.png) center no-repeat !important;
1482 cursor: pointer;
1483 }
1484
1485 .lockDisabled
1486 {
1487- background:url(/images/lock_grey.png) center no-repeat !important;
1488+ background:url(../../../images/lock_grey.png) center no-repeat !important;
1489 }
1490
1491 .isDisabled
1492 {
1493- background:url(/images/noff.png) center no-repeat !important;
1494+ background:url(../../../images/noff.png) center no-repeat !important;
1495 }
1496
1497 .blink
1498 {
1499- background:url(/images/blink.png) center no-repeat !important;
1500+ background:url(../../../images/blink.png) center no-repeat !important;
1501 cursor: pointer;
1502 }
1503
1504 .blinkActive
1505 {
1506- background:url(/images/blink_active.png) center no-repeat !important;
1507+ background:url(../../../images/blink_active.png) center no-repeat !important;
1508 }
1509
1510 .functionLight
1511 {
1512- background:url(/images/brick_yellow.png) center no-repeat !important;
1513+ background:url(../../../images/brick_yellow.png) center no-repeat !important;
1514 cursor: pointer;
1515 }
1516
1517 .functionLightDisabled
1518 {
1519- background:url(/images/brick_yellow.png) center no-repeat !important;
1520+ background:url(../../../images/brick_yellow.png) center no-repeat !important;
1521 }
1522
1523 .functionLightIcon
1524 {
1525- background-image:url(/images/brick_yellow.png) !important;
1526+ background-image:url(../../../images/brick_yellow.png) !important;
1527 }
1528
1529 .functionShadow
1530 {
1531- background:url(/images/brick_grey.png) center no-repeat !important;
1532+ background:url(../../../images/brick_grey.png) center no-repeat !important;
1533 cursor: pointer;
1534 }
1535
1536 .functionShadowDisabled
1537 {
1538- background:url(/images/brick_grey.png) center no-repeat !important;
1539+ background:url(../../../images/brick_grey.png) center no-repeat !important;
1540 }
1541
1542 .functionShadowIcon
1543 {
1544- background-image:url(/images/brick_grey.png) !important;
1545+ background-image:url(../../../images/brick_grey.png) !important;
1546 }
1547
1548 .functionClimate
1549 {
1550- background:url(/images/brick_blue.png) center no-repeat !important;
1551+ background:url(../../../images/brick_blue.png) center no-repeat !important;
1552 }
1553
1554 .functionAudio
1555 {
1556- background:url(/images/brick_cyan.png) center no-repeat !important;
1557+ background:url(../../../images/brick_cyan.png) center no-repeat !important;
1558 }
1559
1560 .functionVideo
1561 {
1562- background:url(/images/brick_magenta.png) center no-repeat !important;
1563+ background:url(../../../images/brick_magenta.png) center no-repeat !important;
1564 }
1565
1566 .functionSecurity
1567 {
1568- background:url(/images/brick_red.png) center no-repeat !important;
1569+ background:url(../../../images/brick_red.png) center no-repeat !important;
1570 }
1571
1572 .functionAccess
1573 {
1574- background:url(/images/brick_green.png) center no-repeat !important;
1575+ background:url(../../../images/brick_green.png) center no-repeat !important;
1576 }
1577
1578 .functionJoker
1579 {
1580- background:url(/images/brick_darkgrey.png) center no-repeat !important;
1581+ background:url(../../../images/brick_darkgrey.png) center no-repeat !important;
1582 }
1583
1584 .lightbulbOn
1585 {
1586- background:url(/images/lightbulb.png) center no-repeat !important;
1587+ background:url(../../../images/lightbulb.png) center no-repeat !important;
1588 }
1589
1590 .lightbulbOff
1591 {
1592- background:url(/images/lightbulb_off.png) center no-repeat !important;
1593+ background:url(../../../images/lightbulb_off.png) center no-repeat !important;
1594 }
1595