Use a ajax fetch for initial call, hardcoded for now

This commit is contained in:
Franklin Kingma 2012-06-29 15:39:35 +02:00 committed by David Glick
parent 8e1ef3231b
commit 96165904fc
4 changed files with 32 additions and 31 deletions

View File

@ -34,6 +34,6 @@
/>
<!-- Demo -->
<include file="demo.zcml" />
<!-- <include file="demo.zcml" /> -->
</configure>

View File

@ -14,9 +14,6 @@
</div>
<div class="contenttreeWidget"
tal:attributes="id string:${view/id}-contenttree">
<ul class="navTree navTreeLevel0">
<li tal:replace="structure view/render_tree" />
</ul>
</div>
<div class="contenttreeWindowActions">
<input class="context contentTreeAdd" type="button" i18n:attributes="value label_contenttree_add" value="Add"/> <input class="standalone contentTreeCancel" i18n:attributes="value label_contenttree_cancel" type="button" value="Cancel"/>

View File

@ -1,6 +1,6 @@
// This is based on jQueryFileTree by Cory S.N. LaViska
if(jQuery) (function($){
$.extend($.fn, {
showDialog: function() {
$(document.body).append($(document.createElement("div")).addClass("contenttreeWindowBlocker"))
@ -12,7 +12,7 @@ if(jQuery) (function($){
$(this).css({
'left': $(window).width() * 0.125,
'top': $(window).height() * 0.125
})
});
},
contentTreeAdd: function() {
var contenttree_window = (this).parents(".contenttreeWindow");
@ -35,13 +35,13 @@ if(jQuery) (function($){
// Defaults
if(!o) var o = {};
if(o.script == undefined) o.script = 'fetch';
if(o.folderEvent == undefined) o.folderEvent = 'click';
if(o.selectEvent == undefined) o.selectEvent = 'click';
if(o.expandSpeed == undefined) o.expandSpeed = -1;
if(o.collapseSpeed == undefined) o.collapseSpeed = -1;
if(o.multiFolder == undefined) o.multiFolder = true;
if(o.multiSelect == undefined) o.multiSelect = false;
@ -53,7 +53,7 @@ if(jQuery) (function($){
bindTree(c);
});
}
function handleFolderEvent() {
var li = $(this).parent();
if(li.hasClass('collapsed')) {
@ -61,12 +61,12 @@ if(jQuery) (function($){
li.parent().find('ul:visible').slideUp({ duration: o.collapseSpeed });
li.parent().find('li.navTreeFolderish').removeClass('expanded').addClass('collapsed');
}
if(li.find('ul').length == 0)
loadTree(li, escape($(this).attr('href')), escape($(this).attr('rel')));
else
li.find('ul:hidden').slideDown({ duration: o.expandSpeed });
li.removeClass('collapsed').addClass('expanded');
} else {
li.find('ul').slideUp({ duration: o.collapseSpeed });
@ -74,7 +74,7 @@ if(jQuery) (function($){
}
return false;
}
function handleSelectEvent(event) {
var li = $(this).parent();
var selected = true;
@ -105,9 +105,10 @@ if(jQuery) (function($){
}
$(this).each(function() {
bindTree($(this));
loadTree(this, o.rootUrl, 0);
});
}
});
})(jQuery);

View File

@ -59,7 +59,6 @@ class Fetch(BrowserView):
view_instance)
def __call__(self):
# We want to check that the user was indeed allowed to access the
# form for this widget. We can only this now, since security isn't
# applied yet during traversal.
@ -138,6 +137,7 @@ class ContentTreeBase(Explicit):
return self.bound_source.getTermByBrain(brain)
def render_tree(self):
import pdb; pdb.set_trace( )
content = self.context
if not IAcquirer.providedBy(content):
content = getSite()
@ -178,7 +178,22 @@ class ContentTreeBase(Explicit):
.click( function () {
var parent = $(this).parents("*[id$='-autocomplete']")
var window = parent.siblings("*[id$='-contenttree-window']")
window.showDialog();
window.showDialog('%(url)s', %(expandSpeed)d);
$('#%(id)s-contenttree').contentTree(
{
script: '%(url)s',
folderEvent: '%(folderEvent)s',
selectEvent: '%(selectEvent)s',
expandSpeed: %(expandSpeed)d,
collapseSpeed: %(collapseSpeed)s,
multiFolder: %(multiFolder)s,
multiSelect: %(multiSelect)s,
rootUrl: '%(rootUrl)s'
},
function(event, selected, data, title) {
// alert(event + ', ' + selected + ', ' + data + ', ' + title);
}
);
}).insertAfter($(this));
});
$('#%(id)s-contenttree-window').find('.contentTreeAdd').unbind('click').click(function () {
@ -188,20 +203,7 @@ class ContentTreeBase(Explicit):
$(this).contentTreeCancel();
});
$('#%(id)s-widgets-query').after(" ");
$('#%(id)s-contenttree').contentTree(
{
script: '%(url)s',
folderEvent: '%(folderEvent)s',
selectEvent: '%(selectEvent)s',
expandSpeed: %(expandSpeed)d,
collapseSpeed: %(collapseSpeed)s,
multiFolder: %(multiFolder)s,
multiSelect: %(multiSelect)s,
},
function(event, selected, data, title) {
// alert(event + ', ' + selected + ', ' + data + ', ' + title);
}
);
""" % dict(url=url,
id=self.name.replace('.', '-'),
folderEvent=self.folderEvent,
@ -210,6 +212,7 @@ class ContentTreeBase(Explicit):
collapseSpeed=self.collapseSpeed,
multiFolder=str(self.multiFolder).lower(),
multiSelect=str(self.multi_select).lower(),
rootUrl='/Plone',
name=self.name,
klass=self.klass,
title=self.title,