1 /* Functions for the plonelink plugin popup */
3 tinyMCEPopup
.requireLangPack();
6 "window.open" : "window.open('${url}','${target}','${options}')"
10 var current_link
= "";
12 var current_pageanchor
= "";
18 if (url
= tinyMCEPopup
.getParam("external_link_list_url"))
19 document
.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup
.editor
.documentBaseURI
.toAbsolute(url
) + '"></script>');
23 tinyMCEPopup
.resizeToInnerSize();
25 var formGeneralObj
= document
.forms
[0];
26 var formUploadObj
= document
.forms
[1];
27 var formAdvancedObj
= document
.forms
[2];
28 var formButtonsObj
= document
.forms
[3];
29 var inst
= tinyMCEPopup
.editor
;
30 var elm
= inst
.selection
.getNode();
31 var action
= "insert";
33 labels
= eval(inst
.getParam('labels'));
35 document
.getElementById('anchorlinkcontainer').innerHTML
= getAnchorListHTML();
37 // Check if update or insert
38 elm
= inst
.dom
.getParent(elm
, "A");
39 if (elm
!= null && elm
.nodeName
== "A")
43 formButtonsObj
.insert
.value
= tinyMCEPopup
.getLang(action
, 'Insert', true);
46 if (tinyMCEPopup
.editor
.settings
.rooted
) {
47 document
.getElementById('home').style
.display
= 'none';
50 if (action
== "update") {
51 var href
= inst
.dom
.getAttrib(elm
, 'href');
52 href
= tinymce
.trim(href
)
55 setFormValue('href', href
, 0);
56 if ((typeof(elm
.title
) != "undefined") && (elm
.title
!= "")) {
57 setFormValue('title', inst
.dom
.getAttrib(elm
, 'title'), 2);
61 if (href
.charAt(0) == '#') {
62 displayPanel('anchors_panel');
63 setRadioValue('anchorlink', href
, 0);
64 } else if (href
.indexOf('mailto:') != -1) {
65 displayPanel('mail_panel');
66 var mailaddress
= href
.split('mailto:')[1];
69 if (mailaddress
.indexOf('?subject=') != -1) {
70 mailsubject
= mailaddress
.split('?subject=')[1];
71 mailaddress
= mailaddress
.split('?subject=')[0];
74 setFormValue('mailaddress', mailaddress
, 0);
75 setFormValue('mailsubject', mailsubject
, 0);
76 } else if ((href
.indexOf('http://') == 0) || (href
.indexOf('https://') == 0) || (href
.indexOf('ftp://') == 0)) {
77 displayPanel('external_panel');
78 if (href
.indexOf('http://') == 0) {
79 href
= href
.substr(7,href
.length
);
80 selectByValue(formGeneralObj
, 'externalurlprefix', 'http://', true);
81 setFormValue('externalurl', href
, 0);
82 } else if (href
.indexOf('https://') == 0) {
83 href
= href
.substr(8,href
.length
);
84 selectByValue(formGeneralObj
, 'externalurlprefix', 'https://', true);
85 setFormValue('externalurl', href
, 0);
86 } else if (href
.indexOf('ftp://') == 0) {
87 href
= href
.substr(6,href
.length
);
88 selectByValue(formGeneralObj
, 'externalurlprefix', 'ftp://', true);
89 setFormValue('externalurl', href
, 0);
92 if (href
.indexOf('#') != -1) {
93 current_pageanchor
= href
.split('#')[1];
94 href
= href
.split('#')[0];
96 if (href
.indexOf('resolveuid') != -1) {
97 current_uid
= href
.split('resolveuid/')[1];
98 tinymce
.util
.XHR
.send({
99 url
: tinyMCEPopup
.editor
.settings
.portal_url
+ '/portal_tinymce/tinymce-getpathbyuid?uid=' + current_uid
,
101 success : function(text
) {
102 current_url
= getAbsoluteUrl(tinyMCEPopup
.editor
.settings
.document_base_url
, text
);
104 getFolderListing(getParentUrl(current_url
), 'tinymce-jsonlinkablefolderlisting');
108 href
= getAbsoluteUrl(tinyMCEPopup
.editor
.settings
.document_base_url
, href
);
110 getFolderListing(getParentUrl(href
), 'tinymce-jsonlinkablefolderlisting');
114 selectByValue(formAdvancedObj
, 'targetlist', inst
.dom
.getAttrib(elm
, 'target'), true);
117 href
= inst
.selection
.getContent();
118 href
= tinymce
.trim(href
)
119 if ((href
.indexOf('http://') == 0) || (href
.indexOf('https://') == 0) || (href
.indexOf('ftp://') == 0)) {
120 displayPanel('external_panel');
121 if (href
.indexOf('http://') == 0) {
122 href
= href
.substr(7,href
.length
);
123 selectByValue(formGeneralObj
, 'externalurlprefix', 'http://', true);
124 setFormValue('externalurl', href
, 0);
125 } else if (href
.indexOf('https://') == 0) {
126 href
= href
.substr(8,href
.length
);
127 selectByValue(formGeneralObj
, 'externalurlprefix', 'https://', true);
128 setFormValue('externalurl', href
, 0);
129 } else if (href
.indexOf('ftp://') == 0) {
130 href
= href
.substr(6,href
.length
);
131 selectByValue(formGeneralObj
, 'externalurlprefix', 'ftp://', true);
132 setFormValue('externalurl', href
, 0);
135 getCurrentFolderListing();
140 function checkSearch(e
) {
141 if (document
.getElementById('searchtext').value
.length
>= 3 && (tinyMCEPopup
.editor
.settings
.livesearch
|| e
.keyCode
== 13)) {
142 getFolderListing(tinyMCEPopup
.editor
.settings
.navigation_root_url
, 'tinymce-jsonlinkablesearch');
146 function checkExternalUrl() {
147 var formGeneralObj
= document
.forms
[0];
148 href
= document
.getElementById('externalurl').value
;
149 href
= tinymce
.trim(href
)
150 if ((href
.indexOf('http://') == 0) || (href
.indexOf('https://') == 0) || (href
.indexOf('ftp://') == 0)) {
151 if (href
.indexOf('http://') == 0) {
152 href
= href
.substr(7,href
.length
);
153 selectByValue(formGeneralObj
, 'externalurlprefix', 'http://', true);
154 setFormValue('externalurl', href
, 0);
155 } else if (href
.indexOf('https://') == 0) {
156 href
= href
.substr(8,href
.length
);
157 selectByValue(formGeneralObj
, 'externalurlprefix', 'https://', true);
158 setFormValue('externalurl', href
, 0);
159 } else if (href
.indexOf('ftp://') == 0) {
160 href
= href
.substr(6,href
.length
);
161 selectByValue(formGeneralObj
, 'externalurlprefix', 'ftp://', true);
162 setFormValue('externalurl', href
, 0);
166 function getParentUrl(url
) {
167 var url_array
= url
.split('/');
169 return url_array
.join('/');
172 function getAbsoluteUrl(base
, link
) {
173 if ((link
.indexOf('http://') != -1) || (link
.indexOf('https://') != -1) || (link
.indexOf('ftp://') != -1)) {
177 var base_array
= base
.split('/');
178 var link_array
= link
.split('/');
180 // Remove document from base url
183 while (link_array
.length
!= 0) {
184 var item
= link_array
.shift();
187 } else if (item
== "..") {
188 // Remove leave node from base
191 // Push node to base_array
192 base_array
.push(item
);
195 return (base_array
.join('/'));
198 function setFormValue(name
, value
, formnr
) {
199 document
.forms
[formnr
].elements
[name
].value
= value
;
202 function parseWindowOpen(onclick
) {
203 var formGeneralObj
= document
.forms
[0];
204 var formUploadObj
= document
.forms
[1];
205 var formAdvancedObj
= document
.forms
[2];
206 var formButtonsObj
= document
.forms
[3];
208 // Preprocess center code
209 if (onclick
.indexOf('return false;') != -1) {
210 formAdvancedObj
.popupreturn
.checked
= true;
211 onclick
= onclick
.replace('return false;', '');
213 formAdvancedObj
.popupreturn
.checked
= false;
215 var onClickData
= parseLink(onclick
);
217 if (onClickData
!= null) {
218 formAdvancedObj
.ispopup
.checked
= true;
220 var onClickWindowOptions
= parseOptions(onClickData
['options']);
221 var url
= onClickData
['url'];
223 formAdvancedObj
.popupname
.value
= onClickData
['target'];
224 formAdvancedObj
.popupwidth
.value
= getOption(onClickWindowOptions
, 'width');
225 formAdvancedObj
.popupheight
.value
= getOption(onClickWindowOptions
, 'height');
227 formAdvancedObj
.popupleft
.value
= getOption(onClickWindowOptions
, 'left');
228 formAdvancedObj
.popuptop
.value
= getOption(onClickWindowOptions
, 'top');
230 if (formAdvancedObj
.popupleft
.value
.indexOf('screen') != -1)
231 formAdvancedObj
.popupleft
.value
= "c";
233 if (formAdvancedObj
.popuptop
.value
.indexOf('screen') != -1)
234 formAdvancedObj
.popuptop
.value
= "c";
236 formAdvancedObj
.popuplocation
.checked
= getOption(onClickWindowOptions
, 'location') == "yes";
237 formAdvancedObj
.popupscrollbars
.checked
= getOption(onClickWindowOptions
, 'scrollbars') == "yes";
238 formAdvancedObj
.popupmenubar
.checked
= getOption(onClickWindowOptions
, 'menubar') == "yes";
239 formAdvancedObj
.popupresizable
.checked
= getOption(onClickWindowOptions
, 'resizable') == "yes";
240 formAdvancedObj
.popuptoolbar
.checked
= getOption(onClickWindowOptions
, 'toolbar') == "yes";
241 formAdvancedObj
.popupstatus
.checked
= getOption(onClickWindowOptions
, 'status') == "yes";
242 formAdvancedObj
.popupdependent
.checked
= getOption(onClickWindowOptions
, 'dependent') == "yes";
246 function parseFunction(onclick
) {
247 var onClickData
= parseLink(onclick
);
249 // TODO: Add stuff here
252 function getOption(opts
, name
) {
253 return typeof(opts
[name
]) == "undefined" ? "" : opts
[name
];
256 function parseLink(link
) {
257 link
= link
.replace(new RegExp(''', 'g'), "'");
259 var fnName
= link
.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
261 // Is function name a template function
262 var template
= templates
[fnName
];
265 var variableNames
= template
.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
266 var regExp
= "\\s*[A-Za-z0-9\.]*\\s*\\(";
268 for (var i
=0; i
<variableNames
.length
; i
++) {
270 if (variableNames
[i
].indexOf("'${") != -1)
273 regExp
+= "([0-9]*)";
275 replaceStr
+= "$" + (i
+1);
277 // Cleanup variable name
278 variableNames
[i
] = variableNames
[i
].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
280 if (i
!= variableNames
.length
-1) {
281 regExp
+= "\\s*,\\s*";
282 replaceStr
+= "<delim>";
289 // Build variable array
291 variables
["_function"] = fnName
;
292 var variableValues
= link
.replace(new RegExp(regExp
, "gi"), replaceStr
).split('<delim>');
293 for (var i
=0; i
<variableNames
.length
; i
++)
294 variables
[variableNames
[i
]] = variableValues
[i
];
302 function parseOptions(opts
) {
303 if (opts
== null || opts
== "")
306 // Cleanup the options
307 opts
= opts
.toLowerCase();
308 opts
= opts
.replace(/;/g
, ",");
309 opts
= opts
.replace(/[^0-9a-z=,]/g, "");
311 var optionChunks
= opts
.split(',');
314 for (var i
=0; i
<optionChunks
.length
; i
++) {
315 var parts
= optionChunks
[i
].split('=');
317 if (parts
.length
== 2)
318 options
[parts
[0]] = parts
[1];
324 function getPopupHref(href
) {
325 var formAdvancedObj
= document
.forms
[3];
326 var popuphref
= "javascript:window.open('";
328 popuphref
+= href
+ "','";
329 popuphref
+= formAdvancedObj
.popupname
.value
+ "','";
331 if (formAdvancedObj
.popuplocation
.checked
)
332 popuphref
+= "location=yes,";
334 if (formAdvancedObj
.popupscrollbars
.checked
)
335 popuphref
+= "scrollbars=yes,";
337 if (formAdvancedObj
.popupmenubar
.checked
)
338 popuphref
+= "menubar=yes,";
340 if (formAdvancedObj
.popupresizable
.checked
)
341 popuphref
+= "resizable=yes,";
343 if (formAdvancedObj
.popuptoolbar
.checked
)
344 popuphref
+= "toolbar=yes,";
346 if (formAdvancedObj
.popupstatus
.checked
)
347 popuphref
+= "status=yes,";
349 if (formAdvancedObj
.popupdependent
.checked
)
350 popuphref
+= "dependent=yes,";
352 if (formAdvancedObj
.popupwidth
.value
!= "")
353 popuphref
+= "width=" + formAdvancedObj
.popupwidth
.value
+ ",";
355 if (formAdvancedObj
.popupheight
.value
!= "")
356 popuphref
+= "height=" + formAdvancedObj
.popupheight
.value
+ ",";
358 if (formAdvancedObj
.popupleft
.value
!= "") {
359 if (formAdvancedObj
.popupleft
.value
!= "c")
360 popuphref
+= "left=" + formAdvancedObj
.popupleft
.value
+ ",";
362 popuphref
+= "left='+(screen.availWidth/2-" + (formAdvancedObj
.popupwidth
.value
/2) + ")+',";
365 if (formAdvancedObj
.popuptop
.value
!= "") {
366 if (formAdvancedObj
.popuptop
.value
!= "c")
367 popuphref
+= "top=" + formAdvancedObj
.popuptop
.value
+ ",";
369 popuphref
+= "top='+(screen.availHeight/2-" + (formAdvancedObj
.popupheight
.value
/2) + ")+',";
372 if (popuphref
.charAt(popuphref
.length
-1) == ',')
373 popuphref
= popuphref
.substring(0, popuphref
.length
-1);
377 if (formAdvancedObj
.popupreturn
.checked
)
378 popuphref
+= "return false;";
383 function setAttrib(elm
, attrib
, value
, formnr
) {
384 var formObj
= document
.forms
[formnr
];
385 var valueElm
= formObj
.elements
[attrib
.toLowerCase()];
386 var dom
= tinyMCEPopup
.editor
.dom
;
388 if (typeof(value
) == "undefined" || value
== null) {
392 value
= valueElm
.value
;
395 dom
.setAttrib(elm
, attrib
, value
);
398 function previewExternalLink() {
400 var externalurlprefix
= document
.getElementById('externalurlprefix');
401 url
= externalurlprefix
.options
[externalurlprefix
.selectedIndex
].value
;
403 if (document
.getElementById('externalurl').value
== "") {
406 url
+= document
.getElementById('externalurl').value
;
410 document
.getElementById('previewexternal').src
= "about:blank";
412 document
.getElementById('previewexternal').src
= url
;
416 function getAnchorListHTML() {
417 var inst
= tinyMCEPopup
.editor
;
418 var nodes
= inst
.dom
.select('a.mceItemAnchor,img.mceItemAnchor'), name
, title
, i
;
420 var divclass
="even";
422 for (i
=0; i
<nodes
.length
; i
++) {
423 if ((name
= inst
.dom
.getAttrib(nodes
[i
], "name")) != "") {
424 html
+= '<div class="' + divclass
+ '"><input type="radio" class="noborder" name="anchorlink" value="#' + name
+ '"/> ' + name
+ '</div>';
425 divclass
= divclass
== "even" ? "odd" : "even";
429 nodes
= inst
.dom
.select('h2,h3');
430 if (nodes
.length
> 0) {
431 for (i
=0; i
<nodes
.length
; i
++) {
432 title
= nodes
[i
].innerHTML
;
433 title_match
= title
.match(/mceItemAnchor/);
434 if (title_match
== null) {
435 name
= title
.toLowerCase();
436 name
= name
.replace(/[^a-z]/g, '-');
437 html
+= '<div class="' + divclass
+ '"><input type="radio" class="noborder" name="anchorlink" value="#mce-new-anchor-' + name
+ '"/> ' + title
+ '</div>';
438 divclass
= divclass
== "even" ? "odd" : "even";
444 html
= '<div class="odd">'+ labels
['label_no_anchors'] +'</div>';
450 function getInputValue(name
, formnr
) {
451 return document
.forms
[formnr
].elements
[name
].value
;
454 function getRadioValue(name
, formnr
) {
456 var elm
= document
.forms
[formnr
][name
];
457 if (typeof(elm
.value
) == 'undefined') {
458 for (var i
= 0; i
< elm
.length
; i
++) {
459 if (elm
[i
].checked
) {
460 value
= elm
[i
].value
;
472 function setRadioValue(name
, value
, formnr
) {
473 var elm
= document
.forms
[formnr
][name
];
474 if (elm
&& typeof(elm
.value
) == 'undefined') {
475 for (var i
= 0; i
< elm
.length
; i
++) {
476 if (elm
[i
].value
== value
) {
477 elm
[i
].checked
= true;
481 if (elm
.value
== value
) {
487 function buildHref() {
488 var href
= "", name
, title
, i
;
489 var inst
= tinyMCEPopup
.editor
;
491 if (isVisible('external_panel')) {
492 var externalurlprefix
= document
.getElementById('externalurlprefix');
493 href
= externalurlprefix
.options
[externalurlprefix
.selectedIndex
].value
;
495 if (document
.getElementById('externalurl').value
== "") {
498 href
+= document
.getElementById('externalurl').value
;
500 } else if (isVisible('anchors_panel')) {
501 href
= getRadioValue('anchorlink', 0);
502 var url_match
= href
.match(/^#mce-new-anchor-(.*)$/);
503 if (url_match
!= null) {
504 nodes
= inst
.dom
.select('h2,h3');
505 for (i
=0; i
<nodes
.length
; i
++) {
506 title
= nodes
[i
].innerHTML
;
507 name
= title
.toLowerCase();
508 name
= name
.replace(/[^a-z]/g, '-');
509 if (name
== url_match
[1]) {
510 nodes
[i
].innerHTML
= '<a name="' + name
+ '" class="mceItemAnchor"></a>' + nodes
[i
].innerHTML
;
513 href
= '#' + url_match
[1];
515 } else if (isVisible('mail_panel')) {
516 var mailaddress
= getInputValue('mailaddress', 0);
517 var mailsubject
= getInputValue('mailsubject', 0);
519 if (mailsubject
!= "") {
520 href
+= "?subject=" + mailsubject
;
523 href
= "mailto:" + href
;
526 var internallink
= getRadioValue('internallink', 0);
528 var pageanchor
= getSelectValue(document
.forms
[0], 'pageanchor');
529 if (pageanchor
!= "") {
530 href
+= '#' + pageanchor
;
534 document
.forms
[0].href
.value
= href
;
537 function insertAction() {
538 var inst
= tinyMCEPopup
.editor
;
539 var elm
, elementArray
, i
;
542 elm
= inst
.selection
.getNode();
543 elm
= inst
.dom
.getParent(elm
, "A");
545 // Remove element if there is no href
546 if (!document
.forms
[0].href
.value
) {
547 tinyMCEPopup
.execCommand("mceBeginUndoLevel");
548 i
= inst
.selection
.getBookmark();
549 inst
.dom
.remove(elm
, 1);
550 inst
.selection
.moveToBookmark(i
);
551 tinyMCEPopup
.execCommand("mceEndUndoLevel");
552 tinyMCEPopup
.close();
556 tinyMCEPopup
.execCommand("mceBeginUndoLevel");
558 // Create new anchor elements
560 inst
.getDoc().execCommand("unlink", false, null);
561 tinyMCEPopup
.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo
: 1});
563 elementArray
= tinymce
.grep(inst
.dom
.select("a"), function(n
) {return inst
.dom
.getAttrib(n
, 'href') == '#mce_temp_url#';});
564 for (i
=0; i
<elementArray
.length
; i
++)
565 setAllAttribs(elm
= elementArray
[i
]);
569 // Don't move caret if selection was image
570 if (elm
&& (elm
.childNodes
.length
!= 1 || elm
.firstChild
.nodeName
!= 'IMG')) {
572 inst
.selection
.select(elm
);
573 inst
.selection
.collapse(0);
574 tinyMCEPopup
.storeSelection();
577 tinyMCEPopup
.execCommand("mceEndUndoLevel");
578 tinyMCEPopup
.close();
581 function setAllAttribs(elm
) {
582 var formGeneralObj
= document
.forms
[0];
583 var formUploadObj
= document
.forms
[1];
584 var formAdvancedObj
= document
.forms
[2];
585 var formButtonsObj
= document
.forms
[3];
587 var href
= formGeneralObj
.href
.value
;
588 var target
= getSelectValue(formAdvancedObj
, 'targetlist');
590 if (target
== 'popup') {
591 setAttrib(elm
, 'href', getPopupHref(href
), 0);
593 setAttrib(elm
, 'href', href
, 0);
595 setAttrib(elm
, 'title', formAdvancedObj
.title
.value
, 2);
596 if ((target
!= '_self') && (target
!= 'popup')) {
597 setAttrib(elm
, 'target', target
, 2);
600 var dom
= tinyMCEPopup
.editor
.dom
;
601 dom
.removeClass(elm
, 'internal-link');
602 dom
.removeClass(elm
, 'external-link');
603 dom
.removeClass(elm
, 'anchor-link');
604 dom
.removeClass(elm
, 'mail-link');
606 if (isVisible('external_panel')) {
607 dom
.addClass(elm
, 'external-link');
608 } else if (isVisible('anchors_panel')) {
609 dom
.addClass(elm
, 'anchor-link');
610 } else if (isVisible('mail_panel')) {
611 dom
.addClass(elm
, 'mail-link');
613 dom
.addClass(elm
, 'internal-link');
616 // Refresh in old MSIE
618 elm
.outerHTML
= elm
.outerHTML
;
621 function getSelectValue(form_obj
, field_name
) {
622 var elm
= form_obj
.elements
[field_name
];
624 if (!elm
|| elm
.options
== null || elm
.selectedIndex
== -1)
627 return elm
.options
[elm
.selectedIndex
].value
;
630 function getLinkListHTML(elm_id
, target_form_element
, onchange_func
) {
631 if (typeof(tinyMCELinkList
) == "undefined" || tinyMCELinkList
.length
== 0)
636 html
+= '<select id="' + elm_id
+ '" name="' + elm_id
+ '"';
637 html
+= ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element
+ '.value=';
638 html
+= 'this.options[this.selectedIndex].value;';
640 if (typeof(onchange_func
) != "undefined")
641 html
+= onchange_func
+ '(\'' + target_form_element
+ '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
643 html
+= '"><option value="">---</option>';
645 for (var i
=0; i
<tinyMCELinkList
.length
; i
++)
646 html
+= '<option value="' + tinyMCELinkList
[i
][1] + '">' + tinyMCELinkList
[i
][0] + '</option>';
652 // tinyMCE.debug('-- image list start --', html, '-- image list end --');
655 function setPopupVisibility() {
656 var targetlist
= document
.getElementById('targetlist');
657 if (targetlist
.options
[targetlist
.selectedIndex
].value
== 'popup') {
658 document
.getElementById('popup_panel').style
.display
= 'block';
660 document
.getElementById('popup_panel').style
.display
= 'none';
664 function getTargetListHTML(elm_id
, target_form_element
) {
665 var targets
= tinyMCEPopup
.getParam('theme_advanced_link_targets', '').split(';');
668 html
+= '<select id="' + elm_id
+ '" name="' + elm_id
+ '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element
+ '.value=';
669 html
+= 'this.options[this.selectedIndex].value;">';
670 html
+= '<option value="_self">' + tinyMCEPopup
.getLang('plonelink_dlg.target_same') + '</option>';
671 html
+= '<option value="_blank">' + tinyMCEPopup
.getLang('plonelink_dlg.target_blank') + ' (_blank)</option>';
672 html
+= '<option value="_parent">' + tinyMCEPopup
.getLang('plonelink_dlg.target_parent') + ' (_parent)</option>';
673 html
+= '<option value="_top">' + tinyMCEPopup
.getLang('plonelink_dlg.target_top') + ' (_top)</option>';
675 for (var i
=0; i
<targets
.length
; i
++) {
678 if (targets
[i
] == "")
681 key
= targets
[i
].split('=')[0];
682 value
= targets
[i
].split('=')[1];
684 html
+= '<option value="' + key
+ '">' + value
+ ' (' + key
+ ')</option>';
692 function displayPanel(elm_id
) {
693 document
.getElementById ('internal_panel').style
.display
= elm_id
== 'internal_panel' || elm_id
== 'upload_panel' ? 'block' : 'none';
694 document
.getElementById ('internal_details_panel').style
.display
= elm_id
== 'internal_panel' ? 'block' : 'none';
695 document
.getElementById ('external_panel').style
.display
= elm_id
== 'external_panel' ? 'block' : 'none';
696 document
.getElementById ('mail_panel').style
.display
= elm_id
== 'mail_panel' ? 'block' : 'none';
697 document
.getElementById ('anchors_panel').style
.display
= elm_id
== 'anchors_panel' ? 'block' : 'none';
698 document
.getElementById ('upload_panel').style
.display
= elm_id
== 'upload_panel' ? 'block' : 'none';
701 function setDetails(path
, pageanchor
) {
702 // Sends a low level Ajax request
703 tinymce
.util
.XHR
.send({
704 url
: path
+ '/tinymce-jsondetails',
706 success : function(text
) {
708 var data
= eval('(' + text
+ ')');
709 document
.getElementById ('internal_details_title').innerHTML
= data
.title
;
711 if (data
.thumb
== "") {
712 document
.getElementById ('internal_details_description').innerHTML
= data
.description
;
714 document
.getElementById ('internal_details_description').innerHTML
= '<img src="' + data
.thumb
+ '" border="0" />';
717 if (data
.anchors
.length
== 0) {
718 document
.getElementById ('pageanchorcontainer').style
.display
= 'none';
719 document
.getElementById ('pageanchorlabel').style
.display
= 'none';
720 html
= '<select id="pageanchor" name="pageanchor">';
721 html
+= '<option value="">top of page (default)</option>';
723 document
.getElementById ('pageanchorcontainer').innerHTML
= html
;
725 document
.getElementById ('pageanchorcontainer').style
.display
= 'block';
726 document
.getElementById ('pageanchorlabel').style
.display
= 'block';
727 html
= '<select id="pageanchor" name="pageanchor">';
728 html
+= '<option value="">top of page (default)</option>';
729 for (var i
= 0; i
< data
.anchors
.length
; i
++) {
730 html
+= '<option value="' + data
.anchors
[i
] + '">' + data
.anchors
[i
] + '</option>';
734 document
.getElementById ('pageanchorcontainer').innerHTML
= html
;
735 if (pageanchor
!= '') {
736 selectByValue(document
.forms
[0], 'pageanchor', pageanchor
, true);
739 current_pageanchor
= pageanchor
;
740 document
.getElementById('internal_details_panel').style
.display
= 'block';
741 document
.getElementById('upload_panel').style
.display
= 'none';
746 function getCurrentFolderListing() {
747 getFolderListing(tinyMCEPopup
.editor
.settings
.document_base_url
, 'tinymce-jsonlinkablefolderlisting');
750 function getFolderListing(path
, method
) {
751 // Sends a low level Ajax request
752 tinymce
.util
.XHR
.send({
753 url
: path
+ '/' + method
,
754 content_type
: "application/x-www-form-urlencoded",
756 data
: "searchtext=" + document
.getElementById('searchtext').value
+ "&rooted=" + (tinyMCEPopup
.editor
.settings
.rooted
? "True" : "False") + "&document_base_url=" + encodeURIComponent(tinyMCEPopup
.editor
.settings
.document_base_url
),
758 success : function(text
) {
760 var data
= eval('(' + text
+ ')');
761 if (data
.items
.length
== 0) {
762 html
= labels
['label_no_items'];
764 for (var i
= 0; i
< data
.items
.length
; i
++) {
765 html
+= '<div class="' + (i
% 2 == 0 ? 'even' : 'odd');
766 html
+= '"><input onclick="setDetails(\'';
767 html
+= data
.items
[i
].url
+ '\', \'\');" type="radio" class="noborder" name="internallink" value="';
768 if (tinyMCEPopup
.editor
.settings
.link_using_uids
) {
769 html
+= "resolveuid/" + data
.items
[i
].uid
;
771 html
+= data
.items
[i
].url
;
774 if (data
.items
[i
].icon
.length
) {
775 html
+= '<img src="' + data
.items
[i
].icon
+ '" border="0"/> ';
777 if (data
.items
[i
].is_folderish
) {
778 html
+= '<a class="contenttype-' + data
.items
[i
].normalized_type
+ '" ';
779 html
+= 'href="javascript:getFolderListing(\'' + data
.items
[i
].url
+ '\',\'tinymce-jsonlinkablefolderlisting' + '\')">';
780 html
+= data
.items
[i
].title
;
783 html
+= '<span class="contenttype-' + data
.items
[i
].normalized_type
+ '">' + data
.items
[i
].title
+ '</span>';
788 document
.getElementById ('internallinkcontainer').innerHTML
= html
;
789 if (data
.parent_url
== "") {
790 document
.getElementById ('uponelevel').style
.display
= 'none';
791 document
.getElementById ('uponelevel').href
= 'javascript:void(0)';
793 document
.getElementById ('uponelevel').style
.display
= 'block';
794 document
.getElementById ('uponelevel').href
= 'javascript:getFolderListing(\'' + data
.parent_url
+ '\',\'tinymce-jsonlinkablefolderlisting' + '\')';
798 for (var i
= 0; i
< data
.path
.length
; i
++) {
802 if (i
== data
.path
.length
- 1) {
803 html
+= data
.path
[i
].title
;
805 html
+= '<a href="javascript:getFolderListing(\'' + data
.path
[i
].url
+ '\',\'tinymce-jsonlinkablefolderlisting' + '\')">';
806 html
+= data
.path
[i
].title
;
810 document
.getElementById ('internalpath').innerHTML
= html
;
812 // Check if allowed to upload
813 if (data
.upload_allowed
) {
814 document
.getElementById ('upload').style
.display
= '';
816 document
.getElementById ('upload').style
.display
= 'none';
821 document
.forms
[1].action
= current_path
+ '/tinymce-upload';
822 setRadioValue('internallink', current_link
, 0);
823 if (current_link
!= "") {
824 if (current_link
.indexOf('resolveuid') != -1) {
825 current_uid
= current_link
.split('resolveuid/')[1];
826 tinymce
.util
.XHR
.send({
827 url
: tinyMCEPopup
.editor
.settings
.portal_url
+ '/portal_tinymce/tinymce-getpathbyuid?uid=' + current_uid
,
829 success : function(text
) {
830 current_url
= getAbsoluteUrl(tinyMCEPopup
.editor
.settings
.document_base_url
, text
);
831 setDetails(current_url
, current_pageanchor
);
835 setDetails(current_link
, current_pageanchor
);
842 function uploadOk(ok_msg
) {
843 current_link
= ok_msg
;
844 displayPanel('internal_panel');
845 getFolderListing(current_path
,'tinymce-jsonlinkablefolderlisting');
848 function uploadError(error_msg
) {
854 tinyMCEPopup
.onInit
.add(init
);