PluginProbe
Contact Forms by Cimatti / 1.2.1
Contact Forms by Cimatti v1.2.1
2.3.6 2.3.5 2.3.0 2.2.32 2.2.4 2.2.0 2.1.2 2.1.1 trunk 1.0 1.1 1.2 1.2.1 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 All 62 releases
contact-forms / PFBC / Resources / tiny_mce / utils / mctabs.js

mctabs.js in Contact Forms by Cimatti 1.2.1, at PFBC/Resources/tiny_mce/utils/mctabs.js

162 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * mctabs.js
3 *
4 * Copyright 2009, Moxiecode Systems AB
5 * Released under LGPL License.
6 *
7 * License: http://tinymce.moxiecode.com/license
8 * Contributing: http://tinymce.moxiecode.com/contributing
9 */
10
11 function MCTabs() {
12 this.settings = [];
13 this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher');
14 };
15
16 MCTabs.prototype.init = function(settings) {
17 this.settings = settings;
18 };
19
20 MCTabs.prototype.getParam = function(name, default_value) {
21 var value = null;
22
23 value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
24
25 // Fix bool values
26 if (value == "true" || value == "false")
27 return (value == "true");
28
29 return value;
30 };
31
32 MCTabs.prototype.showTab =function(tab){
33 tab.className = 'current';
34 tab.setAttribute("aria-selected", true);
35 tab.setAttribute("aria-expanded", true);
36 tab.tabIndex = 0;
37 };
38
39 MCTabs.prototype.hideTab =function(tab){
40 var t=this;
41
42 tab.className = '';
43 tab.setAttribute("aria-selected", false);
44 tab.setAttribute("aria-expanded", false);
45 tab.tabIndex = -1;
46 };
47
48 MCTabs.prototype.showPanel = function(panel) {
49 panel.className = 'current';
50 panel.setAttribute("aria-hidden", false);
51 };
52
53 MCTabs.prototype.hidePanel = function(panel) {
54 panel.className = 'panel';
55 panel.setAttribute("aria-hidden", true);
56 };
57
58 MCTabs.prototype.getPanelForTab = function(tabElm) {
59 return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls");
60 };
61
62 MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) {
63 var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this;
64
65 tabElm = document.getElementById(tab_id);
66
67 if (panel_id === undefined) {
68 panel_id = t.getPanelForTab(tabElm);
69 }
70
71 panelElm= document.getElementById(panel_id);
72 panelContainerElm = panelElm ? panelElm.parentNode : null;
73 tabContainerElm = tabElm ? tabElm.parentNode : null;
74 selectionClass = t.getParam('selection_class', 'current');
75
76 if (tabElm && tabContainerElm) {
77 nodes = tabContainerElm.childNodes;
78
79 // Hide all other tabs
80 for (i = 0; i < nodes.length; i++) {
81 if (nodes[i].nodeName == "LI") {
82 t.hideTab(nodes[i]);
83 }
84 }
85
86 // Show selected tab
87 t.showTab(tabElm);
88 }
89
90 if (panelElm && panelContainerElm) {
91 nodes = panelContainerElm.childNodes;
92
93 // Hide all other panels
94 for (i = 0; i < nodes.length; i++) {
95 if (nodes[i].nodeName == "DIV")
96 t.hidePanel(nodes[i]);
97 }
98
99 if (!avoid_focus) {
100 tabElm.focus();
101 }
102
103 // Show selected panel
104 t.showPanel(panelElm);
105 }
106 };
107
108 MCTabs.prototype.getAnchor = function() {
109 var pos, url = document.location.href;
110
111 if ((pos = url.lastIndexOf('#')) != -1)
112 return url.substring(pos + 1);
113
114 return "";
115 };
116
117
118 //Global instance
119 var mcTabs = new MCTabs();
120
121 tinyMCEPopup.onInit.add(function() {
122 var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each;
123
124 each(dom.select('div.tabs'), function(tabContainerElm) {
125 var keyNav;
126
127 dom.setAttrib(tabContainerElm, "role", "tablist");
128
129 var items = tinyMCEPopup.dom.select('li', tabContainerElm);
130 var action = function(id) {
131 mcTabs.displayTab(id, mcTabs.getPanelForTab(id));
132 mcTabs.onChange.dispatch(id);
133 };
134
135 each(items, function(item) {
136 dom.setAttrib(item, 'role', 'tab');
137 dom.bind(item, 'click', function(evt) {
138 action(item.id);
139 });
140 });
141
142 dom.bind(dom.getRoot(), 'keydown', function(evt) {
143 if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab
144 keyNav.moveFocus(evt.shiftKey ? -1 : 1);
145 tinymce.dom.Event.cancel(evt);
146 }
147 });
148
149 each(dom.select('a', tabContainerElm), function(a) {
150 dom.setAttrib(a, 'tabindex', '-1');
151 });
152
153 keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
154 root: tabContainerElm,
155 items: items,
156 onAction: action,
157 actOnFocus: true,
158 enableLeftRight: true,
159 enableUpDown: true
160 }, tinyMCEPopup.dom);
161 });
162 });