Author: ppalaga
Date: 2012-07-13 10:36:12 -0400 (Fri, 13 Jul 2012)
New Revision: 8783
Added:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java
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/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties
Log:
Bug 803115 - Invalid encoding in gadget source not handled properly
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 2012-07-12
06:19:52 UTC (rev 8782)
+++
epp/portal/branches/EPP_5_2_Branch/component/application-registry/src/main/java/org/exoplatform/application/gadget/impl/LocalGadgetData.java 2012-07-13
14:36:12 UTC (rev 8783)
@@ -22,14 +22,14 @@
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.ModulePrefs;
import org.chromattic.api.annotations.*;
-import org.chromattic.api.annotations.PrimaryType;
import org.chromattic.ext.format.BaseEncodingObjectFormatter;
import org.chromattic.ext.ntdef.NTFile;
import org.chromattic.ext.ntdef.Resource;
import org.chromattic.ext.ntdef.NTFolder;
-import org.exoplatform.application.gadget.EncodingDetector;
+import org.exoplatform.commons.xml.XMLDeclarationParser;
-import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
import java.util.Date;
@@ -78,9 +78,17 @@
// Get the related content
GadgetSpec spec = new GadgetSpec(Uri.parse("http://www.gatein.org"),
gadgetXML);
ModulePrefs prefs = spec.getModulePrefs();
- byte[] bytes = gadgetXML.getBytes();
- String encoding = EncodingDetector.detect(new ByteArrayInputStream(bytes));
+ // detect the encoding declared in the XML source
+ // note that we do not need to detect the encoding of gadgetXML because
+ // it is a String and not a stream
+ String encoding = new
XMLDeclarationParser(gadgetXML).parse().get(XMLDeclarationParser.ENCODING);
+ if (encoding == null || !Charset.isSupported(encoding)) {
+ throw new UnsupportedEncodingException(encoding);
+ }
+ // get the bytes in the declared encoding
+ byte[] bytes = gadgetXML.getBytes(encoding);
+
// Update def
def.setDescription(prefs.getDescription());
def.setThumbnail(prefs.getThumbnail().toString()); // Do something better than
that
Added:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java
(rev 0)
+++
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/org/exoplatform/commons/xml/XMLDeclarationParser.java 2012-07-13
14:36:12 UTC (rev 8783)
@@ -0,0 +1,268 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * 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.commons.xml;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.xml.sax.SAXException;
+
+/**
+ * Parses XML 1.0 and XML 1.1 declarations. This class can be used in a
+ * situation where the actual encoding of an XML document is known but the
+ * encoding stated in the XML declaration of the given XML file needs to be
+ * determined, e.g. if it is necessary to find out if the declared encoding is
+ * the same as the actual encoding.
+ *
+ * Usage Example: <code>new XMLDeclarationParser("<?xml
version=\"1.0\"
encoding=\"UTF-8\"?>").parse().get(XMLDeclarationParser.ENCODING)</code>
+ * returns <code>"UTF-8"</code>
+ *
+ * @author ppalaga(a)redhat.com
+ *
+ */
+public class XMLDeclarationParser
+{
+
+ public static final char APOS = '\'';
+ public static final char CR = '\r';
+ public static final char EQ = '=';
+ public static final char GT = '>';
+ public static final char LF = '\n';
+ public static final char LT = '<';
+ public static final char QUESTION_MARK = '?';
+ public static final char QUOT = '"';
+ public static final char SPACE = ' ';
+ public static final char TAB = '\t';
+
+ public static final String ENCODING = "encoding";
+ public static final String STANDALONE = "standalone";
+ public static final String VERSION = "version";
+ public static final String XML = "xml";
+
+ private static final int INVALID = -1;
+
+ private boolean atEndOfInput = false;
+
+ private Map<String, String> attributes = new HashMap<String, String>(4);
+
+ private StringBuilder charBuffer = new StringBuilder(16);
+ private int currentChar = INVALID;
+ private Reader in;
+ private int pos = 0;
+
+ public XMLDeclarationParser(Reader in)
+ {
+ super();
+ this.in = in;
+ }
+
+ public XMLDeclarationParser(String xml)
+ {
+ this(new StringReader(xml));
+ }
+
+ private void consumeOptionalWhiteSpace() throws IOException
+ {
+ while (true && !atEndOfInput)
+ {
+ int ch = current();
+ switch (ch)
+ {
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ next();
+ break;
+ default:
+ return;
+ }
+ }
+ }
+
+ private int current() throws IOException
+ {
+ if (currentChar < 0)
+ {
+ next();
+ }
+ return currentChar;
+ }
+
+ private void ensureNotEndOfInput() throws SAXException,
+ IOException
+ {
+ if (current() < 0)
+ {
+ throw new SAXException("Unexpected end of input.");
+ }
+ }
+
+ private String key() throws IOException
+ {
+ charBuffer.setLength(0);
+ ENDOFKEY: while (true && !atEndOfInput)
+ {
+ int ch = current();
+ switch (ch)
+ {
+ case EQ:
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ break ENDOFKEY;
+ default:
+ charBuffer.append((char) ch);
+ next();
+ }
+ }
+ return charBuffer.toString();
+ }
+
+ private void keyVal() throws IOException, SAXException
+ {
+ String key = key();
+ consumeOptionalWhiteSpace();
+ match(EQ);
+ consumeOptionalWhiteSpace();
+ String value = value();
+ attributes.put(key, value);
+ consumeOptionalWhiteSpace();
+ }
+
+ private void match(char toMatch) throws SAXException,
+ IOException
+ {
+ ensureNotEndOfInput();
+ int ch = current();
+ if (ch != toMatch)
+ {
+ throw new SAXException("Unexpected character '"
+ + (char) ch + "' at position " + pos + "; expected
'" + toMatch
+ + "'.");
+ }
+ next();
+ }
+
+ private void match(String toMatch) throws SAXException,
+ IOException
+ {
+ for (int i = 0; i < toMatch.length(); i++)
+ {
+ match(toMatch.charAt(i));
+ }
+ }
+
+ private void matchWhiteSpace() throws IOException,
+ SAXException
+ {
+ ensureNotEndOfInput();
+ int ch = current();
+ switch (ch)
+ {
+ case SPACE:
+ case TAB:
+ case CR:
+ case LF:
+ next();
+ break;
+ default:
+ throw new SAXException(
+ "Whitespace expected at postion " + pos
+ + " of an XML declaration.");
+ }
+ consumeOptionalWhiteSpace();
+ }
+
+ private int next() throws IOException
+ {
+ if (!atEndOfInput)
+ {
+ currentChar = in.read();
+ pos++;
+ if (currentChar < 0)
+ {
+ atEndOfInput = true;
+ }
+ }
+ return currentChar;
+ }
+
+ public Map<String, String> parse() throws SAXException,
+ IOException
+ {
+ match(LT);
+ match(QUESTION_MARK);
+ match(XML);
+ matchWhiteSpace();
+
+ while (current() != QUESTION_MARK && !atEndOfInput)
+ {
+ keyVal();
+ }
+
+ match(QUESTION_MARK);
+ match(GT);
+
+ return attributes;
+ }
+
+ private String value() throws IOException, SAXException
+ {
+ ensureNotEndOfInput();
+ int quote = current();
+ switch (quote)
+ {
+ case QUOT:
+ case APOS:
+ next();
+ break;
+ default:
+ throw new SAXException("Unexpected character '"
+ + (char) quote + "' at position " + pos + "; expected
'" + QUOT
+ + "' or '" + APOS + "'.");
+ }
+
+ charBuffer.setLength(0);
+ ENDOFLITERAL: while (true && !atEndOfInput)
+ {
+ int ch = current();
+ if (ch == quote)
+ {
+ next();
+ break ENDOFLITERAL;
+ }
+ else
+ {
+ charBuffer.append((char) ch);
+ next();
+ }
+ }
+ return charBuffer.toString();
+ }
+
+}
Added:
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java
(rev 0)
+++
epp/portal/branches/EPP_5_2_Branch/component/common/src/test/java/org/exoplatform/commons/xml/TestXMLDeclarationParser.java 2012-07-13
14:36:12 UTC (rev 8783)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * 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.commons.xml;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.xml.sax.SAXException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class TestXMLDeclarationParser extends TestCase
+{
+
+ private static Map<String, String> map(String... keyVal) {
+ Map<String, String> result = new HashMap<String, String>(4);
+ int i = 0;
+ while (i < keyVal.length) {
+ result.put(keyVal[i++], keyVal[i++]);
+ }
+ return result;
+ }
+
+ public void testUnexpectedEndOfInput() throws SAXException, IOException {
+ assertFail("<?");
+ assertFail("<?xml");
+ assertFail("<?xml ");
+ assertFail("<?xml version");
+ assertFail("<?xml version=");
+ assertFail("<?xml version= ");
+ assertFail("<?xml version='");
+ assertFail("<?xml version='1.0'");
+ assertFail("<?xml version='1.0' ");
+ assertFail("<?xml version='1.0' encoding='UTF-8'?");
+ }
+
+ private static void assertFail(String xml) throws IOException {
+ XMLDeclarationParser parser = new XMLDeclarationParser(xml);
+ try
+ {
+ parser.parse();
+ fail("XMLDeclarationParseException expected.");
+ }
+ catch (SAXException e)
+ {
+ }
+ }
+
+ public void testParse() throws SAXException, IOException {
+ /* with apos */
+ XMLDeclarationParser parser = new XMLDeclarationParser("<?xml
version='1.0' encoding='UTF-8'?>");
+ Assert.assertEquals(map("version", "1.0", "encoding",
"UTF-8"), parser.parse());
+
+ /* with quot */
+ parser = new XMLDeclarationParser("<?xml version=\"1.0\"
encoding=\"UTF-8\"?>");
+ Assert.assertEquals(map("version", "1.0", "encoding",
"UTF-8"), parser.parse());
+
+ /* with some white space */
+ parser = new XMLDeclarationParser("<?xml version =\n\"1.0\"
\t\t encoding=\r\"UTF-8\" ?>");
+ Assert.assertEquals(map("version", "1.0", "encoding",
"UTF-8"), parser.parse());
+
+ }
+}
Modified:
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java 2012-07-12
06:19:52 UTC (rev 8782)
+++
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UIGadgetEditor.java 2012-07-13
14:36:12 UTC (rev 8783)
@@ -51,6 +51,7 @@
import org.exoplatform.webui.form.validator.Validator;
import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
import java.util.Calendar;
/**
@@ -73,17 +74,15 @@
private String dirPath;
- private String gadgetName_;
-
public UIGadgetEditor(InitParams initParams) throws Exception
{
Param param = initParams.getParam("SampleGadget");
WebuiRequestContext context = WebuiRequestContext.getCurrentInstance();
String sample = (String)param.getMapGroovyObject(context);
addUIFormInput(new UIFormStringInput(FIELD_NAME, FIELD_NAME,
null).addValidator(MandatoryValidator.class)
- .addValidator(StringLengthValidator.class, 2, 50)
- .addValidator(ResourceValidator.class)
- .addValidator(ExpressionValidator.class,
"^[\\p{L}][\\p{L}._\\-\\d]+$","UIGadgetEditor.msg.Invalid"));
+ .addValidator(StringLengthValidator.class, 2, 50)
+ .addValidator(ResourceValidator.class)
+ .addValidator(ExpressionValidator.class,
"^[\\p{L}][\\p{L}._\\-\\d]+$","UIGadgetEditor.msg.Invalid"));
addUIFormInput(new UIFormTextAreaInput(FIELD_SOURCE, FIELD_SOURCE,
sample).addValidator(MandatoryValidator.class)
.addValidator(GadgetSpecValidator.class));
}
@@ -102,8 +101,8 @@
}
public void setGadgetName(String name) {
- UIFormStringInput uiInputName = getUIStringInput(FIELD_NAME);
- uiInputName.setValue(name);
+ UIFormStringInput uiInputName = getUIStringInput(FIELD_NAME);
+ uiInputName.setValue(name);
}
public String getSourceFullName()
@@ -124,7 +123,7 @@
//uiInputSource.setValue(uiInputSource.getValue());
if(this.isEdit()) {
- uiInputName.setEditable(false);
+ uiInputName.setEditable(false);
}
super.processRender(context);
@@ -160,18 +159,18 @@
boolean isEdit = uiForm.isEdit();
if (isEdit)
{
- gadgetName = uiForm.getSourceFullName();
+ gadgetName = uiForm.getSourceFullName();
}
else
{
- gadgetName = uiForm.getUIStringInput(UIGadgetEditor.FIELD_NAME).getValue();
+ gadgetName = uiForm.getUIStringInput(UIGadgetEditor.FIELD_NAME).getValue();
}
//
Gadget gadget = service.getGadget(gadgetName);
if(isEdit) {
- if (gadget == null)
+ if (gadget == null)
{
UIApplication uiApp = event.getRequestContext().getUIApplication();
uiApp.addMessage(new
ApplicationMessage("gadget.msg.changeNotExist", null,
ApplicationMessage.WARNING));
@@ -180,7 +179,7 @@
}
}
else {
- // If gadget is null we need to create it first
+ // If gadget is null we need to create it first
if (gadget == null)
{
gadget = new Gadget();
@@ -197,37 +196,46 @@
service.saveGadget(gadget);
}
else {
- UIApplication uiApp = event.getRequestContext().getUIApplication();
+ UIApplication uiApp = event.getRequestContext().getUIApplication();
uiApp.addMessage(new
ApplicationMessage("UIGadgetEditor.gadget.msg.gadgetIsExist", null,
ApplicationMessage.WARNING));
return;
- }
+ }
}
//
Source source = new Source(gadgetName, "application/xml");
source.setTextContent(text);
source.setLastModified(Calendar.getInstance());
- sourceStorage.saveSource(gadget, source);
- uiManagement.removeChild(UIGadgetEditor.class);
- // This will update the source and also update the gadget related
- // cached meta data
- // from the source
- uiManagement.initData();
- uiManagement.setSelectedGadget(gadget.getName());
- event.getRequestContext().addUIComponentToUpdateByAjax(uiManagement);
-
- //Send request to invalidate the cache to Shindig
- String gadgetServerUrl = GadgetUtil.getGadgetServerUrl();
- String gadgetUrl = GadgetUtil.reproduceUrl(gadget.getUrl(), gadget.isLocal());
- String metadataUrl = gadgetServerUrl + (gadgetServerUrl.endsWith("/")
? "" : "/") + "metadata";
- String queryString =
"{\"context\":{\"ignoreCache\":\"true\"},\"gadgets\":["
+ "{\"url\":\"" + gadgetUrl + "\"}]}";
-
event.getRequestContext().getJavascriptManager().addJavascript("ajaxRequest('POST',
'" + metadataUrl + "', true, '" + queryString +
"');");
+ try
+ {
+ sourceStorage.saveSource(gadget, source);
+ uiManagement.removeChild(UIGadgetEditor.class);
+ // This will update the source and also update the gadget related
+ // cached meta data
+ // from the source
+ uiManagement.initData();
+ uiManagement.setSelectedGadget(gadget.getName());
+ event.getRequestContext().addUIComponentToUpdateByAjax(uiManagement);
+
+ //Send request to invalidate the cache to Shindig
+ String gadgetServerUrl = GadgetUtil.getGadgetServerUrl();
+ String gadgetUrl = GadgetUtil.reproduceUrl(gadget.getUrl(),
gadget.isLocal());
+ String metadataUrl = gadgetServerUrl +
(gadgetServerUrl.endsWith("/") ? "" : "/") +
"metadata";
+ String queryString =
"{\"context\":{\"ignoreCache\":\"true\"},\"gadgets\":["
+ "{\"url\":\"" + gadgetUrl + "\"}]}";
+
event.getRequestContext().getJavascriptManager().addJavascript("ajaxRequest('POST',
'" + metadataUrl + "', true, '" + queryString +
"');");
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ UIApplication uiApp = event.getRequestContext().getUIApplication();
+ uiApp.addMessage(new
ApplicationMessage("UIGadgetEditor.msg.unsupportedEncoding", new Object[]
{e.getMessage()}, ApplicationMessage.ERROR));
+ return;
+ }
}
}
private boolean isEdit() {
- return (this.getSource() != null);
+ return (this.getSource() != null);
}
public static class CancelActionListener extends EventListener<UIGadgetEditor>
Modified:
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-12
06:19:52 UTC (rev 8782)
+++
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_cs.properties 2012-07-13
14:36:12 UTC (rev 8783)
@@ -75,22 +75,23 @@
UICategorySelector.header.choose=Vybrat
UICategorySelector.msg.NoCategory=Nen\u00ed tu \u017e\u00e1dn\u00e1 kategorie
+## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
+UIGadgetEditor.label.source=Zdrojov\u00fd k\u00f3d XML:
+UIGadgetEditor.label.name=N\u00e1zev:
+UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.action.Save=#{word.save}
+UIGadgetEditor.msg.invalidSpec=Tento XML zdrojov\u00fd k\u00f3d nevyhovuje specifikaci
Gadget\u016f OpenSocial Core Gadget Specification.
UIGadgetEditor.gadget.msg.gadgetIsExist=Tento n\u00e1zev ji\u017e existuje, vyberte
pros\u00edm jin\u00fd.
-UIGadgetEditor.label.name=N\u00e1zev:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Zdroj:
UIGadgetEditor.msg.Invalid=Pole "{0}" nem\u016f\u017ee obsahovat
speci\u00e1ln\u00ed znaky.
-UIGadgetEditor.msg.invalidSpec=Tento zdroj nevyhovuje specifikaci Gadget\u016f.
+UIGadgetEditor.msg.unsupportedEncoding=K\u00f3dov\u00e1n\u00ed "{0}" nen\u00ed
podporovan\u00e9. Tento probl\u00e9m m\u016f\u017eete bezpe\u010dn\u011b vy\u0159e\u0161it
t\u00edm, \u017ee ve zdrojov\u00e9m XML k\u00f3du va\u0161eho gadgetu
p\u0159ep\u00ed\u0161ete "{0}" nap\u0159. na "UTF-8".
+## org.exoplatform.applicationregistry.webui.component.UIGadgetInfo
UIGadgetInfo.label.categories=Categories:
UIGadgetInfo.label.categories.clickHere=Klikn\u011bte zde pro p\u0159id\u00e1n\u00ed do
kategori\u00ed
UIGadgetInfo.label.categories.guide=Mus\u00edte p\u0159idat tento gadget do
kategori\u00ed, aby mohl b\u00fdt pou\u017eit na n\u00e1st\u011bnce.
UIGadgetInfo.label.description=#{label.description}
UIGadgetInfo.label.displayName=#{label.displayName}
UIGadgetInfo.label.editUrl=URL pro editaci:
-## org.exoplatform.applicationregistry.webui.component.UIGadgetInfo
UIGadgetInfo.label.gadgetDetails=Detaily gadgetu
UIGadgetInfo.label.name=N\u00e1zev gadgetu:
UIGadgetInfo.label.reference=Odkaz:
Modified:
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties 2012-07-12
06:19:52 UTC (rev 8782)
+++
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_de.properties 2012-07-13
14:36:12 UTC (rev 8783)
@@ -141,11 +141,16 @@
UIAddGadget.label.urlError=Die Daten der URL '{0}' sind nicht g\u00fcltig.
## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Quelle:
+UIGadgetEditor.label.source=XML-Quelltext:
+UIGadgetEditor.label.name=Name:
UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.msg.invalidSpec=Diese Quelle enth\u00e4lt eine ung\u00fcltige
Gadget-Spezifikation.
-##package org.exoplatform.organization.webui.component.UIListPermissionSelector
+UIGadgetEditor.msg.invalidSpec=Der angegebene XML-Quelltext entspricht nicht der
OpenSocial Core Gadget Specification.
+UIGadgetEditor.gadget.msg.gadgetIsExist=Der angegebene Name ist bereits vorhanden. Bitte
geben Sie einen anderen Namen an.
+UIGadgetEditor.msg.Invalid=Das Feld "{0}" darf keine Sonderzeiche enthalten.
+UIGadgetEditor.msg.unsupportedEncoding=Die Zeichenkodierung "{0}" wird nicht
unterst\u00fctzt. Sie k\u00f6nnen dieses Problem auf sichere Weise l\u00f6sen, indem Sie
in Ihrem XML-Quelltext "{0}" durch z.B. "UTF-8" ersetzen.
+
+## org.exoplatform.organization.webui.component.UIListPermissionSelector
UIListPermissionSelector.header.groupId=Gruppe
UIListPermissionSelector.header.membership=Rolle
UIListPermissionSelectorPopup.title.ListPermissionSelector=Berechtigung ausw\u00e4hlen
Modified:
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties
===================================================================
---
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties 2012-07-12
06:19:52 UTC (rev 8782)
+++
epp/portal/branches/EPP_5_2_Branch/portlet/exoadmin/src/main/webapp/WEB-INF/classes/locale/portlet/exoadmin/ApplicationRegistryPortlet_en.properties 2012-07-13
14:36:12 UTC (rev 8783)
@@ -143,14 +143,16 @@
UIAddGadget.label.urlError=Data in url: '{0}' is not valid
## org.exoplatform.applicationregistry.webui.component.UIGadgetEditor
-UIGadgetEditor.label.source=Source:
+UIGadgetEditor.label.source=XML Source Code:
UIGadgetEditor.label.name=Name:
UIGadgetEditor.action.Save=#{word.save}
UIGadgetEditor.action.Cancel=#{word.cancel}
-UIGadgetEditor.msg.invalidSpec=This source is invalid gadget specification.
+UIGadgetEditor.msg.invalidSpec=The given XML source code is invalid with respect to
OpenSocial Core Gadget Specification.
UIGadgetEditor.gadget.msg.gadgetIsExist=This name already exists, please enter a
different name.
UIGadgetEditor.msg.Invalid=The "{0}" field must not contain special
characters.
-##package org.exoplatform.organization.webui.component.UIListPermissionSelector
+UIGadgetEditor.msg.unsupportedEncoding=The encoding "{0}" is not supported. You
can safely solve this problem by replacing "{0}" with e.g. "UTF-8" in
the XML source code of your gadget.
+
+## org.exoplatform.organization.webui.component.UIListPermissionSelector
UIListPermissionSelector.header.groupId=Group
UIListPermissionSelector.header.membership=Membership
UIListPermissionSelectorPopup.title.ListPermissionSelector=Select Permission
\ No newline at end of file