[dev] [commit] r1057 - phplib wwwbase/js

automailer at dexonline.ro automailer at dexonline.ro
Mon Jan 13 15:53:00 EET 2014


Author: cata
Date: Mon Jan 13 15:53:00 2014
New Revision: 1057

Log:
Fix meaning tree save/preview bug.

Modified:
   phplib/SmartyWrap.php
   wwwbase/js/lexemEdit.js

Modified: phplib/SmartyWrap.php
==============================================================================
--- phplib/SmartyWrap.php	Mon Jan 13 14:17:46 2014	(r1056)
+++ phplib/SmartyWrap.php	Mon Jan 13 15:53:00 2014	(r1057)
@@ -197,7 +197,7 @@
       case 'hangman':          self::$jsFiles[15] = 'hangman.js?v=5'; break;
       case 'mill':             self::$jsFiles[16] = 'mill.js?v=3'; break;
       case 'wotd':             self::$jsFiles[17] = 'wotd.js?v=1';
-      case 'lexemEdit':        self::$jsFiles[18] = 'lexemEdit.js?v=9'; break;
+      case 'lexemEdit':        self::$jsFiles[18] = 'lexemEdit.js?v=10'; break;
       case 'jcrop':            self::$jsFiles[19] = 'jquery.Jcrop.min.js?v=2'; break;
       case 'easyui':           self::$jsFiles[20] = 'easyui-1.3.5/easyloader.js?v=1'; break;
       case 'select2':          self::$jsFiles[21] = 'select2.min.js?v=3'; break;

Modified: wwwbase/js/lexemEdit.js
==============================================================================
--- wwwbase/js/lexemEdit.js	Mon Jan 13 14:17:46 2014	(r1056)
+++ wwwbase/js/lexemEdit.js	Mon Jan 13 15:53:00 2014	(r1057)
@@ -273,22 +273,25 @@
   $('#editorAntonyms').select2('enable', false);
 }
 
-// Iterate a meaning tree node recursively and collect meaning-related fields
+// Iterate a meaning tree node (<ul> element) recursively and collect meaning-related fields
+// We do this at jquery level, because the easyui tree methods appear buggy.
+// For example, moving meanings sometimes leaves behind "ghost" copies.
 function meaningTreeWalk(node, results, level) {
-  var jqNode = $(node.target);
-  results.push({ 'id': jqNode.find('span.id').text(),
-                 'level' : level,
-                 'internalRep': jqNode.find('span.internalRep').text(),
-                 'internalComment': jqNode.find('span.internalComment').text(),
-                 'sourceIds': jqNode.find('span.sourceIds').text(),
-                 'meaningTagIds': jqNode.find('span.meaningTagIds').text(),
-                 'synonymIds': jqNode.find('span.synonymIds').text(),
-                 'antonymIds': jqNode.find('span.antonymIds').text(),
-               });
-  var children = meaningTreeGetChildren(node);
-  for (var i = 0; i < children.length; i++) {
-    meaningTreeWalk(children[i], results, level + 1);
-  }
+  node.children('li').each(function() {
+    var data = $(this).children('div.tree-node').children('span.tree-title');
+    results.push({ 'id': data.find('span.id').text(),
+                   'level': level,
+                   'internalRep': data.find('span.internalRep').text(),
+                   'internalComment': data.find('span.internalComment').text(),
+                   'sourceIds': data.find('span.sourceIds').text(),
+                   'meaningTagIds': data.find('span.meaningTagIds').text(),
+                   'synonymIds': data.find('span.synonymIds').text(),
+                   'antonymIds': data.find('span.antonymIds').text(),
+                 });
+    $(this).children('ul').each(function() {
+      meaningTreeWalk($(this), results, level + 1);
+    });
+  });
 }
 
 function saveEverything() {
@@ -296,10 +299,7 @@
     acceptMeaningEdit();
   }
   var results = new Array();
-  var roots = $('#meaningTree').tree('getRoots');
-  for (var i = 0; i < roots.length; i++) {
-    meaningTreeWalk(roots[i], results, 0);
-  }
+  meaningTreeWalk($('#meaningTree'), results, 0);
   $('input[name=jsonMeanings]').val(JSON.stringify(results));
   $('#meaningForm').submit();
 }


More information about the Dev mailing list