From e5c1992bac40ebbe69804160985fef4ad773fa81 Mon Sep 17 00:00:00 2001
From: Arnaud Fontaine <arnaud.fontaine@nexedi.com>
Date: Fri, 26 Dec 2014 23:30:45 +0900
Subject: [PATCH] erp5_code_mirror: Saving (Ctrl-s) was not working when using
 Merge view.

---
 .../erp5_code_mirror/code_mirror_support.xml  | 26 ++++++++++++++-----
 bt5/erp5_code_mirror/bt/change_log            |  3 +++
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/code_mirror_support.xml b/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/code_mirror_support.xml
index 39e4bac65f..b01ac8fb52 100644
--- a/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/code_mirror_support.xml
+++ b/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/code_mirror_support.xml
@@ -273,7 +273,12 @@
      alert(\'Saving failed: \' + textStatus);\n
    }\n
 \n
-   cm.save();\n
+   if(merge_mode_elem)\n
+     // TODO: Hack, \'cm\' should work!\n
+     $(\'#&dtml-field_id;\').val(merge_mode_elem.edit.getValue());\n
+   else\n
+     cm.save();\n
+\n
    var edit_data = $(\'form#main_form\').serialize();\n
    edit_data += \'&message_only:int=1\';\n
    $.ajax({type: \'POST\',\n
@@ -389,7 +394,7 @@
     viewportMargin: Infinity,\n
     extraKeys: {"Ctrl-Space": "autocomplete",\n
                 "Ctrl-Q": function(cm){cm.foldCode(cm.getCursor());},\n
-                "Ctrl-S": function(cm) {saveDocument(cm, $.Event(\'click\'))}},\n
+                "Ctrl-S": function(cm){saveDocument(cm, $.Event(\'click\'))}},\n
     foldGutter: true,\n
     lineWrapping: true,\n
     gutters: ["CodeMirror-linenumbers",\n
@@ -429,7 +434,8 @@
       showTrailingSpace: true,\n
       matchBrackets: true,\n
       /* viewportMargin: Infinity, */\n
-      extraKeys: {"Ctrl-Space": "autocomplete"},\n
+      extraKeys: {"Ctrl-Space": "autocomplete",\n
+                  "Ctrl-S": function(cm){saveDocument(merge_mode_elem.edit, $.Event(\'click\'))}},\n
       foldGutter: true,\n
       lineWrapping: true,\n
       gutters: ["CodeMirror-linenumbers",\n
@@ -472,9 +478,15 @@
    function successHandler(data) {\n
      container_elem = $(\'#history_select_container\');\n
      if(container_elem.length == 0)\n
-       container_elem = $(\'<p style="margin: 0; padding: 0;" id="history_select_container"></p>\');\n
+       {\n
+         right_selected_value = null;\n
+         container_elem = $(\'<p style="margin: 0; padding: 0;" id="history_select_container"></p>\');\n
+       }\n
      else\n
-       container_elem.empty();\n
+       {\n
+         right_selected_value = $(\'#history_select_right\').val();\n
+         container_elem.empty();\n
+       }\n
 \n
      for(var i = 0; i < 2; i++)\n
      {\n
@@ -494,7 +506,9 @@
          data,\n
          function(j, d) {\n
            select_revision_element.append(\n
-             $("<option value=\'" + d[\'key\'] + "\'>" + j + ": " +\n
+             $("<option value=\'" + d[\'key\'] + "\' " +\n
+               (is_right && d[\'key\'] == right_selected_value ? "selected=\'selected\'" : "")\n
+               + ">" + j + ": " +\n
                new Date(d[\'time\'] * 1000).toString() + " (" + d[\'user_name\'] + ")" +\n
                "</option>"));\n
          });\n
diff --git a/bt5/erp5_code_mirror/bt/change_log b/bt5/erp5_code_mirror/bt/change_log
index d8b0e90c17..691dd6ed19 100644
--- a/bt5/erp5_code_mirror/bt/change_log
+++ b/bt5/erp5_code_mirror/bt/change_log
@@ -1,3 +1,6 @@
+2014-12-26 arnaud.fontaine
+* Saving (Ctrl-s) was not working when using Merge view.
+
 2014-12-26 arnaud.fontaine
 * Refresh Component history revisions when saving with CTRL+s.
 
-- 
2.30.9