fixed pages with no links

master
Fabien Benetou 14 years ago
parent 1e80b51172
commit ffba4c3313
  1. 88
      pmwiki_recipes/exercises.php

@ -1,40 +1,50 @@
<?php if (!defined('PmWiki')) exit();
error_reporting(0);
// for demo
# generate exercises based on wiki content and its structure
#
# still to implement (cf http://fabien.benetou.fr/Cookbook/Cognition#DailyExercisesFeed )
# refactor in classes?
# random type is not implemented properly enough for score tracking
# e.g. highest score from random appear as other exercise
# after 1 random exercise, going back to the same type of the last picked exercise
# which of those group corresponds the graph visualization V, A, B or C?
# using groupnetworkvisualization.php
# what is the correct order for pages A, B and C on descending criteria i A>B>C? A>C>B? B>C>A? B>A>C? C>B>A? C>A>B?
# e.g. size, frequency update, last edition, ...
# what is the color hashing used in RevertedPIM for this group, color A, B or C?
# might require JS
# keyword or URL in pages
# definition of word and vice versa
# limited to pages with definitions (e.g. some languages)
# list lines with "* word = definition"
# split word and definition
# pick one and display the other with alternatives
# extend type=pagehasexpression
# implemented
# is word X from page A, B, C or D? (type=expressioninpage)
# does page A contains word X, Y or Z? (type=pagehasexpression)
# which of those page corresponds the updates visualization V, A, B or C? (type=historyvisualization)
# is page A linked to page B? (type=pagelink)
# difficulty parameter
# should be linked to the counter
# e.g. increasing the number of possibilities (at least 1 out of 5 pages instead of at least 1 out of 3)
# do a graph traversal rather than random jumps
# i.e. if pick randomly from the linked pages or from the group or from the the whole wiki of the previous page
# consider https://research.cc.gatech.edu/inc/game-forge
/*
Generate exercises based on wiki content and its structure
exercises idea to implement (cf http://fabien.benetou.fr/Cookbook/Cognition#DailyExercisesFeed )
random type is not implemented properly enough for score tracking
e.g. highest score from random appear as other exercise
after 1 random exercise, going back to the same type of the last picked exercise
which of those group corresponds the graph visualization V, A, B or C?
using groupnetworkvisualization.php
what is the correct order for pages A, B and C on descending criteria i A>B>C? A>C>B? B>C>A? B>A>C? C>B>A? C>A>B?
e.g. size, frequency update, last edition, ...
what is the color hashing used in RevertedPIM for this group, color A, B or C?
might require JS
keyword or URL in pages
definition of word and vice versa
limited to pages with definitions (e.g. some languages)
list lines with "* word = definition"
split word and definition
pick one and display the other with alternatives
extend type=pagehasexpression
difficulty parameter
should be linked to the counter
e.g. increasing the number of possibilities (at least 1 out of 5 pages instead of at least 1 out of 3)
see the hall of fame to see which exercise are the easiest
do a graph traversal rather than random jumps
i.e. if pick randomly from the linked pages or from the group or from the the whole wiki of the previous page
consider https://research.cc.gatech.edu/inc/game-forge
improve parsing
discard more pages
structuring e.g. PmWiki. , RecentChanges, GroupFooter, GroupHeader, Template, ...
page with just one line, especially markups, typically redirections
support other interfaces
e.g. http://www.cs.cmu.edu/~listen/ listed in Content/Education#SeeAlso
Vimperator with predictable link numbers to go faster
track time require for answering each question
display a clock
could improve excitment, e.g. answer the maximum number of questions correctly in X minutes
implemented
is word X from page A, B, C or D? (type=expressioninpage)
does page A contains word X, Y or Z? (type=pagehasexpression)
which of those page corresponds the updates visualization V, A, B or C? (type=historyvisualization)
is page A linked to page B? (type=pagelink)
*/
$RecipeInfo['Exercises']['Version'] = '2015-16-08';
@ -76,7 +86,6 @@ function Exercises($pagename, $auth){
$counterparam = "counter=$counter&";
}
// the pattern should be improve, e.g. remove PmWiki. , RecentChanges, GroupFooter, GroupHeader, Template, ...
if ($group == "AllPages"){
// equivalent to getting ALL pages
$pages = ListPages();
@ -94,17 +103,17 @@ function Exercises($pagename, $auth){
$content = ReadPage($sourcepage,READPAGE_CURRENT);
$links = $content["targets"];
$links_array = explode(",",$links);
// XXX this does not seem to be used
while ((count($links_array)<1) && (count($pages)>0)) {
//note that count($links_array)<1) was not used since explode returned an array with en empty value
while (($links_array[0]=="") && (count($pages)>0)) {
$sourcepage = $pages[array_rand($pages)];
unset($pages[array_search($sourcepage,$pages)]);
$content = ReadPage($sourcepage,READPAGE_CURRENT);
$links = $content["targets"];
$links_array = explode(",",$links);
}
if ((count($links_array)<1)) {
if ($links_array[0]=="") {
$result .= "Unfortunately it seems no suitable page has been found for this game. ";
$result .= "Try in another group or [[AllPages/AllPages?type=$type&counter=$counter|in the entire wiki]].";
$result .= "Try in another group or [[AllPages/AllPages?action=Exercises&type=$type&counter=$counter|in the entire wiki]].";
break;
}
@ -412,6 +421,7 @@ Markup("exercisesresults", "directives", "/\(:exercisesresults:\)/", ExercisesRe
# default to all participant, not just the currently logged in user
# hall of fame could be useful in collaborative learning wikis
# consider first sparklines for visuals
# remove failed before top score, try to group sessions and avoid results for the same
function ExercisesResults(){
global $ScriptUrl, $FarmD, $Author;
$availableexercisetypes = array("pagelink", "expressioninpage", "pagehasexpression", "historyvisualization");

Loading…
Cancel
Save