Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F823243
fck_anchor.html
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Mar 9, 5:02 PM
Size
5 KB
Mime Type
text/html
Expires
Tue, Mar 11, 5:02 PM (4 h, 25 m)
Engine
blob
Format
Raw Data
Handle
584948
Attached To
rINP In-Portal
fck_anchor.html
View Options
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<!--
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2009 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
* - GNU General Public License Version 2 or later (the "GPL")
* http://www.gnu.org/licenses/gpl.html
*
* - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
* http://www.gnu.org/licenses/lgpl.html
*
* - Mozilla Public License Version 1.1 or later (the "MPL")
* http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Anchor dialog window.
-->
<
html
>
<
head
>
<
title
>
Anchor Properties
</
title
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
>
<
meta
content
=
"noindex, nofollow"
name
=
"robots"
>
<
script
src
=
"common/fck_dialog_common.js"
type
=
"text/javascript"
></
script
>
<
script
type
=
"text/javascript"
>
var
dialog
=
window
.
parent
;
var
oEditor
=
dialog
.
InnerDialogLoaded
()
;
var
FCK
=
oEditor
.
FCK
;
var
FCKBrowserInfo
=
oEditor
.
FCKBrowserInfo
;
var
FCKTools
=
oEditor
.
FCKTools
;
var
FCKRegexLib
=
oEditor
.
FCKRegexLib
;
var
oDOM
=
FCK
.
EditorDocument
;
var
oFakeImage
=
dialog
.
Selection
.
GetSelectedElement
()
;
var
oAnchor
;
if
(
oFakeImage
)
{
if
(
oFakeImage
.
tagName
==
'IMG'
&&
oFakeImage
.
getAttribute
(
'_fckanchor'
)
)
oAnchor
=
FCK
.
GetRealElement
(
oFakeImage
)
;
else
oFakeImage
=
null
;
}
//Search for a real anchor
if
(
!
oFakeImage
)
{
oAnchor
=
FCK
.
Selection
.
MoveToAncestorNode
(
'A'
)
;
if
(
oAnchor
)
FCK
.
Selection
.
SelectNode
(
oAnchor
)
;
}
window
.
onload
=
function
()
{
// First of all, translate the dialog box texts
oEditor
.
FCKLanguageManager
.
TranslatePage
(
document
)
;
if
(
oAnchor
)
GetE
(
'txtName'
).
value
=
oAnchor
.
name
;
else
oAnchor
=
null
;
window
.
parent
.
SetOkButton
(
true
)
;
window
.
parent
.
SetAutoSize
(
true
)
;
SelectField
(
'txtName'
)
;
}
function
Ok
()
{
var
sNewName
=
GetE
(
'txtName'
).
value
;
// Remove any illegal character in a name attribute:
// A name should start with a letter, but the validator passes anyway.
sNewName
=
sNewName
.
replace
(
/[^\w-_\.:]/g
,
'_'
)
;
if
(
sNewName
.
length
==
0
)
{
// Remove the anchor if the user leaves the name blank
if
(
oAnchor
)
{
// Removes the current anchor from the document using the new command
FCK
.
Commands
.
GetCommand
(
'AnchorDelete'
).
Execute
()
;
return
true
;
}
alert
(
oEditor
.
FCKLang
.
DlgAnchorErrorName
)
;
return
false
;
}
oEditor
.
FCKUndo
.
SaveUndoStep
()
;
if
(
oAnchor
)
// Modifying an existent anchor.
{
ReadjustLinksToAnchor
(
oAnchor
.
name
,
sNewName
);
// Buggy explorer, bad bad browser. http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/
// Instead of just replacing the .name for the existing anchor (in order to preserve the content), we must remove the .name
// and assign .name, although it won't appear until it's specially processed in fckxhtml.js
// We remove the previous name
oAnchor
.
removeAttribute
(
'name'
)
;
// Now we set it, but later we must process it specially
oAnchor
.
name
=
sNewName
;
return
true
;
}
// Create a new anchor preserving the current selection
var
aNewAnchors
=
oEditor
.
FCK
.
CreateLink
(
'#'
)
;
if
(
aNewAnchors
.
length
==
0
)
aNewAnchors
.
push
(
oEditor
.
FCK
.
InsertElement
(
'a'
)
)
;
else
{
// Remove the fake href
for
(
var
i
=
0
;
i
<
aNewAnchors
.
length
;
i
++
)
aNewAnchors
[
i
].
removeAttribute
(
'href'
)
;
}
// More than one anchors may have been created, so interact through all of them (see #220).
for
(
var
i
=
0
;
i
<
aNewAnchors
.
length
;
i
++
)
{
oAnchor
=
aNewAnchors
[
i
]
;
// Set the name
if
(
FCKBrowserInfo
.
IsIE
)
{
// Setting anchor names directly in IE will trash the HTML code stored
// in FCKTempBin after undos. See #2263.
var
replaceAnchor
=
oEditor
.
FCK
.
EditorDocument
.
createElement
(
'<a name="'
+
FCKTools
.
HTMLEncode
(
sNewName
).
replace
(
'"'
,
'"'
)
+
'">'
)
;
oEditor
.
FCKDomTools
.
MoveChildren
(
oAnchor
,
replaceAnchor
)
;
oAnchor
.
parentNode
.
replaceChild
(
replaceAnchor
,
oAnchor
)
;
oAnchor
=
replaceAnchor
;
}
else
oAnchor
.
name
=
sNewName
;
// IE does require special processing to show the Anchor's image
// Opera doesn't allow to select empty anchors
if
(
FCKBrowserInfo
.
IsIE
||
FCKBrowserInfo
.
IsOpera
)
{
if
(
oAnchor
.
innerHTML
!=
''
)
{
if
(
FCKBrowserInfo
.
IsIE
)
oAnchor
.
className
+=
' FCK__AnchorC'
;
}
else
{
// Create a fake image for both IE and Opera
var
oImg
=
oEditor
.
FCKDocumentProcessor_CreateFakeImage
(
'FCK__Anchor'
,
oAnchor
.
cloneNode
(
true
)
)
;
oImg
.
setAttribute
(
'_fckanchor'
,
'true'
,
0
)
;
oAnchor
.
parentNode
.
insertBefore
(
oImg
,
oAnchor
)
;
oAnchor
.
parentNode
.
removeChild
(
oAnchor
)
;
}
}
}
return
true
;
}
// Checks all the links in the current page pointing to the current name and changes them to the new name
function
ReadjustLinksToAnchor
(
sCurrent
,
sNew
)
{
var
oDoc
=
FCK
.
EditorDocument
;
var
aLinks
=
oDoc
.
getElementsByTagName
(
'A'
)
;
var
sReference
=
'#'
+
sCurrent
;
// The url of the document, so we check absolute and partial references.
var
sFullReference
=
oDoc
.
location
.
href
.
replace
(
/(#.*
$
)/
,
''
)
;
sFullReference
+=
sReference
;
var
oLink
;
var
i
=
aLinks
.
length
-
1
;
while
(
i
>=
0
&&
(
oLink
=
aLinks
[
i
--
]
)
)
{
var
sHRef
=
oLink
.
getAttribute
(
'_fcksavedurl'
)
;
if
(
sHRef
==
null
)
sHRef
=
oLink
.
getAttribute
(
'href'
,
2
)
||
''
;
if
(
sHRef
==
sReference
||
sHRef
==
sFullReference
)
{
oLink
.
href
=
'#'
+
sNew
;
SetAttribute
(
oLink
,
'_fcksavedurl'
,
'#'
+
sNew
)
;
}
}
}
</
script
>
</
head
>
<
body
style
=
"overflow: hidden"
>
<
table
height
=
"100%"
width
=
"100%"
>
<
tr
>
<
td
align
=
"center"
>
<
table
border
=
"0"
cellpadding
=
"0"
cellspacing
=
"0"
width
=
"80%"
>
<
tr
>
<
td
>
<
span
fckLang
=
"DlgAnchorName"
>
Anchor Name
</
span
><
BR
>
<
input
id
=
"txtName"
style
=
"WIDTH: 100%"
type
=
"text"
>
</
td
>
</
tr
>
</
table
>
</
td
>
</
tr
>
</
table
>
</
body
>
</
html
>
Event Timeline
Log In to Comment