From ed1fb3c8a3fa11abc65aeee665e16a70af3ed323 Mon Sep 17 00:00:00 2001
From: Matthias Mees <mm@yellowled.de>
Date: Fri, 18 Apr 2014 16:23:40 +0200
Subject: [PATCH] Open/close tags, support for language-based tags in
 non-WYSIWYG.

Some plugins might want to hook into the non-WYSIWYG editor and
create buttons which do use different "tags" for open/close or
not create HTML markup at all. This makes it possible for them
to do so.

References #122
References #114
---
 templates/2k11/admin/entries.tpl               | 16 ++++++++--------
 templates/2k11/admin/serendipity_editor.js.tpl | 12 +++++++++---
 2 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/templates/2k11/admin/entries.tpl b/templates/2k11/admin/entries.tpl
index cc58a530..361b9f17 100644
--- a/templates/2k11/admin/entries.tpl
+++ b/templates/2k11/admin/entries.tpl
@@ -20,11 +20,11 @@
     {if NOT $entry_vars.wysiwyg}
         <div id="tools_entry" class="editor_toolbar">
         {if $iso2br}
-            <button class="wrap_selection" type="button" name="insX" data-tag="nl" data-tarea="serendipity[body]">NoBR</button>
+            <button class="wrap_selection lang-html" type="button" name="insX" data-tag-open="nl" data-tag-close="nl" data-tarea="serendipity[body]">NoBR</button>
         {/if}
-            <button class="hilite_i wrap_selection" type="button" name="insI" data-tag="em" data-tarea="serendipity[body]">i</button>
-            <button class="hilite_b wrap_selection" type="button" name="insB" data-tag="strong" data-tarea="serendipity[body]">b</button>
-            <button class="wrap_selection" type="button" name="insQ" data-tag="blockquote" data-tarea="serendipity[body]">{$CONST.QUOTE}</button>
+            <button class="hilite_i wrap_selection lang-html" type="button" name="insI" data-tag-open="em" data-tag-close="em" data-tarea="serendipity[body]">i</button>
+            <button class="hilite_b wrap_selection lang-html" type="button" name="insB" data-tag-open="strong" data-tag-close="strong" data-tarea="serendipity[body]">b</button>
+            <button class="wrap_selection lang-html" type="button" name="insQ" data-tag-open="blockquote" data-tag-close="blockquote" data-tarea="serendipity[body]">{$CONST.QUOTE}</button>
             <button class="wrap_insimg" type="button" name="insJ" data-tarea="serendipity[body]">img</button>
             <button class="wrap_insmedia" type="button" name="insImage" data-tarea="serendipity[body]">{$CONST.MEDIA}</button>
             <button class="wrap_insurl" type="button" name="insURL" data-tarea="serendipity[body]">URL</button>
@@ -52,11 +52,11 @@
     {if NOT $entry_vars.wysiwyg}
         <div id="tools_extended" class="editor_toolbar">
         {if $iso2br}
-            <button class="wrap_selection" type="button" name="insX" data-tag="nl" data-tarea="serendipity[extended]">NoBR</button>
+            <button class="wrap_selection" type="button" name="insX" data-tag-open="nl" data-tag-close="nl" data-tarea="serendipity[extended]">NoBR</button>
         {/if}
-            <button class="hilite_i wrap_selection" type="button" name="insI" data-tag="em" data-tarea="serendipity[extended]">i</button>
-            <button class="hilite_b wrap_selection" type="button" name="insB" data-tag="strong" data-tarea="serendipity[extended]">b</button>
-            <button class="wrap_selection" type="button" name="insQ" data-tag="blockquote" data-tarea="serendipity[extended]">{$CONST.QUOTE}</button>
+            <button class="hilite_i wrap_selection" type="button" name="insI" data-tag-open="em" data-tag-close="em" data-tarea="serendipity[extended]">i</button>
+            <button class="hilite_b wrap_selection" type="button" name="insB" data-tag-open="strong" data-tag-close="strong" data-tarea="serendipity[extended]">b</button>
+            <button class="wrap_selection" type="button" name="insQ" data-tag-open="blockquote" data-tag-close="blockquote" data-tarea="serendipity[extended]">{$CONST.QUOTE}</button>
             <button class="wrap_insimg" type="button" name="insJ" data-tarea="serendipity[extended]">img</button>
             <button class="wrap_insmedia" type="button" name="insImage" data-tarea="serendipity[extended]">{$CONST.MEDIA}</button>
             <button class="wrap_insurl" type="button" name="insURL" data-tarea="serendipity[extended]">URL</button>
diff --git a/templates/2k11/admin/serendipity_editor.js.tpl b/templates/2k11/admin/serendipity_editor.js.tpl
index ed915b37..abf24415 100644
--- a/templates/2k11/admin/serendipity_editor.js.tpl
+++ b/templates/2k11/admin/serendipity_editor.js.tpl
@@ -905,11 +905,17 @@ $(function() {
     // Editor tools
     $('.wrap_selection').click(function() {
         var $el = $(this);
-        var $tag = $el.attr('data-tag');
+        var $tagOpen = $el.attr('data-tag-open');
+        var $tagClose = $el.attr('data-tag-close');
         //var target = document.forms['serendipityEntry']['serendipity[' + $el.attr('data-tarea') + ']'];
         var target =  $('#'+serendipity.escapeBrackets($el.attr('data-tarea')));
-        var open = '<' + $tag + '>';
-        var close = '</' + $tag + '>';
+        if ($el.hasClass('lang-html')) {
+            var open = '<' + $tagOpen + '>';
+            var close = '</' + $tagClose + '>';
+        } else {
+            var open = $tagOpen;
+            var close = $tagClose;
+        }
         serendipity.wrapSelection(target, open, close);
     });