00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 @require_once('config.inc.php');
00013 require_once('common.inc.php');
00014 require_once('controller.inc.php');
00015 require_once('html.inc.php');
00016 require_once('modules.inc.php');
00017
00018 require_once('util.inc.php');
00019
00020
00021
00022
00023
00024
00025 function controller_revisions($args)
00026 {
00027 page_canonical($args[0][0]);
00028 $page = $args[0][0];
00029 if (!page_exists($page)) {
00030 hotglue_error(404);
00031 }
00032
00033
00034 load_modules('glue');
00035 $a = expl('.', $page);
00036 $revs = revisions_info(array('pagename'=>$a[0], 'sort'=>'time'));
00037 $revs = $revs['#data'];
00038 $cur_rev = false;
00039 for ($i=0; $i < count($revs); $i++) {
00040 if ($revs[$i]['revision'] == $a[1]) {
00041 $cur_rev = $i;
00042 break;
00043 }
00044 }
00045 if ($cur_rev === false) {
00046
00047 hotglue_error(500);
00048 }
00049
00050 default_html(true);
00051 html_add_css(base_url().'modules/revisions_browser/revisions_browser.css');
00052 if (USE_MIN_FILES) {
00053 html_add_js(base_url().'modules/revisions_browser/revisions_browser.min.js');
00054 } else {
00055 html_add_js(base_url().'modules/revisions_browser/revisions_browser.js');
00056 }
00057 html_add_js_var('$.glue.page', $page);
00058 $bdy = &body();
00059 elem_attr($bdy, 'id', 'revisions');
00060 render_page(array('page'=>$page, 'edit'=>false));
00061 body_append('<div id="revisions_browser_ctrl">');
00062 body_append('<div id="revisions_browser_prev">');
00063 if ($cur_rev+1 < count($revs)) {
00064 body_append('<a href="'.base_url().'?'.htmlspecialchars(urlencode($revs[$cur_rev+1]['page']), ENT_COMPAT, 'UTF-8').'/revisions">prev</a>');
00065 }
00066 body_append('</div><div id="revisions_browser_cur">');
00067 if (substr($revs[$cur_rev]['revision'], 0, 5) == 'auto-') {
00068 body_append(date('d M y H:i', $revs[$cur_rev]['time']));
00069 } else {
00070 body_append(htmlspecialchars($revs[$cur_rev]['revision'], ENT_NOQUOTES, 'UTF-8'));
00071 }
00072 body_append('<br>');
00073 if ($a[1] == 'head') {
00074 body_append('<a href="'.base_url().'?'.htmlspecialchars(urlencode($page), ENT_COMPAT, 'UTF-8').'/edit">back to editing mode</a>');
00075 } else {
00076 body_append('<a id="revisions_browser_revert_btn" href="#">revert</a>');
00077 }
00078 body_append('</div><div id="revisions_browser_next">');
00079 if (0 < $cur_rev) {
00080 body_append('<a href="'.base_url().'?'.htmlspecialchars(urlencode($revs[$cur_rev-1]['page']), ENT_COMPAT, 'UTF-8').'/revisions">next</a>');
00081 }
00082 body_append('</div>');
00083 body_append('</div>');
00084 echo html_finalize();
00085 }
00086
00087 register_controller('*', 'revisions', 'controller_revisions', array('auth'=>REVISIONS_NEED_AUTH));
00088
00089
00090 function revisions_browser_render_page_early($args)
00091 {
00092 if ($args['edit']) {
00093 if (USE_MIN_FILES) {
00094 html_add_js(base_url().'modules/revisions_browser/revisions_browser-edit.min.js');
00095 } else {
00096 html_add_js(base_url().'modules/revisions_browser/revisions_browser-edit.js');
00097 }
00098 }
00099 }