$Now, 'text' => ImplicitLinking()); //$AutoCreate['/^Categora\\./'] = array('ctime' => $Now); //doesn't work, AutoCreate present in pmwiki.php and example too // category works though // TODO try making it global $AutoCreate; //display working status // see http://fabien.benetou.fr/Tools/Greasemonkey#VirtualBlinders Markup("currenttask", "directives", "/\(:currenttask:\)/", GetCurrentTask()); function GetCurrentTask(){ $currenttask = trim(file_get_contents("/home/utopiah/web/benetou.fr/fabien/pub/currenttask")); if ($currenttask == "") return "(either available or asleep, Im usually on CET)"; return "[[CognitiveEnvironments/".$currenttask."]]"; } Markup("timetable", "fulltext", "/\(:timetable:\)/", "\n||border=1\n||!Time ||!Action ||\n" .preg_replace("/.* (\d+) (\d+).* \/(.*)/","||$1:$2||$3||",file_get_contents("/home/utopiah/.irssi/cron.save")) .""); //load a dedicated edition page for the admin (shouldn't be hard coded but I dont use Auth) //global $GLOBALS; if ($GLOBALS['action'] == 'edit' && ( $GLOBALS['Author'] == 'Fabien' || $GLOBALS['Author'] == 'Utopiah' ) ) { //TODO fails since moved in cookbook directory, thus added back there global $SkinDir,$pagename; LoadPageTemplate($pagename, "$SkinDir/edit.tmpl"); } //display editions through an horizontal line /* fomally done via GnuPlot, cf http://fabien.benetou.fr/Wiki/Visualization#timeline http://www.scholarpedia.org/article/Spike-response_model is probably too complicated for the small resolution yet provide interesting non-linear properties */ function DisplayVisualEdits($pagename){ global $ScriptUrl, $PubDir, $FarmD; $processingpath = '/pub/libraries/processing.js'; $processingfile = "/pub/visualization/edits_per_page/$pagename.pjs"; $processinglib = ""; $first_edit = 1212192000; $now = time(); // draw the timeline from the first edit to now() // get the list of edits of the current page // "get inspired" by PrintDiff() in scripts/pagerev.php $canvaswidth = 600-2*10; $canvasheight = 10; $block_width = 4; $block_height = 8; $page = ReadPage($pagename); if (!$page) return; krsort($page); reset($page); // newest first // for each edit $canvas = " void setup() { size($canvaswidth, $canvasheight); PFont font; font = loadFont(\"FFScala-Bold-12.vlw\"); textFont(font); } void mouseMoved() { checkButtons(); } void mouseDragged() { checkButtons(); } void draw() { background(251); fill(0,0,255,20); noStroke(); "; $mousePressed = "void mousePressed() {"; $destination_link = "$ScriptUrl/".strtr($pagename,".","/")."?action=diff#diff"; $mousePressed .= "\t\tif (lastHovered>0) { link(\"$destination_link\"+lastHovered); }\n"; $checkButtons = "void checkButtons() {"; print $processinglib.''; // set to false to de-activate cache (practical for tests) $newest_diff = true; //$newest_diff = false; //$first_diff = true; foreach($page as $k=>$v) { if (!preg_match("/^diff:(\d+):(\d+):?([^:]*)/",$k,$match)) continue; $diff = $match[1]; $diffclass = $match[3]; if ($diffclass=='minor') { $canvas .= "\t\tfill(0,255,0,20);\n"; } else { $canvas .= "\t\tfill(0,0,255,20);\n"; } //if ($first_diff) // { $canvas .= "\t\tfill(255,0,0,20);\n"; $first_diff = false;} $buttonname = "over".$diff."Button"; //$bools .= "boolean $buttonname = false;\n"; if (file_exists($FarmD.$processingfile) && $newest_diff) if ( filemtime($FarmD.$processingfile) > $diff) return; $newest_diff = false; // add a sightly transparent tick rectangle with its Unix timestamp link to the diff page // the mouse over a certain edit should change its color // see http://processingjs.org/learning/basic/embeddedlinks // or clicablerects.js via Pomax on :mozilla2/#processing.js (14/05/2011 ~11pm) $x = round ( ($canvaswidth - $block_width) * ( (($now - $first_edit)-($now-$diff)) / ($now - $first_edit))); $y = 1; $checkButtons .= "\t\tif ( mouseX > $x && mouseX < $x+$block_width) lastHovered = $diff; \n"; // if (mouseY > $y && mouseY < $y+$block_height) not really required // others should be set to false else one always jump to the olded diff mouved over $canvas .= "\t\trect($x,$y,$block_width,$block_height);\n"; } $canvas .= "\t\tstroke(0,155);\n"; $canvas .= "\t\tfill(0,0,255,80);\n"; $canvas .= "\t\ttext(\"Edits:\",2,10 );\n"; $canvas .= "\t\tfill(0,0,255,40);\n"; for ($year=2009;$year<2012;$year++){ //each year until now $unixyear = mktime(0,0,0,1,1,$year); $x = round ( ($canvaswidth - $block_width) * ( (($now - $first_edit)-($now-$unixyear)) / ($now - $first_edit))); $y = 0; $canvas .= "line($x,$y,$x,$y+$block_height+2); text(\"$year\",$x+2,$y+10 );\n"; } $canvas = $bools . $canvas ."}" . $mousePressed ."}" .$checkButtons . "}"; // load ProcessinJS $write_result = file_put_contents($FarmD.$processingfile,$canvas); // print resulting canvas $older_gnuplot_version = "