svn commit: r598808 - in /lenya/trunk/src/modules-core/sitemanagement: java/src/org/apache/lenya/cms/metadata/usecases/ resources/i18n/ resources/javascript/ usecases/tab/

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Tue Nov 27 15:07:33 2007
New Revision: 598808

URL: http://svn.apache.org/viewvc?rev=598808&view=rev
Log:
Show non-editable meta data, use tabbed view for meta data

Added:
    lenya/trunk/src/modules-core/sitemanagement/resources/javascript/
    lenya/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js
Modified:
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
    lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
    lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml
    lenya/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx
    lenya/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java?rev=598808&r1=598807&r2=598808&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/metadata/usecases/Metadata.java Tue Nov 27 15:07:33 2007
@@ -24,6 +24,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.lenya.cms.metadata.Element;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataRegistry;
 import org.apache.lenya.cms.publication.Document;
@@ -51,6 +52,26 @@
         }
         return objects;
     }
+    
+    public static class MetaDataWrapper {
+        
+        private String[] values;
+        private Element element;
+        
+        public MetaDataWrapper(Element element, String[] values) {
+            this.values = values;
+            this.element = element;
+        }
+        
+        public String[] getValues() {
+            return this.values;
+        }
+        
+        public Element getElement() {
+            return this.element;
+        }
+        
+    }
 
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
@@ -74,23 +95,16 @@
 
             for (int nsIndex = 0; nsIndex < namespaces.length; nsIndex++) {
                 MetaData meta = getSourceDocument().getMetaData(namespaces[nsIndex]);
-                boolean matched = false;
                 String[] keys = meta.getPossibleKeys();
                 for (int keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-                    if (meta.getElementSet().getElement(keys[keyIndex]).isEditable()) {
-                        String key = "ns" + nsIndex + "." + keys[keyIndex];
-                        String value = meta.getFirstValue(keys[keyIndex]);
-                        if (value != null) {
-                            setParameter(key, value);
-                        }
-                        keyList.add(key);
-                        matched = true;
-                    }
-                }
-                if (matched) {
-                    numbers.add("" + nsIndex);
-                    num2namespace.put("" + nsIndex, namespaces[nsIndex]);
+                    String key = "ns" + nsIndex + "." + keys[keyIndex];
+                    String[] values = meta.getValues(keys[keyIndex]);
+                    Element element = meta.getElementSet().getElement(keys[keyIndex]);
+                    setParameter(key, new MetaDataWrapper(element, values));
+                    keyList.add(key);
                 }
+                numbers.add("" + nsIndex);
+                num2namespace.put("" + nsIndex, namespaces[nsIndex]);
             }
 
             setParameter("numbers", numbers);
@@ -149,9 +163,13 @@
 
             String[] keys = meta.getPossibleKeys();
             for (int keyIndex = 0; keyIndex < keys.length; keyIndex++) {
-                String value = getParameterAsString("ns" + orgNsIndex + "." + keys[keyIndex]);
-                if (value != null) {
-                    meta.setValue(keys[keyIndex], value);
+                String key = keys[keyIndex];
+                Element element = meta.getElementSet().getElement(key);
+                if (element.isEditable()) {
+                    Object value = getParameter("ns" + orgNsIndex + "." + key);
+                    if (value != null && value instanceof String) {
+                        meta.setValue(key, (String) value);
+                    }
                 }
             }
         }

Modified: lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml?rev=598808&r1=598807&r2=598808&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml (original)
+++ lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml Tue Nov 27 15:07:33 2007
@@ -39,6 +39,7 @@
   <message key="Namespace">Namespace</message>
   <message key="http://purl.org/dc/terms/">Dublin Core Terms</message>
   <message key="http://purl.org/dc/elements/1.1/">Dublin Core Elements</message>
+  <message key="value-not-set">not set</message>
   <message key="Inherited credentials">Inherited credentials</message>
   <message key="Subtree credentials">Subtree credentials</message>
   <message key="New subtree credential">New subtree credential</message>

Modified: lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml?rev=598808&r1=598807&r2=598808&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml (original)
+++ lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml Tue Nov 27 15:07:33 2007
@@ -39,6 +39,7 @@
   <message key="Namespace">Namensraum</message>
   <message key="http://purl.org/dc/terms/">Dublin-Core-Terme</message>
   <message key="http://purl.org/dc/elements/1.1/">Dublin-Core-Elemente</message>
+  <message key="value-not-set">nicht gesetzt</message>
   <message key="Inherited credentials">Vererbte Berechtigungen</message>
   <message key="Subtree credentials">Berechtigungen für diesen Teilbaum</message>
   <message key="New subtree credential">Neue Berechtigung für diesen Teilbaum</message>

Added: lenya/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js?rev=598808&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js (added)
+++ lenya/trunk/src/modules-core/sitemanagement/resources/javascript/lenyaTabs.js Tue Nov 27 15:07:33 2007
@@ -0,0 +1,27 @@
+
+function lenyaGetTitle(num) {
+  return document.getElementById('lenyaTabTitle' + num);
+}
+
+function lenyaGetBody(num) {
+  return document.getElementById('lenyaTabBody' + num);
+}
+
+function lenyaInitTabs(count) {
+  lenyaToggleTab(count, 0);
+}
+
+function lenyaToggleTab(count, num) {
+  for (var i = 0; i < count; i++) {
+    var title = document.getElementById('lenyaTabTitle' + i);
+    var body = document.getElementById('lenyaTabBody' + i);
+    if (i == num) {
+      title.className = 'lenyaTabTitleActive';
+      body.className = 'lenyaTabBodyActive';
+    }
+    else {
+      title.className = 'lenyaTabTitle';
+      body.className = 'lenyaTabBody';
+    }
+  }
+}
\ No newline at end of file

Modified: lenya/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx?rev=598808&r1=598807&r2=598808&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx (original)
+++ lenya/trunk/src/modules-core/sitemanagement/usecases/tab/head.jx Tue Nov 27 15:07:33 2007
@@ -32,5 +32,6 @@
     <script src="/modules/sitetree/javascript/tree.js"/>
     <script src="/modules/sitetree/javascript/lenyatree.js"/>
     <script src="/modules/sitetree/javascript/navtree.js"/>
+    <script src="/modules/sitemanagement/javascript/lenyaTabs.js"/>
   </page:head>
 </jx:template>

Modified: lenya/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx?rev=598808&r1=598807&r2=598808&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx (original)
+++ lenya/trunk/src/modules-core/sitemanagement/usecases/tab/meta.jx Tue Nov 27 15:07:33 2007
@@ -23,7 +23,9 @@
            xmlns="http://www.w3.org/1999/xhtml" 
            xmlns:i18n="http://apache.org/cocoon/i18n/2.1" >
   <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/head.jx"/>
-  <page:body>
+  
+  <jx:set var="count" value="${usecase.getParameter('numbers').size()}"/>
+  <page:body onload="lenyaInitTabs(${count})">
     <jx:import uri="fallback://lenya/modules/sitemanagement/usecases/tab/sitetree.jx"/>
     <jx:import uri="fallback://lenya/modules/usecase/templates/tabs.jx"/>
     <div id="contentblock1" class="lenya-tab-sitetree">
@@ -34,78 +36,55 @@
         
         <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
         
+        <jx:set var="count" value="${usecase.getParameter('numbers').size()}"/>
         <jx:forEach var="num" items="${usecase.getParameter('numbers')}">
-          <div class="lenya-box-toggled">
-            <div class="lenya-box-title">
-              <!--<i18n:text>Namespace</i18n:text>:-->
-              <i18n:text><jx:out value="${num2namespace.get(num)}"/></i18n:text>
-            </div>
-            <div class="lenya-box-body">
+          <div class="lenyaTabTitle" id="lenyaTabTitle${num}" onclick="lenyaToggleTab(${count}, ${num})">
+            <!--<i18n:text>Namespace</i18n:text>:-->
+            <a><i18n:text><jx:out value="${num2namespace.get(num)}"/></i18n:text></a>
+          </div>
+        </jx:forEach>
+        <jx:forEach var="num" items="${usecase.getParameter('numbers')}">
+            <div class="lenyaTabBody" id="lenyaTabBody${num}">
               <table class="lenya-table-list-noborder">
                 <jx:forEach var="key" items="${usecase.getParameter('keys')}">
                   <jx:if test="${key.startsWith('ns' + num + '.')}">
                     <tr>
-                      <td class="lenya-entry-caption"><label for="${key}"><i18n:text><jx:out value="${key.substring(key.indexOf('.')).substring(1)}"/></i18n:text>:</label></td>
+                      <td class="lenya-entry-caption">
+                        <label for="${key}"><i18n:text><jx:out value="${key.substring(key.indexOf('.')).substring(1)}"/></i18n:text>:</label>
+                      </td>
                       <td>
-                        <input type="text" id="${key}" name="${key}" class="lenya-form-element" value="${usecase.getParameter(key)}"/>
+                        <jx:set var="wrapper" value="${usecase.getParameter(key)}"/>
+                        <jx:set var="values" value="${wrapper.getValues()}"/>
+                        <jx:choose>
+                          <jx:when test="${wrapper.getElement().isEditable()}">
+                            <jx:choose>
+                              <jx:when test="${values.size() &gt; 0}">
+                                <input type="text" id="${key}" name="${key}" class="lenya-form-element" value="${values[0]}"/>
+                              </jx:when>
+                              <jx:otherwise>
+                                <input type="text" id="${key}" name="${key}" class="lenya-form-element" value=""/>
+                              </jx:otherwise>
+                            </jx:choose>
+                          </jx:when>
+                          <jx:otherwise>
+                            <jx:set var="value" value="${wrapper.getValue()}"/>
+                            <jx:choose>
+                              <jx:when test="${values.size() == 0}"><em><i18n:text>value-not-set</i18n:text></em></jx:when>
+                              <jx:otherwise>
+                                <jx:forEach var="value" items="${values}">
+                                  ${value}<br/>
+                                </jx:forEach>
+                              </jx:otherwise>
+                            </jx:choose>
+                          </jx:otherwise>
+                        </jx:choose>
                       </td>
                     </tr>
                   </jx:if>
                 </jx:forEach>
               </table>
             </div>
-          </div>
         </jx:forEach>
-            
-        <!--
-        <table class="lenya-table-noborder">
-          <tr>
-            <td colspan="2">
-              <jx:import uri="fallback://lenya/modules/usecase/templates/messages.jx"/>
-            </td>
-          </tr>
-          
-          <jx:forEach var="num" items="${usecase.getParameter('numbers')}">
-            
-            <tr>
-              <td>
-                <strong><i18n:text>Namespace: </i18n:text></strong>
-              </td>
-              <td>
-                <i18n:text><jx:out value="${num2namespace.get(num)}"/></i18n:text>
-              </td>
-            </tr>
-            
-            <jx:forEach var="key" items="${usecase.getParameter('keys')}">
-              <jx:if test="${key.startsWith('ns' + num + '.')}">
-                <tr>
-                  <td class="lenya-entry-caption"><label for="${key}"><i18n:text><jx:out value="${key.substring(key.indexOf('.')).substring(1)}"/></i18n:text>:</label></td>
-                  <td>
-                    <input type="text" id="${key}" name="${key}" class="lenya-form-element" value="${usecase.getParameter(key)}"/>
-                  </td>
-                </tr>
-              </jx:if>
-            </jx:forEach>
-            
-          </jx:forEach>
-            
-          <tr>
-            <td/>
-            <td>
-              <br/>
-              <jx:choose>
-                <jx:when
-                  test="${usecase.getParameter('document').getArea().equals('authoring') &amp;&amp; ! usecase.hasErrors()}">
-                  <input i18n:attr="value" name="submit" type="submit" value="Save"/>
-                </jx:when>
-                <jx:otherwise>
-                  <input i18n:attr="value" name="submit" type="submit" disabled="disabled" value="Save"/>
-                </jx:otherwise>
-              </jx:choose>
-            </td>
-          </tr>
-        </table>
-        -->
 
         <jx:choose>
           <jx:when
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.