Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F886181
FindReplace.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
FindReplace.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.editor.plugins.FindReplace"
]){
dojo
.
_hasResource
[
"dojox.editor.plugins.FindReplace"
]
=
true
;
dojo
.
provide
(
"dojox.editor.plugins.FindReplace"
);
dojo
.
require
(
"dijit._editor._Plugin"
);
dojo
.
require
(
"dijit.Toolbar"
);
dojo
.
require
(
"dijit.form.TextBox"
);
dojo
.
require
(
"dijit.form.CheckBox"
);
dojo
.
require
(
"dijit.form.Button"
);
dojo
.
require
(
"dijit.TooltipDialog"
);
dojo
.
require
(
"dijit.Menu"
);
dojo
.
require
(
"dijit.CheckedMenuItem"
);
dojo
.
require
(
"dojox.editor.plugins.ToolbarLineBreak"
);
dojo
.
require
(
"dojo.i18n"
);
dojo
.
require
(
"dojo.string"
);
dojo
.
requireLocalization
(
"dojox.editor.plugins"
,
"FindReplace"
,
null
,
"ROOT,cs,de,es,fr,hu,it,ja,ko,pl,pt,ru,zh,zh-tw"
);
dojo
.
experimental
(
"dojox.editor.plugins.FindReplace"
);
dojo
.
declare
(
"dojox.editor.plugins._FindReplaceTextBox"
,[
dijit
.
_Widget
,
dijit
.
_Templated
],{
textId
:
""
,
label
:
""
,
widget
:
null
,
widgetsInTemplate
:
true
,
templateString
:
"<span style='white-space: nowrap' class='dijit dijitReset dijitInline findReplaceTextBox'>"
+
"<label class='dijitLeft dijitInline' for='${textId}'>${label}</label>"
+
"<input dojoType='dijit.form.TextBox' required=false intermediateChanges='true'"
+
"tabIndex='-1' id='${textId}' dojoAttachPoint='textBox' value='' style='width: 20em;'/>"
+
"</span>"
,
postMixInProperties
:
function
(){
this
.
inherited
(
arguments
);
this
.
id
=
dijit
.
getUniqueId
(
this
.
declaredClass
.
replace
(
/\./g
,
"_"
));
this
.
textId
=
this
.
id
+
"_text"
;
this
.
inherited
(
arguments
);
},
postCreate
:
function
(){
this
.
textBox
.
attr
(
"value"
,
""
);
this
.
disabled
=
this
.
textBox
.
attr
(
"disabled"
);
this
.
connect
(
this
.
textBox
,
"onChange"
,
"onChange"
);
},
_setValueAttr
:
function
(
_1
){
this
.
value
=
_1
;
this
.
textBox
.
attr
(
"value"
,
_1
);
},
focus
:
function
(){
this
.
textBox
.
focus
();
},
_setDisabledAttr
:
function
(
_2
){
this
.
disabled
=
_2
;
this
.
textBox
.
attr
(
"disabled"
,
_2
);
},
onChange
:
function
(
_3
){
this
.
value
=
_3
;
}});
dojo
.
declare
(
"dojox.editor.plugins._FindReplaceCheckBox"
,[
dijit
.
_Widget
,
dijit
.
_Templated
],{
checkId
:
""
,
label
:
""
,
widget
:
null
,
widgetsInTemplate
:
true
,
templateString
:
"<span style='white-space: nowrap' class='dijit dijitReset dijitInline findReplaceCheckBox'>"
+
"<input dojoType='dijit.form.CheckBox' required=false "
+
"tabIndex='-1' id='${checkId}' dojoAttachPoint='checkBox' value=''/>"
+
"<label class='dijitLeft dijitInline' for='${checkId}'>${label}</label>"
+
"</span>"
,
postMixInProperties
:
function
(){
this
.
inherited
(
arguments
);
this
.
id
=
dijit
.
getUniqueId
(
this
.
declaredClass
.
replace
(
/\./g
,
"_"
));
this
.
checkId
=
this
.
id
+
"_check"
;
this
.
inherited
(
arguments
);
},
postCreate
:
function
(){
this
.
checkBox
.
attr
(
"checked"
,
false
);
this
.
disabled
=
this
.
checkBox
.
attr
(
"disabled"
);
this
.
checkBox
.
isFocusable
=
function
(){
return
false
;
};
},
_setValueAttr
:
function
(
_4
){
this
.
checkBox
.
attr
(
"value"
,
_4
);
},
_getValueAttr
:
function
(){
return
this
.
checkBox
.
attr
(
"value"
);
},
focus
:
function
(){
this
.
checkBox
.
focus
();
},
_setDisabledAttr
:
function
(
_5
){
this
.
disabled
=
_5
;
this
.
checkBox
.
attr
(
"disabled"
,
_5
);
}});
dojo
.
declare
(
"dojox.editor.plugins.FindReplace"
,[
dijit
.
_editor
.
_Plugin
],{
buttonClass
:
dijit
.
form
.
ToggleButton
,
iconClassPrefix
:
"dijitAdditionalEditorIcon"
,
_initButton
:
function
(){
var
_6
=
dojo
.
i18n
.
getLocalization
(
"dojox.editor.plugins"
,
"FindReplace"
);
this
.
button
=
new
dijit
.
form
.
ToggleButton
({
label
:
_6
[
"findReplace"
],
showLabel
:
false
,
iconClass
:
this
.
iconClassPrefix
+
" "
+
this
.
iconClassPrefix
+
"FindReplace"
,
tabIndex
:
"-1"
,
onChange
:
dojo
.
hitch
(
this
,
"_toggleFindReplace"
)});
if
(
dojo
.
isOpera
){
this
.
button
.
attr
(
"disabled"
,
true
);
}
this
.
connect
(
this
.
button
,
"attr"
,
dojo
.
hitch
(
this
,
function
(
_7
,
_8
){
if
(
_7
===
"disabled"
){
this
.
_toggleFindReplace
((
!
_8
&&
this
.
_displayed
),
true
);
}
}));
},
setEditor
:
function
(
_9
){
this
.
editor
=
_9
;
this
.
_initButton
();
},
toggle
:
function
(){
this
.
button
.
attr
(
"checked"
,
!
this
.
button
.
attr
(
"checked"
));
},
_toggleFindReplace
:
function
(
_a
,
_b
){
if
(
_a
&&!
dojo
.
isOpera
){
dojo
.
style
(
this
.
_frToolbar
.
domNode
,
"display"
,
"block"
);
if
(
!
_b
){
this
.
_displayed
=
true
;
}
}
else
{
dojo
.
style
(
this
.
_frToolbar
.
domNode
,
"display"
,
"none"
);
if
(
!
_b
){
this
.
_displayed
=
false
;
}
}
this
.
editor
.
resize
();
},
setToolbar
:
function
(
_c
){
this
.
inherited
(
arguments
);
if
(
!
dojo
.
isOpera
){
var
_d
=
dojo
.
i18n
.
getLocalization
(
"dojox.editor.plugins"
,
"FindReplace"
);
this
.
_frToolbar
=
new
dijit
.
Toolbar
();
dojo
.
style
(
this
.
_frToolbar
.
domNode
,
"display"
,
"none"
);
dojo
.
place
(
this
.
_frToolbar
.
domNode
,
_c
.
domNode
,
"after"
);
this
.
_frToolbar
.
startup
();
this
.
_caseSensitive
=
new
dojox
.
editor
.
plugins
.
_FindReplaceCheckBox
({
label
:
_d
[
"matchCase"
]});
this
.
_backwards
=
new
dojox
.
editor
.
plugins
.
_FindReplaceCheckBox
({
label
:
_d
[
"backwards"
]});
this
.
_replaceAll
=
new
dojox
.
editor
.
plugins
.
_FindReplaceCheckBox
({
label
:
_d
[
"replaceAll"
]});
this
.
_findField
=
new
dojox
.
editor
.
plugins
.
_FindReplaceTextBox
({
label
:
_d
.
findLabel
});
this
.
_frToolbar
.
addChild
(
this
.
_findField
);
this
.
_findButton
=
new
dijit
.
form
.
Button
({
label
:
_d
[
"findButton"
],
showLabel
:
true
,
iconClass
:
this
.
iconClassPrefix
+
" "
+
this
.
iconClassPrefix
+
"FindRun"
});
this
.
_frToolbar
.
addChild
(
this
.
_findButton
);
this
.
_frToolbar
.
addChild
(
this
.
_caseSensitive
);
this
.
_frToolbar
.
addChild
(
this
.
_backwards
);
this
.
_frToolbar
.
addChild
(
new
dojox
.
editor
.
plugins
.
_ToolbarLineBreak
());
this
.
_replaceField
=
new
dojox
.
editor
.
plugins
.
_FindReplaceTextBox
({
label
:
_d
.
replaceLabel
});
this
.
_frToolbar
.
addChild
(
this
.
_replaceField
);
this
.
_replaceButton
=
new
dijit
.
form
.
Button
({
label
:
_d
[
"replaceButton"
],
showLabel
:
true
,
iconClass
:
this
.
iconClassPrefix
+
" "
+
this
.
iconClassPrefix
+
"ReplaceRun"
});
this
.
_frToolbar
.
addChild
(
this
.
_replaceButton
);
this
.
_frToolbar
.
addChild
(
this
.
_replaceAll
);
this
.
_findButton
.
attr
(
"disabled"
,
true
);
this
.
_replaceButton
.
attr
(
"disabled"
,
true
);
this
.
connect
(
this
.
_findField
,
"onChange"
,
"_checkButtons"
);
this
.
connect
(
this
.
_replaceField
,
"onChange"
,
"_checkButtons"
);
this
.
connect
(
this
.
_findButton
,
"onClick"
,
"_find"
);
this
.
connect
(
this
.
_replaceButton
,
"onClick"
,
"_replace"
);
this
.
_replDialog
=
new
dijit
.
TooltipDialog
();
this
.
_replDialog
.
startup
();
this
.
_replDialog
.
attr
(
"content"
,
""
);
this
.
_dialogTemplate
=
_d
.
replaceDialogText
;
}
},
_checkButtons
:
function
(){
var
_e
=
this
.
_findField
.
attr
(
"value"
);
var
_f
=
this
.
_replaceField
.
attr
(
"value"
);
if
(
_e
){
this
.
_findButton
.
attr
(
"disabled"
,
false
);
}
else
{
this
.
_findButton
.
attr
(
"disabled"
,
true
);
}
if
(
_e
&&
_f
&&
_e
!==
_f
){
this
.
_replaceButton
.
attr
(
"disabled"
,
false
);
}
else
{
this
.
_replaceButton
.
attr
(
"disabled"
,
true
);
}
},
_find
:
function
(){
var
txt
=
this
.
_findField
.
attr
(
"value"
);
if
(
txt
){
var
_10
=
this
.
_caseSensitive
.
attr
(
"value"
);
var
_11
=
this
.
_backwards
.
attr
(
"value"
);
return
this
.
_findText
(
txt
,
_10
,
_11
);
}
return
false
;
},
_replace
:
function
(){
var
ed
=
this
.
editor
;
ed
.
focus
();
var
txt
=
this
.
_findField
.
attr
(
"value"
);
var
_12
=
this
.
_replaceField
.
attr
(
"value"
);
var
_13
=
0
;
if
(
txt
){
if
(
this
.
_replaceDialogTimeout
){
clearTimeout
(
this
.
_replaceDialogTimeout
);
this
.
_replaceDialogTimeout
=
null
;
dijit
.
popup
.
close
(
this
.
_replDialog
);
}
var
_14
=
this
.
_replaceAll
.
attr
(
"value"
);
var
_15
=
this
.
_caseSensitive
.
attr
(
"value"
);
var
_16
=
this
.
_backwards
.
attr
(
"value"
);
var
_17
=
dojo
.
withGlobal
(
ed
.
window
,
"getSelectedText"
,
dijit
.
_editor
.
selection
,[
null
]);
if
(
dojo
.
isMoz
){
txt
=
dojo
.
trim
(
txt
);
_17
=
dojo
.
trim
(
_17
);
}
var
_18
=
this
.
_filterRegexp
(
txt
,
!
_15
);
if
(
_17
&&
_18
.
test
(
_17
)){
ed
.
execCommand
(
"inserthtml"
,
_12
);
_13
++
;
}
if
(
_14
){
var
_19
=
this
.
_findText
(
txt
,
_15
,
_16
);
var
_1a
=
function
(){
ed
.
execCommand
(
"inserthtml"
,
_12
);
_13
++
;
_19
=
this
.
_findText
(
txt
,
_15
,
_16
);
if
(
_19
){
setTimeout
(
dojo
.
hitch
(
this
,
_1a
),
10
);
}
else
{
this
.
_replDialog
.
attr
(
"content"
,
dojo
.
string
.
substitute
(
this
.
_dialogTemplate
,{
"0"
:
""
+
_13
}));
dijit
.
popup
.
open
({
popup
:
this
.
_replDialog
,
around
:
this
.
_replaceButton
.
domNode
});
this
.
_replaceDialogTimeout
=
setTimeout
(
dojo
.
hitch
(
this
,
function
(){
clearTimeout
(
this
.
_replaceDialogTimeout
);
this
.
_replaceDialogTimeout
=
null
;
dijit
.
popup
.
close
(
this
.
_replDialog
);
}),
5000
);
}
};
if
(
_19
){
var
_1b
=
dojo
.
hitch
(
this
,
_1a
);
_1b
();
}
}
}
},
_findText
:
function
(
txt
,
_1c
,
_1d
){
var
ed
=
this
.
editor
;
var
win
=
ed
.
window
;
var
_1e
=
false
;
if
(
txt
){
if
(
win
.
find
){
_1e
=
win
.
find
(
txt
,
_1c
,
_1d
,
false
,
false
,
false
,
false
);
}
else
{
var
doc
=
ed
.
document
;
if
(
doc
.
selection
){
this
.
editor
.
focus
();
var
_1f
=
doc
.
body
.
createTextRange
();
var
_20
=
doc
.
selection
?
doc
.
selection
.
createRange
()
:
null
;
if
(
_20
){
if
(
_1d
){
_1f
.
setEndPoint
(
"EndToStart"
,
_20
);
}
else
{
_1f
.
setEndPoint
(
"StartToEnd"
,
_20
);
}
}
var
_21
=
_1c
?
4
:
0
;
if
(
_1d
){
_21
=
_21
|
1
;
}
_1e
=
_1f
.
findText
(
txt
,
null
,
_21
);
if
(
_1e
){
_1f
.
select
();
}
}
}
}
return
_1e
;
},
_filterRegexp
:
function
(
_22
,
_23
){
var
rxp
=
""
;
var
c
=
null
;
for
(
var
i
=
0
;
i
<
_22
.
length
;
i
++
){
c
=
_22
.
charAt
(
i
);
switch
(
c
){
case
"\\"
:
rxp
+=
c
;
i
++
;
rxp
+=
_22
.
charAt
(
i
);
break
;
case
"$"
:
case
"^"
:
case
"/"
:
case
"+"
:
case
"."
:
case
"|"
:
case
"("
:
case
")"
:
case
"{"
:
case
"}"
:
case
"["
:
case
"]"
:
rxp
+=
"\\"
;
default
:
rxp
+=
c
;
}
}
rxp
=
"^"
+
rxp
+
"$"
;
if
(
_23
){
return
new
RegExp
(
rxp
,
"mi"
);
}
else
{
return
new
RegExp
(
rxp
,
"m"
);
}
},
destroy
:
function
(){
this
.
inherited
(
arguments
);
if
(
this
.
_replaceDialogTimeout
){
clearTimeout
(
this
.
_replaceDialogTimeout
);
this
.
_replaceDialogTimeout
=
null
;
dijit
.
popup
.
close
(
this
.
_replDialog
);
}
if
(
this
.
_frToolbar
){
this
.
_frToolbar
.
destroyRecursive
();
this
.
_frToolbar
=
null
;
}
if
(
this
.
_replDialog
){
this
.
_replDialog
.
destroyRecursive
();
this
.
_replDialog
=
null
;
}
}});
dojo
.
subscribe
(
dijit
.
_scopeName
+
".Editor.getPlugin"
,
null
,
function
(
o
){
if
(
o
.
plugin
){
return
;
}
var
_24
=
o
.
args
.
name
.
toLowerCase
();
if
(
_24
===
"findreplace"
){
o
.
plugin
=
new
dojox
.
editor
.
plugins
.
FindReplace
({});
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 23:13 (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26652
Default Alt Text
FindReplace.js (9 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment