r13642 - in MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget: browser skins/referencebrowser

"Emmanuel Masker" <[email protected]> Wed, 18 May 2011 15:03:06 +0000
Newsgroups gmane.comp.web.zope.plone.archetypes.cvs
Message-ID <[email protected]>
Author: emasker
Date: Wed May 18 15:03:05 2011
New Revision: 13642

Modified:
   MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/popup.pt
   MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/view.py
   MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/skins/referencebrowser/referencebrowser.js
Log:
behavior through JQuery to handle cancel button and save button as expected


Modified: MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/popup.pt
==============================================================================
--- MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/popup.pt	(original)
+++ MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/popup.pt	Wed May 18 15:03:05 2011
@@ -11,7 +11,6 @@
       tal:define="fieldName view/fieldName;
                   multiValued view/multiValued;
                   fieldRealName view/fieldRealName;
-                  editForm view/getEditForm;
                   at_obj nocall:view/at_obj;
                   widget nocall:view/widget;
                   title python:widget.Label(at_obj);
@@ -160,7 +159,14 @@
                 tal:condition="view/getPermissionToAdd"
                 tal:attributes="action request/getURL"
                 id="add">
-             <input type="submit" name="add" value="ajouter"/>
+                <select tal:repeat="typetocreate view/getAllowedTypes">
+                   <option tal:content="typetocreate"> </option>
+                </select>
+               <input type="hidden" name="destination_directory_to_add" value=""
+                      tal:attributes="value view/getDestinationDirectoryToAdd" />
+              <input type="hidden" name="fieldName" value=""
+                     tal:attributes="value fieldName" />        
+              <input type="submit" name="add" value="add"/>
          </form>
      </p>
 

Modified: MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/view.py
==============================================================================
--- MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/view.py	(original)
+++ MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/browser/view.py	Wed May 18 15:03:05 2011
@@ -327,28 +327,13 @@
 
     def getPermissionToAdd(self):
         """ return the permission flag to add an item """
-        return self.widget.permission_to_add_item
-
-    def getEditForm(self):
-        """return edit form for Architect object"""
-        urltool = getToolByName(self.context, "portal_url")
-        portal  = urltool.getPortalObject()
-        try:
-            architect = portal.invokeFactory("Architect", "tmp_archi")
-        except:
-            pass
-        archi = getattr(portal, "tmp_archi")
-        #template = getMultiAdapter((self.context, self.request),
-                                #name="architect_edit")
-        #archiEdit = getMultiAdapter((archi, self.request,), IBrowserView)
-        return archi.base_edit()
-    def getEditUrl(self):
-        urltool = getToolByName(self.context, "portal_url")
-        portal  = urltool.getPortalObject()
-        try:
-            architect = portal.invokeFactory("Architect", "tmp_archi")
-        except:
-            pass
-        archi = getattr(portal, "tmp_archi")
-        return archi.absolute_url()+"/edit"        
+        return self.widget.permission_to_add_item  
+    
+    def getDestinationDirectoryToAdd(self):
+        """ return the directory where to add the created item
+        if the value is null, the item will be created in current directory"""
+        return self.widget.destination_directory_to_add    
         
+    def getAllowedTypes(self):
+        """return list of allowed types that can be added"""
+        return self.allowed_types
\ No newline at end of file

Modified: MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/skins/referencebrowser/referencebrowser.js
==============================================================================
--- MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/skins/referencebrowser/referencebrowser.js	(original)
+++ MoreFieldsAndWidgets/archetypes.referencebrowserwidget/branches/livesearch/src/archetypes/referencebrowserwidget/skins/referencebrowser/referencebrowser.js	Wed May 18 15:03:05 2011
@@ -1,3 +1,5 @@
+var globalsrcfilter='';
+
 jq(function() {
 
   // Move the overlay div to be a direct child
@@ -15,6 +17,7 @@
            var wrap = this.getOverlay().find('.overlaycontent');
            var src = this.getTrigger().attr('src');
            var srcfilter = src + ' >*';
+           globalsrcfilter = srcfilter;
            wrap.data('srcfilter', srcfilter);
            jq('div#content').data('overlay', this);
            resetHistory();
@@ -42,6 +45,7 @@
       var src = target.attr('href');
       var wrap = target.parents('.overlaycontent');
       var srcfilter = src + ' >*';
+      globalsrcfilter = srcfilter;
       pushToHistory(wrap.data('srcfilter'));
       wrap.data('srcfilter', srcfilter);
       // the history we are constructing here is destinct from the
@@ -92,6 +96,7 @@
           'select[name=path] :selected';
       var src = jq(src_selector).attr('value');
       var srcfilter = src + ' >*';
+      globalsrcfilter = srcfilter;      
       refreshOverlay(wrap, srcfilter, '');
       return false;
       });
@@ -102,6 +107,7 @@
       var src = target.attr('href');
       var wrap = target.parents('.overlaycontent');
       var srcfilter = src + ' >*';
+      globalsrcfilter = srcfilter;      
       refreshOverlay(wrap, srcfilter, '');
       return false;
       });
@@ -122,6 +128,7 @@
         '&fieldName=' + fieldname + '&multiValued=' + multi +
         '&close_window' + close_window + '&at_url=' + at_url;
       var srcfilter = src + '?' + qs + ' >*';
+      globalsrcfilter = srcfilter;      
       pushToHistory(wrap.data('srcfilter'));
       wrap.data('srcfilter', srcfilter);
       refreshOverlay(wrap, srcfilter, '');
@@ -129,13 +136,23 @@
       });
       
    //the edit form
-   jq('form#add').live('click',
-                                           function(event) {
+   jq('[id^=atrb_] form#add').live('click',
+                  function(event) {
       var target = jq(this);
       var src = target.parents('form').attr('action');
       var wrap = target.parents('.overlaycontent'); 
-      var startup = wrap.find('input[name=startup_directory]').attr('value');      
-      var srcfilter = startup + '/createObject?type_name=Architect #content';
+      var typetocreate = target.find('select option:selected').text();
+      var startup = wrap.find('input[name=startup_directory]').attr('value'); 
+      var destinationdirectory = wrap.find('input[name=destination_directory_to_add]').attr('value');
+      
+      if (destinationdirectory) {     
+         var srcfilter = destinationdirectory + '/createObject?type_name=' + typetocreate + ' #content';
+         }
+      else
+      {
+          var srcfilter = startup + '/createObject?type_name=' + typetocreate + ' #content';
+          }
+          
       pushToHistory(wrap.data('srcfilter'));
       wrap.data('srcfilter', srcfilter);
       wrap.load(srcfilter, function() {
@@ -145,6 +162,50 @@
       return false;              
                 });
 
+   //the cancel form
+   jq('[id^=atrb_] input[name=form.button.cancel]').live('click',
+                  function(event) {
+      var $this = jq(this);
+      //get the action to perform for this form
+      var src = $this.parents('form').attr('action');
+      var formvalues = $this.parents('form').serialize() + '&form.button.cancel=Annuler';      
+      //perform action to cancel creation of the item
+      jq.post(src,formvalues, function(data) {
+          var wrap = jq('.overlaycontent');
+          wrap.load(globalsrcfilter);
+          }); 
+      //avoid default action
+      return false;              
+                });
+                
+   //the save button form
+   jq('[id^=atrb_] input[name=form.button.save]').live('click',
+                  function(event) {
+      var $this = jq(this);
+      //get the action to perform for this form
+      var src = $this.parents('form').attr('action');
+      var urlParts = src.split('/');
+      urlParts.pop();
+      urlParts.push('test_edit');
+      src = urlParts.join('/');
+      var formvalues = $this.parents('form').serialize() + '&form.button.save=Enregistrer';
+      //perform action to record this item at the right destination folder
+      jq.post(src, formvalues, function(data) {
+           var $this = jq(this);
+           var wrap = $this.parents('.overlaycontent');
+           var fieldname = wrap.find('input[name=fieldName]').attr('value');
+           //var multi = wrap.find('input[name=multiValued]').attr('value');
+           //var tablerow = target.parent().parent();
+           //var title = tablerow.find('strong').html();
+           //var uid = $this.attr('rel');
+          //refbrowser_setReference('ref_browser_' + fieldname,
+          //                        uid, title, 1));          
+          jq('div#content').data('overlay').close()
+          }); 
+      //avoid default action
+      return false;              
+                });                
+
 });
 
 

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay