PluginProbe
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder / 51.1.49
King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder v51.1.49
51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 51.1.47 51.1.49 All 37 releases
king-addons / includes / extensions / Activity_Log / assets / admin.js

admin.js in King Addons for Elementor – 80+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce, Mega Menu, Popup Builder 51.1.49, at includes/extensions/Activity_Log/assets/admin.js

164 lines 5.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2 'use strict';
3
4 function parseLogPayload(raw) {
5 if (!raw) {
6 return {};
7 }
8 try {
9 return JSON.parse(raw);
10 } catch (e) {
11 return {};
12 }
13 }
14
15 function setText($drawer, field, value) {
16 var text = value || '-';
17 $drawer.find('[data-field="' + field + '"]').text(text);
18 }
19
20 function setObject($drawer, label, url) {
21 var $field = $drawer.find('[data-field="object"]');
22 $field.empty();
23
24 if (url) {
25 var $link = $('<a></a>');
26 $link.attr('href', url);
27 $link.attr('target', '_blank');
28 $link.attr('rel', 'noopener');
29 $link.text(label || '-');
30 $field.append($link);
31 } else {
32 $field.text(label || '-');
33 }
34 }
35
36 function setSeverity($drawer, severity) {
37 var $field = $drawer.find('[data-field="severity"]');
38 var value = severity || '-';
39 $field.text(value);
40 $field.removeClass('kng-severity-info kng-severity-notice kng-severity-warning kng-severity-critical');
41 if (severity) {
42 $field.addClass('kng-severity-' + severity);
43 }
44 }
45
46 function openDrawer(payload) {
47 var $drawer = $('.kng-activity-drawer');
48
49 setText($drawer, 'event', payload.event);
50 setText($drawer, 'time', payload.time);
51 setSeverity($drawer, payload.severity);
52 setText($drawer, 'user', payload.user);
53 setText($drawer, 'role', payload.role);
54 setText($drawer, 'ip', payload.ip);
55 setText($drawer, 'source', payload.source);
56 setText($drawer, 'context', payload.context);
57 setText($drawer, 'message', payload.message);
58 setText($drawer, 'user_agent', payload.user_agent);
59 setObject($drawer, payload.object_label, payload.object_url);
60
61 var dataText = '';
62 if (payload.data && typeof payload.data === 'object') {
63 dataText = JSON.stringify(payload.data, null, 2);
64 }
65 $drawer.find('[data-field="data"]').text(dataText || '-');
66
67 $drawer.addClass('is-open').attr('aria-hidden', 'false');
68 }
69
70 function closeDrawer() {
71 $('.kng-activity-drawer').removeClass('is-open').attr('aria-hidden', 'true');
72 }
73
74 $(document).on('click', '.kng-log-view', function() {
75 var raw = $(this).attr('data-log');
76 var payload = parseLogPayload(raw);
77 openDrawer(payload);
78 });
79
80 $(document).on('click', '.kng-activity-drawer-close, .kng-activity-drawer-overlay', function() {
81 closeDrawer();
82 });
83
84 var $segment = $('#ka-v3-theme-segment');
85 var $buttons = $segment.find('.ka-v3-segmented-btn');
86 var mql = window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;
87 var mode = ($segment.attr('data-active') || 'dark').toString();
88 var mqlHandler = null;
89
90 function saveUISetting(value) {
91 if (!window.KNGActivityLog) {
92 return;
93 }
94 $.post(KNGActivityLog.ajaxUrl, {
95 action: 'king_addons_save_dashboard_ui',
96 nonce: KNGActivityLog.themeNonce,
97 key: 'theme_mode',
98 value: value
99 });
100 }
101
102 function updateSegment(activeMode) {
103 $segment.attr('data-active', activeMode);
104 $buttons.each(function() {
105 var theme = ($(this).data('theme') || 'dark').toString();
106 $(this).attr('aria-pressed', theme === activeMode ? 'true' : 'false');
107 });
108 }
109
110 function applyTheme(isDark) {
111 $('body').toggleClass('ka-v3-dark', isDark);
112 document.documentElement.classList.toggle('ka-v3-dark', isDark);
113 }
114
115 function setThemeMode(nextMode, save) {
116 mode = (nextMode || 'dark').toString();
117 updateSegment(mode);
118
119 if (mqlHandler && mql) {
120 if (mql.removeEventListener) {
121 mql.removeEventListener('change', mqlHandler);
122 } else if (mql.removeListener) {
123 mql.removeListener(mqlHandler);
124 }
125 mqlHandler = null;
126 }
127
128 if (mode === 'auto') {
129 applyTheme(!!(mql && mql.matches));
130 mqlHandler = function(e) {
131 if (mode !== 'auto') {
132 return;
133 }
134 applyTheme(!!e.matches);
135 };
136 if (mql) {
137 if (mql.addEventListener) {
138 mql.addEventListener('change', mqlHandler);
139 } else if (mql.addListener) {
140 mql.addListener(mqlHandler);
141 }
142 }
143 } else {
144 applyTheme(mode === 'dark');
145 }
146
147 if (save) {
148 saveUISetting(mode);
149 }
150 }
151
152 $segment.on('click', '.ka-v3-segmented-btn', function(e) {
153 e.preventDefault();
154 setThemeMode(($(this).data('theme') || 'dark').toString(), true);
155 });
156
157 window.kaV3ToggleDark = function() {
158 var isDark = $('body').hasClass('ka-v3-dark');
159 setThemeMode(isDark ? 'light' : 'dark', true);
160 };
161
162 setThemeMode(mode, false);
163 })(jQuery);
164