-
Notifications
You must be signed in to change notification settings - Fork 0
/
fortraining.js
133 lines (124 loc) · 4.6 KB
/
fortraining.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* Vector-specific scripts
*/
jQuery( function ( $ ) {
/* #custom4training */
$('#mw-panel').height($(document).height());
/**
* Focus search input at the very end
*/
/*$( '#searchInput' ).attr( 'tabindex', $( document ).lastTabIndex() + 1 );*/
/**
* Dropdown menu accessibility
*/
$( 'div.vectorMenu' ).each( function () {
var $el = $( this );
$el.find( '> h3 > a' ).parent()
.attr( 'tabindex', '0' )
// For accessibility, show the menu when the h3 is clicked (bug 24298/46486)
.on( 'click keypress', function ( e ) {
if ( e.type === 'click' || e.which === 13 ) {
$el.toggleClass( 'menuForceShow' );
e.preventDefault();
}
} )
// When the heading has focus, also set a class that will change the arrow icon
.focus( function () {
$el.find( '> a' ).addClass( 'vectorMenuFocus' );
} )
.blur( function () {
$el.find( '> a' ).removeClass( 'vectorMenuFocus' );
} )
.find( '> a:first' )
// As the h3 can already be focused there's no need for the link to be focusable
.attr( 'tabindex', '-1' );
} );
/**
* Collapsible tabs
*/
var $cactions = $( '#p-cactions' ),
$tabContainer = $( '#p-views ul' ),
originalDropdownWidth = $cactions.width();
// Bind callback functions to animate our drop down menu in and out
// and then call the collapsibleTabs function on the menu
$tabContainer
.bind( 'beforeTabCollapse', function () {
// If the dropdown was hidden, show it
if ( $cactions.hasClass( 'emptyPortlet' ) ) {
$cactions
.removeClass( 'emptyPortlet' )
.find( 'h3' )
.css( 'width', '1px' ).animate( { width: originalDropdownWidth }, 'normal' );
}
} )
.bind( 'beforeTabExpand', function () {
// If we're removing the last child node right now, hide the dropdown
if ( $cactions.find( 'li' ).length === 1 ) {
$cactions.find( 'h3' ).animate( { width: '1px' }, 'normal', function () {
$( this ).attr( 'style', '' )
.parent().addClass( 'emptyPortlet' );
} );
}
} )
.collapsibleTabs( {
expandCondition: function ( eleWidth ) {
// (This looks a bit awkward because we're doing expensive queries as late as possible.)
var distance = $.collapsibleTabs.calculateTabDistance();
// If there are at least eleWidth + 1 pixels of free space, expand.
// We add 1 because .width() will truncate fractional values but .offset() will not.
if ( distance >= eleWidth + 1 ) {
return true;
} else {
// Maybe we can still expand? Account for the width of the "Actions" dropdown if the
// expansion would hide it.
if ( $cactions.find( 'li' ).length === 1 ) {
return distance >= eleWidth + 1 - originalDropdownWidth;
} else {
return false;
}
}
},
collapseCondition: function () {
// (This looks a bit awkward because we're doing expensive queries as late as possible.)
// TODO The dropdown itself should probably "fold" to just the down-arrow (hiding the text)
// if it can't fit on the line?
// If there's an overlap, collapse.
if ( $.collapsibleTabs.calculateTabDistance() < 0 ) {
// But only if the width of the tab to collapse is smaller than the width of the dropdown
// we would have to insert. An example language where this happens is Lithuanian (lt).
if ( $cactions.hasClass( 'emptyPortlet' ) ) {
return $tabContainer.children( 'li.collapsible:last' ).width() > originalDropdownWidth;
} else {
return true;
}
} else {
return false;
}
}
} );
// #custom4training
var $ftMenuIsOpen = true; // ist Menü gerade aus- oder eingeklappt?
$('#ft-toggle-menu').click(function() {
if ($ftMenuIsOpen) {
// wir klappen das Menü ein
$('#mw-panel').css({'width' : '15px'});
$('#ft-content').css({'margin-left':'15px'});
$('#ft-header').css({'margin-left':'45px'});
$('#mw-panel').children("div[id != 'ft-toggle-menu']").css({'display':'none'});
$('#ft-toggle-menu a#ft-closemenu').css({'display':'none'});
$('#ft-toggle-menu a#ft-openmenu').css({'display':'block'});
$('#ft-toggle-menu').css({'width':'15px','margin-left':'0px'});
$ftMenuIsOpen = false;
} else {
// wir klappen das Menü aus
$('#mw-panel').css({'width' : '220px'});
$('#ft-content').css({'margin-left':'220px'});
$('#ft-header').css({'margin-left':'250px'});
$('#mw-panel').children("div[id != 'ft-toggle-menu']").css({'display':'block'});
$('#ft-toggle-menu a#ft-closemenu').css({'display':'block'});
$('#ft-toggle-menu a#ft-openmenu').css({'display':'none'});
$('#ft-toggle-menu').css({'width':'20px','margin-left':'200px'});
$ftMenuIsOpen = true;
}
});
} );