gatein SVN: r7414 - in epp/portal/branches/EPP_5_2_Branch: component/application-registry/src/main/java/org/exoplatform/application/gadget/impl and 8 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 06:06:56 -0400 (Wed, 14 Sep 2011)
New Revision: 7414
Added:
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/Calculator.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/Calendar.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/Todo.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/rssAggregator.png
Removed:
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/Calculator.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/Calendar.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/Todo.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/rssAggregator.png
Modified:
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetImporter.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/RemoteImporter.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/Calculator.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/Calendar.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/Todo.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/rssAggregator.xml
Log:
JBEPP-1171 Could not display local gadget thumbnail properly
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -132,7 +132,8 @@
importer = new ServletLocalImporter(
gadgetName,
path,
- scontext);
+ scontext,
+ gadgetRegistryService);
}
else
{
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetImporter.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetImporter.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetImporter.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -65,7 +65,7 @@
protected abstract byte[] getGadgetBytes(String gadgetURI) throws IOException;
- protected abstract String getGadgetURL(String gadgetURI) throws Exception;
+ protected abstract String getGadgetURL() throws Exception;
protected abstract void process(String gadgetURI, GadgetDefinition def) throws Exception;
@@ -92,6 +92,9 @@
log.error("Cannot import gadget " + gadgetURI + " because its data could not be found");
return;
}
+
+ //
+ process(gadgetURI, def);
// Get encoding
String encoding = EncodingDetector.detect(new ByteArrayInputStream(bytes));
@@ -100,7 +103,7 @@
String gadget = new String(bytes, encoding);
//
- String gadgetURL = getGadgetURL(gadgetURI);
+ String gadgetURL = getGadgetURL();
GadgetSpec spec = new GadgetSpec(Uri.parse(gadgetURL), gadget);
ModulePrefs prefs = spec.getModulePrefs();
@@ -117,12 +120,9 @@
//
def.setDescription(description);
- def.setThumbnail(thumbnail); // Do something better than that
+ def.setThumbnail(thumbnail);
def.setTitle(title);
def.setReferenceURL(referenceURL);
-
- //
- process(gadgetURI, def);
}
@Override
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -19,6 +19,8 @@
package org.exoplatform.application.gadget;
+import org.exoplatform.application.gadget.impl.GadgetDefinition;
+
import java.util.Comparator;
import java.util.List;
@@ -100,4 +102,17 @@
public String getModuleId();
public String getHostName();
+
+ /**
+ * Get the URL of gadget from gadget definition. There are 2 kind of gadget:
+ * <p>
+ * <ul>
+ * <li>Local gadget: Gadget definition and resource are stored in JCR workspace. This gadget content can be also accessed by WebDAV
+ * <li>Remote gadget: An absolute link to gadget definition
+ * </ul>
+ *
+ * @param gadgetName
+ * @return link to local gadget definition stored in JCR or URL to remote gadget
+ */
+ public String getGadgetURL(String gadgetName);
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/RemoteImporter.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/RemoteImporter.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/RemoteImporter.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -46,9 +46,9 @@
}
@Override
- protected String getGadgetURL(String gadgetURI) throws Exception
+ protected String getGadgetURL() throws Exception
{
- return "http://www.gatein.org";
+ return getGadgetURI();
}
@Override
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -47,16 +47,20 @@
/** Used temporarily when importing resources. */
private NTFolder folder;
+
+ private GadgetRegistryService gadgetService;
public ServletLocalImporter(
String name,
String gadgetPath,
- ServletContext servletContext)
+ ServletContext servletContext,
+ GadgetRegistryService gadgetRegistryService)
{
super(name, gadgetPath);
//
this.servletContext = servletContext;
+ this.gadgetService = gadgetRegistryService;
}
@Override
@@ -66,13 +70,13 @@
}
@Override
- protected String getGadgetURL(String gadgetURI) throws Exception
+ protected String getGadgetURL() throws Exception
{
- return gadgetURI;
+ return gadgetService.getGadgetURL(getGadgetName());
}
@Override
- protected void process(String gadgetURI, GadgetDefinition def) throws Exception
+ protected void process(String gadgetPath, GadgetDefinition def) throws Exception
{
def.setLocal(true);
@@ -80,13 +84,13 @@
LocalGadgetData data = (LocalGadgetData)def.getData();
//
- String fileName = getName(gadgetURI);
+ String fileName = getName(gadgetPath);
data.setFileName(fileName);
// Import resource
folder = data.getResources();
- String folderPath = getParent(gadgetURI);
- visitChildren(gadgetURI, folderPath);
+ String folderPath = getParent(gadgetPath);
+ visitChildren(gadgetPath, folderPath);
folder = null;
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -28,6 +28,7 @@
import org.exoplatform.commons.chromattic.ChromatticLifeCycle;
import org.exoplatform.commons.chromattic.ChromatticManager;
import org.exoplatform.commons.utils.PropertyManager;
+import org.exoplatform.container.PortalContainer;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.container.xml.ValueParam;
@@ -235,6 +236,34 @@
//
registry.removeGadget(name);
}
+
+ public String getGadgetURL(String gadgetName)
+ {
+ String url;
+ GadgetData data = this.getRegistry().getGadget(gadgetName).getData();
+ if (data instanceof LocalGadgetData)
+ {
+ LocalGadgetData localData = (LocalGadgetData) data;
+ url = "/" + PortalContainer.getCurrentRestContextName() + "/" + getJCRGadgetURL(localData);
+ }
+ else if (data instanceof RemoteGadgetData)
+ {
+ RemoteGadgetData remoteData = (RemoteGadgetData)data;
+ url = remoteData.getURL();
+ }
+ else
+ {
+ throw new IllegalStateException("Gadget has to be instance of LocalGadgetData or RemoteGadgetData");
+ }
+
+ return url;
+ }
+
+ private String getJCRGadgetURL(LocalGadgetData data)
+ {
+ return "jcr/" + chromatticLifeCycle.getRepositoryName() + "/" + chromatticLifeCycle.getWorkspaceName()
+ + data.getPath() + "/app:resources/" + data.getFileName();
+ }
private void saveGadget(GadgetDefinition def, Gadget gadget)
{
@@ -253,10 +282,7 @@
if (data instanceof LocalGadgetData)
{
LocalGadgetData localData = (LocalGadgetData)data;
- url =
- "jcr/" + chromatticLifeCycle.getRepositoryName() + "/" +
- chromatticLifeCycle.getWorkspaceName() + "/production/app:gadgets/app:" + def.getName() +
- "/app:data/app:resources/" + localData.getFileName();
+ url = getJCRGadgetURL(localData);
}
else
{
@@ -308,7 +334,7 @@
/** . */
private final GadgetImporter importer;
-
+
private DeployTask(GadgetImporter importer)
{
this.importer = importer;
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java 2011-09-14 10:06:56 UTC (rev 7414)
@@ -61,6 +61,9 @@
protected abstract void setResources(NTFolder resources);
+ @Path
+ public abstract String getPath();
+
private NTFile getGadgetContent() {
String fileName = getFileName();
NTFolder resources = getResources();
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/Calculator.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/Calculator.xml 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/Calculator.xml 2011-09-14 10:06:56 UTC (rev 7414)
@@ -34,7 +34,7 @@
directory_title="Calculator"
title_url="http://www.exoplatform.org"
description="This simple and useful calculator lets you perform most of the basic arithmetic operations."
- thumbnail="http://localhost:8080/eXoGadgets/skin/DefaultSkin/portletIcons/Calculator..."
+ thumbnail="images/Calculator.gif"
height="227">
<Locale lang="ar" language_direction="rtl"/>
</ModulePrefs>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/Calculator.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/Calculator.gif (from rev 7151, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/Calculator/images/Calculator.gif)
===================================================================
(Binary files differ)
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/Calendar.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/Calendar.xml 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/Calendar.xml 2011-09-14 10:06:56 UTC (rev 7414)
@@ -34,7 +34,7 @@
directory_title="Calendar"
title_url="http://www.exoplatform.org"
description="What date is it? Use this cool calendar to keep track of the date in style. You can switch easily between daily, monthly or yearly view."
- thumbnail="http://localhost:8080/eXoGadgets/skin/DefaultSkin/portletIcons/Calendar.png"
+ thumbnail="images/Calendar.gif"
height="205">
<Locale lang="ar" language_direction="rtl"/>
</ModulePrefs>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/Calendar.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/Calendar.gif (from rev 7151, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/Calendar/images/Calendar.gif)
===================================================================
(Binary files differ)
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/Todo.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/Todo.xml 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/Todo.xml 2011-09-14 10:06:56 UTC (rev 7414)
@@ -34,7 +34,7 @@
directory_title="Todo"
title_url="http://www.exoplatform.org"
description="ToDo Gadget, easily manage and track your daily to-do list."
- thumbnail="http://localhost:8080/eXoGadgets/skin/DefaultSkin/portletIcons/Todo.png"
+ thumbnail="images/Todo.gif"
height="235">
<Locale messages="http://localhost:8080/eXoGadgets/locale/Todo/ALL_ALL.xml" />
<Locale lang="ar" messages="http://localhost:8080/eXoGadgets/locale/Todo/ar_ALL.xml" language_direction="rtl"/>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/Todo.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/Todo.gif (from rev 7151, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/Todo/images/Todo.gif)
===================================================================
(Binary files differ)
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/rssAggregator.png
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/rssAggregator.png (from rev 7151, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/images/rssAggregator.png)
===================================================================
(Binary files differ)
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/rssAggregator.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/rssAggregator.xml 2011-09-14 10:00:18 UTC (rev 7413)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/rssAggregator/rssAggregator.xml 2011-09-14 10:06:56 UTC (rev 7414)
@@ -23,7 +23,7 @@
<Module>
<ModulePrefs title="RSS Reader" title_url="http://www.exoplatform.com" directory_title="RSS Reader"
description="RSS Reader"
- thumbnail="/eXoGadgets/skin/DefaultSkin/portletIcons/rssAggregator.png">
+ thumbnail="images/rssAggregator.png">
<Require feature="dynamic-height" />
<Require feature="setprefs"/>
<Require feature="settitle"/>
13 years, 4 months
gatein SVN: r7413 - in epp/portal/branches/EPP_5_2_Branch: component and 5 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 06:00:18 -0400 (Wed, 14 Sep 2011)
New Revision: 7413
Removed:
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/LocalImporter.java
Modified:
epp/portal/branches/EPP_5_2_Branch/
epp/portal/branches/EPP_5_2_Branch/component/
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/
epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/java/org/exoplatform/gadget/webui/component/UIGadgetPortlet.java
epp/portal/branches/EPP_5_2_Branch/wsrp-integration/
Log:
JBEPP-1172: Decouple gadget import process and gadget import metadata extraction
Property changes on: epp/portal/branches/EPP_5_2_Branch
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4891,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795:5868
/portal/branches/branch-GTNPORTAL-1592:4894
/portal/branches/branch-GTNPORTAL-1643:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745:5765
/portal/branches/branch-GTNPORTAL-1790:5871
/portal/branches/branch-GTNPORTAL-1822:5943,5952
/portal/branches/branch-GTNPORTAL-1832:6030,6063
/portal/branches/branch-GTNPORTAL-1872:6400,6551
/portal/branches/branch-GTNPORTAL-1921:6603
/portal/branches/branch-GTNPORTAL-1963:6904,6915-6916
/portal/branches/decoupled-webos:6214-6243
/portal/branches/gatein-management:6920-6958
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/trunk:4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
Property changes on: epp/portal/branches/EPP_5_2_Branch/component
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4891,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component:5868
/portal/branches/branch-GTNPORTAL-1592/component:4894
/portal/branches/branch-GTNPORTAL-1643/component:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component:5765
/portal/branches/branch-GTNPORTAL-1790/component:5871
/portal/branches/branch-GTNPORTAL-1822/component:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component:6603
/portal/branches/branch-GTNPORTAL-1963/component:6904,6915-6916
/portal/trunk/component:4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetDeployer.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -19,8 +19,6 @@
package org.exoplatform.application.gadget;
import org.exoplatform.application.gadget.impl.GadgetRegistryServiceImpl;
-import org.exoplatform.commons.chromattic.ChromatticLifeCycle;
-import org.exoplatform.commons.chromattic.SessionContext;
import org.exoplatform.commons.xml.DocumentSource;
import org.exoplatform.commons.xml.XMLValidator;
import org.exoplatform.container.ExoContainerContext;
@@ -40,11 +38,10 @@
import org.w3c.dom.NodeList;
import javax.servlet.ServletContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
@@ -115,28 +112,27 @@
private void handle(ServletContext scontext, URL gadgetsURL)
{
- ChromatticLifeCycle lifeCycle = gadgetRegistryService.getChromatticLifeCycle();
- lifeCycle.openContext();
try
{
+ List<GadgetImporter> importers = new ArrayList<GadgetImporter>();
Document docXML = validator.validate(DocumentSource.create(gadgetsURL));
NodeList nodeList = docXML.getElementsByTagName("gadget");
for (int i = 0; i < nodeList.getLength(); i++)
{
Element gadgetElement = (Element)nodeList.item(i);
String gadgetName = gadgetElement.getAttribute("name");
- log.debug("About to import gadget " + gadgetName);
+
+ //
+ log.debug("About to parse gadget " + gadgetName);
Element pathElt = XMLTools.getUniqueChild(gadgetElement, "path", false);
+ GadgetImporter importer = null;
if (pathElt != null)
{
String path = XMLTools.asString(pathElt, true);
- ServletLocalImporter importer = new ServletLocalImporter(
+ importer = new ServletLocalImporter(
gadgetName,
- gadgetRegistryService.getRegistry(),
path,
- scontext,
- true);
- importer.doImport();
+ scontext);
}
else
{
@@ -144,24 +140,26 @@
if (urlElt != null)
{
String url = XMLTools.asString(urlElt, true);
- ServletLocalImporter importer = new ServletLocalImporter(
+ importer = new RemoteImporter(
gadgetName,
- gadgetRegistryService.getRegistry(),
- url,
- scontext,
- false);
- importer.doImport();
+ url);
}
}
+
+ //
+ if (importer != null)
+ {
+ importers.add(importer);
+ log.debug("Add gadget " + gadgetName + " to gadget imports");
+ }
}
+
+ // Import everything
+ gadgetRegistryService.deploy(importers);
}
catch (Exception e)
{
log.error("Could not process gadget file " + gadgetsURL, e);
}
- finally
- {
- lifeCycle.closeContext(true);
- }
}
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/GadgetRegistryService.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -33,6 +33,13 @@
{
/**
+ * Deploy a set of gadgets.
+ *
+ * @param gadgets the gadgets to deploy
+ */
+ public void deploy(Iterable<GadgetImporter> gadgets);
+
+ /**
* Return Gadget object retrieved from database by its name.
*
* @param name the name of gadget
Deleted: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/LocalImporter.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/LocalImporter.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/LocalImporter.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.application.gadget;
-
-import org.apache.shindig.common.uri.Uri;
-import org.apache.shindig.gadgets.spec.GadgetSpec;
-import org.apache.shindig.gadgets.spec.ModulePrefs;
-import org.chromattic.ext.ntdef.NTFolder;
-import org.chromattic.ext.ntdef.Resource;
-import org.exoplatform.application.gadget.impl.GadgetDefinition;
-import org.exoplatform.application.gadget.impl.GadgetRegistry;
-import org.exoplatform.application.gadget.impl.LocalGadgetData;
-import org.exoplatform.application.gadget.impl.RemoteGadgetData;
-import org.gatein.common.logging.Logger;
-import org.gatein.common.logging.LoggerFactory;
-import org.gatein.common.net.URLTools;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public abstract class LocalImporter
-{
-
- /** . */
- private static final Logger log = LoggerFactory.getLogger(LocalImporter.class);
-
- /** The gadget name as seen by GateIn. */
- private String name;
-
- /** The gadget registry. */
- private GadgetRegistry registry;
-
- /** The gadget path. */
- private String gadgetPath;
-
- /** . */
- private boolean local;
-
- /** Used temporarily when importing resources. */
- private NTFolder folder;
-
- protected LocalImporter(
- String name,
- GadgetRegistry registry,
- String gadgetPath,
- boolean local)
- {
- this.name = name;
- this.registry = registry;
- this.gadgetPath = gadgetPath;
- this.local = local;
- }
-
- private byte[] getGadgetBytes() throws IOException
- {
- if (local)
- {
- return getContent(gadgetPath);
- }
- else
- {
- URL url = new URL(gadgetPath);
- return URLTools.getContent(url, 5000, 5000);
- }
- }
-
- private String getGadgetURL() throws Exception
- {
- if (local)
- {
- return "http://www.gatein.org";
- }
- else
- {
- return gadgetPath;
- }
- }
-
- private String getGadgetTitle(ModulePrefs prefs, String defaultValue)
- {
- String title = prefs.getDirectoryTitle();
- if (title == null || title.trim().length() < 1)
- {
- title = prefs.getTitle();
- }
- if (title == null || title.trim().length() < 1)
- {
- return defaultValue;
- }
- return title;
- }
-
- public void doImport() throws Exception
- {
- if (registry.getGadget(name) != null)
- {
- log.debug("Will not import existing gagdet " + name);
- return;
- }
-
- // Get bytes
- byte[] bytes = getGadgetBytes();
- if (bytes == null)
- {
- log.error("Cannot import gadget " + gadgetPath + " because its data could not be found");
- return;
- }
-
- // Get encoding
- String encoding = EncodingDetector.detect(new ByteArrayInputStream(bytes));
-
- //
- String gadget = new String(bytes, encoding);
-
- //
- String gadgetURL = getGadgetURL();
- GadgetSpec spec = new GadgetSpec(Uri.parse(gadgetURL), gadget);
- ModulePrefs prefs = spec.getModulePrefs();
-
- //
- GadgetDefinition def = registry.addGadget(name);
-
- //
- String description = prefs.getDescription();
- String thumbnail = prefs.getThumbnail().toString();
- String title = getGadgetTitle(prefs, name);
- String referenceURL = prefs.getTitleUrl().toString();
-
- //
- log.info("Importing gadget name=" + name + " description=" + description + " thumbnail=" + thumbnail + " title=" +
- thumbnail + " title=" + title);
-
- //
- def.setDescription(description);
- def.setThumbnail(thumbnail); // Do something better than that
- def.setTitle(title);
- def.setReferenceURL(referenceURL);
- def.setLocal(local);
-
- //
- if (local)
- {
- LocalGadgetData data = (LocalGadgetData)def.getData();
-
- //
- String fileName = getName(gadgetPath);
- data.setFileName(fileName);
-
- // Import resource
- folder = data.getResources();
- String folderPath = getParent(gadgetPath);
- visitChildren(folderPath);
- folder = null;
- }
- else
- {
- RemoteGadgetData data = (RemoteGadgetData)def.getData();
-
- // Set remote URL
- data.setURL(gadgetPath);
- }
- }
-
- private void visit(String resourcePath) throws Exception
- {
- String name = getName(resourcePath);
- if (isFile(resourcePath))
- {
- byte[] content = getContent(resourcePath);
-
- //
- if (content != null)
- {
- String mimeType = getMimeType(name);
-
- //
- if (mimeType == null)
- {
- mimeType = "application/octet-stream";
- }
-
- // We can detect encoding for XML files
- String encoding = null;
- if ("application/xml".equals(mimeType))
- {
- encoding = EncodingDetector.detect(new ByteArrayInputStream(content));
- }
-
- // Correct mime type for gadgets
- if (resourcePath.equals(gadgetPath)) {
- mimeType = LocalGadgetData.GADGET_MIME_TYPE;
- }
-
- //
- folder.createFile(name, new Resource(mimeType, encoding, content));
- }
- }
- else
- {
- folder = folder.createFolder(name);
- visitChildren(resourcePath);
- folder = folder.getParent();
- }
- }
-
- private void visitChildren(String folderPath) throws Exception
- {
- for (String childPath : getChildren(folderPath))
- {
- visit(childPath);
- }
- }
-
- public abstract String getName(String resourcePath) throws IOException;
-
- public abstract String getParent(String resourcePath) throws IOException;
-
- public abstract byte[] getContent(String filePath) throws IOException;
-
- public abstract Iterable<String> getChildren(String folderPath) throws IOException;
-
- public abstract boolean isFile(String resourcePath) throws IOException;
-
- public abstract String getMimeType(String fileName);
-}
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/ServletLocalImporter.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -18,12 +18,16 @@
*/
package org.exoplatform.application.gadget;
-import org.exoplatform.application.gadget.impl.GadgetRegistry;
+import org.chromattic.ext.ntdef.NTFolder;
+import org.chromattic.ext.ntdef.Resource;
+import org.exoplatform.application.gadget.impl.GadgetDefinition;
+import org.exoplatform.application.gadget.impl.LocalGadgetData;
import org.gatein.common.io.IOTools;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
import javax.servlet.ServletContext;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Set;
@@ -32,7 +36,7 @@
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
-public class ServletLocalImporter extends LocalImporter
+public class ServletLocalImporter extends GadgetImporter
{
/** . */
@@ -41,22 +45,103 @@
/** . */
private final ServletContext servletContext;
+ /** Used temporarily when importing resources. */
+ private NTFolder folder;
+
public ServletLocalImporter(
String name,
- GadgetRegistry registry,
String gadgetPath,
- ServletContext servletContext,
- boolean local)
+ ServletContext servletContext)
{
- super(name, registry, gadgetPath, local);
+ super(name, gadgetPath);
//
this.servletContext = servletContext;
}
@Override
- public String getName(String resourcePath) throws IOException
+ protected byte[] getGadgetBytes(String gadgetURI) throws IOException
{
+ return getContent(gadgetURI);
+ }
+
+ @Override
+ protected String getGadgetURL(String gadgetURI) throws Exception
+ {
+ return gadgetURI;
+ }
+
+ @Override
+ protected void process(String gadgetURI, GadgetDefinition def) throws Exception
+ {
+ def.setLocal(true);
+
+ //
+ LocalGadgetData data = (LocalGadgetData)def.getData();
+
+ //
+ String fileName = getName(gadgetURI);
+ data.setFileName(fileName);
+
+ // Import resource
+ folder = data.getResources();
+ String folderPath = getParent(gadgetURI);
+ visitChildren(gadgetURI, folderPath);
+ folder = null;
+ }
+
+ private void visit(String uri, String resourcePath) throws Exception
+ {
+ String name = getName(resourcePath);
+ if (isFile(resourcePath))
+ {
+ byte[] content = getContent(resourcePath);
+
+ //
+ if (content != null)
+ {
+ String mimeType = getMimeType(name);
+
+ //
+ if (mimeType == null)
+ {
+ mimeType = "application/octet-stream";
+ }
+
+ // We can detect encoding for XML files
+ String encoding = null;
+ if ("application/xml".equals(mimeType))
+ {
+ encoding = EncodingDetector.detect(new ByteArrayInputStream(content));
+ }
+
+ // Correct mime type for gadgets
+ if (resourcePath.equals(uri)) {
+ mimeType = LocalGadgetData.GADGET_MIME_TYPE;
+ }
+
+ //
+ folder.createFile(name, new Resource(mimeType, encoding, content));
+ }
+ }
+ else
+ {
+ folder = folder.createFolder(name);
+ visitChildren(uri, resourcePath);
+ folder = folder.getParent();
+ }
+ }
+
+ private void visitChildren(String gadgetURI, String folderPath) throws Exception
+ {
+ for (String childPath : getChildren(folderPath))
+ {
+ visit(gadgetURI, childPath);
+ }
+ }
+
+ private String getName(String resourcePath) throws IOException
+ {
// It's a directory, remove the trailing '/'
if (resourcePath.endsWith("/"))
{
@@ -70,8 +155,7 @@
return resourcePath.substring(index + 1);
}
- @Override
- public String getParent(String resourcePath) throws IOException
+ private String getParent(String resourcePath) throws IOException
{
// It's a directory, remove the trailing '/'
if (resourcePath.endsWith("/"))
@@ -86,8 +170,7 @@
return resourcePath.substring(0, index + 1);
}
- @Override
- public byte[] getContent(String filePath) throws IOException
+ private byte[] getContent(String filePath) throws IOException
{
InputStream in = servletContext.getResourceAsStream(filePath);
if (in == null)
@@ -101,21 +184,18 @@
}
}
- @Override
- public Iterable<String> getChildren(String folderPath) throws IOException
+ private Iterable<String> getChildren(String folderPath) throws IOException
{
- @SuppressWarnings("unchecked") Set resourcePaths = servletContext.getResourcePaths(folderPath);
+ @SuppressWarnings("unchecked") Set<String> resourcePaths = servletContext.getResourcePaths(folderPath);
return resourcePaths;
}
- @Override
- public boolean isFile(String resourcePath) throws IOException
+ private boolean isFile(String resourcePath) throws IOException
{
return !resourcePath.endsWith("/");
}
- @Override
- public String getMimeType(String fileName)
+ private String getMimeType(String fileName)
{
return servletContext.getMimeType(fileName);
}
Modified: epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/GadgetRegistryServiceImpl.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -23,6 +23,7 @@
import org.chromattic.ext.ntdef.Resource;
import org.exoplatform.application.gadget.Gadget;
import org.exoplatform.application.gadget.GadgetRegistryService;
+import org.exoplatform.application.gadget.GadgetImporter;
import org.exoplatform.application.registry.impl.ApplicationRegistryChromatticLifeCycle;
import org.exoplatform.commons.chromattic.ChromatticLifeCycle;
import org.exoplatform.commons.chromattic.ChromatticManager;
@@ -30,11 +31,14 @@
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
import org.exoplatform.container.xml.ValueParam;
+import org.gatein.common.logging.Logger;
+import org.gatein.common.logging.LoggerFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+import java.util.concurrent.Callable;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
@@ -44,6 +48,9 @@
{
/** . */
+ private final Logger log = LoggerFactory.getLogger(GadgetRegistryServiceImpl.class);
+
+ /** . */
private static final String DEFAULT_DEVELOPER_GROUP = "/platform/administrators";
/** . */
@@ -120,13 +127,23 @@
return registry;
}
- public ChromatticLifeCycle getChromatticLifeCycle()
+ // ***************
+
+ public void deploy(Iterable<GadgetImporter> gadgets)
{
- return chromatticLifeCycle;
+ for (GadgetImporter importer : gadgets)
+ {
+ try
+ {
+ new DeployTask(importer).call();
+ }
+ catch (Exception e)
+ {
+ log.error("Could not process gadget file " + importer, e);
+ }
+ }
}
- // ***************
-
public Gadget getGadget(String name) throws Exception
{
GadgetRegistry registry = getRegistry();
@@ -285,4 +302,40 @@
{
return hostName;
}
+
+ private class DeployTask implements Callable<Boolean>
+ {
+
+ /** . */
+ private final GadgetImporter importer;
+
+ private DeployTask(GadgetImporter importer)
+ {
+ this.importer = importer;
+ }
+
+ public Boolean call() throws Exception
+ {
+ chromatticLifeCycle.openContext();
+ try
+ {
+ boolean done = false;
+ if (getRegistry().getGadget(importer.getGadgetName()) == null)
+ {
+ GadgetDefinition def = getRegistry().addGadget(importer.getGadgetName());
+ importer.doImport(def);
+ done = true;
+ }
+ else
+ {
+ log.debug("Will not import existing gagdet " + importer.getGadgetName());
+ }
+ return done;
+ }
+ finally
+ {
+ chromatticLifeCycle.closeContext(true);
+ }
+ }
+ }
}
Property changes on: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4891,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/component/portal/src/main/java/org:5868
/portal/branches/branch-GTNPORTAL-1592/component/portal/src/main/java/org:4894
/portal/branches/branch-GTNPORTAL-1643/component/portal/src/main/java/org:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/component/portal/src/main/java/org:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/component/portal/src/main/java/org:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/component/portal/src/main/java/org:5765
/portal/branches/branch-GTNPORTAL-1790/component/portal/src/main/java/org:5871
/portal/branches/branch-GTNPORTAL-1822/component/portal/src/main/java/org:5943,5952
/portal/branches/branch-GTNPORTAL-1832/component/portal/src/main/java/org:6030,6063
/portal/branches/branch-GTNPORTAL-1872/component/portal/src/main/java/org:6400,6551
/portal/branches/branch-GTNPORTAL-1921/component/portal/src/main/java/org:6603
/portal/branches/branch-GTNPORTAL-1963/component/portal/src/main/java/org:6904,6915-6916
/portal/trunk/component/portal/src/main/java/org:4891,5269,5744,5822,5943,6031,6033,6168,6196,6201-6203,6205-6206,6223,6292,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7120,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/java/org/exoplatform/gadget/webui/component/UIGadgetPortlet.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/java/org/exoplatform/gadget/webui/component/UIGadgetPortlet.java 2011-09-14 09:45:02 UTC (rev 7412)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/dashboard/src/main/java/org/exoplatform/gadget/webui/component/UIGadgetPortlet.java 2011-09-14 10:00:18 UTC (rev 7413)
@@ -20,8 +20,8 @@
package org.exoplatform.gadget.webui.component;
import org.exoplatform.application.gadget.Gadget;
+import org.exoplatform.application.gadget.GadgetImporter;
import org.exoplatform.application.gadget.GadgetRegistryService;
-import org.exoplatform.application.gadget.LocalImporter;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.portal.webui.application.GadgetUtil;
@@ -54,7 +54,7 @@
{
final static public String LOCAL_STRING = "local://";
- private static final Logger log = LoggerFactory.getLogger(LocalImporter.class);
+ private static final Logger log = LoggerFactory.getLogger(GadgetImporter.class);
/** User pref. */
private String userPref;
Property changes on: epp/portal/branches/EPP_5_2_Branch/wsrp-integration
___________________________________________________________________
Modified: svn:mergeinfo
- /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4891,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
+ /epp/portal/branches/EPP_5_1_0_GA_JBEPP-795/wsrp-integration:5868
/portal/branches/branch-GTNPORTAL-1592/wsrp-integration:4894
/portal/branches/branch-GTNPORTAL-1643/wsrp-integration:5002,5063,5167
/portal/branches/branch-GTNPORTAL-1700/wsrp-integration:5348,5363,5402,5445
/portal/branches/branch-GTNPORTAL-1731/wsrp-integration:5622,5644,5668
/portal/branches/branch-GTNPORTAL-1745/wsrp-integration:5765
/portal/branches/branch-GTNPORTAL-1790/wsrp-integration:5871
/portal/branches/branch-GTNPORTAL-1822/wsrp-integration:5943,5952
/portal/branches/branch-GTNPORTAL-1832/wsrp-integration:6030,6063
/portal/branches/branch-GTNPORTAL-1872/wsrp-integration:6400,6551
/portal/branches/branch-GTNPORTAL-1921/wsrp-integration:6603
/portal/branches/branch-GTNPORTAL-1963/wsrp-integration:6904,6915-6916
/portal/branches/decoupled-webos/wsrp-integration:6214-6243
/portal/branches/gatein-management/wsrp-integration:6920-6958
/portal/branches/global-portlet-metadata/wsrp-integration:6298-6384
/portal/branches/site-describability/wsrp-integration:6171-6235
/portal/trunk/wsrp-integration:4891,5269,5744,5822,5943,6168,6196,6201-6203,6205-6206,6223,6323,6437,6440,6449,6452,6573,6741,6783-6784,6912-6913,6960,7042,7061,7095,7117,7125,7132-7134,7239,7262,7308,7326,7331,7359,7367
13 years, 4 months
gatein SVN: r7412 - in portal/trunk: packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein and 5 other directories.
by do-not-reply@jboss.org
Author: hoang_to
Date: 2011-09-14 05:45:02 -0400 (Wed, 14 Sep 2011)
New Revision: 7412
Modified:
portal/trunk/examples/portal/war/src/main/webapp/WEB-INF/web.xml
portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml
portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml
portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/controller.xml
portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/controller.xml
portal/trunk/web/portal/src/main/webapp/WEB-INF/web.xml
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
Log:
GTNPORTAL-2098: Change route prefix from groups--> g and users--> u
Modified: portal/trunk/examples/portal/war/src/main/webapp/WEB-INF/web.xml
===================================================================
--- portal/trunk/examples/portal/war/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/examples/portal/war/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -270,8 +270,8 @@
<web-resource-name>user authentication</web-resource-name>
<url-pattern>/dologin</url-pattern>
<url-pattern>/private/*</url-pattern>
- <url-pattern>/groups/*</url-pattern>
- <url-pattern>/users/*</url-pattern>
+ <url-pattern>/g/*</url-pattern>
+ <url-pattern>/u/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
Modified: portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml
===================================================================
--- portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/packaging/jboss-as5/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -89,7 +89,7 @@
<request-param qname="gtn:objectid" name="objectId"/>
<!-- The group access -->
- <route path="/groups/{gtn:sitename}/{gtn:path}">
+ <route path="/g/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
@@ -102,7 +102,7 @@
</route>
<!-- The user access -->
- <route path="/users/{gtn:sitename}/{gtn:path}">
+ <route path="/u/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
Modified: portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml
===================================================================
--- portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/packaging/jboss-as6/pkg/src/main/resources/jboss/server/default/conf/gatein/controller.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -89,7 +89,7 @@
<request-param qname="gtn:objectid" name="objectId"/>
<!-- The group access -->
- <route path="/groups/{gtn:sitename}/{gtn:path}">
+ <route path="/g/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
@@ -102,7 +102,7 @@
</route>
<!-- The user access -->
- <route path="/users/{gtn:sitename}/{gtn:path}">
+ <route path="/u/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
Modified: portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/controller.xml
===================================================================
--- portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/controller.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/packaging/jetty/pkg/src/main/resources/jetty/gatein/conf/controller.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -89,7 +89,7 @@
<request-param qname="gtn:objectid" name="objectId"/>
<!-- The group access -->
- <route path="/groups/{gtn:sitename}/{gtn:path}">
+ <route path="/g/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
@@ -102,7 +102,7 @@
</route>
<!-- The user access -->
- <route path="/users/{gtn:sitename}/{gtn:path}">
+ <route path="/u/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
Modified: portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/controller.xml
===================================================================
--- portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/controller.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/packaging/tomcat/pkg/src/main/resources/tomcat/gatein/conf/controller.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -89,7 +89,7 @@
<request-param qname="gtn:objectid" name="objectId"/>
<!-- The group access -->
- <route path="/groups/{gtn:sitename}/{gtn:path}">
+ <route path="/g/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
@@ -102,7 +102,7 @@
</route>
<!-- The user access -->
- <route path="/users/{gtn:sitename}/{gtn:path}">
+ <route path="/u/{gtn:sitename}/{gtn:path}">
<request-param qname="gtn:lang" name="lang" value-mapping="never-empty">
<pattern>([A-Za-z]{2}(-[A-Za-z]{2})?)?</pattern>
</request-param>
Modified: portal/trunk/web/portal/src/main/webapp/WEB-INF/web.xml
===================================================================
--- portal/trunk/web/portal/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/web/portal/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:45:02 UTC (rev 7412)
@@ -283,8 +283,8 @@
<web-resource-name>user authentication</web-resource-name>
<url-pattern>/dologin</url-pattern>
<url-pattern>/private/*</url-pattern>
- <url-pattern>/groups/*</url-pattern>
- <url-pattern>/users/*</url-pattern>
+ <url-pattern>/g/*</url-pattern>
+ <url-pattern>/u/*</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2011-09-14 09:28:18 UTC (rev 7411)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/workspace/UIPortalApplication.java 2011-09-14 09:45:02 UTC (rev 7412)
@@ -801,7 +801,7 @@
* and used for JS based portal url generation.
*
* <p>The portal url template are calculated base on the current request and site state.
- * Something like : <code>"/portal/groups/:platform:administrators/administration/registry?portal:componentId={portal:uicomponentId}&portal:action={portal:action}" ;</code>
+ * Something like : <code>"/portal/g/:platform:administrators/administration/registry?portal:componentId={portal:uicomponentId}&portal:action={portal:action}" ;</code>
*
* @return return portal url template
* @throws UnsupportedEncodingException
13 years, 4 months
gatein SVN: r7411 - in epp/portal/branches/EPP_5_2_Branch/gadgets/server: src/main/webapp/WEB-INF and 1 other directory.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 05:28:18 -0400 (Wed, 14 Sep 2011)
New Revision: 7411
Removed:
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/
Modified:
epp/portal/branches/EPP_5_2_Branch/gadgets/server/pom.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml
Log:
Missing ports to EPP
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/server/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/server/pom.xml 2011-09-14 09:18:12 UTC (rev 7410)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/pom.xml 2011-09-14 09:28:18 UTC (rev 7411)
@@ -107,16 +107,16 @@
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>nu.validator.htmlparser</groupId>
- <artifactId>htmlparser</artifactId>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>nu.validator.htmlparser</groupId>
+ <artifactId>htmlparser</artifactId>
+ <scope>provided</scope>
+ </dependency>
- <dependency>
- <groupId>commons-digester</groupId>
- <artifactId>commons-digester</artifactId>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>commons-digester</groupId>
+ <artifactId>commons-digester</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:18:12 UTC (rev 7410)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml 2011-09-14 09:28:18 UTC (rev 7411)
@@ -94,7 +94,6 @@
</filter-mapping>
<listener>
- <!--<listener-class>org.apache.shindig.common.servlet.GuiceServletContextListener</listener-class>-->
<listener-class>org.exoplatform.portal.gadget.core.GateInGuiceServletContextListener</listener-class>
</listener>
13 years, 4 months
gatein SVN: r7410 - in epp/portal/branches/EPP_5_2_Branch: gadgets/eXoGadgets/src/main/webapp/gadgets and 6 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 05:18:12 -0400 (Wed, 14 Sep 2011)
New Revision: 7410
Added:
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIcon.png
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIconHome.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/GadgetStyle.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/IconClose_Gadget.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/ServicesManagement.png
Removed:
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIcon.png
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIconHome.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/GadgetStyle.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/IconClose_Gadget.gif
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/ServicesManagement.png
Modified:
epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/WEB-INF/gadget.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/navigation.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/pages.xml
Log:
JBEPP-1170: Put Services Management gadget as an admin page
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/WEB-INF/gadget.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/WEB-INF/gadget.xml 2011-09-14 09:14:27 UTC (rev 7409)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/WEB-INF/gadget.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -44,4 +44,8 @@
<gadget name="Currency">
<url>http://www.donalobrien.net/apps/google/currency.xml</url>
</gadget>
+
+ <gadget name="ServicesManagement">
+ <path>/gadgets/ServicesManagement/ServicesManagement.xml</path>
+ </gadget>
</gadgets>
\ No newline at end of file
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-<!--
- **
- * Created by The eXo Platform SEA
- * Author : kien.nguyen
- * nguyenanhkien2a(a)gmail.com
- * Jul 21, 2010
- *
--->
-<Module>
- <ModulePrefs author="eXoPlatform Portal team"
- title="__MSG_title__"
- directory_title="Services Management"
- title_url="http://www.exoplatform.org"
- description="Services Management"
- thumbnail="style/images/ServicesManagement.png"
- height="227">
- <Locale messages="locale/ALL_ALL.xml" />
- <Locale lang="en" messages="locale/en_ALL.xml" />
- <Locale lang="fr" messages="locale/fr_ALL.xml" />
- <Locale lang="vi" messages="locale/vi_ALL.xml" />
- <Require feature="dynamic-height"/>
- <Require feature="minimessage"/>
- <Require feature="views"/>
- </ModulePrefs>
- <UserPref name="servicesURL" display_name="__MSG_services_url__" default_value="/portal/rest/management" required="true"/>
- <Content type="html" view="home">
- <![CDATA[
- <link rel="stylesheet" type="text/css" href="style/home.css"></link>
- <script src="script/jquery-1.4.2.min.js" type="text/javascript"></script>
- <script src="script/script.js" type="text/javascript"></script>
- <script src="script/handlers.js" type="text/javascript"></script>
- <script type="text/javascript">
- gadgets.util.registerOnLoadHandler(eXo.gadget.ServicesManagement.init);
- </script>
-
- <div class="UIGadget">
- <div class="TopGadget">
- <div class="ServicesBox ClearFix">
- <div class="Text">__MSG_services__</div>
- <select id="servicesSelector"></select>
- <a class="DesIconHome"><span></span></a>
- </div>
- <p class="DescriptionBox"><b>__MSG_description__:</b> <span id="ServiceDescription">__MSG_noDescription__</span></p>
- </div>
- <div class="TitleGrid ClearFix">
- <div class="BgTitle ClearFix">
- <h3>__MSG_method__</h3>
- <select id="methodsSelector"></select>
- </div>
- </div>
-
- <div class="GadgetGrid">
- <table cellspacing="0" class="UIGrid">
- <thead>
- <tr>
- <th class="TableHeader FieldComponent Text">__MSG_name__</th>
- <th class="TableHeader Text">__MSG_value__</th>
- </tr>
- </thead>
- <tbody>
- <tr class="EvenRow">
- <td><div class="Text">__MSG_name__</div></td>
- <td><div class="Text" id="methodName"></div></td>
- </tr>
- <tr class="OddRow">
- <td><div class="Text">__MSG_description__</div></td>
- <td><div class="Text" id="methodDescription"></div></td>
- </tr>
- <tr class="EvenRow">
- <td><div class="Text">__MSG_method__</div></td>
- <td><div class="Text" id="reqMethod"></div></td>
- </tr>
- <tr class="OddRow">
- <td><div class="Text">__MSG_parameters__</div></td>
- <td id="test">
- <div class="SkinID Text" id="parametersTable"></div>
- </td>
- </tr>
- </tbody>
- </table>
- <!--End methods UIGrid-->
- </div>
-
- <!-- Start Properties UIGrid -->
- <div class="TitleGrid ClearFix">
- <div class="BgTitle ClearFix">
- <h3>Properties</h3>
- <select id="propertiesSelector"></select>
- </div>
- </div>
- <div class="GadgetGrid">
- <table cellspacing="0" class="UIGrid">
- <thead>
- <tr>
- <th class="FieldComponent">__MSG_name__</th>
- <th>__MSG_value__</th>
- </tr>
- </thead>
- <tbody>
- <tr class="EvenRow">
- <td><div class="Text">__MSG_name__</div></td>
- <td><div class="Text" id="propertyName"></div></td>
- </tr>
- <tr class="OddRow">
- <td><div class="Text">__MSG_description__</div></td>
- <td><div class="Text" id="propertyDescription"></div></td>
- </tr>
- </tbody>
- </table>
- <!--End Properties UIGrid-->
- </div>
-
- </div>
-
- ]]>
- </Content>
- <Content type="html" view="canvas">
- <![CDATA[
- <link rel="stylesheet" type="text/css" href="style/canvas.css"></link>
- <script src="script/jquery-1.4.2.min.js"></script>
- <script src="script/script.js"></script>
- <script src="script/handlers.js"></script>
- <script type="text/javascript">
- gadgets.util.registerOnLoadHandler(eXo.gadget.ServicesManagement.init);
- </script>
-
- <div class="UIGadget">
- <div class="TopGadget">
- <table cellspacing="0" style="margin: 0px auto;">
- <tbody>
- <tr>
- <td><div class="Text">__MSG_services__</div></td>
- <td>
- <select id="servicesSelector"></select>
- </td>
- </tr>
- <tr>
- <td class="Description" colspan="2"><p><b>__MSG_description__: </b><span id="ServiceDescription">__MSG_noDescription__</span></p></td>
- </tr>
- </tbody>
- </table>
- </div>
-
- <div class="TitleGadget ClearFix">
- <div id="MethodsTab" class="Tab TabSelected">Methods</div>
- <div id="PropertiesTab" class="Tab">Properties</div>
- </div>
- <div id="ServiceMethods" class="GadgetGrid GadgetGmCanvasMessage ContentSelected">
- <table cellspacing="0" class="UIGrid">
- <thead>
- <tr>
- <th class="FieldComponent">__MSG_name__</th>
- <th class="FieldComponent">__MSG_description__</th>
- <th class="FieldComponent FixWidth">__MSG_method__</th>
- <th class="FieldComponent">__MSG_parameters__</th>
- <th class="FixWidth">__MSG_action__</th>
- </tr>
- </thead>
- <tbody id="methodsForCanvas"></tbody>
- </table>
- <!--End UIGrid for methods-->
- </div>
-
- <div id="ServiceProperties" class="GadgetGrid GadgetGmCanvasMessage">
- <table cellspacing="0" class="UIGrid">
- <thead>
- <tr>
- <th class="FieldComponent">__MSG_name__</th>
- <th class="FieldComponent">__MSG_description__</th>
- <th>__MSG_action__</th>
- </tr>
- </thead>
- <tbody id="propertiesForCanvas"></tbody>
- </table>
- <!--End UIGrid for properties-->
- </div>
- <div class="BoxFile" id="resultMessage"></div>
- </div>
- ]]>
- </Content>
-</Module>
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/ServicesManagement.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<!--
+ **
+ * Created by The eXo Platform SEA
+ * Author : kien.nguyen
+ * nguyenanhkien2a(a)gmail.com
+ * Jul 21, 2010
+ *
+-->
+<Module>
+ <ModulePrefs author="eXoPlatform Portal team"
+ title="__MSG_title__"
+ directory_title="Services Management"
+ title_url="http://www.exoplatform.org"
+ description="Services Management"
+ thumbnail="style/images/ServicesManagement.png"
+ height="227">
+ <Locale messages="locale/ALL_ALL.xml" />
+ <Locale lang="en" messages="locale/en_ALL.xml" />
+ <Locale lang="fr" messages="locale/fr_ALL.xml" />
+ <Locale lang="vi" messages="locale/vi_ALL.xml" />
+ <Require feature="dynamic-height"/>
+ <Require feature="minimessage"/>
+ <Require feature="views"/>
+ </ModulePrefs>
+ <UserPref name="servicesURL" display_name="__MSG_services_url__" default_value="/portal/rest/management" required="true"/>
+ <Content type="html" view="home">
+ <![CDATA[
+ <link rel="stylesheet" type="text/css" href="style/home.css"></link>
+ <script src="script/jquery-1.4.2.min.js" type="text/javascript"></script>
+ <script src="script/script.js" type="text/javascript"></script>
+ <script src="script/handlers.js" type="text/javascript"></script>
+ <script type="text/javascript">
+ gadgets.util.registerOnLoadHandler(eXo.gadget.ServicesManagement.init);
+ </script>
+
+ <div class="UIGadget">
+ <div class="TopGadget">
+ <div class="ServicesBox ClearFix">
+ <div class="Text">__MSG_services__</div>
+ <select id="servicesSelector"></select>
+ <a class="DesIconHome"><span></span></a>
+ </div>
+ <p class="DescriptionBox"><b>__MSG_description__:</b> <span id="ServiceDescription">__MSG_noDescription__</span></p>
+ </div>
+ <div class="TitleGrid ClearFix">
+ <div class="BgTitle ClearFix">
+ <h3>__MSG_method__</h3>
+ <select id="methodsSelector"></select>
+ </div>
+ </div>
+
+ <div class="GadgetGrid">
+ <table cellspacing="0" class="UIGrid">
+ <thead>
+ <tr>
+ <th class="TableHeader FieldComponent Text">__MSG_name__</th>
+ <th class="TableHeader Text">__MSG_value__</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="EvenRow">
+ <td><div class="Text">__MSG_name__</div></td>
+ <td><div class="Text" id="methodName"></div></td>
+ </tr>
+ <tr class="OddRow">
+ <td><div class="Text">__MSG_description__</div></td>
+ <td><div class="Text" id="methodDescription"></div></td>
+ </tr>
+ <tr class="EvenRow">
+ <td><div class="Text">__MSG_method__</div></td>
+ <td><div class="Text" id="reqMethod"></div></td>
+ </tr>
+ <tr class="OddRow">
+ <td><div class="Text">__MSG_parameters__</div></td>
+ <td id="test">
+ <div class="SkinID Text" id="parametersTable"></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <!--End methods UIGrid-->
+ </div>
+
+ <!-- Start Properties UIGrid -->
+ <div class="TitleGrid ClearFix">
+ <div class="BgTitle ClearFix">
+ <h3>Properties</h3>
+ <select id="propertiesSelector"></select>
+ </div>
+ </div>
+ <div class="GadgetGrid">
+ <table cellspacing="0" class="UIGrid">
+ <thead>
+ <tr>
+ <th class="FieldComponent">__MSG_name__</th>
+ <th>__MSG_value__</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="EvenRow">
+ <td><div class="Text">__MSG_name__</div></td>
+ <td><div class="Text" id="propertyName"></div></td>
+ </tr>
+ <tr class="OddRow">
+ <td><div class="Text">__MSG_description__</div></td>
+ <td><div class="Text" id="propertyDescription"></div></td>
+ </tr>
+ </tbody>
+ </table>
+ <!--End Properties UIGrid-->
+ </div>
+
+ </div>
+
+ ]]>
+ </Content>
+ <Content type="html" view="canvas">
+ <![CDATA[
+ <link rel="stylesheet" type="text/css" href="style/canvas.css"></link>
+ <script src="script/jquery-1.4.2.min.js"></script>
+ <script src="script/script.js"></script>
+ <script src="script/handlers.js"></script>
+ <script type="text/javascript">
+ gadgets.util.registerOnLoadHandler(eXo.gadget.ServicesManagement.init);
+ </script>
+
+ <div class="UIGadget">
+ <div class="TopGadget">
+ <table cellspacing="0" style="margin: 0px auto;">
+ <tbody>
+ <tr>
+ <td><div class="Text">__MSG_services__</div></td>
+ <td>
+ <select id="servicesSelector"></select>
+ </td>
+ </tr>
+ <tr>
+ <td class="Description" colspan="2"><p><b>__MSG_description__: </b><span id="ServiceDescription">__MSG_noDescription__</span></p></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="TitleGadget ClearFix">
+ <div id="MethodsTab" class="Tab TabSelected">Methods</div>
+ <div id="PropertiesTab" class="Tab">Properties</div>
+ </div>
+ <div id="ServiceMethods" class="GadgetGrid GadgetGmCanvasMessage ContentSelected">
+ <table cellspacing="0" class="UIGrid">
+ <thead>
+ <tr>
+ <th class="FieldComponent">__MSG_name__</th>
+ <th class="FieldComponent">__MSG_description__</th>
+ <th class="FieldComponent FixWidth">__MSG_method__</th>
+ <th class="FieldComponent">__MSG_parameters__</th>
+ <th class="FixWidth">__MSG_action__</th>
+ </tr>
+ </thead>
+ <tbody id="methodsForCanvas"></tbody>
+ </table>
+ <!--End UIGrid for methods-->
+ </div>
+
+ <div id="ServiceProperties" class="GadgetGrid GadgetGmCanvasMessage">
+ <table cellspacing="0" class="UIGrid">
+ <thead>
+ <tr>
+ <th class="FieldComponent">__MSG_name__</th>
+ <th class="FieldComponent">__MSG_description__</th>
+ <th>__MSG_action__</th>
+ </tr>
+ </thead>
+ <tbody id="propertiesForCanvas"></tbody>
+ </table>
+ <!--End UIGrid for properties-->
+ </div>
+ <div class="BoxFile" id="resultMessage"></div>
+ </div>
+ ]]>
+ </Content>
+</Module>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,68 +0,0 @@
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-
-<messagebundle>
- <msg name="title">
- Services Management
- </msg>
- <msg name="services">
- Services
- </msg>
- <msg name="name">
- Name
- </msg>
- <msg name="description">
- Description
- </msg>
- <msg name="noDescription">
- No description
- </msg>
- <msg name="method">
- Method
- </msg>
- <msg name="parameters">
- Parameters
- </msg>
- <msg name="action">
- Action
- </msg>
- <msg name="value">
- Value
- </msg>
- <msg name="services_url">
- Services URL
- </msg>
- <msg name="failManage">
- Temporary can't manage services from other host until we support OAuth
- </msg>
- <msg name="noServices">
- No service's available or you don't have enough permission
- </msg>
- <msg name="noMethod">
- No method
- </msg>
- <msg name="noProperty">
- No property
- </msg>
- <msg name="badURL">
- Error while retrieving data, please check your URL preference
- </msg>
-</messagebundle>
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/ALL_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,68 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="title">
+ Services Management
+ </msg>
+ <msg name="services">
+ Services
+ </msg>
+ <msg name="name">
+ Name
+ </msg>
+ <msg name="description">
+ Description
+ </msg>
+ <msg name="noDescription">
+ No description
+ </msg>
+ <msg name="method">
+ Method
+ </msg>
+ <msg name="parameters">
+ Parameters
+ </msg>
+ <msg name="action">
+ Action
+ </msg>
+ <msg name="value">
+ Value
+ </msg>
+ <msg name="services_url">
+ Services URL
+ </msg>
+ <msg name="failManage">
+ Temporary can't manage services from other host until we support OAuth
+ </msg>
+ <msg name="noServices">
+ No service's available or you don't have enough permission
+ </msg>
+ <msg name="noMethod">
+ No method
+ </msg>
+ <msg name="noProperty">
+ No property
+ </msg>
+ <msg name="badURL">
+ Error while retrieving data, please check your URL preference
+ </msg>
+</messagebundle>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,68 +0,0 @@
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-
-<messagebundle>
- <msg name="title">
- Services Management
- </msg>
- <msg name="services">
- Services
- </msg>
- <msg name="name">
- Name
- </msg>
- <msg name="description">
- Description
- </msg>
- <msg name="noDescription">
- No description
- </msg>
- <msg name="method">
- Method
- </msg>
- <msg name="parameters">
- Parameters
- </msg>
- <msg name="action">
- Action
- </msg>
- <msg name="value">
- Value
- </msg>
- <msg name="services_url">
- Services URL
- </msg>
- <msg name="failManage">
- Temporary can't manage services from other host until we support OAuth
- </msg>
- <msg name="noServices">
- No service's available or you don't have enough permission
- </msg>
- <msg name="noMethod">
- No method
- </msg>
- <msg name="noProperty">
- No property
- </msg>
- <msg name="badURL">
- Error while retrieving data, please check your URL preference
- </msg>
-</messagebundle>
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/en_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,68 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="title">
+ Services Management
+ </msg>
+ <msg name="services">
+ Services
+ </msg>
+ <msg name="name">
+ Name
+ </msg>
+ <msg name="description">
+ Description
+ </msg>
+ <msg name="noDescription">
+ No description
+ </msg>
+ <msg name="method">
+ Method
+ </msg>
+ <msg name="parameters">
+ Parameters
+ </msg>
+ <msg name="action">
+ Action
+ </msg>
+ <msg name="value">
+ Value
+ </msg>
+ <msg name="services_url">
+ Services URL
+ </msg>
+ <msg name="failManage">
+ Temporary can't manage services from other host until we support OAuth
+ </msg>
+ <msg name="noServices">
+ No service's available or you don't have enough permission
+ </msg>
+ <msg name="noMethod">
+ No method
+ </msg>
+ <msg name="noProperty">
+ No property
+ </msg>
+ <msg name="badURL">
+ Error while retrieving data, please check your URL preference
+ </msg>
+</messagebundle>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,50 +0,0 @@
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-
-<messagebundle>
- <msg name="title">
- La gestion des services
- </msg>
- <msg name="services">
- Services
- </msg>
- <msg name="name">
- Nom
- </msg>
- <msg name="description">
- Description
- </msg>
- <msg name="method">
- Méthode
- </msg>
- <msg name="parameters">
- Paramètres
- </msg>
- <msg name="action">
- Action
- </msg>
- <msg name="value">
- Valeur
- </msg>
- <msg name="services_url">
- Services URL
- </msg>
-</messagebundle>
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/fr_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,50 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="title">
+ La gestion des services
+ </msg>
+ <msg name="services">
+ Services
+ </msg>
+ <msg name="name">
+ Nom
+ </msg>
+ <msg name="description">
+ Description
+ </msg>
+ <msg name="method">
+ Méthode
+ </msg>
+ <msg name="parameters">
+ Paramètres
+ </msg>
+ <msg name="action">
+ Action
+ </msg>
+ <msg name="value">
+ Valeur
+ </msg>
+ <msg name="services_url">
+ Services URL
+ </msg>
+</messagebundle>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,50 +0,0 @@
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-
-<messagebundle>
- <msg name="title">
- Quản lý dịch vụ
- </msg>
- <msg name="services">
- Dịch vụ
- </msg>
- <msg name="name">
- Tên
- </msg>
- <msg name="description">
- Mô tả
- </msg>
- <msg name="method">
- Phương thức
- </msg>
- <msg name="parameters">
- Tham số
- </msg>
- <msg name="action">
- Thực thi
- </msg>
- <msg name="value">
- Giá trị
- </msg>
- <msg name="services_url">
- Địa chỉ dịch vụ
- </msg>
-</messagebundle>
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/locale/vi_ALL.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,50 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<messagebundle>
+ <msg name="title">
+ Quản lý dịch vụ
+ </msg>
+ <msg name="services">
+ Dịch vụ
+ </msg>
+ <msg name="name">
+ Tên
+ </msg>
+ <msg name="description">
+ Mô tả
+ </msg>
+ <msg name="method">
+ Phương thức
+ </msg>
+ <msg name="parameters">
+ Tham số
+ </msg>
+ <msg name="action">
+ Thực thi
+ </msg>
+ <msg name="value">
+ Giá trị
+ </msg>
+ <msg name="services_url">
+ Địa chỉ dịch vụ
+ </msg>
+</messagebundle>
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,159 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-ServicesManagement.prototype.registerHandler = function() {
-
- //======================Handler======================================//
- $("#servicesSelector").change(function () {
- var serviceName = $(this).val();
- serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
- var methodsURL = eXo.gadget.ServicesManagement.SERVICES_URL + "/" + encodeURIComponent(serviceName);
-
- var currView = gadgets.views.getCurrentView().getName();
- if (currView == "home") {
- eXo.gadget.ServicesManagement.makeRequest(methodsURL, eXo.gadget.ServicesManagement.renderServiceDetailForHome);
- } else {
- eXo.gadget.ServicesManagement.makeRequest(methodsURL, eXo.gadget.ServicesManagement.renderServiceDetailForCanvas);
- }
- });
-
- $(".Tab").click(function () {
- var selectedTab = $(".TabSelected")[0];
- if (this == selectedTab) {
- return;
- }
-
- $(selectedTab).removeClass("TabSelected");
- $(this).addClass("TabSelected");
-
- var selectedContent = eXo.gadget.ServicesManagement.getContentContainer(selectedTab);
- var content = eXo.gadget.ServicesManagement.getContentContainer(this);
-
- $(selectedContent).removeClass("ContentSelected");
- $(selectedContent).hide();
- eXo.gadget.ServicesManagement.fadeIn(content, function() {
- $(this).addClass("ContentSelected");
- });
- });
-
- $(".DesIconHome").click(function () {
- eXo.gadget.ServicesManagement.fadeIn($(".DescriptionBox")[0], function() {
- var desBox = this;
- window.setTimeout(function() {
- $(desBox).fadeOut(2000, function() {
- eXo.gadget.ServicesManagement.resetHeight();
- });
- }, 5000);
- });
- });
-
- $("#propertiesSelector").change(function () {
- var propertyName = $(this).val();
- propertyName = gadgets.util.unescapeString(!propertyName ? "" : propertyName);
-
- var propertyData = $(this).data('properties');
- var property = null;
- if (propertyData) {
- for (var i = 0; i < propertyData.length; i++) {
- if (propertyData[i].name == propertyName) {
- property = propertyData[i];
- }
- }
- }
-
- eXo.gadget.ServicesManagement.renderPropertyDetail(property);
- });
-
- $("#methodsSelector").change(function () {
- var methodName = $(this).val();
- methodName = gadgets.util.unescapeString(!methodName ? "" : methodName);
-
- var methodData = $(this).data('methods');
- var method = null;
- if (methodData) {
- for (var i = 0; i < methodData.length; i++) {
- if (methodData[i].name == methodName) {
- method = methodData[i];
- }
- }
- }
-
- eXo.gadget.ServicesManagement.renderMethodDetail(method);
- });
-
- $('.MethodActionButton').live('click', function(event) {
- event.preventDefault();
- var tr = this.parentNode.parentNode;
- var methodName = gadgets.util.unescapeString($(".methodName", tr).text());
- var reqMethod = gadgets.util.unescapeString($(".reqMethod", tr).text());
- var serviceName = $("#servicesSelector").val();
- serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
- var param = $("form", tr).serialize();
-
- var execLink = eXo.gadget.ServicesManagement.SERVICES_URL + "/" +
- encodeURIComponent(serviceName) + "/" +
- encodeURIComponent(methodName);
- eXo.gadget.ServicesManagement.makeRequest(execLink, eXo.gadget.ServicesManagement.showMinimessage, param, "text", reqMethod);
- });
-
- $('.PropertyActionButton').live('click', function(event) {
- event.preventDefault();
- var tr = this.parentNode.parentNode;
- var propName = gadgets.util.unescapeString($(".propName", tr).text());
- var reqMethod = "GET";
- var serviceName = $("#servicesSelector").val();
- serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
-
- var execLink = eXo.gadget.ServicesManagement.SERVICES_URL + "/" +
- encodeURIComponent(serviceName) + "/" +
- encodeURIComponent(propName);
- eXo.gadget.ServicesManagement.makeRequest(execLink, eXo.gadget.ServicesManagement.showMinimessage, null, "text", reqMethod);
- });
-};
-
-/**
- * @param reqUrl - String
- * @param callback - Function
- * @param sendData - Data that will be send to server
- * @param returnType - String html/xml/json/script
- * @param reqMethod - GET/POST/PUT...
- * @return XMLHttpRequest object
- */
-ServicesManagement.prototype.makeRequest = function(reqUrl, callback, sendData, returnType, reqMethod) {
- if (reqUrl == "") {
- return;
- }
- reqMethod = reqMethod ? reqMethod : "GET";
- returnType = returnType ? returnType : "json";
-
- return $.ajax({
- url: reqUrl,
- type: reqMethod,
- success: callback,
- contentType: "application/x-www-form-urlencoded",
- error: function() {
- var prefs = new _IG_Prefs();
- alert(prefs.getMsg("badURL"));
- },
- data: sendData,
- dataType: returnType,
- beforeSend: function(xhr) {
- xhr.setRequestHeader("If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT");
- }
- });
-};
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/handlers.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,159 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+ServicesManagement.prototype.registerHandler = function() {
+
+ //======================Handler======================================//
+ $("#servicesSelector").change(function () {
+ var serviceName = $(this).val();
+ serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
+ var methodsURL = eXo.gadget.ServicesManagement.SERVICES_URL + "/" + encodeURIComponent(serviceName);
+
+ var currView = gadgets.views.getCurrentView().getName();
+ if (currView == "home") {
+ eXo.gadget.ServicesManagement.makeRequest(methodsURL, eXo.gadget.ServicesManagement.renderServiceDetailForHome);
+ } else {
+ eXo.gadget.ServicesManagement.makeRequest(methodsURL, eXo.gadget.ServicesManagement.renderServiceDetailForCanvas);
+ }
+ });
+
+ $(".Tab").click(function () {
+ var selectedTab = $(".TabSelected")[0];
+ if (this == selectedTab) {
+ return;
+ }
+
+ $(selectedTab).removeClass("TabSelected");
+ $(this).addClass("TabSelected");
+
+ var selectedContent = eXo.gadget.ServicesManagement.getContentContainer(selectedTab);
+ var content = eXo.gadget.ServicesManagement.getContentContainer(this);
+
+ $(selectedContent).removeClass("ContentSelected");
+ $(selectedContent).hide();
+ eXo.gadget.ServicesManagement.fadeIn(content, function() {
+ $(this).addClass("ContentSelected");
+ });
+ });
+
+ $(".DesIconHome").click(function () {
+ eXo.gadget.ServicesManagement.fadeIn($(".DescriptionBox")[0], function() {
+ var desBox = this;
+ window.setTimeout(function() {
+ $(desBox).fadeOut(2000, function() {
+ eXo.gadget.ServicesManagement.resetHeight();
+ });
+ }, 5000);
+ });
+ });
+
+ $("#propertiesSelector").change(function () {
+ var propertyName = $(this).val();
+ propertyName = gadgets.util.unescapeString(!propertyName ? "" : propertyName);
+
+ var propertyData = $(this).data('properties');
+ var property = null;
+ if (propertyData) {
+ for (var i = 0; i < propertyData.length; i++) {
+ if (propertyData[i].name == propertyName) {
+ property = propertyData[i];
+ }
+ }
+ }
+
+ eXo.gadget.ServicesManagement.renderPropertyDetail(property);
+ });
+
+ $("#methodsSelector").change(function () {
+ var methodName = $(this).val();
+ methodName = gadgets.util.unescapeString(!methodName ? "" : methodName);
+
+ var methodData = $(this).data('methods');
+ var method = null;
+ if (methodData) {
+ for (var i = 0; i < methodData.length; i++) {
+ if (methodData[i].name == methodName) {
+ method = methodData[i];
+ }
+ }
+ }
+
+ eXo.gadget.ServicesManagement.renderMethodDetail(method);
+ });
+
+ $('.MethodActionButton').live('click', function(event) {
+ event.preventDefault();
+ var tr = this.parentNode.parentNode;
+ var methodName = gadgets.util.unescapeString($(".methodName", tr).text());
+ var reqMethod = gadgets.util.unescapeString($(".reqMethod", tr).text());
+ var serviceName = $("#servicesSelector").val();
+ serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
+ var param = $("form", tr).serialize();
+
+ var execLink = eXo.gadget.ServicesManagement.SERVICES_URL + "/" +
+ encodeURIComponent(serviceName) + "/" +
+ encodeURIComponent(methodName);
+ eXo.gadget.ServicesManagement.makeRequest(execLink, eXo.gadget.ServicesManagement.showMinimessage, param, "text", reqMethod);
+ });
+
+ $('.PropertyActionButton').live('click', function(event) {
+ event.preventDefault();
+ var tr = this.parentNode.parentNode;
+ var propName = gadgets.util.unescapeString($(".propName", tr).text());
+ var reqMethod = "GET";
+ var serviceName = $("#servicesSelector").val();
+ serviceName = gadgets.util.unescapeString(!serviceName ? "" : serviceName);
+
+ var execLink = eXo.gadget.ServicesManagement.SERVICES_URL + "/" +
+ encodeURIComponent(serviceName) + "/" +
+ encodeURIComponent(propName);
+ eXo.gadget.ServicesManagement.makeRequest(execLink, eXo.gadget.ServicesManagement.showMinimessage, null, "text", reqMethod);
+ });
+};
+
+/**
+ * @param reqUrl - String
+ * @param callback - Function
+ * @param sendData - Data that will be send to server
+ * @param returnType - String html/xml/json/script
+ * @param reqMethod - GET/POST/PUT...
+ * @return XMLHttpRequest object
+ */
+ServicesManagement.prototype.makeRequest = function(reqUrl, callback, sendData, returnType, reqMethod) {
+ if (reqUrl == "") {
+ return;
+ }
+ reqMethod = reqMethod ? reqMethod : "GET";
+ returnType = returnType ? returnType : "json";
+
+ return $.ajax({
+ url: reqUrl,
+ type: reqMethod,
+ success: callback,
+ contentType: "application/x-www-form-urlencoded",
+ error: function() {
+ var prefs = new _IG_Prefs();
+ alert(prefs.getMsg("badURL"));
+ },
+ data: sendData,
+ dataType: returnType,
+ beforeSend: function(xhr) {
+ xhr.setRequestHeader("If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT");
+ }
+ });
+};
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,154 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/jquery-1.4.2.min.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,378 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This software is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this software; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
- */
-eXo = {
- gadget : {}
-};
-
-function ServicesManagement() {
- this.DEFAULT_SERVICES_URL = "/portal/rest/management";
-}
-
-ServicesManagement.prototype.init = function() {
- var monitor = eXo.gadget.ServicesManagement;
- var prefs = new _IG_Prefs();
- var servicesURL = prefs.getString("servicesURL");
- if (servicesURL && $.trim(servicesURL) != "") {
- monitor.SERVICES_URL = $.trim(servicesURL);
- } else {
- monitor.SERVICES_URL = monitor.DEFAULT_SERVICES_URL;
- }
-
- function getContext(url) {
- if (!url) return "";
- var fslash = url.indexOf("/");
- var lslash = url.indexOf("/", fslash + 2);
- var context = url.substring(0, lslash);
- return context;
- }
-
- if (monitor.SERVICES_URL.indexOf("http://") == 0 ||
- monitor.SERVICES_URL.indexOf("https://") == 0) {
- if (getContext(document.location.href) !== getContext(monitor.SERVICES_URL)) {
- alert(prefs.getMsg("failManage"));
- return;
- }
- }
-
- monitor.registerHandler();
- monitor.makeRequest(monitor.SERVICES_URL, monitor.renderServiceSelector);
-};
-
-ServicesManagement.prototype.renderServiceSelector = function(services) {
- if (!services || !services.value || services.value.length == 0) {
- alert(new _IG_Prefs().getMsg("noServices"));
- }
- var servicesSelector = $("#servicesSelector");
- var optionsHtml = "";
-
- if (services && services.value) {
- var serviceNames = services.value;
-
- for ( var i = 0; i < serviceNames.length; i++) {
- optionsHtml += "<option>" + gadgets.util.escapeString(serviceNames[i])
- + "</option>";
- }
- }
-
- servicesSelector.html(optionsHtml);
- servicesSelector.change();
-};
-
-ServicesManagement.prototype.renderServiceDetailForHome = function(data) {
- if (data) {
- if(data.description) {
- $("#ServiceDescription").html(data.description);
- } else {
- $("#ServiceDescription").html(new _IG_Prefs().getMsg("noDescription"));
- }
-
- if(data.methods) {
- eXo.gadget.ServicesManagement.renderMethodSelector(data);
- }
-
- if(data.properties) {
- eXo.gadget.ServicesManagement.renderPropertySelector(data);
- }
- }
-};
-
-ServicesManagement.prototype.renderMethodSelector = function(methodData) {
- var methodSelector = $("#methodsSelector");
- var optionsHtml = "";
- var methods = null;
-
- if (methodData && methodData.methods) {
- methods = methodData.methods;
-
- for ( var i = 0; i < methods.length; i++) {
- optionsHtml += "<option>" + gadgets.util.escapeString(methods[i].name)
- + "</option>";
- }
- }
-
- if (optionsHtml == "") {
- optionsHtml = "<option></option>";
- }
-
- methodSelector.html(optionsHtml);
- methodSelector.data('methods', methods);
- methodSelector.change();
-};
-
-ServicesManagement.prototype.renderPropertySelector = function(propertyData) {
- var propertySelector = $("#propertiesSelector");
- var optionsHtml = "";
- var properties = null;
-
- if (propertyData && propertyData.properties) {
- properties = propertyData.properties;
-
- for ( var i = 0; i < properties.length; i++) {
- optionsHtml += "<option>" + gadgets.util.escapeString(properties[i].name)
- + "</option>";
- }
- }
-
- if (optionsHtml == "") {
- optionsHtml = "<option></option>";
- }
-
- propertySelector.html(optionsHtml);
- propertySelector.data('properties', properties);
- propertySelector.change();
-};
-
-ServicesManagement.prototype.renderMethodDetail = function(method) {
- if (!method) {
- method = {
- name : "",
- description : "",
- method : "",
- parameters : []
- };
- }
- var util = gadgets.util;
-
- $("#methodName").html(util.escapeString(method.name));
- $("#methodDescription").html(util.escapeString(method.description ? method.description : ""));
- $("#reqMethod").html(util.escapeString(method.method));
-
- var paramTable = "<table>";
- for ( var i = 0; i < method.parameters.length; i++) {
- paramTable += "<tr><td>" + util.escapeString(method.parameters[i].name)
- + "</td></tr>";
- }
-
- if (paramTable == "<table>") {
- paramTable += "<tr><td>[]</td></tr>";
- }
- paramTable += "</table>";
- $("#parametersTable").html(paramTable);
- eXo.gadget.ServicesManagement.resetHeight();
-};
-
-ServicesManagement.prototype.renderPropertyDetail = function(property) {
- if (!property) {
- property = {
- name : "",
- description : ""
- };
- }
- var util = gadgets.util;
-
- $("#propertyName").html(util.escapeString(property.name));
- $("#propertyDescription").html(util.escapeString(property.description ? property.description : ""));
- eXo.gadget.ServicesManagement.resetHeight();
-};
-// End Home View
-
-// Start Canvas view
-ServicesManagement.prototype.renderServiceDetailForCanvas = function(data) {
- if (data) {
- if(data.description) {
- $("#ServiceDescription").html(data.description);
- } else {
- $("#ServiceDescription").html(new _IG_Prefs().getMsg("noDescription"));
- }
-
- if(data.methods) {
- eXo.gadget.ServicesManagement.renderMethodsForCanvas(data);
- }
-
- if(data.properties) {
- eXo.gadget.ServicesManagement.renderPropertiesForCanvas(data);
- }
-
- eXo.gadget.ServicesManagement.fadeIn($(".ContentSelected")[0]);
- }
-};
-
-ServicesManagement.prototype.getContentContainer = function(tab) {
- if (tab.id == "MethodsTab") {
- return $("#ServiceMethods")[0];
- } else {
- return $("#ServiceProperties")[0];
- }
-};
-
-ServicesManagement.prototype.fadeIn = function(target, callback) {
- $(target).hide();
- $(target).fadeIn(700, callback);
- eXo.gadget.ServicesManagement.resetHeight();
-};
-
-ServicesManagement.prototype.renderMethodsForCanvas = function(methodData) {
- if (!methodData || !methodData.methods) {
- return;
- }
-
- var methods = methodData.methods;
- var methodForCanvas = "";
- var util = gadgets.util;
-
- for ( var i = 0; i < methods.length; i++) {
- var method = methods[i];
- var methodName = util.escapeString(method.name);
- var methodDescription = util.escapeString(method.description ? method.description : "");
- var reqMethod = util.escapeString(method.method);
-
- var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
- methodForCanvas += "<tr class='" + rowClass + "'>"
- + "<td><div class='Text methodName'>" + methodName + "</div></td>"
- + "<td><div class='Text methodDescription'>" + methodDescription + "</div></td>"
- + "<td><div class='Text reqMethod'>" + reqMethod + "</div></td>"
- + "<td><form style='margin-bottom: 0px;'>";
- for ( var j = 0; j < method.parameters.length; j++) {
- methodForCanvas += "<div class='SkinID'>"
- + util.escapeString(method.parameters[j].name) + " "
- + "<input type='text' name='"
- + util.escapeString(method.parameters[j].name) + "'>" + "</div>";
- }
- methodForCanvas += "</form></td>" + "<td>"
- + "<div class='MethodActionButton GadgetStyle FL'>"
- + "<div class='ButtonLeft'>" + "<div class='ButtonRight'>"
- + "<div class='ButtonMiddle'>" + "<a href='#'>Run</a>" + "</div>"
- + "</div>" + "</div>" + "</div>" + "</td></tr>";
-
- }
- if (methodForCanvas == "") {
- methodForCanvas = "<tr class='EventRow'><td colspan='5' align='center'><div class='Text'>" + new _IG_Prefs().getMsg("noMethod") + "</div></td></tr>";
- }
- $("#methodsForCanvas").html(methodForCanvas);
-};
-
-/**
- * data is not null
- */
-ServicesManagement.prototype.renderPropertiesForCanvas = function(data) {
- var props = data.properties;
- var propertyForCanvas = "";
- var util = gadgets.util;
-
- for ( var i = 0; i < props.length; i++) {
- var prop = props[i];
- var propName = util.escapeString(prop.name);
- var propDescription = util.escapeString(prop.description ? prop.description : "");
-
- var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
- propertyForCanvas += "<tr class='" + rowClass + "'>"
- + "<td><div class='Text propName'>" + propName + "</div></td>"
- + "<td><div class='Text propDescription'>" + propDescription + "</div></td>";
-
- propertyForCanvas += "<td>"
- + "<div class='PropertyActionButton GadgetStyle FL'>"
- + "<div class='ButtonLeft'>" + "<div class='ButtonRight'>"
- + "<div class='ButtonMiddle'>" + "<a href='#'>Get</a>" + "</div>"
- + "</div>" + "</div>" + "</div>" + "</td></tr>";
-
- }
- if (propertyForCanvas == "") {
- propertyForCanvas = "<tr class='EvenRow'><td colspan='3' align='center'><div class='Text'>" + new _IG_Prefs().getMsg("noProperty") + "</div></td></tr>";
- }
- $("#propertiesForCanvas").html(propertyForCanvas);
-};
-
-ServicesManagement.prototype.showMinimessage = function(jsonMessage) {
- var msgObj = $("#resultMessage")[0];
- $(msgObj).css("Visibility", "hidden");
- $(msgObj).html("");
-
- var parsedObj;
- try {
- parsedObj = gadgets.json.parse(jsonMessage);
- } catch (e) {
- parsedObj = jsonMessage;
- }
- var htmlTable = $.trim(eXo.gadget.ServicesManagement.objToTable(parsedObj));
- if (htmlTable == "" || htmlTable == "empty object") {
- htmlTable = "Method's executed, return no result";
- }
-
- var msg = new gadgets.MiniMessage("ServicesManagement", msgObj);
- var executeMsg = msg.createDismissibleMessage(htmlTable, function() {
- window.setTimeout(function() {gadgets.window.adjustHeight($(".UIGadget").height()); }, 500);
- return true;
- });
-
- executeMsg.style.height = "100px";
- executeMsg.style.overflow = "auto";
- $(".mmlib_xlink").each(function() {
- $(this.parentNode).attr("style", "vertical-align: top");
- $(this).html("");
- });
- $(".mmlib_table .UIGrid").each(function() {
- $(this.parentNode).attr("style", "vertical-align: top");
- });
-
- eXo.gadget.ServicesManagement.resetHeight();
- $(msgObj).hide();
- $(msgObj).slideDown(1200);
- $(msgObj).css("Visibility", "visible");
-};
-
-ServicesManagement.prototype.objToTable = function(obj) {
- var type = typeof (obj);
- if (type != "object") {
- return gadgets.util.escapeString(obj + "");
- }
-
- if (!obj || $.isEmptyObject(obj)
- || (obj.constructor == Array && obj.length == 0)) {
- return "empty object";
- }
-
- var str = "<table cellspacing='0' class='UIGrid'>";
- if (obj.constructor == Array) {
- for ( var i = 0; i < obj.length; i++) {
- var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
- str += "<tr class='" + rowClass + "'><td><div class='Text'>";
- str += eXo.gadget.ServicesManagement.objToTable(obj[i]);
- str += "</div></td></tr>";
- }
- } else {
- str += "<tr>";
- for ( var prop in obj) {
- str += "<th>";
- str += eXo.gadget.ServicesManagement.objToTable(prop);
- str += "</th>";
- }
- str += "</tr>";
-
- str += "<tr>";
- for ( var prop in obj) {
- str += "<td>";
- str += eXo.gadget.ServicesManagement.objToTable(obj[prop]);
- str += "</td>";
- }
- str += "</tr>";
- }
-
- str += "</table>";
- return str;
-};
-
-ServicesManagement.prototype.resetHeight = function() {
- if ($.browser.safari) {
- gadgets.window.adjustHeight($(".UIGadget").height());
- } else {
- gadgets.window.adjustHeight();
- }
-};
-
-eXo.gadget.ServicesManagement = new ServicesManagement();
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/script/script.js 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,378 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ *
+ * This software is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this software; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+eXo = {
+ gadget : {}
+};
+
+function ServicesManagement() {
+ this.DEFAULT_SERVICES_URL = "/portal/rest/management";
+}
+
+ServicesManagement.prototype.init = function() {
+ var monitor = eXo.gadget.ServicesManagement;
+ var prefs = new _IG_Prefs();
+ var servicesURL = prefs.getString("servicesURL");
+ if (servicesURL && $.trim(servicesURL) != "") {
+ monitor.SERVICES_URL = $.trim(servicesURL);
+ } else {
+ monitor.SERVICES_URL = monitor.DEFAULT_SERVICES_URL;
+ }
+
+ function getContext(url) {
+ if (!url) return "";
+ var fslash = url.indexOf("/");
+ var lslash = url.indexOf("/", fslash + 2);
+ var context = url.substring(0, lslash);
+ return context;
+ }
+
+ if (monitor.SERVICES_URL.indexOf("http://") == 0 ||
+ monitor.SERVICES_URL.indexOf("https://") == 0) {
+ if (getContext(document.location.href) !== getContext(monitor.SERVICES_URL)) {
+ alert(prefs.getMsg("failManage"));
+ return;
+ }
+ }
+
+ monitor.registerHandler();
+ monitor.makeRequest(monitor.SERVICES_URL, monitor.renderServiceSelector);
+};
+
+ServicesManagement.prototype.renderServiceSelector = function(services) {
+ if (!services || !services.value || services.value.length == 0) {
+ alert(new _IG_Prefs().getMsg("noServices"));
+ }
+ var servicesSelector = $("#servicesSelector");
+ var optionsHtml = "";
+
+ if (services && services.value) {
+ var serviceNames = services.value;
+
+ for ( var i = 0; i < serviceNames.length; i++) {
+ optionsHtml += "<option>" + gadgets.util.escapeString(serviceNames[i])
+ + "</option>";
+ }
+ }
+
+ servicesSelector.html(optionsHtml);
+ servicesSelector.change();
+};
+
+ServicesManagement.prototype.renderServiceDetailForHome = function(data) {
+ if (data) {
+ if(data.description) {
+ $("#ServiceDescription").html(data.description);
+ } else {
+ $("#ServiceDescription").html(new _IG_Prefs().getMsg("noDescription"));
+ }
+
+ if(data.methods) {
+ eXo.gadget.ServicesManagement.renderMethodSelector(data);
+ }
+
+ if(data.properties) {
+ eXo.gadget.ServicesManagement.renderPropertySelector(data);
+ }
+ }
+};
+
+ServicesManagement.prototype.renderMethodSelector = function(methodData) {
+ var methodSelector = $("#methodsSelector");
+ var optionsHtml = "";
+ var methods = null;
+
+ if (methodData && methodData.methods) {
+ methods = methodData.methods;
+
+ for ( var i = 0; i < methods.length; i++) {
+ optionsHtml += "<option>" + gadgets.util.escapeString(methods[i].name)
+ + "</option>";
+ }
+ }
+
+ if (optionsHtml == "") {
+ optionsHtml = "<option></option>";
+ }
+
+ methodSelector.html(optionsHtml);
+ methodSelector.data('methods', methods);
+ methodSelector.change();
+};
+
+ServicesManagement.prototype.renderPropertySelector = function(propertyData) {
+ var propertySelector = $("#propertiesSelector");
+ var optionsHtml = "";
+ var properties = null;
+
+ if (propertyData && propertyData.properties) {
+ properties = propertyData.properties;
+
+ for ( var i = 0; i < properties.length; i++) {
+ optionsHtml += "<option>" + gadgets.util.escapeString(properties[i].name)
+ + "</option>";
+ }
+ }
+
+ if (optionsHtml == "") {
+ optionsHtml = "<option></option>";
+ }
+
+ propertySelector.html(optionsHtml);
+ propertySelector.data('properties', properties);
+ propertySelector.change();
+};
+
+ServicesManagement.prototype.renderMethodDetail = function(method) {
+ if (!method) {
+ method = {
+ name : "",
+ description : "",
+ method : "",
+ parameters : []
+ };
+ }
+ var util = gadgets.util;
+
+ $("#methodName").html(util.escapeString(method.name));
+ $("#methodDescription").html(util.escapeString(method.description ? method.description : ""));
+ $("#reqMethod").html(util.escapeString(method.method));
+
+ var paramTable = "<table>";
+ for ( var i = 0; i < method.parameters.length; i++) {
+ paramTable += "<tr><td>" + util.escapeString(method.parameters[i].name)
+ + "</td></tr>";
+ }
+
+ if (paramTable == "<table>") {
+ paramTable += "<tr><td>[]</td></tr>";
+ }
+ paramTable += "</table>";
+ $("#parametersTable").html(paramTable);
+ eXo.gadget.ServicesManagement.resetHeight();
+};
+
+ServicesManagement.prototype.renderPropertyDetail = function(property) {
+ if (!property) {
+ property = {
+ name : "",
+ description : ""
+ };
+ }
+ var util = gadgets.util;
+
+ $("#propertyName").html(util.escapeString(property.name));
+ $("#propertyDescription").html(util.escapeString(property.description ? property.description : ""));
+ eXo.gadget.ServicesManagement.resetHeight();
+};
+// End Home View
+
+// Start Canvas view
+ServicesManagement.prototype.renderServiceDetailForCanvas = function(data) {
+ if (data) {
+ if(data.description) {
+ $("#ServiceDescription").html(data.description);
+ } else {
+ $("#ServiceDescription").html(new _IG_Prefs().getMsg("noDescription"));
+ }
+
+ if(data.methods) {
+ eXo.gadget.ServicesManagement.renderMethodsForCanvas(data);
+ }
+
+ if(data.properties) {
+ eXo.gadget.ServicesManagement.renderPropertiesForCanvas(data);
+ }
+
+ eXo.gadget.ServicesManagement.fadeIn($(".ContentSelected")[0]);
+ }
+};
+
+ServicesManagement.prototype.getContentContainer = function(tab) {
+ if (tab.id == "MethodsTab") {
+ return $("#ServiceMethods")[0];
+ } else {
+ return $("#ServiceProperties")[0];
+ }
+};
+
+ServicesManagement.prototype.fadeIn = function(target, callback) {
+ $(target).hide();
+ $(target).fadeIn(700, callback);
+ eXo.gadget.ServicesManagement.resetHeight();
+};
+
+ServicesManagement.prototype.renderMethodsForCanvas = function(methodData) {
+ if (!methodData || !methodData.methods) {
+ return;
+ }
+
+ var methods = methodData.methods;
+ var methodForCanvas = "";
+ var util = gadgets.util;
+
+ for ( var i = 0; i < methods.length; i++) {
+ var method = methods[i];
+ var methodName = util.escapeString(method.name);
+ var methodDescription = util.escapeString(method.description ? method.description : "");
+ var reqMethod = util.escapeString(method.method);
+
+ var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
+ methodForCanvas += "<tr class='" + rowClass + "'>"
+ + "<td><div class='Text methodName'>" + methodName + "</div></td>"
+ + "<td><div class='Text methodDescription'>" + methodDescription + "</div></td>"
+ + "<td><div class='Text reqMethod'>" + reqMethod + "</div></td>"
+ + "<td><form style='margin-bottom: 0px;'>";
+ for ( var j = 0; j < method.parameters.length; j++) {
+ methodForCanvas += "<div class='SkinID'>"
+ + util.escapeString(method.parameters[j].name) + " "
+ + "<input type='text' name='"
+ + util.escapeString(method.parameters[j].name) + "'>" + "</div>";
+ }
+ methodForCanvas += "</form></td>" + "<td>"
+ + "<div class='MethodActionButton GadgetStyle FL'>"
+ + "<div class='ButtonLeft'>" + "<div class='ButtonRight'>"
+ + "<div class='ButtonMiddle'>" + "<a href='#'>Run</a>" + "</div>"
+ + "</div>" + "</div>" + "</div>" + "</td></tr>";
+
+ }
+ if (methodForCanvas == "") {
+ methodForCanvas = "<tr class='EventRow'><td colspan='5' align='center'><div class='Text'>" + new _IG_Prefs().getMsg("noMethod") + "</div></td></tr>";
+ }
+ $("#methodsForCanvas").html(methodForCanvas);
+};
+
+/**
+ * data is not null
+ */
+ServicesManagement.prototype.renderPropertiesForCanvas = function(data) {
+ var props = data.properties;
+ var propertyForCanvas = "";
+ var util = gadgets.util;
+
+ for ( var i = 0; i < props.length; i++) {
+ var prop = props[i];
+ var propName = util.escapeString(prop.name);
+ var propDescription = util.escapeString(prop.description ? prop.description : "");
+
+ var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
+ propertyForCanvas += "<tr class='" + rowClass + "'>"
+ + "<td><div class='Text propName'>" + propName + "</div></td>"
+ + "<td><div class='Text propDescription'>" + propDescription + "</div></td>";
+
+ propertyForCanvas += "<td>"
+ + "<div class='PropertyActionButton GadgetStyle FL'>"
+ + "<div class='ButtonLeft'>" + "<div class='ButtonRight'>"
+ + "<div class='ButtonMiddle'>" + "<a href='#'>Get</a>" + "</div>"
+ + "</div>" + "</div>" + "</div>" + "</td></tr>";
+
+ }
+ if (propertyForCanvas == "") {
+ propertyForCanvas = "<tr class='EvenRow'><td colspan='3' align='center'><div class='Text'>" + new _IG_Prefs().getMsg("noProperty") + "</div></td></tr>";
+ }
+ $("#propertiesForCanvas").html(propertyForCanvas);
+};
+
+ServicesManagement.prototype.showMinimessage = function(jsonMessage) {
+ var msgObj = $("#resultMessage")[0];
+ $(msgObj).css("Visibility", "hidden");
+ $(msgObj).html("");
+
+ var parsedObj;
+ try {
+ parsedObj = gadgets.json.parse(jsonMessage);
+ } catch (e) {
+ parsedObj = jsonMessage;
+ }
+ var htmlTable = $.trim(eXo.gadget.ServicesManagement.objToTable(parsedObj));
+ if (htmlTable == "" || htmlTable == "empty object") {
+ htmlTable = "Method's executed, return no result";
+ }
+
+ var msg = new gadgets.MiniMessage("ServicesManagement", msgObj);
+ var executeMsg = msg.createDismissibleMessage(htmlTable, function() {
+ window.setTimeout(function() {gadgets.window.adjustHeight($(".UIGadget").height()); }, 500);
+ return true;
+ });
+
+ executeMsg.style.height = "100px";
+ executeMsg.style.overflow = "auto";
+ $(".mmlib_xlink").each(function() {
+ $(this.parentNode).attr("style", "vertical-align: top");
+ $(this).html("");
+ });
+ $(".mmlib_table .UIGrid").each(function() {
+ $(this.parentNode).attr("style", "vertical-align: top");
+ });
+
+ eXo.gadget.ServicesManagement.resetHeight();
+ $(msgObj).hide();
+ $(msgObj).slideDown(1200);
+ $(msgObj).css("Visibility", "visible");
+};
+
+ServicesManagement.prototype.objToTable = function(obj) {
+ var type = typeof (obj);
+ if (type != "object") {
+ return gadgets.util.escapeString(obj + "");
+ }
+
+ if (!obj || $.isEmptyObject(obj)
+ || (obj.constructor == Array && obj.length == 0)) {
+ return "empty object";
+ }
+
+ var str = "<table cellspacing='0' class='UIGrid'>";
+ if (obj.constructor == Array) {
+ for ( var i = 0; i < obj.length; i++) {
+ var rowClass = i % 2 == 0 ? "EvenRow" : "OddRow";
+ str += "<tr class='" + rowClass + "'><td><div class='Text'>";
+ str += eXo.gadget.ServicesManagement.objToTable(obj[i]);
+ str += "</div></td></tr>";
+ }
+ } else {
+ str += "<tr>";
+ for ( var prop in obj) {
+ str += "<th>";
+ str += eXo.gadget.ServicesManagement.objToTable(prop);
+ str += "</th>";
+ }
+ str += "</tr>";
+
+ str += "<tr>";
+ for ( var prop in obj) {
+ str += "<td>";
+ str += eXo.gadget.ServicesManagement.objToTable(obj[prop]);
+ str += "</td>";
+ }
+ str += "</tr>";
+ }
+
+ str += "</table>";
+ return str;
+};
+
+ServicesManagement.prototype.resetHeight = function() {
+ if ($.browser.safari) {
+ gadgets.window.adjustHeight($(".UIGadget").height());
+ } else {
+ gadgets.window.adjustHeight();
+ }
+};
+
+eXo.gadget.ServicesManagement = new ServicesManagement();
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,297 +0,0 @@
-body {
- font-family: Lucida Sans, Arial, Verdana, sans-serif;
- margin: 0px;
- font-size: 12px;
- color: #626262;
-}
-
-body, th, td, div, span, p {
- font-family: Lucida Sans,Arial,Verdana,sans-serif;
- font-size: 12px;
-}
-
-img {
- border: none;
-}
-
-a {
- text-decoration: none;
-}
-
-.ClearFix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
-}
-
-.ClearFix {
- !display: inline-block;
- !zoom: 1;
- !display: block;
-}
-
-.FL {
- float: left;
-}
-
-.FR {
- float: right;
-}
-
-/******* UIGadget ********/
-
-.UIGadget {
- font-size: 11px;
- width: 100%;
-}
-
-.TopGadget {
- padding: 10px;
-}
-
-.TopGadget table {
- width: 442px;
-}
-
-.TopGadget table td.Text {
- width: 105px;
-}
-
-.TopGadget table td.Description {
- background: #f5f5f5;
- padding: 8px;
- font-style: italic;
-}
-.TopGadget table .Description p {
- background: url(images/DesIcon.png) no-repeat left 2px;
- padding-left: 20px;
- margin: 0px;
-}
-
-.TopGadget table td {
- padding: 5px 0px;
-}
-
-.TopGadget table .Text {
- font-weight: bold;
- color: #636363;
- padding-right: 10px;
-}
-
-.TopGadget table select {
- background: #f5f5f5;
- height: 18px;
- border: 1px solid #cacaca;
- color: #6086eb;
- font-size: 13px;
- -moz-border-radius: 2px;
- width: 130px;
-}
-
-.TitleGadget {
- padding: 0px 5px;
-}
-
-.TitleGadget div {
- background: #fff;
- padding: 4px 10px 0px 10px;
- line-height: 22px;
- color: #555;
- font-weight: bold;
- margin: 0px;
- font-size: 12px;
- float: left;
- cursor: pointer;
-}
-
-.TitleGadget .TabSelected {
- background: #f5f5f5;
- color: #6086eb;
-}
-
-.GadgetGrid {
- background: #f5f5f5;
- padding: 5px 0px;
- margin: 0px 5px 5px 5px;
-}
-
-.GadgetGrid .UIGrid {
- border: 1px solid #ebebeb;
- border-collapse: collapse;
- padding-left: 1px;
- table-layout: fixed;
- width: 100%;
-}
-
-.GadgetGrid .UIGrid thead .FieldComponent {
- border-right: 1px solid #fff;
-}
-
-.GadgetGrid .UIGrid th {
- background: #efefef;
- font-weight: bold;
- line-height: 24px;
- padding: 0 10px;
- vertical-align: middle;
- text-align: left;
- border-bottom: 1px solid #fff;
- color: #777;
-}
-
-.GadgetGrid .UIGrid .FixWidth {
- width: 10%;
-}
-
-.GadgetGrid .UIGrid .EvenRow {
- background: #f8f8f8;
-}
-
-.GadgetGrid .UIGrid .OddRow {
- background: #fff;
-}
-
-.GadgetGrid .UIGrid td {
- border-left: 1px solid #ebebeb;
- border-right: 1px solid #ebebeb;
- border-top: 1px solid #ebebeb;
- line-height: 20px;
- padding: 3px 10px;
- color: #888;
-}
-
-.GadgetGrid .UIGrid .Text {
- overflow: hidden;
-}
-
-.GadgetGrid .UIGrid .SkinID {
- background: #efefef;
- padding: 0px 5px;
- -moz-border-radius: 2px 2px 2px 2px;
-}
-
-.GadgetGrid .UIGrid .SkinID input {
- height: 15px;
- border: 1px solid #cacaca;
- font-size: 10px;
- color: #848383;
-}
-
-.GadgetGrid .UIGrid .ActionContainer {
- text-align: center;
- white-space: nowrap;
-}
-
-/******* Button *******/
-
-.GadgetGrid .GadgetStyle .ButtonLeft {
- background: url("images/GadgetStyle.gif") no-repeat left top;
- padding-left: 2px;
-}
-
-.GadgetGrid .GadgetStyle .ButtonRight {
- background: url("images/GadgetStyle.gif") no-repeat right top;
- padding-right: 2px;
-}
-
-.GadgetGrid .GadgetStyle .ButtonMiddle {
- background: url("images/GadgetStyle.gif") repeat-x left -22px;
- line-height: 22px;
- padding: 0px 5px;
-}
-
-.GadgetGrid .GadgetStyle .ButtonMiddle a {
- color: #6086eb;
- font-size: 11px;
- font-weight: bold;
-}
-
-.GadgetGrid .GadgetStyle .ButtonMiddle a:hover {
- color: #626262;
-}
-
-/******* GadgetGmCanvas *******/
-
-.GadgetGrid .UIGrid .SkinID input {
- width: 125px;
-}
-
-/********* GadgetGmCanvasMessage ************/
-
-.GadgetGmCanvasMessage {
- margin-bottom: 20px;
- display: none;
-}
-
-.GadgetGmCanvasMessage .UIGrid .SkinID input {
- width: 130px;
-}
-
-.ContentSelected {
- display: block;
-}
-
-/********* BoxFile ************/
-.BoxFile {
-}
-
-.BoxFile .UIGrid {
- border: 1px solid #ebebeb;
- border-collapse: collapse;
- padding-left: 1px;
- table-layout: fixed;
- width: 100%;
-}
-
-.BoxFile .UIGrid thead .FieldComponent {
- border-right: 1px solid #fff;
-}
-
-.BoxFile .UIGrid th {
- background: #ebebeb;
- font-weight: normal;
- line-height: 20px;
- padding: 0 10px;
- vertical-align: middle;
- text-align: left;
- font-weight: bold;
- border-bottom: 1px solid #fff;
-}
-
-.BoxFile .UIGrid tbody {
- padding-bottom:1px;
-}
-
-.BoxFile .UIGrid .EvenRow {
- background: #F5F5F5;
-}
-
-.BoxFile .UIGrid .OddRow {
- background: #fff;
-}
-
-.BoxFile .UIGrid td {
- border-left: 1px solid #ebebeb;
- border-right: 1px solid #ebebeb;
- border-top: 1px solid #ebebeb;
- line-height: 16px;
- padding: 2px 10px;
-}
-
-.mmlib_xlink {
- background: url('images/IconClose_Gadget.gif') no-repeat left top;
- cursor:pointer;
- width: 14px;
- display: block;
- height: 14px;
-}
-
-.mmlib_table {
- background-color:#FFFFFF;
- border-collapse:separate;
- border-spacing:0;
- font:bold 9px arial,sans-serif;
- padding:1px 0;
- width:100%;
-}
\ No newline at end of file
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/canvas.css 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,297 @@
+body {
+ font-family: Lucida Sans, Arial, Verdana, sans-serif;
+ margin: 0px;
+ font-size: 12px;
+ color: #626262;
+}
+
+body, th, td, div, span, p {
+ font-family: Lucida Sans,Arial,Verdana,sans-serif;
+ font-size: 12px;
+}
+
+img {
+ border: none;
+}
+
+a {
+ text-decoration: none;
+}
+
+.ClearFix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.ClearFix {
+ !display: inline-block;
+ !zoom: 1;
+ !display: block;
+}
+
+.FL {
+ float: left;
+}
+
+.FR {
+ float: right;
+}
+
+/******* UIGadget ********/
+
+.UIGadget {
+ font-size: 11px;
+ width: 100%;
+}
+
+.TopGadget {
+ padding: 10px;
+}
+
+.TopGadget table {
+ width: 442px;
+}
+
+.TopGadget table td.Text {
+ width: 105px;
+}
+
+.TopGadget table td.Description {
+ background: #f5f5f5;
+ padding: 8px;
+ font-style: italic;
+}
+.TopGadget table .Description p {
+ background: url(images/DesIcon.png) no-repeat left 2px;
+ padding-left: 20px;
+ margin: 0px;
+}
+
+.TopGadget table td {
+ padding: 5px 0px;
+}
+
+.TopGadget table .Text {
+ font-weight: bold;
+ color: #636363;
+ padding-right: 10px;
+}
+
+.TopGadget table select {
+ background: #f5f5f5;
+ height: 18px;
+ border: 1px solid #cacaca;
+ color: #6086eb;
+ font-size: 13px;
+ -moz-border-radius: 2px;
+ width: 130px;
+}
+
+.TitleGadget {
+ padding: 0px 5px;
+}
+
+.TitleGadget div {
+ background: #fff;
+ padding: 4px 10px 0px 10px;
+ line-height: 22px;
+ color: #555;
+ font-weight: bold;
+ margin: 0px;
+ font-size: 12px;
+ float: left;
+ cursor: pointer;
+}
+
+.TitleGadget .TabSelected {
+ background: #f5f5f5;
+ color: #6086eb;
+}
+
+.GadgetGrid {
+ background: #f5f5f5;
+ padding: 5px 0px;
+ margin: 0px 5px 5px 5px;
+}
+
+.GadgetGrid .UIGrid {
+ border: 1px solid #ebebeb;
+ border-collapse: collapse;
+ padding-left: 1px;
+ table-layout: fixed;
+ width: 100%;
+}
+
+.GadgetGrid .UIGrid thead .FieldComponent {
+ border-right: 1px solid #fff;
+}
+
+.GadgetGrid .UIGrid th {
+ background: #efefef;
+ font-weight: bold;
+ line-height: 24px;
+ padding: 0 10px;
+ vertical-align: middle;
+ text-align: left;
+ border-bottom: 1px solid #fff;
+ color: #777;
+}
+
+.GadgetGrid .UIGrid .FixWidth {
+ width: 10%;
+}
+
+.GadgetGrid .UIGrid .EvenRow {
+ background: #f8f8f8;
+}
+
+.GadgetGrid .UIGrid .OddRow {
+ background: #fff;
+}
+
+.GadgetGrid .UIGrid td {
+ border-left: 1px solid #ebebeb;
+ border-right: 1px solid #ebebeb;
+ border-top: 1px solid #ebebeb;
+ line-height: 20px;
+ padding: 3px 10px;
+ color: #888;
+}
+
+.GadgetGrid .UIGrid .Text {
+ overflow: hidden;
+}
+
+.GadgetGrid .UIGrid .SkinID {
+ background: #efefef;
+ padding: 0px 5px;
+ -moz-border-radius: 2px 2px 2px 2px;
+}
+
+.GadgetGrid .UIGrid .SkinID input {
+ height: 15px;
+ border: 1px solid #cacaca;
+ font-size: 10px;
+ color: #848383;
+}
+
+.GadgetGrid .UIGrid .ActionContainer {
+ text-align: center;
+ white-space: nowrap;
+}
+
+/******* Button *******/
+
+.GadgetGrid .GadgetStyle .ButtonLeft {
+ background: url("images/GadgetStyle.gif") no-repeat left top;
+ padding-left: 2px;
+}
+
+.GadgetGrid .GadgetStyle .ButtonRight {
+ background: url("images/GadgetStyle.gif") no-repeat right top;
+ padding-right: 2px;
+}
+
+.GadgetGrid .GadgetStyle .ButtonMiddle {
+ background: url("images/GadgetStyle.gif") repeat-x left -22px;
+ line-height: 22px;
+ padding: 0px 5px;
+}
+
+.GadgetGrid .GadgetStyle .ButtonMiddle a {
+ color: #6086eb;
+ font-size: 11px;
+ font-weight: bold;
+}
+
+.GadgetGrid .GadgetStyle .ButtonMiddle a:hover {
+ color: #626262;
+}
+
+/******* GadgetGmCanvas *******/
+
+.GadgetGrid .UIGrid .SkinID input {
+ width: 125px;
+}
+
+/********* GadgetGmCanvasMessage ************/
+
+.GadgetGmCanvasMessage {
+ margin-bottom: 20px;
+ display: none;
+}
+
+.GadgetGmCanvasMessage .UIGrid .SkinID input {
+ width: 130px;
+}
+
+.ContentSelected {
+ display: block;
+}
+
+/********* BoxFile ************/
+.BoxFile {
+}
+
+.BoxFile .UIGrid {
+ border: 1px solid #ebebeb;
+ border-collapse: collapse;
+ padding-left: 1px;
+ table-layout: fixed;
+ width: 100%;
+}
+
+.BoxFile .UIGrid thead .FieldComponent {
+ border-right: 1px solid #fff;
+}
+
+.BoxFile .UIGrid th {
+ background: #ebebeb;
+ font-weight: normal;
+ line-height: 20px;
+ padding: 0 10px;
+ vertical-align: middle;
+ text-align: left;
+ font-weight: bold;
+ border-bottom: 1px solid #fff;
+}
+
+.BoxFile .UIGrid tbody {
+ padding-bottom:1px;
+}
+
+.BoxFile .UIGrid .EvenRow {
+ background: #F5F5F5;
+}
+
+.BoxFile .UIGrid .OddRow {
+ background: #fff;
+}
+
+.BoxFile .UIGrid td {
+ border-left: 1px solid #ebebeb;
+ border-right: 1px solid #ebebeb;
+ border-top: 1px solid #ebebeb;
+ line-height: 16px;
+ padding: 2px 10px;
+}
+
+.mmlib_xlink {
+ background: url('images/IconClose_Gadget.gif') no-repeat left top;
+ cursor:pointer;
+ width: 14px;
+ display: block;
+ height: 14px;
+}
+
+.mmlib_table {
+ background-color:#FFFFFF;
+ border-collapse:separate;
+ border-spacing:0;
+ font:bold 9px arial,sans-serif;
+ padding:1px 0;
+ width:100%;
+}
\ No newline at end of file
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css
===================================================================
--- portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css 2011-07-12 08:18:58 UTC (rev 6860)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css 2011-09-14 09:18:12 UTC (rev 7410)
@@ -1,204 +0,0 @@
-body {
- font-family: Lucida Sans, Arial, Verdana, sans-serif;
- margin: 0px;
- color: #626262;
-}
-
-body, th, td, div, span, p {
- font-family: Lucida Sans,Arial,Verdana,sans-serif;
- font-size: 11px;
-}
-
-img {
- border: none;
-}
-
-a {
- text-decoration: none;
-}
-
-.ClearFix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
-}
-
-.ClearFix {
- !display: inline-block;
- !zoom: 1;
- !display: block;
-}
-
-.FL {
- float: left;
-}
-
-.FR {
- float: right;
-}
-
-/******* UIGadget ********/
-.UIGadget {
- width: 100%;
-}
-
-.Note {
- background: #fff5f5;
- color: #f43f3f;
- padding: 7px 5px;
- text-align: center;
- font-weight: bold;
- font-size: 10px;
-}
-
-.TopGadget {
- padding: 10px 0px;
- text-align: center;
-}
-
-.TopGadget .ServicesBox {
- width: 220px;
- margin: 0px auto;
-}
-
-.TopGadget p {
- margin: 0px;
- font-style: italic;
- text-align: left;
- padding: 5px 10px;
- line-height: 14px;
- background: #f5f5f5;
- color: #777;
-}
-
-.TopGadget .Text {
- font-weight: bold;
- color: #636363;
- float: left;
- line-height: 20px;
- font-size: 12px;
-}
-
-.TopGadget select {
- background: #f9f9f9;
- height: 18px;
- border: 1px solid #cacaca;
- color: #6086eb;
- font-size: 12px;
- -moz-border-radius: 2px;
- width: 110px;
- float: left;
- margin: 0px 5px 0px 10px;
-}
-
-.TopGadget .DesIconHome {
- background: url(images/DesIconHome.gif) no-repeat left top;
- width: 22px;
- height: 22px;
- display: block;
- float: left;
- cursor: pointer;
-}
-
-.DescriptionBox {
- display: none;
-}
-
-.TitleGrid .BgTitle {
- background: #f5f5f5;
- padding: 5px 10px 0px 10px;
- float: left;
-}
-
-.TitleGrid h3 {
- font-weight: bold;
- color: #555;
- float: left;
- line-height: 20px;
- padding-right: 10px;
- margin: 0px;
- font-size: 11px;
-}
-
-.TitleGrid select {
- background: #f9f9f9;
- height: 18px;
- border: 1px solid #cacaca;
- color: #6086eb;
- font-size: 12px;
- -moz-border-radius: 2px;
- width: 110px;
- float: left;
-}
-
-.GadgetGrid {
- background: #f5f5f5;
- padding: 4px 0px;
- margin-bottom: 10px;
-}
-
-.GadgetGrid .UIGrid {
- border: 1px solid #ebebeb;
- border-collapse: collapse;
- padding-left: 1px;
- table-layout: fixed;
- width: 100%;
-}
-
-.GadgetGrid .UIGrid thead .FieldComponent {
- border-right: 1px solid #fff;
- width: 30%;
-}
-
-.GadgetGrid .UIGrid th {
- background: #efefef;
- line-height: 24px;
- padding: 0 10px;
- vertical-align: middle;
- text-align: left;
- border-bottom: 1px solid #fff;
- color: #777;
- font-weight: bold;
-}
-
-.GadgetGrid .UIGrid .EvenRow {
- background: #f8f8f8;
-}
-
-.GadgetGrid .UIGrid .OddRow {
- background: #fff;
-}
-
-.GadgetGrid .UIGrid td {
- border-left: 1px solid #ebebeb;
- border-right: 1px solid #ebebeb;
- border-top: 1px solid #ebebeb;
- line-height: 20px;
- padding: 4px 10px;
- color: #888888;
-}
-
-.GadgetGrid .UIGrid .Text {
- overflow: hidden;
-}
-
-.GadgetGrid .UIGrid .SkinID {
- background: #efefef;
- padding: 0px 5px;
- -moz-border-radius: 2px 2px 2px 2px;
-}
-
-.GadgetGrid .UIGrid .SkinID input {
- height: 12px;
- border: 1px solid #cacaca;
- width: 80px;
- font-size: 10px;
- color: #848383;
-}
-
-.GadgetGrid .UIGrid .ActionContainer {
- text-align: center;
- white-space: nowrap;
-}
\ No newline at end of file
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/home.css 2011-09-14 09:18:12 UTC (rev 7410)
@@ -0,0 +1,204 @@
+body {
+ font-family: Lucida Sans, Arial, Verdana, sans-serif;
+ margin: 0px;
+ color: #626262;
+}
+
+body, th, td, div, span, p {
+ font-family: Lucida Sans,Arial,Verdana,sans-serif;
+ font-size: 11px;
+}
+
+img {
+ border: none;
+}
+
+a {
+ text-decoration: none;
+}
+
+.ClearFix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.ClearFix {
+ !display: inline-block;
+ !zoom: 1;
+ !display: block;
+}
+
+.FL {
+ float: left;
+}
+
+.FR {
+ float: right;
+}
+
+/******* UIGadget ********/
+.UIGadget {
+ width: 100%;
+}
+
+.Note {
+ background: #fff5f5;
+ color: #f43f3f;
+ padding: 7px 5px;
+ text-align: center;
+ font-weight: bold;
+ font-size: 10px;
+}
+
+.TopGadget {
+ padding: 10px 0px;
+ text-align: center;
+}
+
+.TopGadget .ServicesBox {
+ width: 220px;
+ margin: 0px auto;
+}
+
+.TopGadget p {
+ margin: 0px;
+ font-style: italic;
+ text-align: left;
+ padding: 5px 10px;
+ line-height: 14px;
+ background: #f5f5f5;
+ color: #777;
+}
+
+.TopGadget .Text {
+ font-weight: bold;
+ color: #636363;
+ float: left;
+ line-height: 20px;
+ font-size: 12px;
+}
+
+.TopGadget select {
+ background: #f9f9f9;
+ height: 18px;
+ border: 1px solid #cacaca;
+ color: #6086eb;
+ font-size: 12px;
+ -moz-border-radius: 2px;
+ width: 110px;
+ float: left;
+ margin: 0px 5px 0px 10px;
+}
+
+.TopGadget .DesIconHome {
+ background: url(images/DesIconHome.gif) no-repeat left top;
+ width: 22px;
+ height: 22px;
+ display: block;
+ float: left;
+ cursor: pointer;
+}
+
+.DescriptionBox {
+ display: none;
+}
+
+.TitleGrid .BgTitle {
+ background: #f5f5f5;
+ padding: 5px 10px 0px 10px;
+ float: left;
+}
+
+.TitleGrid h3 {
+ font-weight: bold;
+ color: #555;
+ float: left;
+ line-height: 20px;
+ padding-right: 10px;
+ margin: 0px;
+ font-size: 11px;
+}
+
+.TitleGrid select {
+ background: #f9f9f9;
+ height: 18px;
+ border: 1px solid #cacaca;
+ color: #6086eb;
+ font-size: 12px;
+ -moz-border-radius: 2px;
+ width: 110px;
+ float: left;
+}
+
+.GadgetGrid {
+ background: #f5f5f5;
+ padding: 4px 0px;
+ margin-bottom: 10px;
+}
+
+.GadgetGrid .UIGrid {
+ border: 1px solid #ebebeb;
+ border-collapse: collapse;
+ padding-left: 1px;
+ table-layout: fixed;
+ width: 100%;
+}
+
+.GadgetGrid .UIGrid thead .FieldComponent {
+ border-right: 1px solid #fff;
+ width: 30%;
+}
+
+.GadgetGrid .UIGrid th {
+ background: #efefef;
+ line-height: 24px;
+ padding: 0 10px;
+ vertical-align: middle;
+ text-align: left;
+ border-bottom: 1px solid #fff;
+ color: #777;
+ font-weight: bold;
+}
+
+.GadgetGrid .UIGrid .EvenRow {
+ background: #f8f8f8;
+}
+
+.GadgetGrid .UIGrid .OddRow {
+ background: #fff;
+}
+
+.GadgetGrid .UIGrid td {
+ border-left: 1px solid #ebebeb;
+ border-right: 1px solid #ebebeb;
+ border-top: 1px solid #ebebeb;
+ line-height: 20px;
+ padding: 4px 10px;
+ color: #888888;
+}
+
+.GadgetGrid .UIGrid .Text {
+ overflow: hidden;
+}
+
+.GadgetGrid .UIGrid .SkinID {
+ background: #efefef;
+ padding: 0px 5px;
+ -moz-border-radius: 2px 2px 2px 2px;
+}
+
+.GadgetGrid .UIGrid .SkinID input {
+ height: 12px;
+ border: 1px solid #cacaca;
+ width: 80px;
+ font-size: 10px;
+ color: #848383;
+}
+
+.GadgetGrid .UIGrid .ActionContainer {
+ text-align: center;
+ white-space: nowrap;
+}
\ No newline at end of file
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIcon.png
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIcon.png (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIcon.png)
===================================================================
(Binary files differ)
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIconHome.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIconHome.gif (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/DesIconHome.gif)
===================================================================
(Binary files differ)
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/GadgetStyle.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/GadgetStyle.gif (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/GadgetStyle.gif)
===================================================================
(Binary files differ)
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/IconClose_Gadget.gif
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/IconClose_Gadget.gif (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/IconClose_Gadget.gif)
===================================================================
(Binary files differ)
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/ServicesManagement.png
===================================================================
(Binary files differ)
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/ServicesManagement.png (from rev 6860, portal/trunk/gadgets/eXoGadgets/src/main/webapp/gadgets/ServicesManagement/style/images/ServicesManagement.png)
===================================================================
(Binary files differ)
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/navigation.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/navigation.xml 2011-09-14 09:14:27 UTC (rev 7409)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/navigation.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -51,6 +51,13 @@
<label>Site Export/Import</label>
<page-reference>group::/platform/administrators::siteExportImport</page-reference>
</node>
+
+ <node>
+ <uri>administration/servicesManagement</uri>
+ <name>servicesManagement</name>
+ <label>Services Management</label>
+ <page-reference>group::/platform/administrators::servicesManagement</page-reference>
+ </node>
</node>
</page-nodes>
</node-navigation>
Modified: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/pages.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/pages.xml 2011-09-14 09:14:27 UTC (rev 7409)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/WEB-INF/conf/portal/group/platform/administrators/pages.xml 2011-09-14 09:18:12 UTC (rev 7410)
@@ -103,4 +103,19 @@
<show-info-bar>false</show-info-bar>
</gadget-application>
</page>
+
+ <page>
+ <name>servicesManagement</name>
+ <title>Services Management</title>
+ <access-permissions>manager:/platform/administrators</access-permissions>
+ <edit-permission>manager:/platform/administrators</edit-permission>
+ <gadget-application>
+ <gadget>
+ <gadget-ref>ServicesManagement</gadget-ref>
+ </gadget>
+ <title>Services Management</title>
+ <access-permissions>manager:/platform/administrators</access-permissions>
+ <show-info-bar>false</show-info-bar>
+ </gadget-application>
+ </page>
</page-set>
13 years, 4 months
gatein SVN: r7409 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal.
by do-not-reply@jboss.org
Author: hoang_to
Date: 2011-09-14 05:14:27 -0400 (Wed, 14 Sep 2011)
New Revision: 7409
Modified:
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java
Log:
GTNPORTAL-2079: Show exception when switch view mode during layout edition
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java 2011-09-14 08:56:45 UTC (rev 7408)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortal.java 2011-09-14 09:14:27 UTC (rev 7409)
@@ -27,8 +27,6 @@
import org.exoplatform.portal.mop.SiteType;
import org.exoplatform.portal.mop.user.UserNavigation;
import org.exoplatform.portal.mop.user.UserNode;
-import org.exoplatform.web.url.navigation.NodeURL;
-import org.exoplatform.web.url.navigation.NavigationResource;
import org.exoplatform.portal.webui.application.UIPortlet;
import org.exoplatform.portal.webui.container.UIContainer;
import org.exoplatform.portal.webui.page.UIPage;
@@ -50,16 +48,16 @@
import org.exoplatform.web.login.LogoutControl;
import org.exoplatform.web.security.security.AbstractTokenService;
import org.exoplatform.web.security.security.CookieTokenService;
+import org.exoplatform.web.url.navigation.NavigationResource;
+import org.exoplatform.web.url.navigation.NodeURL;
import org.exoplatform.webui.application.WebuiRequestContext;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.config.annotation.EventConfig;
import org.exoplatform.webui.core.UIComponent;
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
-
import java.util.HashMap;
import java.util.Map;
-
import javax.portlet.WindowState;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -214,8 +212,8 @@
public UserNavigation getUserNavigation() throws Exception
{
- UIPortalApplication uiPortalApp = getAncestorOfType(UIPortalApplication.class);
- return uiPortalApp.getUserPortalConfig().getUserPortal().getNavigation(siteKey);
+ PortalRequestContext prc = Util.getPortalRequestContext();
+ return prc.getUserPortalConfig().getUserPortal().getNavigation(siteKey);
}
/**
13 years, 4 months
gatein SVN: r7408 - epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 04:56:45 -0400 (Wed, 14 Sep 2011)
New Revision: 7408
Removed:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ShindigClientEndpoint.java
Log:
Missing parts when porting to EPP
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ShindigClientEndpoint.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ShindigClientEndpoint.java 2011-09-14 08:49:35 UTC (rev 7407)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ShindigClientEndpoint.java 2011-09-14 08:56:45 UTC (rev 7408)
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2011 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.exoplatform.portal.gadget.core;
-
-import org.exoplatform.container.xml.InitParams;
-import org.exoplatform.container.xml.ValueParam;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Timer;
-import java.util.TimerTask;
-
-/**
- * An endpoint to send requests to Shindig from Portal.
- *
- * This endpoint is necessary as Shindig does not expose any public API to manipulates
- * its caches from Portal.
- *
- * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
- * @date 8/15/11
- */
-public class ShindigClientEndpoint
-{
-
- private final long delay;
-
- private final Timer timer;
-
- public ShindigClientEndpoint(InitParams params) throws Exception
- {
- long delayTime = 1000;
- if(params != null)
- {
- ValueParam delayParam = params.getValueParam("delayTime");
- delayTime = Long.parseLong(delayParam.getValue());
- }
- delay = delayTime;
- timer = new Timer(true);
- }
-
- /**
- * Etablish URLConnection to shindigURL and post request data to it
- *
- * @param requestData
- * @param shindigURL
- */
- public void sendRequest(String requestData, String shindigURL)
- {
- timer.schedule(createTimerTask(requestData, shindigURL), delay);
- }
-
- private TimerTask createTimerTask(final String requestData, final String shindigURL)
- {
- return new TimerTask()
- {
- @Override
- public void run()
- {
- OutputStreamWriter out = null;
- InputStream in = null;
-
- try
- {
- URLConnection conn = new URL(shindigURL).openConnection();
- conn.setDoOutput(true);
- out = new OutputStreamWriter(conn.getOutputStream());
- out.write(requestData);
- out.flush();
-
- in = conn.getInputStream(); //Don't remove this if you don't understand!
- }
- catch (IOException ioEx)
- {
- ioEx.printStackTrace();
-
- }
- finally
- {
- try
- {
- if (out != null)
- out.close();
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
-
- try
- {
- if (in != null)
- in.close();
- }
- catch (IOException ex)
- {
- ex.printStackTrace();
- }
- }
-
- }
- };
- }
-
-}
13 years, 4 months
gatein SVN: r7407 - epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 04:49:35 -0400 (Wed, 14 Sep 2011)
New Revision: 7407
Modified:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java
Log:
Missing parts when porting to EPP
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java 2011-09-14 08:44:23 UTC (rev 7406)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java 2011-09-14 08:49:35 UTC (rev 7407)
@@ -41,12 +41,7 @@
}
InputStream is = scontext.getResourceAsStream(path);
-
- if(is == null)
- {
- throw new NullPointerException("There is no file specified by path : " + path);
- }
- return IOUtils.toString(is, encoding);
+ return (is != null) ? IOUtils.toString(is, encoding) : null;
}
};
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java 2011-09-14 08:44:23 UTC (rev 7406)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java 2011-09-14 08:49:35 UTC (rev 7407)
@@ -239,12 +239,16 @@
try {
for (String entry : files) {
LOG.info("Reading container config: " + entry);
- //final ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
- //InputStream resourceInputStream = contextCl.getResourceAsStream(entry);
- //String content = IOUtils.toString(resourceInputStream, "UTF-8");
-
GateInContainerConfigLoader currentLoader = GateInGuiceServletContextListener.getCurrentLoader();
String content = currentLoader.loadContentAsString(entry, "UTF-8");
+
+ if(content == null) {
+ LOG.warning("There is no configuration file " + entry + " in Gadget Server context");
+ content = ResourceLoader.getContent(entry);
+ if (content == null || content.length() == 0) {
+ throw new IOException("The file " + entry + " is empty");
+ }
+ }
loadFromString(content, all);
}
} catch (IOException e) {
13 years, 4 months
gatein SVN: r7406 - epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 04:44:23 -0400 (Wed, 14 Sep 2011)
New Revision: 7406
Modified:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java
Log:
JBEPP-1169: Move Apache Shindig JS configuration out of a jar
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java 2011-09-14 08:37:46 UTC (rev 7405)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java 2011-09-14 08:44:23 UTC (rev 7406)
@@ -32,6 +32,14 @@
@Override
public String loadContentAsString(String path, String encoding) throws IOException{
+ //To make sure that the path begins with a slash, as required in the javadoc of method
+ // getResourceAsStream in ServletContext
+ //The leading slash is required on certain application servers such as JBoss, WebSphere
+ if('/' != path.charAt(0))
+ {
+ path = '/' + path;
+ }
+
InputStream is = scontext.getResourceAsStream(path);
if(is == null)
13 years, 4 months
gatein SVN: r7405 - in epp/portal/branches/EPP_5_2_Branch/gadgets: core/src/main/java/org/exoplatform/portal/gadget/core and 7 other directories.
by do-not-reply@jboss.org
Author: theute
Date: 2011-09-14 04:37:46 -0400 (Wed, 14 Sep 2011)
New Revision: 7405
Added:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInContainerConfigLoader.java
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js
Removed:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/containers/default/container.js
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js
Modified:
epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java
epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml
Log:
JBEPP-1169: Move Apache Shindig JS configuration out of a jar
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/containers/default/container.js
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/containers/default/container.js 2011-09-14 08:05:34 UTC (rev 7404)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/containers/default/container.js 2011-09-14 08:37:46 UTC (rev 7405)
@@ -1,275 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Default container configuration. To change the configuration, you have two options:
-//
-// A. If you run the Java server: Create your own "myContainer.js" file and
-// modify the value in web.xml.
-//
-// B. If you run the PHP server: Create a myContainer.js, copy the contents of container.js to it,
-// change
-// {"gadgets.container" : ["default"],
-// to
-// {"gadgets.container" : ["myContainer"],
-// And make your changes that you need to myContainer.js.
-// Just make sure on the iframe URL you specify &container=myContainer
-// for it to use that config.
-//
-// All configurations will automatically inherit values from this
-// config, so you only need to provide configuration for items
-// that you require explicit special casing for.
-//
-// Please namespace your attributes using the same conventions
-// as you would for javascript objects, e.g. gadgets.features
-// rather than "features".
-
-// NOTE: Please _don't_ leave trailing commas because the php json parser
-// errors out on this.
-
-// Container must be an array; this allows multiple containers
-// to share configuration.
-// TODO: Move out accel container config into a separate accel.js file.
-// TODO : remove "" container
-{"gadgets.container" : ["default", "accel", ""],
-
-// Set of regular expressions to validate the parent parameter. This is
-// necessary to support situations where you want a single container to support
-// multiple possible host names (such as for localized domains, such as
-// <language>.example.org. If left as null, the parent parameter will be
-// ignored; otherwise, any requests that do not include a parent
-// value matching this set will return a 404 error.
-"gadgets.parent" : null,
-
-// Should all gadgets be forced on to a locked domain?
-"gadgets.lockedDomainRequired" : false,
-
-// DNS domain on which gadgets should render.
-"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
-// Origins for CORS requests and/or Referer validation
-// Indicate a set of origins or an entry with * to indicate that all origins are allowed
-"gadgets.parentOrigins" : ["*"],
-
-// Various urls generated throughout the code base.
-// iframeBaseUri will automatically have the host inserted
-// if locked domain is enabled and the implementation supports it.
-// query parameters will be added.
-"gadgets.iframeBaseUri" : "/eXoGadgetServer/gadgets/ifr",
-"gadgets.uri.iframe.basePath" : "/eXoGadgetServer/gadgets/ifr",
-
-// jsUriTemplate will have %host% and %js% substituted.
-// No locked domain special cases, but jsUriTemplate must
-// never conflict with a lockedDomainSuffix.
-"gadgets.jsUriTemplate" : "http://%host%/eXoGadgetServer/gadgets/js/%js%",
-
-//New configuration for iframeUri generation:
-"gadgets.uri.iframe.lockedDomainSuffix" : "-a.example.com:8080",
-"gadgets.uri.iframe.unlockedDomain" : "http://%host%",
-"gadgets.uri.iframe.basePath" : "/eXoGadgetServer/gadgets/ifr",
-// Callback URL. Scheme relative URL for easy switch between https/http.
-"gadgets.uri.oauth.callbackTemplate" : "//%host%/eXoGadgetServer/gadgets/oauthcallback",
-
-// Use an insecure security token by default
-"gadgets.securityTokenType" : "secure",
-"gadgets.securityTokenKeyFile" : "key.txt",
-
-// Config param to load Opensocial data for social
-// preloads in data pipelining. %host% will be
-// substituted with the current host.
-"gadgets.osDataUri" : "http://%host%/rpc",
-"gadgets.signingKeyFile" : "oauthkey.pem",
-"gadgets.signingKeyName" : "mytestkey",
-
-"gadgets.signedFetchDomain" : "eXo",
-
-"gadgets.content-rewrite" : {
- "include-urls": ".*",
- "exclude-urls": "",
- "include-tags": ["link", "script", "embed", "img", "style"],
- "expires": "86400",
- "proxy-url": "/eXoGadgetServer/gadgets/proxy?url=",
- "concat-url": "/eXoGadgetServer/gadgets/concat?"
-},
-// Default Js Uri config: also must be overridden.
-"gadgets.uri.js.host" : "http://%host%/",
-"gadgets.uri.js.path" : "/eXoGadgetServer/gadgets/js",
-
-// Default concat Uri config; used for testing.
-"gadgets.uri.concat.host" : "%host%",
-"gadgets.uri.concat.path" : "/eXoGadgetServer/gadgets/concat",
-"gadgets.uri.concat.js.splitToken" : "false",
-
-// Default proxy Uri config; used for testing.
-"gadgets.uri.proxy.host" : "%host%",
-"gadgets.uri.proxy.path" : "/eXoGadgetServer/gadgets/proxy",
-
-// This config data will be passed down to javascript. Please
-// configure your object using the feature name rather than
-// the javascript name.
-
-// Only configuration for required features will be used.
-// See individual feature.xml files for configuration details.
-"gadgets.features" : {
- "core.io" : {
- // Note: /proxy is an open proxy. Be careful how you expose this!
- "proxyUrl" : "//%host%/eXoGadgetServer/gadgets/proxy?container=default&refresh=%refresh%&url=%url%%rewriteMime%",
- "jsonProxyUrl" : "//%host%/eXoGadgetServer/gadgets/makeRequest"
- },
- "views" : {
- "home" : {
- "isOnlyVisible" : false,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/home?{var}",
- "aliases": ["DASHBOARD", "default"]
- },
- "canvas" : {
- "isOnlyVisible" : true,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/canvas?{var}",
- "aliases" : ["FULL_PAGE"]
- }
- },
- "tabs": {
- "css" : [
- ".tablib_table {",
- "width: 100%;",
- "border-collapse: separate;",
- "border-spacing: 0px;",
- "empty-cells: show;",
- "font-size: 11px;",
- "text-align: center;",
- "}",
- ".tablib_emptyTab {",
- "border-bottom: 1px solid #676767;",
- "padding: 0px 1px;",
- "}",
- ".tablib_spacerTab {",
- "border-bottom: 1px solid #676767;",
- "padding: 0px 1px;",
- "width: 1px;",
- "}",
- ".tablib_selected {",
- "padding: 2px;",
- "background-color: #ffffff;",
- "border: 1px solid #676767;",
- "border-bottom-width: 0px;",
- "color: #3366cc;",
- "font-weight: bold;",
- "width: 80px;",
- "cursor: default;",
- "}",
- ".tablib_unselected {",
- "padding: 2px;",
- "background-color: #dddddd;",
- "border: 1px solid #aaaaaa;",
- "border-bottom-color: #676767;",
- "color: #000000;",
- "width: 80px;",
- "cursor: pointer;",
- "}",
- ".tablib_navContainer {",
- "width: 10px;",
- "vertical-align: middle;",
- "}",
- ".tablib_navContainer a:link, ",
- ".tablib_navContainer a:visited, ",
- ".tablib_navContainer a:hover {",
- "color: #3366aa;",
- "text-decoration: none;",
- "}"
- ]
- },
- "minimessage": {
- "css": [
- ".mmlib_table {",
- "width: 100%;",
- "font: bold 9px arial,sans-serif;",
- "background-color: #fff4c2;",
- "border-collapse: separate;",
- "border-spacing: 0px;",
- "padding: 1px 0px;",
- "}",
- ".mmlib_xlink {",
- "font: normal 1.1em arial,sans-serif;",
- "font-weight: bold;",
- "color: #0000cc;",
- "cursor: pointer;",
- "}"
- ]
- },
- "rpc" : {
- // Path to the relay file. Automatically appended to the parent
- /// parameter if it passes input validation and is not null.
- // This should never be on the same host in a production environment!
- // Only use this for TESTING!
- "parentRelayUrl" : "/eXoGadgetServer/gadgets/files/container/rpc_relay.html",
-
- // If true, this will use the legacy ifpc wire format when making rpc
- // requests.
- "useLegacyProtocol" : false
- },
- // Skin defaults
- "skins" : {
- "properties" : {
- "BG_COLOR": "",
- "BG_IMAGE": "",
- "BG_POSITION": "",
- "BG_REPEAT": "",
- "FONT_COLOR": "",
- "ANCHOR_COLOR": ""
- }
- },
- "opensocial" : {
- // Path to fetch opensocial data from
- // Must be on the same domain as the gadget rendering server
- "path" : "http://%host%/rpc",
- // Path to issue invalidate calls
- "invalidatePath" : "http://%host%/rpc",
- "domain" : "shindig",
- "enableCaja" : false,
- "supportedFields" : {
- "person" : ["id", {"name" : ["familyName", "givenName", "unstructured"]}, "thumbnailUrl", "profileUrl"],
- "activity" : ["appId", "body", "bodyId", "externalId", "id", "mediaItems", "postedTime", "priority",
- "streamFaviconUrl", "streamSourceUrl", "streamTitle", "streamUrl", "templateParams", "title",
- "url", "userId"],
- "activityEntry" : ["icon", "postedTime", "actor", "verb", "object", "target", "generator", "provider", "title",
- "body", "standardLinks", "to", "cc", "bcc"],
- "album" : ["id", "thumbnailUrl", "title", "description", "location", "ownerId"],
- "mediaItem" : ["album_id", "created", "description", "duration", "file_size", "id", "language", "last_updated",
- "location", "mime_type", "num_comments", "num_views", "num_votes", "rating", "start_time",
- "tagged_people", "tags", "thumbnail_url", "title", "type", "url"]
- }
- },
- "osapi.services" : {
- // Specifying a binding to "container.listMethods" instructs osapi to dynamicaly introspect the services
- // provided by the container and delay the gadget onLoad handler until that introspection is
- // complete.
- // Alternatively a container can directly configure services here rather than having them
- // introspected. Simply list out the available servies and omit "container.listMethods" to
- // avoid the initialization delay caused by gadgets.rpc
- // E.g. "gadgets.rpc" : ["activities.requestCreate", "messages.requestSend", "requestShareApp", "requestPermission"]
- "gadgets.rpc" : ["container.listMethods"]
- },
- "osapi" : {
- // The endpoints to query for available JSONRPC/REST services
- "endPoints" : [ "http://%host%/rpc" ]
- },
- "osml": {
- // OSML library resource. Can be set to null or the empty string to disable OSML
- // for a container.
- "library": "config/OSML_library.xml"
- }
-}}
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java 2011-09-14 08:05:34 UTC (rev 7404)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/ExoContainerConfig.java 2011-09-14 08:37:46 UTC (rev 7405)
@@ -27,7 +27,6 @@
import org.apache.shindig.auth.BlobCrypterSecurityTokenCodec;
import org.apache.shindig.config.ContainerConfigException;
-import org.apache.shindig.config.JsonContainerConfig;
import org.apache.shindig.expressions.Expressions;
import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.commons.utils.Safe;
@@ -63,7 +62,7 @@
@Singleton
public class
- ExoContainerConfig extends JsonContainerConfig
+ ExoContainerConfig extends GateInJsonContainerConfig
{
/** . */
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInContainerConfigLoader.java (from rev 5761, portal/branches/branch-GTNPORTAL-1745/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInContainerConfigLoader.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInContainerConfigLoader.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInContainerConfigLoader.java 2011-09-14 08:37:46 UTC (rev 7405)
@@ -0,0 +1,18 @@
+package org.exoplatform.portal.gadget.core;
+
+import javax.servlet.ServletContext;
+import java.io.IOException;
+
+/**
+ * A generic loader, used to load gadget server configuration files. We abuse the ThreadLocal here, as there is no way
+ * to associate Guice components with Kernel 's configuration loader component (ConfigurationManager)
+ *
+ * User: Minh Hoang TO - hoang281283(a)gmail.com
+ * Date: 1/12/11
+ * Time: 3:31 PM
+ */
+public abstract class GateInContainerConfigLoader {
+
+ public abstract String loadContentAsString(String path, String encoding) throws IOException;
+
+}
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java (from rev 5761, portal/branches/branch-GTNPORTAL-1745/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInGuiceServletContextListener.java 2011-09-14 08:37:46 UTC (rev 7405)
@@ -0,0 +1,69 @@
+package org.exoplatform.portal.gadget.core;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.shindig.common.servlet.GuiceServletContextListener;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ *
+ * Extending the GuiceServletContextListener to setup a ThreadLocal<GateInContainerConfigLoader> variable wrapping
+ * the ServletContext. That makes the ServletContext accessible within the scope of thread executing the method
+ * contextInitialized
+ *
+ *
+ * User: Minh Hoang TO - hoang281283(a)gmail.com
+ * Date: 1/12/11
+ * Time: 3:50 PM
+ */
+public class GateInGuiceServletContextListener extends GuiceServletContextListener {
+
+ private static ThreadLocal<GateInContainerConfigLoader> currentLoader = new ThreadLocal<GateInContainerConfigLoader>();
+
+ @Override
+ public void contextInitialized(ServletContextEvent event) {
+
+ final ServletContext scontext = event.getServletContext();
+
+ GateInContainerConfigLoader loader = new GateInContainerConfigLoader() {
+ @Override
+ public String loadContentAsString(String path, String encoding) throws IOException{
+
+ InputStream is = scontext.getResourceAsStream(path);
+
+ if(is == null)
+ {
+ throw new NullPointerException("There is no file specified by path : " + path);
+ }
+ return IOUtils.toString(is, encoding);
+ }
+ };
+
+ //Setup the threadlocal loader
+ currentLoader.set(loader);
+
+ try
+ {
+ //Setup the Guice objects, the threadlocal loader is accessible for the moment
+ super.contextInitialized(event);
+ }
+ catch(Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ finally
+ {
+ //Reset the threadlocal loader to null
+ currentLoader.set(null);
+ }
+
+ }
+
+ public static GateInContainerConfigLoader getCurrentLoader()
+ {
+ return currentLoader.get();
+ }
+}
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java (from rev 5715, portal/branches/branch-GTNPORTAL-1745/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/core/src/main/java/org/exoplatform/portal/gadget/core/GateInJsonContainerConfig.java 2011-09-14 08:37:46 UTC (rev 7405)
@@ -0,0 +1,404 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+
+package org.exoplatform.portal.gadget.core;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shindig.common.JsonSerializer;
+import org.apache.shindig.common.util.ResourceLoader;
+import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.ContainerConfigELResolver;
+import org.apache.shindig.config.ContainerConfigException;
+import org.apache.shindig.config.DynamicConfigProperty;
+import org.apache.shindig.expressions.Expressions;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.name.Named;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+import javax.el.ELContext;
+import javax.el.ELException;
+import javax.el.ValueExpression;
+
+/**
+ * A fork of the class JsonContainerConfig, designed to override the loading of container.js
+ *
+ * User: Minh Hoang TO - hoang281283(a)gmail.com
+ * Date: 1/10/11
+ * Time: 2:12 PM
+ */
+@Singleton
+public class GateInJsonContainerConfig extends AbstractContainerConfig {
+
+ private static final Logger LOG = Logger.getLogger(GateInJsonContainerConfig.class.getName());
+ public static final char FILE_SEPARATOR = ',';
+ public static final String PARENT_KEY = "parent";
+ // TODO: Rename this to simply "container", gadgets.container is unnecessary.
+ public static final String CONTAINER_KEY = "gadgets.container";
+
+ private final Map<String, Map<String, Object>> config;
+ private final Expressions expressions;
+
+ /**
+ * Creates a new configuration from files.
+ * @throws ContainerConfigException
+ */
+ @Inject
+ public GateInJsonContainerConfig(@Named("shindig.containers.default") String containers, Expressions expressions)
+ throws ContainerConfigException {
+ this.expressions = expressions;
+ config = createContainers(loadContainers(containers));
+ init();
+ }
+
+ /**
+ * Creates a new configuration from a JSON Object, for use in testing.
+ */
+ public GateInJsonContainerConfig(JSONObject json, Expressions expressions) {
+ this.expressions = expressions;
+ config = createContainers(json);
+ init();
+ }
+
+ /**
+ * Initializes the configuration. Called during construction.
+ */
+ protected void init() {
+ for (Map.Entry<String, Map<String, Object>> configEntry : config.entrySet()) {
+ @SuppressWarnings("unchecked")
+ Map<String, Object> value = (Map<String, Object>) evaluateAll(configEntry.getValue());
+ configEntry.setValue(value);
+ }
+ }
+
+ @Override
+ public Collection<String> getContainers() {
+ return Collections.unmodifiableSet(config.keySet());
+ }
+
+ @Override
+ public Map<String, Object> getProperties(String container) {
+ return config.get(container);
+ }
+
+ @Override
+ public Object getProperty(String container, String property) {
+ if (property.startsWith("${")) {
+ // An expression!
+ try {
+ ValueExpression expression = expressions.parse(property, Object.class);
+ return expression.getValue(createExpressionContext(container));
+ } catch (ELException e) {
+ return null;
+ }
+ }
+
+ Map<String, Object> containerData = config.get(container);
+ if (containerData == null) {
+ return null;
+ }
+ return containerData.get(property);
+ }
+
+ /**
+ * Initialize each container's configuration.
+ */
+ private Map<String, Map<String, Object>> createContainers(JSONObject json) {
+ Map<String, Map<String, Object>> map = Maps.newHashMap();
+ for (String container : JSONObject.getNames(json)) {
+ ELContext context = createExpressionContext(container);
+ map.put(container, jsonToMap(json.optJSONObject(container), expressions, context));
+ }
+
+ return map;
+ }
+
+ /**
+ * Make Expressions available to subclasses so they can create ELContexts
+ */
+ protected Expressions getExpressions() {
+ return expressions;
+ }
+
+ /**
+ * Protected to allow overriding.
+ */
+ protected ELContext createExpressionContext(String container) {
+ return getExpressions().newELContext(new ContainerConfigELResolver(this, container));
+ }
+
+ /**
+ * Convert a JSON value to a configuration value.
+ */
+ private static Object jsonToConfig(Object json, Expressions expressions, ELContext context) {
+ if (JSONObject.NULL.equals(json)) {
+ return null;
+ } else if (json instanceof CharSequence) {
+ return new DynamicConfigProperty(json.toString(), expressions, context);
+ } else if (json instanceof JSONArray) {
+ JSONArray jsonArray = (JSONArray) json;
+ List<Object> values = new ArrayList<Object>(jsonArray.length());
+ for (int i = 0, j = jsonArray.length(); i < j; ++i) {
+ values.add(jsonToConfig(jsonArray.opt(i), expressions, context));
+ }
+ return Collections.unmodifiableList(values);
+ } else if (json instanceof JSONObject) {
+ return jsonToMap((JSONObject) json, expressions, context);
+ }
+
+ // A (boxed) primitive.
+ return json;
+ }
+
+ private static Map<String, Object> jsonToMap(JSONObject json, Expressions expressions, ELContext context) {
+ Map<String, Object> values = new HashMap<String, Object>(json.length(), 1);
+ for (String key : JSONObject.getNames(json)) {
+ Object val = jsonToConfig(json.opt(key), expressions, context);
+ if (val != null) {
+ values.put(key, val);
+ }
+ }
+ return Collections.unmodifiableMap(values);
+ }
+
+ /**
+ * Loads containers from directories recursively.
+ *
+ * Only files with a .js or .json extension will be loaded.
+ *
+ * @param files The files to examine.
+ * @throws ContainerConfigException
+ */
+ private void loadFiles(File[] files, JSONObject all) throws ContainerConfigException {
+ try {
+ for (File file : files) {
+ LOG.info("Reading container config: " + file.getName());
+ if (file.isDirectory()) {
+ loadFiles(file.listFiles(), all);
+ } else if (file.getName().toLowerCase(Locale.ENGLISH).endsWith(".js") ||
+ file.getName().toLowerCase(Locale.ENGLISH).endsWith(".json")) {
+ if (!file.exists()) {
+ throw new ContainerConfigException(
+ "The file '" + file.getAbsolutePath() + "' doesn't exist.");
+ }
+ loadFromString(ResourceLoader.getContent(file), all);
+ } else {
+ if (LOG.isLoggable(Level.FINEST))
+ LOG.finest(file.getAbsolutePath() + " doesn't seem to be a JS or JSON file.");
+ }
+ }
+ } catch (IOException e) {
+ throw new ContainerConfigException(e);
+ }
+ }
+
+ /**
+ * Loads resources recursively.
+ * @param files The base paths to look for container.xml
+ * @throws ContainerConfigException
+ */
+ private void loadResources(String[] files, JSONObject all) throws ContainerConfigException {
+ try {
+ for (String entry : files) {
+ LOG.info("Reading container config: " + entry);
+ //final ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
+ //InputStream resourceInputStream = contextCl.getResourceAsStream(entry);
+ //String content = IOUtils.toString(resourceInputStream, "UTF-8");
+
+ GateInContainerConfigLoader currentLoader = GateInGuiceServletContextListener.getCurrentLoader();
+ String content = currentLoader.loadContentAsString(entry, "UTF-8");
+ loadFromString(content, all);
+ }
+ } catch (IOException e) {
+ throw new ContainerConfigException(e);
+ }
+ }
+
+ /**
+ * Merges two JSON objects together (recursively), with values from "merge"
+ * replacing values in "base" to produce a new object.
+ *
+ * @param base The base object that values will be replaced into.
+ * @param merge The object to merge values from.
+ *
+ * @throws JSONException if the two objects can't be merged for some reason.
+ */
+ private JSONObject mergeObjects(JSONObject base, JSONObject merge)
+ throws JSONException {
+ // Clone the initial object (JSONObject doesn't support "clone").
+
+ JSONObject clone = new JSONObject(base, JSONObject.getNames(base));
+ // Walk parameter list for the merged object and merge recursively.
+ String[] fields = JSONObject.getNames(merge);
+ for (String field : fields) {
+ Object existing = clone.opt(field);
+ Object update = merge.get(field);
+ if (JSONObject.NULL.equals(existing) || JSONObject.NULL.equals(update)) {
+ // It's new custom config, not referenced in the prototype, or
+ // it's removing a pre-configured value.
+ clone.put(field, update);
+ } else {
+ // Merge if object type is JSONObject.
+ if (update instanceof JSONObject &&
+ existing instanceof JSONObject) {
+ clone.put(field, mergeObjects((JSONObject)existing,
+ (JSONObject)update));
+ } else {
+ // Otherwise we just overwrite it.
+ clone.put(field, update);
+ }
+ }
+ }
+ return clone;
+ }
+
+ /**
+ * Recursively merge values from parent objects in the prototype chain.
+ *
+ * @return The object merged with all parents.
+ *
+ * @throws ContainerConfigException If there is an invalid parent parameter
+ * in the prototype chain.
+ */
+ private JSONObject mergeParents(String container, JSONObject all)
+ throws ContainerConfigException, JSONException {
+ JSONObject base = all.getJSONObject(container);
+ if (DEFAULT_CONTAINER.equals(container)) {
+ return base;
+ }
+
+ String parent = base.optString(PARENT_KEY, DEFAULT_CONTAINER);
+ if (!all.has(parent)) {
+ throw new ContainerConfigException(
+ "Unable to locate parent '" + parent + "' required by "
+ + base.getString(CONTAINER_KEY));
+ }
+ return mergeObjects(mergeParents(parent, all), base);
+ }
+
+ /**
+ * Processes a container file.
+ *
+ * @param json
+ * @throws ContainerConfigException
+ */
+ protected void loadFromString(String json, JSONObject all) throws ContainerConfigException {
+ try {
+ JSONObject contents = new JSONObject(json);
+ JSONArray containers = contents.getJSONArray(CONTAINER_KEY);
+
+ for (int i = 0, j = containers.length(); i < j; ++i) {
+ // Copy the default object and produce a new one.
+ String container = containers.getString(i);
+ all.put(container, contents);
+ }
+ } catch (JSONException e) {
+ throw new ContainerConfigException(e);
+ }
+ }
+
+ /**
+ * Loads containers from the specified resource. Follows the same rules
+ * as {@code JsFeatureLoader.loadFeatures} for locating resources.
+ *
+ * @param path
+ * @throws ContainerConfigException
+ */
+ private JSONObject loadContainers(String path) throws ContainerConfigException {
+ JSONObject all = new JSONObject();
+ try {
+ for (String location : StringUtils.split(path, FILE_SEPARATOR)) {
+ if (location.startsWith("res://")) {
+ location = location.substring(6);
+ LOG.info("Loading resources from: " + location);
+ if (path.endsWith(".txt")) {
+ loadResources(ResourceLoader.getContent(location).split("[\r\n]+"), all);
+ } else {
+ loadResources(new String[]{location}, all);
+ }
+ } else {
+ LOG.info("Loading files from: " + location);
+ File file = new File(location);
+ loadFiles(new File[]{file}, all);
+ }
+ }
+
+ // Now that all containers are loaded, we go back through them and merge
+ // recursively. This is done at startup to simplify lookups.
+ for (String container : JSONObject.getNames(all)) {
+ all.put(container, mergeParents(container, all));
+ }
+
+ return all;
+ } catch (IOException e) {
+ throw new ContainerConfigException(e);
+ } catch (JSONException e) {
+ throw new ContainerConfigException(e);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return JsonSerializer.serialize(config);
+ }
+
+ private Object evaluateAll(Object value) {
+ if (value instanceof CharSequence) {
+ return value.toString();
+ } else if (value instanceof Map) {
+ ImmutableMap.Builder<Object, Object> newMap = ImmutableMap.builder();
+ for (Map.Entry<?, ?> entry : ((Map<?, ?>) value).entrySet()) {
+ newMap.put(entry.getKey(), evaluateAll(entry.getValue()));
+ }
+
+ return newMap.build();
+ } else if (value instanceof List) {
+ ImmutableList.Builder<Object> newList = ImmutableList.builder();
+ for (Object entry : (List<?>) value){
+ newList.add(evaluateAll(entry));
+ }
+
+ return newList.build();
+ } else {
+ return value;
+ }
+ }
+}
\ No newline at end of file
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js
===================================================================
--- portal/branches/branch-GTNPORTAL-1745/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js 2011-01-10 11:31:22 UTC (rev 5715)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js 2011-09-14 08:37:46 UTC (rev 7405)
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Default container configuration. To change the configuration, you have two options:
-//
-// A. If you run the Java server: Create your own "myContainer.js" file and
-// modify the value in web.xml.
-//
-// B. If you run the PHP server: Create a myContainer.js, copy the contents of container.js to it,
-// change
-// {"gadgets.container" : ["default"],
-// to
-// {"gadgets.container" : ["myContainer"],
-// And make your changes that you need to myContainer.js.
-// Just make sure on the iframe URL you specify &container=myContainer
-// for it to use that config.
-//
-// All configurations will automatically inherit values from this
-// config, so you only need to provide configuration for items
-// that you require explicit special casing for.
-//
-// Please namespace your attributes using the same conventions
-// as you would for javascript objects, e.g. gadgets.features
-// rather than "features".
-
-// NOTE: Please _don't_ leave trailing commas because the php json parser
-// errors out on this.
-
-// Container must be an array; this allows multiple containers
-// to share configuration.
-{"gadgets.container" : ["default"],
-
-// Set of regular expressions to validate the parent parameter. This is
-// necessary to support situations where you want a single container to support
-// multiple possible host names (such as for localized domains, such as
-// <language>.example.org. If left as null, the parent parameter will be
-// ignored; otherwise, any requests that do not include a parent
-// value matching this set will return a 404 error.
-"gadgets.parent" : null,
-
-// Should all gadgets be forced on to a locked domain?
-"gadgets.lockedDomainRequired" : false,
-
-// DNS domain on which gadgets should render.
-"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
-
-// Various urls generated throughout the code base.
-// iframeBaseUri will automatically have the host inserted
-// if locked domain is enabled and the implementation supports it.
-// query parameters will be added.
-"gadgets.iframeBaseUri" : "/eXoGadgetServer/gadgets/ifr",
-
-// jsUriTemplate will have %host% and %js% substituted.
-// No locked domain special cases, but jsUriTemplate must
-// never conflict with a lockedDomainSuffix.
-"gadgets.jsUriTemplate" : "http://%host%/eXoGadgetServer/gadgets/js/%js%",
-
-// Callback URL. Scheme relative URL for easy switch between https/http.
-"gadgets.oauthGadgetCallbackTemplate" : "//%host%/eXoGadgetServer/gadgets/oauthcallback",
-
-// Use an insecure security token by default
-"gadgets.securityTokenType" : "secure",
-"gadgets.securityTokenKeyFile" : "key.txt",
-
-"gadgets.signingKeyFile" : "oauthkey.pem",
-"gadgets.signingKeyName" : "mytestkey",
-
-"gadgets.signedFetchDomain" : "eXo",
-// Config param to load Opensocial data for social
-// preloads in data pipelining. %host% will be
-// substituted with the current host.
-"gadgets.osDataUri" : "http://%host%/social/rpc",
-
-// Uncomment these to switch to a secure version
-//
-//"gadgets.securityTokenType" : "secure",
-//"gadgets.securityTokenKeyFile" : "/path/to/key/file.txt",
-
-"gadgets.content-rewrite" : {
- "include-urls": ".*",
- "exclude-urls": "",
- "include-tags": ["link", "script", "embed", "img", "style"],
- "expires": "86400",
- "proxy-url": "/eXoGadgetServer/gadgets/proxy?url=",
- "concat-url": "/eXoGadgetServer/gadgets/concat?"
-},
-
-// This config data will be passed down to javascript. Please
-// configure your object using the feature name rather than
-// the javascript name.
-
-// Only configuration for required features will be used.
-// See individual feature.xml files for configuration details.
-"gadgets.features" : {
- "core.io" : {
- // Note: /proxy is an open proxy. Be careful how you expose this!
- "proxyUrl" : "http://%host%/eXoGadgetServer/gadgets/proxy?refresh=%refresh%&url=%url%",
- "jsonProxyUrl" : "http://%host%/eXoGadgetServer/gadgets/makeRequest"
- },
- "views" : {
- "home" : {
- "isOnlyVisible" : false,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/home?{var}",
- "aliases": ["DASHBOARD", "default"]
- },
- "canvas" : {
- "isOnlyVisible" : true,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/canvas?{var}",
- "aliases" : ["FULL_PAGE"]
- }
- },
- "rpc" : {
- // Path to the relay file. Automatically appended to the parent
- /// parameter if it passes input validation and is not null.
- // This should never be on the same host in a production environment!
- // Only use this for TESTING!
- "parentRelayUrl" : "/eXoGadgetServer/gadgets/files/container/rpc_relay.html",
-
- // If true, this will use the legacy ifpc wire format when making rpc
- // requests.
- "useLegacyProtocol" : false
- },
- // Skin defaults
- "skins" : {
- "properties" : {
- "BG_COLOR": "",
- "BG_IMAGE": "",
- "BG_POSITION": "",
- "BG_REPEAT": "",
- "FONT_COLOR": "",
- "ANCHOR_COLOR": ""
- }
- },
- "opensocial-0.8" : {
- // Path to fetch opensocial data from
- // Must be on the same domain as the gadget rendering server
- "path" : "http://%host%/social",
- "domain" : "shindig",
- "enableCaja" : false,
- "supportedFields" : {
- "person" : ["id", {"name" : ["familyName", "givenName", "unstructured"]}, "thumbnailUrl", "profileUrl"],
- "activity" : ["id", "title"]
- }
- },
- "osapi.services" : {
- // Specifying a binding to "container.listMethods" instructs osapi to dynamicaly introspect the services
- // provided by the container and delay the gadget onLoad handler until that introspection is
- // complete.
- // Alternatively a container can directly configure services here rather than having them
- // introspected. Simply list out the available servies and omit "container.listMethods" to
- // avoid the initialization delay caused by gadgets.rpc
- // E.g. "gadgets.rpc" : ["activities.requestCreate", "messages.requestSend", "requestShareApp", "requestPermission"]
- "gadgets.rpc" : ["container.listMethods"]
- },
-// "osapi" : {
-// // The endpoints to query for available JSONRPC/REST services
-// "endPoints" : [ "http://%host%/social/rpc", "http://%host%/gadgets/api/rpc" ]
-// },
- "osml": {
- // OSML library resource. Can be set to null or the empty string to disable OSML
- // for a container.
- "library": ""
- }
-}}
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js (from rev 5715, portal/branches/branch-GTNPORTAL-1745/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/classes/containers/default/container.js 2011-09-14 08:37:46 UTC (rev 7405)
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Default container configuration. To change the configuration, you have two options:
+//
+// A. If you run the Java server: Create your own "myContainer.js" file and
+// modify the value in web.xml.
+//
+// B. If you run the PHP server: Create a myContainer.js, copy the contents of container.js to it,
+// change
+// {"gadgets.container" : ["default"],
+// to
+// {"gadgets.container" : ["myContainer"],
+// And make your changes that you need to myContainer.js.
+// Just make sure on the iframe URL you specify &container=myContainer
+// for it to use that config.
+//
+// All configurations will automatically inherit values from this
+// config, so you only need to provide configuration for items
+// that you require explicit special casing for.
+//
+// Please namespace your attributes using the same conventions
+// as you would for javascript objects, e.g. gadgets.features
+// rather than "features".
+
+// NOTE: Please _don't_ leave trailing commas because the php json parser
+// errors out on this.
+
+// Container must be an array; this allows multiple containers
+// to share configuration.
+{"gadgets.container" : ["default"],
+
+// Set of regular expressions to validate the parent parameter. This is
+// necessary to support situations where you want a single container to support
+// multiple possible host names (such as for localized domains, such as
+// <language>.example.org. If left as null, the parent parameter will be
+// ignored; otherwise, any requests that do not include a parent
+// value matching this set will return a 404 error.
+"gadgets.parent" : null,
+
+// Should all gadgets be forced on to a locked domain?
+"gadgets.lockedDomainRequired" : false,
+
+// DNS domain on which gadgets should render.
+"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
+
+// Various urls generated throughout the code base.
+// iframeBaseUri will automatically have the host inserted
+// if locked domain is enabled and the implementation supports it.
+// query parameters will be added.
+"gadgets.iframeBaseUri" : "/eXoGadgetServer/gadgets/ifr",
+
+// jsUriTemplate will have %host% and %js% substituted.
+// No locked domain special cases, but jsUriTemplate must
+// never conflict with a lockedDomainSuffix.
+"gadgets.jsUriTemplate" : "http://%host%/eXoGadgetServer/gadgets/js/%js%",
+
+// Callback URL. Scheme relative URL for easy switch between https/http.
+"gadgets.oauthGadgetCallbackTemplate" : "//%host%/eXoGadgetServer/gadgets/oauthcallback",
+
+// Use an insecure security token by default
+"gadgets.securityTokenType" : "secure",
+"gadgets.securityTokenKeyFile" : "key.txt",
+
+"gadgets.signingKeyFile" : "oauthkey.pem",
+"gadgets.signingKeyName" : "mytestkey",
+
+"gadgets.signedFetchDomain" : "eXo",
+// Config param to load Opensocial data for social
+// preloads in data pipelining. %host% will be
+// substituted with the current host.
+"gadgets.osDataUri" : "http://%host%/social/rpc",
+
+// Uncomment these to switch to a secure version
+//
+//"gadgets.securityTokenType" : "secure",
+//"gadgets.securityTokenKeyFile" : "/path/to/key/file.txt",
+
+"gadgets.content-rewrite" : {
+ "include-urls": ".*",
+ "exclude-urls": "",
+ "include-tags": ["link", "script", "embed", "img", "style"],
+ "expires": "86400",
+ "proxy-url": "/eXoGadgetServer/gadgets/proxy?url=",
+ "concat-url": "/eXoGadgetServer/gadgets/concat?"
+},
+
+// This config data will be passed down to javascript. Please
+// configure your object using the feature name rather than
+// the javascript name.
+
+// Only configuration for required features will be used.
+// See individual feature.xml files for configuration details.
+"gadgets.features" : {
+ "core.io" : {
+ // Note: /proxy is an open proxy. Be careful how you expose this!
+ "proxyUrl" : "http://%host%/eXoGadgetServer/gadgets/proxy?refresh=%refresh%&url=%url%",
+ "jsonProxyUrl" : "http://%host%/eXoGadgetServer/gadgets/makeRequest"
+ },
+ "views" : {
+ "home" : {
+ "isOnlyVisible" : false,
+ "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/home?{var}",
+ "aliases": ["DASHBOARD", "default"]
+ },
+ "canvas" : {
+ "isOnlyVisible" : true,
+ "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/canvas?{var}",
+ "aliases" : ["FULL_PAGE"]
+ }
+ },
+ "rpc" : {
+ // Path to the relay file. Automatically appended to the parent
+ /// parameter if it passes input validation and is not null.
+ // This should never be on the same host in a production environment!
+ // Only use this for TESTING!
+ "parentRelayUrl" : "/eXoGadgetServer/gadgets/files/container/rpc_relay.html",
+
+ // If true, this will use the legacy ifpc wire format when making rpc
+ // requests.
+ "useLegacyProtocol" : false
+ },
+ // Skin defaults
+ "skins" : {
+ "properties" : {
+ "BG_COLOR": "",
+ "BG_IMAGE": "",
+ "BG_POSITION": "",
+ "BG_REPEAT": "",
+ "FONT_COLOR": "",
+ "ANCHOR_COLOR": ""
+ }
+ },
+ "opensocial-0.8" : {
+ // Path to fetch opensocial data from
+ // Must be on the same domain as the gadget rendering server
+ "path" : "http://%host%/social",
+ "domain" : "shindig",
+ "enableCaja" : false,
+ "supportedFields" : {
+ "person" : ["id", {"name" : ["familyName", "givenName", "unstructured"]}, "thumbnailUrl", "profileUrl"],
+ "activity" : ["id", "title"]
+ }
+ },
+ "osapi.services" : {
+ // Specifying a binding to "container.listMethods" instructs osapi to dynamicaly introspect the services
+ // provided by the container and delay the gadget onLoad handler until that introspection is
+ // complete.
+ // Alternatively a container can directly configure services here rather than having them
+ // introspected. Simply list out the available servies and omit "container.listMethods" to
+ // avoid the initialization delay caused by gadgets.rpc
+ // E.g. "gadgets.rpc" : ["activities.requestCreate", "messages.requestSend", "requestShareApp", "requestPermission"]
+ "gadgets.rpc" : ["container.listMethods"]
+ },
+// "osapi" : {
+// // The endpoints to query for available JSONRPC/REST services
+// "endPoints" : [ "http://%host%/social/rpc", "http://%host%/gadgets/api/rpc" ]
+// },
+ "osml": {
+ // OSML library resource. Can be set to null or the empty string to disable OSML
+ // for a container.
+ "library": ""
+ }
+}}
Modified: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml 2011-09-14 08:05:34 UTC (rev 7404)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/WEB-INF/web.xml 2011-09-14 08:37:46 UTC (rev 7405)
@@ -94,7 +94,8 @@
</filter-mapping>
<listener>
- <listener-class>org.apache.shindig.common.servlet.GuiceServletContextListener</listener-class>
+ <!--<listener-class>org.apache.shindig.common.servlet.GuiceServletContextListener</listener-class>-->
+ <listener-class>org.exoplatform.portal.gadget.core.GateInGuiceServletContextListener</listener-class>
</listener>
<!-- Render a Gadget -->
Deleted: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js
===================================================================
--- portal/branches/branch-GTNPORTAL-1745/gadgets/server/src/main/webapp/containers/default/container.js 2011-01-17 05:02:04 UTC (rev 5761)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js 2011-09-14 08:37:46 UTC (rev 7405)
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-// Default container configuration. To change the configuration, you have two options:
-//
-// A. If you run the Java server: Create your own "myContainer.js" file and
-// modify the value in web.xml.
-//
-// B. If you run the PHP server: Create a myContainer.js, copy the contents of container.js to it,
-// change
-// {"gadgets.container" : ["default"],
-// to
-// {"gadgets.container" : ["myContainer"],
-// And make your changes that you need to myContainer.js.
-// Just make sure on the iframe URL you specify &container=myContainer
-// for it to use that config.
-//
-// All configurations will automatically inherit values from this
-// config, so you only need to provide configuration for items
-// that you require explicit special casing for.
-//
-// Please namespace your attributes using the same conventions
-// as you would for javascript objects, e.g. gadgets.features
-// rather than "features".
-
-// NOTE: Please _don't_ leave trailing commas because the php json parser
-// errors out on this.
-
-// Container must be an array; this allows multiple containers
-// to share configuration.
-{"gadgets.container" : ["default"],
-
-// Set of regular expressions to validate the parent parameter. This is
-// necessary to support situations where you want a single container to support
-// multiple possible host names (such as for localized domains, such as
-// <language>.example.org. If left as null, the parent parameter will be
-// ignored; otherwise, any requests that do not include a parent
-// value matching this set will return a 404 error.
-"gadgets.parent" : null,
-
-// Should all gadgets be forced on to a locked domain?
-"gadgets.lockedDomainRequired" : false,
-
-// DNS domain on which gadgets should render.
-"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
-
-// Various urls generated throughout the code base.
-// iframeBaseUri will automatically have the host inserted
-// if locked domain is enabled and the implementation supports it.
-// query parameters will be added.
-"gadgets.iframeBaseUri" : "/eXoGadgetServer/gadgets/ifr",
-
-// jsUriTemplate will have %host% and %js% substituted.
-// No locked domain special cases, but jsUriTemplate must
-// never conflict with a lockedDomainSuffix.
-"gadgets.jsUriTemplate" : "http://%host%/eXoGadgetServer/gadgets/js/%js%",
-
-// Callback URL. Scheme relative URL for easy switch between https/http.
-"gadgets.oauthGadgetCallbackTemplate" : "//%host%/eXoGadgetServer/gadgets/oauthcallback",
-
-// Use an insecure security token by default
-"gadgets.securityTokenType" : "secure",
-"gadgets.securityTokenKeyFile" : "key.txt",
-
-"gadgets.signingKeyFile" : "oauthkey.pem",
-"gadgets.signingKeyName" : "mytestkey",
-
-"gadgets.signedFetchDomain" : "eXo",
-// Config param to load Opensocial data for social
-// preloads in data pipelining. %host% will be
-// substituted with the current host.
-"gadgets.osDataUri" : "http://%host%/social/rpc",
-
-// Uncomment these to switch to a secure version
-//
-//"gadgets.securityTokenType" : "secure",
-//"gadgets.securityTokenKeyFile" : "/path/to/key/file.txt",
-
-"gadgets.content-rewrite" : {
- "include-urls": ".*",
- "exclude-urls": "",
- "include-tags": ["link", "script", "embed", "img", "style"],
- "expires": "86400",
- "proxy-url": "/eXoGadgetServer/gadgets/proxy?url=",
- "concat-url": "/eXoGadgetServer/gadgets/concat?"
-},
-
-// This config data will be passed down to javascript. Please
-// configure your object using the feature name rather than
-// the javascript name.
-
-// Only configuration for required features will be used.
-// See individual feature.xml files for configuration details.
-"gadgets.features" : {
- "core.io" : {
- // Note: /proxy is an open proxy. Be careful how you expose this!
- "proxyUrl" : "http://%host%/eXoGadgetServer/gadgets/proxy?refresh=%refresh%&url=%url%",
- "jsonProxyUrl" : "http://%host%/eXoGadgetServer/gadgets/makeRequest"
- },
- "views" : {
- "home" : {
- "isOnlyVisible" : false,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/home?{var}",
- "aliases": ["DASHBOARD", "default"]
- },
- "canvas" : {
- "isOnlyVisible" : true,
- "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/canvas?{var}",
- "aliases" : ["FULL_PAGE"]
- }
- },
- "rpc" : {
- // Path to the relay file. Automatically appended to the parent
- /// parameter if it passes input validation and is not null.
- // This should never be on the same host in a production environment!
- // Only use this for TESTING!
- "parentRelayUrl" : "/eXoGadgetServer/gadgets/files/container/rpc_relay.html",
-
- // If true, this will use the legacy ifpc wire format when making rpc
- // requests.
- "useLegacyProtocol" : false
- },
- // Skin defaults
- "skins" : {
- "properties" : {
- "BG_COLOR": "",
- "BG_IMAGE": "",
- "BG_POSITION": "",
- "BG_REPEAT": "",
- "FONT_COLOR": "",
- "ANCHOR_COLOR": ""
- }
- },
- "opensocial-0.8" : {
- // Path to fetch opensocial data from
- // Must be on the same domain as the gadget rendering server
- "path" : "http://%host%/social",
- "domain" : "shindig",
- "enableCaja" : false,
- "supportedFields" : {
- "person" : ["id", {"name" : ["familyName", "givenName", "unstructured"]}, "thumbnailUrl", "profileUrl"],
- "activity" : ["id", "title"]
- }
- },
- "osapi.services" : {
- // Specifying a binding to "container.listMethods" instructs osapi to dynamicaly introspect the services
- // provided by the container and delay the gadget onLoad handler until that introspection is
- // complete.
- // Alternatively a container can directly configure services here rather than having them
- // introspected. Simply list out the available servies and omit "container.listMethods" to
- // avoid the initialization delay caused by gadgets.rpc
- // E.g. "gadgets.rpc" : ["activities.requestCreate", "messages.requestSend", "requestShareApp", "requestPermission"]
- "gadgets.rpc" : ["container.listMethods"]
- },
-// "osapi" : {
-// // The endpoints to query for available JSONRPC/REST services
-// "endPoints" : [ "http://%host%/social/rpc", "http://%host%/gadgets/api/rpc" ]
-// },
- "osml": {
- // OSML library resource. Can be set to null or the empty string to disable OSML
- // for a container.
- "library": ""
- }
-}}
Copied: epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js (from rev 5761, portal/branches/branch-GTNPORTAL-1745/gadgets/server/src/main/webapp/containers/default/container.js)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/gadgets/server/src/main/webapp/containers/default/container.js 2011-09-14 08:37:46 UTC (rev 7405)
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+// Default container configuration. To change the configuration, you have two options:
+//
+// A. If you run the Java server: Create your own "myContainer.js" file and
+// modify the value in web.xml.
+//
+// B. If you run the PHP server: Create a myContainer.js, copy the contents of container.js to it,
+// change
+// {"gadgets.container" : ["default"],
+// to
+// {"gadgets.container" : ["myContainer"],
+// And make your changes that you need to myContainer.js.
+// Just make sure on the iframe URL you specify &container=myContainer
+// for it to use that config.
+//
+// All configurations will automatically inherit values from this
+// config, so you only need to provide configuration for items
+// that you require explicit special casing for.
+//
+// Please namespace your attributes using the same conventions
+// as you would for javascript objects, e.g. gadgets.features
+// rather than "features".
+
+// NOTE: Please _don't_ leave trailing commas because the php json parser
+// errors out on this.
+
+// Container must be an array; this allows multiple containers
+// to share configuration.
+{"gadgets.container" : ["default"],
+
+// Set of regular expressions to validate the parent parameter. This is
+// necessary to support situations where you want a single container to support
+// multiple possible host names (such as for localized domains, such as
+// <language>.example.org. If left as null, the parent parameter will be
+// ignored; otherwise, any requests that do not include a parent
+// value matching this set will return a 404 error.
+"gadgets.parent" : null,
+
+// Should all gadgets be forced on to a locked domain?
+"gadgets.lockedDomainRequired" : false,
+
+// DNS domain on which gadgets should render.
+"gadgets.lockedDomainSuffix" : "-a.example.com:8080",
+
+// Various urls generated throughout the code base.
+// iframeBaseUri will automatically have the host inserted
+// if locked domain is enabled and the implementation supports it.
+// query parameters will be added.
+"gadgets.iframeBaseUri" : "/eXoGadgetServer/gadgets/ifr",
+
+// jsUriTemplate will have %host% and %js% substituted.
+// No locked domain special cases, but jsUriTemplate must
+// never conflict with a lockedDomainSuffix.
+"gadgets.jsUriTemplate" : "http://%host%/eXoGadgetServer/gadgets/js/%js%",
+
+// Callback URL. Scheme relative URL for easy switch between https/http.
+"gadgets.oauthGadgetCallbackTemplate" : "//%host%/eXoGadgetServer/gadgets/oauthcallback",
+
+// Use an insecure security token by default
+"gadgets.securityTokenType" : "secure",
+"gadgets.securityTokenKeyFile" : "key.txt",
+
+"gadgets.signingKeyFile" : "oauthkey.pem",
+"gadgets.signingKeyName" : "mytestkey",
+
+"gadgets.signedFetchDomain" : "eXo",
+// Config param to load Opensocial data for social
+// preloads in data pipelining. %host% will be
+// substituted with the current host.
+"gadgets.osDataUri" : "http://%host%/social/rpc",
+
+// Uncomment these to switch to a secure version
+//
+//"gadgets.securityTokenType" : "secure",
+//"gadgets.securityTokenKeyFile" : "/path/to/key/file.txt",
+
+"gadgets.content-rewrite" : {
+ "include-urls": ".*",
+ "exclude-urls": "",
+ "include-tags": ["link", "script", "embed", "img", "style"],
+ "expires": "86400",
+ "proxy-url": "/eXoGadgetServer/gadgets/proxy?url=",
+ "concat-url": "/eXoGadgetServer/gadgets/concat?"
+},
+
+// This config data will be passed down to javascript. Please
+// configure your object using the feature name rather than
+// the javascript name.
+
+// Only configuration for required features will be used.
+// See individual feature.xml files for configuration details.
+"gadgets.features" : {
+ "core.io" : {
+ // Note: /proxy is an open proxy. Be careful how you expose this!
+ "proxyUrl" : "http://%host%/eXoGadgetServer/gadgets/proxy?refresh=%refresh%&url=%url%",
+ "jsonProxyUrl" : "http://%host%/eXoGadgetServer/gadgets/makeRequest"
+ },
+ "views" : {
+ "home" : {
+ "isOnlyVisible" : false,
+ "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/home?{var}",
+ "aliases": ["DASHBOARD", "default"]
+ },
+ "canvas" : {
+ "isOnlyVisible" : true,
+ "urlTemplate" : "http://%host%/eXoGadgetServer/gadgets/canvas?{var}",
+ "aliases" : ["FULL_PAGE"]
+ }
+ },
+ "rpc" : {
+ // Path to the relay file. Automatically appended to the parent
+ /// parameter if it passes input validation and is not null.
+ // This should never be on the same host in a production environment!
+ // Only use this for TESTING!
+ "parentRelayUrl" : "/eXoGadgetServer/gadgets/files/container/rpc_relay.html",
+
+ // If true, this will use the legacy ifpc wire format when making rpc
+ // requests.
+ "useLegacyProtocol" : false
+ },
+ // Skin defaults
+ "skins" : {
+ "properties" : {
+ "BG_COLOR": "",
+ "BG_IMAGE": "",
+ "BG_POSITION": "",
+ "BG_REPEAT": "",
+ "FONT_COLOR": "",
+ "ANCHOR_COLOR": ""
+ }
+ },
+ "opensocial-0.8" : {
+ // Path to fetch opensocial data from
+ // Must be on the same domain as the gadget rendering server
+ "path" : "http://%host%/social",
+ "domain" : "shindig",
+ "enableCaja" : false,
+ "supportedFields" : {
+ "person" : ["id", {"name" : ["familyName", "givenName", "unstructured"]}, "thumbnailUrl", "profileUrl"],
+ "activity" : ["id", "title"]
+ }
+ },
+ "osapi.services" : {
+ // Specifying a binding to "container.listMethods" instructs osapi to dynamicaly introspect the services
+ // provided by the container and delay the gadget onLoad handler until that introspection is
+ // complete.
+ // Alternatively a container can directly configure services here rather than having them
+ // introspected. Simply list out the available servies and omit "container.listMethods" to
+ // avoid the initialization delay caused by gadgets.rpc
+ // E.g. "gadgets.rpc" : ["activities.requestCreate", "messages.requestSend", "requestShareApp", "requestPermission"]
+ "gadgets.rpc" : ["container.listMethods"]
+ },
+// "osapi" : {
+// // The endpoints to query for available JSONRPC/REST services
+// "endPoints" : [ "http://%host%/social/rpc", "http://%host%/gadgets/api/rpc" ]
+// },
+ "osml": {
+ // OSML library resource. Can be set to null or the empty string to disable OSML
+ // for a container.
+ "library": ""
+ }
+}}
13 years, 4 months