Skip to content
Snippets Groups Projects
Commit f6dad9fd authored by Michael Klier's avatar Michael Klier
Browse files

new event ACTION_EXPORT_POSTPROCESS

	This event allows action plugins to postprocess the output of a page
	requested for export.

	Event data:
		data[id]      -- the page id
		data[mode]    -- requested export mode
		data[headers] -- headers of the requested export mode
		data[output]  -- export output

darcs-hash:20080828200321-23886-6676682f33fa5c2d9f0c0a21fa26154baf4e137a.gz
parent 98930390
No related branches found
No related tags found
No related merge requests found
......@@ -392,69 +392,93 @@ function act_edit($act){
}
/**
* Handle 'edit', 'preview'
* Export a wiki page for various formats
*
* Triggers ACTION_EXPORT_POSTPROCESS
*
* Event data:
* data['id'] -- page id
* data['mode'] -- requested export mode
* data['headers'] -- export headers
* data['output'] -- export output
*
* @author Andreas Gohr <andi@splitbrain.org>
* @author Michael Klier <chi@chimeric.de>
*/
function act_export($act){
global $ID;
global $REV;
global $conf;
global $lang;
$pre = '';
$post = '';
$output = '';
$headers = array();
// search engines: never cache exported docs! (Google only currently)
header('X-Robots-Tag: noindex');
$headers['X-Robots-Tag'] = 'noindex';
// no renderer for this
if($act == 'export_raw'){
header('Content-Type: text/plain; charset=utf-8');
print rawWiki($ID,$REV);
exit;
$mode = substr($act,7);
switch($mode) {
case 'raw':
$headers['Content-Type'] = 'text/plain; charse=utf-8';
$output = rawWiki($ID,$REV);
break;
case 'xhtml':
$pre .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' . DOKU_LF;
$pre .= ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . DOKU_LF;
$pre .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"' . DOKU_LF;
$pre .= ' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">' . DOKU_LF;
$pre .= '<head>' . DOKU_LF;
$pre .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . DOKU_LF;
$pre .= ' <title>'.$ID.'</title>' . DOKU_LF;
// get metaheaders
ob_start();
tpl_metaheaders();
$pre .= ob_get_clean();
$pre .= '</head>' . DOKU_LF;
$pre .= '<body>' . DOKU_LF;
$pre .= '<div class="dokuwiki export">' . DOKU_LF;
// get toc
$pre .= tpl_toc(true);
$headers['Content-Type'] = 'text/html; charset=utf-8';
$output = p_wiki_xhtml($ID,$REV,false);
$post .= '</div>' . DOKU_LF;
$post .= '</body>' . DOKU_LF;
$post .= '</html>' . DOKU_LF;
break;
case 'xhtmlbody':
$headers['Content-Type'] = 'text/html; charset=utf-8';
$output = p_wiki_xhtml($ID,$REV,false);
break;
default:
$headers = p_get_metadata($ID,"format $mode");
$output = p_cached_output(wikiFN($ID,$REV), $mode);
break;
}
// html export #FIXME what about the template's style?
if($act == 'export_xhtml'){
global $conf;
global $lang;
header('Content-Type: text/html; charset=utf-8');
ptln('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"');
ptln(' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
ptln('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"');
ptln(' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">');
ptln('<head>');
ptln(' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
ptln(' <title>'.$ID.'</title>');
tpl_metaheaders();
ptln('</head>');
ptln('<body>');
ptln('<div class="dokuwiki export">');
$html = p_wiki_xhtml($ID,$REV,false);
tpl_toc();
echo $html;
ptln('</div>');
ptln('</body>');
ptln('</html>');
exit;
}
// prepare event data
$data = array();
$data['id'] = $ID;
$data['mode'] = $mode;
$data['headers'] = $headers;
$data['output'] =& $output;
// html body only
if($act == 'export_xhtmlbody'){
$html = p_wiki_xhtml($ID,$REV,false);
tpl_toc();
echo $html;
exit;
}
trigger_event('ACTION_EXPORT_POSTPROCESS', $data);
// try to run renderer
$mode = substr($act,7);
$text = p_cached_output(wikiFN($ID,$REV), $mode);
$headers = p_get_metadata($ID,"format $mode");
if(!is_null($text)){
if(is_array($headers)) foreach($headers as $key => $val){
header("$key: $val");
if(!empty($data['output'])){
if(is_array($data['headers'])) foreach($data['headers'] as $key => $val){
header("$key: $val");
}
print $text;
print $pre.$data['output'].$post;
exit;
}
return 'show';
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment