Disable Comments - Version 2.0.0

Version Description

Download this release

Release Info

Developer Asif2BD
Plugin Icon 128x128 Disable Comments
Version 2.0.0
Comparing to
See all releases

Code changes from version 1.11.0 to 2.0.0

assets/css/notice.css ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .disable__comment__alert {
3
+ border: 0px;
4
+ background: #fff;
5
+ display: flex;
6
+ align-items: center;
7
+ padding: 10px 20px;
8
+ margin-top: 50px;
9
+ margin-right: 20px;
10
+ }
11
+ @media (max-width: 767.98px) {
12
+ .disable__comment__alert {
13
+ display: block;
14
+ }
15
+ .disable__comment__alert .button__group {
16
+ margin-top: 20px;
17
+ }
18
+ }
19
+ .disable__comment__alert .alert__content {
20
+ display: flex;
21
+ align-items: center;
22
+ padding-right: 20px;
23
+ flex-wrap: wrap;
24
+ flex: 1;
25
+ }
26
+ @media (max-width: 767.98px) {
27
+ .disable__comment__alert .alert__content {
28
+ padding-right: 0;
29
+ }
30
+ }
31
+ @media (max-width: 575.98px) {
32
+ .disable__comment__alert .alert__content {
33
+ display: block;
34
+ }
35
+ }
36
+ .disable__comment__alert .alert__content img, .disable__comment__alert > img {
37
+ margin-right: 15px;
38
+ height: 30px;
39
+ }
40
+ @media (max-width: 575.98px) {
41
+ .disable__comment__alert .alert__content img {
42
+ margin-bottom: 10px;
43
+ }
44
+ }
45
+ .disable__comment__alert .alert__content p {
46
+ font-size: 15px;
47
+ font-weight: 500;
48
+ color: #22282d;
49
+ font-family: "DM Sans", sans-serif;
50
+ }
51
+ .disable__comment__alert .button__group {
52
+ text-align: right;
53
+ }
54
+ @media (max-width: 767.98px) {
55
+ .disable__comment__alert .button__group {
56
+ text-align: left;
57
+ }
58
+ }
59
+ .disable__comment__alert .button__group .button {
60
+ margin-right: 0;
61
+ margin-top: 5px;
62
+ margin-bottom: 5px;
63
+ color: #ffffff;
64
+ background: #05cb6b;
65
+ border: 0;
66
+ transition: all 0.3s ease 0s;
67
+ }
68
+ .disable__comment__alert .button__group .button:last-child {
69
+ background-color: #fff;
70
+ color: #808da1;
71
+ }
72
+
73
+ .disable__comment__alert .button__group .button:hover {
74
+ background: #05cb6b;
75
+ color: #ffffff;
76
+ }
77
+ .disable__comment__alert .button__group .button:not(:last-child) {
78
+ margin-right: 0;
79
+ }
80
+ .disable__comment__alert .button__group .button:not(:first-child) {
81
+ margin-left: 15px;
82
+ }
83
+ @media (max-width: 767.98px) {
84
+ .disable__comment__alert .button__group .button {
85
+ margin-right: 10px;
86
+ }
87
+ .disable__comment__alert .button__group .button:not(:last-child) {
88
+ margin-right: 10px;
89
+ }
90
+ .disable__comment__alert .button__group .button:not(:first-child) {
91
+ margin-left: 0;
92
+ }
93
+ }
94
+
95
+ .disable__comment__alert .alert__content .wpinsights-data {
96
+ font-size: 10px;
97
+ }
assets/css/style.css ADDED
@@ -0,0 +1,2983 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap");
2
+ :root {
3
+ --base-gutter: 30px;
4
+ --md-gutter: 50px;
5
+ --lg-gutter: 70px;
6
+ --xl-gutter: 100px;
7
+ --base-spacer-x: 16px;
8
+ --base-spacer-y: 16px;
9
+ --b-radius-6: 25px;
10
+ }
11
+ @media (max-width: 1599.98px) {
12
+ :root {
13
+ --base-gutter: 20px;
14
+ --md-gutter: 30px;
15
+ --lg-gutter: 50px;
16
+ --xl-gutter: 70px;
17
+ }
18
+ }
19
+ @media (max-width: 1399.98px) {
20
+ :root {
21
+ --base-gutter: 20px;
22
+ --md-gutter: 30px;
23
+ --lg-gutter: 40px;
24
+ --xl-gutter: 50px;
25
+ }
26
+ }
27
+ @media (max-width: 1199.98px) {
28
+ :root {
29
+ --base-spacer-x: 10px;
30
+ --base-spacer-y: 10px;
31
+ --md-gutter: 20px;
32
+ --lg-gutter: 30px;
33
+ --xl-gutter: 40px;
34
+ }
35
+ }
36
+ @media (max-width: 991.98px) {
37
+ :root {
38
+ --base-spacer-x: 5px;
39
+ --base-spacer-y: 5px;
40
+ --md-gutter: 20px;
41
+ --lg-gutter: 30px;
42
+ --xl-gutter: 40px;
43
+ }
44
+ }
45
+
46
+ .disablecommentswrap {
47
+ font-size: 10px;
48
+ font-family: "DM Sans", sans-serif;
49
+ line-height: 1.7;
50
+ font-weight: 400;
51
+ letter-spacing: 0;
52
+ min-height: 100vh;
53
+ background: #ffffff;
54
+ color: #000000;
55
+ outline: none;
56
+ border: none;
57
+ box-sizing: border-box;
58
+ overflow: hidden;
59
+ -webkit-display: flex;
60
+ -moz-display: flex;
61
+ -ms-display: flex;
62
+ -o-display: flex;
63
+ display: flex;
64
+ -moz-flex-direction: column;
65
+ -o-flex-direction: column;
66
+ flex-direction: column;
67
+ }
68
+ .disablecommentswrap * {
69
+ box-sizing: border-box;
70
+ }
71
+ .disablecommentswrap ::selection {
72
+ color: #ffffff;
73
+ background: rgba(98, 60, 234, 0.8);
74
+ }
75
+ .disablecommentswrap ul,
76
+ .disablecommentswrap li {
77
+ list-style: none;
78
+ }
79
+ .disablecommentswrap a {
80
+ color: initial;
81
+ transition: all 0.3s linear;
82
+ text-decoration: none;
83
+ display: inline-block;
84
+ }
85
+ .disablecommentswrap label {
86
+ margin-bottom: 0;
87
+ }
88
+ .disablecommentswrap .button {
89
+ vertical-align: middle;
90
+ font-family: "DM Sans", sans-serif;
91
+ font-weight: 500;
92
+ }
93
+ .disablecommentswrap .button:hover, .disablecommentswrap .button:focus {
94
+ outline: none;
95
+ }
96
+ .disablecommentswrap .button:not(:disabled) {
97
+ cursor: pointer;
98
+ }
99
+ .disablecommentswrap h1,
100
+ .disablecommentswrap h2,
101
+ .disablecommentswrap h3,
102
+ .disablecommentswrap h4,
103
+ .disablecommentswrap h5,
104
+ .disablecommentswrap h6,
105
+ .disablecommentswrap p {
106
+ margin: 0;
107
+ padding: 0;
108
+ }
109
+ .disablecommentswrap h1,
110
+ .disablecommentswrap h2,
111
+ .disablecommentswrap h3,
112
+ .disablecommentswrap h4,
113
+ .disablecommentswrap h5,
114
+ .disablecommentswrap h6 {
115
+ font-family: "DM Sans", sans-serif;
116
+ font-weight: 700;
117
+ line-height: 1.3;
118
+ margin-top: 0;
119
+ margin-bottom: 0;
120
+ color: inherit;
121
+ }
122
+ .disablecommentswrap h1 a,
123
+ .disablecommentswrap h2 a,
124
+ .disablecommentswrap h3 a,
125
+ .disablecommentswrap h4 a,
126
+ .disablecommentswrap h5 a,
127
+ .disablecommentswrap h6 a {
128
+ color: inherit;
129
+ }
130
+ .disablecommentswrap h1 a:hover,
131
+ .disablecommentswrap h2 a:hover,
132
+ .disablecommentswrap h3 a:hover,
133
+ .disablecommentswrap h4 a:hover,
134
+ .disablecommentswrap h5 a:hover,
135
+ .disablecommentswrap h6 a:hover {
136
+ color: inherit;
137
+ }
138
+ .disablecommentswrap ul,
139
+ .disablecommentswrap ol {
140
+ margin-bottom: 0;
141
+ }
142
+ .disablecommentswrap img,
143
+ .disablecommentswrap video {
144
+ max-width: 100%;
145
+ }
146
+
147
+ .pt50 {
148
+ padding-top: 50px;
149
+ }
150
+
151
+ .pb50 {
152
+ padding-bottom: 50px;
153
+ }
154
+
155
+ .pt70 {
156
+ padding-top: 70px;
157
+ }
158
+
159
+ .pb70 {
160
+ padding-bottom: 70px;
161
+ }
162
+
163
+ .pt110 {
164
+ padding-top: 110px;
165
+ }
166
+
167
+ .pb110 {
168
+ padding-bottom: 110px;
169
+ }
170
+
171
+ .pt120 {
172
+ padding-top: 120px;
173
+ }
174
+
175
+ .pb120 {
176
+ padding-bottom: 120px;
177
+ }
178
+
179
+ .pt150 {
180
+ padding-top: 150px;
181
+ }
182
+
183
+ .pb150 {
184
+ padding-bottom: 150px;
185
+ }
186
+
187
+ .pt200 {
188
+ padding-top: 200px;
189
+ }
190
+
191
+ .pb200 {
192
+ padding-bottom: 200px;
193
+ }
194
+
195
+ .pt300 {
196
+ padding-top: 300px;
197
+ }
198
+
199
+ .pb300 {
200
+ padding-bottom: 300px;
201
+ }
202
+
203
+ .mt20 {
204
+ margin-top: 20px;
205
+ }
206
+
207
+ .mb20 {
208
+ margin-bottom: 20px;
209
+ }
210
+
211
+ .mt30 {
212
+ margin-top: 30px;
213
+ }
214
+
215
+ .mb30 {
216
+ margin-bottom: 30px;
217
+ }
218
+
219
+ .mt50 {
220
+ margin-top: 50px;
221
+ }
222
+
223
+ .mb50 {
224
+ margin-bottom: 50px;
225
+ }
226
+
227
+ .mt70 {
228
+ margin-top: 70px;
229
+ }
230
+
231
+ .mb70 {
232
+ margin-bottom: 70px;
233
+ }
234
+
235
+ .mt80 {
236
+ margin-top: 80px;
237
+ }
238
+
239
+ .mb80 {
240
+ margin-bottom: 80px;
241
+ }
242
+
243
+ .mt100 {
244
+ margin-top: 100px;
245
+ }
246
+
247
+ .mb100 {
248
+ margin-bottom: 100px;
249
+ }
250
+
251
+ .color__primary {
252
+ color: #623cea !important;
253
+ }
254
+
255
+ a.color__primary:hover, a.color__primary:focus {
256
+ color: #4218db;
257
+ box-shadow: none;
258
+ }
259
+
260
+ .color__secondary {
261
+ color: #fa7d51 !important;
262
+ }
263
+
264
+ a.color__secondary:hover, a.color__secondary:focus {
265
+ color: #f9581f;
266
+ box-shadow: none;
267
+ }
268
+
269
+ .color__success {
270
+ color: #05cb6b !important;
271
+ }
272
+
273
+ a.color__success:hover, a.color__success:focus {
274
+ color: #049951;
275
+ box-shadow: none;
276
+ }
277
+
278
+ .color__danger {
279
+ color: #e0061a !important;
280
+ }
281
+
282
+ a.color__danger:hover, a.color__danger:focus {
283
+ color: #ae0514;
284
+ box-shadow: none;
285
+ }
286
+
287
+ .color__info {
288
+ color: #00b2fc !important;
289
+ }
290
+
291
+ a.color__info:hover, a.color__info:focus {
292
+ color: #008ec9;
293
+ box-shadow: none;
294
+ }
295
+
296
+ .color__dark {
297
+ color: #22282d !important;
298
+ }
299
+
300
+ a.color__dark:hover, a.color__dark:focus {
301
+ color: #0c0e10;
302
+ box-shadow: none;
303
+ }
304
+
305
+ .color__white {
306
+ color: #ffffff !important;
307
+ }
308
+
309
+ a.color__white:hover, a.color__white:focus {
310
+ color: #e6e6e6;
311
+ box-shadow: none;
312
+ }
313
+
314
+ .color__black {
315
+ color: #000000 !important;
316
+ }
317
+
318
+ .color__grey {
319
+ color: #f4f6fc !important;
320
+ }
321
+
322
+ a.color__grey:hover, a.color__grey:focus {
323
+ color: #ccd5f1;
324
+ box-shadow: none;
325
+ }
326
+
327
+ .color__grey2 {
328
+ color: #808da1 !important;
329
+ }
330
+
331
+ a.color__grey2:hover, a.color__grey2:focus {
332
+ color: #657389;
333
+ box-shadow: none;
334
+ }
335
+
336
+ .color__twitter {
337
+ color: #1da1f2 !important;
338
+ }
339
+
340
+ a.color__twitter:hover, a.color__twitter:focus {
341
+ color: #0c85d0;
342
+ box-shadow: none;
343
+ }
344
+
345
+ .color__linkedin {
346
+ color: #0077b5 !important;
347
+ }
348
+
349
+ a.color__linkedin:hover, a.color__linkedin:focus {
350
+ color: #005582;
351
+ box-shadow: none;
352
+ }
353
+
354
+ .color__instagram {
355
+ color: #e1306c !important;
356
+ }
357
+
358
+ a.color__instagram:hover, a.color__instagram:focus {
359
+ color: #c21c54;
360
+ box-shadow: none;
361
+ }
362
+
363
+ .background__primary {
364
+ background-color: #623cea !important;
365
+ }
366
+
367
+ .background__secondary {
368
+ background-color: #fa7d51 !important;
369
+ }
370
+
371
+ .background__success {
372
+ background-color: #05cb6b !important;
373
+ }
374
+
375
+ .background__danger {
376
+ background-color: #e0061a !important;
377
+ }
378
+
379
+ .background__info {
380
+ background-color: #00b2fc !important;
381
+ }
382
+
383
+ .background__dark {
384
+ background-color: #22282d !important;
385
+ }
386
+
387
+ .background__white {
388
+ background-color: #ffffff !important;
389
+ }
390
+
391
+ .background__black {
392
+ background-color: #000000 !important;
393
+ }
394
+
395
+ .background__grey {
396
+ background-color: #f4f6fc !important;
397
+ }
398
+
399
+ .background__grey2 {
400
+ background-color: #808da1 !important;
401
+ }
402
+
403
+ .background__twitter {
404
+ background-color: #1da1f2 !important;
405
+ }
406
+
407
+ .background__linkedin {
408
+ background-color: #0077b5 !important;
409
+ }
410
+
411
+ .background__instagram {
412
+ background-color: #e1306c !important;
413
+ }
414
+
415
+ .gradient__primary {
416
+ background-image: linear-gradient(180deg, rgba(98, 60, 234, 0.3), rgba(98, 60, 234, 0.05));
417
+ color: #623cea;
418
+ }
419
+
420
+ .gradient__secondary {
421
+ background-image: linear-gradient(180deg, rgba(250, 125, 81, 0.3), rgba(250, 125, 81, 0.05));
422
+ color: #fa7d51;
423
+ }
424
+
425
+ .gradient__success {
426
+ background-image: linear-gradient(180deg, rgba(5, 203, 107, 0.3), rgba(5, 203, 107, 0.05));
427
+ color: #05cb6b;
428
+ }
429
+
430
+ .gradient__danger {
431
+ background-image: linear-gradient(180deg, rgba(224, 6, 26, 0.3), rgba(224, 6, 26, 0.05));
432
+ color: #e0061a;
433
+ }
434
+
435
+ .gradient__info {
436
+ background-image: linear-gradient(180deg, rgba(0, 178, 252, 0.3), rgba(0, 178, 252, 0.05));
437
+ color: #00b2fc;
438
+ }
439
+
440
+ .gradient__dark {
441
+ background-image: linear-gradient(180deg, rgba(34, 40, 45, 0.3), rgba(34, 40, 45, 0.05));
442
+ color: #22282d;
443
+ }
444
+
445
+ .gradient__white {
446
+ background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
447
+ color: #ffffff;
448
+ }
449
+
450
+ .gradient__black {
451
+ background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.05));
452
+ color: #000000;
453
+ }
454
+
455
+ .gradient__grey {
456
+ background-image: linear-gradient(180deg, rgba(244, 246, 252, 0.3), rgba(244, 246, 252, 0.05));
457
+ color: #f4f6fc;
458
+ }
459
+
460
+ .gradient__grey2 {
461
+ background-image: linear-gradient(180deg, rgba(128, 141, 161, 0.3), rgba(128, 141, 161, 0.05));
462
+ color: #808da1;
463
+ }
464
+
465
+ .gradient__twitter {
466
+ background-image: linear-gradient(180deg, rgba(29, 161, 242, 0.3), rgba(29, 161, 242, 0.05));
467
+ color: #1da1f2;
468
+ }
469
+
470
+ .gradient__linkedin {
471
+ background-image: linear-gradient(180deg, rgba(0, 119, 181, 0.3), rgba(0, 119, 181, 0.05));
472
+ color: #0077b5;
473
+ }
474
+
475
+ .gradient__instagram {
476
+ background-image: linear-gradient(180deg, rgba(225, 48, 108, 0.3), rgba(225, 48, 108, 0.05));
477
+ color: #e1306c;
478
+ }
479
+
480
+ .cloud__info__card__icon__primary {
481
+ background-image: linear-gradient(180deg, rgba(98, 60, 234, 0.3), rgba(98, 60, 234, 0.05));
482
+ color: #623cea;
483
+ }
484
+
485
+ .cloud__info__card__icon__secondary {
486
+ background-image: linear-gradient(180deg, rgba(250, 125, 81, 0.3), rgba(250, 125, 81, 0.05));
487
+ color: #fa7d51;
488
+ }
489
+
490
+ .cloud__info__card__icon__success {
491
+ background-image: linear-gradient(180deg, rgba(5, 203, 107, 0.3), rgba(5, 203, 107, 0.05));
492
+ color: #05cb6b;
493
+ }
494
+
495
+ .cloud__info__card__icon__danger {
496
+ background-image: linear-gradient(180deg, rgba(224, 6, 26, 0.3), rgba(224, 6, 26, 0.05));
497
+ color: #e0061a;
498
+ }
499
+
500
+ .cloud__info__card__icon__info {
501
+ background-image: linear-gradient(180deg, rgba(0, 178, 252, 0.3), rgba(0, 178, 252, 0.05));
502
+ color: #00b2fc;
503
+ }
504
+
505
+ .cloud__info__card__icon__dark {
506
+ background-image: linear-gradient(180deg, rgba(34, 40, 45, 0.3), rgba(34, 40, 45, 0.05));
507
+ color: #22282d;
508
+ }
509
+
510
+ .cloud__info__card__icon__white {
511
+ background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.05));
512
+ color: #ffffff;
513
+ }
514
+
515
+ .cloud__info__card__icon__black {
516
+ background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.05));
517
+ color: #000000;
518
+ }
519
+
520
+ .cloud__info__card__icon__grey {
521
+ background-image: linear-gradient(180deg, rgba(244, 246, 252, 0.3), rgba(244, 246, 252, 0.05));
522
+ color: #f4f6fc;
523
+ }
524
+
525
+ .cloud__info__card__icon__grey2 {
526
+ background-image: linear-gradient(180deg, rgba(128, 141, 161, 0.3), rgba(128, 141, 161, 0.05));
527
+ color: #808da1;
528
+ }
529
+
530
+ .cloud__info__card__icon__twitter {
531
+ background-image: linear-gradient(180deg, rgba(29, 161, 242, 0.3), rgba(29, 161, 242, 0.05));
532
+ color: #1da1f2;
533
+ }
534
+
535
+ .cloud__info__card__icon__linkedin {
536
+ background-image: linear-gradient(180deg, rgba(0, 119, 181, 0.3), rgba(0, 119, 181, 0.05));
537
+ color: #0077b5;
538
+ }
539
+
540
+ .cloud__info__card__icon__instagram {
541
+ background-image: linear-gradient(180deg, rgba(225, 48, 108, 0.3), rgba(225, 48, 108, 0.05));
542
+ color: #e1306c;
543
+ }
544
+
545
+ .counter__card__primary .counter__card--icon {
546
+ color: white;
547
+ background: #623cea;
548
+ }
549
+ .counter__card__primary .counter__card--icon:before {
550
+ background: #623cea;
551
+ }
552
+ .counter__card__primary .counter__card--content .count__number {
553
+ color: #623cea;
554
+ }
555
+
556
+ .counter__card__secondary .counter__card--icon {
557
+ color: white;
558
+ background: #fa7d51;
559
+ }
560
+ .counter__card__secondary .counter__card--icon:before {
561
+ background: #fa7d51;
562
+ }
563
+ .counter__card__secondary .counter__card--content .count__number {
564
+ color: #fa7d51;
565
+ }
566
+
567
+ .counter__card__success .counter__card--icon {
568
+ color: white;
569
+ background: #05cb6b;
570
+ }
571
+ .counter__card__success .counter__card--icon:before {
572
+ background: #05cb6b;
573
+ }
574
+ .counter__card__success .counter__card--content .count__number {
575
+ color: #05cb6b;
576
+ }
577
+
578
+ .counter__card__danger .counter__card--icon {
579
+ color: white;
580
+ background: #e0061a;
581
+ }
582
+ .counter__card__danger .counter__card--icon:before {
583
+ background: #e0061a;
584
+ }
585
+ .counter__card__danger .counter__card--content .count__number {
586
+ color: #e0061a;
587
+ }
588
+
589
+ .counter__card__info .counter__card--icon {
590
+ color: white;
591
+ background: #00b2fc;
592
+ }
593
+ .counter__card__info .counter__card--icon:before {
594
+ background: #00b2fc;
595
+ }
596
+ .counter__card__info .counter__card--content .count__number {
597
+ color: #00b2fc;
598
+ }
599
+
600
+ .counter__card__dark .counter__card--icon {
601
+ color: white;
602
+ background: #22282d;
603
+ }
604
+ .counter__card__dark .counter__card--icon:before {
605
+ background: #22282d;
606
+ }
607
+ .counter__card__dark .counter__card--content .count__number {
608
+ color: #22282d;
609
+ }
610
+
611
+ .counter__card__white .counter__card--icon {
612
+ color: #22282d;
613
+ background: #ffffff;
614
+ }
615
+ .counter__card__white .counter__card--icon:before {
616
+ background: #ffffff;
617
+ }
618
+ .counter__card__white .counter__card--content .count__number {
619
+ color: #ffffff;
620
+ }
621
+
622
+ .counter__card__black .counter__card--icon {
623
+ color: white;
624
+ background: #000000;
625
+ }
626
+ .counter__card__black .counter__card--icon:before {
627
+ background: #000000;
628
+ }
629
+ .counter__card__black .counter__card--content .count__number {
630
+ color: #000000;
631
+ }
632
+
633
+ .counter__card__grey .counter__card--icon {
634
+ color: #22282d;
635
+ background: #f4f6fc;
636
+ }
637
+ .counter__card__grey .counter__card--icon:before {
638
+ background: #f4f6fc;
639
+ }
640
+ .counter__card__grey .counter__card--content .count__number {
641
+ color: #f4f6fc;
642
+ }
643
+
644
+ .counter__card__grey2 .counter__card--icon {
645
+ color: white;
646
+ background: #808da1;
647
+ }
648
+ .counter__card__grey2 .counter__card--icon:before {
649
+ background: #808da1;
650
+ }
651
+ .counter__card__grey2 .counter__card--content .count__number {
652
+ color: #808da1;
653
+ }
654
+
655
+ .counter__card__twitter .counter__card--icon {
656
+ color: white;
657
+ background: #1da1f2;
658
+ }
659
+ .counter__card__twitter .counter__card--icon:before {
660
+ background: #1da1f2;
661
+ }
662
+ .counter__card__twitter .counter__card--content .count__number {
663
+ color: #1da1f2;
664
+ }
665
+
666
+ .counter__card__linkedin .counter__card--icon {
667
+ color: white;
668
+ background: #0077b5;
669
+ }
670
+ .counter__card__linkedin .counter__card--icon:before {
671
+ background: #0077b5;
672
+ }
673
+ .counter__card__linkedin .counter__card--content .count__number {
674
+ color: #0077b5;
675
+ }
676
+
677
+ .counter__card__instagram .counter__card--icon {
678
+ color: white;
679
+ background: #e1306c;
680
+ }
681
+ .counter__card__instagram .counter__card--icon:before {
682
+ background: #e1306c;
683
+ }
684
+ .counter__card__instagram .counter__card--content .count__number {
685
+ color: #e1306c;
686
+ }
687
+
688
+ .m-0-5 {
689
+ margin: calc( 0.5 * var(--base-spacer-x)) calc( 0.5 * var(--base-spacer-x));
690
+ }
691
+
692
+ .mt-0-5 {
693
+ margin-top: calc( 0.5 * var(--base-spacer-x));
694
+ }
695
+
696
+ .mr-0-5 {
697
+ margin-right: calc( 0.5 * var(--base-spacer-x));
698
+ }
699
+
700
+ .mb-0-5 {
701
+ margin-bottom: calc( 0.5 * var(--base-spacer-x));
702
+ }
703
+
704
+ .ml-0-5 {
705
+ margin-left: calc( 0.5 * var(--base-spacer-x));
706
+ }
707
+
708
+ .my-0-5 {
709
+ margin-top: calc( 0.5 * var(--base-spacer-x));
710
+ margin-bottom: calc( 0.5 * var(--base-spacer-x));
711
+ }
712
+
713
+ .m-1 {
714
+ margin: calc( 1 * var(--base-spacer-x)) calc( 1 * var(--base-spacer-x));
715
+ }
716
+
717
+ .mt-1 {
718
+ margin-top: calc( 1 * var(--base-spacer-x));
719
+ }
720
+
721
+ .mr-1 {
722
+ margin-right: calc( 1 * var(--base-spacer-x));
723
+ }
724
+
725
+ .mb-1 {
726
+ margin-bottom: calc( 1 * var(--base-spacer-x));
727
+ }
728
+
729
+ .ml-1 {
730
+ margin-left: calc( 1 * var(--base-spacer-x));
731
+ }
732
+
733
+ .my-1 {
734
+ margin-top: calc( 1 * var(--base-spacer-x));
735
+ margin-bottom: calc( 1 * var(--base-spacer-x));
736
+ }
737
+
738
+ .m-1-5 {
739
+ margin: calc( 1.5 * var(--base-spacer-x)) calc( 1.5 * var(--base-spacer-x));
740
+ }
741
+
742
+ .mt-1-5 {
743
+ margin-top: calc( 1.5 * var(--base-spacer-x));
744
+ }
745
+
746
+ .mr-1-5 {
747
+ margin-right: calc( 1.5 * var(--base-spacer-x));
748
+ }
749
+
750
+ .mb-1-5 {
751
+ margin-bottom: calc( 1.5 * var(--base-spacer-x));
752
+ }
753
+
754
+ .ml-1-5 {
755
+ margin-left: calc( 1.5 * var(--base-spacer-x));
756
+ }
757
+
758
+ .my-1-5 {
759
+ margin-top: calc( 1.5 * var(--base-spacer-x));
760
+ margin-bottom: calc( 1.5 * var(--base-spacer-x));
761
+ }
762
+
763
+ .m-2 {
764
+ margin: calc( 2 * var(--base-spacer-y)) calc( 2 * var(--base-spacer-x));
765
+ }
766
+
767
+ .mt-2 {
768
+ margin-top: calc( 2 * var(--base-spacer-y));
769
+ }
770
+
771
+ .mr-2 {
772
+ margin-right: calc( 2 * var(--base-spacer-x));
773
+ }
774
+
775
+ .mb-2 {
776
+ margin-bottom: calc( 2 * var(--base-spacer-y));
777
+ }
778
+
779
+ .ml-2 {
780
+ margin-left: calc( 2 * var(--base-spacer-x));
781
+ }
782
+
783
+ .my-2 {
784
+ margin-top: calc( 2 * var(--base-spacer-y));
785
+ margin-bottom: calc( 2 * var(--base-spacer-y));
786
+ }
787
+
788
+ .m-2-5 {
789
+ margin: calc( 2.5 * var(--base-spacer-y)) calc( 2.5 * var(--base-spacer-x));
790
+ }
791
+
792
+ .mt-2-5 {
793
+ margin-top: calc( 2.5 * var(--base-spacer-y));
794
+ }
795
+
796
+ .mr-2-5 {
797
+ margin-right: calc( 2.5 * var(--base-spacer-x));
798
+ }
799
+
800
+ .mb-2-5 {
801
+ margin-bottom: calc( 2.5 * var(--base-spacer-y));
802
+ }
803
+
804
+ .ml-2-5 {
805
+ margin-left: calc( 2.5 * var(--base-spacer-x));
806
+ }
807
+
808
+ .my-2-5 {
809
+ margin-top: calc( 2.5 * var(--base-spacer-y));
810
+ margin-bottom: calc( 2.5 * var(--base-spacer-y));
811
+ }
812
+
813
+ .m-3 {
814
+ margin: calc( 3 * var(--base-spacer-y)) calc( 3 * var(--base-spacer-x));
815
+ }
816
+
817
+ .mt-3 {
818
+ margin-top: calc( 3 * var(--base-spacer-y));
819
+ }
820
+
821
+ .mr-3 {
822
+ margin-right: calc( 3 * var(--base-spacer-x));
823
+ }
824
+
825
+ .mb-3 {
826
+ margin-bottom: calc( 3 * var(--base-spacer-y));
827
+ }
828
+
829
+ .ml-3 {
830
+ margin-left: calc( 3 * var(--base-spacer-x));
831
+ }
832
+
833
+ .my-3 {
834
+ margin-top: calc( 3 * var(--base-spacer-y));
835
+ margin-bottom: calc( 3 * var(--base-spacer-y));
836
+ }
837
+
838
+ .m-3-5 {
839
+ margin: calc( 3.5 * var(--base-spacer-y)) calc( 3.5 * var(--base-spacer-x));
840
+ }
841
+
842
+ .mt-3-5 {
843
+ margin-top: calc( 3.5 * var(--base-spacer-y));
844
+ }
845
+
846
+ .mr-3-5 {
847
+ margin-right: calc( 3.5 * var(--base-spacer-x));
848
+ }
849
+
850
+ .mb-3-5 {
851
+ margin-bottom: calc( 3.5 * var(--base-spacer-y));
852
+ }
853
+
854
+ .ml-3-5 {
855
+ margin-left: calc( 3.5 * var(--base-spacer-x));
856
+ }
857
+
858
+ .my-3-5 {
859
+ margin-top: calc( 3.5 * var(--base-spacer-y));
860
+ margin-bottom: calc( 3.5 * var(--base-spacer-y));
861
+ }
862
+
863
+ .m-4 {
864
+ margin: calc( 4 * var(--base-spacer-x)) calc( 4 * var(--base-spacer-x));
865
+ }
866
+
867
+ .mt-4 {
868
+ margin-top: calc( 4 * var(--base-spacer-x));
869
+ }
870
+
871
+ .mr-4 {
872
+ margin-right: calc( 4 * var(--base-spacer-x));
873
+ }
874
+
875
+ .mb-4 {
876
+ margin-bottom: calc( 4 * var(--base-spacer-x));
877
+ }
878
+
879
+ .ml-4 {
880
+ margin-left: calc( 4 * var(--base-spacer-x));
881
+ }
882
+
883
+ .my-4 {
884
+ margin-top: calc( 4 * var(--base-spacer-x));
885
+ margin-bottom: calc( 4 * var(--base-spacer-x));
886
+ }
887
+
888
+ .m-5 {
889
+ margin: calc( 5 * var(--base-spacer-x)) calc( 5 * var(--base-spacer-x));
890
+ }
891
+
892
+ .mt-5 {
893
+ margin-top: calc( 5 * var(--base-spacer-x));
894
+ }
895
+
896
+ .mr-5 {
897
+ margin-right: calc( 5 * var(--base-spacer-x));
898
+ }
899
+
900
+ .mb-5 {
901
+ margin-bottom: calc( 5 * var(--base-spacer-x));
902
+ }
903
+
904
+ .ml-5 {
905
+ margin-left: calc( 5 * var(--base-spacer-x));
906
+ }
907
+
908
+ .my-5 {
909
+ margin-top: calc( 5 * var(--base-spacer-x));
910
+ margin-bottom: calc( 5 * var(--base-spacer-x));
911
+ }
912
+
913
+ .mx-auto {
914
+ margin-left: auto;
915
+ margin-right: auto;
916
+ }
917
+
918
+ .p-0-5 {
919
+ padding: calc( 0.5 * var(--base-spacer-x)) calc( 0.5 * var(--base-spacer-x));
920
+ }
921
+
922
+ .pt-0-5 {
923
+ padding-top: calc( 0.5 * var(--base-spacer-x));
924
+ }
925
+
926
+ .pr-0-5 {
927
+ padding-right: calc( 0.5 * var(--base-spacer-x));
928
+ }
929
+
930
+ .pb-0-5 {
931
+ padding-bottom: calc( 0.5 * var(--base-spacer-x));
932
+ }
933
+
934
+ .pl-0-5 {
935
+ padding-left: calc( 0.5 * var(--base-spacer-x));
936
+ }
937
+
938
+ .py-0-5 {
939
+ padding-top: calc( 0.5 * var(--base-spacer-x));
940
+ padding-bottom: calc( 0.5 * var(--base-spacer-x));
941
+ }
942
+
943
+ .p-1 {
944
+ padding: calc( 1 * var(--base-spacer-x)) calc( 1 * var(--base-spacer-x));
945
+ }
946
+
947
+ .pt-1 {
948
+ padding-top: calc( 1 * var(--base-spacer-x));
949
+ }
950
+
951
+ .pr-1 {
952
+ padding-right: calc( 1 * var(--base-spacer-x));
953
+ }
954
+
955
+ .pb-1 {
956
+ padding-bottom: calc( 1 * var(--base-spacer-x));
957
+ }
958
+
959
+ .pl-1 {
960
+ padding-left: calc( 1 * var(--base-spacer-x));
961
+ }
962
+
963
+ .py-1 {
964
+ padding-top: calc( 1 * var(--base-spacer-x));
965
+ padding-bottom: calc( 1 * var(--base-spacer-x));
966
+ }
967
+
968
+ .p-1-5 {
969
+ padding: calc( 1.5 * var(--base-spacer-x)) calc( 1.5 * var(--base-spacer-x));
970
+ }
971
+
972
+ .pt-1-5 {
973
+ padding-top: calc( 1.5 * var(--base-spacer-x));
974
+ }
975
+
976
+ .pr-1-5 {
977
+ padding-right: calc( 1.5 * var(--base-spacer-x));
978
+ }
979
+
980
+ .pb-1-5 {
981
+ padding-bottom: calc( 1.5 * var(--base-spacer-x));
982
+ }
983
+
984
+ .pl-1-5 {
985
+ padding-left: calc( 1.5 * var(--base-spacer-x));
986
+ }
987
+
988
+ .py-1-5 {
989
+ padding-top: calc( 1.5 * var(--base-spacer-x));
990
+ padding-bottom: calc( 1.5 * var(--base-spacer-x));
991
+ }
992
+
993
+ .p-2 {
994
+ padding: calc( 2 * var(--base-spacer-y)) calc( 2 * var(--base-spacer-x));
995
+ }
996
+
997
+ .pt-2 {
998
+ padding-top: calc( 2 * var(--base-spacer-y));
999
+ }
1000
+
1001
+ .pr-2 {
1002
+ padding-right: calc( 2 * var(--base-spacer-x));
1003
+ }
1004
+
1005
+ .pb-2 {
1006
+ padding-bottom: calc( 2 * var(--base-spacer-y));
1007
+ }
1008
+
1009
+ .pl-2 {
1010
+ padding-left: calc( 2 * var(--base-spacer-x));
1011
+ }
1012
+
1013
+ .py-2 {
1014
+ padding-top: calc( 2 * var(--base-spacer-y));
1015
+ padding-bottom: calc( 2 * var(--base-spacer-y));
1016
+ }
1017
+
1018
+ .p-2-5 {
1019
+ padding: calc( 2.5 * var(--base-spacer-y)) calc( 2.5 * var(--base-spacer-x));
1020
+ }
1021
+
1022
+ .pt-2-5 {
1023
+ padding-top: calc( 2.5 * var(--base-spacer-y));
1024
+ }
1025
+
1026
+ .pr-2-5 {
1027
+ padding-right: calc( 2.5 * var(--base-spacer-x));
1028
+ }
1029
+
1030
+ .pb-2-5 {
1031
+ padding-bottom: calc( 2.5 * var(--base-spacer-y));
1032
+ }
1033
+
1034
+ .pl-2-5 {
1035
+ padding-left: calc( 2.5 * var(--base-spacer-x));
1036
+ }
1037
+
1038
+ .py-2-5 {
1039
+ padding-top: calc( 2.5 * var(--base-spacer-y));
1040
+ padding-bottom: calc( 2.5 * var(--base-spacer-y));
1041
+ }
1042
+
1043
+ .p-3 {
1044
+ padding: calc( 3 * var(--base-spacer-y)) calc( 3 * var(--base-spacer-x));
1045
+ }
1046
+
1047
+ .pt-3 {
1048
+ padding-top: calc( 3 * var(--base-spacer-y));
1049
+ }
1050
+
1051
+ .pr-3 {
1052
+ padding-right: calc( 3 * var(--base-spacer-x));
1053
+ }
1054
+
1055
+ .pb-3 {
1056
+ padding-bottom: calc( 3 * var(--base-spacer-y));
1057
+ }
1058
+
1059
+ .pl-3 {
1060
+ padding-left: calc( 3 * var(--base-spacer-x));
1061
+ }
1062
+
1063
+ .py-3 {
1064
+ padding-top: calc( 3 * var(--base-spacer-y));
1065
+ padding-bottom: calc( 3 * var(--base-spacer-y));
1066
+ }
1067
+
1068
+ .p-3-5 {
1069
+ padding: calc( 3.5 * var(--base-spacer-y)) calc( 3.5 * var(--base-spacer-x));
1070
+ }
1071
+
1072
+ .pt-3-5 {
1073
+ padding-top: calc( 3.5 * var(--base-spacer-y));
1074
+ }
1075
+
1076
+ .pr-3-5 {
1077
+ padding-right: calc( 3.5 * var(--base-spacer-x));
1078
+ }
1079
+
1080
+ .pb-3-5 {
1081
+ padding-bottom: calc( 3.5 * var(--base-spacer-y));
1082
+ }
1083
+
1084
+ .pl-3-5 {
1085
+ padding-left: calc( 3.5 * var(--base-spacer-x));
1086
+ }
1087
+
1088
+ .py-3-5 {
1089
+ padding-top: calc( 3.5 * var(--base-spacer-y));
1090
+ padding-bottom: calc( 3.5 * var(--base-spacer-y));
1091
+ }
1092
+
1093
+ .p-4 {
1094
+ padding: calc( 4 * var(--base-spacer-x)) calc( 4 * var(--base-spacer-x));
1095
+ }
1096
+
1097
+ .pt-4 {
1098
+ padding-top: calc( 4 * var(--base-spacer-x));
1099
+ }
1100
+
1101
+ .pr-4 {
1102
+ padding-right: calc( 4 * var(--base-spacer-x));
1103
+ }
1104
+
1105
+ .pb-4 {
1106
+ padding-bottom: calc( 4 * var(--base-spacer-x));
1107
+ }
1108
+
1109
+ .pl-4 {
1110
+ padding-left: calc( 4 * var(--base-spacer-x));
1111
+ }
1112
+
1113
+ .py-4 {
1114
+ padding-top: calc( 4 * var(--base-spacer-x));
1115
+ padding-bottom: calc( 4 * var(--base-spacer-x));
1116
+ }
1117
+
1118
+ .p-5 {
1119
+ padding: calc( 5 * var(--base-spacer-x)) calc( 5 * var(--base-spacer-x));
1120
+ }
1121
+
1122
+ .pt-5 {
1123
+ padding-top: calc( 5 * var(--base-spacer-x));
1124
+ }
1125
+
1126
+ .pr-5 {
1127
+ padding-right: calc( 5 * var(--base-spacer-x));
1128
+ }
1129
+
1130
+ .pb-5 {
1131
+ padding-bottom: calc( 5 * var(--base-spacer-x));
1132
+ }
1133
+
1134
+ .pl-5 {
1135
+ padding-left: calc( 5 * var(--base-spacer-x));
1136
+ }
1137
+
1138
+ .py-5 {
1139
+ padding-top: calc( 5 * var(--base-spacer-x));
1140
+ padding-bottom: calc( 5 * var(--base-spacer-x));
1141
+ }
1142
+
1143
+ .px-auto {
1144
+ padding-left: auto;
1145
+ padding-right: auto;
1146
+ }
1147
+
1148
+ .disablecommentswrap {
1149
+ padding: 30px;
1150
+ }
1151
+ @media (max-width: 575.98px) {
1152
+ .disablecommentswrap {
1153
+ padding: 30px;
1154
+ }
1155
+ }
1156
+ .disablecommentswrap .delete-comments-not-found {
1157
+ width: 60%;
1158
+ margin: 0 auto;
1159
+ text-align: center;
1160
+ }
1161
+ .disablecommentswrap .delete-comments-not-found .error-message {
1162
+ margin-top: 30px;
1163
+ color: #444;
1164
+ }
1165
+
1166
+ @media (max-width: 1199.98px) {
1167
+ .sidebar__widget__wrap {
1168
+ margin-top: 50px;
1169
+ }
1170
+ }
1171
+
1172
+ .dc-text__block {
1173
+ background: #ffffff;
1174
+ padding: 20px;
1175
+ border-radius: 10px;
1176
+ }
1177
+ .dc-text__block__big__pad {
1178
+ padding: 40px 50px;
1179
+ background: #ffffff;
1180
+ border-radius: 10px;
1181
+ }
1182
+ @media (max-width: 767.98px) {
1183
+ .dc-text__block__big__pad {
1184
+ padding: 40px 25px;
1185
+ }
1186
+ }
1187
+
1188
+ .dc-container {
1189
+ width: 100%;
1190
+ max-width: 1200px;
1191
+ margin: 0 auto;
1192
+ }
1193
+
1194
+ .dc-row {
1195
+ display: flex;
1196
+ flex-wrap: wrap;
1197
+ margin-right: -15px;
1198
+ margin-left: -15px;
1199
+ }
1200
+
1201
+ .dc-col {
1202
+ flex-basis: 0;
1203
+ flex-grow: 1;
1204
+ max-width: 100%;
1205
+ }
1206
+
1207
+ .dc-col,
1208
+ .dc-col-xs-6,
1209
+ .dc-col-sm-6,
1210
+ .dc-col-md-6,
1211
+ .dc-col-lg-4,
1212
+ .dc-col-lg-3,
1213
+ .dc-col-lg-9 {
1214
+ padding-left: 15px;
1215
+ padding-right: 15px;
1216
+ width: 100%;
1217
+ }
1218
+
1219
+ @media (min-width: 576px) {
1220
+ .dc-col-xs-6 {
1221
+ flex: 0 0 50%;
1222
+ max-width: 50%;
1223
+ }
1224
+ }
1225
+ @media (min-width: 768px) {
1226
+ .dc-col-sm-6 {
1227
+ flex: 0 0 50%;
1228
+ max-width: 50%;
1229
+ }
1230
+ }
1231
+ @media (min-width: 992px) {
1232
+ .dc-col-md-6 {
1233
+ flex: 0 0 50%;
1234
+ max-width: 50%;
1235
+ }
1236
+ }
1237
+ @media (min-width: 1200px) {
1238
+ .dc-col-lg-3 {
1239
+ flex: 0 0 25%;
1240
+ max-width: 25%;
1241
+ }
1242
+
1243
+ .dc-col-lg-4 {
1244
+ flex: 0 0 33.33%;
1245
+ max-width: 33.33%;
1246
+ }
1247
+
1248
+ .dc-col-lg-9 {
1249
+ flex: 0 0 75%;
1250
+ max-width: 75%;
1251
+ }
1252
+ }
1253
+ .button__primary:not(.hover__highlight) {
1254
+ background: #623cea;
1255
+ color: white;
1256
+ border-color: #623cea;
1257
+ transition: all 0.3s ease-in-out 0s;
1258
+ transition-property: background, color, box-shadow, border;
1259
+ }
1260
+ .button__primary:not(.hover__highlight):disabled {
1261
+ cursor: not-allowed;
1262
+ background: #fa7d51;
1263
+ }
1264
+ .button__primary:not(.hover__highlight) .icon {
1265
+ color: #623cea;
1266
+ background: white;
1267
+ }
1268
+ .button__primary.hover__highlight {
1269
+ color: #623cea;
1270
+ border-color: rgba(98, 60, 234, 0.2);
1271
+ }
1272
+ .button__primary.hover__highlight .icon {
1273
+ background: #623cea;
1274
+ color: #ffffff;
1275
+ }
1276
+
1277
+ a.button__primary.active, a.button__primary:hover,
1278
+ button.button__primary.active,
1279
+ button.button__primary:hover {
1280
+ background: #4f25e8;
1281
+ color: white;
1282
+ border-color: #4f25e8;
1283
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1284
+ }
1285
+ a.button__primary.active:disabled, a.button__primary:hover:disabled,
1286
+ button.button__primary.active:disabled,
1287
+ button.button__primary:hover:disabled {
1288
+ cursor: not-allowed;
1289
+ background: #fa7d51;
1290
+ box-shadow: none;
1291
+ }
1292
+ a.button__primary.hover__highlight:hover .icon,
1293
+ button.button__primary.hover__highlight:hover .icon {
1294
+ background: white;
1295
+ color: #623cea;
1296
+ }
1297
+
1298
+ .button__secondary:not(.hover__highlight) {
1299
+ background: #fa7d51;
1300
+ color: white;
1301
+ border-color: #fa7d51;
1302
+ transition: all 0.3s ease-in-out 0s;
1303
+ transition-property: background, color, box-shadow, border;
1304
+ }
1305
+ .button__secondary:not(.hover__highlight):disabled {
1306
+ cursor: not-allowed;
1307
+ background: #fa7d51;
1308
+ }
1309
+ .button__secondary:not(.hover__highlight) .icon {
1310
+ color: #fa7d51;
1311
+ background: white;
1312
+ }
1313
+ .button__secondary.hover__highlight {
1314
+ color: #623cea;
1315
+ border-color: rgba(98, 60, 234, 0.2);
1316
+ }
1317
+ .button__secondary.hover__highlight .icon {
1318
+ background: #623cea;
1319
+ color: #ffffff;
1320
+ }
1321
+
1322
+ a.button__secondary.active, a.button__secondary:hover,
1323
+ button.button__secondary.active,
1324
+ button.button__secondary:hover {
1325
+ background: #f96a38;
1326
+ color: white;
1327
+ border-color: #f96a38;
1328
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1329
+ }
1330
+ a.button__secondary.active:disabled, a.button__secondary:hover:disabled,
1331
+ button.button__secondary.active:disabled,
1332
+ button.button__secondary:hover:disabled {
1333
+ cursor: not-allowed;
1334
+ background: #fa7d51;
1335
+ box-shadow: none;
1336
+ }
1337
+ a.button__secondary.hover__highlight:hover .icon,
1338
+ button.button__secondary.hover__highlight:hover .icon {
1339
+ background: white;
1340
+ color: #fa7d51;
1341
+ }
1342
+
1343
+ .button__success:not(.hover__highlight) {
1344
+ background: #05cb6b;
1345
+ color: white;
1346
+ border-color: #05cb6b;
1347
+ transition: all 0.3s ease-in-out 0s;
1348
+ transition-property: background, color, box-shadow, border;
1349
+ }
1350
+ .button__success:not(.hover__highlight):disabled {
1351
+ cursor: not-allowed;
1352
+ background: #fa7d51;
1353
+ }
1354
+ .button__success:not(.hover__highlight) .icon {
1355
+ color: #05cb6b;
1356
+ background: white;
1357
+ }
1358
+ .button__success.hover__highlight {
1359
+ color: #623cea;
1360
+ border-color: rgba(98, 60, 234, 0.2);
1361
+ }
1362
+ .button__success.hover__highlight .icon {
1363
+ background: #623cea;
1364
+ color: #ffffff;
1365
+ }
1366
+
1367
+ a.button__success.active, a.button__success:hover,
1368
+ button.button__success.active,
1369
+ button.button__success:hover {
1370
+ background: #04b25e;
1371
+ color: white;
1372
+ border-color: #04b25e;
1373
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1374
+ }
1375
+ a.button__success.active:disabled, a.button__success:hover:disabled,
1376
+ button.button__success.active:disabled,
1377
+ button.button__success:hover:disabled {
1378
+ cursor: not-allowed;
1379
+ background: #fa7d51;
1380
+ box-shadow: none;
1381
+ }
1382
+ a.button__success.hover__highlight:hover .icon,
1383
+ button.button__success.hover__highlight:hover .icon {
1384
+ background: white;
1385
+ color: #05cb6b;
1386
+ }
1387
+
1388
+ .button__danger:not(.hover__highlight) {
1389
+ background: #e0061a;
1390
+ color: white;
1391
+ border-color: #e0061a;
1392
+ transition: all 0.3s ease-in-out 0s;
1393
+ transition-property: background, color, box-shadow, border;
1394
+ }
1395
+ .button__danger:not(.hover__highlight):disabled {
1396
+ cursor: not-allowed;
1397
+ background: #fa7d51;
1398
+ }
1399
+ .button__danger:not(.hover__highlight) .icon {
1400
+ color: #e0061a;
1401
+ background: white;
1402
+ }
1403
+ .button__danger.hover__highlight {
1404
+ color: #623cea;
1405
+ border-color: rgba(98, 60, 234, 0.2);
1406
+ }
1407
+ .button__danger.hover__highlight .icon {
1408
+ background: #623cea;
1409
+ color: #ffffff;
1410
+ }
1411
+
1412
+ a.button__danger.active, a.button__danger:hover,
1413
+ button.button__danger.active,
1414
+ button.button__danger:hover {
1415
+ background: #c70517;
1416
+ color: white;
1417
+ border-color: #c70517;
1418
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1419
+ }
1420
+ a.button__danger.active:disabled, a.button__danger:hover:disabled,
1421
+ button.button__danger.active:disabled,
1422
+ button.button__danger:hover:disabled {
1423
+ cursor: not-allowed;
1424
+ background: #fa7d51;
1425
+ box-shadow: none;
1426
+ }
1427
+ a.button__danger.hover__highlight:hover .icon,
1428
+ button.button__danger.hover__highlight:hover .icon {
1429
+ background: white;
1430
+ color: #e0061a;
1431
+ }
1432
+
1433
+ .button__info:not(.hover__highlight) {
1434
+ background: #00b2fc;
1435
+ color: white;
1436
+ border-color: #00b2fc;
1437
+ transition: all 0.3s ease-in-out 0s;
1438
+ transition-property: background, color, box-shadow, border;
1439
+ }
1440
+ .button__info:not(.hover__highlight):disabled {
1441
+ cursor: not-allowed;
1442
+ background: #fa7d51;
1443
+ }
1444
+ .button__info:not(.hover__highlight) .icon {
1445
+ color: #00b2fc;
1446
+ background: white;
1447
+ }
1448
+ .button__info.hover__highlight {
1449
+ color: #623cea;
1450
+ border-color: rgba(98, 60, 234, 0.2);
1451
+ }
1452
+ .button__info.hover__highlight .icon {
1453
+ background: #623cea;
1454
+ color: #ffffff;
1455
+ }
1456
+
1457
+ a.button__info.active, a.button__info:hover,
1458
+ button.button__info.active,
1459
+ button.button__info:hover {
1460
+ background: #00a0e3;
1461
+ color: white;
1462
+ border-color: #00a0e3;
1463
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1464
+ }
1465
+ a.button__info.active:disabled, a.button__info:hover:disabled,
1466
+ button.button__info.active:disabled,
1467
+ button.button__info:hover:disabled {
1468
+ cursor: not-allowed;
1469
+ background: #fa7d51;
1470
+ box-shadow: none;
1471
+ }
1472
+ a.button__info.hover__highlight:hover .icon,
1473
+ button.button__info.hover__highlight:hover .icon {
1474
+ background: white;
1475
+ color: #00b2fc;
1476
+ }
1477
+
1478
+ .button__dark:not(.hover__highlight) {
1479
+ background: #22282d;
1480
+ color: white;
1481
+ border-color: #22282d;
1482
+ transition: all 0.3s ease-in-out 0s;
1483
+ transition-property: background, color, box-shadow, border;
1484
+ }
1485
+ .button__dark:not(.hover__highlight):disabled {
1486
+ cursor: not-allowed;
1487
+ background: #fa7d51;
1488
+ }
1489
+ .button__dark:not(.hover__highlight) .icon {
1490
+ color: #22282d;
1491
+ background: white;
1492
+ }
1493
+ .button__dark.hover__highlight {
1494
+ color: #623cea;
1495
+ border-color: rgba(98, 60, 234, 0.2);
1496
+ }
1497
+ .button__dark.hover__highlight .icon {
1498
+ background: #623cea;
1499
+ color: #ffffff;
1500
+ }
1501
+
1502
+ a.button__dark.active, a.button__dark:hover,
1503
+ button.button__dark.active,
1504
+ button.button__dark:hover {
1505
+ background: #171b1e;
1506
+ color: white;
1507
+ border-color: #171b1e;
1508
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1509
+ }
1510
+ a.button__dark.active:disabled, a.button__dark:hover:disabled,
1511
+ button.button__dark.active:disabled,
1512
+ button.button__dark:hover:disabled {
1513
+ cursor: not-allowed;
1514
+ background: #fa7d51;
1515
+ box-shadow: none;
1516
+ }
1517
+ a.button__dark.hover__highlight:hover .icon,
1518
+ button.button__dark.hover__highlight:hover .icon {
1519
+ background: white;
1520
+ color: #22282d;
1521
+ }
1522
+
1523
+ .button__white:not(.hover__highlight) {
1524
+ background: #ffffff;
1525
+ color: #623cea;
1526
+ border-color: #ffffff;
1527
+ transition: all 0.3s ease-in-out 0s;
1528
+ transition-property: background, color, box-shadow, border;
1529
+ }
1530
+ .button__white:not(.hover__highlight):disabled {
1531
+ cursor: not-allowed;
1532
+ background: #fa7d51;
1533
+ }
1534
+ .button__white:not(.hover__highlight) .icon {
1535
+ color: #ffffff;
1536
+ background: #623cea;
1537
+ }
1538
+ .button__white.hover__highlight {
1539
+ color: #623cea;
1540
+ border-color: rgba(98, 60, 234, 0.2);
1541
+ }
1542
+ .button__white.hover__highlight .icon {
1543
+ background: #623cea;
1544
+ color: #ffffff;
1545
+ }
1546
+
1547
+ a.button__white.active, a.button__white:hover,
1548
+ button.button__white.active,
1549
+ button.button__white:hover {
1550
+ background: #f2f2f2;
1551
+ color: #623cea;
1552
+ border-color: #f2f2f2;
1553
+ text-shadow: 0 1px 1px rgba(98, 60, 234, 0.3);
1554
+ }
1555
+ a.button__white.active:disabled, a.button__white:hover:disabled,
1556
+ button.button__white.active:disabled,
1557
+ button.button__white:hover:disabled {
1558
+ cursor: not-allowed;
1559
+ background: #fa7d51;
1560
+ box-shadow: none;
1561
+ }
1562
+ a.button__white.hover__highlight:hover .icon,
1563
+ button.button__white.hover__highlight:hover .icon {
1564
+ background: #623cea;
1565
+ color: #ffffff;
1566
+ }
1567
+
1568
+ .button__black:not(.hover__highlight) {
1569
+ background: #000000;
1570
+ color: white;
1571
+ border-color: #000000;
1572
+ transition: all 0.3s ease-in-out 0s;
1573
+ transition-property: background, color, box-shadow, border;
1574
+ }
1575
+ .button__black:not(.hover__highlight):disabled {
1576
+ cursor: not-allowed;
1577
+ background: #fa7d51;
1578
+ }
1579
+ .button__black:not(.hover__highlight) .icon {
1580
+ color: #000000;
1581
+ background: white;
1582
+ }
1583
+ .button__black.hover__highlight {
1584
+ color: #623cea;
1585
+ border-color: rgba(98, 60, 234, 0.2);
1586
+ }
1587
+ .button__black.hover__highlight .icon {
1588
+ background: #623cea;
1589
+ color: #ffffff;
1590
+ }
1591
+
1592
+ a.button__black.active:disabled, a.button__black:hover:disabled,
1593
+ button.button__black.active:disabled,
1594
+ button.button__black:hover:disabled {
1595
+ cursor: not-allowed;
1596
+ background: #fa7d51;
1597
+ box-shadow: none;
1598
+ }
1599
+ a.button__black.hover__highlight:hover .icon,
1600
+ button.button__black.hover__highlight:hover .icon {
1601
+ background: white;
1602
+ color: #000000;
1603
+ }
1604
+
1605
+ .button__grey:not(.hover__highlight) {
1606
+ background: #f4f6fc;
1607
+ color: #623cea;
1608
+ border-color: #f4f6fc;
1609
+ transition: all 0.3s ease-in-out 0s;
1610
+ transition-property: background, color, box-shadow, border;
1611
+ }
1612
+ .button__grey:not(.hover__highlight):disabled {
1613
+ cursor: not-allowed;
1614
+ background: #fa7d51;
1615
+ }
1616
+ .button__grey:not(.hover__highlight) .icon {
1617
+ color: #f4f6fc;
1618
+ background: #623cea;
1619
+ }
1620
+ .button__grey.hover__highlight {
1621
+ color: #623cea;
1622
+ border-color: rgba(98, 60, 234, 0.2);
1623
+ }
1624
+ .button__grey.hover__highlight .icon {
1625
+ background: #623cea;
1626
+ color: #ffffff;
1627
+ }
1628
+
1629
+ a.button__grey.active, a.button__grey:hover,
1630
+ button.button__grey.active,
1631
+ button.button__grey:hover {
1632
+ background: #e0e6f7;
1633
+ color: #623cea;
1634
+ border-color: #e0e6f7;
1635
+ text-shadow: 0 1px 1px rgba(98, 60, 234, 0.3);
1636
+ }
1637
+ a.button__grey.active:disabled, a.button__grey:hover:disabled,
1638
+ button.button__grey.active:disabled,
1639
+ button.button__grey:hover:disabled {
1640
+ cursor: not-allowed;
1641
+ background: #fa7d51;
1642
+ box-shadow: none;
1643
+ }
1644
+ a.button__grey.hover__highlight:hover .icon,
1645
+ button.button__grey.hover__highlight:hover .icon {
1646
+ background: #623cea;
1647
+ color: #f4f6fc;
1648
+ }
1649
+
1650
+ .button__grey2:not(.hover__highlight) {
1651
+ background: #808da1;
1652
+ color: white;
1653
+ border-color: #808da1;
1654
+ transition: all 0.3s ease-in-out 0s;
1655
+ transition-property: background, color, box-shadow, border;
1656
+ }
1657
+ .button__grey2:not(.hover__highlight):disabled {
1658
+ cursor: not-allowed;
1659
+ background: #fa7d51;
1660
+ }
1661
+ .button__grey2:not(.hover__highlight) .icon {
1662
+ color: #808da1;
1663
+ background: white;
1664
+ }
1665
+ .button__grey2.hover__highlight {
1666
+ color: #623cea;
1667
+ border-color: rgba(98, 60, 234, 0.2);
1668
+ }
1669
+ .button__grey2.hover__highlight .icon {
1670
+ background: #623cea;
1671
+ color: #ffffff;
1672
+ }
1673
+
1674
+ a.button__grey2.active, a.button__grey2:hover,
1675
+ button.button__grey2.active,
1676
+ button.button__grey2:hover {
1677
+ background: #718096;
1678
+ color: white;
1679
+ border-color: #718096;
1680
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1681
+ }
1682
+ a.button__grey2.active:disabled, a.button__grey2:hover:disabled,
1683
+ button.button__grey2.active:disabled,
1684
+ button.button__grey2:hover:disabled {
1685
+ cursor: not-allowed;
1686
+ background: #fa7d51;
1687
+ box-shadow: none;
1688
+ }
1689
+ a.button__grey2.hover__highlight:hover .icon,
1690
+ button.button__grey2.hover__highlight:hover .icon {
1691
+ background: white;
1692
+ color: #808da1;
1693
+ }
1694
+
1695
+ .button__twitter:not(.hover__highlight) {
1696
+ background: #1da1f2;
1697
+ color: white;
1698
+ border-color: #1da1f2;
1699
+ transition: all 0.3s ease-in-out 0s;
1700
+ transition-property: background, color, box-shadow, border;
1701
+ }
1702
+ .button__twitter:not(.hover__highlight):disabled {
1703
+ cursor: not-allowed;
1704
+ background: #fa7d51;
1705
+ }
1706
+ .button__twitter:not(.hover__highlight) .icon {
1707
+ color: #1da1f2;
1708
+ background: white;
1709
+ }
1710
+ .button__twitter.hover__highlight {
1711
+ color: #623cea;
1712
+ border-color: rgba(98, 60, 234, 0.2);
1713
+ }
1714
+ .button__twitter.hover__highlight .icon {
1715
+ background: #623cea;
1716
+ color: #ffffff;
1717
+ }
1718
+
1719
+ a.button__twitter.active, a.button__twitter:hover,
1720
+ button.button__twitter.active,
1721
+ button.button__twitter:hover {
1722
+ background: #0d95e8;
1723
+ color: white;
1724
+ border-color: #0d95e8;
1725
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1726
+ }
1727
+ a.button__twitter.active:disabled, a.button__twitter:hover:disabled,
1728
+ button.button__twitter.active:disabled,
1729
+ button.button__twitter:hover:disabled {
1730
+ cursor: not-allowed;
1731
+ background: #fa7d51;
1732
+ box-shadow: none;
1733
+ }
1734
+ a.button__twitter.hover__highlight:hover .icon,
1735
+ button.button__twitter.hover__highlight:hover .icon {
1736
+ background: white;
1737
+ color: #1da1f2;
1738
+ }
1739
+
1740
+ .button__linkedin:not(.hover__highlight) {
1741
+ background: #0077b5;
1742
+ color: white;
1743
+ border-color: #0077b5;
1744
+ transition: all 0.3s ease-in-out 0s;
1745
+ transition-property: background, color, box-shadow, border;
1746
+ }
1747
+ .button__linkedin:not(.hover__highlight):disabled {
1748
+ cursor: not-allowed;
1749
+ background: #fa7d51;
1750
+ }
1751
+ .button__linkedin:not(.hover__highlight) .icon {
1752
+ color: #0077b5;
1753
+ background: white;
1754
+ }
1755
+ .button__linkedin.hover__highlight {
1756
+ color: #623cea;
1757
+ border-color: rgba(98, 60, 234, 0.2);
1758
+ }
1759
+ .button__linkedin.hover__highlight .icon {
1760
+ background: #623cea;
1761
+ color: #ffffff;
1762
+ }
1763
+
1764
+ a.button__linkedin.active, a.button__linkedin:hover,
1765
+ button.button__linkedin.active,
1766
+ button.button__linkedin:hover {
1767
+ background: #00669c;
1768
+ color: white;
1769
+ border-color: #00669c;
1770
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1771
+ }
1772
+ a.button__linkedin.active:disabled, a.button__linkedin:hover:disabled,
1773
+ button.button__linkedin.active:disabled,
1774
+ button.button__linkedin:hover:disabled {
1775
+ cursor: not-allowed;
1776
+ background: #fa7d51;
1777
+ box-shadow: none;
1778
+ }
1779
+ a.button__linkedin.hover__highlight:hover .icon,
1780
+ button.button__linkedin.hover__highlight:hover .icon {
1781
+ background: white;
1782
+ color: #0077b5;
1783
+ }
1784
+
1785
+ .button__instagram:not(.hover__highlight) {
1786
+ background: #e1306c;
1787
+ color: white;
1788
+ border-color: #e1306c;
1789
+ transition: all 0.3s ease-in-out 0s;
1790
+ transition-property: background, color, box-shadow, border;
1791
+ }
1792
+ .button__instagram:not(.hover__highlight):disabled {
1793
+ cursor: not-allowed;
1794
+ background: #fa7d51;
1795
+ }
1796
+ .button__instagram:not(.hover__highlight) .icon {
1797
+ color: #e1306c;
1798
+ background: white;
1799
+ }
1800
+ .button__instagram.hover__highlight {
1801
+ color: #623cea;
1802
+ border-color: rgba(98, 60, 234, 0.2);
1803
+ }
1804
+ .button__instagram.hover__highlight .icon {
1805
+ background: #623cea;
1806
+ color: #ffffff;
1807
+ }
1808
+
1809
+ a.button__instagram.active, a.button__instagram:hover,
1810
+ button.button__instagram.active,
1811
+ button.button__instagram:hover {
1812
+ background: #d81f5e;
1813
+ color: white;
1814
+ border-color: #d81f5e;
1815
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.3);
1816
+ }
1817
+ a.button__instagram.active:disabled, a.button__instagram:hover:disabled,
1818
+ button.button__instagram.active:disabled,
1819
+ button.button__instagram:hover:disabled {
1820
+ cursor: not-allowed;
1821
+ background: #fa7d51;
1822
+ box-shadow: none;
1823
+ }
1824
+ a.button__instagram.hover__highlight:hover .icon,
1825
+ button.button__instagram.hover__highlight:hover .icon {
1826
+ background: white;
1827
+ color: #e1306c;
1828
+ }
1829
+
1830
+ .disablecommentswrap .button {
1831
+ height: 50px;
1832
+ line-height: 50px;
1833
+ padding: 0;
1834
+ border-radius: 5px;
1835
+ color: #808da1;
1836
+ font-size: 15px;
1837
+ border: 0;
1838
+ font-weight: 700;
1839
+ padding: 0 20px;
1840
+ box-shadow: none;
1841
+ font-family: "DM Sans", sans-serif;
1842
+ background: #f4f6fc;
1843
+ }
1844
+ .disablecommentswrap .button:hover, .disablecommentswrap .button:focus {
1845
+ box-shadow: none;
1846
+ border: 0;
1847
+ color: #ffffff;
1848
+ background: #05cb6b;
1849
+ }
1850
+ @media (max-width: 991.98px) {
1851
+ .disablecommentswrap .button {
1852
+ height: 50px;
1853
+ line-height: 46px;
1854
+ font-size: 13px;
1855
+ }
1856
+ }
1857
+ .disablecommentswrap .button__delete {
1858
+ color: #ffffff;
1859
+ background: #e0061a;
1860
+ }
1861
+ .disablecommentswrap .button__delete:hover, .disablecommentswrap .button__delete:focus {
1862
+ background: red;
1863
+ color: #ffffff;
1864
+ }
1865
+ .disablecommentswrap .button__success {
1866
+ color: #ffffff;
1867
+ background: #05cb6b;
1868
+ }
1869
+ .disablecommentswrap .button__success:hover, .disablecommentswrap .button__success:focus {
1870
+ background: rgba(5, 203, 107, 0.9);
1871
+ color: #ffffff;
1872
+ }
1873
+ .disablecommentswrap .button--sm {
1874
+ height: 40px;
1875
+ line-height: 40px;
1876
+ }
1877
+ .disablecommentswrap .button__group .button:not(:last-child) {
1878
+ margin-right: 15px;
1879
+ }
1880
+
1881
+ .disable__comment__alert {
1882
+ display: flex;
1883
+ align-items: center;
1884
+ padding: 10px 20px;
1885
+ border: 0;
1886
+ }
1887
+ @media (max-width: 767.98px) {
1888
+ .disable__comment__alert {
1889
+ display: block;
1890
+ }
1891
+ .disable__comment__alert .button__group {
1892
+ margin-top: 20px;
1893
+ }
1894
+ }
1895
+ .disable__comment__alert .alert__content {
1896
+ display: flex;
1897
+ align-items: center;
1898
+ padding-right: 20px;
1899
+ flex-wrap: wrap;
1900
+ flex: 1;
1901
+ }
1902
+ @media (max-width: 767.98px) {
1903
+ .disable__comment__alert .alert__content {
1904
+ padding-right: 0;
1905
+ }
1906
+ }
1907
+ @media (max-width: 575.98px) {
1908
+ .disable__comment__alert .alert__content {
1909
+ display: block;
1910
+ }
1911
+ }
1912
+ .disable__comment__alert .alert__content img {
1913
+ margin-right: 15px;
1914
+ height: 30px;
1915
+ }
1916
+ @media (max-width: 575.98px) {
1917
+ .disable__comment__alert .alert__content img {
1918
+ margin-bottom: 10px;
1919
+ }
1920
+ }
1921
+ .disable__comment__alert .alert__content p {
1922
+ font-size: 18px;
1923
+ font-weight: 500;
1924
+ color: #22282d;
1925
+ font-family: "DM Sans", sans-serif;
1926
+ }
1927
+ .disable__comment__alert .alert__content a.wpinsights-disable-comments-collect {
1928
+ color: #05cb6b;
1929
+ }
1930
+ .disable__comment__alert .alert__content a.wpinsights-disable-comments-collect:hover,
1931
+ .disable__comment__alert .alert__content a.wpinsights-disable-comments-collect:visited,
1932
+ .disable__comment__alert .alert__content a.wpinsights-disable-comments-collect:focus {
1933
+ outline: none;
1934
+ border: none;
1935
+ box-shadow: none;
1936
+ }
1937
+ .disable__comment__alert .alert__content .wpinsights-data {
1938
+ margin-top: 10px;
1939
+ }
1940
+ .disable__comment__alert .alert__content .wpinsights-data p {
1941
+ font-size: 13px;
1942
+ }
1943
+ .disable__comment__alert .button__group {
1944
+ text-align: right;
1945
+ }
1946
+ @media (max-width: 767.98px) {
1947
+ .disable__comment__alert .button__group {
1948
+ text-align: left;
1949
+ }
1950
+ }
1951
+ .disable__comment__alert .button__group .button {
1952
+ margin-right: 0;
1953
+ margin-top: 5px;
1954
+ margin-bottom: 5px;
1955
+ }
1956
+ .disable__comment__alert .button__group .button:not(:last-child) {
1957
+ margin-right: 0;
1958
+ }
1959
+ .disable__comment__alert .button__group .button:not(:first-child) {
1960
+ margin-left: 15px;
1961
+ }
1962
+ @media (max-width: 767.98px) {
1963
+ .disable__comment__alert .button__group .button {
1964
+ margin-right: 10px;
1965
+ }
1966
+ .disable__comment__alert .button__group .button:not(:last-child) {
1967
+ margin-right: 10px;
1968
+ }
1969
+ .disable__comment__alert .button__group .button:not(:first-child) {
1970
+ margin-left: 0;
1971
+ }
1972
+ }
1973
+
1974
+ .section__header {
1975
+ text-align: center;
1976
+ margin-bottom: 50px;
1977
+ }
1978
+ .section__header h2 {
1979
+ font-size: 24px;
1980
+ font-weight: 700;
1981
+ color: #22282d;
1982
+ font-family: "DM Sans", sans-serif;
1983
+ }
1984
+
1985
+ .disable__comment__nav__wrap {
1986
+ background: #ffffff;
1987
+ border-radius: 5px;
1988
+ position: relative;
1989
+ }
1990
+ .disable__comment__nav__wrap .plugin__version {
1991
+ position: absolute;
1992
+ font-size: 16px;
1993
+ font-weight: 500;
1994
+ color: #687b95;
1995
+ font-family: "DM Sans", sans-serif;
1996
+ top: 50%;
1997
+ right: 30px;
1998
+ transform: translateY(-50%);
1999
+ }
2000
+ @media (max-width: 767.98px) {
2001
+ .disable__comment__nav__wrap .plugin__version {
2002
+ position: static;
2003
+ top: 0;
2004
+ transform: translateY(0);
2005
+ padding: 10px 10px 10px 20px;
2006
+ }
2007
+ }
2008
+ .disable__comment__nav__wrap .disable__comment__nav {
2009
+ display: flex;
2010
+ flex-wrap: wrap;
2011
+ margin-top: 0;
2012
+ }
2013
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item {
2014
+ margin-bottom: 0;
2015
+ }
2016
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item .disable__comment__nav__link {
2017
+ font-size: 16px;
2018
+ font-weight: 700;
2019
+ color: #687b95;
2020
+ text-transform: uppercase;
2021
+ font-family: "DM Sans", sans-serif;
2022
+ padding: 17px 20px;
2023
+ outline: none;
2024
+ box-shadow: none;
2025
+ }
2026
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item .disable__comment__nav__link.active {
2027
+ color: #22282d;
2028
+ position: relative;
2029
+ }
2030
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item .disable__comment__nav__link.active:before {
2031
+ position: absolute;
2032
+ left: 0;
2033
+ right: 0;
2034
+ bottom: 0;
2035
+ height: 2px;
2036
+ background: #e0061a;
2037
+ content: "";
2038
+ }
2039
+ @media (max-width: 991.98px) {
2040
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item .disable__comment__nav__link {
2041
+ font-size: 18px;
2042
+ }
2043
+ }
2044
+ @media (max-width: 575.98px) {
2045
+ .disable__comment__nav__wrap .disable__comment__nav .disable__comment__nav__item .disable__comment__nav__link {
2046
+ font-size: 16px;
2047
+ }
2048
+ }
2049
+
2050
+ .disable__comment__tab {
2051
+ padding-top: 25px;
2052
+ }
2053
+
2054
+ .disable__comment__tab__item {
2055
+ display: none;
2056
+ }
2057
+ .disable__comment__tab__item.show {
2058
+ display: block;
2059
+ }
2060
+
2061
+ .disable__comment__option .title {
2062
+ font-size: 22px;
2063
+ font-weight: 500;
2064
+ color: #22282d;
2065
+ margin-bottom: 5px;
2066
+ }
2067
+ .disable__comment__option .subtitle {
2068
+ color: #687b95;
2069
+ font-size: 14px;
2070
+ font-family: "DM Sans", sans-serif;
2071
+ font-weight: 400;
2072
+ padding-left: 0;
2073
+ line-height: 1.5;
2074
+ }
2075
+ .disable__comment__option .subtitle .danger {
2076
+ color: #e0061a;
2077
+ font-weight: 500;
2078
+ }
2079
+ .disable__comment__option .disable_option {
2080
+ border-radius: 5px;
2081
+ }
2082
+ .disable__comment__option .disable_option input[type=radio] {
2083
+ display: none;
2084
+ }
2085
+ .disable__comment__option .disable_option input[type=radio]:checked ~ label:before {
2086
+ border-color: #05cb6b;
2087
+ }
2088
+ .disable__comment__option .disable_option input[type=radio]:checked ~ label:after {
2089
+ opacity: 1;
2090
+ }
2091
+ .disable__comment__option .disable_option input[type=radio] ~ label {
2092
+ font-size: 18px;
2093
+ font-weight: 500;
2094
+ color: #22282d;
2095
+ font-family: "DM Sans", sans-serif;
2096
+ position: relative;
2097
+ line-height: 1.3;
2098
+ padding-left: 25px;
2099
+ display: block;
2100
+ margin-bottom: 15px;
2101
+ }
2102
+ .disable__comment__option .disable_option input[type=radio] ~ label:before {
2103
+ position: absolute;
2104
+ top: 4px;
2105
+ left: 0;
2106
+ height: 12px;
2107
+ width: 12px;
2108
+ border-radius: 50%;
2109
+ border: 1px solid #687b95;
2110
+ content: "";
2111
+ }
2112
+ .disable__comment__option .disable_option input[type=radio] ~ label:after {
2113
+ position: absolute;
2114
+ top: 7px;
2115
+ left: 3px;
2116
+ height: 8px;
2117
+ width: 8px;
2118
+ border-radius: 50%;
2119
+ border: 0;
2120
+ background: #05cb6b;
2121
+ content: "";
2122
+ opacity: 0;
2123
+ transition: all 0.3s ease;
2124
+ }
2125
+ .disable__comment__option .disable_option input[type=radio] ~ label span {
2126
+ font-size: 16px;
2127
+ font-weight: 400;
2128
+ color: #687b95;
2129
+ }
2130
+ .disable__comment__option .disable_option .disable__checklist {
2131
+ display: flex;
2132
+ flex-wrap: wrap;
2133
+ }
2134
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item {
2135
+ flex: 0 0 140px;
2136
+ margin-right: 10px;
2137
+ margin-bottom: 10px;
2138
+ }
2139
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item input {
2140
+ display: none;
2141
+ }
2142
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item input:checked ~ label:before {
2143
+ border-color: #00b2fc;
2144
+ background: #00b2fc;
2145
+ }
2146
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item input:checked ~ label:after {
2147
+ opacity: 1;
2148
+ }
2149
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item label {
2150
+ font-size: 16px;
2151
+ font-weight: 500;
2152
+ color: #687b95;
2153
+ font-family: "DM Sans", sans-serif;
2154
+ position: relative;
2155
+ line-height: 1.3;
2156
+ padding-left: 25px;
2157
+ display: block;
2158
+ }
2159
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item label:before {
2160
+ position: absolute;
2161
+ top: 4px;
2162
+ left: 0;
2163
+ height: 10px;
2164
+ width: 10px;
2165
+ border: 1px solid #687b95;
2166
+ content: "";
2167
+ }
2168
+ .disable__comment__option .disable_option .disable__checklist .disable__checklist__item label:after {
2169
+ position: absolute;
2170
+ top: -2px;
2171
+ left: 2px;
2172
+ height: 11px;
2173
+ width: 11px;
2174
+ border: 0;
2175
+ content: url(../img/check.png);
2176
+ opacity: 0;
2177
+ transition: all 0.3s ease;
2178
+ }
2179
+ .disable__comment__option .disable_option .delete__checklist {
2180
+ display: flex;
2181
+ flex-wrap: wrap;
2182
+ margin-bottom: 10px;
2183
+ }
2184
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item {
2185
+ flex: 0 0 130px;
2186
+ margin-right: 10px;
2187
+ margin-bottom: 10px;
2188
+ }
2189
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item input {
2190
+ display: none;
2191
+ }
2192
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item input:checked ~ label:before {
2193
+ border-color: #00b2fc;
2194
+ background: #00b2fc;
2195
+ }
2196
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item input:checked ~ label:after {
2197
+ opacity: 1;
2198
+ }
2199
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item label {
2200
+ font-size: 18px;
2201
+ font-weight: 500;
2202
+ color: #687b95;
2203
+ font-family: "DM Sans", sans-serif;
2204
+ position: relative;
2205
+ line-height: 1.3;
2206
+ padding-left: 25px;
2207
+ display: block;
2208
+ }
2209
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item label:before {
2210
+ position: absolute;
2211
+ top: 4px;
2212
+ left: 0;
2213
+ height: 12px;
2214
+ width: 12px;
2215
+ border: 1px solid #687b95;
2216
+ content: "";
2217
+ }
2218
+ .disable__comment__option .disable_option .delete__checklist .delete__checklist__item label:after {
2219
+ position: absolute;
2220
+ top: -2px;
2221
+ left: 2px;
2222
+ height: 13px;
2223
+ width: 13px;
2224
+ border: 0;
2225
+ content: url(../img/check.png);
2226
+ opacity: 0;
2227
+ transition: all 0.3s ease;
2228
+ }
2229
+ .disable__comment__option .disable_option .remove__checklist {
2230
+ display: flex;
2231
+ flex-wrap: wrap;
2232
+ margin-bottom: 10px;
2233
+ }
2234
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item {
2235
+ flex: 0 0 130px;
2236
+ margin-right: 10px;
2237
+ margin-bottom: 10px;
2238
+ }
2239
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item input {
2240
+ display: none;
2241
+ }
2242
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item input:checked ~ label:before {
2243
+ border-color: #00b2fc;
2244
+ background: #00b2fc;
2245
+ }
2246
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item input:checked ~ label:after {
2247
+ opacity: 1;
2248
+ }
2249
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item label {
2250
+ font-size: 18px;
2251
+ font-weight: 500;
2252
+ color: #687b95;
2253
+ font-family: "DM Sans", sans-serif;
2254
+ position: relative;
2255
+ line-height: 1.3;
2256
+ padding-left: 25px;
2257
+ display: block;
2258
+ }
2259
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item label:before {
2260
+ position: absolute;
2261
+ top: 4px;
2262
+ left: 0;
2263
+ height: 12px;
2264
+ width: 12px;
2265
+ border: 1px solid #687b95;
2266
+ content: "";
2267
+ }
2268
+ .disable__comment__option .disable_option .remove__checklist .remove__checklist__item label:after {
2269
+ position: absolute;
2270
+ top: -2px;
2271
+ left: 2px;
2272
+ height: 13px;
2273
+ width: 13px;
2274
+ border: 0;
2275
+ content: url(../img/check.png);
2276
+ opacity: 0;
2277
+ transition: all 0.3s ease;
2278
+ }
2279
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item {
2280
+ margin-bottom: 10px;
2281
+ }
2282
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input {
2283
+ display: none;
2284
+ }
2285
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label {
2286
+ color: #22282d;
2287
+ }
2288
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label .switch {
2289
+ background: #05cb6b;
2290
+ }
2291
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label .switch:before {
2292
+ left: 23px;
2293
+ }
2294
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label .switch .switch__text {
2295
+ left: 5px;
2296
+ }
2297
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label .switch .switch__text.on {
2298
+ display: block;
2299
+ }
2300
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item input:checked ~ label .switch .switch__text.off {
2301
+ display: none;
2302
+ }
2303
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label {
2304
+ font-size: 16px;
2305
+ font-weight: 500;
2306
+ color: #687b95;
2307
+ font-family: "DM Sans", sans-serif;
2308
+ display: inline-flex;
2309
+ align-items: center;
2310
+ }
2311
+ @media (max-width: 479.98px) {
2312
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label {
2313
+ font-size: 14px;
2314
+ }
2315
+ }
2316
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label .switch {
2317
+ flex: 0 0 35px;
2318
+ height: 16px;
2319
+ width: 35px;
2320
+ margin-right: 20px;
2321
+ border-radius: 10px;
2322
+ background: #99a6b8;
2323
+ display: inline-block;
2324
+ font-size: 8px;
2325
+ text-transform: uppercase;
2326
+ font-weight: 400;
2327
+ color: #ffffff;
2328
+ font-family: "DM Sans", sans-serif;
2329
+ padding: 2px 5px;
2330
+ position: relative;
2331
+ transition: all 0.3s ease;
2332
+ }
2333
+ @media (max-width: 479.98px) {
2334
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label .switch {
2335
+ font-size: 10px;
2336
+ }
2337
+ }
2338
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label .switch:before {
2339
+ position: absolute;
2340
+ top: 4px;
2341
+ left: 4px;
2342
+ border-radius: 50%;
2343
+ background: #ffffff;
2344
+ height: 8px;
2345
+ width: 8px;
2346
+ content: "";
2347
+ transition: all 0.3s ease;
2348
+ }
2349
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label .switch .switch__text {
2350
+ position: absolute;
2351
+ top: 2px;
2352
+ left: 16px;
2353
+ transition: all 0.3s ease;
2354
+ }
2355
+ .disable__comment__option .disable_option .disable__switchs .dissable__switch__item label .switch .switch__text.on {
2356
+ display: none;
2357
+ }
2358
+ .disable__comment__option .disable_option .delete__feedback {
2359
+ margin-bottom: 10px;
2360
+ }
2361
+ .disable__comment__option .disable_option .delete__feedback label {
2362
+ font-size: 14px;
2363
+ }
2364
+ .disable__comment__option .disable_option .delete__feedback .delete__feedback__item {
2365
+ position: relative;
2366
+ display: inline-block;
2367
+ padding-right: 8px;
2368
+ }
2369
+ .disable__comment__option .disable_option .delete__feedback .delete__feedback__item:not(:last-child):before {
2370
+ position: absolute;
2371
+ top: 7px;
2372
+ right: -2px;
2373
+ bottom: 7px;
2374
+ width: 2px;
2375
+ background: #687b95;
2376
+ content: "";
2377
+ }
2378
+ .disable__comment__option .disable_option .delete__feedback .delete__feedback__item:last-child {
2379
+ padding-left: 8px;
2380
+ }
2381
+ .disable__comment__option .disable_option .delete__feedback .delete__feedback__item a {
2382
+ font-size: 18px;
2383
+ font-weight: 500;
2384
+ color: #687b95;
2385
+ outline: none;
2386
+ box-shadow: none;
2387
+ }
2388
+ .disable__comment__option .disable_option .disable__option__description {
2389
+ font-size: 15px;
2390
+ font-weight: 400;
2391
+ line-height: 1.8;
2392
+ color: #687b95;
2393
+ font-family: "DM Sans", sans-serif;
2394
+ }
2395
+ .disable__comment__option .disable_option .disable__option__description .danger {
2396
+ color: #e0061a;
2397
+ font-weight: 500;
2398
+ }
2399
+ .disable__comment__option .total-comments {
2400
+ font-size: 16px;
2401
+ line-height: 26px;
2402
+ margin-top: 20px;
2403
+ color: #687b95;
2404
+ }
2405
+
2406
+ .dc-item__card_wrap {
2407
+ height: 100%;
2408
+ display: flex;
2409
+ }
2410
+
2411
+ .dc-item__card {
2412
+ background: #ffffff;
2413
+ padding: 10px;
2414
+ border-radius: 5px;
2415
+ margin-bottom: 30px;
2416
+ flex-grow: 1;
2417
+ }
2418
+ .dc-item__card .thumb img {
2419
+ vertical-align: middle;
2420
+ border-style: none;
2421
+ }
2422
+ .dc-item__card .card__content {
2423
+ padding: 25px 10px;
2424
+ text-align: center;
2425
+ }
2426
+ .dc-item__card .card__content h3 {
2427
+ font-size: 20px;
2428
+ font-weight: 500;
2429
+ font-family: "DM Sans", sans-serif;
2430
+ color: #22282d;
2431
+ margin-bottom: 10px;
2432
+ }
2433
+ .dc-item__card .card__content p {
2434
+ font-size: 14px;
2435
+ font-weight: 400;
2436
+ color: #687b95;
2437
+ line-height: 2.14;
2438
+ margin-bottom: 20px;
2439
+ }
2440
+
2441
+ .dc-tutorials {
2442
+ border-radius: 5px;
2443
+ max-width: 450px;
2444
+ padding-bottom: 25px;
2445
+ }
2446
+ .dc-tutorials h3 {
2447
+ font-size: 20px;
2448
+ font-weight: 500;
2449
+ color: #22282d;
2450
+ font-family: "DM Sans", sans-serif;
2451
+ margin-bottom: 20px;
2452
+ }
2453
+ @media (max-width: 479.98px) {
2454
+ .dc-tutorials h3 {
2455
+ font-size: 20px;
2456
+ }
2457
+ }
2458
+ .dc-tutorials .tutorial__list .tutorial__item {
2459
+ display: flex;
2460
+ }
2461
+ .dc-tutorials .tutorial__list .tutorial__item:not(:last-child) {
2462
+ margin-bottom: 20px;
2463
+ }
2464
+ .dc-tutorials .tutorial__list .tutorial__item .icon {
2465
+ flex: 0 0 50px;
2466
+ max-width: 50px;
2467
+ height: 50px;
2468
+ border-radius: 5px;
2469
+ background: #f4f6fc;
2470
+ padding: 14px;
2471
+ margin-right: 15px;
2472
+ }
2473
+ .dc-tutorials .tutorial__list .tutorial__item .icon svg path {
2474
+ fill: #808da1;
2475
+ transition: all 0.3s ease;
2476
+ }
2477
+ .dc-tutorials .tutorial__list .tutorial__item h4 {
2478
+ font-size: 15px;
2479
+ line-height: 1.6;
2480
+ font-weight: 500;
2481
+ color: #687b95;
2482
+ font-family: "DM Sans", sans-serif;
2483
+ transition: all 0.3s ease;
2484
+ }
2485
+ @media (max-width: 1599.98px) {
2486
+ .dc-tutorials .tutorial__list .tutorial__item h4 {
2487
+ font-size: 14px;
2488
+ }
2489
+ }
2490
+ .dc-tutorials .tutorial__list .tutorial__item h4 a {
2491
+ outline: none;
2492
+ box-shadow: none;
2493
+ }
2494
+ .dc-tutorials .tutorial__list .tutorial__item:hover .icon svg path {
2495
+ fill: #05cb6b;
2496
+ }
2497
+ .dc-tutorials .tutorial__list .tutorial__item:hover h4 {
2498
+ color: #22282d;
2499
+ }
2500
+
2501
+ .blog__post {
2502
+ padding: 5px;
2503
+ border-radius: 5px;
2504
+ background: #ffffff;
2505
+ max-width: 450px;
2506
+ }
2507
+ .blog__post .thumb {
2508
+ position: relative;
2509
+ }
2510
+ .blog__post .thumb img {
2511
+ width: 100%;
2512
+ }
2513
+ .blog__post .thumb .play__btn {
2514
+ position: absolute;
2515
+ top: 50%;
2516
+ left: 50%;
2517
+ transform: translate(-50%, -50%);
2518
+ height: 50px;
2519
+ width: 50px;
2520
+ border-radius: 50%;
2521
+ background: #05cb6b;
2522
+ display: flex;
2523
+ justify-content: center;
2524
+ align-items: center;
2525
+ outline: none;
2526
+ box-shadow: none;
2527
+ }
2528
+ .blog__post .thumb .play__btn span {
2529
+ width: 0;
2530
+ height: 0;
2531
+ border-top: 8px solid transparent;
2532
+ border-bottom: 8px solid transparent;
2533
+ border-left: 10px solid #ffffff;
2534
+ }
2535
+ .blog__post .blog__post__content {
2536
+ padding: 5px 10px;
2537
+ }
2538
+ .blog__post .blog__post__content h4 {
2539
+ font-size: 16px;
2540
+ font-weight: 500;
2541
+ color: #22282d;
2542
+ line-height: 1.8;
2543
+ font-family: "DM Sans", sans-serif;
2544
+ }
2545
+
2546
+ .footer {
2547
+ width: 100%;
2548
+ text-align: center;
2549
+ }
2550
+
2551
+ .footer__content {
2552
+ text-align: center;
2553
+ }
2554
+ .footer__content .footer__nav ul {
2555
+ display: flex;
2556
+ flex-wrap: wrap;
2557
+ justify-content: center;
2558
+ }
2559
+ .footer__content .footer__nav ul li {
2560
+ margin-bottom: 15px;
2561
+ padding: 0 10px;
2562
+ position: relative;
2563
+ line-height: 1;
2564
+ }
2565
+ .footer__content .footer__nav ul li:not(:last-child):before {
2566
+ position: absolute;
2567
+ top: 2px;
2568
+ bottom: 2px;
2569
+ right: 0;
2570
+ width: 1px;
2571
+ background: #687b95;
2572
+ content: "";
2573
+ }
2574
+ .footer__content .footer__nav ul li a {
2575
+ font-size: 16px;
2576
+ font-weight: 400;
2577
+ color: #687b95;
2578
+ line-height: inherit;
2579
+ outline: none;
2580
+ box-shadow: none;
2581
+ }
2582
+ @media (max-width: 767.98px) {
2583
+ .footer__content .footer__nav ul li a {
2584
+ font-size: 14px;
2585
+ }
2586
+ }
2587
+
2588
+ .cancel-dc-setup {
2589
+ text-align: right;
2590
+ margin-bottom: 20px;
2591
+ font-size: 13px;
2592
+ }
2593
+
2594
+ .dc-quick__setup__wrap {
2595
+ padding: 50px 30px 50px;
2596
+ }
2597
+
2598
+ .dc-logo img {
2599
+ max-width: 100%;
2600
+ max-height: 80px;
2601
+ }
2602
+
2603
+ .dc-logo__center {
2604
+ text-align: center;
2605
+ }
2606
+
2607
+ .dc-quick__setup__nav {
2608
+ display: flex;
2609
+ justify-content: center;
2610
+ align-items: center;
2611
+ padding: 0;
2612
+ margin: 0;
2613
+ }
2614
+ @media (max-width: 767.98px) {
2615
+ .dc-quick__setup__nav {
2616
+ flex-wrap: wrap;
2617
+ }
2618
+ }
2619
+ .dc-quick__setup__nav .quick__setup__item {
2620
+ padding: 0 25px;
2621
+ position: relative;
2622
+ }
2623
+ .dc-quick__setup__nav .quick__setup__item:not(:last-child):before {
2624
+ position: absolute;
2625
+ top: 50%;
2626
+ left: 50%;
2627
+ transform: translateY(-50%);
2628
+ height: 3px;
2629
+ width: 100%;
2630
+ content: "";
2631
+ background: #d8dde7;
2632
+ }
2633
+ @media (max-width: 767.98px) {
2634
+ .dc-quick__setup__nav .quick__setup__item:not(:last-child):before {
2635
+ height: 0;
2636
+ width: 0;
2637
+ }
2638
+ }
2639
+ @media (max-width: 1199.98px) {
2640
+ .dc-quick__setup__nav .quick__setup__item {
2641
+ padding: 0 15px;
2642
+ }
2643
+ }
2644
+ .dc-quick__setup__nav .quick__setup__item .quick__setup__link {
2645
+ text-transform: uppercase;
2646
+ font-size: 14px;
2647
+ font-weight: 500;
2648
+ color: #22282d;
2649
+ width: 200px;
2650
+ text-align: center;
2651
+ padding: 13px 0;
2652
+ background: #ffffff;
2653
+ border-radius: 5px;
2654
+ position: relative;
2655
+ z-index: 1;
2656
+ outline: none;
2657
+ box-shadow: none;
2658
+ }
2659
+ @media (max-width: 1199.98px) {
2660
+ .dc-quick__setup__nav .quick__setup__item .quick__setup__link {
2661
+ width: auto;
2662
+ padding: 13px 20px;
2663
+ }
2664
+ }
2665
+ @media (max-width: 767.98px) {
2666
+ .dc-quick__setup__nav .quick__setup__item .quick__setup__link {
2667
+ font-size: 12px;
2668
+ }
2669
+ }
2670
+ .dc-quick__setup__nav .quick__setup__item.active:not(:last-child):before {
2671
+ background: #e10619;
2672
+ }
2673
+ .dc-quick__setup__nav .quick__setup__item.active .quick__setup__link {
2674
+ background: #e10619;
2675
+ color: #ffffff;
2676
+ }
2677
+
2678
+ .dc-quick__step__item {
2679
+ display: none;
2680
+ }
2681
+ .dc-quick__step__item.active {
2682
+ display: block;
2683
+ }
2684
+ .dc-quick__step__item .button {
2685
+ display: none;
2686
+ }
2687
+
2688
+ .dc-quick__step__item .quick__setup__item__header h2 {
2689
+ font-size: 32px;
2690
+ font-weight: 700;
2691
+ color: #22282d;
2692
+ font-family: "DM Sans", sans-serif;
2693
+ text-align: center;
2694
+ margin-bottom: 16px;
2695
+ }
2696
+ @media (max-width: 767.98px) {
2697
+ .dc-quick__step__item .quick__setup__item__header h2 {
2698
+ font-size: 28px;
2699
+ }
2700
+ }
2701
+ @media (max-width: 575.98px) {
2702
+ .dc-quick__step__item .quick__setup__item__header h2 {
2703
+ font-size: 24px;
2704
+ }
2705
+ }
2706
+ .dc-quick__step__item .quick__setup__item__header p {
2707
+ text-align: center;
2708
+ font-size: 16px;
2709
+ color: #687b95;
2710
+ max-width: 780px;
2711
+ margin: 0 auto;
2712
+ }
2713
+ @media (max-width: 767.98px) {
2714
+ .dc-quick__step__item .quick__setup__item__header p {
2715
+ font-size: 14px;
2716
+ }
2717
+ }
2718
+ .dc-quick__step__item .dc-video__area {
2719
+ text-align: center;
2720
+ margin: 0 auto;
2721
+ position: relative;
2722
+ }
2723
+ @media (max-width: 1199.98px) {
2724
+ .dc-quick__step__item .dc-video__area {
2725
+ min-height: 300px;
2726
+ }
2727
+ }
2728
+ .dc-quick__step__item .dc-video__area .play__btn {
2729
+ position: absolute;
2730
+ top: 50%;
2731
+ left: 50%;
2732
+ transform: translate(-50%, -50%);
2733
+ height: 70px;
2734
+ width: 70px;
2735
+ border-radius: 50%;
2736
+ background: #05cb6b;
2737
+ display: flex;
2738
+ justify-content: center;
2739
+ align-items: center;
2740
+ outline: none;
2741
+ box-shadow: none;
2742
+ }
2743
+ .dc-quick__step__item .dc-video__area .play__btn span {
2744
+ width: 0;
2745
+ height: 0;
2746
+ border-top: 8px solid transparent;
2747
+ border-bottom: 8px solid transparent;
2748
+ border-left: 10px solid #ffffff;
2749
+ }
2750
+ @media (max-width: 767.98px) {
2751
+ .dc-quick__step__item .dc-video__area .play__btn {
2752
+ height: 50px;
2753
+ width: 50px;
2754
+ }
2755
+ }
2756
+ .dc-quick__step__item .dc-form__group {
2757
+ padding-left: 27px;
2758
+ text-align: center;
2759
+ border-radius: 10px;
2760
+ margin: 15px auto 0;
2761
+ max-width: 800px;
2762
+ }
2763
+ @media (max-width: 575.98px) {
2764
+ .dc-quick__step__item .dc-form__group {
2765
+ text-align: left;
2766
+ }
2767
+ }
2768
+ .dc-quick__step__item .dc-form__group input {
2769
+ display: none;
2770
+ }
2771
+ .dc-quick__step__item .dc-form__group input:checked ~ label:before {
2772
+ border-color: #00b2fc;
2773
+ background: #00b2fc;
2774
+ }
2775
+ .dc-quick__step__item .dc-form__group input:checked ~ label:after {
2776
+ opacity: 1;
2777
+ }
2778
+ .dc-quick__step__item .dc-form__group label {
2779
+ font-size: 18px;
2780
+ font-weight: 500;
2781
+ color: #22282d;
2782
+ font-family: "DM Sans", sans-serif;
2783
+ position: relative;
2784
+ }
2785
+ @media (max-width: 767.98px) {
2786
+ .dc-quick__step__item .dc-form__group label {
2787
+ font-size: 16px;
2788
+ }
2789
+ }
2790
+ .dc-quick__step__item .dc-form__group label:before {
2791
+ position: absolute;
2792
+ top: 5px;
2793
+ left: -27px;
2794
+ height: 12px;
2795
+ width: 12px;
2796
+ border: 1px solid #687b95;
2797
+ content: "";
2798
+ }
2799
+ @media (max-width: 767.98px) {
2800
+ .dc-quick__step__item .dc-form__group label:before {
2801
+ top: 4px;
2802
+ }
2803
+ }
2804
+ .dc-quick__step__item .dc-form__group label:after {
2805
+ position: absolute;
2806
+ top: -5px;
2807
+ left: -26px;
2808
+ height: 13px;
2809
+ width: 13px;
2810
+ border: 0;
2811
+ content: url(../img/check.png);
2812
+ opacity: 0;
2813
+ transition: all 0.3s ease;
2814
+ }
2815
+ .dc-quick__step__item .disable_option {
2816
+ border-radius: 5px;
2817
+ }
2818
+ .dc-quick__step__item .disable_option.dc-text__block {
2819
+ background: #f4f6fc;
2820
+ }
2821
+ .dc-quick__step__item .disable_option input[type=radio] {
2822
+ display: none;
2823
+ }
2824
+ .dc-quick__step__item .disable_option input[type=radio]:checked ~ label:before {
2825
+ border-color: #05cb6b;
2826
+ }
2827
+ .dc-quick__step__item .disable_option input[type=radio]:checked ~ label:after {
2828
+ opacity: 1;
2829
+ }
2830
+ .dc-quick__step__item .disable_option input[type=radio] ~ label {
2831
+ font-size: 18px;
2832
+ font-weight: 500;
2833
+ color: #22282d;
2834
+ font-family: "DM Sans", sans-serif;
2835
+ position: relative;
2836
+ line-height: 1.3;
2837
+ padding-left: 25px;
2838
+ display: block;
2839
+ margin-bottom: 15px;
2840
+ }
2841
+ .dc-quick__step__item .disable_option input[type=radio] ~ label:before {
2842
+ position: absolute;
2843
+ top: 4px;
2844
+ left: 0;
2845
+ height: 12px;
2846
+ width: 12px;
2847
+ border-radius: 50%;
2848
+ border: 1px solid #687b95;
2849
+ content: "";
2850
+ }
2851
+ .dc-quick__step__item .disable_option input[type=radio] ~ label:after {
2852
+ position: absolute;
2853
+ top: 7px;
2854
+ left: 3px;
2855
+ height: 8px;
2856
+ width: 8px;
2857
+ border-radius: 50%;
2858
+ border: 0;
2859
+ background: #05cb6b;
2860
+ content: "";
2861
+ opacity: 0;
2862
+ transition: all 0.3s ease;
2863
+ }
2864
+ .dc-quick__step__item .disable_option input[type=radio] ~ label span {
2865
+ font-size: 16px;
2866
+ font-weight: 400;
2867
+ color: #687b95;
2868
+ }
2869
+ .dc-quick__step__item .disable_option .disable__checklist {
2870
+ display: flex;
2871
+ flex-wrap: wrap;
2872
+ margin-bottom: 10px;
2873
+ }
2874
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item {
2875
+ flex: 0 0 140px;
2876
+ margin-right: 10px;
2877
+ }
2878
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item input {
2879
+ display: none;
2880
+ }
2881
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item input:checked ~ label:before {
2882
+ border-color: #00b2fc;
2883
+ background: #00b2fc;
2884
+ }
2885
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item input:checked ~ label:after {
2886
+ opacity: 1;
2887
+ }
2888
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item label {
2889
+ font-size: 16px;
2890
+ font-weight: 500;
2891
+ color: #687b95;
2892
+ font-family: "DM Sans", sans-serif;
2893
+ position: relative;
2894
+ line-height: 1.3;
2895
+ padding-left: 25px;
2896
+ display: block;
2897
+ }
2898
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item label:before {
2899
+ position: absolute;
2900
+ top: 4px;
2901
+ left: 0;
2902
+ height: 10px;
2903
+ width: 10px;
2904
+ border: 1px solid #687b95;
2905
+ content: "";
2906
+ }
2907
+ .dc-quick__step__item .disable_option .disable__checklist .disable__checklist__item label:after {
2908
+ position: absolute;
2909
+ top: -2px;
2910
+ left: 2px;
2911
+ height: 11px;
2912
+ width: 11px;
2913
+ border: 0;
2914
+ content: url(../img/check.png);
2915
+ opacity: 0;
2916
+ transition: all 0.3s ease;
2917
+ }
2918
+ .dc-quick__step__item .disable_option .disable__option__description {
2919
+ font-size: 15px;
2920
+ font-weight: 400;
2921
+ color: #687b95;
2922
+ font-family: "DM Sans", sans-serif;
2923
+ }
2924
+ .dc-quick__step__item .disable_option .disable__option__description .danger {
2925
+ color: #e0061a;
2926
+ font-weight: 500;
2927
+ }
2928
+ .dc-quick__step__item .finalize-thumb {
2929
+ text-align: center;
2930
+ padding: 0 0 30px;
2931
+ }
2932
+ .dc-quick__step__item .finalize-thumb img {
2933
+ max-height: 220px;
2934
+ }
2935
+ .dc-quick__step__item .doc__button__wrap {
2936
+ text-align: center;
2937
+ }
2938
+ .dc-quick__step__item .doc__button__wrap .doc__button {
2939
+ font-size: 16px;
2940
+ font-weight: 500;
2941
+ font-family: "DM Sans", sans-serif;
2942
+ color: #22282d;
2943
+ text-transform: uppercase;
2944
+ border: 1px solid #e10619;
2945
+ border-radius: 5px;
2946
+ padding: 10px 35px;
2947
+ outline: none;
2948
+ box-shadow: none;
2949
+ }
2950
+ .dc-quick__step__item .doc__button__wrap .doc__button:hover {
2951
+ background: #e10619;
2952
+ color: #ffffff;
2953
+ }
2954
+ .dc-quick__step__item #whatWeCollect {
2955
+ color: #05cb6b;
2956
+ outline: 0;
2957
+ box-shadow: none;
2958
+ }
2959
+ .dc-quick__step__item #whatWeCollectMessage {
2960
+ display: none;
2961
+ }
2962
+
2963
+ .dc-quick__setup__wrap .button__group {
2964
+ display: flex;
2965
+ flex-wrap: wrap;
2966
+ justify-content: space-between;
2967
+ align-items: center;
2968
+ }
2969
+ .dc-quick__setup__wrap .button__group .button {
2970
+ width: 160px;
2971
+ text-align: center;
2972
+ }
2973
+ .dc-quick__setup__wrap .button__group .button.button--sm {
2974
+ width: 110px;
2975
+ }
2976
+ @media (max-width: 767.98px) {
2977
+ .dc-quick__setup__wrap .button__group .button {
2978
+ width: unset;
2979
+ }
2980
+ .dc-quick__setup__wrap .button__group .button.button--sm {
2981
+ width: unset;
2982
+ }
2983
+ }
assets/css/sweetalert2.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}
assets/disable-comments.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
-
3
- wp.domReady(function () {
4
- if (wp.blocks) {
5
- wp.blocks.unregisterBlockType('core/latest-comments');
6
- }
7
- });
8
- //# sourceMappingURL=disable-comments.js.map
 
 
 
 
 
 
 
 
assets/disable-comments.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/disable-comments.js"],"names":["wp","domReady","blocks","unregisterBlockType"],"mappings":";;AAAAA,EAAE,CAACC,QAAH,CAAY,YAAM;AACjB,MAAGD,EAAE,CAACE,MAAN,EAAc;AACbF,IAAAA,EAAE,CAACE,MAAH,CAAUC,mBAAV,CAA8B,sBAA9B;AACA;AACD,CAJD","sourcesContent":["wp.domReady(() => {\n\tif(wp.blocks) {\n\t\twp.blocks.unregisterBlockType('core/latest-comments');\n\t}\n});\n"],"file":"disable-comments.js"}
 
assets/img/blog/thumb-1.jpg ADDED
Binary file
assets/img/check.png ADDED
Binary file
assets/img/company-thumb.png ADDED
Binary file
assets/img/finalize-thumb.png ADDED
Binary file
assets/img/icon-logo-small.png ADDED
Binary file
assets/img/icon-logo.png ADDED
Binary file
assets/img/logo.png ADDED
Binary file
assets/js/disable-comments-settings-scripts.js ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function () {
2
+ /**
3
+ * Settings Scripts
4
+ */
5
+ // tabs
6
+ function disbale_comments_tabs() {
7
+ var hash = window.location.hash;
8
+ var tabNavItem =
9
+ "ul.disable__comment__nav li.disable__comment__nav__item";
10
+ var tabBodyItem = ".disable__comment__tab .disable__comment__tab__item";
11
+ jQuery(tabNavItem).on("click", "a", function (e) {
12
+ e.preventDefault();
13
+ jQuery(this)
14
+ .addClass("active")
15
+ .parent()
16
+ .siblings()
17
+ .children()
18
+ .removeClass("active");
19
+ var target = jQuery(this).attr("href");
20
+ jQuery(target).addClass("show").siblings().removeClass("show");
21
+ });
22
+ if (hash === "#delete") {
23
+ jQuery("#disableCommentsNav > a").removeClass("active");
24
+ jQuery("#disableComments").removeClass("show");
25
+ jQuery("#deleteCommentsNav > a").addClass("active");
26
+ jQuery("#deleteComments").addClass("show");
27
+ }
28
+ }
29
+ disbale_comments_tabs();
30
+ // UI Helper
31
+ function disable_comments_uihelper() {
32
+ var indiv_bits = jQuery(
33
+ ".remove__checklist .remove__checklist__item, #extratypes"
34
+ );
35
+ if (jQuery("#remove_everywhere").is(":checked")) {
36
+ indiv_bits
37
+ .css("opacity", ".3")
38
+ .find(":input")
39
+ .attr("disabled", true);
40
+ } else {
41
+ indiv_bits
42
+ .css("opacity", "1")
43
+ .find(":input")
44
+ .attr("disabled", false);
45
+ }
46
+ }
47
+
48
+ jQuery("#remove_everywhere, #selected_types").change(function () {
49
+ jQuery("#message").slideUp();
50
+ disable_comments_uihelper();
51
+ });
52
+ disable_comments_uihelper();
53
+
54
+ function delete_comments_uihelper() {
55
+ var toggle_pt_bits = jQuery(
56
+ ".delete__checklist .delete__checklist__item, #extradeletetypes"
57
+ );
58
+ var toggle_ct_bits = jQuery("#listofdeletecommenttypes");
59
+ if (jQuery("#delete_everywhere").is(":checked")) {
60
+ toggle_pt_bits
61
+ .css("opacity", ".3")
62
+ .find(":input")
63
+ .attr("disabled", true);
64
+ toggle_ct_bits
65
+ .css("opacity", ".3")
66
+ .find(":input")
67
+ .attr("disabled", true);
68
+ } else {
69
+ if (jQuery("#selected_delete_types").is(":checked")) {
70
+ toggle_pt_bits
71
+ .css("opacity", "1")
72
+ .find(":input")
73
+ .attr("disabled", false);
74
+ toggle_ct_bits
75
+ .css("opacity", ".3")
76
+ .find(":input")
77
+ .attr("disabled", true);
78
+ } else {
79
+ toggle_ct_bits
80
+ .css("opacity", "1")
81
+ .find(":input")
82
+ .attr("disabled", false);
83
+ toggle_pt_bits
84
+ .css("opacity", ".3")
85
+ .find(":input")
86
+ .attr("disabled", true);
87
+ }
88
+ }
89
+ }
90
+
91
+ jQuery(
92
+ "#delete_everywhere, #selected_delete_types, #selected_delete_comment_types"
93
+ ).change(function () {
94
+ delete_comments_uihelper();
95
+ });
96
+ delete_comments_uihelper();
97
+
98
+ /**
99
+ * Quick Setup Settings Scripts
100
+ */
101
+ if (jQuery("#disablecommentssetupwrap").length > 0) {
102
+ // disable nav click
103
+ jQuery("ul.dc-quick__setup__nav li a").on("click", function (e) {
104
+ e.stopPropagation();
105
+ e.preventDefault();
106
+ });
107
+ var btnPrevious = "#dcQuickPreviousBtn";
108
+ var btnNext = "#dcQuickNextBtn";
109
+ var btnSkip = "#dcQuickSkipBtn";
110
+ var finishStepFlug = false;
111
+ var tabPosition = localStorage.getItem("dcqTabPostion");
112
+ if (!tabPosition || tabPosition == null || isNaN(tabPosition)) {
113
+ localStorage.setItem("dcqTabPostion", 1);
114
+ tabPosition = 1;
115
+ }
116
+ changeTab(tabPosition); // window load
117
+
118
+ // click button
119
+ jQuery(btnPrevious).on("click", function (e) {
120
+ e.preventDefault();
121
+ finishStepFlug = false;
122
+ updateTabPosition(localStorage.getItem("dcqTabPostion"), true);
123
+ });
124
+ jQuery(btnNext).on("click", function (e) {
125
+ e.preventDefault();
126
+ updateTabPosition(localStorage.getItem("dcqTabPostion"));
127
+ save_settings(parseInt(localStorage.getItem("dcqTabPostion") - 1));
128
+ });
129
+ jQuery(btnSkip).on("click", function (e) {
130
+ e.preventDefault();
131
+ finishStepFlug = false;
132
+ updateTabPosition(localStorage.getItem("dcqTabPostion"));
133
+ });
134
+
135
+ function updateTabPosition(tabPosition, isDecrement = false) {
136
+ if (isDecrement === true) {
137
+ if (1 < tabPosition) {
138
+ --tabPosition;
139
+ }
140
+ } else {
141
+ if (3 > tabPosition) {
142
+ ++tabPosition;
143
+ }
144
+ }
145
+ localStorage.setItem("dcqTabPostion", tabPosition);
146
+ changeTab(tabPosition);
147
+ }
148
+ function changeTab(nthChildNumber) {
149
+ for (var i = 1; i <= 3; i++) {
150
+ if (i <= nthChildNumber) {
151
+ jQuery(
152
+ "ul.dc-quick__setup__nav li:nth-child(" + i + ")"
153
+ ).addClass("active");
154
+ } else {
155
+ jQuery(
156
+ "ul.dc-quick__setup__nav li:nth-child(" + i + ")"
157
+ ).removeClass("active");
158
+ }
159
+ // active tab
160
+ if (nthChildNumber == i) {
161
+ jQuery("#dcqTabBody_" + nthChildNumber).addClass("active");
162
+ } else {
163
+ jQuery("#dcqTabBody_" + i).removeClass("active");
164
+ }
165
+ // active tab control
166
+ if (nthChildNumber == 1) {
167
+ jQuery(btnPrevious).css("visibility", "hidden");
168
+ jQuery(btnSkip).css("visibility", "hidden");
169
+ } else {
170
+ jQuery(btnPrevious).css("visibility", "visible");
171
+ jQuery(btnSkip).css("visibility", "visible");
172
+ }
173
+ if (nthChildNumber == 3) {
174
+ jQuery(btnSkip).css("visibility", "hidden");
175
+ jQuery(btnNext).text("Finish");
176
+ } else {
177
+ jQuery(btnNext).text("Next");
178
+ }
179
+ }
180
+ }
181
+ function save_settings(tabPosition) {
182
+ // get all form data
183
+
184
+ if (finishStepFlug) {
185
+ window.location = disableCommentsObj.settings_URI;
186
+ } else {
187
+ if (
188
+ tabPosition == 1 &&
189
+ jQuery("[name=dc_is_optin]").is(":checked")
190
+ ) {
191
+ var data = {
192
+ action: "optin_wizard_action_disable_comments",
193
+ };
194
+ jQuery
195
+ .post(ajaxurl, data, function (response) {
196
+ console.log("Optin Success");
197
+ })
198
+ .fail(function () {
199
+ console.error("Optin Failed");
200
+ });
201
+ } else if (tabPosition == 2) {
202
+ finishStepFlug = true;
203
+ var data = {
204
+ action: disableCommentsObj.save_action,
205
+ nonce: disableCommentsObj._nonce,
206
+ data: jQuery(
207
+ "#disableCommentSaveSettings"
208
+ ).serializeArray(),
209
+ };
210
+ jQuery
211
+ .post(ajaxurl, data, function (response) {})
212
+ .fail(function () {
213
+ console.error("Settings failed to saved.");
214
+ });
215
+ }
216
+ }
217
+ }
218
+
219
+ // what we collect toggle
220
+ jQuery("#whatWeCollect").on("click", function (e) {
221
+ e.preventDefault();
222
+ jQuery("#whatWeCollectMessage").slideToggle("fast");
223
+ });
224
+ }
225
+ /**
226
+ * Settings Ajax Request
227
+ */
228
+ jQuery("#disableCommentSaveSettings").on("submit", function (e) {
229
+ e.preventDefault();
230
+ var data = {
231
+ action: disableCommentsObj.save_action,
232
+ nonce: disableCommentsObj._nonce,
233
+ data: jQuery(this).serializeArray(),
234
+ };
235
+ jQuery.post(ajaxurl, data, function (response) {
236
+ if (response.success) {
237
+ Swal.fire({
238
+ icon: "success",
239
+ title: response.data.message,
240
+ timer: 3000,
241
+ showConfirmButton: false,
242
+ });
243
+ }
244
+ });
245
+ });
246
+ jQuery("#deleteCommentSettings").on("submit", function (e) {
247
+ e.preventDefault();
248
+ Swal.fire({
249
+ icon: "info",
250
+ title: "Request Sending...",
251
+ text: "Please wait.",
252
+ showConfirmButton: false,
253
+ });
254
+ var data = {
255
+ action: disableCommentsObj.delete_action,
256
+ nonce: disableCommentsObj._nonce,
257
+ data: jQuery(this).serializeArray(),
258
+ };
259
+ jQuery.post(ajaxurl, data, function (response) {
260
+ if (response.success) {
261
+ Swal.fire({
262
+ icon: "success",
263
+ title: "Deleted",
264
+ html: response.data.message,
265
+ timer: 3000,
266
+ showConfirmButton: false,
267
+ });
268
+ } else {
269
+ Swal.fire({
270
+ icon: "error",
271
+ title: "Oops...",
272
+ html: response.data.message,
273
+ showConfirmButton: true,
274
+ });
275
+ }
276
+ });
277
+ });
278
+ });
assets/js/disable-comments.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ "use strict";
2
+
3
+ wp.domReady(function () {
4
+ if (wp.blocks) {
5
+ wp.blocks.unregisterBlockType("core/latest-comments");
6
+ }
7
+ });
assets/js/sweetalert2.all.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Sweetalert2=e()}(this,function(){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function s(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n,o=arguments[e];for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])}return t}).apply(this,arguments)}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}function i(t,e,n){return(i=d()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);o=new(Function.bind.apply(t,o));return n&&l(o,n.prototype),o}).apply(null,arguments)}function p(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function f(t,e,n){return(f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){t=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=u(t)););return t}(t,e);if(t){e=Object.getOwnPropertyDescriptor(t,e);return e.get?e.get.call(n):e.value}})(t,e,n||t)}function m(e){return Object.keys(e).map(function(t){return e[t]})}function h(t){return Array.prototype.slice.call(t)}function g(t,e){e='"'.concat(t,'" is deprecated and will be removed in the next major release. Please use "').concat(e,'" instead.'),-1===K.indexOf(e)&&(K.push(e),z(e))}function v(t){return t&&"function"==typeof t.toPromise}function y(t){return v(t)?t.toPromise():Promise.resolve(t)}function b(t){return t&&Promise.resolve(t)===t}function w(t){return t instanceof Element||"object"===r(t=t)&&t.jquery}function C(){return document.body.querySelector(".".concat($.container))}function k(t){var e=C();return e?e.querySelector(t):null}function t(t){return k(".".concat(t))}function x(){return t($.popup)}function n(){var t=x();return h(t.querySelectorAll(".".concat($.icon)))}function B(){var t=n().filter(function(t){return bt(t)});return t.length?t[0]:null}function A(){return t($.title)}function P(){return t($.content)}function E(){return t($.image)}function O(){return t($["progress-steps"])}function S(){return t($["validation-message"])}function T(){return k(".".concat($.actions," .").concat($.confirm))}function L(){return k(".".concat($.actions," .").concat($.deny))}function D(){return k(".".concat($.loader))}function I(){return k(".".concat($.actions," .").concat($.cancel))}function q(){return t($.actions)}function j(){return t($.header)}function M(){return t($.footer)}function V(){return t($["timer-progress-bar"])}function H(){return t($.close)}function R(){var t=h(x().querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])')).sort(function(t,e){return t=parseInt(t.getAttribute("tabindex")),(e=parseInt(e.getAttribute("tabindex")))<t?1:t<e?-1:0}),e=h(x().querySelectorAll('\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex="0"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n')).filter(function(t){return"-1"!==t.getAttribute("tabindex")});return function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(t.concat(e)).filter(function(t){return bt(t)})}function N(){return!X()&&!document.body.classList.contains($["no-backdrop"])}function U(e,t){e.textContent="",t&&(t=(new DOMParser).parseFromString(t,"text/html"),h(t.querySelector("head").childNodes).forEach(function(t){e.appendChild(t)}),h(t.querySelector("body").childNodes).forEach(function(t){e.appendChild(t)}))}function _(t,e){if(e){for(var n=e.split(/\s+/),o=0;o<n.length;o++)if(!t.classList.contains(n[o]))return;return 1}}function F(t,e,n){var o,i;if(i=e,h((o=t).classList).forEach(function(t){-1===m($).indexOf(t)&&-1===m(J).indexOf(t)&&-1===m(i.showClass).indexOf(t)&&o.classList.remove(t)}),e.customClass&&e.customClass[n]){if("string"!=typeof e.customClass[n]&&!e.customClass[n].forEach)return z("Invalid type of customClass.".concat(n,'! Expected string or iterable object, got "').concat(r(e.customClass[n]),'"'));gt(t,e.customClass[n])}}var e="SweetAlert2:",z=function(t){console.warn("".concat(e," ").concat(t))},W=function(t){console.error("".concat(e," ").concat(t))},K=[],Y=function(t){return"function"==typeof t?t():t},Z=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Q=function(t){var e,n={};for(e in t)n[t[e]]="swal2-"+t[e];return n},$=Q(["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","toast-column","show","hide","close","title","header","content","html-container","actions","confirm","deny","cancel","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error"]),J=Q(["success","warning","info","question","error"]),X=function(){return document.body.classList.contains($["toast-shown"])},G={previousBodyPadding:null};function tt(t,e){if(!e)return null;switch(e){case"select":case"textarea":case"file":return yt(t,$[e]);case"checkbox":return t.querySelector(".".concat($.checkbox," input"));case"radio":return t.querySelector(".".concat($.radio," input:checked"))||t.querySelector(".".concat($.radio," input:first-child"));case"range":return t.querySelector(".".concat($.range," input"));default:return yt(t,$.input)}}function et(t){var e;t.focus(),"file"!==t.type&&(e=t.value,t.value="",t.value=e)}function nt(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach(function(e){t.forEach?t.forEach(function(t){n?t.classList.add(e):t.classList.remove(e)}):n?t.classList.add(e):t.classList.remove(e)}))}function ot(t,e,n){n||0===parseInt(n)?t.style[e]="number"==typeof n?"".concat(n,"px"):n:t.style.removeProperty(e)}function it(t,e){e=1<arguments.length&&void 0!==e?e:"flex",t.style.display=e}function rt(t){t.style.display="none"}function at(t,e,n,o){(e=t.querySelector(e))&&(e.style[n]=o)}function st(t,e,n){e?it(t,n):rt(t)}function ct(t){return!!(t.scrollHeight>t.clientHeight)}function ut(t){var e=window.getComputedStyle(t),t=parseFloat(e.getPropertyValue("animation-duration")||"0"),e=parseFloat(e.getPropertyValue("transition-duration")||"0");return 0<t||0<e}function lt(t,e){var e=1<arguments.length&&void 0!==e&&e,n=V();bt(n)&&(e&&(n.style.transition="none",n.style.width="100%"),setTimeout(function(){n.style.transition="width ".concat(t/1e3,"s linear"),n.style.width="0%"},10))}function dt(){return"undefined"==typeof window||"undefined"==typeof document}function pt(t){kn.isVisible()&&ht!==t.target.value&&kn.resetValidationMessage(),ht=t.target.value}function ft(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?kt(t,e):t&&U(e,t)}function mt(t,e){var n=q(),o=D(),i=T(),r=L(),a=I();e.showConfirmButton||e.showDenyButton||e.showCancelButton||rt(n),F(n,e,"actions"),At(i,"confirm",e),At(r,"deny",e),At(a,"cancel",e),function(t,e,n,o){if(!o.buttonsStyling)return vt([t,e,n],$.styled);gt([t,e,n],$.styled),o.confirmButtonColor&&(t.style.backgroundColor=o.confirmButtonColor);o.denyButtonColor&&(e.style.backgroundColor=o.denyButtonColor);o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor)}(i,r,a,e),e.reverseButtons&&(n.insertBefore(a,o),n.insertBefore(r,o),n.insertBefore(i,o)),o.innerHTML=e.loaderHtml,F(o,e,"loader")}var ht,gt=function(t,e){nt(t,e,!0)},vt=function(t,e){nt(t,e,!1)},yt=function(t,e){for(var n=0;n<t.childNodes.length;n++)if(_(t.childNodes[n],e))return t.childNodes[n]},bt=function(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))},wt='\n <div aria-labelledby="'.concat($.title,'" aria-describedby="').concat($.content,'" class="').concat($.popup,'" tabindex="-1">\n <div class="').concat($.header,'">\n <ul class="').concat($["progress-steps"],'"></ul>\n <div class="').concat($.icon," ").concat(J.error,'"></div>\n <div class="').concat($.icon," ").concat(J.question,'"></div>\n <div class="').concat($.icon," ").concat(J.warning,'"></div>\n <div class="').concat($.icon," ").concat(J.info,'"></div>\n <div class="').concat($.icon," ").concat(J.success,'"></div>\n <img class="').concat($.image,'" />\n <h2 class="').concat($.title,'" id="').concat($.title,'"></h2>\n <button type="button" class="').concat($.close,'"></button>\n </div>\n <div class="').concat($.content,'">\n <div id="').concat($.content,'" class="').concat($["html-container"],'"></div>\n <input class="').concat($.input,'" />\n <input type="file" class="').concat($.file,'" />\n <div class="').concat($.range,'">\n <input type="range" />\n <output></output>\n </div>\n <select class="').concat($.select,'"></select>\n <div class="').concat($.radio,'"></div>\n <label for="').concat($.checkbox,'" class="').concat($.checkbox,'">\n <input type="checkbox" />\n <span class="').concat($.label,'"></span>\n </label>\n <textarea class="').concat($.textarea,'"></textarea>\n <div class="').concat($["validation-message"],'" id="').concat($["validation-message"],'"></div>\n </div>\n <div class="').concat($.actions,'">\n <div class="').concat($.loader,'"></div>\n <button type="button" class="').concat($.confirm,'"></button>\n <button type="button" class="').concat($.deny,'"></button>\n <button type="button" class="').concat($.cancel,'"></button>\n </div>\n <div class="').concat($.footer,'"></div>\n <div class="').concat($["timer-progress-bar-container"],'">\n <div class="').concat($["timer-progress-bar"],'"></div>\n </div>\n </div>\n').replace(/(^|\n)\s*/g,""),Ct=function(t){var e,n,o,i,r,a=!!(i=C())&&(i.parentNode.removeChild(i),vt([document.documentElement,document.body],[$["no-backdrop"],$["toast-shown"],$["has-column"]]),!0);dt()?W("SweetAlert2 requires document to initialize"):((r=document.createElement("div")).className=$.container,a&&gt(r,$["no-transition"]),U(r,wt),(i="string"==typeof(e=t.target)?document.querySelector(e):e).appendChild(r),a=t,(e=x()).setAttribute("role",a.toast?"alert":"dialog"),e.setAttribute("aria-live",a.toast?"polite":"assertive"),a.toast||e.setAttribute("aria-modal","true"),r=i,"rtl"===window.getComputedStyle(r).direction&&gt(C(),$.rtl),t=P(),a=yt(t,$.input),e=yt(t,$.file),n=t.querySelector(".".concat($.range," input")),o=t.querySelector(".".concat($.range," output")),i=yt(t,$.select),r=t.querySelector(".".concat($.checkbox," input")),t=yt(t,$.textarea),a.oninput=pt,e.onchange=pt,i.onchange=pt,r.onchange=pt,t.oninput=pt,n.oninput=function(t){pt(t),o.value=n.value},n.onchange=function(t){pt(t),n.nextSibling.value=n.value})},kt=function(t,e){t.jquery?xt(e,t):U(e,t.toString())},xt=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Bt=function(){if(dt())return!1;var t,e=document.createElement("div"),n={WebkitAnimation:"webkitAnimationEnd",OAnimation:"oAnimationEnd oanimationend",animation:"animationend"};for(t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&void 0!==e.style[t])return n[t];return!1}();function At(t,e,n){var o;st(t,n["show".concat((o=e).charAt(0).toUpperCase()+o.slice(1),"Button")],"inline-block"),U(t,n["".concat(e,"ButtonText")]),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]),t.className=$[e],F(t,n,"".concat(e,"Button")),gt(t,n["".concat(e,"ButtonClass")])}function Pt(t,e){var n,o,i=C();i&&(o=i,"string"==typeof(n=e.backdrop)?o.style.background=n:n||gt([document.documentElement,document.body],$["no-backdrop"]),!e.backdrop&&e.allowOutsideClick&&z('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),o=i,(n=e.position)in $?gt(o,$[n]):(z('The "position" parameter is not valid, defaulting to "center"'),gt(o,$.center)),n=i,!(o=e.grow)||"string"!=typeof o||(o="grow-".concat(o))in $&&gt(n,$[o]),F(i,e,"container"),(e=document.body.getAttribute("data-swal2-queue-step"))&&(i.setAttribute("data-queue-step",e),document.body.removeAttribute("data-swal2-queue-step")))}function Et(t,e){t.placeholder&&!e.inputPlaceholder||(t.placeholder=e.inputPlaceholder)}function Ot(t,e,n){var o,i;n.inputLabel&&(t.id=$.input,o=document.createElement("label"),i=$["input-label"],o.setAttribute("for",t.id),o.className=i,o.innerText=n.inputLabel,e.insertAdjacentElement("beforebegin",o))}var St={promise:new WeakMap,innerParams:new WeakMap,domCache:new WeakMap},Tt=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(!jt[t.input])return W('Unexpected type of input! Expected "text", "email", "password", "number", "tel", "select", "radio", "checkbox", "textarea", "file" or "url", got "'.concat(t.input,'"'));var e=qt(t.input),n=jt[t.input](e,t);it(n),setTimeout(function(){et(n)})},Dt=function(t,e){var n=tt(P(),t);if(n)for(var o in!function(t){for(var e=0;e<t.attributes.length;e++){var n=t.attributes[e].name;-1===["type","value","style"].indexOf(n)&&t.removeAttribute(n)}}(n),e)"range"===t&&"placeholder"===o||n.setAttribute(o,e[o])},It=function(t){var e=qt(t.input);t.customClass&&gt(e,t.customClass.input)},qt=function(t){t=$[t]||$.input;return yt(P(),t)},jt={};jt.text=jt.email=jt.password=jt.number=jt.tel=jt.url=function(t,e){return"string"==typeof e.inputValue||"number"==typeof e.inputValue?t.value=e.inputValue:b(e.inputValue)||z('Unexpected type of inputValue! Expected "string", "number" or "Promise", got "'.concat(r(e.inputValue),'"')),Ot(t,t,e),Et(t,e),t.type=e.input,t},jt.file=function(t,e){return Ot(t,t,e),Et(t,e),t},jt.range=function(t,e){var n=t.querySelector("input"),o=t.querySelector("output");return n.value=e.inputValue,n.type=e.input,o.value=e.inputValue,Ot(n,t,e),t},jt.select=function(t,e){var n;return t.textContent="",e.inputPlaceholder&&(n=document.createElement("option"),U(n,e.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,t.appendChild(n)),Ot(t,t,e),t},jt.radio=function(t){return t.textContent="",t},jt.checkbox=function(t,e){var n=tt(P(),"checkbox");n.value=1,n.id=$.checkbox,n.checked=Boolean(e.inputValue);n=t.querySelector("span");return U(n,e.inputPlaceholder),t},jt.textarea=function(e,t){var n,o;return e.value=t.inputValue,Et(e,t),Ot(e,e,t),"MutationObserver"in window&&(n=parseInt(window.getComputedStyle(x()).width),o=parseInt(window.getComputedStyle(x()).paddingLeft)+parseInt(window.getComputedStyle(x()).paddingRight),new MutationObserver(function(){var t=e.offsetWidth+o;x().style.width=n<t?"".concat(t,"px"):null}).observe(e,{attributes:!0,attributeFilter:["style"]})),e};function Mt(t,e){var o,i,r,n=P().querySelector("#".concat($.content));e.html?(ft(e.html,n),it(n,"block")):e.text?(n.textContent=e.text,it(n,"block")):rt(n),t=t,o=e,i=P(),t=St.innerParams.get(t),r=!t||o.input!==t.input,Tt.forEach(function(t){var e=$[t],n=yt(i,e);Dt(t,o.inputAttributes),n.className=e,r&&rt(n)}),o.input&&(r&&Lt(o),It(o)),F(P(),e,"content")}function Vt(){return C()&&C().getAttribute("data-queue-step")}function Ht(t,o){var i=O();if(!o.progressSteps||0===o.progressSteps.length)return rt(i),0;it(i),i.textContent="";var r=parseInt(void 0===o.currentProgressStep?Vt():o.currentProgressStep);r>=o.progressSteps.length&&z("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.progressSteps.forEach(function(t,e){var n,t=(n=t,t=document.createElement("li"),gt(t,$["progress-step"]),U(t,n),t);i.appendChild(t),e===r&&gt(t,$["active-progress-step"]),e!==o.progressSteps.length-1&&(t=o,e=document.createElement("li"),gt(e,$["progress-step-line"]),t.progressStepsDistance&&(e.style.width=t.progressStepsDistance),e=e,i.appendChild(e))})}function Rt(t,e){var n=j();F(n,e,"header"),Ht(0,e),function(t,e){t=St.innerParams.get(t);t&&e.icon===t.icon&&B()?Ft(B(),e):(_t(),e.icon&&(-1!==Object.keys(J).indexOf(e.icon)?(t=k(".".concat($.icon,".").concat(J[e.icon])),it(t),Wt(t,e),Ft(t,e),gt(t,e.showClass.icon)):W('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"'))))}(t,e),function(t){var e=E();if(!t.imageUrl)return rt(e);it(e,""),e.setAttribute("src",t.imageUrl),e.setAttribute("alt",t.imageAlt),ot(e,"width",t.imageWidth),ot(e,"height",t.imageHeight),e.className=$.image,F(e,t,"image")}(e),n=e,t=A(),st(t,n.title||n.titleText),n.title&&ft(n.title,t),n.titleText&&(t.innerText=n.titleText),F(t,n,"title"),n=e,e=H(),U(e,n.closeButtonHtml),F(e,n,"closeButton"),st(e,n.showCloseButton),e.setAttribute("aria-label",n.closeButtonAriaLabel)}function Nt(t,e){var n,o;o=e,n=x(),ot(n,"width",o.width),ot(n,"padding",o.padding),o.background&&(n.style.background=o.background),Qt(n,o),Pt(0,e),Rt(t,e),Mt(t,e),mt(0,e),o=e,t=M(),st(t,o.footer),o.footer&&ft(o.footer,t),F(t,o,"footer"),"function"==typeof e.didRender?e.didRender(x()):"function"==typeof e.onRender&&e.onRender(x())}function Ut(){return T()&&T().click()}var _t=function(){for(var t=n(),e=0;e<t.length;e++)rt(t[e])},Ft=function(t,e){Kt(t,e),zt(),F(t,e,"icon")},zt=function(){for(var t=x(),e=window.getComputedStyle(t).getPropertyValue("background-color"),n=t.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix"),o=0;o<n.length;o++)n[o].style.backgroundColor=e},Wt=function(t,e){t.textContent="",e.iconHtml?U(t,Yt(e.iconHtml)):"success"===e.icon?U(t,'\n <div class="swal2-success-circular-line-left"></div>\n <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>\n <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>\n <div class="swal2-success-circular-line-right"></div>\n '):"error"===e.icon?U(t,'\n <span class="swal2-x-mark">\n <span class="swal2-x-mark-line-left"></span>\n <span class="swal2-x-mark-line-right"></span>\n </span>\n '):U(t,Yt({question:"?",warning:"!",info:"i"}[e.icon]))},Kt=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n<o.length;n++)at(t,o[n],"backgroundColor",e.iconColor);at(t,".swal2-success-ring","borderColor",e.iconColor)}},Yt=function(t){return'<div class="'.concat($["icon-content"],'">').concat(t,"</div>")},Zt=[],Qt=function(t,e){t.className="".concat($.popup," ").concat(bt(t)?e.showClass.popup:""),e.toast?(gt([document.documentElement,document.body],$["toast-shown"]),gt(t,$.toast)):gt(t,$.modal),F(t,e,"popup"),"string"==typeof e.customClass&&gt(t,e.customClass),e.icon&&gt(t,$["icon-".concat(e.icon)])};function $t(t){var e=x();e||kn.fire(),e=x();var n=q(),o=D();!t&&bt(T())&&(t=T()),it(n),t&&(rt(t),o.setAttribute("data-button-to-replace",t.className)),o.parentNode.insertBefore(o,t),gt([e,n],$.loading),it(o),e.setAttribute("data-loading",!0),e.setAttribute("aria-busy",!0),e.focus()}function Jt(){return new Promise(function(t){var e=window.scrollX,n=window.scrollY;oe.restoreFocusTimeout=setTimeout(function(){oe.previousActiveElement&&oe.previousActiveElement.focus?(oe.previousActiveElement.focus(),oe.previousActiveElement=null):document.body&&document.body.focus(),t()},100),void 0!==e&&void 0!==n&&window.scrollTo(e,n)})}function Xt(){if(oe.timeout)return function(){var t=V(),e=parseInt(window.getComputedStyle(t).width);t.style.removeProperty("transition"),t.style.width="100%";var n=parseInt(window.getComputedStyle(t).width),n=parseInt(e/n*100);t.style.removeProperty("transition"),t.style.width="".concat(n,"%")}(),oe.timeout.stop()}function Gt(){if(oe.timeout){var t=oe.timeout.start();return lt(t),t}}function te(t){return Object.prototype.hasOwnProperty.call(ie,t)}function ee(t){return ae[t]}function ne(t){for(var e in t)te(o=e)||z('Unknown parameter "'.concat(o,'"')),t.toast&&(n=e,-1!==se.indexOf(n)&&z('The parameter "'.concat(n,'" is incompatible with toasts'))),ee(n=e)&&g(n,ee(n));var n,o}var oe={},ie={title:"",titleText:"",text:"",html:"",footer:"",icon:void 0,iconColor:void 0,iconHtml:void 0,toast:!1,animation:!0,showClass:{popup:"swal2-show",backdrop:"swal2-backdrop-show",icon:"swal2-icon-show"},hideClass:{popup:"swal2-hide",backdrop:"swal2-backdrop-hide",icon:"swal2-icon-hide"},customClass:void 0,target:"body",backdrop:!0,heightAuto:!0,allowOutsideClick:!0,allowEscapeKey:!0,allowEnterKey:!0,stopKeydownPropagation:!0,keydownListenerCapture:!1,showConfirmButton:!0,showDenyButton:!1,showCancelButton:!1,preConfirm:void 0,preDeny:void 0,confirmButtonText:"OK",confirmButtonAriaLabel:"",confirmButtonColor:void 0,denyButtonText:"No",denyButtonAriaLabel:"",denyButtonColor:void 0,cancelButtonText:"Cancel",cancelButtonAriaLabel:"",cancelButtonColor:void 0,buttonsStyling:!0,reverseButtons:!1,focusConfirm:!0,focusDeny:!1,focusCancel:!1,showCloseButton:!1,closeButtonHtml:"&times;",closeButtonAriaLabel:"Close this dialog",loaderHtml:"",showLoaderOnConfirm:!1,imageUrl:void 0,imageWidth:void 0,imageHeight:void 0,imageAlt:"",timer:void 0,timerProgressBar:!1,width:void 0,padding:void 0,background:void 0,input:void 0,inputPlaceholder:"",inputLabel:"",inputValue:"",inputOptions:{},inputAutoTrim:!0,inputAttributes:{},inputValidator:void 0,returnInputValueOnDeny:!1,validationMessage:void 0,grow:!1,position:"center",progressSteps:[],currentProgressStep:void 0,progressStepsDistance:void 0,onBeforeOpen:void 0,onOpen:void 0,willOpen:void 0,didOpen:void 0,onRender:void 0,didRender:void 0,onClose:void 0,onAfterClose:void 0,willClose:void 0,didClose:void 0,onDestroy:void 0,didDestroy:void 0,scrollbarPadding:!0},re=["allowEscapeKey","allowOutsideClick","background","buttonsStyling","cancelButtonAriaLabel","cancelButtonColor","cancelButtonText","closeButtonAriaLabel","closeButtonHtml","confirmButtonAriaLabel","confirmButtonColor","confirmButtonText","currentProgressStep","customClass","denyButtonAriaLabel","denyButtonColor","denyButtonText","didClose","didDestroy","footer","hideClass","html","icon","iconColor","imageAlt","imageHeight","imageUrl","imageWidth","onAfterClose","onClose","onDestroy","progressSteps","reverseButtons","showCancelButton","showCloseButton","showConfirmButton","showDenyButton","text","title","titleText","willClose"],ae={animation:'showClass" and "hideClass',onBeforeOpen:"willOpen",onOpen:"didOpen",onRender:"didRender",onClose:"willClose",onAfterClose:"didClose",onDestroy:"didDestroy"},se=["allowOutsideClick","allowEnterKey","backdrop","focusConfirm","focusDeny","focusCancel","heightAuto","keydownListenerCapture"],ce=Object.freeze({isValidParameter:te,isUpdatableParameter:function(t){return-1!==re.indexOf(t)},isDeprecatedParameter:ee,argsToParams:function(n){var o={};return"object"!==r(n[0])||w(n[0])?["title","html","icon"].forEach(function(t,e){e=n[e];"string"==typeof e||w(e)?o[t]=e:void 0!==e&&W("Unexpected type of ".concat(t,'! Expected "string" or "Element", got ').concat(r(e)))}):c(o,n[0]),o},isVisible:function(){return bt(x())},clickConfirm:Ut,clickDeny:function(){return L()&&L().click()},clickCancel:function(){return I()&&I().click()},getContainer:C,getPopup:x,getTitle:A,getContent:P,getHtmlContainer:function(){return t($["html-container"])},getImage:E,getIcon:B,getIcons:n,getInputLabel:function(){return t($["input-label"])},getCloseButton:H,getActions:q,getConfirmButton:T,getDenyButton:L,getCancelButton:I,getLoader:D,getHeader:j,getFooter:M,getTimerProgressBar:V,getFocusableElements:R,getValidationMessage:S,isLoading:function(){return x().hasAttribute("data-loading")},fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return i(this,e)},mixin:function(r){return function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(i,t);var n,o,e=(n=i,o=d(),function(){var t,e=u(n);return p(this,o?(t=u(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments))});function i(){return a(this,i),e.apply(this,arguments)}return s(i,[{key:"_main",value:function(t){return f(u(i.prototype),"_main",this).call(this,c({},r,t))}}]),i}(this)},queue:function(t){var r=this;Zt=t;function a(t,e){Zt=[],t(e)}var s=[];return new Promise(function(i){!function e(n,o){n<Zt.length?(document.body.setAttribute("data-swal2-queue-step",n),r.fire(Zt[n]).then(function(t){void 0!==t.value?(s.push(t.value),e(n+1,o)):a(i,{dismiss:t.dismiss})})):a(i,{value:s})}(0)})},getQueueStep:Vt,insertQueueStep:function(t,e){return e&&e<Zt.length?Zt.splice(e,0,t):Zt.push(t)},deleteQueueStep:function(t){void 0!==Zt[t]&&Zt.splice(t,1)},showLoading:$t,enableLoading:$t,getTimerLeft:function(){return oe.timeout&&oe.timeout.getTimerLeft()},stopTimer:Xt,resumeTimer:Gt,toggleTimer:function(){var t=oe.timeout;return t&&(t.running?Xt:Gt)()},increaseTimer:function(t){if(oe.timeout){t=oe.timeout.increase(t);return lt(t,!0),t}},isTimerRunning:function(){return oe.timeout&&oe.timeout.isRunning()}});function ue(){var t,e;St.innerParams.get(this)&&(t=St.domCache.get(this),rt(t.loader),(e=t.popup.getElementsByClassName(t.loader.getAttribute("data-button-to-replace"))).length?it(e[0],"inline-block"):bt(T())||bt(L())||bt(I())||rt(t.actions),vt([t.popup,t.actions],$.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1)}function le(){null===G.previousBodyPadding&&document.body.scrollHeight>window.innerHeight&&(G.previousBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(G.previousBodyPadding+function(){var t=document.createElement("div");t.className=$["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))}function de(){return!!window.MSInputMethodContext&&!!document.documentMode}function pe(){var t=C(),e=x();t.style.removeProperty("align-items"),e.offsetTop<0&&(t.style.alignItems="flex-start")}var fe=function(){navigator.userAgent.match(/(CriOS|FxiOS|EdgiOS|YaBrowser|UCBrowser)/i)||x().scrollHeight>window.innerHeight-44&&(C().style.paddingBottom="".concat(44,"px"))},me=function(){var e,t=C();t.ontouchstart=function(t){e=he(t)},t.ontouchmove=function(t){e&&(t.preventDefault(),t.stopPropagation())}},he=function(t){var e=t.target,n=C();return!ge(t)&&!ve(t)&&(e===n||!(ct(n)||"INPUT"===e.tagName||ct(P())&&P().contains(e)))},ge=function(t){return t.touches&&t.touches.length&&"stylus"===t.touches[0].touchType},ve=function(t){return t.touches&&1<t.touches.length},ye={swalPromiseResolve:new WeakMap};function be(t,e,n,o){n?Ae(t,o):(Jt().then(function(){return Ae(t,o)}),oe.keydownTarget.removeEventListener("keydown",oe.keydownHandler,{capture:oe.keydownListenerCapture}),oe.keydownHandlerAdded=!1),e.parentNode&&!document.body.getAttribute("data-swal2-queue-step")&&e.parentNode.removeChild(e),N()&&(null!==G.previousBodyPadding&&(document.body.style.paddingRight="".concat(G.previousBodyPadding,"px"),G.previousBodyPadding=null),_(document.body,$.iosfix)&&(e=parseInt(document.body.style.top,10),vt(document.body,$.iosfix),document.body.style.top="",document.body.scrollTop=-1*e),"undefined"!=typeof window&&de()&&window.removeEventListener("resize",pe),h(document.body.children).forEach(function(t){t.hasAttribute("data-previous-aria-hidden")?(t.setAttribute("aria-hidden",t.getAttribute("data-previous-aria-hidden")),t.removeAttribute("data-previous-aria-hidden")):t.removeAttribute("aria-hidden")})),vt([document.documentElement,document.body],[$.shown,$["height-auto"],$["no-backdrop"],$["toast-shown"],$["toast-column"]])}function we(t){var e,n,o,i=x();i&&(t=Ce(t),(e=St.innerParams.get(this))&&!_(i,e.hideClass.popup)&&(n=ye.swalPromiseResolve.get(this),vt(i,e.showClass.popup),gt(i,e.hideClass.popup),o=C(),vt(o,e.showClass.backdrop),gt(o,e.hideClass.backdrop),ke(this,i,e),n(t)))}function Ce(t){return void 0===t?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:c({isConfirmed:!1,isDenied:!1,isDismissed:!1},t)}function ke(t,e,n){var o=C(),i=Bt&&ut(e),r=n.onClose,a=n.onAfterClose,s=n.willClose,n=n.didClose;xe(e,s,r),i?Be(t,e,o,n||a):be(t,o,X(),n||a)}var xe=function(t,e,n){null!==e&&"function"==typeof e?e(t):null!==n&&"function"==typeof n&&n(t)},Be=function(t,e,n,o){oe.swalCloseEventFinishedCallback=be.bind(null,t,n,X(),o),e.addEventListener(Bt,function(t){t.target===e&&(oe.swalCloseEventFinishedCallback(),delete oe.swalCloseEventFinishedCallback)})},Ae=function(t,e){setTimeout(function(){"function"==typeof e&&e(),t._destroy()})};function Pe(t,e,n){var o=St.domCache.get(t);e.forEach(function(t){o[t].disabled=n})}function Ee(t,e){if(!t)return!1;if("radio"===t.type)for(var n=t.parentNode.parentNode.querySelectorAll("input"),o=0;o<n.length;o++)n[o].disabled=e;else t.disabled=e}var Oe=function(){function n(t,e){a(this,n),this.callback=t,this.remaining=e,this.running=!1,this.start()}return s(n,[{key:"start",value:function(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}},{key:"stop",value:function(){return this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=new Date-this.started),this.remaining}},{key:"increase",value:function(t){var e=this.running;return e&&this.stop(),this.remaining+=t,e&&this.start(),this.remaining}},{key:"getTimerLeft",value:function(){return this.running&&(this.stop(),this.start()),this.remaining}},{key:"isRunning",value:function(){return this.running}}]),n}(),Se={email:function(t,e){return/^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]{2,24}$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function Te(t){var e,n;(e=t).inputValidator||Object.keys(Se).forEach(function(t){e.input===t&&(e.inputValidator=Se[t])}),t.showLoaderOnConfirm&&!t.preConfirm&&z("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),t.animation=Y(t.animation),(n=t).target&&("string"!=typeof n.target||document.querySelector(n.target))&&("string"==typeof n.target||n.target.appendChild)||(z('Target parameter is not valid, defaulting to "body"'),n.target="body"),"string"==typeof t.title&&(t.title=t.title.split("\n").join("<br />")),Ct(t)}function Le(t){var e=C(),n=x();"function"==typeof t.willOpen?t.willOpen(n):"function"==typeof t.onBeforeOpen&&t.onBeforeOpen(n);var o=window.getComputedStyle(document.body).overflowY;He(e,n,t),setTimeout(function(){Me(e,n)},10),N()&&(Ve(e,t.scrollbarPadding,o),h(document.body.children).forEach(function(t){t===C()||function(t,e){if("function"==typeof t.contains)return t.contains(e)}(t,C())||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")),t.setAttribute("aria-hidden","true"))})),X()||oe.previousActiveElement||(oe.previousActiveElement=document.activeElement),je(n,t),vt(e,$["no-transition"])}function De(t){var e=x();t.target===e&&(t=C(),e.removeEventListener(Bt,De),t.style.overflowY="auto")}function Ie(t,e){t.closePopup({isConfirmed:!0,value:e})}function qe(t,e,n){var o=R(),i=0;if(i<o.length)return(e+=n)===o.length?e=0:-1===e&&(e=o.length-1),o[e].focus();x().focus()}var je=function(t,e){"function"==typeof e.didOpen?setTimeout(function(){return e.didOpen(t)}):"function"==typeof e.onOpen&&setTimeout(function(){return e.onOpen(t)})},Me=function(t,e){Bt&&ut(e)?(t.style.overflowY="hidden",e.addEventListener(Bt,De)):t.style.overflowY="auto"},Ve=function(t,e,n){var o;(/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream||"MacIntel"===navigator.platform&&1<navigator.maxTouchPoints)&&!_(document.body,$.iosfix)&&(o=document.body.scrollTop,document.body.style.top="".concat(-1*o,"px"),gt(document.body,$.iosfix),me(),fe()),"undefined"!=typeof window&&de()&&(pe(),window.addEventListener("resize",pe)),e&&"hidden"!==n&&le(),setTimeout(function(){t.scrollTop=0})},He=function(t,e,n){gt(t,n.showClass.backdrop),e.style.setProperty("opacity","0","important"),it(e),setTimeout(function(){gt(e,n.showClass.popup),e.style.removeProperty("opacity")},10),gt([document.documentElement,document.body],$.shown),n.heightAuto&&n.backdrop&&!n.toast&&gt([document.documentElement,document.body],$["height-auto"])},Re=function(t){return t.checked?1:0},Ne=function(t){return t.checked?t.value:null},Ue=function(t){return t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},_e=function(e,n){function o(t){return ze[n.input](i,We(t),n)}var i=P();v(n.inputOptions)||b(n.inputOptions)?($t(),y(n.inputOptions).then(function(t){e.hideLoading(),o(t)})):"object"===r(n.inputOptions)?o(n.inputOptions):W("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(n.inputOptions)))},Fe=function(e,n){var o=e.getInput();rt(o),y(n.inputValue).then(function(t){o.value="number"===n.input?parseFloat(t)||0:"".concat(t),it(o),o.focus(),e.hideLoading()}).catch(function(t){W("Error in inputValue promise: ".concat(t)),o.value="",it(o),o.focus(),e.hideLoading()})},ze={select:function(t,e,i){function o(t,e,n){var o=document.createElement("option");o.value=n,U(o,e),i.inputValue.toString()===n.toString()&&(o.selected=!0),t.appendChild(o)}var r=yt(t,$.select);e.forEach(function(t){var e,n=t[0],t=t[1];Array.isArray(t)?((e=document.createElement("optgroup")).label=n,e.disabled=!1,r.appendChild(e),t.forEach(function(t){return o(e,t[1],t[0])})):o(r,t,n)}),r.focus()},radio:function(t,e,i){var r=yt(t,$.radio);e.forEach(function(t){var e=t[0],n=t[1],o=document.createElement("input"),t=document.createElement("label");o.type="radio",o.name=$.radio,o.value=e,i.inputValue.toString()===e.toString()&&(o.checked=!0);e=document.createElement("span");U(e,n),e.className=$.label,t.appendChild(o),t.appendChild(e),r.appendChild(t)});e=r.querySelectorAll("input");e.length&&e[0].focus()}},We=function n(o){var i=[];return"undefined"!=typeof Map&&o instanceof Map?o.forEach(function(t,e){"object"===r(t)&&(t=n(t)),i.push([e,t])}):Object.keys(o).forEach(function(t){var e=o[t];"object"===r(e)&&(e=n(e)),i.push([t,e])}),i},Ke=function(t,e,n){var o=function(t,e){t=t.getInput();if(!t)return null;switch(e.input){case"checkbox":return Re(t);case"radio":return Ne(t);case"file":return Ue(t);default:return e.inputAutoTrim?t.value.trim():t.value}}(t,e);e.inputValidator?Ye(t,e,o):t.getInput().checkValidity()?("deny"===n?Ze:Qe)(t,e,o):(t.enableButtons(),t.showValidationMessage(e.validationMessage))},Ye=function(e,n,o){e.disableInput(),Promise.resolve().then(function(){return y(n.inputValidator(o,n.validationMessage))}).then(function(t){e.enableButtons(),e.enableInput(),t?e.showValidationMessage(t):Qe(e,n,o)})},Ze=function(e,t,n){t.preDeny?Promise.resolve().then(function(){return y(t.preDeny(n,t.validationMessage))}).then(function(t){!1===t?e.hideLoading():e.closePopup({isDenied:!0,value:void 0===t?n:t})}):e.closePopup({isDenied:!0,value:n})},Qe=function(e,t,n){t.showLoaderOnConfirm&&$t(),t.preConfirm?(e.resetValidationMessage(),Promise.resolve().then(function(){return y(t.preConfirm(n,t.validationMessage))}).then(function(t){bt(S())||!1===t?e.hideLoading():Ie(e,void 0===t?n:t)})):Ie(e,n)},$e=["ArrowRight","ArrowDown","Right","Down"],Je=["ArrowLeft","ArrowUp","Left","Up"],Xe=["Escape","Esc"],Ge=function(t,e,n){var o=St.innerParams.get(t);o.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?tn(t,e,o):"Tab"===e.key?en(e,o):-1!==[].concat($e,Je).indexOf(e.key)?nn(e.key):-1!==Xe.indexOf(e.key)&&on(e,o,n)},tn=function(t,e,n){e.isComposing||e.target&&t.getInput()&&e.target.outerHTML===t.getInput().outerHTML&&-1===["textarea","file"].indexOf(n.input)&&(Ut(),e.preventDefault())},en=function(t){for(var e=t.target,n=R(),o=-1,i=0;i<n.length;i++)if(e===n[i]){o=i;break}t.shiftKey?qe(0,o,-1):qe(0,o,1),t.stopPropagation(),t.preventDefault()},nn=function(t){-1!==[T(),L(),I()].indexOf(document.activeElement)&&(t=-1!==$e.indexOf(t)?"nextElementSibling":"previousElementSibling",(t=document.activeElement[t])&&t.focus())},on=function(t,e,n){Y(e.allowEscapeKey)&&(t.preventDefault(),n(Z.esc))},rn=function(e,t,n){t.popup.onclick=function(){var t=St.innerParams.get(e);t.showConfirmButton||t.showDenyButton||t.showCancelButton||t.showCloseButton||t.input||n(Z.close)}},an=!1,sn=function(e){e.popup.onmousedown=function(){e.container.onmouseup=function(t){e.container.onmouseup=void 0,t.target===e.container&&(an=!0)}}},cn=function(e){e.container.onmousedown=function(){e.popup.onmouseup=function(t){e.popup.onmouseup=void 0,t.target!==e.popup&&!e.popup.contains(t.target)||(an=!0)}}},un=function(n,o,i){o.container.onclick=function(t){var e=St.innerParams.get(n);an?an=!1:t.target===o.container&&Y(e.allowOutsideClick)&&i(Z.backdrop)}};function ln(t){var e=c({},ie.showClass,t.showClass),n=c({},ie.hideClass,t.hideClass),o=c({},ie,t);return o.showClass=e,o.hideClass=n,!1===t.animation&&(o.showClass={popup:"swal2-noanimation",backdrop:"swal2-noanimation"},o.hideClass={}),o}function dn(a,s,c){return new Promise(function(t){function e(t){a.closePopup({isDismissed:!0,dismiss:t})}var n,o,i,r;ye.swalPromiseResolve.set(a,t),s.confirmButton.onclick=function(){return e=c,(t=a).disableButtons(),void(e.input?Ke(t,e,"confirm"):Qe(t,e,!0));var t,e},s.denyButton.onclick=function(){return e=c,(t=a).disableButtons(),void(e.returnInputValueOnDeny?Ke(t,e,"deny"):Ze(t,e,!1));var t,e},s.cancelButton.onclick=function(){return t=e,a.disableButtons(),void t(Z.cancel);var t},s.closeButton.onclick=function(){return e(Z.close)},n=a,r=s,t=e,St.innerParams.get(n).toast?rn(n,r,t):(sn(r),cn(r),un(n,r,t)),o=a,r=c,i=e,(t=oe).keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1),r.toast||(t.keydownHandler=function(t){return Ge(o,t,i)},t.keydownTarget=r.keydownListenerCapture?window:x(),t.keydownListenerCapture=r.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0),(c.toast&&(c.input||c.footer||c.showCloseButton)?gt:vt)(document.body,$["toast-column"]),r=a,"select"===(t=c).input||"radio"===t.input?_e(r,t):-1!==["text","email","number","tel","textarea"].indexOf(t.input)&&(v(t.inputValue)||b(t.inputValue))&&Fe(r,t),Le(c),fn(oe,c,e),mn(s,c),setTimeout(function(){s.container.scrollTop=0})})}function pn(t){var e={popup:x(),container:C(),content:P(),actions:q(),confirmButton:T(),denyButton:L(),cancelButton:I(),loader:D(),closeButton:H(),validationMessage:S(),progressSteps:O()};return St.domCache.set(t,e),e}var fn=function(t,e,n){var o=V();rt(o),e.timer&&(t.timeout=new Oe(function(){n("timer"),delete t.timeout},e.timer),e.timerProgressBar&&(it(o),setTimeout(function(){t.timeout.running&&lt(e.timer)})))},mn=function(t,e){if(!e.toast)return Y(e.allowEnterKey)?void(hn(t,e)||qe(0,-1,1)):gn()},hn=function(t,e){return e.focusDeny&&bt(t.denyButton)?(t.denyButton.focus(),!0):e.focusCancel&&bt(t.cancelButton)?(t.cancelButton.focus(),!0):!(!e.focusConfirm||!bt(t.confirmButton))&&(t.confirmButton.focus(),!0)},gn=function(){document.activeElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};function vn(t){"function"==typeof t.didDestroy?t.didDestroy():"function"==typeof t.onDestroy&&t.onDestroy()}function yn(t){delete t.params,delete oe.keydownHandler,delete oe.keydownTarget,wn(St),wn(ye)}var bn,wn=function(t){for(var e in t)t[e]=new WeakMap},Q=Object.freeze({hideLoading:ue,disableLoading:ue,getInput:function(t){var e=St.innerParams.get(t||this);return(t=St.domCache.get(t||this))?tt(t.content,e.input):null},close:we,closePopup:we,closeModal:we,closeToast:we,enableButtons:function(){Pe(this,["confirmButton","denyButton","cancelButton"],!1)},disableButtons:function(){Pe(this,["confirmButton","denyButton","cancelButton"],!0)},enableInput:function(){return Ee(this.getInput(),!1)},disableInput:function(){return Ee(this.getInput(),!0)},showValidationMessage:function(t){var e=St.domCache.get(this),n=St.innerParams.get(this);U(e.validationMessage,t),e.validationMessage.className=$["validation-message"],n.customClass&&n.customClass.validationMessage&&gt(e.validationMessage,n.customClass.validationMessage),it(e.validationMessage),(e=this.getInput())&&(e.setAttribute("aria-invalid",!0),e.setAttribute("aria-describedBy",$["validation-message"]),et(e),gt(e,$.inputerror))},resetValidationMessage:function(){var t=St.domCache.get(this);t.validationMessage&&rt(t.validationMessage),(t=this.getInput())&&(t.removeAttribute("aria-invalid"),t.removeAttribute("aria-describedBy"),vt(t,$.inputerror))},getProgressSteps:function(){return St.domCache.get(this).progressSteps},_main:function(t){ne(t),oe.currentInstance&&oe.currentInstance._destroy(),oe.currentInstance=this;var e=ln(t);return Te(e),Object.freeze(e),oe.timeout&&(oe.timeout.stop(),delete oe.timeout),clearTimeout(oe.restoreFocusTimeout),t=pn(this),Nt(this,e),St.innerParams.set(this,e),dn(this,t,e)},update:function(e){var t=x(),n=St.innerParams.get(this);if(!t||_(t,n.hideClass.popup))return z("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");var o={};Object.keys(e).forEach(function(t){kn.isUpdatableParameter(t)?o[t]=e[t]:z('Invalid parameter to update: "'.concat(t,'". Updatable params are listed here: https://github.com/sweetalert2/sweetalert2/blob/master/src/utils/params.js\n\nIf you think this parameter should be updatable, request it here: https://github.com/sweetalert2/sweetalert2/issues/new?template=02_feature_request.md'))}),n=c({},n,o),Nt(this,n),St.innerParams.set(this,n),Object.defineProperties(this,{params:{value:c({},this.params,e),writable:!1,enumerable:!0}})},_destroy:function(){var t=St.domCache.get(this),e=St.innerParams.get(this);e&&(t.popup&&oe.swalCloseEventFinishedCallback&&(oe.swalCloseEventFinishedCallback(),delete oe.swalCloseEventFinishedCallback),oe.deferDisposalTimer&&(clearTimeout(oe.deferDisposalTimer),delete oe.deferDisposalTimer),vn(e),yn(this))}}),Cn=function(){function i(){if(a(this,i),"undefined"!=typeof window){"undefined"==typeof Promise&&W("This package requires a Promise library, please include a shim to enable it in this browser (See: https://github.com/sweetalert2/sweetalert2/wiki/Migration-from-SweetAlert-to-SweetAlert2#1-ie-support)"),bn=this;for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var o=Object.freeze(this.constructor.argsToParams(e));Object.defineProperties(this,{params:{value:o,writable:!1,enumerable:!0,configurable:!0}});o=this._main(this.params);St.promise.set(this,o)}}return s(i,[{key:"then",value:function(t){return St.promise.get(this).then(t)}},{key:"finally",value:function(t){return St.promise.get(this).finally(t)}}]),i}();c(Cn.prototype,Q),c(Cn,ce),Object.keys(Q).forEach(function(t){Cn[t]=function(){if(bn)return bn[t].apply(bn,arguments)}}),Cn.DismissReason=Z,Cn.version="10.10.1";var kn=Cn;return kn.default=kn}),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2);
2
+ "undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{flex-direction:row;align-items:center;width:auto;padding:.625em;overflow-y:hidden;background:#fff;box-shadow:0 0 .625em #d9d9d9}.swal2-popup.swal2-toast .swal2-header{flex-direction:row;padding:0}.swal2-popup.swal2-toast .swal2-title{flex-grow:1;justify-content:flex-start;margin:0 .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{position:static;width:.8em;height:.8em;line-height:.8}.swal2-popup.swal2-toast .swal2-content{justify-content:flex-start;padding:0;font-size:1em}.swal2-popup.swal2-toast .swal2-icon{width:2em;min-width:2em;height:2em;margin:0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:700}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{font-size:.25em}}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{flex-basis:auto!important;width:auto;height:auto;margin:0 .3125em;padding:0}.swal2-popup.swal2-toast .swal2-styled{margin:0 .3125em;padding:.3125em .625em;font-size:1em}.swal2-popup.swal2-toast .swal2-styled:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(100,150,200,.5)}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;transform:rotate(45deg);border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.8em;left:-.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-toast-animate-success-line-tip .75s;animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-toast-animate-success-line-long .75s;animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{-webkit-animation:swal2-toast-show .5s;animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{-webkit-animation:swal2-toast-hide .1s forwards;animation:swal2-toast-hide .1s forwards}.swal2-container{display:flex;position:fixed;z-index:1060;top:0;right:0;bottom:0;left:0;flex-direction:row;align-items:center;justify-content:center;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}.swal2-container.swal2-backdrop-show,.swal2-container.swal2-noanimation{background:rgba(0,0,0,.4)}.swal2-container.swal2-backdrop-hide{background:0 0!important}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left,.swal2-container.swal2-top-start{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-end,.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left,.swal2-container.swal2-center-start{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-end,.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left,.swal2-container.swal2-bottom-start{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-end,.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-bottom-end>:first-child,.swal2-container.swal2-bottom-left>:first-child,.swal2-container.swal2-bottom-right>:first-child,.swal2-container.swal2-bottom-start>:first-child,.swal2-container.swal2-bottom>:first-child{margin-top:auto}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-bottom-start,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-center-start,.swal2-container.swal2-grow-column.swal2-top-left,.swal2-container.swal2-grow-column.swal2-top-start{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-end,.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-end,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-end,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-no-transition{transition:none!important}.swal2-container:not(.swal2-top):not(.swal2-top-start):not(.swal2-top-end):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-start):not(.swal2-center-end):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-start):not(.swal2-bottom-end):not(.swal2-bottom-left):not(.swal2-bottom-right):not(.swal2-grow-fullscreen)>.swal2-modal{margin:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-container .swal2-modal{margin:0!important}}.swal2-popup{display:none;position:relative;box-sizing:border-box;flex-direction:column;justify-content:center;width:32em;max-width:100%;padding:1.25em;border:none;border-radius:5px;background:#fff;font-family:inherit;font-size:1rem}.swal2-popup:focus{outline:0}.swal2-popup.swal2-loading{overflow-y:hidden}.swal2-header{display:flex;flex-direction:column;align-items:center;padding:0 1.8em}.swal2-title{position:relative;max-width:100%;margin:0 0 .4em;padding:0;color:#595959;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}.swal2-actions{display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;margin:1.25em auto 0;padding:0 1.6em}.swal2-actions:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}.swal2-actions:not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}.swal2-actions:not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.2))}.swal2-loader{display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;-webkit-animation:swal2-rotate-loading 1.5s linear 0s infinite normal;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 transparent #2778c4 transparent}.swal2-styled{margin:.3125em;padding:.625em 1.1em;box-shadow:none;font-weight:500}.swal2-styled:not([disabled]){cursor:pointer}.swal2-styled.swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#2778c4;color:#fff;font-size:1.0625em}.swal2-styled.swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#d14529;color:#fff;font-size:1.0625em}.swal2-styled.swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#757575;color:#fff;font-size:1.0625em}.swal2-styled:focus{outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-styled::-moz-focus-inner{border:0}.swal2-footer{justify-content:center;margin:1.25em 0 0;padding:1em 0 0;border-top:1px solid #eee;color:#545454;font-size:1em}.swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;height:.25em;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}.swal2-timer-progress-bar{width:100%;height:.25em;background:rgba(0,0,0,.2)}.swal2-image{max-width:100%;margin:1.25em auto}.swal2-close{position:absolute;z-index:2;top:0;right:0;align-items:center;justify-content:center;width:1.2em;height:1.2em;padding:0;overflow:hidden;transition:color .1s ease-out;border:none;border-radius:5px;background:0 0;color:#ccc;font-family:serif;font-size:2.5em;line-height:1.2;cursor:pointer}.swal2-close:hover{transform:none;background:0 0;color:#f27474}.swal2-close:focus{outline:0;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}.swal2-close::-moz-focus-inner{border:0}.swal2-content{z-index:1;justify-content:center;margin:0;padding:0 1.6em;color:#545454;font-size:1.125em;font-weight:400;line-height:normal;text-align:center;word-wrap:break-word}.swal2-checkbox,.swal2-file,.swal2-input,.swal2-radio,.swal2-select,.swal2-textarea{margin:1em auto}.swal2-file,.swal2-input,.swal2-textarea{box-sizing:border-box;width:100%;transition:border-color .3s,box-shadow .3s;border:1px solid #d9d9d9;border-radius:.1875em;background:inherit;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);color:inherit;font-size:1.125em}.swal2-file.swal2-inputerror,.swal2-input.swal2-inputerror,.swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-file:focus,.swal2-input:focus,.swal2-textarea:focus{border:1px solid #b4dbed;outline:0;box-shadow:0 0 0 3px rgba(100,150,200,.5)}.swal2-file::-moz-placeholder,.swal2-input::-moz-placeholder,.swal2-textarea::-moz-placeholder{color:#ccc}.swal2-file:-ms-input-placeholder,.swal2-input:-ms-input-placeholder,.swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-file::placeholder,.swal2-input::placeholder,.swal2-textarea::placeholder{color:#ccc}.swal2-range{margin:1em auto;background:#fff}.swal2-range input{width:80%}.swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}.swal2-range input,.swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}.swal2-input{height:2.625em;padding:0 .75em}.swal2-input[type=number]{max-width:10em}.swal2-file{background:inherit;font-size:1.125em}.swal2-textarea{height:6.75em;padding:.75em}.swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:inherit;color:inherit;font-size:1.125em}.swal2-checkbox,.swal2-radio{align-items:center;justify-content:center;background:#fff;color:inherit}.swal2-checkbox label,.swal2-radio label{margin:0 .6em;font-size:1.125em}.swal2-checkbox input,.swal2-radio input{margin:0 .4em}.swal2-input-label{display:flex;justify-content:center;margin:1em auto}.swal2-validation-message{display:none;align-items:center;justify-content:center;margin:0 -2.7em;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}.swal2-validation-message::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}.swal2-icon{position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:1.25em auto 1.875em;border:.25em solid transparent;border-radius:50%;font-family:inherit;line-height:5em;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}.swal2-icon.swal2-error{border-color:#f27474;color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;flex-grow:1}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}.swal2-icon.swal2-error.swal2-icon-show{-webkit-animation:swal2-animate-error-icon .5s;animation:swal2-animate-error-icon .5s}.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark{-webkit-animation:swal2-animate-error-x-mark .5s;animation:swal2-animate-error-x-mark .5s}.swal2-icon.swal2-warning{border-color:#facea8;color:#f8bb86}.swal2-icon.swal2-info{border-color:#9de0f6;color:#3fc3ee}.swal2-icon.swal2-question{border-color:#c9dae1;color:#87adbd}.swal2-icon.swal2-success{border-color:#a5dc86;color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;transform:rotate(45deg);border-radius:50%}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{top:-.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{top:-.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}.swal2-icon.swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-.25em;left:-.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}.swal2-icon.swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip{-webkit-animation:swal2-animate-success-line-tip .75s;animation:swal2-animate-success-line-tip .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long{-webkit-animation:swal2-animate-success-line-long .75s;animation:swal2-animate-success-line-long .75s}.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right{-webkit-animation:swal2-rotate-success-circular-line 4.25s ease-in;animation:swal2-rotate-success-circular-line 4.25s ease-in}.swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:0 0 1.25em;padding:0;background:inherit;font-weight:600}.swal2-progress-steps li{display:inline-block;position:relative}.swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}.swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}[class^=swal2]{-webkit-tap-highlight-color:transparent}.swal2-show{-webkit-animation:swal2-show .3s;animation:swal2-show .3s}.swal2-hide{-webkit-animation:swal2-hide .15s forwards;animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{right:auto;left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@-webkit-keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@keyframes swal2-toast-show{0%{transform:translateY(-.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0)}}@-webkit-keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@-webkit-keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@-webkit-keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@-webkit-keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@keyframes swal2-show{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}100%{transform:scale(1)}}@-webkit-keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(.5);opacity:0}}@-webkit-keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@-webkit-keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@-webkit-keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@-webkit-keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(.4);opacity:0}50%{margin-top:1.625em;transform:scale(.4);opacity:0}80%{margin-top:-.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@-webkit-keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0);opacity:1}}@-webkit-keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes swal2-rotate-loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto!important}body.swal2-no-backdrop .swal2-container{top:auto;right:auto;bottom:auto;left:auto;max-width:calc(100% - .625em * 2);background-color:transparent!important}body.swal2-no-backdrop .swal2-container>.swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}body.swal2-no-backdrop .swal2-container.swal2-top{top:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-top-left,body.swal2-no-backdrop .swal2-container.swal2-top-start{top:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-top-end,body.swal2-no-backdrop .swal2-container.swal2-top-right{top:0;right:0}body.swal2-no-backdrop .swal2-container.swal2-center{top:50%;left:50%;transform:translate(-50%,-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-left,body.swal2-no-backdrop .swal2-container.swal2-center-start{top:50%;left:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-center-end,body.swal2-no-backdrop .swal2-container.swal2-center-right{top:50%;right:0;transform:translateY(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom{bottom:0;left:50%;transform:translateX(-50%)}body.swal2-no-backdrop .swal2-container.swal2-bottom-left,body.swal2-no-backdrop .swal2-container.swal2-bottom-start{bottom:0;left:0}body.swal2-no-backdrop .swal2-container.swal2-bottom-end,body.swal2-no-backdrop .swal2-container.swal2-bottom-right{right:0;bottom:0}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll!important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static!important}}body.swal2-toast-shown .swal2-container{background-color:transparent}body.swal2-toast-shown .swal2-container.swal2-top{top:0;right:auto;bottom:auto;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{top:0;right:0;bottom:auto;left:auto}body.swal2-toast-shown .swal2-container.swal2-top-left,body.swal2-toast-shown .swal2-container.swal2-top-start{top:0;right:auto;bottom:auto;left:0}body.swal2-toast-shown .swal2-container.swal2-center-left,body.swal2-toast-shown .swal2-container.swal2-center-start{top:50%;right:auto;bottom:auto;left:0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{top:50%;right:auto;bottom:auto;left:50%;transform:translate(-50%,-50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{top:50%;right:0;bottom:auto;left:auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-left,body.swal2-toast-shown .swal2-container.swal2-bottom-start{top:auto;right:auto;bottom:0;left:0}body.swal2-toast-shown .swal2-container.swal2-bottom{top:auto;right:auto;bottom:0;left:50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{top:auto;right:0;bottom:0;left:auto}body.swal2-toast-column .swal2-toast{flex-direction:column;align-items:stretch}body.swal2-toast-column .swal2-toast .swal2-actions{flex:1;align-self:stretch;height:2.2em;margin-top:.3125em}body.swal2-toast-column .swal2-toast .swal2-loading{justify-content:center}body.swal2-toast-column .swal2-toast .swal2-input{height:2em;margin:.3125em auto;font-size:1em}body.swal2-toast-column .swal2-toast .swal2-validation-message{font-size:1em}");
disable-comments.php CHANGED
@@ -1,9 +1,10 @@
1
  <?php
 
2
  /**
3
  * Plugin Name: Disable Comments
4
  * Plugin URI: https://wordpress.org/plugins/disable-comments/
5
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools.
6
- * Version: 1.11.0
7
  * Author: WPDeveloper
8
  * Author URI: https://wpdeveloper.net
9
  * License: GPL-3.0+
@@ -14,37 +15,62 @@
14
  * @package Disable_Comments
15
  */
16
 
17
- if ( ! defined( 'ABSPATH' ) ) {
18
  exit;
19
  }
20
 
21
- class Disable_Comments {
 
22
  const DB_VERSION = 6;
23
  private static $instance = null;
24
  private $options;
25
- private $networkactive;
26
  private $modified_types = array();
27
 
28
- public static function get_instance() {
29
- if ( is_null( self::$instance ) ) {
 
30
  self::$instance = new self;
31
  }
32
  return self::$instance;
33
  }
34
 
35
- function __construct() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  // are we network activated?
37
- $this->networkactive = ( is_multisite() && array_key_exists( plugin_basename( __FILE__ ), (array) get_site_option( 'active_sitewide_plugins' ) ) );
 
38
 
39
  // Load options.
40
- if ( $this->networkactive ) {
41
- $this->options = get_site_option( 'disable_comments_options', array() );
42
  } else {
43
- $this->options = get_option( 'disable_comments_options', array() );
44
  }
45
 
46
  // If it looks like first run, check compat.
47
- if ( empty( $this->options ) ) {
48
  $this->check_compatibility();
49
  }
50
 
@@ -52,37 +78,92 @@ class Disable_Comments {
52
  $this->check_db_upgrades();
53
 
54
  $this->init_filters();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
- private function check_compatibility() {
58
- if ( version_compare( $GLOBALS['wp_version'], '4.7', '<' ) ) {
59
- require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
60
- deactivate_plugins( __FILE__ );
61
- if ( isset( $_GET['action'] ) && ( $_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape' ) ) {
62
- exit( sprintf( __( 'Disable Comments requires WordPress version %s or greater.', 'disable-comments' ), '4.7' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  }
64
  }
65
  }
66
 
67
- private function check_db_upgrades() {
68
- $old_ver = isset( $this->options['db_version'] ) ? $this->options['db_version'] : 0;
69
- if ( $old_ver < self::DB_VERSION ) {
70
- if ( $old_ver < 2 ) {
 
71
  // upgrade options from version 0.2.1 or earlier to 0.3.
72
- $this->options['disabled_post_types'] = get_option( 'disable_comments_post_types', array() );
73
- delete_option( 'disable_comments_post_types' );
74
  }
75
- if ( $old_ver < 5 ) {
76
  // simple is beautiful - remove multiple settings in favour of one.
77
- $this->options['remove_everywhere'] = isset( $this->options['remove_admin_menu_comments'] ) ? $this->options['remove_admin_menu_comments'] : false;
78
- foreach ( array( 'remove_admin_menu_comments', 'remove_admin_bar_comments', 'remove_recent_comments', 'remove_discussion', 'remove_rc_widget' ) as $v ) {
79
- unset( $this->options[ $v ] );
80
  }
81
  }
82
 
83
- foreach ( array( 'remove_everywhere', 'extra_post_types' ) as $v ) {
84
- if ( ! isset( $this->options[ $v ] ) ) {
85
- $this->options[ $v ] = false;
86
  }
87
  }
88
 
@@ -91,23 +172,25 @@ class Disable_Comments {
91
  }
92
  }
93
 
94
- private function update_options() {
95
- if ( $this->networkactive ) {
96
- update_site_option( 'disable_comments_options', $this->options );
 
97
  } else {
98
- update_option( 'disable_comments_options', $this->options );
99
  }
100
  }
101
 
102
  /**
103
  * Get an array of disabled post type.
104
  */
105
- private function get_disabled_post_types() {
 
106
  $types = $this->options['disabled_post_types'];
107
  // Not all extra_post_types might be registered on this particular site.
108
- if ( $this->networkactive ) {
109
- foreach ( (array) $this->options['extra_post_types'] as $extra ) {
110
- if ( post_type_exists( $extra ) ) {
111
  $types[] = $extra;
112
  }
113
  }
@@ -118,146 +201,213 @@ class Disable_Comments {
118
  /**
119
  * Check whether comments have been disabled on a given post type.
120
  */
121
- private function is_post_type_disabled( $type ) {
122
- return in_array( $type, $this->get_disabled_post_types() );
 
123
  }
124
 
125
- private function init_filters() {
 
126
  // These need to happen now.
127
- if ( $this->options['remove_everywhere'] ) {
128
- add_action( 'widgets_init', array( $this, 'disable_rc_widget' ) );
129
- add_filter( 'wp_headers', array( $this, 'filter_wp_headers' ) );
130
- add_action( 'template_redirect', array( $this, 'filter_query' ), 9 ); // before redirect_canonical.
131
 
132
  // Admin bar filtering has to happen here since WP 3.6.
133
- add_action( 'template_redirect', array( $this, 'filter_admin_bar' ) );
134
- add_action( 'admin_init', array( $this, 'filter_admin_bar' ) );
135
 
136
  // Disable Comments REST API Endpoint
137
- add_filter( 'rest_endpoints', array( $this, 'filter_rest_endpoints' ) );
 
 
 
 
 
 
 
 
 
138
  }
139
 
140
  // These can happen later.
141
- add_action( 'plugins_loaded', array( $this, 'register_text_domain' ) );
142
- add_action( 'wp_loaded', array( $this, 'init_wploaded_filters' ) );
143
  // Disable "Latest comments" block in Gutenberg.
144
- add_action( 'enqueue_block_editor_assets', array( $this, 'filter_gutenberg_blocks') );
 
 
145
  }
146
 
147
- public function register_text_domain() {
148
- load_plugin_textdomain( 'disable-comments', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
 
 
 
 
 
 
149
  }
150
 
151
- public function init_wploaded_filters() {
 
 
 
 
 
 
152
  $disabled_post_types = $this->get_disabled_post_types();
153
- if ( ! empty( $disabled_post_types ) ) {
154
- foreach ( $disabled_post_types as $type ) {
155
  // we need to know what native support was for later.
156
- if ( post_type_supports( $type, 'comments' ) ) {
157
  $this->modified_types[] = $type;
158
- remove_post_type_support( $type, 'comments' );
159
- remove_post_type_support( $type, 'trackbacks' );
160
  }
161
  }
162
- add_filter( 'comments_array', array( $this, 'filter_existing_comments' ), 20, 2 );
163
- add_filter( 'comments_open', array( $this, 'filter_comment_status' ), 20, 2 );
164
- add_filter( 'pings_open', array( $this, 'filter_comment_status' ), 20, 2 );
165
- add_filter( 'get_comments_number', array( $this, 'filter_comments_number' ), 20, 2 );
166
- } elseif ( is_admin() && ! $this->options['remove_everywhere'] ) {
167
  /**
168
  * It is possible that $disabled_post_types is empty if other
169
  * plugins have disabled comments. Hence we also check for
170
  * remove_everywhere. If you still get a warning you probably
171
  * shouldn't be using this plugin.
172
  */
173
- add_action( 'all_admin_notices', array( $this, 'setup_notice' ) );
174
  }
175
 
176
  // Filters for the admin only.
177
- if ( is_admin() ) {
178
- if ( $this->networkactive ) {
179
- add_action( 'network_admin_menu', array( $this, 'settings_menu' ) );
180
- add_action( 'network_admin_menu', array( $this, 'tools_menu' ) );
181
- add_filter( 'network_admin_plugin_action_links', array( $this, 'plugin_actions_links' ), 10, 2 );
 
182
  } else {
183
- add_action( 'admin_menu', array( $this, 'settings_menu' ) );
184
- add_action( 'admin_menu', array( $this, 'tools_menu' ) );
185
- add_filter( 'plugin_action_links', array( $this, 'plugin_actions_links' ), 10, 2 );
186
- if ( is_multisite() ) { // We're on a multisite setup, but the plugin isn't network activated.
187
- register_deactivation_hook( __FILE__, array( $this, 'single_site_deactivate' ) );
188
  }
189
  }
190
-
191
- add_action( 'admin_notices', array( $this, 'discussion_notice' ) );
192
- add_filter( 'plugin_row_meta', array( $this, 'set_plugin_meta' ), 10, 2 );
193
-
194
- if ( $this->options['remove_everywhere'] ) {
195
- add_action( 'admin_menu', array( $this, 'filter_admin_menu' ), 9999 ); // do this as late as possible.
196
- add_action( 'admin_print_styles-index.php', array( $this, 'admin_css' ) );
197
- add_action( 'admin_print_styles-profile.php', array( $this, 'admin_css' ) );
198
- add_action( 'wp_dashboard_setup', array( $this, 'filter_dashboard' ) );
199
- add_filter( 'pre_option_default_pingback_flag', '__return_zero' );
200
  }
201
  }
202
  // Filters for front end only.
203
  else {
204
- add_action( 'template_redirect', array( $this, 'check_comment_template' ) );
205
 
206
- if ( $this->options['remove_everywhere'] ) {
207
- add_filter( 'feed_links_show_comments_feed', '__return_false' );
208
  }
209
  }
210
  }
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  /**
213
  * Replace the theme's comment template with a blank one.
214
  * To prevent this, define DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE
215
  * and set it to True
216
  */
217
- public function check_comment_template() {
218
- if ( is_singular() && ( $this->options['remove_everywhere'] || $this->is_post_type_disabled( get_post_type() ) ) ) {
219
- if ( ! defined( 'DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE' ) || DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE == true ) {
 
220
  // Kill the comments template.
221
- add_filter( 'comments_template', array( $this, 'dummy_comments_template' ), 20 );
222
  }
223
  // Remove comment-reply script for themes that include it indiscriminately.
224
- wp_deregister_script( 'comment-reply' );
225
  // feed_links_extra inserts a comments RSS link.
226
- remove_action( 'wp_head', 'feed_links_extra', 3 );
227
  }
228
  }
229
 
230
- public function dummy_comments_template() {
231
- return dirname( __FILE__ ) . '/includes/comments-template.php';
 
232
  }
233
 
234
 
235
  /**
236
  * Remove the X-Pingback HTTP header
237
  */
238
- public function filter_wp_headers( $headers ) {
239
- unset( $headers['X-Pingback'] );
 
240
  return $headers;
241
  }
242
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
243
  /**
244
  * Issue a 403 for all comment feed requests.
245
  */
246
- public function filter_query() {
247
- if ( is_comment_feed() ) {
248
- wp_die( __( 'Comments are closed.', 'disable-comments' ), '', array( 'response' => 403 ) );
 
249
  }
250
  }
251
 
252
  /**
253
  * Remove comment links from the admin bar.
254
  */
255
- public function filter_admin_bar() {
256
- if ( is_admin_bar_showing() ) {
 
257
  // Remove comments links from admin bar.
258
- remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 60 );
259
- if ( is_multisite() ) {
260
- add_action( 'admin_bar_menu', array( $this, 'remove_network_comment_links' ), 500 );
261
  }
262
  }
263
  }
@@ -265,18 +415,20 @@ class Disable_Comments {
265
  /**
266
  * Remove the comments endpoint for the REST API
267
  */
268
- public function filter_rest_endpoints( $endpoints ) {
269
- unset( $endpoints['comments'] );
 
270
  return $endpoints;
271
  }
272
 
273
  /**
274
  * Determines if scripts should be enqueued
275
  */
276
- public function filter_gutenberg_blocks( $hook ) {
 
277
  global $post;
278
 
279
- if ( $this->options['remove_everywhere'] || ( isset( $post->post_type ) && in_array( $post->post_type, $this->get_disabled_post_types(), true ) ) ) {
280
  return $this->disable_comments_script();
281
  }
282
  }
@@ -284,85 +436,142 @@ class Disable_Comments {
284
  /**
285
  * Enqueues scripts
286
  */
287
- public function disable_comments_script() {
288
- wp_enqueue_script( 'disable-comments-gutenberg', plugin_dir_url( __FILE__ ) . 'assets/disable-comments.js', array(), false, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  }
290
 
291
  /**
292
  * Remove comment links from the admin bar in a multisite network.
293
  */
294
- public function remove_network_comment_links( $wp_admin_bar ) {
295
- if ( $this->networkactive && is_user_logged_in() ) {
296
- foreach ( (array) $wp_admin_bar->user->blogs as $blog ) {
297
- $wp_admin_bar->remove_menu( 'blog-' . $blog->userblog_id . '-c' );
 
298
  }
299
  } else {
300
  // We have no way to know whether the plugin is active on other sites, so only remove this one.
301
- $wp_admin_bar->remove_menu( 'blog-' . get_current_blog_id() . '-c' );
302
  }
303
  }
304
 
305
- public function discussion_notice() {
 
306
  $disabled_post_types = $this->get_disabled_post_types();
307
- if ( get_current_screen()->id == 'options-discussion' && ! empty( $disabled_post_types ) ) {
308
  $names = array();
309
- foreach ( $disabled_post_types as $type ) {
310
- $names[ $type ] = get_post_type_object( $type )->labels->name;
311
  }
312
 
313
- echo '<div class="notice notice-warning"><p>' . sprintf( __( 'Note: The <em>Disable Comments</em> plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types.', 'disable-comments' ), implode( __( ', ', 'disable-comments' ), $names ) ) . '</p></div>';
314
  }
315
  }
316
 
317
  /**
318
  * Return context-aware settings page URL
319
  */
320
- private function settings_page_url() {
321
- $base = $this->networkactive ? network_admin_url( 'settings.php' ) : admin_url( 'options-general.php' );
322
- return add_query_arg( 'page', 'disable_comments_settings', $base );
 
 
 
 
 
 
 
 
 
 
 
323
  }
324
 
325
  /**
326
  * Return context-aware tools page URL
327
  */
328
- private function tools_page_url() {
329
- $base = $this->networkactive ? network_admin_url( 'settings.php' ) : admin_url( 'tools.php' );
330
- return add_query_arg( 'page', 'disable_comments_tools', $base );
 
331
  }
332
 
333
- public function setup_notice() {
334
- if ( strpos( get_current_screen()->id, 'settings_page_disable_comments_settings' ) === 0 ) {
 
 
335
  return;
336
  }
337
- $hascaps = $this->networkactive ? is_network_admin() && current_user_can( 'manage_network_plugins' ) : current_user_can( 'manage_options' );
338
- if ( $hascaps ) {
339
- echo '<div class="updated fade"><p>' . sprintf( __( 'The <em>Disable Comments</em> plugin is active, but isn\'t configured to do anything yet. Visit the <a href="%s">configuration page</a> to choose which post types to disable comments on.', 'disable-comments' ), esc_attr( $this->settings_page_url() ) ) . '</p></div>';
 
 
 
 
340
  }
341
  }
342
 
343
- public function filter_admin_menu() {
 
344
  global $pagenow;
345
 
346
- if ( $pagenow == 'comment.php' || $pagenow == 'edit-comments.php' ) {
347
- wp_die( __( 'Comments are closed.', 'disable-comments' ), '', array( 'response' => 403 ) );
348
  }
349
 
350
- remove_menu_page( 'edit-comments.php' );
351
 
352
- if ( ! $this->discussion_settings_allowed() ) {
353
- if ( $pagenow == 'options-discussion.php' ) {
354
- wp_die( __( 'Comments are closed.', 'disable-comments' ), '', array( 'response' => 403 ) );
355
  }
356
 
357
- remove_submenu_page( 'options-general.php', 'options-discussion.php' );
358
  }
359
  }
360
 
361
- public function filter_dashboard() {
362
- remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
 
363
  }
364
 
365
- public function admin_css() {
 
366
  echo '<style>
367
  #dashboard_right_now .comment-count,
368
  #dashboard_right_now .comment-mod-count,
@@ -374,34 +583,39 @@ class Disable_Comments {
374
  </style>';
375
  }
376
 
377
- public function filter_existing_comments( $comments, $post_id ) {
378
- $post = get_post( $post_id );
379
- return ( $this->options['remove_everywhere'] || $this->is_post_type_disabled( $post->post_type ) ) ? array() : $comments;
 
380
  }
381
 
382
- public function filter_comment_status( $open, $post_id ) {
383
- $post = get_post( $post_id );
384
- return ( $this->options['remove_everywhere'] || $this->is_post_type_disabled( $post->post_type ) ) ? false : $open;
 
385
  }
386
 
387
- public function filter_comments_number( $count, $post_id ) {
388
- $post = get_post( $post_id );
389
- return ( $this->options['remove_everywhere'] || $this->is_post_type_disabled( $post->post_type ) ) ? 0 : $count;
 
390
  }
391
 
392
- public function disable_rc_widget() {
393
- unregister_widget( 'WP_Widget_Recent_Comments' );
 
394
  /**
395
  * The widget has added a style action when it was constructed - which will
396
  * still fire even if we now unregister the widget... so filter that out
397
  */
398
- add_filter( 'show_recent_comments_widget_style', '__return_false' );
399
  }
400
 
401
- public function set_plugin_meta( $links, $file ) {
 
402
  static $plugin;
403
- $plugin = plugin_basename( __FILE__ );
404
- if ( $file == $plugin ) {
405
  $links[] = '<a href="https://github.com/WPDevelopers/disable-comments">GitHub</a>';
406
  }
407
  return $links;
@@ -410,55 +624,294 @@ class Disable_Comments {
410
  /**
411
  * Add links to Settings page
412
  */
413
- public function plugin_actions_links( $links, $file ) {
 
414
  static $plugin;
415
- $plugin = plugin_basename( __FILE__ );
416
- if ( $file == $plugin && current_user_can( 'manage_options' ) ) {
417
  array_unshift(
418
  $links,
419
- sprintf( '<a href="%s">%s</a>', esc_attr( $this->settings_page_url() ), __( 'Settings', 'disable-comments' ) ),
420
- sprintf( '<a href="%s">%s</a>', esc_attr( $this->tools_page_url() ), __( 'Tools', 'disable-comments' ) )
421
  );
422
  }
423
 
424
  return $links;
425
  }
426
 
427
- public function settings_menu() {
428
- $title = _x( 'Disable Comments', 'settings menu title', 'disable-comments' );
429
- if ( $this->networkactive ) {
430
- add_submenu_page( 'settings.php', $title, $title, 'manage_network_plugins', 'disable_comments_settings', array( $this, 'settings_page' ) );
 
 
 
 
 
 
 
 
 
 
431
  } else {
432
- add_submenu_page( 'options-general.php', $title, $title, 'manage_options', 'disable_comments_settings', array( $this, 'settings_page' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
433
  }
 
434
  }
435
 
436
- public function settings_page() {
437
- include dirname( __FILE__ ) . '/includes/settings-page.php';
 
 
 
 
 
438
  }
439
 
440
- public function tools_menu() {
441
- $title = __( 'Delete Comments', 'disable-comments' );
442
- if ( $this->networkactive ) {
443
- add_submenu_page( 'settings.php', $title, $title, 'manage_network_plugins', 'disable_comments_tools', array( $this, 'tools_page' ) );
444
- } else {
445
- add_submenu_page( 'tools.php', $title, $title, 'manage_options', 'disable_comments_tools', array( $this, 'tools_page' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
446
  }
 
447
  }
448
 
449
- public function tools_page() {
450
- include dirname( __FILE__ ) . '/includes/tools-page.php';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  }
452
 
453
- private function discussion_settings_allowed() {
454
- if ( defined( 'DISABLE_COMMENTS_ALLOW_DISCUSSION_SETTINGS' ) && DISABLE_COMMENTS_ALLOW_DISCUSSION_SETTINGS == true ) {
 
455
  return true;
456
  }
457
  }
458
 
459
- public function single_site_deactivate() {
 
460
  // for single sites, delete the options upon deactivation, not uninstall.
461
- delete_option( 'disable_comments_options' );
462
  }
463
  }
464
 
1
  <?php
2
+
3
  /**
4
  * Plugin Name: Disable Comments
5
  * Plugin URI: https://wordpress.org/plugins/disable-comments/
6
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools.
7
+ * Version: 2.0.0
8
  * Author: WPDeveloper
9
  * Author URI: https://wpdeveloper.net
10
  * License: GPL-3.0+
15
  * @package Disable_Comments
16
  */
17
 
18
+ if (!defined('ABSPATH')) {
19
  exit;
20
  }
21
 
22
+ class Disable_Comments
23
+ {
24
  const DB_VERSION = 6;
25
  private static $instance = null;
26
  private $options;
27
+ public $networkactive;
28
  private $modified_types = array();
29
 
30
+ public static function get_instance()
31
+ {
32
+ if (is_null(self::$instance)) {
33
  self::$instance = new self;
34
  }
35
  return self::$instance;
36
  }
37
 
38
+ function __construct()
39
+ {
40
+ define('DC_VERSION', '2.0.0');
41
+ define('DC_PLUGIN_SLUG', 'disable_comments_settings');
42
+ define('DC_PLUGIN_ROOT_PATH', dirname(__FILE__));
43
+ define('DC_PLUGIN_VIEWS_PATH', DC_PLUGIN_ROOT_PATH . '/views/');
44
+ define('DC_PLUGIN_ROOT_URI', plugins_url("/", __FILE__));
45
+ define('DC_ASSETS_URI', DC_PLUGIN_ROOT_URI . 'assets/');
46
+
47
+ register_activation_hook(__FILE__, array($this, 'activate'));
48
+ add_action('wp_loaded', array($this, 'plugin_redirect'));
49
+
50
+ // save settings
51
+ add_action('wp_ajax_disable_comments_save_settings', array($this, 'disable_comments_settings'));
52
+ add_action('wp_ajax_disable_comments_delete_comments', array($this, 'delete_comments_settings'));
53
+
54
+ add_action( 'wp_ajax_optin_wizard_action_disable_comments', array( $this, 'wizard_action' ) );
55
+
56
+ // Including cli.php
57
+ if (defined('WP_CLI') && WP_CLI) {
58
+ add_action('init', array($this, 'enable_cli'), 9999);
59
+ }
60
+
61
  // are we network activated?
62
+ $this->networkactive = (is_multisite() && array_key_exists(plugin_basename(__FILE__), (array) get_site_option('active_sitewide_plugins')));
63
+ $this->is_CLI = defined('WP_CLI') && WP_CLI;
64
 
65
  // Load options.
66
+ if ($this->networkactive) {
67
+ $this->options = get_site_option('disable_comments_options', array());
68
  } else {
69
+ $this->options = get_option('disable_comments_options', array());
70
  }
71
 
72
  // If it looks like first run, check compat.
73
+ if (empty($this->options)) {
74
  $this->check_compatibility();
75
  }
76
 
78
  $this->check_db_upgrades();
79
 
80
  $this->init_filters();
81
+
82
+ add_action( 'wp_loaded', [ $this, 'start_plugin_usage_tracking'] );
83
+ }
84
+ /**
85
+ * Enable CLI
86
+ * @since 2.0.0
87
+ */
88
+ public function enable_cli(){
89
+ require_once DC_PLUGIN_ROOT_PATH . "/includes/cli.php";
90
+ new Disable_Comment_Command($this);
91
+ }
92
+ /**
93
+ * Optin Added
94
+ *
95
+ * @since 2.0.0.
96
+ */
97
+ public function wizard_action(){
98
+ if( $this->tracker instanceof DisableComments_Plugin_Tracker ) {
99
+ $allow_tracking = get_option( 'wpins_allow_tracking', [] );
100
+ update_option('wpins_allow_tracking', array_merge( $allow_tracking, ['disable-comments' => 'disable-comments'] ));
101
+ $this->tracker->force_tracking();
102
+ $this->tracker->update_block_notice( 'disable-comments' );
103
+ }
104
  }
105
 
106
+ public function admin_notice(){
107
+ if( $this->tracker instanceof DisableComments_Plugin_Tracker ) {
108
+ if( isset( $this->setup_notice_flag ) && $this->setup_notice_flag === true ) {
109
+ return;
110
+ }
111
+ $current_screen = get_current_screen()->id;
112
+ $hascaps = $this->networkactive ? is_network_admin() && current_user_can('manage_network_plugins') : current_user_can('manage_options');
113
+ if( ! in_array( $current_screen, ['admin_page_disable_comments_settings_setup', 'settings_page_disable_comments_settings', 'settings_page_disable_comments_settings_setup', 'settings_page_disable_comments_settings-network', 'settings_page_disable_comments_settings_setup-network', 'admin_page_disable_comments_settings_setup-network' ]) && $hascaps ) {
114
+ $this->tracker->notice();
115
+ }
116
+ }
117
+ }
118
+
119
+ public function start_plugin_usage_tracking()
120
+ {
121
+ if (!class_exists('DisableComments_Plugin_Tracker')) {
122
+ include_once(DC_PLUGIN_ROOT_PATH . '/includes/class-plugin-usage-tracker.php');
123
+ }
124
+ $tracker = $this->tracker = DisableComments_Plugin_Tracker::get_instance(__FILE__, [
125
+ 'opt_in' => true,
126
+ 'goodbye_form' => true,
127
+ 'item_id' => 'b0112c9030af6ba53de4'
128
+ ]);
129
+ $tracker->set_notice_options(array(
130
+ 'notice' => __('Want to help make Disable Comments even better?', 'disable-comments-on-attachments'),
131
+ 'extra_notice' => __('We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins & themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise.', 'disable-comments-on-attachments'),
132
+ ));
133
+ $tracker->init();
134
+ }
135
+
136
+ private function check_compatibility()
137
+ {
138
+ if (version_compare($GLOBALS['wp_version'], '4.7', '<')) {
139
+ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
140
+ deactivate_plugins(__FILE__);
141
+ if (isset($_GET['action']) && ($_GET['action'] == 'activate' || $_GET['action'] == 'error_scrape')) {
142
+ exit(sprintf(__('Disable Comments requires WordPress version %s or greater.', 'disable-comments'), '4.7'));
143
  }
144
  }
145
  }
146
 
147
+ private function check_db_upgrades()
148
+ {
149
+ $old_ver = isset($this->options['db_version']) ? $this->options['db_version'] : 0;
150
+ if ($old_ver < self::DB_VERSION) {
151
+ if ($old_ver < 2) {
152
  // upgrade options from version 0.2.1 or earlier to 0.3.
153
+ $this->options['disabled_post_types'] = get_option('disable_comments_post_types', array());
154
+ delete_option('disable_comments_post_types');
155
  }
156
+ if ($old_ver < 5) {
157
  // simple is beautiful - remove multiple settings in favour of one.
158
+ $this->options['remove_everywhere'] = isset($this->options['remove_admin_menu_comments']) ? $this->options['remove_admin_menu_comments'] : false;
159
+ foreach (array('remove_admin_menu_comments', 'remove_admin_bar_comments', 'remove_recent_comments', 'remove_discussion', 'remove_rc_widget') as $v) {
160
+ unset($this->options[$v]);
161
  }
162
  }
163
 
164
+ foreach (array('remove_everywhere', 'extra_post_types') as $v) {
165
+ if (!isset($this->options[$v])) {
166
+ $this->options[$v] = false;
167
  }
168
  }
169
 
172
  }
173
  }
174
 
175
+ private function update_options()
176
+ {
177
+ if ($this->networkactive) {
178
+ update_site_option('disable_comments_options', $this->options);
179
  } else {
180
+ update_option('disable_comments_options', $this->options);
181
  }
182
  }
183
 
184
  /**
185
  * Get an array of disabled post type.
186
  */
187
+ public function get_disabled_post_types()
188
+ {
189
  $types = $this->options['disabled_post_types'];
190
  // Not all extra_post_types might be registered on this particular site.
191
+ if ($this->networkactive) {
192
+ foreach ((array) $this->options['extra_post_types'] as $extra) {
193
+ if (post_type_exists($extra)) {
194
  $types[] = $extra;
195
  }
196
  }
201
  /**
202
  * Check whether comments have been disabled on a given post type.
203
  */
204
+ private function is_post_type_disabled($type)
205
+ {
206
+ return in_array($type, $this->get_disabled_post_types());
207
  }
208
 
209
+ private function init_filters()
210
+ {
211
  // These need to happen now.
212
+ if ($this->options['remove_everywhere']) {
213
+ add_action('widgets_init', array($this, 'disable_rc_widget'));
214
+ add_filter('wp_headers', array($this, 'filter_wp_headers'));
215
+ add_action('template_redirect', array($this, 'filter_query'), 9); // before redirect_canonical.
216
 
217
  // Admin bar filtering has to happen here since WP 3.6.
218
+ add_action('template_redirect', array($this, 'filter_admin_bar'));
219
+ add_action('admin_init', array($this, 'filter_admin_bar'));
220
 
221
  // Disable Comments REST API Endpoint
222
+ add_filter('rest_endpoints', array($this, 'filter_rest_endpoints'));
223
+ }
224
+
225
+ // remove create comment via xmlrpc
226
+ if (isset($this->options['remove_xmlrpc_comments']) && intval($this->options['remove_xmlrpc_comments']) === 1) {
227
+ add_filter('xmlrpc_methods', array($this, 'disable_xmlrc_comments'));
228
+ }
229
+ // rest API Comment Block
230
+ if (isset($this->options['remove_rest_API_comments']) && intval($this->options['remove_rest_API_comments']) === 1) {
231
+ add_filter('rest_pre_insert_comment', array($this, 'disable_rest_API_comments'));
232
  }
233
 
234
  // These can happen later.
235
+ add_action('plugins_loaded', array($this, 'register_text_domain'));
236
+ add_action('wp_loaded', array($this, 'init_wploaded_filters'));
237
  // Disable "Latest comments" block in Gutenberg.
238
+ add_action('enqueue_block_editor_assets', array($this, 'filter_gutenberg_blocks'));
239
+ // settings page assets
240
+ add_action('admin_enqueue_scripts', array($this, 'settings_page_assets'));
241
  }
242
 
243
+ /**
244
+ * Do stuff upon plugin activation
245
+ *
246
+ * @return void
247
+ */
248
+ public function activate()
249
+ {
250
+ $this->update_option('dc_do_activation_redirect', true);
251
  }
252
 
253
+ public function register_text_domain()
254
+ {
255
+ load_plugin_textdomain('disable-comments', false, dirname(plugin_basename(__FILE__)) . '/languages');
256
+ }
257
+
258
+ public function init_wploaded_filters()
259
+ {
260
  $disabled_post_types = $this->get_disabled_post_types();
261
+ if (!empty($disabled_post_types)) {
262
+ foreach ($disabled_post_types as $type) {
263
  // we need to know what native support was for later.
264
+ if (post_type_supports($type, 'comments')) {
265
  $this->modified_types[] = $type;
266
+ remove_post_type_support($type, 'comments');
267
+ remove_post_type_support($type, 'trackbacks');
268
  }
269
  }
270
+ add_filter('comments_array', array($this, 'filter_existing_comments'), 20, 2);
271
+ add_filter('comments_open', array($this, 'filter_comment_status'), 20, 2);
272
+ add_filter('pings_open', array($this, 'filter_comment_status'), 20, 2);
273
+ add_filter('get_comments_number', array($this, 'filter_comments_number'), 20, 2);
274
+ } elseif (is_admin() && !$this->options['remove_everywhere']) {
275
  /**
276
  * It is possible that $disabled_post_types is empty if other
277
  * plugins have disabled comments. Hence we also check for
278
  * remove_everywhere. If you still get a warning you probably
279
  * shouldn't be using this plugin.
280
  */
281
+ add_action('all_admin_notices', array($this, 'setup_notice'));
282
  }
283
 
284
  // Filters for the admin only.
285
+ if (is_admin()) {
286
+ add_action( 'all_admin_notices', array( $this, 'admin_notice' ) );
287
+ if ($this->networkactive) {
288
+ add_action('network_admin_menu', array($this, 'settings_menu'));
289
+ add_action('network_admin_menu', array($this, 'tools_menu'));
290
+ add_filter('network_admin_plugin_action_links', array($this, 'plugin_actions_links'), 10, 2);
291
  } else {
292
+ add_action('admin_menu', array($this, 'settings_menu'));
293
+ add_action('admin_menu', array($this, 'tools_menu'));
294
+ add_filter('plugin_action_links', array($this, 'plugin_actions_links'), 10, 2);
295
+ if (is_multisite()) { // We're on a multisite setup, but the plugin isn't network activated.
296
+ register_deactivation_hook(__FILE__, array($this, 'single_site_deactivate'));
297
  }
298
  }
299
+ add_action('admin_notices', array($this, 'discussion_notice'));
300
+ add_filter('plugin_row_meta', array($this, 'set_plugin_meta'), 10, 2);
301
+
302
+ if ($this->options['remove_everywhere']) {
303
+ add_action('admin_menu', array($this, 'filter_admin_menu'), 9999); // do this as late as possible.
304
+ add_action('admin_print_styles-index.php', array($this, 'admin_css'));
305
+ add_action('admin_print_styles-profile.php', array($this, 'admin_css'));
306
+ add_action('wp_dashboard_setup', array($this, 'filter_dashboard'));
307
+ add_filter('pre_option_default_pingback_flag', '__return_zero');
 
308
  }
309
  }
310
  // Filters for front end only.
311
  else {
312
+ add_action('template_redirect', array($this, 'check_comment_template'));
313
 
314
+ if ($this->options['remove_everywhere']) {
315
+ add_filter('feed_links_show_comments_feed', '__return_false');
316
  }
317
  }
318
  }
319
 
320
+ public function get_option( $key, $default = false ){
321
+ return $this->networkactive ? get_site_option( $key, $default ) : get_option( $key, $default );
322
+ }
323
+ public function update_option( $option, $value ){
324
+ return $this->networkactive ? update_site_option( $option, $value ) : update_option( $option, $value );
325
+ }
326
+ public function delete_option( $option ){
327
+ return $this->networkactive ? delete_site_option( $option ) : delete_option( $option );
328
+ }
329
+
330
+ public function plugin_redirect()
331
+ {
332
+ if ( $this->get_option( 'dc_do_activation_redirect') ) {
333
+ $this->delete_option('dc_do_activation_redirect');
334
+ if( $this->get_option('dc_setup_screen_seen') ) {
335
+ wp_safe_redirect($this->settings_page_url());
336
+ } else {
337
+ wp_safe_redirect($this->quick_setup_url());
338
+ }
339
+ exit;
340
+ }
341
+ }
342
+
343
  /**
344
  * Replace the theme's comment template with a blank one.
345
  * To prevent this, define DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE
346
  * and set it to True
347
  */
348
+ public function check_comment_template()
349
+ {
350
+ if (is_singular() && ($this->options['remove_everywhere'] || $this->is_post_type_disabled(get_post_type()))) {
351
+ if (!defined('DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE') || DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE == true) {
352
  // Kill the comments template.
353
+ add_filter('comments_template', array($this, 'dummy_comments_template'), 20);
354
  }
355
  // Remove comment-reply script for themes that include it indiscriminately.
356
+ wp_deregister_script('comment-reply');
357
  // feed_links_extra inserts a comments RSS link.
358
+ remove_action('wp_head', 'feed_links_extra', 3);
359
  }
360
  }
361
 
362
+ public function dummy_comments_template()
363
+ {
364
+ return dirname(__FILE__) . '/views/comments.php';
365
  }
366
 
367
 
368
  /**
369
  * Remove the X-Pingback HTTP header
370
  */
371
+ public function filter_wp_headers($headers)
372
+ {
373
+ unset($headers['X-Pingback']);
374
  return $headers;
375
  }
376
 
377
+ /**
378
+ * remove method wp.newComment
379
+ */
380
+ public function disable_xmlrc_comments($methods)
381
+ {
382
+ unset($methods['wp.newComment']);
383
+ return $methods;
384
+ }
385
+
386
+ public function disable_rest_API_comments($prepared_comment, $request)
387
+ {
388
+ return;
389
+ }
390
+
391
  /**
392
  * Issue a 403 for all comment feed requests.
393
  */
394
+ public function filter_query()
395
+ {
396
+ if (is_comment_feed()) {
397
+ wp_die(__('Comments are closed.', 'disable-comments'), '', array('response' => 403));
398
  }
399
  }
400
 
401
  /**
402
  * Remove comment links from the admin bar.
403
  */
404
+ public function filter_admin_bar()
405
+ {
406
+ if (is_admin_bar_showing()) {
407
  // Remove comments links from admin bar.
408
+ remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
409
+ if (is_multisite()) {
410
+ add_action('admin_bar_menu', array($this, 'remove_network_comment_links'), 500);
411
  }
412
  }
413
  }
415
  /**
416
  * Remove the comments endpoint for the REST API
417
  */
418
+ public function filter_rest_endpoints($endpoints)
419
+ {
420
+ unset($endpoints['comments']);
421
  return $endpoints;
422
  }
423
 
424
  /**
425
  * Determines if scripts should be enqueued
426
  */
427
+ public function filter_gutenberg_blocks($hook)
428
+ {
429
  global $post;
430
 
431
+ if ($this->options['remove_everywhere'] || (isset($post->post_type) && in_array($post->post_type, $this->get_disabled_post_types(), true))) {
432
  return $this->disable_comments_script();
433
  }
434
  }
436
  /**
437
  * Enqueues scripts
438
  */
439
+ public function disable_comments_script()
440
+ {
441
+ wp_enqueue_script('disable-comments-gutenberg', plugin_dir_url(__FILE__) . 'assets/js/disable-comments.js', array(), false, true);
442
+ }
443
+
444
+ /**
445
+ * Enqueues Scripts for Settings Page
446
+ */
447
+ public function settings_page_assets($hook_suffix)
448
+ {
449
+ if (
450
+ $hook_suffix === 'settings_page_' . DC_PLUGIN_SLUG ||
451
+ $hook_suffix === 'options-general_' . DC_PLUGIN_SLUG ||
452
+ $hook_suffix === 'admin_page_' . DC_PLUGIN_SLUG . '_setup' ||
453
+ $hook_suffix === 'settings_page_' . DC_PLUGIN_SLUG . '_setup'
454
+ ) {
455
+ // css
456
+ wp_enqueue_style('sweetalert2', DC_ASSETS_URI . 'css/sweetalert2.min.css', [], false);
457
+ wp_enqueue_style('disable-comments-style', DC_ASSETS_URI . 'css/style.css', [], false);
458
+ // js
459
+ wp_enqueue_script('sweetalert2', DC_ASSETS_URI . 'js/sweetalert2.all.min.js', array('jquery'), false, true);
460
+ wp_enqueue_script('disable-comments-scripts', DC_ASSETS_URI . 'js/disable-comments-settings-scripts.js', array('jquery'), false, true);
461
+ wp_localize_script(
462
+ 'disable-comments-scripts',
463
+ 'disableCommentsObj',
464
+ array(
465
+ 'save_action' => 'disable_comments_save_settings',
466
+ 'delete_action' => 'disable_comments_delete_comments',
467
+ 'settings_URI' => $this->settings_page_url(),
468
+ '_nonce' => wp_create_nonce('disable_comments_save_settings')
469
+ )
470
+ );
471
+ } else {
472
+ // notice css
473
+ wp_enqueue_style('disable-comments-notice', DC_ASSETS_URI . 'css/notice.css', [], false);
474
+ }
475
  }
476
 
477
  /**
478
  * Remove comment links from the admin bar in a multisite network.
479
  */
480
+ public function remove_network_comment_links($wp_admin_bar)
481
+ {
482
+ if ($this->networkactive && is_user_logged_in()) {
483
+ foreach ((array) $wp_admin_bar->user->blogs as $blog) {
484
+ $wp_admin_bar->remove_menu('blog-' . $blog->userblog_id . '-c');
485
  }
486
  } else {
487
  // We have no way to know whether the plugin is active on other sites, so only remove this one.
488
+ $wp_admin_bar->remove_menu('blog-' . get_current_blog_id() . '-c');
489
  }
490
  }
491
 
492
+ public function discussion_notice()
493
+ {
494
  $disabled_post_types = $this->get_disabled_post_types();
495
+ if (get_current_screen()->id == 'options-discussion' && !empty($disabled_post_types)) {
496
  $names = array();
497
+ foreach ($disabled_post_types as $type) {
498
+ $names[$type] = get_post_type_object($type)->labels->name;
499
  }
500
 
501
+ echo '<div class="notice notice-warning"><p>' . sprintf(__('Note: The <em>Disable Comments</em> plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types.', 'disable-comments'), implode(__(', ', 'disable-comments'), $names)) . '</p></div>';
502
  }
503
  }
504
 
505
  /**
506
  * Return context-aware settings page URL
507
  */
508
+ private function settings_page_url()
509
+ {
510
+ $base = $this->networkactive ? network_admin_url('settings.php') : admin_url('options-general.php');
511
+ return add_query_arg('page', DC_PLUGIN_SLUG, $base);
512
+ }
513
+
514
+
515
+ /**
516
+ * Return context-aware settings page URL
517
+ */
518
+ private function quick_setup_url()
519
+ {
520
+ $base = $this->networkactive ? network_admin_url('settings.php') : admin_url('admin.php');
521
+ return add_query_arg('page', DC_PLUGIN_SLUG . '_setup', $base);
522
  }
523
 
524
  /**
525
  * Return context-aware tools page URL
526
  */
527
+ private function tools_page_url()
528
+ {
529
+ $base = $this->networkactive ? network_admin_url('settings.php') : admin_url('tools.php');
530
+ return add_query_arg('page', 'disable_comments_tools', $base);
531
  }
532
 
533
+
534
+ public function setup_notice()
535
+ {
536
+ if (strpos(get_current_screen()->id, 'settings_page_disable_comments_settings') === 0) {
537
  return;
538
  }
539
+ if (strpos(get_current_screen()->id, 'admin_page_disable_comments_settings_setup') === 0) {
540
+ return;
541
+ }
542
+ $hascaps = $this->networkactive ? is_network_admin() && current_user_can('manage_network_plugins') : current_user_can('manage_options');
543
+ if ($hascaps) {
544
+ $this->setup_notice_flag = true;
545
+ echo '<div class="notice dc-text__block disable__comment__alert mb30"><img height="30" src="'. DC_ASSETS_URI .'img/icon-logo.png" alt=""><p>' . sprintf(__('The <strong>Disable Comments</strong> plugin is active, but isn\'t configured to do anything yet. Visit the <a href="%s">configuration page</a> to choose which post types to disable comments on.', 'disable-comments'), esc_attr($this->quick_setup_url())) . '</p></div>';
546
  }
547
  }
548
 
549
+ public function filter_admin_menu()
550
+ {
551
  global $pagenow;
552
 
553
+ if ($pagenow == 'comment.php' || $pagenow == 'edit-comments.php') {
554
+ wp_die(__('Comments are closed.', 'disable-comments'), '', array('response' => 403));
555
  }
556
 
557
+ remove_menu_page('edit-comments.php');
558
 
559
+ if (!$this->discussion_settings_allowed()) {
560
+ if ($pagenow == 'options-discussion.php') {
561
+ wp_die(__('Comments are closed.', 'disable-comments'), '', array('response' => 403));
562
  }
563
 
564
+ remove_submenu_page('options-general.php', 'options-discussion.php');
565
  }
566
  }
567
 
568
+ public function filter_dashboard()
569
+ {
570
+ remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
571
  }
572
 
573
+ public function admin_css()
574
+ {
575
  echo '<style>
576
  #dashboard_right_now .comment-count,
577
  #dashboard_right_now .comment-mod-count,
583
  </style>';
584
  }
585
 
586
+ public function filter_existing_comments($comments, $post_id)
587
+ {
588
+ $post = get_post($post_id);
589
+ return ($this->options['remove_everywhere'] || $this->is_post_type_disabled($post->post_type) ? array() : $comments);
590
  }
591
 
592
+ public function filter_comment_status($open, $post_id)
593
+ {
594
+ $post = get_post($post_id);
595
+ return ($this->options['remove_everywhere'] || $this->is_post_type_disabled($post->post_type) ? false : $open);
596
  }
597
 
598
+ public function filter_comments_number($count, $post_id)
599
+ {
600
+ $post = get_post($post_id);
601
+ return ($this->options['remove_everywhere'] || $this->is_post_type_disabled($post->post_type) ? 0 : $count);
602
  }
603
 
604
+ public function disable_rc_widget()
605
+ {
606
+ unregister_widget('WP_Widget_Recent_Comments');
607
  /**
608
  * The widget has added a style action when it was constructed - which will
609
  * still fire even if we now unregister the widget... so filter that out
610
  */
611
+ add_filter('show_recent_comments_widget_style', '__return_false');
612
  }
613
 
614
+ public function set_plugin_meta($links, $file)
615
+ {
616
  static $plugin;
617
+ $plugin = plugin_basename(__FILE__);
618
+ if ($file == $plugin) {
619
  $links[] = '<a href="https://github.com/WPDevelopers/disable-comments">GitHub</a>';
620
  }
621
  return $links;
624
  /**
625
  * Add links to Settings page
626
  */
627
+ public function plugin_actions_links($links, $file)
628
+ {
629
  static $plugin;
630
+ $plugin = plugin_basename(__FILE__);
631
+ if ($file == $plugin && current_user_can('manage_options')) {
632
  array_unshift(
633
  $links,
634
+ sprintf('<a href="%s">%s</a>', esc_attr($this->settings_page_url()), __('Settings', 'disable-comments')),
635
+ sprintf('<a href="%s">%s</a>', esc_attr($this->tools_page_url()), __('Tools', 'disable-comments'))
636
  );
637
  }
638
 
639
  return $links;
640
  }
641
 
642
+ public function settings_menu()
643
+ {
644
+ $title = _x('Disable Comments', 'settings menu title', 'disable-comments');
645
+
646
+ $slug = DC_PLUGIN_SLUG;
647
+
648
+ $is_setup_page = isset( $_GET['page'] ) && trim( $_GET['page'] ) === 'disable_comments_settings_setup';
649
+
650
+ if( ! $this->get_option('dc_setup_screen_seen') && ! $is_setup_page ) {
651
+ $slug = DC_PLUGIN_SLUG . '_setup';
652
+ }
653
+
654
+ if ($this->networkactive) {
655
+ add_submenu_page('settings.php', $title, $title, 'manage_network_plugins', $slug, array($this, 'settings_page'));
656
  } else {
657
+ if( $slug === 'disable_comments_settings_setup' ) {
658
+ add_submenu_page('options-general.php', $title, $title, 'manage_options', $slug, array($this, 'setup_settings_page'));
659
+ } else {
660
+ add_submenu_page('options-general.php', $title, $title, 'manage_options', $slug, array($this, 'settings_page'));
661
+ }
662
+ }
663
+ add_submenu_page(
664
+ null,
665
+ $title,
666
+ $title,
667
+ 'manage_options',
668
+ DC_PLUGIN_SLUG . '_setup',
669
+ array($this, 'setup_settings_page')
670
+ );
671
+ }
672
+ public function tools_menu()
673
+ {
674
+ $title = __('Delete Comments', 'disable-comments');
675
+ $hook = '';
676
+ if ($this->networkactive) {
677
+ $hook = add_submenu_page('settings.php', $title, $title, 'manage_network_plugins', 'disable_comments_tools', array($this, 'tools_page'));
678
+ } else {
679
+ $hook = add_submenu_page('tools.php', $title, $title, 'manage_options', 'disable_comments_tools', array($this, 'tools_page'));
680
  }
681
+ add_action('load-' . $hook, array($this, 'redirectToMainSettingsPage'));
682
  }
683
 
684
+ public function redirectToMainSettingsPage()
685
+ {
686
+ if ($this->networkactive) {
687
+ wp_redirect($this->settings_page_url() . '#delete');
688
+ } else {
689
+ wp_redirect( $this->settings_page_url() . '#delete');
690
+ }
691
  }
692
 
693
+ public function get_all_comments_number()
694
+ {
695
+ global $wpdb;
696
+ return $wpdb->get_var("SELECT count(comment_id) from $wpdb->comments");
697
+ }
698
+
699
+ public function get_all_comment_types()
700
+ {
701
+ global $wpdb;
702
+ $commenttypes = array();
703
+ $commenttypes_query = $wpdb->get_results("SELECT DISTINCT comment_type FROM $wpdb->comments", ARRAY_A);
704
+ if (!empty($commenttypes_query) && is_array($commenttypes_query)) {
705
+ foreach ($commenttypes_query as $entry) {
706
+ $value = $entry['comment_type'];
707
+ if ('' === $value) {
708
+ $commenttypes['default'] = __('Default (no type)', 'disable-comments');
709
+ } else {
710
+ $commenttypes[$value] = ucwords(str_replace('_', ' ', $value)) . ' (' . $value . ')';
711
+ }
712
+ }
713
+ }
714
+ return $commenttypes;
715
+ }
716
+
717
+ public function get_all_post_types()
718
+ {
719
+ $typeargs = array('public' => true);
720
+ if ($this->networkactive) {
721
+ $typeargs['_builtin'] = true; // stick to known types for network.
722
+ }
723
+ $types = get_post_types($typeargs, 'objects');
724
+ foreach (array_keys($types) as $type) {
725
+ if (!in_array($type, $this->modified_types) && !post_type_supports($type, 'comments')) { // the type doesn't support comments anyway.
726
+ unset($types[$type]);
727
+ }
728
+ }
729
+ return $types;
730
+ }
731
+
732
+ public function tools_page()
733
+ {
734
+ return;
735
+ }
736
+
737
+ public function settings_page()
738
+ {
739
+ if( isset( $_GET['cancel'] ) && trim( $_GET['cancel'] ) === 'setup' ){
740
+ $this->update_option('dc_setup_screen_seen', true);
741
+ }
742
+ include_once DC_PLUGIN_VIEWS_PATH . 'settings.php';
743
+ }
744
+
745
+ public function setup_settings_page()
746
+ {
747
+ $this->update_option('dc_setup_screen_seen', true);
748
+ include_once DC_PLUGIN_VIEWS_PATH . 'setup-settings.php';
749
+ }
750
+
751
+ public function form_data_modify($form_data)
752
+ {
753
+ $formArray = [];
754
+ if (is_array($form_data) && count($form_data) > 0) {
755
+ foreach ($form_data as $form_item) {
756
+ if (preg_match('/[[]]/', $form_item['name'])) {
757
+ $formArray[str_replace("[]", "", $form_item['name'])][] = $form_item['value'];
758
+ } else {
759
+ $formArray[$form_item['name']] = $form_item['value'];
760
+ }
761
+ }
762
  }
763
+ return $formArray;
764
  }
765
 
766
+ public function disable_comments_settings($_args = array())
767
+ {
768
+ $nonce = (isset($_POST['nonce']) ? $_POST['nonce'] : '');
769
+ if (($this->is_CLI && !empty($_args)) || wp_verify_nonce($nonce, 'disable_comments_save_settings')) {
770
+ if (!empty($_args)) {
771
+ $formArray = wp_parse_args($_args);
772
+ } else {
773
+ $formArray = (isset($_POST['data']) ? $this->form_data_modify($_POST['data']) : []);
774
+ }
775
+ if (isset($formArray['mode'])) {
776
+ $this->options['remove_everywhere'] = (sanitize_text_field($formArray['mode']) == 'remove_everywhere');
777
+ }
778
+ $post_types = $this->get_all_post_types();
779
+
780
+ if ($this->options['remove_everywhere']) {
781
+ $disabled_post_types = array_keys($post_types);
782
+ } else {
783
+ $disabled_post_types = (isset($formArray['disabled_types']) ? array_map('sanitize_key', (array) $formArray['disabled_types']) : ( $this->is_CLI && isset( $this->options['disabled_post_types'] ) ? $this->options['disabled_post_types'] : [] ));
784
+ }
785
+
786
+ $disabled_post_types = array_intersect($disabled_post_types, array_keys($post_types));
787
+ $this->options['disabled_post_types'] = $disabled_post_types;
788
+
789
+ // Extra custom post types.
790
+ if ($this->networkactive && !empty($formArray['extra_post_types'])) {
791
+ $extra_post_types = array_filter(array_map('sanitize_key', explode(',', $formArray['extra_post_types'])));
792
+ $this->options['extra_post_types'] = array_diff($extra_post_types, array_keys($post_types)); // Make sure we don't double up builtins.
793
+ }
794
+ // xml rpc
795
+ $this->options['remove_xmlrpc_comments'] = (isset($formArray['remove_xmlrpc_comments']) ? intval($formArray['remove_xmlrpc_comments']) : ($this->is_CLI && isset($this->options['remove_xmlrpc_comments']) ? $this->options['remove_xmlrpc_comments'] : 0));
796
+ // rest api comments
797
+ $this->options['remove_rest_API_comments'] = (isset($formArray['remove_rest_API_comments']) ? intval($formArray['remove_rest_API_comments']) : ($this->is_CLI && isset($this->options['remove_rest_API_comments']) ? $this->options['remove_rest_API_comments'] : 0));
798
+
799
+ // save settings
800
+ $this->update_options();
801
+ }
802
+ if (!$this->is_CLI) {
803
+ wp_send_json_success(array('message' => __('Saved', 'disable-comments')));
804
+ wp_die();
805
+ }
806
+ }
807
+
808
+ public function delete_comments_settings($_args = array())
809
+ {
810
+ $log = '';
811
+ $deletedPostTypeNames = [];
812
+ $nonce = (isset($_POST['nonce']) ? $_POST['nonce'] : '');
813
+ if (($this->is_CLI && !empty($_args)) || wp_verify_nonce($nonce, 'disable_comments_save_settings')) {
814
+
815
+ if (!empty($_args)) {
816
+ $formArray = wp_parse_args($_args);
817
+ } else {
818
+ $formArray = $this->form_data_modify($_POST['data']);
819
+ }
820
+
821
+ $types = $this->get_all_post_types();
822
+ $commenttypes = $this->get_all_comment_types();
823
+ global $wpdb;
824
+ // comments delete
825
+ if (isset($formArray['delete_mode'])) {
826
+ if ($formArray['delete_mode'] == 'delete_everywhere') {
827
+ if ($wpdb->query("TRUNCATE $wpdb->commentmeta") != false) {
828
+ if ($wpdb->query("TRUNCATE $wpdb->comments") != false) {
829
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0");
830
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
831
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
832
+ $log = __('All comments has been deleted', 'disable-comments');
833
+ } else {
834
+ wp_send_json_error(array('message' => __('Internal error occured. Please try again later.', 'disable-comments')));
835
+ wp_die();
836
+ }
837
+ } else {
838
+ wp_send_json_error(array('message' => __('Internal error occured. Please try again later.', 'disable-comments')));
839
+ wp_die();
840
+ }
841
+ } elseif ($formArray['delete_mode'] == 'selected_delete_types') {
842
+ $delete_post_types = empty($formArray['delete_types']) ? array() : (array) $formArray['delete_types'];
843
+ $delete_post_types = array_intersect($delete_post_types, array_keys($types));
844
+
845
+ // Extra custom post types.
846
+ if ($this->networkactive && !empty($formArray['delete_extra_post_types'])) {
847
+ $delete_extra_post_types = array_filter(array_map('sanitize_key', explode(',', $formArray['delete_extra_post_types'])));
848
+ $delete_extra_post_types = array_diff($delete_extra_post_types, array_keys($types)); // Make sure we don't double up builtins.
849
+ $delete_post_types = array_merge($delete_post_types, $delete_extra_post_types);
850
+ }
851
+
852
+ if (!empty($delete_post_types)) {
853
+ // Loop through post_types and remove comments/meta and set posts comment_count to 0.
854
+ foreach ($delete_post_types as $delete_post_type) {
855
+ $wpdb->query("DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'");
856
+ $wpdb->query("DELETE comments FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'");
857
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'");
858
+
859
+ $post_type_object = get_post_type_object($delete_post_type);
860
+ $post_type_label = $post_type_object ? $post_type_object->labels->name : $delete_post_type;
861
+ $deletedPostTypeNames[] = $post_type_label;
862
+ }
863
+
864
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
865
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
866
+ $log = __('All comments has been deleted', 'disable-comments');
867
+ }
868
+ } elseif ($formArray['delete_mode'] == 'selected_delete_comment_types') {
869
+ $delete_comment_types = empty($formArray['delete_comment_types']) ? array() : (array) $formArray['delete_comment_types'];
870
+ $delete_comment_types = array_intersect($delete_comment_types, array_keys($commenttypes));
871
+
872
+ if (!empty($delete_comment_types)) {
873
+ // Loop through comment_types and remove comments/meta and set posts comment_count to 0.
874
+ foreach ($delete_comment_types as $delete_comment_type) {
875
+ $wpdb->query("DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID WHERE comments.comment_type = '$delete_comment_type'");
876
+ $wpdb->query("DELETE comments FROM $wpdb->comments comments WHERE comments.comment_type = '$delete_comment_type'");
877
+ $deletedPostTypeNames[] = $commenttypes[$delete_comment_type];
878
+ }
879
+
880
+ // Update comment_count on post_types
881
+ foreach ($types as $key => $value) {
882
+ $comment_count = $wpdb->get_var("SELECT COUNT(comments.comment_ID) FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$key'");
883
+ $wpdb->query("UPDATE $wpdb->posts SET comment_count = $comment_count WHERE post_author != 0 AND post_type = '$key'");
884
+ }
885
+
886
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
887
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
888
+
889
+ $log = __('All comments has been deleted', 'disable-comments');
890
+ }
891
+ }
892
+ }
893
+ }
894
+ // message
895
+ $message = (count($deletedPostTypeNames) == 0 ? $log . '.' : $log . ' for ' . implode(", ", $deletedPostTypeNames) . '.');
896
+ if (!$this->is_CLI) {
897
+ wp_send_json_success(array('message' => $message));
898
+ wp_die();
899
+ } else {
900
+ return $log;
901
+ }
902
  }
903
 
904
+ private function discussion_settings_allowed()
905
+ {
906
+ if (defined('DISABLE_COMMENTS_ALLOW_DISCUSSION_SETTINGS') && DISABLE_COMMENTS_ALLOW_DISCUSSION_SETTINGS == true) {
907
  return true;
908
  }
909
  }
910
 
911
+ public function single_site_deactivate()
912
+ {
913
  // for single sites, delete the options upon deactivation, not uninstall.
914
+ delete_option('disable_comments_options');
915
  }
916
  }
917
 
includes/class-plugin-usage-tracker.php ADDED
@@ -0,0 +1,899 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * DisableComments_Plugin_Tracker
4
+ * This class is responsible for data sending to insights.
5
+ * @version 3.0.0
6
+ */
7
+
8
+ /**
9
+ * Exit if accessed directly
10
+ */
11
+ if ( ! defined( 'ABSPATH' ) ) {
12
+ exit;
13
+ }
14
+
15
+ /**
16
+ * Main SDK for DisableComments_Plugin_Tracker.
17
+ */
18
+ if( ! class_exists('DisableComments_Plugin_Tracker') ) :
19
+ class DisableComments_Plugin_Tracker {
20
+ /**
21
+ * WP Insights Version
22
+ */
23
+ const WPINS_VERSION = '3.0.0';
24
+ /**
25
+ * API URL
26
+ */
27
+ const API_URL = 'https://us-east1-wpinsight-saas.cloudfunctions.net/task-generator';
28
+ /**
29
+ * Installed Plugin File
30
+ *
31
+ * @var string
32
+ */
33
+ private $plugin_file = null;
34
+ /**
35
+ * Installed Plugin Name
36
+ *
37
+ * @var string
38
+ */
39
+ private $plugin_name = null;
40
+ /**
41
+ * How often the event should subsequently
42
+ * @var string
43
+ */
44
+ public $recurrence = 'daily';
45
+ private $event_hook = null;
46
+ /**
47
+ * Instace of DisableComments_Plugin_Tracker
48
+ * @var DisableComments_Plugin_Tracker
49
+ */
50
+ private static $_instance = null;
51
+ /**
52
+ * Get Instance of DisableComments_Plugin_Tracker
53
+ * @return DisableComments_Plugin_Tracker
54
+ */
55
+ public static function get_instance( $plugin_file, $args = [] ){
56
+ if( is_null( static::$_instance ) ) {
57
+ static::$_instance = new static( $plugin_file, $args );
58
+ }
59
+ return static::$_instance;
60
+ }
61
+ /**
62
+ * Automatically Invoked when initialized.
63
+ *
64
+ * @param array $args
65
+ */
66
+ public function __construct( $plugin_file, $args = [] ){
67
+ $this->plugin_file = $plugin_file;
68
+ $this->plugin_name = basename( $this->plugin_file, '.php' );
69
+ $this->disabled_wp_cron = defined('DISABLE_WP_CRON') && DISABLE_WP_CRON == true;
70
+ $this->enable_self_cron = $this->disabled_wp_cron == true ? true : false;
71
+
72
+ $this->event_hook = 'put_do_weekly_action';
73
+
74
+ $this->require_optin = isset( $args['opt_in'] ) ? $args['opt_in'] : true;
75
+ $this->include_goodbye_form = isset( $args['goodbye_form'] ) ? $args['goodbye_form'] : true;
76
+ $this->marketing = isset( $args['email_marketing'] ) ? $args['email_marketing'] : true;
77
+ $this->options = isset( $args['options'] ) ? $args['options'] : [];
78
+ $this->item_id = isset( $args['item_id'] ) ? $args['item_id'] : false;
79
+ /**
80
+ * Activation Hook
81
+ */
82
+ register_activation_hook( $this->plugin_file, array( $this, 'activate_this_plugin' ) );
83
+ /**
84
+ * Deactivation Hook
85
+ */
86
+ register_deactivation_hook( $this->plugin_file, array( $this, 'deactivate_this_plugin' ) );
87
+ }
88
+ /**
89
+ * When user agreed to opt-in tracking schedule is enabled.
90
+ * @since 3.0.0
91
+ */
92
+ public function schedule_tracking() {
93
+ if( $this->disabled_wp_cron ) {
94
+ return;
95
+ }
96
+ if ( ! wp_next_scheduled( $this->event_hook ) ) {
97
+ wp_schedule_event( time(), $this->recurrence, $this->event_hook );
98
+ }
99
+ }
100
+ /**
101
+ * Add the schedule event if the plugin is tracked.
102
+ *
103
+ * @return void
104
+ */
105
+ public function activate_this_plugin(){
106
+ $allow_tracking = $this->is_tracking_allowed();
107
+ if( ! $allow_tracking ) {
108
+ return;
109
+ }
110
+ $this->schedule_tracking();
111
+ }
112
+ /**
113
+ * Remove the schedule event when plugin is deactivated and send the deactivated reason to inishghts if user submitted.
114
+ * @since 3.0.0
115
+ */
116
+ public function deactivate_this_plugin() {
117
+ /**
118
+ * Check tracking is allowed or not.
119
+ */
120
+ $allow_tracking = $this->is_tracking_allowed();
121
+ if( ! $allow_tracking ) {
122
+ return;
123
+ }
124
+ $body = $this->get_data();
125
+ $body['status'] = 'Deactivated';
126
+ $body['deactivated_date'] = time();
127
+
128
+ // Check deactivation reason and add for insights data.
129
+ if( false !== get_option( 'wpins_deactivation_reason_' . $this->plugin_name ) ) {
130
+ $body['deactivation_reason'] = get_option( 'wpins_deactivation_reason_' . $this->plugin_name );
131
+ }
132
+ if( false !== get_option( 'wpins_deactivation_details_' . $this->plugin_name ) ) {
133
+ $body['deactivation_details'] = get_option( 'wpins_deactivation_details_' . $this->plugin_name );
134
+ }
135
+
136
+ $this->send_data( $body );
137
+ delete_option( 'wpins_deactivation_reason_' . $this->plugin_name );
138
+ delete_option( 'wpins_deactivation_details_' . $this->plugin_name );
139
+ /**
140
+ * Clear the event schedule.
141
+ */
142
+ if( ! $this->disabled_wp_cron ) {
143
+ wp_clear_scheduled_hook( $this->event_hook );
144
+ }
145
+ }
146
+ /**
147
+ * Initial Method to Hook Everything.
148
+ * @return void
149
+ */
150
+ public function init(){
151
+ $this->clicked();
152
+ add_action( $this->event_hook, array( $this, 'force_tracking' ) );
153
+ // For Test
154
+ // add_action( 'admin_init', array( $this, 'force_tracking' ) );
155
+ add_action( 'disable_comments_notice', array( $this, 'notice' ) );
156
+ /**
157
+ * Deactivation Reason Form and Submit Data to Insights.
158
+ */
159
+ add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array( $this, 'deactivate_action_links' ) );
160
+ add_action( 'admin_footer-plugins.php', array( $this, 'deactivate_reasons_form' ) );
161
+ add_action( 'wp_ajax_deactivation_form_' . esc_attr( $this->plugin_name ), array( $this, 'deactivate_reasons_form_submit' ) );
162
+ }
163
+ /**
164
+ * For Redirecting Current Page without Arguments!
165
+ *
166
+ * @return void
167
+ */
168
+ private function redirect_to(){
169
+ $request_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
170
+ $query_string = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY );
171
+ parse_str( $query_string, $current_url );
172
+
173
+ $unset_array = array( 'dismiss', 'plugin', '_wpnonce', 'later', 'plugin_action', 'marketing_optin' );
174
+
175
+ foreach( $unset_array as $value ) {
176
+ if( isset( $current_url[ $value ] ) ) {
177
+ unset( $current_url[ $value ] );
178
+ }
179
+ }
180
+
181
+ $current_url = http_build_query($current_url);
182
+ $redirect_url = $request_uri . '?' . $current_url;
183
+ return $redirect_url;
184
+ }
185
+ /**
186
+ * This method forcing the do_tracking method to execute instant.
187
+ * @return void
188
+ */
189
+ public function force_tracking(){
190
+ $this->do_tracking( true );
191
+ }
192
+ /**
193
+ * This method is responsible for all the magic from the front of the plugin.
194
+ * @since 3.0.0
195
+ * @param $force Force tracking if it's not the correct time to track/
196
+ */
197
+ public function do_tracking( $force = false ) {
198
+ /**
199
+ * Check URL is set or not.
200
+ */
201
+ if ( empty( self::API_URL ) ) {
202
+ return;
203
+ }
204
+ /**
205
+ * Check is tracking allowed or not.
206
+ */
207
+ if( ! $this->is_tracking_allowed() ) {
208
+ return;
209
+ }
210
+ /**
211
+ * Check is this the correct time to track or not.
212
+ * or Force to track.
213
+ */
214
+ if( ! $this->is_time_to_track() && ! $force ) {
215
+ return;
216
+ }
217
+ /**
218
+ * Get All Data.
219
+ */
220
+ $body = $this->get_data();
221
+ /**
222
+ * Send all data.
223
+ */
224
+ return $this->send_data( $body );
225
+ }
226
+ /**
227
+ * Is tracking allowed?
228
+ * @since 1.0.0
229
+ */
230
+ private function is_tracking_allowed() {
231
+ // First, check if the user has changed their mind and opted out of tracking
232
+ if( $this->has_user_opted_out() ) {
233
+ $this->set_is_tracking_allowed( false, $this->plugin_name );
234
+ return false;
235
+ }
236
+ // The wpins_allow_tracking option is an array of plugins that are being tracked
237
+ $allow_tracking = get_option( 'wpins_allow_tracking' );
238
+ // If this plugin is in the array, then tracking is allowed
239
+ if( isset( $allow_tracking[$this->plugin_name] ) ) {
240
+ return true;
241
+ }
242
+ return false;
243
+ }
244
+ /**
245
+ * Set a flag in DB If tracking is allowed.
246
+ *
247
+ * @since 3.0.0
248
+ * @param $is_allowed Boolean true if is allowed.
249
+ */
250
+ protected function set_is_tracking_allowed( $is_allowed, $plugin = null ) {
251
+ if( empty( $plugin ) ) {
252
+ $plugin = $this->plugin_name;
253
+ }
254
+ /**
255
+ * Get All Tracked Plugin List using this Tracker.
256
+ */
257
+ $allow_tracking = get_option( 'wpins_allow_tracking' );
258
+ /**
259
+ * Check user is opted out for tracking or not.
260
+ */
261
+ if( $this->has_user_opted_out() ) {
262
+ if( isset( $allow_tracking[$plugin] ) ) {
263
+ unset( $allow_tracking[$plugin] );
264
+ }
265
+ } else if( $is_allowed || ! $this->require_optin ) {
266
+ /**
267
+ * If user has agreed to allow tracking
268
+ */
269
+ if( empty( $allow_tracking ) || ! is_array( $allow_tracking ) ) {
270
+ $allow_tracking = array( $plugin => $plugin );
271
+ } else {
272
+ $allow_tracking[$plugin] = $plugin;
273
+ }
274
+ } else {
275
+ if( isset( $allow_tracking[$plugin] ) ) {
276
+ unset( $allow_tracking[$plugin] );
277
+ }
278
+ }
279
+ update_option( 'wpins_allow_tracking', $allow_tracking );
280
+ }
281
+
282
+ /**
283
+ * Check the user has opted out or not.
284
+ *
285
+ * @since 3.0.0
286
+ * @return Boolean
287
+ */
288
+ protected function has_user_opted_out() {
289
+ if( ! empty( $this->options ) ) {
290
+ foreach( $this->options as $option_name ) {
291
+ $options = get_option( $option_name );
292
+ if( ! empty( $options['wpins_opt_out'] ) ) {
293
+ return true;
294
+ }
295
+ }
296
+ }
297
+ return false;
298
+ }
299
+ /**
300
+ * Check if it's time to track
301
+ *
302
+ * @since 3.0.0
303
+ */
304
+ public function is_time_to_track() {
305
+ $track_times = get_option( 'wpins_last_track_time', array() );
306
+ return ! isset( $track_times[$this->plugin_name] ) ? true :
307
+ ( ( isset( $track_times[$this->plugin_name] ) && $track_times[$this->plugin_name] ) < strtotime( '-1 day' ) ? true : false );
308
+ }
309
+ /**
310
+ * Set tracking time.
311
+ *
312
+ * @since 3.0.0
313
+ */
314
+ public function set_track_time() {
315
+ $track_times = get_option( 'wpins_last_track_time', array() );
316
+ $track_times[ $this->plugin_name ] = time();
317
+ update_option( 'wpins_last_track_time', $track_times );
318
+ }
319
+ /**
320
+ * This method is responsible for collecting all data.
321
+ *
322
+ * @since 3.0.0
323
+ */
324
+ public function get_data() {
325
+ $body = array(
326
+ 'plugin_slug' => sanitize_text_field( $this->plugin_name ),
327
+ 'url' => get_bloginfo( 'url' ),
328
+ 'site_name' => get_bloginfo( 'name' ),
329
+ 'site_version' => get_bloginfo( 'version' ),
330
+ 'site_language' => get_bloginfo( 'language' ),
331
+ 'charset' => get_bloginfo( 'charset' ),
332
+ 'wpins_version' => self::WPINS_VERSION,
333
+ 'php_version' => phpversion(),
334
+ 'multisite' => is_multisite(),
335
+ 'file_location' => __FILE__
336
+ );
337
+
338
+ // Collect the email if the correct option has been set
339
+ if( $this->marketing ) {
340
+ if( ! function_exists( 'wp_get_current_user' ) ) {
341
+ include ABSPATH . 'wp-includes/pluggable.php';
342
+ }
343
+ $current_user = wp_get_current_user();
344
+ $email = $current_user->user_email;
345
+ $body['email'] = $email;
346
+ }
347
+ $body['marketing_method'] = $this->marketing;
348
+ $body['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
349
+
350
+ /**
351
+ * Collect all active and inactive plugins
352
+ */
353
+ if( ! function_exists( 'get_plugins' ) ) {
354
+ include ABSPATH . '/wp-admin/includes/plugin.php';
355
+ }
356
+ $plugins = array_keys( get_plugins() );
357
+ $active_plugins = is_network_admin() ? array_keys( get_site_option( 'active_sitewide_plugins', array() ) ) : get_option( 'active_plugins', array() );
358
+ foreach ( $plugins as $key => $plugin ) {
359
+ if ( in_array( $plugin, $active_plugins ) ) {
360
+ unset( $plugins[$key] );
361
+ }
362
+ }
363
+ $body['active_plugins'] = $active_plugins;
364
+ $body['inactive_plugins'] = $plugins;
365
+
366
+ /**
367
+ * Text Direction.
368
+ */
369
+ $body['text_direction'] = ( function_exists( 'is_rtl' ) ? ( is_rtl() ? 'RTL' : 'LTR' ) : 'NOT SET' );
370
+ /**
371
+ * Get Our Plugin Data.
372
+ * @since 3.0.0
373
+ */
374
+ $plugin = $this->plugin_data();
375
+ if( empty( $plugin ) ) {
376
+ $body['message'] .= __( 'We can\'t detect any plugin information. This is most probably because you have not included the code in the plugin main file.', 'plugin-usage-tracker' );
377
+ $body['status'] = 'NOT FOUND';
378
+ } else {
379
+ if( isset( $plugin['Name'] ) ) {
380
+ $body['plugin'] = sanitize_text_field( $plugin['Name'] );
381
+ }
382
+ if( isset( $plugin['Version'] ) ) {
383
+ $body['version'] = sanitize_text_field( $plugin['Version'] );
384
+ }
385
+ $body['status'] = 'Active';
386
+ }
387
+
388
+ /**
389
+ * Get our plugin options
390
+ * @since 1.0.0
391
+ */
392
+ // $options = $this->options;
393
+ // $plugin_options = array();
394
+ // if( ! empty( $options ) && is_array( $options ) ) {
395
+ // foreach( $options as $option ) {
396
+ // $fields = get_option( $option );
397
+ // // Check for permission to send this option
398
+ // if( isset( $fields['wpins_registered_setting'] ) ) {
399
+ // foreach( $fields as $key=>$value ) {
400
+ // $plugin_options[$key] = $value;
401
+ // }
402
+ // }
403
+ // }
404
+ // }
405
+ // $body['plugin_options'] = $this->options; // Returns array
406
+ // $body['plugin_options_fields'] = $plugin_options; // Returns object
407
+
408
+ /**
409
+ * Get active theme name and version
410
+ * @since 3.0.0
411
+ */
412
+ $theme = wp_get_theme();
413
+ if( $theme->Name ) {
414
+ $body['theme'] = sanitize_text_field( $theme->Name );
415
+ }
416
+ if( $theme->Version ) {
417
+ $body['theme_version'] = sanitize_text_field( $theme->Version );
418
+ }
419
+ return $body;
420
+ }
421
+
422
+ /**
423
+ * Collect plugin data,
424
+ * Retrieve current plugin information
425
+ *
426
+ * @since 3.0.0
427
+ */
428
+ public function plugin_data() {
429
+ if( ! function_exists( 'get_plugin_data' ) ) {
430
+ include ABSPATH . '/wp-admin/includes/plugin.php';
431
+ }
432
+ $plugin = get_plugin_data( $this->plugin_file );
433
+ return $plugin;
434
+ }
435
+ /**
436
+ * Send the data to insights.
437
+ * @since 3.0.0
438
+ */
439
+ public function send_data( $body ) {
440
+ /**
441
+ * Get SITE ID
442
+ */
443
+ $site_id_key = "wpins_{$this->plugin_name}_site_id";
444
+ $site_id = get_option( $site_id_key, false );
445
+ $failed_data = [];
446
+ /**
447
+ * Send Initial Data to API
448
+ */
449
+ if( $site_id == false && $this->item_id !== false ) {
450
+ if( isset( $_SERVER['REMOTE_ADDR'] ) && ! empty( $_SERVER['REMOTE_ADDR'] && $_SERVER['REMOTE_ADDR'] != '127.0.0.1' ) ) {
451
+ $country_request = wp_remote_get( 'http://ip-api.com/json/'. $_SERVER['REMOTE_ADDR'] .'?fields=country');
452
+ if( ! is_wp_error( $country_request ) && $country_request['response']['code'] == 200 ) {
453
+ $ip_data = json_decode( $country_request["body"] );
454
+ $body['country'] = isset( $ip_data->country ) ? $ip_data->country : 'NOT SET';
455
+ }
456
+ }
457
+
458
+ $body['plugin_slug'] = $this->plugin_name;
459
+ $body['url'] = get_bloginfo( 'url' );
460
+ $body['item_id'] = $this->item_id;
461
+
462
+ $request = $this->remote_post( $body );
463
+ if( ! is_wp_error( $request ) && $request['response']['code'] == 200 ) {
464
+ $retrieved_body = json_decode( wp_remote_retrieve_body( $request ), true );
465
+ if( is_array( $retrieved_body ) && isset( $retrieved_body['siteId'] ) ) {
466
+ update_option( $site_id_key, $retrieved_body['siteId'] );
467
+ update_option( "wpins_{$this->plugin_name}_{$retrieved_body['siteId']}", $body );
468
+ }
469
+ } else {
470
+ $failed_data = $body;
471
+ }
472
+ }
473
+
474
+ $site_id_data_key = "wpins_{$this->plugin_name}_{$site_id}";
475
+ $site_id_data_failed_key = "wpins_{$this->plugin_name}_{$site_id}_send_failed";
476
+
477
+ if( $site_id != false ) {
478
+ $old_sent_data = get_option( $site_id_data_key, [] );
479
+ $diff_data = $this->diff( $body, $old_sent_data );
480
+ $failed_data = get_option( $site_id_data_failed_key, [] );
481
+ if( ! empty( $failed_data ) && $diff_data != $failed_data ) {
482
+ $failed_data = array_merge( $failed_data, $diff_data );
483
+ }
484
+ }
485
+
486
+ if( ! empty( $failed_data ) && $site_id != false ) {
487
+ $failed_data['plugin_slug'] = $this->plugin_name;
488
+ $failed_data['url'] = get_bloginfo( 'url' );
489
+ $failed_data['site_id'] = $site_id;
490
+
491
+ $request = $this->remote_post( $failed_data );
492
+ if( ! is_wp_error( $request ) ) {
493
+ delete_option( $site_id_data_failed_key );
494
+ $replaced_data = array_merge( $old_sent_data, $failed_data );
495
+ update_option( $site_id_data_key, $replaced_data );
496
+ }
497
+ }
498
+
499
+ if( ! empty( $diff_data ) && $site_id != false && empty( $failed_data ) ) {
500
+ $diff_data['plugin_slug'] = $this->plugin_name;
501
+ $diff_data['url'] = get_bloginfo( 'url' );
502
+ $diff_data['site_id'] = $site_id;
503
+
504
+ $request = $this->remote_post( $diff_data );
505
+ if( is_wp_error( $request ) ) {
506
+ update_option( $site_id_data_failed_key, $diff_data );
507
+ } else {
508
+ $replaced_data = array_merge( $old_sent_data, $diff_data );
509
+ update_option( $site_id_data_key, $replaced_data );
510
+ }
511
+ }
512
+
513
+ $this->set_track_time();
514
+
515
+ if( isset( $request ) && is_wp_error( $request ) ) {
516
+ return $request;
517
+ }
518
+
519
+ if( isset( $request ) ) {
520
+ return true;
521
+ }
522
+ return false;
523
+ }
524
+ /**
525
+ * WP_REMOTE_POST method responsible for send data to the API_URL
526
+ *
527
+ * @param array $data
528
+ * @param array $args
529
+ * @return void
530
+ */
531
+ protected function remote_post( $data = array(), $args = array() ){
532
+ if( empty( $data ) ) {
533
+ return;
534
+ }
535
+
536
+ $args = wp_parse_args( $args, array(
537
+ 'method' => 'POST',
538
+ 'timeout' => 30,
539
+ 'redirection' => 5,
540
+ 'httpversion' => '1.1',
541
+ 'blocking' => true,
542
+ 'body' => $data,
543
+ 'user-agent' => 'PUT/1.0.0; ' . get_bloginfo( 'url' )
544
+ ));
545
+
546
+ $request = wp_remote_post( esc_url( self::API_URL ), $args );
547
+ if( is_wp_error( $request ) || ( isset( $request['response'], $request['response']['code'] ) && $request['response']['code'] != 200 ) ) {
548
+ return new WP_Error( 500, 'Something went wrong.' );
549
+ }
550
+ return $request;
551
+ }
552
+ /**
553
+ * Difference between old and new data
554
+ *
555
+ * @param array $new_data
556
+ * @param array $old_data
557
+ * @return void
558
+ */
559
+ protected function diff( $new_data, $old_data ){
560
+ $data = [];
561
+ if( ! empty( $new_data ) ) {
562
+ foreach( $new_data as $key => $value ) {
563
+ if( isset( $old_data[ $key ] ) ) {
564
+ if( $old_data[ $key ] == $value ) {
565
+ continue;
566
+ }
567
+ }
568
+ $data[ $key ] = $value;
569
+ }
570
+ }
571
+ return $data;
572
+ }
573
+ /**
574
+ * Display the admin notice to users to allow them to opt in
575
+ *
576
+ * @since 3.0.0
577
+ */
578
+ public function notice() {
579
+ /**
580
+ * Return if notice is not set.
581
+ */
582
+ if( ! isset( $this->notice_options['notice'] ) ) {
583
+ return;
584
+ }
585
+ /**
586
+ * Check is allowed or blocked for notice.
587
+ */
588
+ $block_notice = get_option( 'wpins_block_notice' );
589
+ if( isset( $block_notice[$this->plugin_name] ) ) {
590
+ return;
591
+ }
592
+ if ( ! current_user_can( 'manage_options' ) ) {
593
+ return;
594
+ }
595
+
596
+ $url_yes = add_query_arg( [
597
+ 'plugin' => $this->plugin_name,
598
+ 'plugin_action' => 'yes',
599
+ ] );
600
+ $url_no = add_query_arg( array(
601
+ 'plugin' => $this->plugin_name,
602
+ 'plugin_action' => 'no'
603
+ ) );
604
+
605
+ // Decide on notice text
606
+ $notice_text = $this->notice_options['notice'] . ' <a href="#" class="wpinsights-'. $this->plugin_name .'-collect">'. $this->notice_options['consent_button_text'] .'</a>';
607
+ $extra_notice_text = $this->notice_options['extra_notice'];
608
+
609
+ $output = '';
610
+ $output .= '<div class="notice dc-text__block disable__comment__alert mb30">';
611
+ $output .= '<div class="alert__content">';
612
+ $output .= '<img src="'. DC_ASSETS_URI .'img/icon-logo.png" alt="">';
613
+ $output .= '<p>'. $notice_text .'</p>';
614
+ $output .= '<div class="wpinsights-data" style="display: none;">';
615
+ $output .= '<p>'. $extra_notice_text .'</p>';
616
+ $output .= '</div>';
617
+ $output .= '</div>';
618
+
619
+ $output .= '<div class="button__group">';
620
+ $output .= '<a href="'. esc_url( $url_yes ) .'" class="button button--sm button__success">'. $this->notice_options['yes'] .'</a>&nbsp;';
621
+ $output .= '<a href="'. esc_url( $url_no ) .'" class="button button--sm">'. $this->notice_options['no'] .'</a>';
622
+ $output .= '</div>';
623
+ $output .= "<script type='text/javascript'>jQuery('.wpinsights-". $this->plugin_name ."-collect').on('click', function(e) {e.preventDefault();jQuery('.wpinsights-data').slideToggle('fast');});</script>";
624
+ $output .= '</div>';
625
+
626
+ echo $output;
627
+ }
628
+ /**
629
+ * Set all notice options to customized notice.
630
+ *
631
+ * @since 3.0.0
632
+ * @param array $options
633
+ * @return void
634
+ */
635
+ public function set_notice_options( $options = [] ){
636
+ $default_options = [
637
+ 'consent_button_text' => __( 'What we collect.', 'wpinsight' ),
638
+ 'yes' => __( 'Sure, I\'d like to help', 'wpinsight' ),
639
+ 'no' => __( 'No Thanks.', 'wpinsight' ),
640
+ ];
641
+ $options = wp_parse_args( $options, $default_options );
642
+ $this->notice_options = $options;
643
+ }
644
+ /**
645
+ * Responsible for track the click from Notice.
646
+ * @return void
647
+ */
648
+ public function clicked(){
649
+ if( isset( $_GET['plugin'] ) && isset( $_GET['plugin_action'] ) ) {
650
+ if( isset( $_GET['tab'] ) && $_GET['tab'] === 'plugin-information' ) {
651
+ return;
652
+ }
653
+ $plugin = sanitize_text_field( $_GET['plugin'] );
654
+ $action = sanitize_text_field( $_GET['plugin_action'] );
655
+ if( $action == 'yes' ) {
656
+ $this->schedule_tracking();
657
+ $this->set_is_tracking_allowed( true, $plugin );
658
+ if( $this->do_tracking( true ) ) {
659
+ $this->update_block_notice( $plugin );
660
+ }
661
+ /**
662
+ * Redirect User To the Current URL, but without set query arguments.
663
+ */
664
+ wp_safe_redirect( $this->redirect_to() );
665
+ } else {
666
+ $this->set_is_tracking_allowed( false, $plugin );
667
+ $this->update_block_notice( $plugin );
668
+ }
669
+ }
670
+ }
671
+ /**
672
+ * Set if we should block the opt-in notice for this plugin
673
+ *
674
+ * @since 3.0.0
675
+ */
676
+ public function update_block_notice( $plugin = null ) {
677
+ if( empty( $plugin ) ) {
678
+ $plugin = $this->plugin_name;
679
+ }
680
+ $block_notice = get_option( 'wpins_block_notice' );
681
+ if( empty( $block_notice ) || ! is_array( $block_notice ) ) {
682
+ $block_notice = array( $plugin => $plugin );
683
+ } else {
684
+ $block_notice[$plugin] = $plugin;
685
+ }
686
+ update_option( 'wpins_block_notice', $block_notice );
687
+ }
688
+ /**
689
+ * AJAX callback when the deactivated form is submitted.
690
+ * @since 3.0.0
691
+ */
692
+ public function deactivate_reasons_form_submit() {
693
+ check_ajax_referer( 'wpins_deactivation_nonce', 'security' );
694
+ if( isset( $_POST['values'] ) ) {
695
+ $values = $_POST['values'];
696
+ update_option( 'wpins_deactivation_reason_' . $this->plugin_name, $values );
697
+ }
698
+ if( isset( $_POST['details'] ) ) {
699
+ $details = sanitize_text_field( $_POST['details'] );
700
+ update_option( 'wpins_deactivation_details_' . $this->plugin_name, $details );
701
+ }
702
+ echo 'success';
703
+ wp_die();
704
+ }
705
+ /**
706
+ * Filter the deactivation link to allow us to present a form when the user deactivates the plugin
707
+ * @since 3.0.0
708
+ */
709
+ public function deactivate_action_links( $links ) {
710
+ /**
711
+ * Check is tracking allowed or not.
712
+ */
713
+ if( ! $this->is_tracking_allowed() ) {
714
+ return $links;
715
+ }
716
+ if( isset( $links['deactivate'] ) && $this->include_goodbye_form ) {
717
+ $deactivation_link = $links['deactivate'];
718
+ /**
719
+ * Change the default deactivate button link.
720
+ */
721
+ $deactivation_link = str_replace( '<a ', '<div class="wpinsights-goodbye-form-wrapper-'. esc_attr( $this->plugin_name ) .'"><div class="wpinsights-goodbye-form-bg"></div><span class="wpinsights-goodbye-form" id="wpinsights-goodbye-form"></span></div><a onclick="javascript:event.preventDefault();" id="wpinsights-goodbye-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
722
+ $links['deactivate'] = $deactivation_link;
723
+ }
724
+ return $links;
725
+ }
726
+ /**
727
+ * ALL Deactivate Reasons.
728
+ * @since 3.0.0
729
+ */
730
+ public function deactivation_reasons() {
731
+ $form = array();
732
+ $form['heading'] = __( 'Sorry to see you go', 'plugin-usage-tracker' );
733
+ $form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'plugin-usage-tracker' );
734
+
735
+ $form['options'] = array(
736
+ __( 'I no longer need the plugin', 'plugin-usage-tracker' ),
737
+ [
738
+ 'label' => __( 'I found a better plugin', 'plugin-usage-tracker' ),
739
+ 'extra_field' => __( 'Please share which plugin', 'plugin-usage-tracker' )
740
+ ],
741
+ __( "I couldn't get the plugin to work", 'plugin-usage-tracker' ),
742
+ __( 'It\'s a temporary deactivation', 'plugin-usage-tracker' ),
743
+ [
744
+ 'label' => __( 'Other', 'plugin-usage-tracker' ),
745
+ 'extra_field' => __( 'Please share the reason', 'plugin-usage-tracker' ),
746
+ 'type' => 'textarea'
747
+ ]
748
+ );
749
+ return apply_filters( 'wpins_form_text_' . $this->plugin_name, $form );
750
+ }
751
+ /**
752
+ * Deactivate Reasons Form.
753
+ * This form will appears when user wants to deactivate the plugin to send you deactivated reasons.
754
+ *
755
+ * @since 3.0.0
756
+ */
757
+ public function deactivate_reasons_form() {
758
+ $form = $this->deactivation_reasons();
759
+ $class_plugin_name = esc_attr( $this->plugin_name );
760
+ $html = '<div class="wpinsights-goodbye-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
761
+ $html .= '<div class="wpinsights-goodbye-form-body"><p class="wpinsights-goodbye-form-caption">' . esc_html( $form['body'] ) . '</p>';
762
+ if( is_array( $form['options'] ) ) {
763
+ $html .= '<div id="wpinsights-goodbye-options" class="wpinsights-goodbye-options"><ul>';
764
+ foreach( $form['options'] as $option ) {
765
+ if( is_array( $option ) ) {
766
+ $id = strtolower( str_replace( " ", "_", esc_attr( $option['label'] ) ) );
767
+ $id = $id . '_' . $class_plugin_name;
768
+ $html .= '<li class="has-goodbye-extra">';
769
+ $html .= '<input type="radio" name="wpinsights-'. $class_plugin_name .'-goodbye-options" id="' . $id . '" value="' . esc_attr( $option['label'] ) . '">';
770
+ $html .= '<div><label for="' . $id . '">' . esc_attr( $option['label'] ) . '</label>';
771
+ if( isset( $option[ 'extra_field' ] ) && ! isset( $option['type'] )) {
772
+ $html .= '<input type="text" style="display: none" name="'. $id .'" id="' . str_replace( " ", "", esc_attr( $option['extra_field'] ) ) . '" placeholder="' . esc_attr( $option['extra_field'] ) . '">';
773
+ }
774
+ if( isset( $option[ 'extra_field' ] ) && isset( $option['type'] )) {
775
+ $html .= '<'. $option['type'] .' style="display: none" type="text" name="'. $id .'" id="' . str_replace( " ", "", esc_attr( $option['extra_field'] ) ) . '" placeholder="' . esc_attr( $option['extra_field'] ) . '"></' . $option['type'] . '>';
776
+ }
777
+ $html .= '</div></li>';
778
+ } else {
779
+ $id = strtolower( str_replace( " ", "_", esc_attr( $option ) ) );
780
+ $id = $id . '_' . $class_plugin_name;
781
+ $html .= '<li><input type="radio" name="wpinsights-'. $class_plugin_name .'-goodbye-options" id="' . $id . '" value="' . esc_attr( $option ) . '"> <label for="' . $id . '">' . esc_attr( $option ) . '</label></li>';
782
+ }
783
+ }
784
+ $html .= '</ul></div><!-- .wpinsights-'. $class_plugin_name .'-goodbye-options -->';
785
+ }
786
+ $html .= '</div><!-- .wpinsights-goodbye-form-body -->';
787
+ $html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'plugin-usage-tracker' ) . '</p>';
788
+
789
+ $wrapper_class = '.wpinsights-goodbye-form-wrapper-'. $class_plugin_name;
790
+
791
+ $styles = '';
792
+ $styles .= '<style type="text/css">';
793
+ $styles .= '.wpinsights-form-active-' . $class_plugin_name . ' .wpinsights-goodbye-form-bg {';
794
+ $styles .= 'background: rgba( 0, 0, 0, .8 );position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 9;';
795
+ $styles .= '}';
796
+ $styles .= $wrapper_class . '{';
797
+ $styles .= 'position: relative; display: none;';
798
+ $styles .= '}';
799
+ $styles .= '.wpinsights-form-active-' . $class_plugin_name . ' ' . $wrapper_class . '{';
800
+ $styles .= 'display: flex !important; position: fixed;top: 0;left: 0;width: 100%;height: 100%; justify-content: center; align-items: center;';
801
+ $styles .= '}';
802
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form { display: none; }';
803
+ $styles .= '.wpinsights-form-active-' . $class_plugin_name . ' .wpinsights-goodbye-form {';
804
+ $styles .= 'position: relative !important; width: 550px; max-width: 80%; background: #fff; box-shadow: 2px 8px 23px 3px rgba(0,0,0,.2); border-radius: 3px; white-space: normal; overflow: hidden; display: block; z-index: 999999;';
805
+ $styles .= '}';
806
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-head {';
807
+ $styles .= 'background: #fff; color: #495157; padding: 18px; box-shadow: 0 0 8px rgba(0,0,0,.1); font-size: 15px;';
808
+ $styles .= '}';
809
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form .wpinsights-goodbye-form-head strong { font-size: 15px; }';
810
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body { padding: 8px 18px; color: #333; }';
811
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body label { padding-left: 5px; color: #6d7882; }';
812
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body .wpinsights-goodbye-form-caption {';
813
+ $styles .= 'font-weight: 500; font-size: 15px; color: #495157; line-height: 1.4;';
814
+ $styles .= '}';
815
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body #wpinsights-goodbye-options { padding-top: 5px; }';
816
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body #wpinsights-goodbye-options ul > li { margin-bottom: 15px; }';
817
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body #wpinsights-goodbye-options ul > li > div { display: inline; padding-left: 3px; }';
818
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-body #wpinsights-goodbye-options ul > li > div > input, '. $wrapper_class .' .wpinsights-goodbye-form-body #wpinsights-goodbye-options ul > li > div > textarea {';
819
+ $styles .= 'margin: 10px 18px; padding: 8px; width: 80%;';
820
+ $styles .= '}';
821
+ $styles .= $wrapper_class . ' .deactivating-spinner { display: none; padding-bottom: 20px !important; }';
822
+ $styles .= $wrapper_class . ' .deactivating-spinner .spinner { float: none; margin: 4px 4px 0 18px; vertical-align: bottom; visibility: visible; }';
823
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-footer { padding: 8px 18px; margin-bottom: 15px; }';
824
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-footer > .wpinsights-goodbye-form-buttons { display: flex; align-items: center; justify-content: space-between; }';
825
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-footer .wpinsights-submit-btn {';
826
+ $styles .= 'background-color: #d30c5c; -webkit-border-radius: 3px; border-radius: 3px; color: #fff; line-height: 1; padding: 15px 20px; font-size: 13px;';
827
+ $styles .= '}';
828
+ $styles .= $wrapper_class . ' .wpinsights-goodbye-form-footer .wpinsights-deactivate-btn {';
829
+ $styles .= 'font-size: 13px; color: #a4afb7; background: none; float: right; padding-right: 10px; width: auto; text-decoration: underline;';
830
+ $styles .= '}';
831
+ $styles .= $wrapper_class . ' .test {';
832
+ $styles .= '}';
833
+ $styles .= '</style>';
834
+ $styles .= '';
835
+
836
+ echo $styles;
837
+ ?>
838
+ <script type="text/javascript">
839
+ jQuery(document).ready(function($){
840
+ $("#wpinsights-goodbye-link-<?php echo $class_plugin_name; ?>").on("click",function(){
841
+ // We'll send the user to this deactivation link when they've completed or dismissed the form
842
+ var url = document.getElementById("wpinsights-goodbye-link-<?php echo $class_plugin_name; ?>");
843
+ $('body').toggleClass('wpinsights-form-active-<?php echo $class_plugin_name; ?>');
844
+ $(".wpinsights-goodbye-form-wrapper-<?php echo $class_plugin_name; ?> #wpinsights-goodbye-form").fadeIn();
845
+ $(".wpinsights-goodbye-form-wrapper-<?php echo $class_plugin_name; ?> #wpinsights-goodbye-form").html( '<?php echo $html; ?>' + '<div class="wpinsights-goodbye-form-footer"><div class="wpinsights-goodbye-form-buttons"><a id="wpinsights-submit-form-<?php echo $class_plugin_name; ?>" class="wpinsights-submit-btn" href="#"><?php _e( 'Submit and Deactivate', 'plugin-usage-tracker' ); ?></a>&nbsp;<a class="wpsp-put-deactivate-btn" href="'+url+'"><?php _e( 'Just Deactivate', 'plugin-usage-tracker' ); ?></a></div></div>');
846
+ $('#wpinsights-submit-form-<?php echo $class_plugin_name; ?>').on('click', function(e){
847
+ // As soon as we click, the body of the form should disappear
848
+ $("#wpinsights-goodbye-form-<?php echo $class_plugin_name; ?> .wpinsights-goodbye-form-body").fadeOut();
849
+ $("#wpinsights-goodbye-form-<?php echo $class_plugin_name; ?> .wpinsights-goodbye-form-footer").fadeOut();
850
+ // Fade in spinner
851
+ $("#wpinsights-goodbye-form-<?php echo $class_plugin_name; ?> .deactivating-spinner").fadeIn();
852
+ e.preventDefault();
853
+ var checkedInput = $("input[name='wpinsights-<?php echo $class_plugin_name; ?>-goodbye-options']:checked"),
854
+ checkedInputVal, details;
855
+ if( checkedInput.length > 0 ) {
856
+ checkedInputVal = checkedInput.val();
857
+ details = $('input[name="'+ checkedInput[0].id +'"], textarea[name="'+ checkedInput[0].id +'"]').val();
858
+ }
859
+
860
+ if( typeof details === 'undefined' ) {
861
+ details = '';
862
+ }
863
+ if( typeof checkedInputVal === 'undefined' ) {
864
+ checkedInputVal = 'No Reason';
865
+ }
866
+
867
+ var data = {
868
+ 'action': 'deactivation_form_<?php echo $class_plugin_name; ?>',
869
+ 'values': checkedInputVal,
870
+ 'details': details,
871
+ 'security': "<?php echo wp_create_nonce ( 'wpins_deactivation_nonce' ); ?>",
872
+ 'dataType': "json"
873
+ }
874
+
875
+ $.post(
876
+ ajaxurl,
877
+ data,
878
+ function(response){
879
+ // Redirect to original deactivation URL
880
+ window.location.href = url;
881
+ }
882
+ );
883
+ });
884
+ $('#wpinsights-goodbye-options > ul ').on('click', 'li label, li > input', function( e ){
885
+ var parent = $(this).parents('li');
886
+ parent.siblings().find('label').next('input, textarea').css('display', 'none');
887
+ parent.find('label').next('input, textarea').css('display', 'block');
888
+ });
889
+ // If we click outside the form, the form will close
890
+ $('.wpinsights-goodbye-form-bg').on('click',function(){
891
+ $("#wpinsights-goodbye-form").fadeOut();
892
+ $('body').removeClass('wpinsights-form-active-<?php echo $class_plugin_name; ?>');
893
+ });
894
+ });
895
+ });
896
+ </script>
897
+ <?php }
898
+ }
899
+ endif;
includes/cli.php ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Implements example command.
5
+ */
6
+ class Disable_Comment_Command
7
+ {
8
+
9
+ public function __construct($dc_instance)
10
+ {
11
+ $this->dc_instance = $dc_instance;
12
+
13
+ $post_types = array_keys($this->dc_instance->get_all_post_types());
14
+ $comment_types = array_keys($this->dc_instance->get_all_comment_types());
15
+ $post_types[] = $comment_types[] = 'all';
16
+
17
+ $disable_synopsis = array(
18
+ array(
19
+ 'type' => 'assoc',
20
+ 'name' => 'types',
21
+ 'description' => 'Disable comments from the selected post type(s) only.',
22
+ 'optional' => true,
23
+ 'options' => $post_types,
24
+ ),
25
+ array(
26
+ 'type' => 'flag',
27
+ 'name' => 'xmlrpc',
28
+ 'description' => 'Disable Comments via XML-RPC.',
29
+ 'optional' => true,
30
+ ),
31
+ array(
32
+ 'type' => 'flag',
33
+ 'name' => 'rest-api',
34
+ 'description' => 'Disable Comments via REST API.',
35
+ 'optional' => true,
36
+ ),
37
+ array(
38
+ 'type' => 'flag',
39
+ 'name' => 'add',
40
+ 'description' => 'Check specified checkbox in On Specific Post Types.', // check specified checkbox in `On Specific Post Types:`
41
+ 'optional' => true,
42
+ ),
43
+ array(
44
+ 'type' => 'flag',
45
+ 'name' => 'remove',
46
+ 'description' => 'Uncheck specified checkbox in `On Specific Post Types.', // uncheck specified checkbox in `On Specific Post Types:`
47
+ 'optional' => true,
48
+ ),
49
+ );
50
+ if ($this->dc_instance->networkactive){
51
+ $disable_synopsis[] = array(
52
+ 'type' => 'assoc',
53
+ 'name' => 'extra-post-types',
54
+ 'description' => 'If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type.',
55
+ 'optional' => true,
56
+ );
57
+ }
58
+ WP_CLI::add_command('disable-comments settings', [$this, 'disable'], [
59
+ 'synopsis' => $disable_synopsis,
60
+ 'when' => 'after_wp_load',
61
+ 'longdesc' => "## EXAMPLES
62
+ wp disable-comments settings --types=post
63
+ wp disable-comments settings --types=page --add
64
+ wp disable-comments settings --types=attachment --remove
65
+ wp disable-comments settings --xmlrpc --rest-api
66
+ wp disable-comments settings --xmlrpc=false --rest-api=false ",
67
+ ]);
68
+
69
+ $delete_synopsis = array(
70
+ array(
71
+ 'type' => 'assoc',
72
+ 'name' => 'types',
73
+ 'description' => 'Remove existing comments entries for the selected post type(s) in the database and cannot be reverted without a database backups.',
74
+ 'optional' => true,
75
+ 'options' => $post_types,
76
+ ),
77
+ array(
78
+ 'type' => 'assoc',
79
+ 'name' => 'comment-types',
80
+ 'description' => 'Remove existing comment entries for the selected comment type(s) in the database and cannot be reverted without a database backups.',
81
+ 'optional' => true,
82
+ 'options' => $comment_types,
83
+ ),
84
+ );
85
+ if (!$this->dc_instance->networkactive){
86
+ $delete_synopsis[] = array(
87
+ 'type' => 'assoc',
88
+ 'name' => 'extra-post-types',
89
+ 'description' => 'If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type.',
90
+ 'optional' => true,
91
+ );
92
+ }
93
+ WP_CLI::add_command('disable-comments delete', [$this, 'delete'], [
94
+ 'synopsis' => $delete_synopsis,
95
+ 'when' => 'after_wp_load',
96
+ 'longdesc' => "## EXAMPLES
97
+ wp disable-comments delete --types=post,page
98
+ wp disable-comments delete --types=post,page --extra-post-types=contact
99
+ wp disable-comments delete --comment-types=comment "
100
+ ]);
101
+
102
+ }
103
+
104
+ /**
105
+ * Disable Comments on your website.
106
+ *
107
+ * @when after_wp_load
108
+ */
109
+ function disable($args, $assoc_args)
110
+ {
111
+ $msg = "";
112
+ $disable_comments_settings = array();
113
+ $types = WP_CLI\Utils\get_flag_value($assoc_args, 'types');
114
+ $add = WP_CLI\Utils\get_flag_value($assoc_args, 'add');
115
+ $remove = WP_CLI\Utils\get_flag_value($assoc_args, 'remove');
116
+ $extra_post_types = WP_CLI\Utils\get_flag_value($assoc_args, 'extra-post-types');
117
+ $remove_xmlrpc_comments = WP_CLI\Utils\get_flag_value($assoc_args, 'xmlrpc');
118
+ $remove_rest_API_comments = WP_CLI\Utils\get_flag_value($assoc_args, 'rest-api');
119
+
120
+ if ($types === 'all') {
121
+ $disable_comments_settings['mode'] = 'remove_everywhere';
122
+ $msg .= __( 'Comments is disabled everywhere. ', 'disable-comments' );
123
+ } elseif(!empty($types) ) {
124
+ $disable_comments_settings['mode'] = 'selected_types';
125
+ $_types = array_map('trim', explode(',', $types));
126
+ $disabled_post_types = $this->dc_instance->get_disabled_post_types();
127
+ $new_msg = sprintf( __( 'Comments disabled for %s. ', 'disable-comments' ), $types );
128
+ if(!empty($add)){
129
+ $_types = array_unique(array_merge($disabled_post_types, $_types));
130
+ $new_msg = sprintf( __( 'Comments disabled for %s. ', 'disable-comments' ), $types );
131
+ }
132
+ if(!empty($remove)){
133
+ $_types = array_diff($disabled_post_types, $_types);
134
+ $new_msg = sprintf( __( 'Comments enabled for %s. ', 'disable-comments' ), $types );
135
+ }
136
+
137
+ $msg = $new_msg;
138
+ $disable_comments_settings['disabled_types'] = $_types;
139
+ }
140
+
141
+ // for network.
142
+ if(!empty($extra_post_types)){
143
+ $disable_comments_settings['extra_post_types'] = $extra_post_types;
144
+ $msg .= sprintf( __( 'Custom post types: %s. ', 'disable-comments' ), $extra_post_types );
145
+ }
146
+
147
+ if(isset($remove_xmlrpc_comments)){
148
+ $disable_comments_settings['remove_xmlrpc_comments'] = $remove_xmlrpc_comments;
149
+ $msg .= __( 'Disable Comments via XML-RPC. ', 'disable-comments' );
150
+ }
151
+ if(isset($remove_rest_API_comments)){
152
+ $disable_comments_settings['remove_rest_API_comments'] = $remove_rest_API_comments;
153
+ $msg .= __( 'Disable Comments via REST API. ', 'disable-comments' );
154
+ }
155
+
156
+ $this->dc_instance->disable_comments_settings($disable_comments_settings);
157
+
158
+ WP_CLI::success($msg);
159
+ }
160
+
161
+ /**
162
+ * Deletes Comments on your website.
163
+ *
164
+ * @when after_wp_load
165
+ */
166
+ function delete($args, $assoc_args)
167
+ {
168
+ $msg = "";
169
+ $delete_comments_settings = array('delete' => true);
170
+ $selected_delete_types = WP_CLI\Utils\get_flag_value($assoc_args, 'types');
171
+ $delete_extra_post_types = WP_CLI\Utils\get_flag_value($assoc_args, 'extra-post-types');
172
+ $delete_comment_types = WP_CLI\Utils\get_flag_value($assoc_args, 'comment-types');
173
+
174
+
175
+ if ( $delete_comment_types === 'all' || $selected_delete_types === 'all' ) {
176
+ $delete_comments_settings['delete_mode'] = 'delete_everywhere';
177
+ } elseif( !empty($selected_delete_types)) {
178
+ $delete_comments_settings['delete_mode'] = 'selected_delete_types';
179
+ $delete_comments_settings['delete_types'] = array_map('trim', explode(',', $selected_delete_types));
180
+ } elseif(!empty($delete_comment_types)) {
181
+ $delete_comments_settings['delete_mode'] = 'selected_delete_comment_types';
182
+ $delete_comments_settings['delete_comment_types'] = array_map('trim', explode(',', $delete_comment_types));
183
+ } else{
184
+ WP_CLI::error("Please provide valid parameters. \nSee 'wp help dc delete' for more information.");
185
+ }
186
+
187
+ // for network.
188
+ if(!empty($delete_extra_post_types)){
189
+ $delete_comments_settings['delete_extra_post_types'] = $delete_extra_post_types;
190
+ }
191
+
192
+ $logged_msg = $this->dc_instance->delete_comments_settings($delete_comments_settings);
193
+ WP_CLI::success( implode( "\n", $logged_msg ) );
194
+ }
195
+ }
includes/settings-page.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
- /**
3
- * Setting page.
4
- *
5
- * @package Disable_Comments
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit;
10
- }
11
-
12
- $typeargs = array( 'public' => true );
13
- if ( $this->networkactive ) {
14
- $typeargs['_builtin'] = true; // stick to known types for network.
15
- }
16
- $types = get_post_types( $typeargs, 'objects' );
17
- foreach ( array_keys( $types ) as $type ) {
18
- if ( ! in_array( $type, $this->modified_types ) && ! post_type_supports( $type, 'comments' ) ) { // the type doesn't support comments anyway.
19
- unset( $types[ $type ] );
20
- }
21
- }
22
-
23
- if ( isset( $_POST['submit'] ) ) {
24
- check_admin_referer( 'disable-comments-admin' );
25
- $this->options['remove_everywhere'] = ( $_POST['mode'] == 'remove_everywhere' );
26
-
27
- if ( $this->options['remove_everywhere'] ) {
28
- $disabled_post_types = array_keys( $types );
29
- } else {
30
- $disabled_post_types = empty( $_POST['disabled_types'] ) ? array() : (array) $_POST['disabled_types'];
31
- }
32
-
33
- $disabled_post_types = array_intersect( $disabled_post_types, array_keys( $types ) );
34
-
35
- $this->options['disabled_post_types'] = $disabled_post_types;
36
-
37
- // Extra custom post types.
38
- if ( $this->networkactive && ! empty( $_POST['extra_post_types'] ) ) {
39
- $extra_post_types = array_filter( array_map( 'sanitize_key', explode( ',', $_POST['extra_post_types'] ) ) );
40
- $this->options['extra_post_types'] = array_diff( $extra_post_types, array_keys( $types ) ); // Make sure we don't double up builtins.
41
- }
42
-
43
- $this->update_options();
44
- $cache_message = WP_CACHE ? ' <strong>' . __( 'If a caching/performance plugin is active, please invalidate its cache to ensure that changes are reflected immediately.', 'disable-comments' ) . '</strong>' : '';
45
- echo '<div id="message" class="updated"><p>' . __( 'Options updated. Changes to the Admin Menu and Admin Bar will not appear until you leave or reload this page.', 'disable-comments' ) . $cache_message . '</p></div>';
46
- }
47
- ?>
48
- <style> .indent {padding-left: 2em} </style>
49
- <div class="wrap">
50
- <h1><?php _ex( 'Disable Comments', 'settings page title', 'disable-comments' ); ?></h1>
51
- <?php
52
- if ( $this->networkactive ) {
53
- echo '<div class="updated"><p>' . __( '<em>Disable Comments</em> is Network Activated. The settings below will affect <strong>all sites</strong> in this network.', 'disable-comments' ) . '</p></div>';
54
- }
55
- if ( WP_CACHE ) {
56
- echo '<div class="updated"><p>' . __( "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'disable-comments' ) . '</p></div>';
57
- }
58
- ?>
59
- <form action="" method="post" id="disable-comments">
60
- <ul>
61
- <li><label for="remove_everywhere"><input type="radio" id="remove_everywhere" name="mode" value="remove_everywhere" <?php checked( $this->options['remove_everywhere'] ); ?> /> <strong><?php _e( 'Everywhere', 'disable-comments' ); ?></strong>: <?php _e( 'Disable all comment-related controls and settings in WordPress.', 'disable-comments' ); ?></label>
62
- <p class="indent"><?php printf( __( '%1$s: This option is global and will affect your entire site. Use it only if you want to disable comments <em>everywhere</em>. A complete description of what this option does is <a href="%2$s" target="_blank">available here</a>.', 'disable-comments' ), '<strong style="color: #900">' . __( 'Warning', 'disable-comments' ) . '</strong>', 'https://wordpress.org/plugins/disable-comments/other_notes/' ); ?></p>
63
- </li>
64
- <li><label for="selected_types"><input type="radio" id="selected_types" name="mode" value="selected_types" <?php checked( ! $this->options['remove_everywhere'] ); ?> /> <strong><?php _e( 'On certain post types', 'disable-comments' ); ?></strong>:</label>
65
- <p></p>
66
- <ul class="indent" id="listoftypes">
67
- <?php
68
- foreach ( $types as $k => $v ) {
69
- echo "<li><label for='post-type-$k'><input type='checkbox' name='disabled_types[]' value='$k' " . checked( in_array( $k, $this->options['disabled_post_types'] ), true, false ) . " id='post-type-$k'> {$v->labels->name}</label></li>";}
70
- ?>
71
- </ul>
72
- <?php if ( $this->networkactive ) : ?>
73
- <p class="indent" id="extratypes"><?php _e( 'Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type).', 'disable-comments' ); ?>
74
- <br /><label><?php _e( 'Custom post types:', 'disable-comments' ); ?> <input type="text" name="extra_post_types" size="30" value="<?php echo implode( ', ', (array) $this->options['extra_post_types'] ); ?>" /></label></p>
75
- <?php endif; ?>
76
- <p class="indent"><?php _e( 'Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts.', 'disable-comments' ); ?></p>
77
- </li>
78
- </ul>
79
-
80
- <?php wp_nonce_field( 'disable-comments-admin' ); ?>
81
- <p class="submit"><input class="button-primary" type="submit" name="submit" value="<?php _e( 'Save Changes', 'disable-comments' ); ?>"></p>
82
- </form>
83
- </div>
84
- <script>
85
- jQuery(document).ready(function($){
86
- function disable_comments_uihelper(){
87
- var indiv_bits = $("#listoftypes, #extratypes");
88
- if( $("#remove_everywhere").is(":checked") )
89
- indiv_bits.css("color", "#888").find(":input").attr("disabled", true );
90
- else
91
- indiv_bits.css("color", "#000").find(":input").attr("disabled", false );
92
- }
93
-
94
- $("#disable-comments :input").change(function(){
95
- $("#message").slideUp();
96
- disable_comments_uihelper();
97
- });
98
-
99
- disable_comments_uihelper();
100
- });
101
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/tools-page.php DELETED
@@ -1,195 +0,0 @@
1
- <?php
2
- /**
3
- * Tools page.
4
- *
5
- * @package Disable_Comments
6
- */
7
-
8
- if ( ! defined( 'ABSPATH' ) ) {
9
- exit;
10
- }
11
- ?>
12
- <div class="wrap">
13
- <h1><?php _e( 'Delete Comments', 'disable-comments' ); ?></h1>
14
- <?php
15
-
16
- global $wpdb;
17
- $comments_count = $wpdb->get_var( "SELECT count(comment_id) from $wpdb->comments" );
18
- if ( $comments_count <= 0 ) {
19
- ?>
20
- <p><strong><?php _e( 'No comments available for deletion.', 'disable-comments' ); ?></strong></p>
21
- </div>
22
- <?php
23
- return;
24
- }
25
-
26
- $publictypeargs = array( 'public' => true );
27
- $privatetypeargs = array( 'public' => false );
28
- if ( $this->networkactive ) {
29
- $typeargs['_builtin'] = true; // stick to known types for network.
30
- }
31
- $publictypes = get_post_types( $publictypeargs, 'objects' );
32
- $privatetypes = get_post_types( $privatetypeargs, 'objects' );
33
- $types = array_merge( $publictypes, $privatetypes );
34
- foreach ( array_keys( $types ) as $type ) {
35
- if ( ! in_array( $type, $this->modified_types ) && ! post_type_supports( $type, 'comments' ) ) { // the type doesn't support comments anyway.
36
- unset( $types[ $type ] );
37
- }
38
- }
39
- $commenttypes = array();
40
- $commenttypes_query = $wpdb->get_results( "SELECT DISTINCT comment_type FROM $wpdb->comments", ARRAY_A );
41
- if ( ! empty( $commenttypes_query ) && is_array( $commenttypes_query ) ) {
42
- foreach ( $commenttypes_query as $entry ) {
43
- $value = $entry['comment_type'];
44
- if ( '' === $value ) {
45
- $commenttypes['default'] = __( 'Default (no type)', 'disable-comments' );
46
- } else {
47
- $commenttypes[$value] = ucwords( str_replace( '_', ' ', $value ) ) . ' (' . $value . ')';
48
- }
49
- }
50
- }
51
-
52
- if ( isset( $_POST['delete'] ) && isset( $_POST['delete_mode'] ) ) {
53
- check_admin_referer( 'delete-comments-admin' );
54
-
55
- if ( $_POST['delete_mode'] == 'delete_everywhere' ) {
56
- if ( $wpdb->query( "TRUNCATE $wpdb->commentmeta" ) != false ) {
57
- if ( $wpdb->query( "TRUNCATE $wpdb->comments" ) != false ) {
58
- $wpdb->query( "UPDATE $wpdb->posts SET comment_count = 0" );
59
- $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" );
60
- $wpdb->query( "OPTIMIZE TABLE $wpdb->comments" );
61
- echo "<p style='color:green'><strong>" . __( 'All comments have been deleted.', 'disable-comments' ) . '</strong></p>';
62
- } else {
63
- echo "<p style='color:red'><strong>" . __( 'Internal error occured. Please try again later.', 'disable-comments' ) . '</strong></p>';
64
- }
65
- } else {
66
- echo "<p style='color:red'><strong>" . __( 'Internal error occured. Please try again later.', 'disable-comments' ) . '</strong></p>';
67
- }
68
- } elseif ( $_POST['delete_mode'] == 'selected_delete_types' ) {
69
- $delete_post_types = empty( $_POST['delete_types'] ) ? array() : (array) $_POST['delete_types'];
70
- $delete_post_types = array_intersect( $delete_post_types, array_keys( $types ) );
71
-
72
- // Extra custom post types.
73
- if ( $this->networkactive && ! empty( $_POST['delete_extra_post_types'] ) ) {
74
- $delete_extra_post_types = array_filter( array_map( 'sanitize_key', explode( ',', $_POST['delete_extra_post_types'] ) ) );
75
- $delete_extra_post_types = array_diff( $delete_extra_post_types, array_keys( $types ) ); // Make sure we don't double up builtins.
76
- $delete_post_types = array_merge( $delete_post_types, $delete_extra_post_types );
77
- }
78
-
79
- if ( ! empty( $delete_post_types ) ) {
80
- // Loop through post_types and remove comments/meta and set posts comment_count to 0.
81
- foreach ( $delete_post_types as $delete_post_type ) {
82
- $wpdb->query( "DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'" );
83
- $wpdb->query( "DELETE comments FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$delete_post_type'" );
84
- $wpdb->query( "UPDATE $wpdb->posts SET comment_count = 0 WHERE post_author != 0 AND post_type = '$delete_post_type'" );
85
-
86
- $post_type_object = get_post_type_object( $delete_post_type );
87
- $post_type_label = $post_type_object ? $post_type_object->labels->name : $delete_post_type;
88
- echo "<p style='color:green'><strong>" . sprintf( __( 'All comments have been deleted for %s.', 'disable-comments' ), $post_type_label ) . '</strong></p>';
89
- }
90
-
91
- $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" );
92
- $wpdb->query( "OPTIMIZE TABLE $wpdb->comments" );
93
-
94
- echo "<h4 style='color:green'><strong>" . __( 'Comment Deletion Complete', 'disable-comments' ) . '</strong></h4>';
95
- }
96
- } elseif ( $_POST['delete_mode'] == 'selected_delete_comment_types' ) {
97
- $delete_comment_types = empty( $_POST['delete_comment_types'] ) ? array() : (array) $_POST['delete_comment_types'];
98
- $delete_comment_types = array_intersect( $delete_comment_types, array_keys( $commenttypes ) );
99
-
100
- if ( ! empty( $delete_comment_types ) ) {
101
- // Loop through comment_types and remove comments/meta and set posts comment_count to 0.
102
- foreach ( $delete_comment_types as $delete_comment_type ) {
103
- $wpdb->query( "DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID WHERE comments.comment_type = '$delete_comment_type'" );
104
- $wpdb->query( "DELETE comments FROM $wpdb->comments comments WHERE comments.comment_type = '$delete_comment_type'" );
105
-
106
- echo "<p style='color:green'><strong>" . sprintf( __( 'All comments have been deleted for %s.', 'disable-comments' ), $commenttypes[$delete_comment_type] ) . '</strong></p>';
107
- }
108
-
109
- // Update comment_count on post_types
110
- foreach( $types as $key => $value ) {
111
- $comment_count = $wpdb->get_var( "SELECT COUNT(comments.comment_ID) FROM $wpdb->comments comments INNER JOIN $wpdb->posts posts ON comments.comment_post_ID=posts.ID WHERE posts.post_type = '$key'" );
112
- $wpdb->query( "UPDATE $wpdb->posts SET comment_count = $comment_count WHERE post_author != 0 AND post_type = '$key'" );
113
- }
114
-
115
- $wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" );
116
- $wpdb->query( "OPTIMIZE TABLE $wpdb->comments" );
117
-
118
- echo "<h4 style='color:green'><strong>" . __( 'Comment Deletion Complete', 'disable-comments' ) . '</strong></h4>';
119
- }
120
- }
121
-
122
- $comments_count = $wpdb->get_var( "SELECT count(comment_id) from $wpdb->comments" );
123
- if ( $comments_count <= 0 ) {
124
- ?>
125
- <p><strong><?php _e( 'No comments available for deletion.', 'disable-comments' ); ?></strong></p>
126
- </div>
127
- <?php
128
- return;
129
- }
130
- }
131
- ?>
132
- <form action="" method="post" id="delete-comments">
133
- <ul>
134
- <li><label for="delete_everywhere"><input type="radio" id="delete_everywhere" name="delete_mode" value="delete_everywhere" <?php checked( $this->options['remove_everywhere'] ); ?> /> <strong><?php _e( 'Everywhere', 'disable-comments' ); ?></strong>: <?php _e( 'Delete all comments in WordPress.', 'disable-comments' ); ?></label>
135
- <p class="indent"><?php printf( __( '%s: This function and will affect your entire site. Use it only if you want to delete comments <em>everywhere</em>.', 'disable-comments' ), '<strong style="color: #900">' . __( 'Warning', 'disable-comments' ) . '</strong>' ); ?></p>
136
- </li>
137
- <li><label for="selected_delete_types"><input type="radio" id="selected_delete_types" name="delete_mode" value="selected_delete_types" <?php checked( ! $this->options['remove_everywhere'] ); ?> /> <strong><?php _e( 'For certain post types', 'disable-comments' ); ?></strong>:</label>
138
- <p></p>
139
- <ul class="indent" id="listofdeletetypes">
140
- <?php
141
- foreach ( $types as $k => $v ) {
142
- echo "<li><label for='post-type-$k'><input type='checkbox' name='delete_types[]' value='$k' " . checked( in_array( $k, $this->options['disabled_post_types'] ), true, false ) . " id='post-type-$k'> {$v->labels->name}</label></li>";}
143
- ?>
144
- </ul>
145
- <?php if ( $this->networkactive ) : ?>
146
- <p class="indent" id="extradeletetypes"><?php _e( 'Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type).', 'disable-comments' ); ?>
147
- <br /><label><?php _e( 'Custom post types:', 'disable-comments' ); ?> <input type="text" name="delete_extra_post_types" size="30" value="<?php echo implode( ', ', (array) $this->options['extra_post_types'] ); ?>" /></label></p>
148
- <?php endif; ?>
149
- <p class="indent"><?php printf( __( '%s: Deleting comments by post type will remove existing comment entries for the selected post type(s) in the database and cannot be reverted without a database backup.', 'disable-comments' ), '<strong style="color: #900">' . __( 'Warning', 'disable-comments' ) . '</strong>' ); ?></p>
150
- </li>
151
- <?php if ( ! empty( $commenttypes ) ) : ?>
152
- <li><label for="selected_delete_comment_types"><input type="radio" id="selected_delete_comment_types" name="delete_mode" value="selected_delete_comment_types" /> <strong><?php _e( 'For certain comment types', 'disable-comments' ); ?></strong>:</label>
153
- <p></p>
154
- <ul class="indent" id="listofdeletecommenttypes">
155
- <?php
156
- foreach ( $commenttypes as $k => $v ) {
157
- echo "<li><label for='comment-type-$k'><input type='checkbox' name='delete_comment_types[]' value='$k' id='comment-type-$k'> {$v}</label></li>";}
158
- ?>
159
- </ul>
160
- <p class="indent"><?php printf( __( '%s: Deleting comments by comment type will remove existing comment entries of the selected comment type(s) in the database and cannot be reverted without a database backup.', 'disable-comments' ), '<strong style="color: #900">' . __( 'Warning', 'disable-comments' ) . '</strong>' ); ?></p>
161
- </li>
162
- <?php endif; ?>
163
- </ul>
164
-
165
- <?php wp_nonce_field( 'delete-comments-admin' ); ?>
166
- <h4><?php _e( 'Total Comments:', 'disable-comments' ); ?> <?php echo $comments_count; ?></h4>
167
- <p class="submit"><input class="button-primary" type="submit" name="delete" value="<?php _e( 'Delete Comments', 'disable-comments' ); ?>"></p>
168
- </form>
169
- </div>
170
- <script>
171
- jQuery(document).ready(function($){
172
- function delete_comments_uihelper(){
173
- var toggle_pt_bits = $("#listofdeletetypes, #extradeletetypes");
174
- var toggle_ct_bits = $("#listofdeletecommenttypes");
175
- if( $("#delete_everywhere").is(":checked") ) {
176
- toggle_pt_bits.css("color", "#888").find(":input").attr("disabled", true );
177
- toggle_ct_bits.css("color", "#888").find(":input").attr("disabled", true );
178
- } else {
179
- if( $("#selected_delete_types").is(":checked") ) {
180
- toggle_pt_bits.css("color", "#000").find(":input").attr("disabled", false );
181
- toggle_ct_bits.css("color", "#888").find(":input").attr("disabled", true );
182
- } else {
183
- toggle_ct_bits.css("color", "#000").find(":input").attr("disabled", false );
184
- toggle_pt_bits.css("color", "#888").find(":input").attr("disabled", true );
185
- }
186
- }
187
- }
188
-
189
- $("#delete-comments :input").change(function(){
190
- delete_comments_uihelper();
191
- });
192
-
193
- delete_comments_uihelper();
194
- });
195
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/disable-comments.pot CHANGED
@@ -1,214 +1,355 @@
1
- # Copyright (C) 2020 Samir Shah
2
- # This file is distributed under the GPL2.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Disable Comments 1.10.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/disable-comments\n"
7
- "POT-Creation-Date: 2020-05-01 06:45:42+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=utf-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
- "Language: en\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
- "X-Poedit-Country: United States\n"
17
- "X-Poedit-SourceCharset: UTF-8\n"
18
- "X-Poedit-KeywordsList: "
19
- "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
20
- "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
21
- "X-Poedit-Basepath: ../\n"
22
- "X-Poedit-SearchPath-0: .\n"
23
- "X-Poedit-Bookmarks: \n"
24
- "X-Textdomain-Support: yes\n"
25
- "X-Generator: grunt-wp-i18n 1.0.3\n"
26
-
27
- #: disable-comments.php:61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  msgid "Disable Comments requires WordPress version %s or greater."
29
  msgstr ""
30
 
31
- #: disable-comments.php:247 disable-comments.php:346 disable-comments.php:353
 
 
32
  msgid "Comments are closed."
33
  msgstr ""
34
 
35
- #: disable-comments.php:312
36
- msgid ""
37
- "Note: The <em>Disable Comments</em> plugin is currently active, and "
38
- "comments are completely disabled on: %s. Many of the settings below will "
39
- "not be applicable for those post types."
40
  msgstr ""
41
 
42
- #: disable-comments.php:312
43
  msgid ", "
44
  msgstr ""
45
 
46
- #: disable-comments.php:338
47
- msgid ""
48
- "The <em>Disable Comments</em> plugin is active, but isn't configured to do "
49
- "anything yet. Visit the <a href=\"%s\">configuration page</a> to choose "
50
- "which post types to disable comments on."
51
  msgstr ""
52
 
53
- #: disable-comments.php:418
 
54
  msgid "Settings"
55
  msgstr ""
56
 
57
- #: disable-comments.php:419
58
  msgid "Tools"
59
  msgstr ""
60
 
61
- #: disable-comments.php:440 includes/tools-page.php:13
62
- #: includes/tools-page.php:116
 
 
 
 
 
 
63
  msgid "Delete Comments"
64
  msgstr ""
65
 
66
- #: includes/settings-page.php:44
67
- msgid ""
68
- "If a caching/performance plugin is active, please invalidate its cache to "
69
- "ensure that changes are reflected immediately."
70
  msgstr ""
71
 
72
- #: includes/settings-page.php:45
73
- msgid ""
74
- "Options updated. Changes to the Admin Menu and Admin Bar will not appear "
75
- "until you leave or reload this page."
76
  msgstr ""
77
 
78
- #: includes/settings-page.php:53
79
- msgid ""
80
- "<em>Disable Comments</em> is Network Activated. The settings below will "
81
- "affect <strong>all sites</strong> in this network."
82
  msgstr ""
83
 
84
- #: includes/settings-page.php:56
85
- msgid ""
86
- "It seems that a caching/performance plugin is active on this site. Please "
87
- "manually invalidate that plugin's cache after making any changes to the "
88
- "settings below."
89
  msgstr ""
90
 
91
- #: includes/settings-page.php:61 includes/tools-page.php:95
92
- msgid "Everywhere"
93
  msgstr ""
94
 
95
- #: includes/settings-page.php:61
96
- msgid "Disable all comment-related controls and settings in WordPress."
 
97
  msgstr ""
98
 
99
- #: includes/settings-page.php:62
100
- msgid ""
101
- "%1$s: This option is global and will affect your entire site. Use it only "
102
- "if you want to disable comments <em>everywhere</em>. A complete description "
103
- "of what this option does is <a href=\"%2$s\" target=\"_blank\">available "
104
- "here</a>."
105
  msgstr ""
106
 
107
- #: includes/settings-page.php:62 includes/tools-page.php:96
108
- #: includes/tools-page.php:110
109
- msgid "Warning"
110
  msgstr ""
111
 
112
- #: includes/settings-page.php:64
113
- msgid "On certain post types"
114
  msgstr ""
115
 
116
- #: includes/settings-page.php:73 includes/tools-page.php:107
117
- msgid ""
118
- "Only the built-in post types appear above. If you want to disable comments "
119
- "on other custom post types on the entire network, you can supply a "
120
- "comma-separated list of post types below (use the slug that identifies the "
121
- "post type)."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  msgstr ""
123
 
124
- #: includes/settings-page.php:74 includes/tools-page.php:108
 
 
 
 
 
 
125
  msgid "Custom post types:"
126
  msgstr ""
127
 
128
- #: includes/settings-page.php:76
129
- msgid ""
130
- "Disabling comments will also disable trackbacks and pingbacks. All "
131
- "comment-related fields will also be hidden from the edit/quick-edit screens "
132
- "of the affected posts. These settings cannot be overridden for individual "
133
- "posts."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  msgstr ""
135
 
136
- #: includes/settings-page.php:81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  msgid "Save Changes"
138
  msgstr ""
139
 
140
- #: includes/tools-page.php:20 includes/tools-page.php:86
141
- msgid "No comments available for deletion."
142
  msgstr ""
143
 
144
- #: includes/tools-page.php:46
145
- msgid "All comments have been deleted."
146
  msgstr ""
147
 
148
- #: includes/tools-page.php:48 includes/tools-page.php:51
149
- msgid "Internal error occured. Please try again later."
150
  msgstr ""
151
 
152
- #: includes/tools-page.php:73
153
- msgid "All comments have been deleted for %s."
154
  msgstr ""
155
 
156
- #: includes/tools-page.php:79
157
- msgid "Comment Deletion Complete"
158
  msgstr ""
159
 
160
- #: includes/tools-page.php:95
161
- msgid "Delete all comments in WordPress."
162
  msgstr ""
163
 
164
- #: includes/tools-page.php:96
165
- msgid ""
166
- "%s: This function and will affect your entire site. Use it only if you want "
167
- "to delete comments <em>everywhere</em>."
168
  msgstr ""
169
 
170
- #: includes/tools-page.php:98
171
- msgid "For certain post types"
172
  msgstr ""
173
 
174
- #: includes/tools-page.php:110
175
- msgid ""
176
- "%s: Deleting comments will remove existing comment entries in the database "
177
- "and cannot be reverted without a database backup."
178
  msgstr ""
179
 
180
- #: includes/tools-page.php:115
181
- msgid "Total Comments:"
182
  msgstr ""
183
 
184
- #. Plugin Name of the plugin/theme
185
- msgid "Disable Comments"
186
  msgstr ""
187
 
188
- #. Plugin URI of the plugin/theme
189
- msgid "https://wordpress.org/plugins/disable-comments/"
190
  msgstr ""
191
 
192
- #. Description of the plugin/theme
193
- msgid ""
194
- "Allows administrators to globally disable comments on their site. Comments "
195
- "can be disabled according to post type."
196
  msgstr ""
197
 
198
- #. Author of the plugin/theme
199
- msgid "Samir Shah"
200
  msgstr ""
201
 
202
- #. Author URI of the plugin/theme
203
- msgid "http://www.rayofsolaris.net/"
204
  msgstr ""
205
 
206
- #: disable-comments.php:427
207
- msgctxt "settings menu title"
208
- msgid "Disable Comments"
209
  msgstr ""
210
 
211
- #: includes/settings-page.php:50
212
- msgctxt "settings page title"
213
- msgid "Disable Comments"
214
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2020 WPDeveloper
2
+ # This file is distributed under the GPL-3.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Disable Comments 2.0.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/disable-comments\n"
 
 
 
 
 
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2020-11-27T13:34:45+00:00\n"
13
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
+ "X-Generator: WP-CLI 2.5.0-alpha\n"
15
+ "X-Domain: disable-comments\n"
16
+
17
+ #. Plugin Name of the plugin
18
+ #: views/settings.php:9
19
+ msgid "Disable Comments"
20
+ msgstr ""
21
+
22
+ #. Plugin URI of the plugin
23
+ msgid "https://wordpress.org/plugins/disable-comments/"
24
+ msgstr ""
25
+
26
+ #. Description of the plugin
27
+ msgid "Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools."
28
+ msgstr ""
29
+
30
+ #. Author of the plugin
31
+ msgid "WPDeveloper"
32
+ msgstr ""
33
+
34
+ #. Author URI of the plugin
35
+ msgid "https://wpdeveloper.net"
36
+ msgstr ""
37
+
38
+ #: disable-comments.php:142
39
  msgid "Disable Comments requires WordPress version %s or greater."
40
  msgstr ""
41
 
42
+ #: disable-comments.php:397
43
+ #: disable-comments.php:554
44
+ #: disable-comments.php:561
45
  msgid "Comments are closed."
46
  msgstr ""
47
 
48
+ #: disable-comments.php:501
49
+ msgid "Note: The <em>Disable Comments</em> plugin is currently active, and comments are completely disabled on: %s. Many of the settings below will not be applicable for those post types."
 
 
 
50
  msgstr ""
51
 
52
+ #: disable-comments.php:501
53
  msgid ", "
54
  msgstr ""
55
 
56
+ #: disable-comments.php:545
57
+ msgid "The <strong>Disable Comments</strong> plugin is active, but isn't configured to do anything yet. Visit the <a href=\"%s\">configuration page</a> to choose which post types to disable comments on."
 
 
 
58
  msgstr ""
59
 
60
+ #: disable-comments.php:634
61
+ #: views/partials/_disable.php:3
62
  msgid "Settings"
63
  msgstr ""
64
 
65
+ #: disable-comments.php:635
66
  msgid "Tools"
67
  msgstr ""
68
 
69
+ #: disable-comments.php:644
70
+ msgctxt "settings menu title"
71
+ msgid "Disable Comments"
72
+ msgstr ""
73
+
74
+ #: disable-comments.php:674
75
+ #: views/partials/_delete.php:51
76
+ #: views/settings.php:12
77
  msgid "Delete Comments"
78
  msgstr ""
79
 
80
+ #: disable-comments.php:708
81
+ msgid "Default (no type)"
 
 
82
  msgstr ""
83
 
84
+ #: disable-comments.php:803
85
+ msgid "Saved"
 
 
86
  msgstr ""
87
 
88
+ #: disable-comments.php:832
89
+ #: disable-comments.php:866
90
+ #: disable-comments.php:889
91
+ msgid "All comments has been deleted"
92
  msgstr ""
93
 
94
+ #: disable-comments.php:834
95
+ #: disable-comments.php:838
96
+ msgid "Internal error occured. Please try again later."
 
 
97
  msgstr ""
98
 
99
+ #: includes/cli.php:122
100
+ msgid "Comments is disabled everywhere. "
101
  msgstr ""
102
 
103
+ #: includes/cli.php:127
104
+ #: includes/cli.php:130
105
+ msgid "Comments disabled for %s. "
106
  msgstr ""
107
 
108
+ #: includes/cli.php:134
109
+ msgid "Comments enabled for %s. "
 
 
 
 
110
  msgstr ""
111
 
112
+ #: includes/cli.php:144
113
+ msgid "Custom post types: %s. "
 
114
  msgstr ""
115
 
116
+ #: includes/cli.php:149
117
+ msgid "Disable Comments via XML-RPC. "
118
  msgstr ""
119
 
120
+ #: includes/cli.php:153
121
+ msgid "Disable Comments via REST API. "
122
+ msgstr ""
123
+
124
+ #: views/partials/_delete.php:6
125
+ #: views/partials/_disable.php:30
126
+ msgid "Note:"
127
+ msgstr ""
128
+
129
+ #: views/partials/_delete.php:6
130
+ msgid "These settings will permanently delete comments for your entire website, or for specific posts and comment types."
131
+ msgstr ""
132
+
133
+ #: views/partials/_delete.php:9
134
+ #: views/partials/_disable.php:7
135
+ msgid "Everywhere:"
136
+ msgstr ""
137
+
138
+ #: views/partials/_delete.php:9
139
+ msgid "Permanently delete all comments on your WordPress website"
140
+ msgstr ""
141
+
142
+ #: views/partials/_delete.php:10
143
+ #: views/partials/_delete.php:33
144
+ #: views/partials/_delete.php:46
145
+ #: views/partials/_disable.php:8
146
+ msgid "Warnings:"
147
+ msgstr ""
148
+
149
+ #: views/partials/_delete.php:10
150
+ msgid "This will permanently delete comments everywhere on your website."
151
+ msgstr ""
152
+
153
+ #: views/partials/_delete.php:14
154
+ msgid "On Certain Post Types:"
155
  msgstr ""
156
 
157
+ #: views/partials/_delete.php:29
158
+ #: views/partials/_disable.php:26
159
+ msgid "Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type)."
160
+ msgstr ""
161
+
162
+ #: views/partials/_delete.php:30
163
+ #: views/partials/_disable.php:27
164
  msgid "Custom post types:"
165
  msgstr ""
166
 
167
+ #: views/partials/_delete.php:33
168
+ msgid "This will remove existing comment entries for the selected post type(s) in the database and cannot be reverted without a database backups."
169
+ msgstr ""
170
+
171
+ #: views/partials/_delete.php:37
172
+ msgid "Delete Certain Comment Types:"
173
+ msgstr ""
174
+
175
+ #: views/partials/_delete.php:46
176
+ msgid "Deleting comments by comment type will remove existing comment entries of the selected comment type(s) in the database and cannot be reverted without a database backup."
177
+ msgstr ""
178
+
179
+ #: views/partials/_delete.php:48
180
+ msgid "Total Comments:"
181
+ msgstr ""
182
+
183
+ #: views/partials/_delete.php:189
184
+ msgid "No comments are available for deletion."
185
+ msgstr ""
186
+
187
+ #: views/partials/_disable.php:4
188
+ msgid "Configure the settings below to disable comments globally or on specific types of posts."
189
  msgstr ""
190
 
191
+ #: views/partials/_disable.php:7
192
+ msgid "Disable comments globally on your entire website"
193
+ msgstr ""
194
+
195
+ #: views/partials/_disable.php:8
196
+ msgid "This will disable comments from every page and post on your website. Use this setting if you do not want to show comments anywhere."
197
+ msgstr ""
198
+
199
+ #: views/partials/_disable.php:12
200
+ msgid "On Specific Post Types:"
201
+ msgstr ""
202
+
203
+ #: views/partials/_disable.php:30
204
+ msgid "Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts. Comments will be visible on all other post types."
205
+ msgstr ""
206
+
207
+ #: views/partials/_disable.php:34
208
+ msgid "Disable Comments With API"
209
+ msgstr ""
210
+
211
+ #: views/partials/_disable.php:35
212
+ msgid "You can disable comments made on your website using WordPress specifications."
213
+ msgstr ""
214
+
215
+ #: views/partials/_disable.php:42
216
+ #: views/partials/_disable.php:52
217
+ msgid "On"
218
+ msgstr ""
219
+
220
+ #: views/partials/_disable.php:43
221
+ #: views/partials/_disable.php:53
222
+ msgid "Off"
223
+ msgstr ""
224
+
225
+ #: views/partials/_disable.php:45
226
+ msgid "Disable Comments via XML-RPC"
227
+ msgstr ""
228
+
229
+ #: views/partials/_disable.php:54
230
+ msgid "Disable Comments via REST API"
231
+ msgstr ""
232
+
233
+ #: views/partials/_disable.php:58
234
+ msgid "Turning on these settings will disable any comments made on your website via XML-RPC or REST API specifications."
235
+ msgstr ""
236
+
237
+ #: views/partials/_disable.php:62
238
  msgid "Save Changes"
239
  msgstr ""
240
 
241
+ #: views/partials/_menu.php:3
242
+ msgid "About Us"
243
  msgstr ""
244
 
245
+ #: views/partials/_menu.php:4
246
+ msgid "All Plugins"
247
  msgstr ""
248
 
249
+ #: views/partials/_menu.php:5
250
+ msgid "Support Forum"
251
  msgstr ""
252
 
253
+ #: views/partials/_menu.php:6
254
+ msgid "Docs"
255
  msgstr ""
256
 
257
+ #: views/partials/_menu.php:7
258
+ msgid "Terms Of Service"
259
  msgstr ""
260
 
261
+ #: views/partials/_menu.php:8
262
+ msgid "Privacy"
263
  msgstr ""
264
 
265
+ #: views/partials/_sidebar.php:3
266
+ msgid "Read Our Tutorials"
 
 
267
  msgstr ""
268
 
269
+ #: views/partials/_sidebar.php:26
270
+ msgid "What Does This Disable Comments Plugin Do"
271
  msgstr ""
272
 
273
+ #: views/partials/_sidebar.php:49
274
+ msgid "How To Use Disable Comments Plugin With WP-CLI"
 
 
275
  msgstr ""
276
 
277
+ #: views/partials/_sidebar.php:72
278
+ msgid "How to Disable Comments on Specific Types Of Posts"
279
  msgstr ""
280
 
281
+ #: views/partials/_sidebar.php:95
282
+ msgid "Disable Comments For Some Particular Post"
283
  msgstr ""
284
 
285
+ #: views/partials/_sidebar.php:118
286
+ msgid "Disable Comment For WordPress Media Files"
287
  msgstr ""
288
 
289
+ #: views/partials/_sidebar.php:128
290
+ msgid "Disable Comments For WordPress Pages"
 
 
291
  msgstr ""
292
 
293
+ #: views/settings.php:6
294
+ msgid "Version"
295
  msgstr ""
296
 
297
+ #: views/setup-settings.php:17
298
+ msgid "GETTING STARTED"
299
  msgstr ""
300
 
301
+ #: views/setup-settings.php:20
302
+ msgid "Disable comments"
 
303
  msgstr ""
304
 
305
+ #: views/setup-settings.php:23
306
+ msgid "FINALIZE"
307
+ msgstr ""
308
+
309
+ #: views/setup-settings.php:30
310
+ msgid "Getting Started"
311
+ msgstr ""
312
+
313
+ #: views/setup-settings.php:31
314
+ msgid "Easily get started with this easy setup wizard and complete setting up your Knowledge Base."
315
+ msgstr ""
316
+
317
+ #: views/setup-settings.php:39
318
+ msgid "Want to help make Disable Comments even better?"
319
+ msgstr ""
320
+
321
+ #: views/setup-settings.php:40
322
+ msgid "What we collect."
323
+ msgstr ""
324
+
325
+ #: views/setup-settings.php:41
326
+ msgid "We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins, themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise."
327
+ msgstr ""
328
+
329
+ #: views/setup-settings.php:50
330
+ msgid "Great Job!"
331
+ msgstr ""
332
+
333
+ #: views/setup-settings.php:51
334
+ msgid "Your documentation page is ready! Make sure to add more articles and assign them to proper categories and you are good to go."
335
+ msgstr ""
336
+
337
+ #: views/setup-settings.php:57
338
+ msgid "VISIT OUR DOCUMENTATION PAGE"
339
+ msgstr ""
340
+
341
+ #: views/setup-settings.php:61
342
+ msgid "Previous"
343
+ msgstr ""
344
+
345
+ #: views/setup-settings.php:62
346
+ msgid "Next"
347
+ msgstr ""
348
+
349
+ #: views/setup-settings.php:63
350
+ msgid "Skip"
351
+ msgstr ""
352
+
353
+ #: views/setup-settings.php:68
354
+ msgid "Return to Dashboard"
355
+ msgstr ""
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
- === Disable Comments ===
2
- Contributors: Asif2BD, priyomukul, wpdevteam, re_enter_rupok, solarissmoke, garrett-eclipse
3
  Donate link: https://wpdeveloper.net/
4
- Tags: comments, disable, disable comments, delete comments, stop spam, bulk comment delete, comment management, global, stop comment
5
  Requires at least: 5.0
6
  Tested up to: 5.5
7
  Requires PHP: 5.4
8
- Stable tag: 1.11.0
9
  License: GPL-3.0-or-later
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
@@ -13,37 +13,66 @@ Allows administrators to globally disable comments on their site. Comments can b
13
 
14
  == Description ==
15
 
16
- This plugin allows administrators to globally disable comments on any post type (posts, pages, attachments, etc.) so that these settings cannot be overridden for individual posts. It also removes all comment-related fields from edit and quick-edit screens. On multisite installations, it can be used to disable comments on the entire network.
17
 
18
- Additionally, comment-related items can be removed from the Dashboard, Widgets, the Admin Menu and the Admin Bar.
19
 
20
- **Important note**: Use this plugin if you don't want comments at all on your site (or on certain post types). Don't use it if you want to selectively disable comments on individual posts - WordPress lets you do that anyway. If you don't know how to disable comments on individual posts, there are instructions in [the FAQ](https://wordpress.org/plugins/disable-comments/faq/).
21
 
22
- If you come across any bugs or have suggestions, please use the plugin support forum. I can't fix it if I don't know it's broken! Please check the [FAQ](https://wordpress.org/plugins/disable-comments/faq/) for common issues.
 
23
 
24
- Want to contribute? Here's the [GitHub development repository](https://github.com/WPDevelopers/disable-comments).
25
-
26
- A [must-use version](https://github.com/WPDevelopers/disable-comments-mu) of the plugin is also available.
27
 
 
 
28
 
29
- ### Details
30
 
31
- The plugin provides the option to **completely disable the commenting feature in WordPress**. When this option is selected, the following changes are made:
32
 
33
- * All "Comments" links are hidden from the Admin Menu and Admin Bar;
34
- * All comment-related sections ("Recent Comments", "Discussion" etc.) are hidden from the WordPress Dashboard;
35
  * All comment-related widgets are disabled (so your theme cannot use them);
36
- * The "Discussion" settings page is hidden;
37
  * All comment RSS/Atom feeds are disabled (and requests for these will be redirected to the parent post);
38
  * The X-Pingback HTTP header is removed from all pages;
39
  * Outgoing pingbacks are disabled.
40
  * **[New]** Delete comments by type.
41
 
42
- **Please delete any existing comments on your site before applying this setting, otherwise (depending on your theme) those comments may still be displayed to visitors. You can use the Delete Comments tool to delete any existing comments on your site.**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
 
44
- ### Advanced Configuration
45
 
46
- Some of the plugin's behaviour can be modified by site administrators and plugin/theme developers through code:
 
 
 
 
 
 
 
 
47
 
48
  * Define `DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE` and set it to `false` to prevent the plugin from replacing the theme's comment template with an empty one.
49
 
@@ -52,25 +81,25 @@ Some of the plugin's behaviour can be modified by site administrators and plugin
52
  These definitions can be made either in your main `wp-config.php` or in your theme's `functions.php` file.
53
 
54
 
55
- ### This plugin is now maintained by the Team [WPDeveloper](https://wpdeveloper.net/).
56
 
57
 
58
- ### 💙 LOVED Disable Comments?
59
 
60
  - Join our [Facebook Group](https://www.facebook.com/groups/wpdeveloper.net/)
61
 
62
  - If you love Disable Comments, [rate us on WordPress](https://wordpress.org/support/plugin/disable-comments/reviews/?filter=5)
63
 
64
 
65
- 🔥 GET FREEBIES FOR YOUR WORDPRESS SITE
66
 
67
  Consider checking out our other WordPress solutions & boost your WordPress website:
68
 
69
  🔝 [Essential Addons For Elementor](https://wordpress.org/plugins/essential-addons-for-elementor-lite/): Most popular Elementor addons with 70+ widgets & ready blocks
70
 
71
- 🔔[NotificationX](https://notificationx.com/) – Best Social Proof & FOMO Marketing Solution to increase conversion rates.
72
 
73
- 📄 [EmbedPress](https://wordpress.org/plugins/embedpress/): EmbedPress lets you embed videos, images, posts, audio, maps and upload PDF, DOC, PPT & all other types of content into your WordPress site with one-click and showcase it beautifully for the visitors.
74
 
75
  ☁ [Templately](https://wordpress.org/plugins/templately/): Free templates library for Elementor & Gutenberg along with the cloud collaboration for WordPress.
76
 
@@ -91,7 +120,7 @@ Visit [WPDeveloper](https://wpdeveloper.net/) to learn more about how to do bett
91
 
92
  = Modern Way: =
93
  1. Go to the WordPress Dashboard "Add New Plugin" section.
94
- 2. Search For "Disable Comments".
95
  3. Install, then Activate it.
96
  4. The plugin settings can be accessed via the 'Settings' menu in the administration area (either your site administration for single-site installs, or your network administration for network installs).
97
 
@@ -118,8 +147,6 @@ If you still see the message, then it means your theme is overriding this behavi
118
 
119
  = I only want to disable comments on certain posts, not globally. What do I do? =
120
 
121
- Don't install this plugin!
122
-
123
  Go to the edit page for the post you want to disable comments on. Scroll down to the "Discussion" box, where you will find the comment options for that post. If you don't see a "Discussion" box, then click on "Screen Options" at the top of your screen, and make sure the "Discussion" checkbox is checked.
124
 
125
  You can also bulk-edit the comment status of multiple posts from the [posts screen](https://codex.wordpress.org/Posts_Screen).
@@ -136,13 +163,19 @@ Go to the tools page for the Disable Comments plugin and utlize the Delete Comme
136
  2. Delete Comments under Tools menu.
137
 
138
 
139
-
140
  == Changelog ==
141
 
142
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
143
  and this project adheres to [Semantic Versioning](http://semver.org/).
144
  This will be maiintained from August 19, 2020 - @asif2bd
145
 
 
 
 
 
 
 
 
146
  = [1.11.0] - 2020-08-22 =
147
  * Introducing Delete Comment by Type - Contribution by garretthyder
148
  * PHP 7.4 Tested
1
+ === Disable Comments - Remove Comments & Protect From Spam ===
2
+ Contributors: Asif2BD, priyomukul, wpdevteam, re_enter_rupok, tusharimran, alimuzzamanalim, solarissmoke, garrett-eclipse
3
  Donate link: https://wpdeveloper.net/
4
+ Tags: comments, delete comments, disable, disable comments, stop spam, remove comments, anti spam, disable xml-rpc, hide comment, XML-RPC, REST-API, WP CLI
5
  Requires at least: 5.0
6
  Tested up to: 5.5
7
  Requires PHP: 5.4
8
+ Stable tag: 2.0.0
9
  License: GPL-3.0-or-later
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
13
 
14
  == Description ==
15
 
16
+ Instantly allow or disallow comments from any post type in WordPress (Pages, Posts or Media) to stop the spammers and gain complete control over your full website.
17
 
18
+ [More About Plugin](https://wpdeveloper.net/plugins/disable-comments/) ◼️ [Documentation](https://wpdeveloper.net/docs-category/disable-comments/) ◼️ [Support Forum](https://wordpress.org/support/plugin/disable-comments/)
19
 
20
+ https://www.youtube.com/watch?v=J9AteKzQpPs
21
 
22
+ ## Take Global Control Over Your WordPress Site
23
+ Override all comments-related settings throughout your website & manage your comments just the way you want.
24
 
25
+ ## Disable Comments On Posts, Pages & Media
26
+ Choose which posts, pages or media should allow comments from site visitors & configure Disable Comments accordingly
 
27
 
28
+ ## Disallow Comments On Multi-Site Network
29
+ Have multiple websites? Get rid of irrelevant comments on the entire network using Disable Comments Plugin
30
 
 
31
 
32
+ ## KEY FEATURES OF DISABLE COMMENTS
33
 
34
+ * All Comments links are hidden from the Admin Menu and Admin Bar;
35
+ * All comment-related sections (Recent Comments”, Discussion etc.) are hidden from the WordPress Dashboard;
36
  * All comment-related widgets are disabled (so your theme cannot use them);
37
+ * The Discussion settings page is hidden;
38
  * All comment RSS/Atom feeds are disabled (and requests for these will be redirected to the parent post);
39
  * The X-Pingback HTTP header is removed from all pages;
40
  * Outgoing pingbacks are disabled.
41
  * **[New]** Delete comments by type.
42
 
43
+ Please delete any existing comments on your site **before applying this setting**, otherwise (depending on your theme) those comments may still be displayed to visitors. You can use the **Delete Comments tool** to delete any existing comments on your site.
44
+
45
+ ## 🌟 WHAT’S NEW WITH DISABLE COMMENTS 2.0
46
+
47
+ **AMAZING USER FRIENDLY INTERFACE**
48
+ Easily configure your comment-related settings with an amazing and attractive app-like user interface.
49
+
50
+ **WP-CLI COMMANDS TO DISABLE COMMENTS**
51
+ Use WP-CLI control for comment-related settings to disable comments on posts, pages, attachments or everywhere on your website.
52
+
53
+ **GET STARTED WITH QUICK SETUP WIZARD**
54
+ Use the quick setup wizard after activating the plugin to instantly configure comment-related settings for your WordPress website.
55
+
56
+ **DISABLE COMMENTS ON DOCS**
57
+ Instantly disable comments on your documentation pages or WordPress knowledge base with a single click.
58
+
59
+ **DELETE CERTAIN COMMENT TYPE(S)**
60
+ Permanently delete certain comment types from your WordPress website including WooCommerce product reviews as well as generic comments.
61
+
62
+ **DISABLE COMMENTS VIA XML-RPC And REST API**
63
+ Block any comments made on your WordPress website via XML-RPC specification and REST API.
64
 
65
+ **Important note**: Use this plugin if you don't want comments at all on your site (or on certain post types). Don't use it if you want to selectively disable comments on individual posts - WordPress lets you do that anyway. If you don't know how to disable comments on individual posts, there are instructions in **[the FAQ](https://wordpress.org/plugins/disable-comments/#faq).**
66
 
67
+ If you come across any bugs or have suggestions, please use the plugin support forum. I can't fix it if I don't know it's broken! Please check the **[FAQ](https://wordpress.org/plugins/disable-comments/#faq)** for common issues.
68
+
69
+ Want to contribute? Here's the **[GitHub development repository](https://github.com/WPDevelopers/disable-comments)**.
70
+
71
+ A [must-use version](https://github.com/WPDevelopers/disable-comments-mu) of the plugin is also available.
72
+
73
+ ### Advanced Configuration
74
+
75
+ Some of the plugin’s behaviour can be modified by site administrators and plugin/theme developers through code:
76
 
77
  * Define `DISABLE_COMMENTS_REMOVE_COMMENTS_TEMPLATE` and set it to `false` to prevent the plugin from replacing the theme's comment template with an empty one.
78
 
81
  These definitions can be made either in your main `wp-config.php` or in your theme's `functions.php` file.
82
 
83
 
84
+ **THIS PLUGIN IS NOW MAINTAINED BY THE TEAM** [WPDeveloper](https://wpdeveloper.net/).
85
 
86
 
87
+ ### 💙 LOVED DISABLE COMMENTS?
88
 
89
  - Join our [Facebook Group](https://www.facebook.com/groups/wpdeveloper.net/)
90
 
91
  - If you love Disable Comments, [rate us on WordPress](https://wordpress.org/support/plugin/disable-comments/reviews/?filter=5)
92
 
93
 
94
+ ### 🔥 GET FREEBIES FOR YOUR WORDPRESS SITE
95
 
96
  Consider checking out our other WordPress solutions & boost your WordPress website:
97
 
98
  🔝 [Essential Addons For Elementor](https://wordpress.org/plugins/essential-addons-for-elementor-lite/): Most popular Elementor addons with 70+ widgets & ready blocks
99
 
100
+ 🔔 [NotificationX](https://notificationx.com/) – Best Social Proof & FOMO Marketing Solution to increase conversion rates.
101
 
102
+ 📄 [EmbedPress](https://wordpress.org/plugins/embedpress/): EmbedPress lets you embed videos, images, posts, audio, maps and upload PDF, DOC, PPT & all other types of content into your WordPress site with one-click and showcase it beautifully for the visitors.
103
 
104
  ☁ [Templately](https://wordpress.org/plugins/templately/): Free templates library for Elementor & Gutenberg along with the cloud collaboration for WordPress.
105
 
120
 
121
  = Modern Way: =
122
  1. Go to the WordPress Dashboard "Add New Plugin" section.
123
+ 2. Search For "Disable Comments".
124
  3. Install, then Activate it.
125
  4. The plugin settings can be accessed via the 'Settings' menu in the administration area (either your site administration for single-site installs, or your network administration for network installs).
126
 
147
 
148
  = I only want to disable comments on certain posts, not globally. What do I do? =
149
 
 
 
150
  Go to the edit page for the post you want to disable comments on. Scroll down to the "Discussion" box, where you will find the comment options for that post. If you don't see a "Discussion" box, then click on "Screen Options" at the top of your screen, and make sure the "Discussion" checkbox is checked.
151
 
152
  You can also bulk-edit the comment status of multiple posts from the [posts screen](https://codex.wordpress.org/Posts_Screen).
163
  2. Delete Comments under Tools menu.
164
 
165
 
 
166
  == Changelog ==
167
 
168
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
169
  and this project adheres to [Semantic Versioning](http://semver.org/).
170
  This will be maiintained from August 19, 2020 - @asif2bd
171
 
172
+ = [2.0.0] - 2020-11-28 =
173
+ * Improved UI for Settings page
174
+ * New feature: Manage Disable Comments settings with WP-CLI
175
+ * New feature: Quick Setup Wizard
176
+ * New feature: Disable Comments via REST-API
177
+ * New feature: Disable Comments via XML-RPC
178
+
179
  = [1.11.0] - 2020-08-22 =
180
  * Introducing Delete Comment by Type - Contribution by garretthyder
181
  * PHP 7.4 Tested
src/disable-comments.js DELETED
@@ -1,5 +0,0 @@
1
- wp.domReady(() => {
2
- if(wp.blocks) {
3
- wp.blocks.unregisterBlockType('core/latest-comments');
4
- }
5
- });
 
 
 
 
 
includes/comments-template.php → views/comments.php RENAMED
File without changes
views/partials/_delete.php ADDED
@@ -0,0 +1,194 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <form id="deleteCommentSettings" action="#">
2
+ <?php
3
+ if ($this->get_all_comments_number() > 0) :
4
+ ?>
5
+ <div class="disable__comment__option mb50">
6
+ <p class="subtitle"><span class="danger"><?php _e('Note:', 'disable-comments'); ?></span> <?php _e('These settings will permanently delete comments for your entire website, or for specific posts and comment types.', 'disable-comments'); ?></p>
7
+ <div class="disable_option dc-text__block mb30 mt30">
8
+ <input type="radio" id="delete_everywhere" name="delete_mode" value="<?php echo esc_attr('delete_everywhere'); ?>" <?php checked($this->options['remove_everywhere']); ?> />
9
+ <label for="delete_everywhere"><?php _e('Everywhere:', 'disable-comments'); ?> <span><?php _e('Permanently delete all comments on your WordPress website', 'disable-comments'); ?></span></label>
10
+ <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('This will permanently delete comments everywhere on your website.', 'disable-comments'); ?></p>
11
+ </div>
12
+ <div class="disable_option dc-text__block mb30">
13
+ <input type="radio" id="selected_delete_types" name="delete_mode" value="<?php echo esc_attr('selected_delete_types'); ?>" <?php checked(!$this->options['remove_everywhere']); ?> />
14
+ <label for="selected_delete_types"><?php _e('On Certain Post Types:', 'disable-comments'); ?></label>
15
+ <div class="delete__checklist">
16
+ <?php
17
+ $types = $this->get_all_post_types();
18
+ foreach ($types as $key => $value) {
19
+ echo '<div class="delete__checklist__item">
20
+ <input type="checkbox" id="delete__checklist__item-' . $key . '" name="delete_types[]" value="' . esc_attr($key) . '" ' . checked(in_array($key, $this->options['disabled_post_types']), true, false) . '>
21
+ <label for="delete__checklist__item-' . $key . '">' . $value->labels->name . '</label>
22
+ </div>';
23
+ }
24
+ ?>
25
+ <?php if ($this->networkactive) :
26
+ $extradeletetypes = implode(', ', (array) $this->options['extra_post_types']);
27
+ ?>
28
+ <p class="indent" id="extradeletetypes">
29
+ <?php _e('Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type).', 'disable-comments'); ?>
30
+ <br /><label><?php _e('Custom post types:', 'disable-comments'); ?> <input type="text" name="delete_extra_post_types" size="30" value="<?php echo esc_attr($extradeletetypes); ?>" /></label></p>
31
+ <?php endif; ?>
32
+ </div>
33
+ <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments') ?></span> <?php _e('This will remove existing comment entries for the selected post type(s) in the database and cannot be reverted without a database backups.', 'disable-comments'); ?></p>
34
+ </div>
35
+ <div class="disable_option dc-text__block">
36
+ <input type="radio" id="selected_delete_comment_types" name="delete_mode" value="<?php echo esc_attr('selected_delete_comment_types'); ?>" />
37
+ <label for="selected_delete_comment_types"><?php _e('Delete Certain Comment Types:', 'disable-comments'); ?></label>
38
+ <ul class="delete__feedback" id="listofdeletecommenttypes">
39
+ <?php
40
+ $commenttypes = $this->get_all_comment_types();
41
+ foreach ($commenttypes as $key => $value) {
42
+ echo "<li><label for='comment-type-$key'><input type='checkbox' name='delete_comment_types[]' value=" . esc_attr($key) . " id='comment-type-$key'> {$value}</label></li>";
43
+ }
44
+ ?>
45
+ </ul>
46
+ <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('Deleting comments by comment type will remove existing comment entries of the selected comment type(s) in the database and cannot be reverted without a database backup.', 'disable-comments'); ?></p>
47
+ </div>
48
+ <h4 class="total-comments"><?php _e('Total Comments:', 'disable-comments'); ?> <?php echo $this->get_all_comments_number(); ?></h4>
49
+ </div>
50
+ <!-- save -->
51
+ <button class="button button__delete"><?php _e('Delete Comments', 'disable-comments'); ?></button>
52
+ <?php
53
+ else :
54
+ ?>
55
+ <div class="delete-comments-not-found">
56
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1200 800" style="enable-background:new 0 0 1200 800;" xml:space="preserve">
57
+ <style type="text/css">
58
+ .st0 {
59
+ fill: #EEEEEE;
60
+ }
61
+
62
+ .st1 {
63
+ fill: #BDBDBD;
64
+ }
65
+
66
+ .st2 {
67
+ fill: url(#SVGID_1_);
68
+ }
69
+
70
+ .st3 {
71
+ fill: #F2DAD4;
72
+ }
73
+
74
+ .st4 {
75
+ fill: #192B59;
76
+ }
77
+
78
+ .st5 {
79
+ fill: url(#SVGID_2_);
80
+ }
81
+
82
+ .st6 {
83
+ fill: url(#SVGID_3_);
84
+ }
85
+
86
+ .st7 {
87
+ fill: #043146;
88
+ }
89
+ </style>
90
+ <g>
91
+ <g>
92
+ <g>
93
+ <path class="st0" d="M403.5,365.2c5.6,7.9,1,18.2-4.6,24c-6.9,7.1-13.8,6-17,12.3c-3.8,7.6,4.3,13.2,0.1,21.2
94
+ c-2.6,4.9-6.2,3.7-11.4,9.9c-6.3,7.6-0.1,9.7-4.6,15.2c-14.4,17.8-20.2,5.4-29,10.1c-11.4,6.1-19,11.2-24.6,10
95
+ c-21.9-4.8-15.2-19.2-25.8-24.7c-14.4-7.5-21.4-38.2-11.5-49c5.2-5.7,10.3-6.4,10.7-11.1c0.7-6.8-9.6-8.8-10.6-17
96
+ c-1.2-9.3,11.1-13.8,9.3-21.6c-1.8-7.6-14.4-7.4-15.2-12.8c-1.2-8.3,25.8-23.1,53.7-22.2c13.4,0.4,35.1,4.8,38.8,15.9
97
+ c2.1,6.4-3.4,10.6-0.3,18.9c2.2,6,7.2,9.4,13.7,13.8C381.4,362.3,393.6,351.2,403.5,365.2z" />
98
+ <path class="st1" d="M336.7,360.3c4.4-0.2,6.6,29.1,4.1,33c-2.6,3.8-7.3,6.7-7.7,10.9c-0.3,4.2,1.6,78.6,3.1,77.5
99
+ c1.6-1.1,14.4-20.6,11.9-25.1c-2.6-4.5-5.5-11.6-4.9-17.5c0.6-5.9,0.6-14.4,2.3-14.2c1.7,0.2,0.3,14.8,1.4,17.6
100
+ c1.2,2.8,1.4,5,3,5.1c1.7,0,1.7-15.4,4.2-15.1c2.5,0.3,0.8,23-0.1,27.2c-0.9,4.2-3.8,18.7-6.6,24c-2.7,5.3-11.1,10.9-11.3,12.8
101
+ c-0.2,1.8,1.1,45.1,1.1,45.1l-21.9,0.4c0,0,8.1-85.4,6.3-88.3c-1.8-2.8-13.2-25.9-15.7-28.3c-2.4-2.4-3.9-16.7-2.6-16.9
102
+ c1.3-0.2,2,13.8,4.7,14c2.7,0.2,4.1-27.1,6.1-26.9c1.9,0.2-1.9,28.4-0.8,30.1c1,1.7,7.1,12.2,9.2,11.9c2-0.2-1.1-76.8,0.6-77.7
103
+ c1.7-0.9,3-0.1,4.1,7.9c1.1,8,3.1,25.5,4.3,25.5c1.2,0,4.2-2.7,4.3-4.4C335.9,387.2,334.7,360.3,336.7,360.3z" />
104
+ </g>
105
+ <g>
106
+ <path class="st0" d="M810.6,447.2c-3.2,4.5-0.6,10.3,2.6,13.6c3.9,4,7.8,3.4,9.6,7c2.2,4.3-2.4,7.5,0,12c1.5,2.8,3.5,2.1,6.5,5.6
107
+ c3.6,4.3,0.1,5.5,2.6,8.6c8.2,10.1,11.4,3.1,16.4,5.7c6.4,3.4,10.8,6.4,13.9,5.7c12.4-2.7,8.6-10.9,14.6-14
108
+ c8.1-4.2,12.1-21.6,6.5-27.7c-2.9-3.2-5.8-3.6-6.1-6.3c-0.4-3.9,5.4-5,6-9.6c0.7-5.3-6.3-7.8-5.3-12.2c1-4.3,8.2-4.2,8.6-7.3
109
+ c0.7-4.7-14.6-13.1-30.4-12.6c-7.6,0.2-19.9,2.7-21.9,9c-1.2,3.6,1.9,6,0.2,10.7c-1.3,3.4-4.1,5.3-7.8,7.8
110
+ C823.1,445.6,816.2,439.3,810.6,447.2z" />
111
+ <path class="st1" d="M848.5,444.4c-2.5-0.1-3.8,16.5-2.3,18.7c1.4,2.2,4.2,3.8,4.3,6.2c0.2,2.4-0.9,44.5-1.8,43.9
112
+ c-0.9-0.6-8.2-11.6-6.7-14.2c1.5-2.6,3.1-6.5,2.8-9.9c-0.3-3.4-0.3-8.1-1.3-8c-0.9,0.1-0.2,8.4-0.8,10c-0.7,1.6-0.8,2.8-1.7,2.9
113
+ c-0.9,0-1-8.7-2.4-8.5c-1.4,0.2-0.5,13,0,15.4c0.5,2.4,2.2,10.6,3.7,13.6c1.6,3,6.3,6.2,6.4,7.2c0.1,1-0.6,25.6-0.6,25.6
114
+ l12.4,0.2c0,0-4.6-48.4-3.6-50c1-1.6,7.5-14.7,8.9-16c1.4-1.3,2.2-9.5,1.5-9.6c-0.7-0.1-1.1,7.8-2.7,8
115
+ c-1.5,0.1-2.3-15.4-3.4-15.2c-1.1,0.1,1.1,16.1,0.5,17.1c-0.6,1-4,6.9-5.2,6.8c-1.1-0.1,0.6-43.5-0.4-44c-1-0.5-1.7-0.1-2.3,4.5
116
+ c-0.6,4.5-1.8,14.5-2.5,14.4c-0.7,0-2.4-1.5-2.4-2.5C848.9,459.6,849.6,444.5,848.5,444.4z" />
117
+ </g>
118
+
119
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="627.1564" y1="438.5578" x2="627.1564" y2="669.9148" gradientTransform="matrix(-1 0 0 1 1200 0)">
120
+ <stop offset="0" style="stop-color:#E5E5E5" />
121
+ <stop offset="0.4764" style="stop-color:#F4F4F4" />
122
+ <stop offset="1" style="stop-color:#FFFFFF" />
123
+ </linearGradient>
124
+ <ellipse class="st2" cx="572.8" cy="652.7" rx="416.2" ry="147.3" />
125
+ </g>
126
+ <g>
127
+ <path class="st3" d="M586,492.8c-1,1.9-2,4.2-2,5.7c0,1.5-0.2,7.1,0,7.8c0.2,0.7,6.7,1.8,9.4,1.6c2.7-0.2,5.1-2.8,5.3-3.4
128
+ c0.2-0.6,0.5-9,0-10C598.2,493.5,586,492.8,586,492.8z" />
129
+ <path class="st3" d="M553,495.8c-0.4,1.6-0.5,5.6-0.3,6.6c0.3,1,1.4,2.8,1.4,4.6c0,1.8,13,1.7,13.5,0.6c0.5-1.1,0.5-4.1,0.5-5.3
130
+ c-0.1-1.2,1.1-3.4,0.8-4.5c-0.4-1.2-1.8-3.4-3.2-3.7C564.3,493.7,553,495.8,553,495.8z" />
131
+ <path class="st4" d="M531.3,306.1c-2.6,9.7-5.1,40.1-3.3,52.4c1.8,12.3,6.5,46.1,6.5,61c0,14.9,5.2,39.3,7.6,48.2
132
+ c2.4,8.9,6,28.5,7.9,28.9c1.9,0.4,4.9,2.1,10.5,1.1c5.6-1.1,7.2-2.5,7.3-4.7c0.1-2.3-3.9-27.8-4.6-33.9
133
+ c-0.6-6.1-4.7-31.8-4.9-35.2c-0.2-3.4,3.3-15.5,3.7-22.6c0.4-7.1,2.2-32.5,3.2-35.9c1.1-3.4,3.6-19.8,4.7-19.9
134
+ c1.1-0.1,7.6,19.8,8.6,26.2c1,6.4,5.9,48,7.1,50.5c1.2,2.5-0.4,17.1-1.2,22.5c-0.8,5.4-1,48-0.1,49.1c0.9,1.1,5.7,3.2,8.8,3.2
135
+ c3.2,0,8.3-1.3,9-2.9c0.8-1.6-0.3-7.5,0.6-10.4c0.8-2.9,8.7-33,9.1-40.2c0.4-7.3-1.7-35.1-2-42c-0.3-6.9,2.9-27.6,3.6-33.2
136
+ c0.7-5.5,3.2-28.5,3.2-33.9c0-5.4-1-21.9-4.3-25.7C609.3,304.9,531.3,306.1,531.3,306.1z" />
137
+ <path class="st3" d="M659.1,216.4c1.3-0.9,3.5-2.6,3.8-3.7c0.4-1.2,1.7-4.3,3.2-5c1.5-0.7,4.6-1.7,6-2.2c1.4-0.5,5-2.6,5.7-2.9
138
+ c0.7-0.3,2.8-0.7,3.3,0.4c0.6,1.1-0.2,3.4-1.7,4c-1.5,0.6-5,1.7-4.7,2.5c0.3,0.8,3.7,1.6,6.4,0.3c2.7-1.3,7.3-2.5,8.3-3.1
139
+ c1.1-0.6,9-3.8,9.8-3.8c0.8,0,1.6,0.4,2,1.1c0.4,0.8,2.7-1.1,3.5,0.2c0.7,1.3-1,2-1.1,2.3c-0.1,0.4,1,0.8,1,1.7
140
+ c0,0.9-1.4,1.5-3.6,2.5c-2.2,1-12.2,7.3-13.8,8.2c-1.6,0.8-4.9,2.6-8.9,2.9c-4.1,0.4-9,0.6-10.1,2s-3.9,5.4-4.6,5.6
141
+ c-0.7,0.2-5.3,1-6.4-1.8C656.1,224.9,659.1,216.4,659.1,216.4z" />
142
+ <path class="st3" d="M486.6,209.4c-1.3-0.9-3.5-2.6-3.8-3.7c-0.4-1.2-1.7-4.3-3.2-5c-1.5-0.7-4.6-1.7-6-2.2
143
+ c-1.4-0.5-5-2.6-5.7-2.9c-0.7-0.3-2.8-0.7-3.3,0.4c-0.6,1.1,0.2,3.4,1.7,4c1.5,0.6,5,1.7,4.7,2.5c-0.3,0.8-3.7,1.6-6.4,0.3
144
+ c-2.7-1.3-7.3-2.5-8.3-3.1c-1.1-0.6-9-3.8-9.8-3.8c-0.8,0-1.6,0.4-2,1.1c-0.4,0.8-2.7-1.1-3.5,0.2c-0.7,1.3,1,2,1.1,2.3
145
+ c0.1,0.4-1,0.8-1,1.7c0,0.9,1.4,1.5,3.6,2.5c2.2,1,12.2,7.3,13.8,8.2c1.6,0.8,4.9,2.6,8.9,2.9c4.1,0.4,9,0.6,10.1,2
146
+ c1.2,1.5,2,3.3,2.7,3.5c0.7,0.2,5.3,1,6.4-1.8C487.7,215.8,486.6,209.4,486.6,209.4z" />
147
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="542.5208" y1="121.3129" x2="589.0369" y2="281.8409">
148
+ <stop offset="0" style="stop-color:#EC0314" />
149
+ <stop offset="0.9944" style="stop-color:#AF1431" />
150
+ </linearGradient>
151
+ <path class="st5" d="M560.3,166.8c-5.5,0.7-27.2,3.3-31,11.3c-3.8,7.9-7.2,26.9-9,32.3c-1.8,5.3-5.3,17.9-6.8,17.9
152
+ s-26.5-19.3-27-19.3c-0.5,0,0.6,4.6-2.3,7.7c-2.9,3-5.1,2.2-4.5,3.7c0.5,1.5,14.1,17.8,17.6,22.5c3.6,4.7,18.8,17.2,22.6,17
153
+ c3.8-0.2,16.8-19.2,17.7-19.2c1,0-1.2,30.4-2.9,36.8c-1.7,6.4-9,34.5-7.1,37c2,2.5,23.3,9.7,39.8,10.2c16.5,0.5,50.1-5.6,50.7-9.9
154
+ c0.6-4.3-6.9-27.9-6.9-37.4c0-9.5-2.1-43.3-0.7-43.5c1.4-0.2,10.6,25.8,19.7,25.2c9-0.5,27.7-19.4,29.7-23c2-3.6,6-7.4,4.9-8
155
+ c-1.1-0.5-4.9-4-4.9-6.7s0.3-6.1-0.9-5.5c-1.2,0.5-8.8,7.3-12,9.2c-3.2,1.8-8.3,4.7-8.9,3.6c-0.6-1.1-10.4-19.5-11.2-23.2
156
+ c-0.7-3.7-5.6-28.7-9.8-31c-4.1-2.2-23.5-9.1-26.8-9.2C587.1,165.3,560.3,166.8,560.3,166.8z" />
157
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="569.2911" y1="149.3214" x2="576.8388" y2="175.3686">
158
+ <stop offset="0" style="stop-color:#F2BFAD" />
159
+ <stop offset="1" style="stop-color:#F2DAD4" />
160
+ </linearGradient>
161
+ <path class="st6" d="M560,160c0,2.6,1.4,6.1,0.3,6.9c-1,0.7,4.9,16.7,10.6,17.1c5.7,0.3,15.9-15.6,16.1-17.3
162
+ c0.2-1.8-0.5-8.1-0.7-8.4C586.2,158,560,160,560,160z" />
163
+ <path class="st4" d="M552.2,138.6c-1-6.9-3.2-13.4-1.7-20.1c1.5-6.7,6.3-14.9,16.3-16c10-1,14.7,2.8,19.7,9.1
164
+ c4.9,6.3,4.3,26.4,3,27.7c-1.3,1.3-9.7,5.3-19.2,5.4C560.6,144.9,552.2,138.6,552.2,138.6z" />
165
+ <path class="st3" d="M556.1,148.9c0,0,2,10.9,3.4,12c1.4,1.2,8.8,7.1,13.6,6.9c4.7-0.2,14.4-7,15-10.9c0.6-3.9,0-11.4,0.4-11.2
166
+ c0.4,0.1,3,0.4,3.5-3.6c0.5-4.1,0.4-10.4-1.2-10.5c-1.6-0.1-2.4,5.9-3.2,5.9c-0.9,0-1-8.6-2.5-10.5c-1.5-1.9-11.7-3.9-13.2-3.9
167
+ c-1.4,0-8,8.6-16.5,9.9c0,0,1.7,6.8,0.5,6.9c-1.3,0.1-3-5.4-4.2-5.4s-1.4,5.6-0.9,9.3c0.5,3.7,2.6,5.8,3.3,5.8
168
+ C554.8,149.5,555.3,148.4,556.1,148.9z" />
169
+ <path class="st7" d="M599.5,507c1.2,1.7,1,6.2,3.3,10.5c2.3,4.3,4.1,8,4.2,11c0.1,3.1-3.1,8-7.5,8.7c-4.4,0.7-9.4,1-11.7-0.2
170
+ c-2.2-1.2-4.9-3.2-4.9-6.5c0-3.3,0.5-9.6,0-10.7c-0.5-1.1-1-4.3-1-5.9c0-1.6-0.4-6.4,0.5-7.5c0.9-1.2,4.5-3.6,8.2-3.5
171
+ C594.2,502.9,598.5,505.5,599.5,507z" />
172
+ <path class="st7" d="M552.7,507c-1.2,1.7-1,6.2-3.3,10.5c-2.3,4.3-4.1,8-4.2,11c-0.1,3.1,3.1,8,7.5,8.7c4.4,0.7,9.4,1,11.7-0.2
173
+ c2.2-1.2,4.9-3.2,4.9-6.5c0-3.3-0.5-9.6,0-10.7c0.5-1.1,1-4.3,1-5.9c0-1.6,0.4-6.4-0.5-7.5c-0.9-1.2-4.5-3.6-8.2-3.5
174
+ C558,502.9,553.7,505.5,552.7,507z" />
175
+ </g>
176
+ <g>
177
+ <g>
178
+ <path class="st0" d="M468.6,207.2l-162.9-63.4c-5.3-2.1-7.9-8-5.9-13.3L348.2,6.2c2.1-5.3,8-7.9,13.3-5.9l162.9,63.4
179
+ c5.3,2.1,7.9,8,5.9,13.3l-48.4,124.3C479.8,206.6,473.9,209.2,468.6,207.2z" />
180
+ <path class="st1" d="M323.8,99.4L357,14.3c1.2-3,4.6-4.5,7.6-3.3L515,69.4c3,1.2,4.5,4.6,3.3,7.6l-33.1,85.2l-25.7-74.4
181
+ c-1.9-5.5-8.4-7.9-13.4-5l-53.5,31.3c-4.7,2.7-10.7,0.4-12.3-4.8L372.5,84c-1.9-6.1-9-8.8-14.4-5.5L323.8,99.4z" />
182
+ <path class="st0" d="M421.3,65.8c-3.4,8.6-13.1,12.9-21.7,9.5c-8.6-3.4-12.9-13.1-9.5-21.7c3.4-8.6,13.1-12.9,21.7-9.5
183
+ C420.4,47.5,424.7,57.2,421.3,65.8z" />
184
+ </g>
185
+ </g>
186
+ </g>
187
+ </svg>
188
+
189
+ <p class="error-message"><strong><?php _e('No comments are available for deletion.', 'disable-comments'); ?></strong></p>
190
+ </div>
191
+ <?php
192
+ endif;
193
+ ?>
194
+ </form>
views/partials/_disable.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <form id="disableCommentSaveSettings" action="#">
2
+ <div class="disable__comment__option mb50">
3
+ <h3 class="title"><?php _e('Settings', 'disable-comments'); ?></h3>
4
+ <p class="subtitle"><?php _e('Configure the settings below to disable comments globally or on specific types of posts.', 'disable-comments'); ?></p>
5
+ <div class="disable_option dc-text__block mb30 mt30">
6
+ <input type="radio" id="remove_everywhere" name="mode" value="<?php echo esc_attr('remove_everywhere') ?>" <?php checked($this->options['remove_everywhere']); ?> />
7
+ <label for="remove_everywhere"><?php _e('Everywhere:', 'disable-comments'); ?> <span><?php _e('Disable comments globally on your entire website', 'disable-comments'); ?></span></label>
8
+ <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('This will disable comments from every page and post on your website. Use this setting if you do not want to show comments anywhere.', 'disable-comments'); ?></p>
9
+ </div>
10
+ <div class="disable_option dc-text__block">
11
+ <input type="radio" id="selected_types" name="mode" value="<?php echo esc_attr('selected_types'); ?>" <?php checked(!$this->options['remove_everywhere']); ?> />
12
+ <label for="selected_types"><?php _e('On Specific Post Types:', 'disable-comments'); ?></label>
13
+ <div class="remove__checklist">
14
+ <?php
15
+ $types = $this->get_all_post_types();
16
+ foreach ($types as $key => $value) {
17
+ echo '<div class="remove__checklist__item">
18
+ <input type="checkbox" id="remove__checklist__item-' . $key . '" name="disabled_types[]" value="' . esc_attr($key) . '" ' . checked(in_array($key, $this->options['disabled_post_types']), true, false) . '>
19
+ <label for="remove__checklist__item-' . $key . '">' . $value->labels->name . '</label>
20
+ </div>';
21
+ }
22
+ ?>
23
+ <?php if ($this->networkactive) :
24
+ $extradisabletypes = implode(', ', (array) $this->options['extra_post_types']);
25
+ ?>
26
+ <p class="indent" id="extratypes"><?php _e('Only the built-in post types appear above. If you want to disable comments on other custom post types on the entire network, you can supply a comma-separated list of post types below (use the slug that identifies the post type).', 'disable-comments'); ?>
27
+ <br /><label><?php _e('Custom post types:', 'disable-comments'); ?> <input type="text" name="extra_post_types" size="30" value="<?php echo esc_attr($extradisabletypes); ?>" /></label></p>
28
+ <?php endif; ?>
29
+ </div>
30
+ <p class="subtitle"><span class="danger"><?php _e('Note:', 'disable-comments'); ?></span> <?php _e('Disabling comments will also disable trackbacks and pingbacks. All comment-related fields will also be hidden from the edit/quick-edit screens of the affected posts. These settings cannot be overridden for individual posts. Comments will be visible on all other post types.', 'disable-comments'); ?></p>
31
+ </div>
32
+ </div>
33
+ <div class="disable__comment__option mb50">
34
+ <h3 class="title"><?php _e('Disable Comments With API', 'disable-comments'); ?></h3>
35
+ <p class="subtitle"><?php _e('You can disable comments made on your website using WordPress specifications.', 'disable-comments'); ?></p>
36
+ <div class="disable_option dc-text__block mt30">
37
+ <div class="disable__switchs">
38
+ <div class="dissable__switch__item">
39
+ <input type="checkbox" id="switch-xml" name="remove_xmlrpc_comments" value="1" <?php checked((isset($this->options['remove_xmlrpc_comments']) ? $this->options['remove_xmlrpc_comments'] : 0)); ?>>
40
+ <label for="switch-xml">
41
+ <span class="switch">
42
+ <span class="switch__text on"><?php _e('On', 'disable-comments'); ?></span>
43
+ <span class="switch__text off"><?php _e('Off', 'disable-comments'); ?></span>
44
+ </span>
45
+ <?php _e('Disable Comments via XML-RPC', 'disable-comments'); ?>
46
+ </label>
47
+ </div>
48
+ <div class="dissable__switch__item">
49
+ <input type="checkbox" id="switch-api" name="remove_rest_API_comments" value="1" <?php checked((isset($this->options['remove_rest_API_comments']) ? $this->options['remove_rest_API_comments'] : 0)); ?>>
50
+ <label for="switch-api">
51
+ <span class="switch">
52
+ <span class="switch__text on"><?php _e('On', 'disable-comments'); ?></span>
53
+ <span class="switch__text off"><?php _e('Off', 'disable-comments'); ?></span>
54
+ </span><?php _e('Disable Comments via REST API', 'disable-comments'); ?>
55
+ </label>
56
+ </div>
57
+ </div>
58
+ <p class="disable__option__description"><?php _e('Turning on these settings will disable any comments made on your website via XML-RPC or REST API specifications.', 'disable-comments'); ?></p>
59
+ </div>
60
+ </div>
61
+ <!-- save -->
62
+ <button class="button button__success"><?php _e('Save Changes', 'disable-comments'); ?></button>
63
+ </form>
views/partials/_footer.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="footer pt70 pb110">
2
+ <div class="dc-row">
3
+ <div class="dc-col-lg-9">
4
+ <div class="footer__content">
5
+ <?php
6
+ include DC_PLUGIN_VIEWS_PATH . 'partials/_menu.php';
7
+ ?>
8
+ </div>
9
+ </div>
10
+ </div>
11
+ </div>
views/partials/_menu.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <div class="footer__nav">
2
+ <ul>
3
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/about/'); ?>" target="_blank" rel="nofollow"><?php _e('About Us', 'disable-comments'); ?></a></li>
4
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/plugins/'); ?>" target="_blank" rel="nofollow"><?php _e('All Plugins', 'disable-comments'); ?></a></li>
5
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/support/'); ?>" target="_blank" rel="nofollow"><?php _e('Support Forum', 'disable-comments'); ?></a></li>
6
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/docs/'); ?>" target="_blank" rel="nofollow"><?php _e('Docs', 'disable-comments'); ?></a></li>
7
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/terms-and-conditions/'); ?>" target="_blank" rel="nofollow"><?php _e('Terms Of Service', 'disable-comments'); ?></a></li>
8
+ <li><a href="<?php echo esc_url('https://wpdeveloper.net/privacy-policy/'); ?>" target="_blank" rel="nofollow"><?php _e('Privacy', 'disable-comments'); ?></a></li>
9
+ </ul>
10
+ </div>
views/partials/_sidebar.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="sidebar__widget__wrap">
2
+ <div class="dc-tutorials dc-text__block mt50 mb50">
3
+ <h3><?php _e('Read Our Tutorials', 'disable-comments'); ?></h3>
4
+ <div class="tutorial__list">
5
+ <div class="tutorial__item">
6
+ <div class="icon">
7
+ <svg version="1.1" id="Capa_11" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
8
+ <g>
9
+ <g>
10
+ <g>
11
+ <path class="st0" d="M352.5,220c0-11-9-20-20-20h-206c-11,0-20,9-20,20s9,20,20,20h206C343.5,240,352.5,231,352.5,220z" />
12
+ <path class="st0" d="M126.5,280c-11,0-20,9-20,20s9,20,20,20h125.1c11,0,20-9,20-20s-9-20-20-20H126.5z" />
13
+ <path class="st0" d="M173.5,472h-66.9c-22.1,0-40-17.9-40-40V80c0-22.1,17.9-40,40-40h245.9c22.1,0,40,17.9,40,40v123
14
+ c0,11,9,20,20,20s20-9,20-20V80c0-44.1-35.9-80-80-80H106.6c-44.1,0-80,35.9-80,80v352c0,44.1,35.9,80,80,80h66.9
15
+ c11,0,20-9,20-20S184.5,472,173.5,472z" />
16
+ <path class="st0" d="M467.9,289.6c-23.4-23.4-61.5-23.4-84.8,0L273.2,399.1c-2.3,2.3-4.1,5.2-5,8.3l-23.9,78.7
17
+ c-2.1,7-0.3,14.6,4.8,19.8c3.8,3.9,9,6,14.3,6c1.8,0,3.6-0.2,5.3-0.7l80.7-22.4c3.3-0.9,6.4-2.7,8.8-5.1l109.6-109.4
18
+ C491.3,351,491.3,313,467.9,289.6z M333.8,451.8L293.2,463l11.9-39.1l74.1-73.9l28.3,28.3L333.8,451.8z M439.6,346.1l-3.9,3.9
19
+ l-28.3-28.3l3.9-3.9c7.8-7.8,20.5-7.8,28.3,0S447.4,338.3,439.6,346.1z" />
20
+ <path class="st0" d="M332.5,120h-206c-11,0-20,9-20,20s9,20,20,20h206c11,0,20-9,20-20S343.5,120,332.5,120z" />
21
+ </g>
22
+ </g>
23
+ </g>
24
+ </svg>
25
+ </div>
26
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/disable-comments-plugin/'); ?>" target="_blank" rel="nofollow"><?php _e('What Does This Disable Comments Plugin Do', 'disable-comments'); ?></a></h4>
27
+ </div>
28
+ <div class="tutorial__item">
29
+ <div class="icon">
30
+ <svg version="1.1" id="Capa_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
31
+ <g>
32
+ <g>
33
+ <g>
34
+ <path class="st0" d="M352.5,220c0-11-9-20-20-20h-206c-11,0-20,9-20,20s9,20,20,20h206C343.5,240,352.5,231,352.5,220z" />
35
+ <path class="st0" d="M126.5,280c-11,0-20,9-20,20s9,20,20,20h125.1c11,0,20-9,20-20s-9-20-20-20H126.5z" />
36
+ <path class="st0" d="M173.5,472h-66.9c-22.1,0-40-17.9-40-40V80c0-22.1,17.9-40,40-40h245.9c22.1,0,40,17.9,40,40v123
37
+ c0,11,9,20,20,20s20-9,20-20V80c0-44.1-35.9-80-80-80H106.6c-44.1,0-80,35.9-80,80v352c0,44.1,35.9,80,80,80h66.9
38
+ c11,0,20-9,20-20S184.5,472,173.5,472z" />
39
+ <path class="st0" d="M467.9,289.6c-23.4-23.4-61.5-23.4-84.8,0L273.2,399.1c-2.3,2.3-4.1,5.2-5,8.3l-23.9,78.7
40
+ c-2.1,7-0.3,14.6,4.8,19.8c3.8,3.9,9,6,14.3,6c1.8,0,3.6-0.2,5.3-0.7l80.7-22.4c3.3-0.9,6.4-2.7,8.8-5.1l109.6-109.4
41
+ C491.3,351,491.3,313,467.9,289.6z M333.8,451.8L293.2,463l11.9-39.1l74.1-73.9l28.3,28.3L333.8,451.8z M439.6,346.1l-3.9,3.9
42
+ l-28.3-28.3l3.9-3.9c7.8-7.8,20.5-7.8,28.3,0S447.4,338.3,439.6,346.1z" />
43
+ <path class="st0" d="M332.5,120h-206c-11,0-20,9-20,20s9,20,20,20h206c11,0,20-9,20-20S343.5,120,332.5,120z" />
44
+ </g>
45
+ </g>
46
+ </g>
47
+ </svg>
48
+ </div>
49
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/how-to-use-disable-comments-plugin-with-wp-cli-command-line/'); ?>" target="_blank" rel="nofollow"><?php _e('How To Use Disable Comments Plugin With WP-CLI', 'disable-comments'); ?></a></h4>
50
+ </div>
51
+ <div class="tutorial__item">
52
+ <div class="icon">
53
+ <svg version="1.1" id="Capa_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
54
+ <g>
55
+ <g>
56
+ <g>
57
+ <path class="st0" d="M352.5,220c0-11-9-20-20-20h-206c-11,0-20,9-20,20s9,20,20,20h206C343.5,240,352.5,231,352.5,220z" />
58
+ <path class="st0" d="M126.5,280c-11,0-20,9-20,20s9,20,20,20h125.1c11,0,20-9,20-20s-9-20-20-20H126.5z" />
59
+ <path class="st0" d="M173.5,472h-66.9c-22.1,0-40-17.9-40-40V80c0-22.1,17.9-40,40-40h245.9c22.1,0,40,17.9,40,40v123
60
+ c0,11,9,20,20,20s20-9,20-20V80c0-44.1-35.9-80-80-80H106.6c-44.1,0-80,35.9-80,80v352c0,44.1,35.9,80,80,80h66.9
61
+ c11,0,20-9,20-20S184.5,472,173.5,472z" />
62
+ <path class="st0" d="M467.9,289.6c-23.4-23.4-61.5-23.4-84.8,0L273.2,399.1c-2.3,2.3-4.1,5.2-5,8.3l-23.9,78.7
63
+ c-2.1,7-0.3,14.6,4.8,19.8c3.8,3.9,9,6,14.3,6c1.8,0,3.6-0.2,5.3-0.7l80.7-22.4c3.3-0.9,6.4-2.7,8.8-5.1l109.6-109.4
64
+ C491.3,351,491.3,313,467.9,289.6z M333.8,451.8L293.2,463l11.9-39.1l74.1-73.9l28.3,28.3L333.8,451.8z M439.6,346.1l-3.9,3.9
65
+ l-28.3-28.3l3.9-3.9c7.8-7.8,20.5-7.8,28.3,0S447.4,338.3,439.6,346.1z" />
66
+ <path class="st0" d="M332.5,120h-206c-11,0-20,9-20,20s9,20,20,20h206c11,0,20-9,20-20S343.5,120,332.5,120z" />
67
+ </g>
68
+ </g>
69
+ </g>
70
+ </svg>
71
+ </div>
72
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/disable-specific-types-of-posts/'); ?>" target="_blank" rel="nofollow"><?php _e('How to Disable Comments on Specific Types Of Posts', 'disable-comments'); ?></a></h4>
73
+ </div>
74
+ <div class="tutorial__item">
75
+ <div class="icon">
76
+ <svg version="1.1" id="Capa_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
77
+ <g>
78
+ <g>
79
+ <g>
80
+ <path class="st0" d="M352.5,220c0-11-9-20-20-20h-206c-11,0-20,9-20,20s9,20,20,20h206C343.5,240,352.5,231,352.5,220z" />
81
+ <path class="st0" d="M126.5,280c-11,0-20,9-20,20s9,20,20,20h125.1c11,0,20-9,20-20s-9-20-20-20H126.5z" />
82
+ <path class="st0" d="M173.5,472h-66.9c-22.1,0-40-17.9-40-40V80c0-22.1,17.9-40,40-40h245.9c22.1,0,40,17.9,40,40v123
83
+ c0,11,9,20,20,20s20-9,20-20V80c0-44.1-35.9-80-80-80H106.6c-44.1,0-80,35.9-80,80v352c0,44.1,35.9,80,80,80h66.9
84
+ c11,0,20-9,20-20S184.5,472,173.5,472z" />
85
+ <path class="st0" d="M467.9,289.6c-23.4-23.4-61.5-23.4-84.8,0L273.2,399.1c-2.3,2.3-4.1,5.2-5,8.3l-23.9,78.7
86
+ c-2.1,7-0.3,14.6,4.8,19.8c3.8,3.9,9,6,14.3,6c1.8,0,3.6-0.2,5.3-0.7l80.7-22.4c3.3-0.9,6.4-2.7,8.8-5.1l109.6-109.4
87
+ C491.3,351,491.3,313,467.9,289.6z M333.8,451.8L293.2,463l11.9-39.1l74.1-73.9l28.3,28.3L333.8,451.8z M439.6,346.1l-3.9,3.9
88
+ l-28.3-28.3l3.9-3.9c7.8-7.8,20.5-7.8,28.3,0S447.4,338.3,439.6,346.1z" />
89
+ <path class="st0" d="M332.5,120h-206c-11,0-20,9-20,20s9,20,20,20h206c11,0,20-9,20-20S343.5,120,332.5,120z" />
90
+ </g>
91
+ </g>
92
+ </g>
93
+ </svg>
94
+ </div>
95
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/disable-comments-for-some-particular-post/'); ?>" target="_blank" rel="nofollow"><?php _e('Disable Comments For Some Particular Post', 'disable-comments'); ?></a></h4>
96
+ </div>
97
+ <div class="tutorial__item">
98
+ <div class="icon">
99
+ <svg version="1.1" id="Capa_3" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
100
+ <g>
101
+ <g>
102
+ <g>
103
+ <path class="st0" d="M352.5,220c0-11-9-20-20-20h-206c-11,0-20,9-20,20s9,20,20,20h206C343.5,240,352.5,231,352.5,220z" />
104
+ <path class="st0" d="M126.5,280c-11,0-20,9-20,20s9,20,20,20h125.1c11,0,20-9,20-20s-9-20-20-20H126.5z" />
105
+ <path class="st0" d="M173.5,472h-66.9c-22.1,0-40-17.9-40-40V80c0-22.1,17.9-40,40-40h245.9c22.1,0,40,17.9,40,40v123
106
+ c0,11,9,20,20,20s20-9,20-20V80c0-44.1-35.9-80-80-80H106.6c-44.1,0-80,35.9-80,80v352c0,44.1,35.9,80,80,80h66.9
107
+ c11,0,20-9,20-20S184.5,472,173.5,472z" />
108
+ <path class="st0" d="M467.9,289.6c-23.4-23.4-61.5-23.4-84.8,0L273.2,399.1c-2.3,2.3-4.1,5.2-5,8.3l-23.9,78.7
109
+ c-2.1,7-0.3,14.6,4.8,19.8c3.8,3.9,9,6,14.3,6c1.8,0,3.6-0.2,5.3-0.7l80.7-22.4c3.3-0.9,6.4-2.7,8.8-5.1l109.6-109.4
110
+ C491.3,351,491.3,313,467.9,289.6z M333.8,451.8L293.2,463l11.9-39.1l74.1-73.9l28.3,28.3L333.8,451.8z M439.6,346.1l-3.9,3.9
111
+ l-28.3-28.3l3.9-3.9c7.8-7.8,20.5-7.8,28.3,0S447.4,338.3,439.6,346.1z" />
112
+ <path class="st0" d="M332.5,120h-206c-11,0-20,9-20,20s9,20,20,20h206c11,0,20-9,20-20S343.5,120,332.5,120z" />
113
+ </g>
114
+ </g>
115
+ </g>
116
+ </svg>
117
+ </div>
118
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/disable-comment-for-wordpress-media-files/'); ?>" target="_blank" rel="nofollow"><?php _e('Disable Comment For WordPress Media Files', 'disable-comments'); ?></a></h4>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ <article class="blog__post">
123
+ <div class="thumb">
124
+ <img src="<?php echo esc_url(DC_ASSETS_URI . 'img/blog/thumb-1.jpg'); ?>" alt="">
125
+ <a href="<?php echo esc_url('https://youtu.be/J9AteKzQpPs'); ?>" class="play__btn" target="_blank" rel="nofollow"><span></span></a>
126
+ </div>
127
+ <div class="blog__post__content">
128
+ <h4><a href="<?php echo esc_url('https://wpdeveloper.net/docs/disable-comments-for-wordpress-pages/'); ?>" target="_blank" rel="nofollow"><?php _e('Disable Comments For WordPress Pages', 'disable-comments'); ?></a></h4>
129
+ </div>
130
+ </article>
131
+ </div>
views/settings.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wrap">
2
+ <div id="disablecommentswrap" class="disablecommentswrap background__grey">
3
+ <?php do_action('disable_comments_notice'); ?>
4
+ <div class="disable__comment_block">
5
+ <div class="disable__comment__nav__wrap">
6
+ <p class="plugin__version"><?php echo _e('Version', 'disable-comments') . ' ' . DC_VERSION; ?></p>
7
+ <ul class="disable__comment__nav">
8
+ <li id="disableCommentsNav" class="disable__comment__nav__item">
9
+ <a href="#disableComments" class="disable__comment__nav__link active"><?php _e('Disable Comments', 'disable-comments'); ?></a>
10
+ </li>
11
+ <li id="deleteCommentsNav" class="disable__comment__nav__item">
12
+ <a href="#deleteComments" class="disable__comment__nav__link"><?php _e('Delete Comments', 'disable-comments'); ?></a>
13
+ </li>
14
+ </ul>
15
+ </div>
16
+ <div class="dc-row">
17
+ <div class="dc-col-lg-9">
18
+ <div class="disable__comment__tab">
19
+ <div id="disableComments" class="disable__comment__tab__item show">
20
+ <?php include DC_PLUGIN_VIEWS_PATH . 'partials/_disable.php'; ?>
21
+ </div>
22
+ <div id="deleteComments" class="disable__comment__tab__item">
23
+ <?php include DC_PLUGIN_VIEWS_PATH . 'partials/_delete.php'; ?>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <div class="dc-col-lg-3">
28
+ <?php include DC_PLUGIN_VIEWS_PATH . 'partials/_sidebar.php'; ?>
29
+ </div>
30
+ <div>
31
+ </div>
32
+ <?php include DC_PLUGIN_VIEWS_PATH . 'partials/_footer.php'; ?>
33
+ </div>
34
+ </div>
views/setup-settings.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="disablecommentssetupwrap" class="disablecommentswrap background__grey dc-quick__setup__wrap">
2
+ <div class="dc-container">
3
+ <div class="dc-row">
4
+ <div class="dc-col">
5
+ <div class="dc-quick__setup">
6
+ <div class="dc-logo dc-logo__center mb50">
7
+ <img src="<?php echo esc_url(DC_ASSETS_URI . 'img/logo.png'); ?>" alt="">
8
+ </div>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ <div class="dc-row">
13
+ <div class="dc-col">
14
+ <div class="mb30">
15
+ <ul class="dc-quick__setup__nav">
16
+ <li class="quick__setup__item active">
17
+ <a href="#" class="quick__setup__link"><?php _e('GETTING STARTED', 'disable-comments'); ?></a>
18
+ </li>
19
+ <li class="quick__setup__item">
20
+ <a href="#" class="quick__setup__link"><?php _e('Disable comments', 'disable-comments'); ?></a>
21
+ </li>
22
+ <li class="quick__setup__item">
23
+ <a href="#" class="quick__setup__link"><?php _e('FINALIZE', 'disable-comments'); ?></a>
24
+ </li>
25
+ </ul>
26
+ </div>
27
+ <div id="disableCommentSetupSettings" class="dc-quick__setup__step dc-text__block__big__pad">
28
+ <div id="dcqTabBody_1" class="dc-quick__step__item">
29
+ <div class="quick__setup__item__header mb30">
30
+ <h2><?php _e('Getting Started', 'disable-comments'); ?></h2>
31
+ <p><?php _e('Easily get started with this easy setup wizard and complete setting up your Knowledge Base.', 'disable-comments'); ?></p>
32
+ </div>
33
+ <div class="dc-video__area">
34
+ <iframe width="622" height="350" src="https://www.youtube.com/embed/J9AteKzQpPs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
35
+ </div>
36
+ <div class="dc-form__group">
37
+ <input name="dc_is_optin" type="checkbox" value="1" id="dc_option" checked>
38
+ <label for="dc_option">
39
+ <?php _e('Want to help make Disable Comments even better?', 'disable-comments'); ?>
40
+ <a id="whatWeCollect" href="#"><?php _e('What we collect.', 'disable-comments'); ?></a>
41
+ <p id="whatWeCollectMessage"><?php _e('We collect non-sensitive diagnostic data and plugin usage information. Your site URL, WordPress & PHP version, plugins, themes and email address to send you the discount coupon. This data lets us make sure this plugin always stays compatible with the most popular plugins and themes. No spam, I promise.', 'disable-comments'); ?></p>
42
+ </label>
43
+ </div>
44
+ </div>
45
+ <div id="dcqTabBody_2" class="dc-quick__step__item">
46
+ <?php include DC_PLUGIN_VIEWS_PATH . 'partials/_disable.php'; ?>
47
+ </div>
48
+ <div id="dcqTabBody_3" class="dc-quick__step__item">
49
+ <div class="quick__setup__item__header">
50
+ <h2><?php _e('Great Job!', 'disable-comments'); ?></h2>
51
+ <p><?php _e('Your documentation page is ready! Make sure to add more articles and assign them to proper categories and you are good to go.', 'disable-comments'); ?></p>
52
+ </div>
53
+ <div class="finalize-thumb">
54
+ <img src="<?php echo esc_url(DC_ASSETS_URI . 'img/finalize-thumb.png'); ?>" alt="">
55
+ </div>
56
+ <div class="doc__button__wrap">
57
+ <a href="<?php echo esc_url('https://wpdeveloper.net/docs-category/disable-comments/'); ?>" class="doc__button" target="_blank" rel="nofollow"><?php _e('VISIT OUR DOCUMENTATION PAGE', 'disable-comments'); ?></a>
58
+ </div>
59
+ </div>
60
+ <div class="button__group mt30">
61
+ <a id="dcQuickPreviousBtn" href="#" class="button button--sm"><?php _e('Previous', 'disable-comments'); ?></a>
62
+ <a id="dcQuickNextBtn" href="#" class="button button__success"><?php _e('Next', 'disable-comments'); ?></a>
63
+ <a id="dcQuickSkipBtn" href="#" class="button button--sm"><?php _e('Skip', 'disable-comments'); ?></a>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="footer__content mt50">
68
+ <a href="<?php echo $this->settings_page_url() . '&cancel=setup'; ?>" class="cancel-dc-setup"><?php _e('Return to Dashboard', 'disable-comments'); ?></a>
69
+ <?php
70
+ include DC_PLUGIN_VIEWS_PATH . 'partials/_menu.php';
71
+ ?>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>