[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