annotate static/js/tiny_mce/themes/advanced/js/link.js @ 639:1872c8fca82a

More tweaks to the store page.
author Brian Neal <bgneal@gmail.com>
date Sat, 16 Feb 2013 18:01:30 -0600
parents 6c182ceb7147
children
rev   line source
bgneal@312 1 tinyMCEPopup.requireLangPack();
bgneal@312 2
bgneal@312 3 var LinkDialog = {
bgneal@312 4 preInit : function() {
bgneal@312 5 var url;
bgneal@312 6
bgneal@312 7 if (url = tinyMCEPopup.getParam("external_link_list_url"))
bgneal@312 8 document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
bgneal@312 9 },
bgneal@312 10
bgneal@312 11 init : function() {
bgneal@312 12 var f = document.forms[0], ed = tinyMCEPopup.editor;
bgneal@312 13
bgneal@312 14 // Setup browse button
bgneal@312 15 document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
bgneal@312 16 if (isVisible('hrefbrowser'))
bgneal@312 17 document.getElementById('href').style.width = '180px';
bgneal@312 18
bgneal@312 19 this.fillClassList('class_list');
bgneal@312 20 this.fillFileList('link_list', 'tinyMCELinkList');
bgneal@312 21 this.fillTargetList('target_list');
bgneal@312 22
bgneal@312 23 if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
bgneal@312 24 f.href.value = ed.dom.getAttrib(e, 'href');
bgneal@312 25 f.linktitle.value = ed.dom.getAttrib(e, 'title');
bgneal@312 26 f.insert.value = ed.getLang('update');
bgneal@312 27 selectByValue(f, 'link_list', f.href.value);
bgneal@312 28 selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
bgneal@312 29 selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
bgneal@312 30 }
bgneal@312 31 },
bgneal@312 32
bgneal@312 33 update : function() {
bgneal@442 34 var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20');
bgneal@312 35
bgneal@312 36 tinyMCEPopup.restoreSelection();
bgneal@312 37 e = ed.dom.getParent(ed.selection.getNode(), 'A');
bgneal@312 38
bgneal@312 39 // Remove element if there is no href
bgneal@312 40 if (!f.href.value) {
bgneal@312 41 if (e) {
bgneal@312 42 b = ed.selection.getBookmark();
bgneal@312 43 ed.dom.remove(e, 1);
bgneal@312 44 ed.selection.moveToBookmark(b);
bgneal@312 45 tinyMCEPopup.execCommand("mceEndUndoLevel");
bgneal@312 46 tinyMCEPopup.close();
bgneal@312 47 return;
bgneal@312 48 }
bgneal@312 49 }
bgneal@312 50
bgneal@312 51 // Create new anchor elements
bgneal@312 52 if (e == null) {
bgneal@312 53 ed.getDoc().execCommand("unlink", false, null);
bgneal@442 54 tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
bgneal@312 55
bgneal@312 56 tinymce.each(ed.dom.select("a"), function(n) {
bgneal@312 57 if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
bgneal@312 58 e = n;
bgneal@312 59
bgneal@312 60 ed.dom.setAttribs(e, {
bgneal@442 61 href : href,
bgneal@312 62 title : f.linktitle.value,
bgneal@312 63 target : f.target_list ? getSelectValue(f, "target_list") : null,
bgneal@312 64 'class' : f.class_list ? getSelectValue(f, "class_list") : null
bgneal@312 65 });
bgneal@312 66 }
bgneal@312 67 });
bgneal@312 68 } else {
bgneal@312 69 ed.dom.setAttribs(e, {
bgneal@442 70 href : href,
bgneal@312 71 title : f.linktitle.value,
bgneal@312 72 target : f.target_list ? getSelectValue(f, "target_list") : null,
bgneal@312 73 'class' : f.class_list ? getSelectValue(f, "class_list") : null
bgneal@312 74 });
bgneal@312 75 }
bgneal@312 76
bgneal@312 77 // Don't move caret if selection was image
bgneal@312 78 if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
bgneal@312 79 ed.focus();
bgneal@312 80 ed.selection.select(e);
bgneal@312 81 ed.selection.collapse(0);
bgneal@312 82 tinyMCEPopup.storeSelection();
bgneal@312 83 }
bgneal@312 84
bgneal@312 85 tinyMCEPopup.execCommand("mceEndUndoLevel");
bgneal@312 86 tinyMCEPopup.close();
bgneal@312 87 },
bgneal@312 88
bgneal@312 89 checkPrefix : function(n) {
bgneal@312 90 if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
bgneal@312 91 n.value = 'mailto:' + n.value;
bgneal@312 92
bgneal@312 93 if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
bgneal@312 94 n.value = 'http://' + n.value;
bgneal@312 95 },
bgneal@312 96
bgneal@312 97 fillFileList : function(id, l) {
bgneal@312 98 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
bgneal@312 99
bgneal@312 100 l = window[l];
bgneal@312 101
bgneal@312 102 if (l && l.length > 0) {
bgneal@312 103 lst.options[lst.options.length] = new Option('', '');
bgneal@312 104
bgneal@312 105 tinymce.each(l, function(o) {
bgneal@312 106 lst.options[lst.options.length] = new Option(o[0], o[1]);
bgneal@312 107 });
bgneal@312 108 } else
bgneal@312 109 dom.remove(dom.getParent(id, 'tr'));
bgneal@312 110 },
bgneal@312 111
bgneal@312 112 fillClassList : function(id) {
bgneal@312 113 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
bgneal@312 114
bgneal@312 115 if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
bgneal@312 116 cl = [];
bgneal@312 117
bgneal@312 118 tinymce.each(v.split(';'), function(v) {
bgneal@312 119 var p = v.split('=');
bgneal@312 120
bgneal@312 121 cl.push({'title' : p[0], 'class' : p[1]});
bgneal@312 122 });
bgneal@312 123 } else
bgneal@312 124 cl = tinyMCEPopup.editor.dom.getClasses();
bgneal@312 125
bgneal@312 126 if (cl.length > 0) {
bgneal@312 127 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
bgneal@312 128
bgneal@312 129 tinymce.each(cl, function(o) {
bgneal@312 130 lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
bgneal@312 131 });
bgneal@312 132 } else
bgneal@312 133 dom.remove(dom.getParent(id, 'tr'));
bgneal@312 134 },
bgneal@312 135
bgneal@312 136 fillTargetList : function(id) {
bgneal@312 137 var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
bgneal@312 138
bgneal@312 139 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
bgneal@312 140 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
bgneal@312 141 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
bgneal@312 142
bgneal@312 143 if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
bgneal@312 144 tinymce.each(v.split(','), function(v) {
bgneal@312 145 v = v.split('=');
bgneal@312 146 lst.options[lst.options.length] = new Option(v[0], v[1]);
bgneal@312 147 });
bgneal@312 148 }
bgneal@312 149 }
bgneal@312 150 };
bgneal@312 151
bgneal@312 152 LinkDialog.preInit();
bgneal@312 153 tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);