# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1240933292 -7200 # Node ID f3c26a08767280b6bb585eb6975a30973f26432c # Parent b2160df84f2f1daabda0032f4b69284dc9c2c43c# Parent 9655f6eec6756a2c385aac7f0f0f660dc234eee1 merge diff -r 9655f6eec675 -r f3c26a087672 web/data/cubicweb.ajax.js --- a/web/data/cubicweb.ajax.js Tue Apr 28 17:07:07 2009 +0200 +++ b/web/data/cubicweb.ajax.js Tue Apr 28 17:41:32 2009 +0200 @@ -9,17 +9,37 @@ var JSON_BASE_URL = baseuri() + 'json?'; +function _loadAjaxHtmlHead(node, head, tag, srcattr) { + var loaded = []; + jQuery('head ' + tag).each(function(i) { + loaded.push(this.getAttribute(srcattr)); + }); + node.find(tag).each(function(i) { + if (!loaded.contains(this.getAttribute(srcattr))) { + jQuery(this).appendTo(head); + } + }); + node.find(tag).remove(); +} + /* * inspect dom response, search for a
node and * put its content into the real document's head. * This enables dynamic css and js loading and is used by replacePageChunk */ function loadAjaxHtmlHead(node) { - jQuery(node).find('div.ajaxHtmlHead').appendTo(jQuery('head')); + var head = jQuery('head'); + var node = jQuery(node).find('div.ajaxHtmlHead'); + _loadAjaxHtmlHead(node, head, 'script', 'src'); + _loadAjaxHtmlHead(node, head, 'link', 'href'); + node.find('*').appendTo(head); +} + +function preprocessAjaxLoad(node, newdomnode) { + loadAjaxHtmlHead(newdomnode); } function postAjaxLoad(node) { - loadAjaxHtmlHead(node); // find sortable tables if there are some if (typeof(Sortable) != 'undefined') { Sortable.sortTables(node); @@ -37,6 +57,7 @@ if (typeof roundedCornersOnLoad != 'undefined') { roundedCornersOnLoad(); } + loadDynamicFragments(node); jQuery(CubicWeb).trigger('ajax-loaded'); } @@ -60,6 +81,7 @@ } ajax(url, data, function(response) { var domnode = getDomFromResponse(response); + preprocessAjaxLoad(node, domnode); if (mode == 'swap') { var origId = node.id; node = swapDOM(node, domnode); @@ -83,8 +105,12 @@ /* finds each dynamic fragment in the page and executes the * the associated RQL to build them (Async call) */ -function loadDynamicFragments() { - var fragments = jQuery('div.dynamicFragment'); +function loadDynamicFragments(node) { + if (node) { + var fragments = jQuery(node).find('div.dynamicFragment'); + } else { + var fragments = jQuery('div.dynamicFragment'); + } if (fragments.length == 0) { return; } @@ -106,7 +132,7 @@ } } -jQuery(document).ready(loadDynamicFragments); +jQuery(document).ready(function() {loadDynamicFragments();}); //============= base AJAX functions to make remote calls =====================// diff -r 9655f6eec675 -r f3c26a087672 web/views/basecomponents.py --- a/web/views/basecomponents.py Tue Apr 28 17:07:07 2009 +0200 +++ b/web/views/basecomponents.py Tue Apr 28 17:41:32 2009 +0200 @@ -154,7 +154,6 @@ class SeeAlsoVComponent(RelatedObjectsVComponent): """display any entity's see also""" id = 'seealso' - property_defs = VISIBLE_PROP_DEF context = 'navcontentbottom' rtype = 'see_also' target = 'object'