From: Brion Vibber <brion@status.net>
Date: Thu, 12 Aug 2010 19:47:07 +0000 (-0700)
Subject: TinyMCE: counter support (may not be 100% exact match to server-side count, but there... 
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=34995df879457f03ad6f78e617294dc2dd040b7d;p=quix0rs-gnu-social.git

TinyMCE: counter support (may not be 100% exact match to server-side count, but there's already discrepencies due to URL shortening)
Fix for bad char conversions also, caused short text to not be saved in some cases.
---

diff --git a/js/util.js b/js/util.js
index 6a67da4bcd..ad8a44c82a 100644
--- a/js/util.js
+++ b/js/util.js
@@ -110,7 +110,7 @@ var SN = { // StatusNet
                 return;
             }
 
-            var remaining = MaxLength - form.find('#'+SN.C.S.NoticeDataText).val().length;
+            var remaining = MaxLength - SN.U.CharacterCount(form);
             var counter = form.find('#'+SN.C.S.NoticeTextCount);
 
             if (remaining.toString() != counter.text()) {
@@ -134,6 +134,10 @@ var SN = { // StatusNet
             }
         },
 
+        CharacterCount: function(form) {
+            return form.find('#'+SN.C.S.NoticeDataText).val().length;
+        },
+
         ClearCounterBlackout: function(form) {
             // Allow keyup events to poke the counter again
             SN.C.I.CounterBlackout = false;
diff --git a/plugins/TinyMCE/TinyMCEPlugin.php b/plugins/TinyMCE/TinyMCEPlugin.php
index 47d3d059f2..ca16f60591 100644
--- a/plugins/TinyMCE/TinyMCEPlugin.php
+++ b/plugins/TinyMCE/TinyMCEPlugin.php
@@ -102,7 +102,7 @@ class TinyMCEPlugin extends Plugin
      */
     private function stripHtml($html)
     {
-        return str_replace("\n", " ", html_entity_decode(strip_tags($html)));
+        return str_replace("\n", " ", html_entity_decode(strip_tags($html), ENT_QUOTES, 'UTF-8'));
     }
 
     /**
@@ -281,6 +281,7 @@ class TinyMCEPlugin extends Plugin
         // on our send button click.
         $scr = <<<END_OF_SCRIPT
         $().ready(function() {
+            var noticeForm = $('#form_notice');
             $('textarea#notice_data-text').tinymce({
                 script_url : '{$path}',
                 // General options
@@ -291,26 +292,29 @@ class TinyMCEPlugin extends Plugin
                 theme_advanced_buttons3 : "",
                 add_form_submit_trigger : false,
                 theme_advanced_resizing : true,
-                tabfocus_elements: ":prev,:next"
-            });
-            $('#form_notice').append('<input type="hidden" name="richedit" value="1">');
-            $('#notice_action-submit').click(function() {
-                if (typeof tinymce != "undefined") {
-                    tinymce.triggerSave();
-                }
-            });
-            $('#'+SN.C.S.NoticeDataAttach).change(function() {
-                /*
-                S = '<div id="'+SN.C.S.NoticeDataAttachSelected+'" class="'+SN.C.S.Success+'"><code>'+$(this).val()+'</code> <button class="close">&#215;</button></div>';
-                NDAS = $('#'+SN.C.S.NoticeDataAttachSelected);
-                if (NDAS.length > 0) {
-                    NDAS.replaceWith(S);
+                tabfocus_elements: ":prev,:next",
+                setup: function(ed) {
+                    noticeForm.append('<input type="hidden" name="richedit" value="1">');
+
+                    $('#notice_action-submit').click(function() {
+                        tinymce.triggerSave();
+                    });
+
+                    var origCounter = SN.U.CharacterCount;
+                    SN.U.CharacterCount = function(form) {
+                        var text = $(ed.getDoc()).text();
+                        return text.length;
+                    };
+                    ed.onKeyUp.add(function (ed, e) {
+                        SN.U.Counter(noticeForm);
+                    });
+
+                    $('#'+SN.C.S.NoticeDataAttach).change(function() {
+                        var img = '<img src="{$placeholder}" class="placeholder" width="320" height="240">';
+                        var html = tinyMCE.activeEditor.getContent();
+                        ed.setContent(html + img);
+                    });
                 }
-                */
-                //alert('yay');
-                var img = '<img src="{$placeholder}" class="placeholder" width="320" height="240">';
-                var html = tinyMCE.activeEditor.getContent();
-                tinyMCE.activeEditor.setContent(html + img);
             });
         });
 END_OF_SCRIPT;
@@ -319,4 +323,3 @@ END_OF_SCRIPT;
     }
 
 }
-