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