From 9812871776bd4a6372bbf14cc8d0396133cb4fbd Mon Sep 17 00:00:00 2001
From: unknown <D:\mail>
Date: Thu, 28 Jun 2012 20:45:02 +0200
Subject: [PATCH] fixed 'ordre letters' widget

---
 .../Ordre lettres.wgt/css/basic.css           | 10 ++-
 .../Ordre lettres.wgt/js/script.js            | 76 ++++++++++++++-----
 .../Ordre lettres.wgt/locales/fr/js/script.js | 75 +++++++++++++-----
 .../Ordre lettres.wgt/locales/ru/js/script.js | 76 ++++++++++++++-----
 4 files changed, 181 insertions(+), 56 deletions(-)

diff --git a/resources/nonDistributedWidgets/Ordre lettres.wgt/css/basic.css b/resources/nonDistributedWidgets/Ordre lettres.wgt/css/basic.css
index 9daecd53..092ca2b6 100644
--- a/resources/nonDistributedWidgets/Ordre lettres.wgt/css/basic.css	
+++ b/resources/nonDistributedWidgets/Ordre lettres.wgt/css/basic.css	
@@ -102,7 +102,6 @@ body{
     background-color: #999;
     border-top-left-radius: 20px;
     border-bottom-left-radius: 20px;
-    padding-left: 10px;
 }
 
 .close_cont{
@@ -155,8 +154,15 @@ body{
 .audio_block{
     width: 120px;
     height: 30px;
-    margin: 5px 0;    
+    padding: 5px 0 5px 10px;    
     float: left;
+    border-right: 3px solid white;
+}
+
+.audio_gray{
+    border-top-left-radius: 15px;
+    border-bottom-left-radius: 15px;
+    background-color: white;
 }
 
 .audio_desc{
diff --git a/resources/nonDistributedWidgets/Ordre lettres.wgt/js/script.js b/resources/nonDistributedWidgets/Ordre lettres.wgt/js/script.js
index fec92887..60f9a5ae 100644
--- a/resources/nonDistributedWidgets/Ordre lettres.wgt/js/script.js	
+++ b/resources/nonDistributedWidgets/Ordre lettres.wgt/js/script.js	
@@ -45,9 +45,18 @@ function start(){
     }
     
     $("#wgt_reload").click(function(){
-        window.location.reload();
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
     });
     
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
+    });
+
     $(".style_select").change(function (event){
         changeStyle($(this).find("option:selected").val());
     })
@@ -67,7 +76,7 @@ function start(){
                     var imgs_container = container.find(".imgs_cont");
                     
                     container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
+                    container.find(".audio_block").removeAttr("ondragenter")
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
@@ -105,10 +114,10 @@ function start(){
                     .addClass("imgs_answers_gray")
                     .sortable("destroy");
                     container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
                     container.find(".img_block").remove();
                     $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
                 });                
@@ -217,7 +226,8 @@ function exportData(){
             var cont_obj = new Object();
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";
             array_to_export.push(cont_obj);
         });
     } else {
@@ -226,10 +236,15 @@ function exportData(){
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src");
             cont_obj.answer = $(this).find(".imgs_cont input").val(); 
+            cont_obj.cur_answer = getAnswer($(this).find(".imgs_cont"));
             array_to_export.push(cont_obj);
         });
     }
     sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("associer_sound_state", "display");
+    else
+        sankore.setPreference("associer_sound_state", "edit");
 }
 
 //import
@@ -253,16 +268,32 @@ function importData(data){
         $("<input type='hidden'/>").appendTo(audio_block);
         $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
         $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
+        
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].cur_answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("associer_sound_state","")){
+            if(sankore.preference("associer_sound_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
         for(j = 0; j<tmp_array.length;j++)
             tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
+        
+        imgs_container.sortable().bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate") 
     }
 }
 
@@ -296,9 +327,9 @@ function showExample(){
     tmp_array = shuffle(tmp_array);
     for(var i = 0; i<tmp_array.length;i++)
         tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
 }
 
 //check result
@@ -458,6 +489,15 @@ function onDropAudio(obj, event) {
     return false;
 }
 
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find(".img_block").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
 if (window.widget) {
     window.widget.onremove = function(){
         $("audio").each(function(){
diff --git a/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/fr/js/script.js b/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/fr/js/script.js
index 627b52ac..203f6dd4 100644
--- a/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/fr/js/script.js	
+++ b/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/fr/js/script.js	
@@ -45,7 +45,16 @@ function start(){
     }
     
     $("#wgt_reload").click(function(){
-        window.location.reload();
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
     });
     
     $(".style_select").change(function (event){
@@ -67,7 +76,7 @@ function start(){
                     var imgs_container = container.find(".imgs_cont");
                     
                     container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
+                    container.find(".audio_block").removeAttr("ondragenter")
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
@@ -105,10 +114,10 @@ function start(){
                     .addClass("imgs_answers_gray")
                     .sortable("destroy");
                     container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
                     container.find(".img_block").remove();
                     $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
                 });                
@@ -217,7 +226,8 @@ function exportData(){
             var cont_obj = new Object();
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";            
             array_to_export.push(cont_obj);
         });
     } else {
@@ -226,10 +236,15 @@ function exportData(){
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
             cont_obj.answer = $(this).find(".imgs_cont input").val(); 
+            cont_obj.cur_answer = getAnswer($(this).find(".imgs_cont"));
             array_to_export.push(cont_obj);
         });
     }
     sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("associer_sound_state", "display");
+    else
+        sankore.setPreference("associer_sound_state", "edit");
 }
 
 //import
@@ -253,16 +268,31 @@ function importData(data){
         $("<input type='hidden'/>").appendTo(audio_block);
         $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
         $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].cur_answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("associer_sound_state","")){
+            if(sankore.preference("associer_sound_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
         for(j = 0; j<tmp_array.length;j++)
             tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
+        
+        imgs_container.sortable().bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate")
     }
 }
 
@@ -296,9 +326,9 @@ function showExample(){
     tmp_array = shuffle(tmp_array);
     for(var i = 0; i<tmp_array.length;i++)
         tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
 }
 
 //check result
@@ -457,6 +487,15 @@ function onDropAudio(obj, event) {
     return false;
 }
 
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find(".img_block").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
 if (window.widget) {
     window.widget.onremove = function(){
         $("audio").each(function(){
diff --git a/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/ru/js/script.js b/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/ru/js/script.js
index 7e3807d0..108a369b 100644
--- a/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/ru/js/script.js	
+++ b/resources/nonDistributedWidgets/Ordre lettres.wgt/locales/ru/js/script.js	
@@ -11,6 +11,7 @@ var sankoreLang = {
     pad: "Планшет"
 };
 
+
 //main function
 function start(){
 
@@ -45,7 +46,16 @@ function start(){
     }
     
     $("#wgt_reload").click(function(){
-        window.location.reload();
+        if($("#wgt_display").hasClass("selected")){
+            $("#wgt_edit").trigger("click");
+            $("#wgt_display").trigger("click");
+        } else {
+            $("#wgt_display").trigger("click");
+        }
+    });
+    
+    $("#wgt_reload, #wgt_display, #wgt_edit").mouseover(function(){
+        exportData();
     });
     
     $(".style_select").change(function (event){
@@ -67,7 +77,7 @@ function start(){
                     var imgs_container = container.find(".imgs_cont");
                     
                     container.find(".text_cont .audio_desc").removeAttr("contenteditable");
-                    container.find(".text_cont").removeAttr("ondragenter")
+                    container.find(".audio_block").removeAttr("ondragenter")
                     .removeAttr("ondragleave")
                     .removeAttr("ondragover")
                     .removeAttr("ondrop")
@@ -105,10 +115,10 @@ function start(){
                     .addClass("imgs_answers_gray")
                     .sortable("destroy");
                     container.find(".text_cont .audio_desc").attr("contenteditable","true");
-                    container.find(".text_cont").attr("ondragenter", "return false;")
-                    .attr("ondragleave", "$(this).removeClass('gray'); return false;")
-                    .attr("ondragover", "$(this).addClass('gray'); return false;")
-                    .attr("ondrop", "$(this).removeClass('gray'); return onDropAudio(this,event);");
+                    container.find(".audio_block").attr("ondragenter", "return false;")
+                    .attr("ondragleave", "$(this).removeClass('audio_gray'); return false;")
+                    .attr("ondragover", "$(this).addClass('audio_gray'); return false;")
+                    .attr("ondrop", "$(this).removeClass('audio_gray'); return onDropAudio(this,event);");
                     container.find(".img_block").remove();
                     $("<div class='audio_answer' contenteditable>" + container.find(".imgs_cont input").val() + "</div>").appendTo(container.find(".imgs_cont"));
                 });                
@@ -217,7 +227,8 @@ function exportData(){
             var cont_obj = new Object();
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
-            cont_obj.answer = $(this).find(".audio_answer").text();            
+            cont_obj.answer = $(this).find(".audio_answer").text();
+            cont_obj.cur_answer = "";            
             array_to_export.push(cont_obj);
         });
     } else {
@@ -226,10 +237,15 @@ function exportData(){
             cont_obj.text = $(this).find(".audio_desc").text();
             cont_obj.audio = $(this).find("source").attr("src").replace("../../","");
             cont_obj.answer = $(this).find(".imgs_cont input").val(); 
+            cont_obj.cur_answer = getAnswer($(this).find(".imgs_cont"));
             array_to_export.push(cont_obj);
         });
     }
     sankore.setPreference("associer_sound", JSON.stringify(array_to_export));
+    if($("#wgt_display").hasClass("selected"))
+        sankore.setPreference("associer_sound_state", "display");
+    else
+        sankore.setPreference("associer_sound_state", "edit");
 }
 
 //import
@@ -253,16 +269,31 @@ function importData(data){
         $("<input type='hidden'/>").appendTo(audio_block);
         $("<div class='audio_desc'>" + data[i].text + "</div>").appendTo(text);
         $("<input type='hidden' value='" + data[i].answer + "'/>").appendTo(imgs_container);
-        for(var j in data[i].answer){
-            var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
-            tmp_array.push(tmp_letter);
-        }                        
-        tmp_array = shuffle(tmp_array);
+        if(data[i].cur_answer)
+            for(var j in data[i].cur_answer){
+                var tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].cur_answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            } 
+        else
+            for(j in data[i].answer){
+                tmp_letter = $("<div class='img_block' style='text-align: center;'>" + data[i].answer[j] + "</div>");
+                tmp_array.push(tmp_letter);
+            }
+        
+        if(sankore.preference("associer_sound_state","")){
+            if(sankore.preference("associer_sound_state","") == "edit")
+                tmp_array = shuffle(tmp_array);
+        } else 
+            tmp_array = shuffle(tmp_array);
+        
         for(j = 0; j<tmp_array.length;j++)
             tmp_array[j].appendTo(imgs_container);
-        imgs_container.sortable( {
-            update: checkResult
-        } );
+        
+        imgs_container.sortable().bind('sortupdate', function(event, ui) {
+            checkResult(event);
+        }); 
+        if(data[i].cur_answer)
+            imgs_container.trigger("sortupdate")
     }
 }
 
@@ -296,9 +327,9 @@ function showExample(){
     tmp_array = shuffle(tmp_array);
     for(var i = 0; i<tmp_array.length;i++)
         tmp_array[i].appendTo(imgs_container);
-    imgs_container.sortable( {
-        update: checkResult
-    } );
+    imgs_container.sortable().bind('sortupdate', function(event, ui) {
+        checkResult(event);
+    });
 }
 
 //check result
@@ -457,6 +488,15 @@ function onDropAudio(obj, event) {
     return false;
 }
 
+//get text
+function getAnswer(obj){
+    var answer = "";
+    obj.find(".img_block").each(function(){
+        answer += $(this).text();
+    });
+    return answer;
+}
+
 if (window.widget) {
     window.widget.onremove = function(){
         $("audio").each(function(){
-- 
2.18.1