diff --git a/www/extras/templatePreview.js b/www/extras/templatePreview.js index 1d1266d21..5f3a5a7e4 100644 --- a/www/extras/templatePreview.js +++ b/www/extras/templatePreview.js @@ -5,7 +5,7 @@ $connect = YAHOO.util.Connect, $json = YAHOO.lang.JSON, $dom = YAHOO.util.Dom, - assetId, panel, panelRendered, onHide; + assetId, panel, panelRendered, onHide, previewPanel; function absolute(url) { // We have to do this innerHTML trick or it doesn't work on IE6 @@ -17,7 +17,7 @@ } function base() { - return absolute('_#').slice(0, -2); + return absolute('_#').slice(0, -2) || '/'; } function runConfigDialog(k) { @@ -35,6 +35,25 @@ } } + function on_fetch(o) { + var h = o.getResponseHeader, + start = h['X-Webgui-Template-Variables-Start'], + end = h['X-Webgui-Template-Variables-End'], + text = o.responseText, + si = text.indexOf(start) + start.length, + ei = text.indexOf(end), + raw = text.slice(si, ei), + vars = $json.parse(raw), + pretty = $json.stringify(vars, null, 4), + vbox = document.getElementById('previewVars'), + k = o.argument; + + vbox.value = pretty; + if (k) { + k(pretty); + } + } + function fetch(k) { var url = document.getElementById('previewFetchUrl').value, abs, b; @@ -57,23 +76,8 @@ $connect.initHeader('X-Webgui-Template-Variables', assetId); $connect.asyncRequest( 'GET', url, { - success: function (o) { - var h = o.getResponseHeader, - start = h['X-Webgui-Template-Variables-Start'], - end = h['X-Webgui-Template-Variables-End'], - text = o.responseText, - si = text.indexOf(start) + start.length, - ei = text.indexOf(end), - raw = text.slice(si, ei), - vars = $json.parse(raw), - pretty = $json.stringify(vars, 0, 4), - vbox = document.getElementById('previewVars'); - - vbox.value = pretty; - if (k) { - k(pretty); - } - }, + argument: k, + success: on_fetch, failure: function (o) { alert(o.statusText); } @@ -84,7 +88,6 @@ function withVariables(k) { var inBox = document.getElementById('previewVars').value; - function finish(raw) { var parsed, flat; try { @@ -113,29 +116,74 @@ variables : v, parser : document.getElementById('parser_formId').value, func : 'preview' - }, form = document.createElement('form'), input, key; + }, + form = document.createElement('form'), + target = document.getElementById('preview_target'), + iframe, setSize, input, key; + + if (target) { + previewPanel.show(); + } + else { + target = document.createElement('div'); + target.id = 'preview_target'; + target.innerHTML = + '
' + + '
' + + '