Author: andre
Date: 2010-02-26 16:30:20 +0100 (Fri, 26 Feb 2010)
New Revision: 41184

Modified:
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/node.tr.jspx
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.css.jsp
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspf
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspx
   
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relations.tr.jspx
Log:
MMB-1937 and MMB-1933 added an extra column in searchresults to store node nr 
of relation, deletion of relations now based on relation nr, made it so that 
when there is a attr. submit in tag that changes are not automatically 
committed but stored untill submit is hit

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
    2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
    2010-02-26 15:30:20 UTC (rev 41184)
@@ -17,9 +17,10 @@
  * - mmsrUnrelate          (use   $("div.mm_related").bind("mmsrUnrelate", 
function (e, tr, relater) ) )
  * - mmsrPaged             (use   $("div.mm_related").bind("mmsrPaged", 
function (e, status, relater) ) )
  * - mmsrRelaterReady      (use   $("div.mm_related").bind("mmsrRelaterReady", 
function (e, relater) ) )
- * - mmsrCommitted         (use   $("div.mm_related").bind("mmsrCommitted", 
function (e, submitter, status, relater, relatedNumbers, unrelatedNumbers) ) )
+ * - mmsrCommitted         (use   $("div.mm_related").bind("mmsrCommitted", 
function (e, submitter, status, relater, relatedNumbers, unrelatedNumbers, 
deletedRelations) ) )
  *
  * @author Michiel Meeuwissen
+ * @author André van Toly
  * @version $Id$
  */
 
@@ -57,8 +58,9 @@
  */
 function MMBaseRelater(d, validator) {
     this.div           = d;
-    this.related       = {};
-    this.unrelated     = {};
+    this.related       = {};    // related nodes
+    this.unrelated     = {};    // unrelated nodes
+    this.deleterels    = {};    // relations to delete
     this.logger        = new MMBaseLogger();
     this.logger.debug(d);
     this.logger.debug("setting up current");
@@ -91,7 +93,6 @@
         fun(this);
     }
     this.sessionName = null;
-    this.bindCommit();
     var self = this;
     $(this.div).trigger("mmsrRelaterReady", [self]);
 }
@@ -102,7 +103,6 @@
  *  'relateCallBack' function.
  *  @todo I think jquery provides something with user defined events.
  */
-
 MMBaseRelater.readyFunctions = [];
 
 MMBaseRelater.ready = function(fun) {
@@ -144,26 +144,11 @@
     }
 }
 
-MMBaseRelater.prototype.bindCommit = function() {
-    var self = this;
-    if (this.instant) {
-        $(this.div).bind("mmsrRelate", function (e, tr, relater) {
-            if (e) {
-                self.commit(e);
-            }
-        });
-        $(this.div).bind("mmsrUnrelate", function (e, tr, relater) {
-            if (e) {
-                self.commit(e);
-            }
-        });
-    }
-}
-
 MMBaseRelater.prototype.needsCommit = function() {
     var relatedNumbers   = this.getNumbers(this.related);
     var unrelatedNumbers = this.getNumbers(this.unrelated);
-    return relatedNumbers != "" || unrelatedNumbers != "";
+    var deletedRelations =  this.getNumbers(this.deleterels);
+    return relatedNumbers != "" || unrelatedNumbers != "" || deletedRelations 
!= "";
 }
 
 /**
@@ -173,8 +158,9 @@
 MMBaseRelater.prototype.commit = function(ev) {
     var relatedNumbers   = this.getNumbers(this.related);
     var unrelatedNumbers = this.getNumbers(this.unrelated);
+    var deletedRelations = this.getNumbers(this.deleterels)
 
-    if (relatedNumbers != "" || unrelatedNumbers != "") {
+    if (relatedNumbers != "" || unrelatedNumbers != "" || deletedRelations != 
"") {
         var a = ev.target;
         $(a).addClass("submitting");
         $(a).removeClass("failed");
@@ -186,7 +172,11 @@
 
         this.logger.debug("+ " + relatedNumbers);
         this.logger.debug("- " + unrelatedNumbers);
-        var params = {id: id, related: relatedNumbers, unrelated: 
unrelatedNumbers};
+        this.logger.debug("d " + deletedRelations);
+        if (!this.instant) {
+            this.commitSelections(id)
+        }
+        var params = {id: id, related: relatedNumbers, unrelated: 
unrelatedNumbers, deleted: deletedRelations};
         if (this.transaction != null) {
             params.transaction = this.transaction;
         }
@@ -211,8 +201,9 @@
                         }
                         self.related = {};
                         self.unrelated = {};
+                        self.deleterels = {};
                         if (self.canEditrelations) 
self.bindSaverelation(this.div);
-                        $(self.div).trigger("mmsrCommitted", [a, status, self, 
relatedNumbers, unrelatedNumbers]);
+                        $(self.div).trigger("mmsrCommitted", [a, status, self, 
relatedNumbers, unrelatedNumbers, deletedRelations]);
                         return true;
                     } else {
                         $(a).addClass("failed");
@@ -220,7 +211,7 @@
                         return false;
                     }
                 }
-               });
+            });
     } else {
         this.logger.debug("No changes, no need to commit");
         $(this.div).trigger("mmsrCommitted", [a, "nochanges", this]);
@@ -229,15 +220,42 @@
 }
 
 /**
+ * Commits selected items after acknowledgment
+ */
+MMBaseRelater.prototype.commitSelections = function(id) {
+    var div = $('#' + id + ' div.mm_relate_current');
+    var self = this;
+    var done = false;
+        
+    // unrelate
+    $.each(self.deleterels, function(key, value) {
+        self.logger.debug("= unrelated: " + key);
+        self.unrelate(value);
+        self.deleterels[key] = null
+        done = true;
+    });
+
+    // relate
+    $.each(self.related, function(key, value) {
+        self.logger.debug("= related: " + key);
+        if (value != null) { self.relate(value); }
+        self.related[key] = null;
+        done = true
+    });
+    
+    if (done) {
+        self.logger.debug("done");
+    }
+}
+
+/**
  * Gets a the relation tr for a newly created relation in which the relation 
can be edited.
- *
  */
 MMBaseRelater.prototype.getNewRelationTr = function(nodenr) {
     var self = this;
     var url = "${mm:link('/mmbase/searchrelate/relations.tr.jspx')}";
     var queryid = this.repository.searcher.getQueryId();
     queryid = queryid.replace(/repository/i, "current");
-    self.logger.debug(url + ", id: " + queryid + ", node: " + nodenr +  ", 
fields: " + this.repository.searcher.fields);
 
     var params = {id: queryid, node: nodenr, fields: 
this.repository.searcher.fields};
     var result;
@@ -251,7 +269,6 @@
             result = res.responseText;
         }
     });
-
     return result;
 }
 
@@ -268,7 +285,6 @@
 
 MMBaseRelater.prototype.bindSaverelation = function(div) {
     var self = this;
-    self.logger.debug("unbinding and binding relation forms");
     $(div).find('form.relation').unbind('submit');
     $(div).find("form.relation").each(function() {
         $(this).submit(function(ev) {
@@ -281,18 +297,56 @@
     var self = this;
     if (type == "repository") {
         $(rep).find("tr.click").each(function() {
-            $(this).click(function() {
-                self.relate(this);
+            var nr = self.getNumber(this);
+            if (typeof(self.related[nr]) != "undefined") {
+                $(this).toggleClass('selected');
+                self.logger.debug("found selected");
+            }
+            
+            $(this).click(function(ev) {
+                if (self.instant) {
+                    self.relate(this);
+                    self.commit(ev);
+                } else {
+                    $(this).toggleClass('selected');
+                    if (typeof(self.related[nr]) == "undefined") {
+                        self.related[nr] = this;
+                        self.logger.debug("selected (relate): " + nr);
+                    } else {
+                        self.related[nr] = null;
+                        self.logger.debug("unselected (relate): " + nr);
+                    }
+                }
                 return false;
-            })});
+            })
+        });
     }
     if (type == "current") {
         $(rep).find("tr.click").each(function() {
-            if ($(this).hasClass("new") || (self != null && self.canUnrelate)) 
{
-                $(this).click(function() {
-                    self.unrelate(this);
+            var rel = self.getRelationNumber(this);
+            if (typeof(self.deleterels[rel]) != "undefined") {
+                self.logger.debug(self.deleterels[rel]);
+                self.logger.debug("found selected");
+                $(this).toggleClass('selected');
+            }
+            
+            if ($(this).hasClass("new") || (self != null && self.canUnrelate)) 
{    // TODO: hasClass new moet nog wat mee
+                $(this).click(function(ev) {
+                    if (self.instant) {
+                        self.unrelate(this);
+                        self.commit(ev);
+                    } else {
+                        $(this).toggleClass('selected');
+                        if (typeof(self.deleterels[rel]) == "undefined") {
+                            self.deleterels[rel] = this;
+                            self.logger.debug("selected (unrelate): " + rel);
+                        } else {
+                            self.deleterels[rel] = null;
+                            self.logger.debug("unselected (unrelate): " + rel);
+                        }
+                    }
                     return false;
-                })
+                });
             }
         });
 
@@ -300,19 +354,20 @@
     }
 }
 
-
 MMBaseRelater.prototype.resetTrClasses  = function() {
     if (this.current != null) {
         this.current.searcher.resetTrClasses();
     }
     this.repository.searcher.resetTrClasses();
-
 }
 
 MMBaseRelater.prototype.getNumber = function(tr) {
     return  $(tr).find("td.node.number").text();
 }
 
+MMBaseRelater.prototype.getRelationNumber = function(tr) {
+    return $(tr).find("td.node.relation").text();
+}
 
 /**
  * Moves a node from the 'unrelated' repository to the list of related nodes.
@@ -338,7 +393,8 @@
 
         this.current.searcher.inc();
         this.repository.searcher.dec();
-
+        this.current.searcher.searchResults = {}; // empty search cache
+        
         // Classes
         if ($(tr).hasClass("removed")) {
             $(tr).removeClass("removed");
@@ -351,8 +407,19 @@
         $(tr).unbind();
 
         var self = this;
-        $(tr).click(function() {
-            self.unrelate(this);
+        $(tr).click(function(ev) {
+            if (self.instant) {
+                self.unrelate(this);
+                self.commit(ev);
+            } else {
+                // TODO: need to have relation nr here (maybe reload data?)
+                $(this).toggleClass('selected');
+                if (typeof(self.unrelated[number]) == "undefined") {
+                    self.unrelated[number] = this;
+                } else {
+                    self.unrelated[number] = null;
+                }
+            }
         });
     }
     if (this.relateCallBack != null) {
@@ -373,15 +440,17 @@
  */
 MMBaseRelater.prototype.unrelate = function(tr) {
     var number = this.getNumber(tr);
-    this.logger.debug("Unrelating " + number);
-
-    // relation tr's
+    var relnr = this.getRelationNumber(tr);
     var relationTrs = this.getRelationTrs(number);
-    this.logger.debug("+ relations: " + relationTrs.length);
+    this.logger.debug("Unrelating node #" + number + ", relation #" + relnr);
 
     // Set up data
-    if (typeof(this.unrelated[number]) == "undefined") {
-        this.unrelated[number] = tr;
+    if (typeof(this.unrelated[number]) == "undefined" && 
typeof(this.unrelated[relnr] == "undefined")) {
+        if (this.instant) {
+            this.unrelated[number] = tr;
+        } else {
+            this.unrelated[relnr] = tr;
+        }
     }
     this.related[number] = null;
 
@@ -392,6 +461,7 @@
 
     this.current.searcher.dec();
     this.repository.searcher.inc();
+    this.current.searcher.searchResults = {};    // TODO: maybe reload in 
stead of empty cache?
 
     // Classes
     if ($(tr).hasClass("new")) {
@@ -404,8 +474,19 @@
     // Events
     $(tr).unbind();
     var self = this;
-    $(tr).click(function() {
-        self.relate(this)
+    $(tr).click(function(ev) {
+        if (self.instant) {
+            self.relate(this);
+            self.commit(ev);
+        } else {
+            $(this).toggleClass('selected');
+            if (typeof(self.related[number]) == "undefined") {
+                self.related[number] = this;
+            } else {
+                self.related[number] = null;
+            }
+        }
+        return false;
     });
     $(this.div).trigger("mmsrUnrelate", [tr, this]);
 }
@@ -515,7 +596,6 @@
  * 
***********************************************************************************************************************
  */
 
-
 function MMBaseSearcher(d, r, type, logger) {
     this.div = d;
     this.div.searcher = this;
@@ -648,8 +728,10 @@
                         //console.log($(result).find("*").length);
                         $(rep).append($(result).find("> *"));
                         self.searchResults["" + offset] = result;
-                        self.addNewlyRelated(rep);
-                        self.deleteNewlyRemoved(rep);
+                        if (self.relater.instant) {
+                            self.addNewlyRelated(rep);
+                            self.deleteNewlyRemoved(rep);
+                        }
                         self.bindEvents(rep);
                         $(self.relater.div).trigger("mmsrPaged", [status, 
self.relater, self, anchor]);
                     }
@@ -661,8 +743,10 @@
         this.logger.debug("reusing " + offset);
         this.logger.debug(rep);
         $(rep).append($(result).find("> *"));
-        this.addNewlyRelated(rep);
-        this.deleteNewlyRemoved(rep);
+        if (this.relater.instant) {
+            this.addNewlyRelated(rep);
+            this.deleteNewlyRemoved(rep);
+        }
         this.bindEvents(rep);
         $(this.relater.div).trigger("mmsrPaged", [status, this.relater, this, 
anchor]);
     }
@@ -833,7 +917,7 @@
 MMBaseSearcher.prototype.filter = function(tr) {
     if (this.type == "repository" && this.relater != null) {
         var number = this.relater.getNumber(tr);
-        return this.relater.related[number] != null; // if already related, 
don't show again
+        return this.relater.related[number] != null; // already related, don't 
show again
     } else {
         return false;
     }
@@ -855,8 +939,6 @@
         this.relater.bindEvents(this.div, this.type);
     }
     var self = this;
-    this.logger.debug("binding to "+ $(this.div).find("a.navigate"));
-
     $(this.div).find("a.navigate").click(function(ev) {
         var anchor = ev.target;
         self.logger.debug("navigating " + anchor);
@@ -869,9 +951,10 @@
 MMBaseSearcher.prototype.resetTrClasses = function() {
     this.logger.debug("Resetting tr's");
     $(this.div).find("div.searchresult table tbody tr.click").each(function(i) 
{
+        $(this).removeClass("selected");
         $(this).removeClass("odd");
         $(this).removeClass("even");
-        $(this).addClass(i % 2 == 0 ? "even" : "odd");
+        $(this).addClass(i % 2 == 0 ? "odd" : "even");
     });
 }
 

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/node.tr.jspx
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/node.tr.jspx
       2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/node.tr.jspx
       2010-02-26 15:30:20 UTC (rev 41184)
@@ -11,11 +11,16 @@
       <mm:import externid="node"   required="true" from="request,parameters" />
       <mm:import externid="fields" from="request,parameters" />
       <mm:import externid="editrelations" from="request,parameters" />
-      <mm:import externid="customizedir" from="request,parameters" />
+      <mm:import externid="customizedir"  from="request,parameters" />
+      <mm:import externid="relation"      from="request,parameters" />
+      
       <mm:node referid="node">
         <mm:nodeinfo type="nodemanager" id="nodemanager" write="false" />
         <tr class="click ${(! empty status and status.index % 2 eq 0) ? 'even' 
: 'odd'} ${nodemanager}">
           <td class="node number"><mm:field name="number" /></td>
+          <td class="node relation">
+            <mm:compare referid="id" 
regexp="\w*current">${relation}</mm:compare>
+          </td>
           <td class="node guitype"><mm:nodeinfo type="guitype" /></td>
           <c:choose>
             <c:when test="${!empty fields}">

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.css.jsp
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.css.jsp
       2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.css.jsp
       2010-02-26 15:30:20 UTC (rev 41184)
@@ -126,7 +126,8 @@
   display: none;
 }
 
-.mm_related .searchable .node.guitype {
+.mm_related .searchable .node.guitype,
+.mm_related .searchable .node.relation {
   display: none;
 }
 

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
  2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
  2010-02-26 15:30:20 UTC (rev 41184)
@@ -12,8 +12,9 @@
       @version $Id$
   -->
   <jsp:output omit-xml-declaration="true" />
+  <jsp:directive.page 
import="org.mmbase.bridge.util.Queries,org.mmbase.bridge.NodeList" />
   <mm:import externid="id" from="parameters" required="true" />
-  <mm:import from="session" externid="${id}" id="query" required="true" />
+  <mm:import from="session" externid="${id}" id="query" jspvar="q" 
required="true" vartype="org.mmbase.bridge.Query" />
   <mm:content expires="0" type="application/xml" 
language="${query.cloud.locale}">
     <fmt:bundle basename="org.mmbase.searchrelate.resources.searchrelate">
       <mm:import externid="search" from="parameters" />
@@ -66,6 +67,7 @@
               <c:choose>
                 <c:when test="${!empty flds}">
                   <th class="node number" scope="col">#</th>
+                  <th class="node relation" scope="col">rel</th>
                   <th class="node guitype" scope="col"><fmt:message 
key="nodetype" /></th>
                   <mm:fieldlist nodetype="${query.nodeManager.name}" 
fields="$flds" varStatus="field">
                     <th class="fields ${field.current.name}" 
scope="col"><mm:fieldinfo type="guiname" /></th>
@@ -74,6 +76,7 @@
                 </c:when>
                 <c:otherwise>
                   <th class="node number" scope="col">#</th>
+                  <th class="node relation" scope="col">rel</th>
                   <th class="node guitype" scope="col"><fmt:message 
key="nodetype"  /></th>
                   <th class="node gui" scope="col"><jsp:text> </jsp:text></th>
                     <mm:fieldlist nodetype="${query.nodeManager.name}" 
type="list" varStatus="field">
@@ -88,7 +91,7 @@
           <!--  PAGING -->
           <tfoot class="paging ${size gt pagesize ? 'needed' : 'notneeded'}">
             <tr>
-              <td colspan="${colcount + 4}">
+              <td colspan="${colcount + 5}">
                 <mm:previousbatches maxtotal="${maxpages}" indexoffset="1">
                   <mm:first>
                     <c:if test="${offset != 0}">
@@ -121,13 +124,38 @@
           </tfoot>
           <!--  ACTUAL SEARCHRESULT -->
           <tbody>
+            
+            <mm:compare referid="id" regexp="\w*current">
+              <mm:import id="relations" vartype="List" />
+            </mm:compare>
+            
             <mm:listnodes varStatus="status" jspvar="n">
-              <mm:include page="node.tr.jspx" 
attributes="status,_n...@node,customizedir?,f...@fields?,editrelations?" />
+              
+              <mm:compare referid="id" regexp="\w*current">
+                <jsp:scriptlet>
+                  NodeList rl = Queries.getRelations(q, n);
+                  pageContext.setAttribute("rl", rl);
+                </jsp:scriptlet>
+                <mm:isnotempty referid="rl">
+                  <c:set var="i" value="0" />
+                  <mm:listnodes referid="rl" id="r">
+                    <c:if test="${i lt 1 and ! mm:contains(relations, r)}">
+                      <mm:import id="relations" reset="true" 
vartype="List">${relations},${r}</mm:import>
+                      <c:set var="i" value="${i + 1}" />
+                      <mm:import id="relation" reset="true">${r}</mm:import>
+                    </c:if>
+                  </mm:listnodes>
+                </mm:isnotempty>
+              </mm:compare>
+              
+              <mm:include page="node.tr.jspx" 
attributes="status,_n...@node,customizedir?,f...@fields?,editrelations?,relation?"
 />
+              
               <c:if test="${editrelations == true}">
                 <mm:compare referid="id" regexp="\w*current">
-                  <mm:include page="relations.tr.jspx" 
attributes="_n...@node,query,customizedir?,f...@fields?" />
+                  <mm:include page="relations.tr.jspx" 
attributes="_n...@node,query,customizedir?,f...@fields?,relation" />
                 </mm:compare>
               </c:if>
+              
             </mm:listnodes>
           </tbody>
         </table>

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspf
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspf
        2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspf
        2010-02-26 15:30:20 UTC (rev 41184)
@@ -4,3 +4,14 @@
 <mm:listnodes referid="unrelated" jspvar="n">
  <jsp:expression>Queries.removeFromResult(current, n)</jsp:expression>
 </mm:listnodes>
+
+
+<mm:present referid="deleted">
+  <mm:listnodes referid="deleted">
+    <mm:maydelete>
+      <mm:hasfield name="dnumber">
+        <mm:field name="dnumber" /> <mm:deletenode /> 
+      </mm:hasfield>
+    </mm:maydelete>
+  </mm:listnodes>
+</mm:present>

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspx
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspx
        2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relate.jspx
        2010-02-26 15:30:20 UTC (rev 41184)
@@ -11,6 +11,7 @@
       <mm:import externid="id" required="true" />
       <mm:import externid="related"   vartype="list" required="true" />
       <mm:import externid="unrelated" vartype="list" required="true" />
+      <mm:import externid="deleted"   vartype="list" />
       <mm:import from="session" externid="${id}_current" id="current" 
required="true" jspvar="current" vartype="org.mmbase.bridge.Query" />
       <mm:import externid="transaction" />
       <mm:isempty referid="transaction">

Modified: 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relations.tr.jspx
===================================================================
--- 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relations.tr.jspx
  2010-02-26 12:35:47 UTC (rev 41183)
+++ 
mmbase/branches/MMBase-1_9/applications/searchrelate/src/main/webapp/mmbase/searchrelate/relations.tr.jspx
  2010-02-26 15:30:20 UTC (rev 41184)
@@ -7,8 +7,9 @@
   <mm:content expires="0" type="application/xml">
     <mm:cloud method="asis">
 
-      <mm:import externid="fields" from="request,parameters" />
-      <mm:import externid="node" from="request,parameters" />
+      <mm:import externid="fields"   from="request,parameters" />
+      <mm:import externid="node"     from="request,parameters" />
+      <mm:import externid="relation" from="request,parameters" />
       <mm:import externid="id" from="request,parameters" />
       <mm:import from="session" externid="${id}" id="q" jspvar="q" 
vartype="org.mmbase.bridge.Query" />
 
@@ -26,21 +27,25 @@
           </c:otherwise>
         </c:choose>
         
-        <jsp:scriptlet>
-          NodeList rl = Queries.getRelations(q, n);
-          pageContext.setAttribute("rl", rl);
-        </jsp:scriptlet>
+        <c:if test="${empty relation}">
+          <jsp:scriptlet>
+            NodeList rl = Queries.getRelations(q, n);
+            pageContext.setAttribute("rl", rl);
+          </jsp:scriptlet>
+          <mm:listnodes referid="rl" id="rel">
+            <mm:import id="relation" reset="true">${rel}</mm:import>
+          </mm:listnodes>
+        </c:if>
       </mm:node>
       
-      <mm:listnodes referid="rl" id="relation">
+      <mm:node number="$relation">
         <mm:nodeinfo type="nodemanager" id="nodemanager" write="false" />
         <tr class="relation relation_${relation} node_${node} ${nodemanager}">
           <td colspan="${colcount + 3}">
             <mm:form styleClass="relation">
               <fieldset>
                 <legend>${nodemanager} relation</legend>
-                <input name="id"   type="hidden" value="${relation}" />
-                
+                <input name="id" type="hidden" value="${relation}" />
                 <mm:fieldlist type="edit" id="fields${relation}" 
varStatus="status">
                   <mm:maywrite><mm:import reset="true" 
id="formtype">input</mm:import></mm:maywrite>
                   <mm:maywrite inverse="true"><mm:import 
id="formtype">guivalue</mm:import></mm:maywrite>
@@ -53,7 +58,6 @@
                     <mm:fieldinfo type="$formtype" />
                   </div>
                 </mm:fieldlist>
-                
                 <mm:maywrite>
                   <div class="relationrow submit">
                     <input type="submit" name="changerel" value="Change" />
@@ -61,10 +65,10 @@
                 </mm:maywrite>
               </fieldset>
             </mm:form>
+          </td>
+        </tr>          
+      </mm:node>
 
-          </td>
-        </tr>
-      </mm:listnodes>
     </mm:cloud>
   </mm:content>
 </jsp:root>

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to