summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@status.net>2010-08-12 12:47:07 -0700
committerBrion Vibber <brion@status.net>2010-08-12 12:47:07 -0700
commit34995df879457f03ad6f78e617294dc2dd040b7d (patch)
tree9c201cb9b1a272b34e0cc6bd05636a4ff08f0b88
parentf14f252a1633c9297f33a98ef7f4ccf6db0efaef (diff)
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.
-rw-r--r--js/util.js6
-rw-r--r--plugins/TinyMCE/TinyMCEPlugin.php45
2 files changed, 29 insertions, 22 deletions
diff --git a/js/util.js b/js/util.js
index 6a67da4bc..ad8a44c82 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 47d3d059f..ca16f6059 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;
}
}
-