in xooki.js [1016:1076]
(function(page, parent, index, level, prefix) {
if (prefix.length > 0) {
page.meta = xooki.util.mix({id: page.id}, page.meta);
page.id = prefix + page.id;
}
xooki.toc.pages[page.id] = page;
page.meta = xooki.util.mix({
index: index,
level: level,
getSerializeValue: function(o, k) {
if (k == 'id' && typeof this.id != 'undefined') {
return this.id;
} else {
return o[k];
}
}
}, page.meta);
page.meta.parent = parent;
if (typeof page.importNode != 'undefined' && !page.isImported) {
// this node requires to import another xooki TOC
importedTocUrl = u(page.importRoot + '/toc.json');
importedToc = xooki.json.loadURL(importedTocUrl);
// look for the imported node in the importedTOC and import it in main TOC
(function(page, parent, index, level, prefix, importedToc, node, id, populateFunction) {
if (node.id == id) {
xooki.util.mix(node, page, false);
page.id = id;
page.isImported = true;
page.meta = xooki.util.mix({
isTransient: function(k) {
// only title, importRoot and importNode should be serialized
return k != 'title' && k != 'importRoot' && k != 'importNode';
}
}, page.meta);
if (xooki.c.curPageId.indexOf(prefix) == 0) {
// the current page is in this imported TOC
xooki.toc.actualRoot = importedToc;
xooki.toc.url = u(page.importRoot + '/toc.json');
xooki.toc.importRoot = prefix;
}
populateFunction(page, parent, index, level, prefix);
return true;
} else if (typeof node.children != 'undefined') {
for (var i=0; i<node.children.length; i++) {
if (arguments.callee(page, parent, index, level, prefix, importedToc, node.children[i], id, populateFunction)) {
return true;
}
}
}
return false;
})(page, parent, index, level, page.importRoot+'/', importedToc, importedToc, page.importNode, arguments.callee);
}
if (typeof page.children == 'undefined') {
page.children = [];
} else {
for (var i=0; i<page.children.length; i++) {
arguments.callee(page.children[i], page, i, level+1, prefix); // recurse
}
}
})(xooki.toc, null, 0, -1, '');