[dev] [commit] r973 - phplib templates/common wwwbase/ajax wwwbase/js wwwbase/styles
automailer at dexonline.ro
automailer at dexonline.ro
Mon Sep 2 11:58:58 EEST 2013
Author: cata
Date: Mon Sep 2 11:58:58 2013
New Revision: 973
Log:
Browse the definition list at the end of the Word Mill game.
Contributed by Alex Grigoraș.
Fixes #287.
Modified:
phplib/SmartyWrap.php
templates/common/mill.ihtml
wwwbase/ajax/mill.php
wwwbase/js/mill.js
wwwbase/styles/mill.css
Modified: phplib/SmartyWrap.php
==============================================================================
--- phplib/SmartyWrap.php Fri Aug 30 17:24:28 2013 (r972)
+++ phplib/SmartyWrap.php Mon Sep 2 11:58:58 2013 (r973)
@@ -31,7 +31,6 @@
}
static function smartyDisplay($skin) {
-
self::$theSmarty->display($skin);
}
@@ -159,7 +158,7 @@
case 'flex': self::$cssFiles[8] = 'flex.css?v=10'; break;
case 'paradigm': self::$cssFiles[9] = 'paradigm.css?v=1'; break;
case 'hangman': self::$cssFiles[10] = 'hangman.css?v=3'; break;
- case 'mill': self::$cssFiles[11] = 'mill.css?v=1'; break;
+ case 'mill': self::$cssFiles[11] = 'mill.css?v=2'; break;
case 'lexemEdit': self::$cssFiles[12] = 'lexemEdit.css?v=4'; break;
case 'jcrop': self::$cssFiles[13] = 'jquery.Jcrop.min.css?v=2'; break;
case 'easyui':
@@ -194,7 +193,7 @@
case 'flex': self::$jsFiles[11] = 'flex.js?v=2'; break;
case 'mobile': self::$jsFiles[12] = 'mobile.js?v=2'; break;
case 'hangman': self::$jsFiles[13] = 'hangman.js?v=5'; break;
- case 'mill': self::$jsFiles[14] = 'mill.js?v=2'; break;
+ case 'mill': self::$jsFiles[14] = 'mill.js?v=3'; break;
case 'wotd': self::$jsFiles[15] = 'wotd.js?v=1';
case 'lexemEdit': self::$jsFiles[16] = 'lexemEdit.js?v=5'; break;
case 'jcrop': self::$jsFiles[17] = 'jquery.Jcrop.min.js?v=2'; break;
Modified: templates/common/mill.ihtml
==============================================================================
--- templates/common/mill.ihtml Fri Aug 30 17:24:28 2013 (r972)
+++ templates/common/mill.ihtml Mon Sep 2 11:58:58 2013 (r973)
@@ -6,6 +6,7 @@
var answeredCorrect = 0;
var answerId = 0;
var guessed = 0;
+ var definitions = [];
</script>
<div class="millArea">
@@ -41,6 +42,13 @@
<div id="resultsPage">
<p>Felicitări! Ai răspuns corect la <b id="answeredCorrect">0</b> definiții din 10.</p>
+
<button id="newGameButton" class="btn">Joc nou</button>
+ <button id="definitionsButton" class="btn">Vezi toate definițiile</button>
+
</div>
+
+ <div id="definitionsSection">
+ </div>
+
</div>
Modified: wwwbase/ajax/mill.php
==============================================================================
--- wwwbase/ajax/mill.php Fri Aug 30 17:24:28 2013 (r972)
+++ wwwbase/ajax/mill.php Mon Sep 2 11:58:58 2013 (r973)
@@ -4,7 +4,6 @@
setlocale(LC_ALL, "ro_RO.utf8");
$xml = new SimpleXMLElement('<xml/>');
-
function getNormalRand($std, $mean, $limit) {
//$std Standard Deviation
//$mean The mean
@@ -19,6 +18,16 @@
return min(max(round($rand * $std + $mean), 0), $limit);
}
+function getWordForDefitionId($defId)
+{
+ $word = Model::factory('DefinitionSimple')
+ ->select('d.lexicon')
+ ->join('Definition', 'd.id = definitionId', 'd')
+ ->where('definitionId', $defId)
+ ->find_one();
+ return $word->lexicon;
+}
+
$difficulty = util_getRequestParameterWithDefault('d', 0);
$logAnswerId = util_getRequestParameterWithDefault('answerId', 0);
$logGuessed = util_getRequestParameterWithDefault('guessed', 0);
@@ -41,14 +50,12 @@
$maindef = Model::factory('DefinitionSimple')->limit(1)->offset($chosenDef)->find_one();
-$word = Model::factory('DefinitionSimple')
- ->select('d.lexicon')
- ->join('Definition', 'd.id = definitionId', 'd')
- ->where('definitionId', $maindef->definitionId)
- ->find_one();
+$word = getWordForDefitionId($maindef->definitionId);
$options = array();
-$options[$answer] = $maindef->getDisplayValue();
+$options[$answer] = array();
+$options[$answer]['term'] = getWordForDefitionId($maindef->definitionId);
+$options[$answer]['text'] = $maindef->getDisplayValue();
$used[$maindef->definitionId] = 1;
for ($i = 1; $i <= 4; $i++) {
@@ -62,14 +69,18 @@
$def = Model::factory('DefinitionSimple')->limit(1)->offset($aux)->find_one();
} while (array_key_exists($def->definitionId, $used));
$used[$def->definitionId] = 1;
- $options[$i] = $def->getDisplayValue();
+ $options[$i]=array();
+ $options[$i]['term'] = getWordForDefitionId($def->definitionId);
+ $options[$i]['text'] = $def->getDisplayValue();
}
}
-$xml->addChild('word', $word->lexicon);
+$xml->addChild('word', $word);
$xml->addChild('answerId', $maindef->id);
for ($i = 1; $i <= 4; $i++) {
- $xml->addChild('definition' . $i, $options[$i]);
+ $def = $xml->addChild('definition' . $i);
+ $def->addChild('term', $options[$i]['term']);
+ $def->addChild('text', $options[$i]['text']);
}
$xml->addChild('answer', $answer);
Modified: wwwbase/js/mill.js
==============================================================================
--- wwwbase/js/mill.js Fri Aug 30 17:24:28 2013 (r972)
+++ wwwbase/js/mill.js Mon Sep 2 11:58:58 2013 (r973)
@@ -10,12 +10,23 @@
}
}).done( function(xml) {
$(".word").html($(xml).find("word").text());
- $('.optionButtons[value="1"]').html("a) " + $(xml).find("definition1").text());
- $('.optionButtons[value="2"]').html("b) " + $(xml).find("definition2").text());
- $('.optionButtons[value="3"]').html("c) " + $(xml).find("definition3").text());
- $('.optionButtons[value="4"]').html("d) " + $(xml).find("definition4").text());
+ $('.optionButtons[value="1"]').html("a) " + $(xml).find("definition1").find("text").text());
+ $('.optionButtons[value="2"]').html("b) " + $(xml).find("definition2").find("text").text());
+ $('.optionButtons[value="3"]').html("c) " + $(xml).find("definition3").find("text").text());
+ $('.optionButtons[value="4"]').html("d) " + $(xml).find("definition4").find("text").text());
answer = $(xml).find("answer").text();
answerId = $(xml).find("answerId").text();
+
+ var terms = definitions.map(function (def) {return def.term;});
+ for (i=1; i<=4; i++)
+ {
+ var term= $(xml).find("definition"+i).find("term").text();
+ //do not add duplicate definitions
+ if (terms.indexOf(term) != -1) continue;
+ var text = $(xml).find("definition"+i).find("text").text();
+ var definition = {term: term, text: text};
+ definitions.push(definition);
+ }
}
);
}
@@ -35,7 +46,7 @@
for(i = 1; i <= 4; i++) {
$('.optionButtons[value="' + i + '"]').attr("disabled", true);
- }
+ }
if (round == 10) {
setTimeout(function() {
@@ -72,9 +83,36 @@
});
}
+function mill_showDefinitions()
+{
+ definitions.sort(function(o1, o2)
+ {
+ if (o1.term < o2.term) return -1;
+ if (o1.term > o2.term) return 1;
+ return 0;
+ });
+ for(i=0; i<definitions.length; i++)
+ {
+ $("#definitionsSection").append("<p>")
+ .append("<b>" + definitions[i].term + "</b>")
+ .append(", ")
+ .append(definitions[i].text);
+ }
+
+ $("#definitionsSection").show();
+ $('#definitionsButton').off('click');
+ $('#definitionsButton').click(function() {mill_toggleDefinitions();});
+}
+
+function mill_toggleDefinitions()
+{
+ $("#definitionsSection").toggle();
+}
+
$(function() {
$('.optionButtons').click(function() { mill_optionPressed($(this)); });
$('.difficultyButtons').click(function() { mill_setDifficulty($(this)); });
$('#newGameButton').click(function() { document.location.reload(true); });
+ $('#definitionsButton').click(function() { mill_showDefinitions(); });
$('.optionButtons').focus(); //Make sure to take focus from the search bar, this is the best choice as putting it on a button would make the use of space for clues impossible.
});
Modified: wwwbase/styles/mill.css
==============================================================================
--- wwwbase/styles/mill.css Fri Aug 30 17:24:28 2013 (r972)
+++ wwwbase/styles/mill.css Mon Sep 2 11:58:58 2013 (r973)
@@ -82,7 +82,8 @@
}
#questionPage,
-#resultsPage {
+#resultsPage,
+#definitionsSection {
display: none;
}
@@ -105,7 +106,8 @@
}
.difficultyButtons,
-#newGameButton {
+#newGameButton,
+#definitionsButton {
background-color: rgb(73, 175, 205);
background-image: -moz-linear-gradient(top, rgb(91, 192, 222), rgb(47, 150, 180));
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgb(91, 192, 222)), to(rgb(47, 150, 180)));
More information about the Dev
mailing list