Update of /var/cvs/applications/richtext/META-INF/tags/mm/rich
In directory james.mmbase.org:/tmp/cvs-serv26116/META-INF/tags/mm/rich

Modified Files:
        versions.tagx 
Log Message:
several improvements. 'format' atribute, inclusion of javascript


See also: 
http://cvs.mmbase.org/viewcvs/applications/richtext/META-INF/tags/mm/rich


Index: versions.tagx
===================================================================
RCS file: /var/cvs/applications/richtext/META-INF/tags/mm/rich/versions.tagx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- versions.tagx       24 Jun 2008 12:54:55 -0000      1.1
+++ versions.tagx       30 Jun 2008 10:04:55 -0000      1.2
@@ -8,13 +8,32 @@
   <jsp:directive.tag description="Renders a nice table to show diffs between 
tables." />
   <jsp:directive.tag import="org.mmbase.versioning.*,java.util.*" />
 
+  <jsp:directive.attribute name="format" />
+
+  <jsp:directive.include file="/mmbase/jquery/jquery.jspx" />
+  <script type="text/javascript">
+$(document).ready(function() {
+
+    // enables/disables only the logically possible options
+    $("ul.versionselector input[type=radio]").change(function() {
+       var oldSelected = $("ul.versionselector li 
input[name=version1]:checked")[0].value;
+       var newSelected = $("ul.versionselector li 
input[name=version2]:checked")[0].value;
+       $("ul.versionselector li").each(function() {
+           var version1 = $(this).find("input[name=version1]")[0];
+           var version2 = $(this).find("input[name=version2]")[0];
+           $(version1).css("visibility", (version1.value &lt; newSelected ? 
'visible' : 'hidden'));
+           $(version2).css("visibility", (version2.value &gt; oldSelected ? 
'visible' : 'hidden'));
+       });
+    });
+});
+  </script>
 
   <mm:nodeinfo type="nodemanager">
-    BLA
     <mm:listnodescontainer type="${_}_versions">
       <mm:constraint field="object" value="${_node}" />
       <mm:sortorder field="version" direction="down" />
       <form action="versions.jspx" method="POST">
+        <input name="n" type="hidden" value="${_node}" />
         <ul class="versionselector">
           <mm:listnodes id="versions" varStatus="status">
             <c:if test="${status.index eq 1}">
@@ -28,7 +47,7 @@
             <li>
               <mm:field name="number" id="number" write="false" 
vartype="integer" />
               <mm:radio name="version1"  value="${_node.number}" 
compare="${version1}" style="visibility: ${number lt version2 ? 'visible' : 
'hidden'};" />
-              <mm:radio name="version2"  value="${_node.number}" 
compare="${version2}" style="visibility: ${number ge version1 ? 'visible' : 
'hidden'};" />
+              <mm:radio name="version2"  value="${_node.number}" 
compare="${version2}" style="visibility: ${number gt version1 ? 'visible' : 
'hidden'};" />
             v${_node.version}: <mm:node 
number="${_node.lastmodifiedby}"><mm:nodeinfo type="gui" /></mm:node>: 
<mm:field name="comments" /></li>
           </mm:listnodes>
         </ul>
@@ -39,20 +58,31 @@
     <c:if test="${not empty version1 and not empty version2}">
       <mm:node id="version1" referid="version1" />
       <mm:node id="version2" referid="version2" />
-      <h2>Diff between v${version1.version} and v${version2.version}</h2>
-      <mm:import jspvar="bodynow"><mm:node referid="version1"><mm:field 
name="body"  /></mm:node></mm:import>
-      <mm:import jspvar="bodythen"><mm:node referid="version2"><mm:field 
name="body"  /></mm:node></mm:import>
+      <h2>
+        <jsp:text>Diff between v${version1.version} and 
v${version2.version}</jsp:text>
+        <c:if test="${version2.version - 1 eq version1.version}"> 
(${version2.comments})</c:if>
+      </h2>
+      <mm:import jspvar="body1"><mm:node referid="version1"><mm:field 
name="body"  /></mm:node></mm:import>
+      <mm:import jspvar="body2"><mm:node referid="version2"><mm:field 
name="body"  /></mm:node></mm:import>
       <jsp:scriptlet>
-        String[] linesNow  = bodynow.split("\n");
-        String[] linesThen = bodythen.split("\n");
+        String[] lines1 = body1.split("\n+");
+        String[] lines2 = body2.split("\n+");
+
+        Diff diff = new Diff(Arrays.asList(lines1), Arrays.asList(lines2));
       </jsp:scriptlet>
+      <c:choose>
+        <c:when test="${empty format or format == 'html'}">
       <table class="versions">
         <tr><th 
class="difference"/><th>v${version1.version}</th><th>v${version2.version}</th></tr>
-        <jsp:scriptlet>
-          Diff diff = new Diff(Arrays.asList(linesNow), 
Arrays.asList(linesThen));
-        </jsp:scriptlet>
         <jsp:expression>diff.toHtml()</jsp:expression>
       </table>
+        </c:when>
+        <c:otherwise>
+          <pre>
+            <jsp:expression>diff.toUnixDiff()</jsp:expression>
+          </pre>
+        </c:otherwise>
+      </c:choose>
     </c:if>
   </mm:nodeinfo>
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to