| | |
| | | function tabCancel(ed, e) {
|
| | | if (e.keyCode === 9)
|
| | | return Event.cancel(e);
|
| | | };
|
| | | }
|
| | |
|
| | | function tabHandler(ed, e) {
|
| | | var x, i, f, el, v;
|
| | |
|
| | | function find(d) {
|
| | | f = DOM.getParent(ed.id, 'form');
|
| | | el = f.elements;
|
| | | el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
|
| | |
|
| | | if (f) {
|
| | | each(el, function(e, i) {
|
| | | if (e.id == ed.id) {
|
| | | x = i;
|
| | | return false;
|
| | | }
|
| | | });
|
| | | function canSelectRecursive(e) {
|
| | | return e.nodeName==="BODY" || (e.type != 'hidden' &&
|
| | | !(e.style.display == "none") &&
|
| | | !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode));
|
| | | }
|
| | | function canSelectInOldIe(el) {
|
| | | return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA";
|
| | | }
|
| | | function isOldIe() {
|
| | | return tinymce.isIE6 || tinymce.isIE7;
|
| | | }
|
| | | function canSelect(el) {
|
| | | return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el);
|
| | | }
|
| | |
|
| | | if (d > 0) {
|
| | | for (i = x + 1; i < el.length; i++) {
|
| | | if (el[i].type != 'hidden')
|
| | | return el[i];
|
| | | }
|
| | | } else {
|
| | | for (i = x - 1; i >= 0; i--) {
|
| | | if (el[i].type != 'hidden')
|
| | | return el[i];
|
| | | }
|
| | | each(el, function(e, i) {
|
| | | if (e.id == ed.id) {
|
| | | x = i;
|
| | | return false;
|
| | | }
|
| | | });
|
| | | if (d > 0) {
|
| | | for (i = x + 1; i < el.length; i++) {
|
| | | if (canSelect(el[i]))
|
| | | return el[i];
|
| | | }
|
| | | } else {
|
| | | for (i = x - 1; i >= 0; i--) {
|
| | | if (canSelect(el[i]))
|
| | | return el[i];
|
| | | }
|
| | | }
|
| | |
|
| | | return null;
|
| | | };
|
| | | }
|
| | |
|
| | | if (e.keyCode === 9) {
|
| | | v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
|
| | |
| | | }
|
| | |
|
| | | if (el) {
|
| | | if (ed = tinymce.get(el.id || el.name))
|
| | | if (el.id && (ed = tinymce.get(el.id || el.name)))
|
| | | ed.focus();
|
| | | else
|
| | | window.setTimeout(function() {window.focus();el.focus();}, 10);
|
| | | window.setTimeout(function() {
|
| | | if (!tinymce.isWebKit)
|
| | | window.focus();
|
| | | el.focus();
|
| | | }, 10);
|
| | |
|
| | | return Event.cancel(e);
|
| | | }
|
| | | }
|
| | | };
|
| | | }
|
| | |
|
| | | ed.onKeyUp.add(tabCancel);
|
| | |
|
| | |
| | | } else
|
| | | ed.onKeyDown.add(tabHandler);
|
| | |
|
| | | ed.onInit.add(function() {
|
| | | each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {
|
| | | Event.add(n, 'focus', function() {ed.focus();});
|
| | | });
|
| | | });
|
| | | },
|
| | |
|
| | | getInfo : function() {
|
| | |
| | |
|
| | | // Register plugin
|
| | | tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
|
| | | })(); |
| | | })();
|