Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F9121892
editor_plugin_src.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
editor_plugin_src.js
View Options
/**
* editor_plugin_src.js
*
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(
function
()
{
tinymce
.
create
(
'tinymce.plugins.WordCount'
,
{
block
:
0
,
id
:
null
,
countre
:
null
,
cleanre
:
null
,
init
:
function
(
ed
,
url
)
{
var
t
=
this
,
last
=
0
,
VK
=
tinymce
.
VK
;
t
.
countre
=
ed
.
getParam
(
'wordcount_countregex'
,
/[\w\u2019\'-]+/g
);
// u2019 == ’
t
.
cleanre
=
ed
.
getParam
(
'wordcount_cleanregex'
,
/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g
);
t
.
update_rate
=
ed
.
getParam
(
'wordcount_update_rate'
,
2000
);
t
.
update_on_delete
=
ed
.
getParam
(
'wordcount_update_on_delete'
,
false
);
t
.
id
=
ed
.
id
+
'-word-count'
;
ed
.
onPostRender
.
add
(
function
(
ed
,
cm
)
{
var
row
,
id
;
// Add it to the specified id or the theme advanced path
id
=
ed
.
getParam
(
'wordcount_target_id'
);
if
(
!
id
)
{
row
=
tinymce
.
DOM
.
get
(
ed
.
id
+
'_path_row'
);
if
(
row
)
tinymce
.
DOM
.
add
(
row
.
parentNode
,
'div'
,
{
'style'
:
'float: right'
},
ed
.
getLang
(
'wordcount.words'
,
'Words: '
)
+
'<span id="'
+
t
.
id
+
'">0</span>'
);
}
else
{
tinymce
.
DOM
.
add
(
id
,
'span'
,
{},
'<span id="'
+
t
.
id
+
'">0</span>'
);
}
});
ed
.
onInit
.
add
(
function
(
ed
)
{
ed
.
selection
.
onSetContent
.
add
(
function
()
{
t
.
_count
(
ed
);
});
t
.
_count
(
ed
);
});
ed
.
onSetContent
.
add
(
function
(
ed
)
{
t
.
_count
(
ed
);
});
function
checkKeys
(
key
)
{
return
key
!==
last
&&
(
key
===
VK
.
ENTER
||
last
===
VK
.
SPACEBAR
||
checkDelOrBksp
(
last
));
}
function
checkDelOrBksp
(
key
)
{
return
key
===
VK
.
DELETE
||
key
===
VK
.
BACKSPACE
;
}
ed
.
onKeyUp
.
add
(
function
(
ed
,
e
)
{
if
(
checkKeys
(
e
.
keyCode
)
||
t
.
update_on_delete
&&
checkDelOrBksp
(
e
.
keyCode
))
{
t
.
_count
(
ed
);
}
last
=
e
.
keyCode
;
});
},
_getCount
:
function
(
ed
)
{
var
tc
=
0
;
var
tx
=
ed
.
getContent
({
format
:
'raw'
});
if
(
tx
)
{
tx
=
tx
.
replace
(
/\.\.\./g
,
' '
);
// convert ellipses to spaces
tx
=
tx
.
replace
(
/<.[^<>]*?>/g
,
' '
).
replace
(
/ | /gi
,
' '
);
// remove html tags and space chars
// deal with html entities
tx
=
tx
.
replace
(
/(\w+)(&.+?;)+(\w+)/
,
"$1$3"
).
replace
(
/&.+?;/g
,
' '
);
tx
=
tx
.
replace
(
this
.
cleanre
,
''
);
// remove numbers and punctuation
var
wordArray
=
tx
.
match
(
this
.
countre
);
if
(
wordArray
)
{
tc
=
wordArray
.
length
;
}
}
return
tc
;
},
_count
:
function
(
ed
)
{
var
t
=
this
;
// Keep multiple calls from happening at the same time
if
(
t
.
block
)
return
;
t
.
block
=
1
;
setTimeout
(
function
()
{
if
(
!
ed
.
destroyed
)
{
var
tc
=
t
.
_getCount
(
ed
);
tinymce
.
DOM
.
setHTML
(
t
.
id
,
tc
.
toString
());
setTimeout
(
function
()
{
t
.
block
=
0
;},
t
.
update_rate
);
}
},
1
);
},
getInfo
:
function
()
{
return
{
longname
:
'Word Count plugin'
,
author
:
'Moxiecode Systems AB'
,
authorurl
:
'http://tinymce.moxiecode.com'
,
infourl
:
'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount'
,
version
:
tinymce
.
majorVersion
+
"."
+
tinymce
.
minorVersion
};
}
});
tinymce
.
PluginManager
.
add
(
'wordcount'
,
tinymce
.
plugins
.
WordCount
);
})();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 30, 3:05 AM (10 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1152510
Default Alt Text
editor_plugin_src.js (3 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment