-
Notifications
You must be signed in to change notification settings - Fork 151
GXE Structure
GXE is intended to support metadata profiles or additional metadata schemas. This section describes how to configure GXE for this as well as how to alter the behavior of the editor for existing metadata schemas. For general introduction and additional topics, see Geoportal XML Editor. After reading this topic, you can work through the GXE Crash Course to become familiar with customizing the GXE Editor.
The files that define the core structure for the editor are located within the [webapp]/WEB-INF/classes/gpt/gxe directory. These files provide a foundation for reuse when defining the content of an editor. Although it is not mandatory to extend an editor from these files, the editors that ship with the Geoportal Server all extend from this core.
-
[webapp]/WEB-INF/classes/gpt/gxe/editor.xmlThis is the base editor from which all other editors extend.
The directory at [webapp]/WEB-INF/classes/gpt/gxe/core/ui contains a collection of reusable files
associated with the binding of editor components to the user interface. Below is a description of files found in the ui directory.
-
[webapp]/WEB-INF/classes/gpt/gxe/core/uiA collection of reusable files associated with the binding of editor components to the user interface. -
[webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputText.xmlseful for binding an input text box to the value of a target XML node (element text or attribute). The default definition will render an HTML<input>tag of type text with a size of 60 and max length of 2048. A JavaScript object of typegxe.control.InputTextwill be instantiated to process the component.
<h:input xmlns:g="http://www.esri.com/geoportal/gxe" xmlns:h="http://www.esri.com/geoportal/gxe/html" h:tag="input" h:type="text" h:size="60" h:maxlength="2048" g:jsClass="gxe.control.InputText"/>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputTextArea.xmlUseful for binding an input text area box to the value of a target XML node (element text). The default definition will render an HTML<textarea>tag of type text with 46 columns and 3 rows. A JavaScript object of typegxe.control.InputTextAreawill be instantiated to process the component.
<h:textarea xmlns:g="http://www.esri.com/geoportal/gxe" xmlns:h="http://www.esri.com/geoportal/gxe/html" h:tag="textarea" h:cols="46" h:rows="3" g:jsClass="gxe.control.InputTextArea"/>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputSelectOne.xmlUseful for binding a select dropdown to the value of a target XML node (element text or attribute). The default definition will render an HTML<select>tag. A JavaScript object of typegxe.control.InputSelectOnewill be instantiated to process the component. The selectable options are provided by the definition component extending this file.
<h:select xmlns:g="http://www.esri.com/geoportal/gxe" xmlns:h="http://www.esri.com/geoportal/gxe/html" h:tag="select" g:jsClass="gxe.control.InputSelectOne"> <g:options g:overridable="true"/> </h:select>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputSelectMany.xmlUseful for binding a multiple checkbox control to the values associated with a repeatable XML target node (element text). The default definition will render an HTML <ul> tag with a CSS class namedgxeSelectMany. A JavaScript object of typegxe.control.InputSelectManywill be instantiated to process the component. The selectable options are provided by the definition component extending this file, and will be rendered as checkboxes within HTML<li>tag.
<h:ul xmlns:g="http://www.esri.com/geoportal/gxe" xmlns:h="http://www.esri.com/geoportal/gxe/html" h:tag="ul" h:class="gxeSelectMany" g:jsClass="gxe.control.InputSelectMany"> <g:options g:overridable="true"/> </h:ul>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/ui/InputDelimitedTextArea.xmlUseful for binding an input text area box (comma delimited by default) to the values associated with a repeatable XML target node (element text). The default definition will render an HTML<textarea>tag of type text with 60 columns and 10 rows. A JavaScript object of typegxe.control.InputDelimitedTextAreawill be instantiated to process the component.
The directory at [webapp]/WEB-INF/classes/gpt/gxe/core/xml contains a collection of reusable files associated with the binding of editor components to the targeted XML mapping. Below is a description of files found in the xml directory.
-
[webapp]/WEB-INF/classes/gpt/gxe/core/xml/Element.xmlUseful for binding a user interface component to a complex target XML element type (i.e. an element that has an attribute or children). This definition component extends from$base/core/ui/Section.xml(i.e., inherits structure and behavior). The qualified name for the component will be overridden asg:element. The JavaScript object (g:jsClass) instantiated to process the component will be overridden asgxe.control.Element.
<g:element xmlns:g="http://www.esri.com/geoportal/gxe" xmlns:h="http://www.esri.com/geoportal/gxe/html" g:jsClass="gxe.control.Element" g:extends="$base/core/ui/Section.xml"/>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/xml/ElementTextOnly.xmlUseful for binding a user interface component to a simple target XML element type (i.e., an element that has text content but no attribute or children). This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:element xmlns:g="http://www.esri.com/geoportal/gxe"
xmlns:h="http://www.esri.com/geoportal/gxe/html"
g:extends="$base/core/xml/Element.xml">
<g:body>
<g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
</g:body>
</g:element>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/xml/Attribute.xmlUseful for binding a user interface component to a target XML attribute. This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:attribute xmlns:g="http://www.esri.com/geoportal/gxe"
xmlns:h="http://www.esri.com/geoportal/gxe/html"
g:jsClass="gxe.control.Attribute"
g:extends="$base/core/ui/Section.xml">
<g:body>
<g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
</g:body>
</g:attribute>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/xml/ElementChoice.xmlUseful for binding an exclusive user interface choice component to a list of target XML element. A section will be added to the user interface (HTML<div>tag with a CSS class namedgxeTabs, processed by a JavaScript object of typegxe.control.ElementChoice). A header will be added to the section (HTML<div>tag with a CSS class named gxeTabsHeader). An array of tabs will be added to the header (HTML<ul>tag with a CSS class namedgxeTabArray, processed by a JavaScript object of typegxe.control.TabArray). A body will be added to the section (HTML<div>tag with a CSS class namedgxeTabsBody, processed by a JavaScript object of typegxe.control.ElementChoiceBody). A radio button will be generated for each child declared within the body. Only one of these children will be selected at any given time, and only that element will be serialized within the resultant XML document.
<g:elementChoice xmlns:g="http://www.esri.com/geoportal/gxe"
xmlns:h="http://www.esri.com/geoportal/gxe/html"
h:tag="div" h:class="gxeTabs"
g:label="$i18n.catalog.gxe.general.choose"
g:labelNone="$i18n.catalog.gxe.general.choose.none"
g:jsClass="gxe.control.ElementChoice">
<g:header g:extensible="true" h:tag="div" h:class="gxeTabsHeader">
<g:label g:extensible="true" h:tag="label"
h:class="gxeElementChoiceCaption"/>
<g:tabArray h:tag="ul" h:class="gxeTabArray"
g:jsClass="gxe.control.TabArray"/>
</g:header>
<g:body g:extensible="true" h:tag="div" h:class="gxeTabsBody"
g:jsClass="gxe.control.ElementChoiceBody"/>
</g:elementchoice>
-
[webapp]/WEB-INF/classes/gpt/gxe/core/xml/TextNode.xmlUseful for binding a user interface component to text content of a complex target XML type (i.e., an element that has text content but no attribute or children). This definition component adds an input text box to the body of the underlying section. The input component is flagged as overridable and can be replaced if required by a component that extends this component.
<g:textNode xmlns:g="http://www.esri.com/geoportal/gxe"
xmlns:h="http://www.esri.com/geoportal/gxe/html"
g:extends="$base/core/ui/Section.xml">
<g:body>
<g:input g:overridable="true" g:extends="$base/core/ui/InputText.xml"/>
</g:body>
</g:textnode>
Back to Geoportal XML Editor