otgs-notices.js
3.54 KB
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
/*globals jQuery, ajaxurl */
(function (jQuery, ajaxurl) {
function bindEvents() {
'use strict';
var otgsNotice = jQuery('.otgs-notice');
var otgsCollapseText = '.otgs-notice-collapse-text';
var otgsCollapsedText = '.otgs-notice-collapsed-text';
jQuery(otgsCollapsedText).hide();
var preventDefaultEvent = function (event) {
if (typeof (event.preventDefault) !== 'undefined') {
event.preventDefault();
} else {
event.returnValue = false;
}
};
var noticeAction = function (noticeBox, action) {
if (noticeBox) {
var ajaxAction = 'otgs-' + action + '-notice';
var noticeId = _.escape(noticeBox.data('id'));
var noticeGroup = noticeBox.data('group');
var nonce = noticeBox.data('nonce');
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: ajaxAction,
'id': noticeId,
'group': noticeGroup,
nonce: nonce
},
dataType: 'json'
});
if (action === 'dismiss') {
noticeBox.remove();
}
document.dispatchEvent(new CustomEvent('otgs-notice-' + action, {'detail': noticeBox}));
}
};
var toggleNotice = function (contentToMinimize, contentToMaximize) {
contentToMinimize.toggle();
contentToMaximize.toggle();
};
otgsNotice.on('click', '.notice-dismiss, a.otgs-dismiss-link', function (event) {
preventDefaultEvent(event);
var noticeBox = jQuery(this).closest('.is-dismissible');
noticeAction(noticeBox, 'dismiss');
});
otgsNotice.on('click', '.notice-hide, a.otgs-hide-link', function (event) {
preventDefaultEvent(event);
var noticeBox = jQuery(this).closest('.is-dismissible');
noticeAction(noticeBox, 'hide');
});
otgsNotice.on('click', '.otgs-notice-collapse-hide', function (event) {
preventDefaultEvent(event);
jQuery(this).toggle();
var noticeCollapseText = jQuery(this).siblings(otgsCollapseText);
var noticeCollapsedText = jQuery(this).siblings(otgsCollapsedText);
toggleNotice(noticeCollapseText, noticeCollapsedText);
});
otgsNotice.on('click', '.otgs-notice-collapse-show', function (event) {
preventDefaultEvent(event);
jQuery(this).closest(otgsCollapsedText).siblings('.otgs-notice-collapse-hide').toggle();
var noticeCollapseCollapseText = jQuery(this).closest(otgsCollapsedText).siblings(otgsCollapseText);
var noticeCollapseCollapsedText = jQuery(this).closest(otgsCollapsedText);
toggleNotice(noticeCollapseCollapseText, noticeCollapseCollapsedText);
});
otgsNotice.on('click', '.notice-action.notice-action-link', function (event) {
var groupToDismiss = jQuery(this).data('dismiss-group');
var nonce = jQuery(this).data('nonce');
var jsCallback = jQuery(this).data('js-callback');
if (groupToDismiss) {
if (jsCallback && typeof window[jsCallback] === 'function') {
window[jsCallback](jQuery(this), function () {
dismissGroup(groupToDismiss, nonce);
});
} else {
dismissGroup(groupToDismiss, nonce);
}
}
});
var dismissGroup = function (groupToDismiss, nonce) {
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'otgs-dismiss-group',
group : groupToDismiss,
nonce : nonce
},
dataType: 'json',
complete: function () {
location.reload();
}
});
};
}
jQuery(function () {
bindEvents();
});
jQuery(document).on('otgs-notices-added', function (event) {
bindEvents();
});
})(jQuery, ajaxurl);