Author: michiel
Date: 2010-03-30 12:02:30 +0200 (Tue, 30 Mar 2010)
New Revision: 41667

Added:
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/PathSearcher.js.jsp
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/path/
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/path/searcher.jspx
Modified:
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
Log:
mm-sr:pathsearch plus some cleanups

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
      2010-03-30 10:01:24 UTC (rev 41666)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
      2010-03-30 10:02:30 UTC (rev 41667)
@@ -29,6 +29,30 @@
 $(document).ready(
     function() {
         List.prototype.init(document, false);
+
+        // we allow mm-sr:search to be used for your own implementation of 
searcher.
+        // This arranges the version arranged by mm-sr:relatednodes itself
+        // (recognizable by the class).
+        $("div.mm_related.relatednodes_search_simple").
+            live("mmsrRelate",
+                 function (e, tr, relater) {
+                     var number = relater.getNumber(tr);
+                     relater.repository.searcher.dec();
+                     $(tr).addClass("removed");
+                     relater.repository.searcher.resetTrClasses();
+                     $(e.target).trigger("mmsrAddToList", [number]);
+                 });
+
+        // i.e, we bind to the 'mmsrRelate' event to put the selected
+        // tr in the list as a new item.
+        $("div.mm_related").
+            live("mmsrAddToList",
+                 function (e, number) {
+                     var div = $(e.target).closest("div.list")[0];
+                     var list = div.list;
+                     list.relate(e, number);
+                 });
+
     }
 );
 
@@ -149,20 +173,8 @@
         this.validator.validatePage(false);
     }
 
-    // If a searcher was requested for this list, then set that up too.
-    if (this.search) {
-        // i.e, we bind to the 'mmsrRelate' event to put the selected
-        // tr in the list as a new item.
-        this.find("mm_related", "div").bind("mmsrRelate", function (e, relate, 
relater) {
-                self.relate(e, relate, relater);
-                relater.repository.searcher.dec();
-                $(relate).addClass("removed");
-                relater.repository.searcher.resetTrClasses();
-            });
-    }
 
 
-
     // Whether at this moment a save is performed.
     this.saving = false;
 
@@ -888,13 +900,14 @@
     //console.log(order);
 };
 
-List.prototype.relate = function(event, relate, relater) {
+List.prototype.relate = function(event, number) {
     var list = this;
     var params = this.getListParameters();
     var url = "${mm:link('/mmbase/searchrelate/list/relate.jspx')}";
-    params.destination = relater.getNumber(relate);
+    params.destination = number;
     params.order = this.getOrder(event.target);
-    $.ajax({async: false, url: url, type: "GET", dataType: "xml", data: params,
+    $.ajax({async: false,
+            url: url, type: "GET", dataType: "xml", data: params,
             complete: function(res, status){
                 try {
                     if ( status == "success" || status == "notmodified" ) {

Added: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/PathSearcher.js.jsp
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/PathSearcher.js.jsp
                              (rev 0)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/PathSearcher.js.jsp
      2010-03-30 10:02:30 UTC (rev 41667)
@@ -0,0 +1,72 @@
+/*
+<%@ taglib uri="http://www.mmbase.org/mmbase-taglib-2.0"; prefix="mm" %>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"; %>
+<mm:content type="text/javascript" language="${param.locale}">
+<fmt:bundle basename="org.mmbase.searchrelate.resources.searchrelate">
+*/
+/**
+ * Generic mmbase search & relate tool. Javascript part.
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: Searcher.js.jsp 41486 2010-03-17 22:35:11Z michiel $
+ */
+
+
+
+$(document).ready(
+    function() {
+        $("table.mmsr_pathsearch").each(
+            function() {
+                this.pathSearcher = new MMBasePathSearcher(this);
+            });
+    });
+
+$("div.mm_related.pathsearcher_ontheway").
+    live("mmsrRelate",
+         function (e, tr, relater) {
+             var number = relater.getNumber(tr);
+             var pathSearcher = 
$(e.target).closest("table.mmsr_pathsearch")[0].searcher;
+             var index = $(e.target).closest("td").index() + 1;
+             pathSearcher.fillStep(index + 1, number);
+         });
+
+$("div.mm_related.pathsearcher_end").
+    live("mmsrRelate",
+         function (e, tr, relater) {
+             var number = relater.getNumber(tr);
+             relater.repository.searcher.dec();
+             $(tr).addClass("removed");
+             relater.repository.searcher.resetTrClasses();
+             $(e.target).trigger("mmsrAddToList", [number]);
+         });
+
+function MMBasePathSearcher(table) {
+    this.table = table;
+    this.table.searcher = this;
+    this.pid = $(this.table).attr("id");
+    this.searcher = $(this.table).find("> tr > td > div");
+}
+
+MMBasePathSearcher.prototype.fillStep = function(step, node) {
+    var td = $(this.table).find("> tr > td")[step - 1];
+    var params = {};
+    params.step = (step - 1) * 2;
+    params.node = node;
+    params.pid = this.pid;
+    var url = "${mm:link('/mmbase/searchrelate/path/searcher.jspx')}";
+    $(td).load(url, params, function() {
+                   $(td).find("div.mm_related").each(
+                       function() {
+                           if (this.relater == null) {
+                               this.relater = new MMBaseRelater(this);
+                           }
+                       });
+               });
+
+}
+
+
+/*
+</fmt:bundle>
+</mm:content>
+*/
\ No newline at end of file

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
  2010-03-30 10:01:24 UTC (rev 41666)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/Searcher.js.jsp
  2010-03-30 10:02:30 UTC (rev 41667)
@@ -26,6 +26,15 @@
  */
 
 
+$(document).ready(
+    function(){
+        $("body").find("div.mm_related").each(
+            function() {
+                if (this.relater == null) {
+                    this.relater = new MMBaseRelater(this);
+                }
+            });
+    });
 
 /**
  * Logger, a bit like org.mmbase.util.logging.Logger. Logs to firebug console 
or a dedicated area.

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
        2010-03-30 10:01:24 UTC (rev 41666)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/page.jspx
        2010-03-30 10:02:30 UTC (rev 41667)
@@ -124,13 +124,13 @@
           </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:compare referid="id" regexp="\w*current">
                 <jsp:scriptlet>
                   NodeList rl = Queries.getRelations(q, n);
@@ -147,15 +147,15 @@
                   </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?,relation" />
                 </mm:compare>
               </c:if>
-              
+
             </mm:listnodes>
           </tbody>
         </table>

Added: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/path/searcher.jspx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/path/searcher.jspx
                               (rev 0)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/path/searcher.jspx
       2010-03-30 10:02:30 UTC (rev 41667)
@@ -0,0 +1,42 @@
+<div
+    class="searchresult ${param.extraClass}"
+    xmlns:jsp="http://java.sun.com/JSP/Page";
+    xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";
+    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt";
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
+    xmlns:mm-sr="http://www.mmbase.org/tags/mm/searchrelate";
+    xmlns:mm-srt="urn:jsptagdir:/WEB-INF/tags/mm/searchrelate"
+    >
+
+  <jsp:output omit-xml-declaration="true" />
+  <jsp:directive.page 
import="org.mmbase.bridge.util.Queries,org.mmbase.bridge.*" />
+
+  <mm:import externid="pid" from="parameters" required="true" />
+  <mm:import from="session" externid="${pid}" id="query" jspvar="q" 
required="true" vartype="org.mmbase.bridge.Query" />
+
+  <mm:cloud>
+    <mm:import externid="step" vartype="integer" required="true"  
jspvar="step"/>
+    <mm:import externid="node" required="${step gt 0}"   />
+
+    <jsp:scriptlet>Node node = null;</jsp:scriptlet>
+    <mm:present referid="node">
+      <mm:node referid="node" jspvar="n">
+        <jsp:scriptlet>node = n;</jsp:scriptlet>
+      </mm:node>
+    </mm:present>
+    <jsp:scriptlet>
+      NodeQuery nodeQuery = Queries.getSubQuery(q, node, step);
+      pageContext.setAttribute("nodeQuery", nodeQuery);
+    </jsp:scriptlet>
+
+    <mm-sr:relate
+        styleClass="pathsearcher_${fn:length(query.steps) - 1 eq step ? 'end' 
: 'ontheway'}"
+        repository="${nodeQuery}"
+        load="false"
+        implicitRepository="true"
+        create="false"
+        />
+  </mm:cloud>
+
+</div>

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

Reply via email to