WhatsApp Chat WP - Version 4.5.5

Version Description

Hello! We've recently acquired this plugin and included tons of new features.

Download this release

Release Info

Developer quadlayers
Plugin Icon 128x128 WhatsApp Chat WP
Version 4.5.5
Comparing to
See all releases

Code changes from version 4.5.4 to 4.5.5

Files changed (63) hide show
  1. assets/backend/css/qlwapp-admin.css +243 -0
  2. assets/backend/css/qlwapp-admin.css.map +1 -0
  3. assets/backend/css/qlwapp-admin.min.css +2 -0
  4. assets/backend/css/qlwapp-select2.css +414 -0
  5. assets/backend/css/qlwapp-select2.min.css +2 -0
  6. assets/{img → backend/img}/box1.png +0 -0
  7. assets/{img → backend/img}/box2.png +0 -0
  8. assets/{img → backend/img}/icon.png +0 -0
  9. assets/{img → backend/img}/logo.jpg +0 -0
  10. assets/{img → backend/img}/quadlayers.jpg +0 -0
  11. assets/{js → backend/js}/qlwapp-admin-contact.js +220 -35
  12. assets/backend/js/qlwapp-admin-contact.min.js +1 -0
  13. assets/{js → backend/js}/qlwapp-admin.js +57 -39
  14. assets/backend/js/qlwapp-admin.min.js +2 -0
  15. assets/{js → backend/js}/select2.min.js +0 -0
  16. assets/css/qlwapp-admin.css +0 -143
  17. assets/css/qlwapp-admin.css.map +0 -1
  18. assets/css/qlwapp-admin.min.css +0 -2
  19. assets/css/qlwapp-select2.css +0 -409
  20. assets/css/qlwapp-select2.min.css +0 -2
  21. assets/css/qlwapp.min.css +0 -2
  22. assets/{css → frontend/css}/qlwapp.css +23 -2
  23. assets/frontend/css/qlwapp.css.map +1 -0
  24. assets/frontend/css/qlwapp.min.css +2 -0
  25. assets/{js → frontend/js}/qlwapp.js +0 -0
  26. assets/{js → frontend/js}/qlwapp.min.js +1 -0
  27. assets/js/qlwapp-admin-contact.min.js +0 -1
  28. assets/js/qlwapp-admin.min.js +0 -2
  29. changelog.txt +5 -0
  30. includes/backend.php +6 -6
  31. includes/controllers/ContactController.php +139 -118
  32. includes/controllers/DisplayController.php +40 -38
  33. includes/controllers/Display_services.php +76 -0
  34. includes/controllers/QLWAPP_Controller.php +12 -15
  35. includes/controllers/SchemeController.php +2 -2
  36. includes/controllers/SuggestionsController.php +2 -2
  37. includes/controllers/WelcomeController.php +3 -3
  38. includes/frontend.php +117 -137
  39. includes/models/Box.php +0 -1
  40. includes/models/Contact.php +130 -118
  41. includes/models/Display.php +5 -9
  42. includes/models/Display_Component.php +67 -0
  43. includes/models/QLWAPP_Model.php +7 -4
  44. includes/notices.php +93 -93
  45. includes/settings.php +56 -10
  46. includes/view/backend/pages/contacts.php +21 -26
  47. includes/view/backend/pages/display.php +53 -47
  48. includes/view/backend/pages/modals/contact-modal.php +0 -127
  49. includes/view/backend/pages/modals/contact/modal-contact.php +36 -0
  50. includes/view/backend/pages/modals/contact/panel-contact-chat.php +16 -0
  51. includes/view/backend/pages/modals/contact/panel-contact.php +63 -0
  52. includes/view/backend/pages/modals/contact/panel-footer.php +11 -0
  53. includes/view/backend/pages/modals/contact/panel-header.php +10 -0
  54. includes/view/backend/pages/modals/contact/panel-info.php +25 -0
  55. includes/view/backend/pages/modals/contact/panel-tabs.php +8 -0
  56. includes/view/backend/pages/modals/contact/panel-visibility.php +70 -0
  57. includes/view/backend/pages/modals/template-scripts.php +31 -0
  58. includes/view/backend/pages/parts/header.php +3 -3
  59. includes/view/backend/pages/premium.php +2 -2
  60. includes/view/backend/pages/welcome.php +1 -1
  61. readme.txt +2 -2
  62. template/box.php +0 -3
  63. wp-whatsapp-chat.php +3 -3
assets/backend/css/qlwapp-admin.css ADDED
@@ -0,0 +1,243 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #qlwapp_contacts_table td,
2
+ #qlwapp_contacts_table th {
3
+ padding: 1em!important;
4
+ vertical-align: top;
5
+ line-height: 1.75em;
6
+ }
7
+ #qlwapp_contacts_table td img.qlwapp-avatar {
8
+ width: 50px;
9
+ height: 50px;
10
+ }
11
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button {
12
+ position: relative;
13
+ overflow: hidden;
14
+ float: left;
15
+ display: block;
16
+ width: 24px;
17
+ height: 24px;
18
+ margin: 0;
19
+ background: 0 0;
20
+ border: none;
21
+ box-shadow: none;
22
+ color: #82878c;
23
+ text-indent: -9999px;
24
+ cursor: pointer;
25
+ outline: 0;
26
+ }
27
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button::before {
28
+ display: inline-block;
29
+ position: absolute;
30
+ top: 0;
31
+ right: 0;
32
+ width: 100%;
33
+ height: 100%;
34
+ font: normal 20px/23px dashicons;
35
+ text-align: center;
36
+ text-indent: 0;
37
+ -webkit-font-smoothing: antialiased;
38
+ -moz-osx-font-smoothing: grayscale;
39
+ }
40
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-up::before {
41
+ content: "\f343";
42
+ }
43
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-down::before {
44
+ content: "\f347";
45
+ }
46
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-disabled {
47
+ color: #d5d5d5!important;
48
+ cursor: default;
49
+ pointer-events: none;
50
+ }
51
+ #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav::before {
52
+ content: "\f333";
53
+ font-family: Dashicons;
54
+ text-align: center;
55
+ line-height: 1;
56
+ color: #999;
57
+ display: block;
58
+ width: 24px;
59
+ float: left;
60
+ height: 100%;
61
+ line-height: 24px;
62
+ cursor: move;
63
+ }
64
+ #qlwapp_modal {
65
+ max-width: 890px;
66
+ max-height: 560px;
67
+ margin: auto;
68
+ }
69
+ #qlwapp_modal.processing {
70
+ pointer-events: none;
71
+ }
72
+ #qlwapp_modal.processing:before {
73
+ content: '';
74
+ position: absolute;
75
+ top: 0;
76
+ bottom: 0;
77
+ left: 0;
78
+ right: 0;
79
+ background-color: #ffffff;
80
+ z-index: 999;
81
+ opacity: 0.8;
82
+ }
83
+ #qlwapp_modal.qlwapp-modal-icon .thumbnail {
84
+ vertical-align: middle;
85
+ text-align: center;
86
+ }
87
+ #qlwapp_modal.qlwapp-modal-icon .thumbnail:before {
88
+ content: '';
89
+ display: inline-block;
90
+ width: 0px;
91
+ height: 100%;
92
+ vertical-align: middle;
93
+ }
94
+ #qlwapp_modal.qlwapp-modal-icon .thumbnail > i {
95
+ text-align: center;
96
+ font-size: 2vw;
97
+ display: inline-block;
98
+ vertical-align: middle;
99
+ height: auto;
100
+ width: auto;
101
+ }
102
+ #qlwapp_modal.qlwapp-modal-contact {
103
+ max-width: 990px;
104
+ max-height: 560px;
105
+ margin: auto;
106
+ }
107
+ #qlwapp_modal.qlwapp-modal-contact table {
108
+ padding: 15px;
109
+ border-width: 1px 0 0 0;
110
+ box-shadow: none;
111
+ table-layout: fixed;
112
+ }
113
+ #qlwapp_modal.qlwapp-modal-contact table th {
114
+ width: 70px;
115
+ }
116
+ #qlwapp_modal.qlwapp-modal-contact table td {
117
+ width: calc(50% - 70px);
118
+ }
119
+ #qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-media-view {
120
+ width: 75% ;
121
+ }
122
+ #qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-info {
123
+ width: 25%;
124
+ }
125
+ #qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-details {
126
+ overflow: hidden;
127
+ }
128
+ #qlwapp_modal.qlwapp-modal-contact input[type=time] {
129
+ height: 30px;
130
+ }
131
+ #qlwapp_modal.qlwapp-modal-contact .panel-wrap {
132
+ overflow: hidden;
133
+ }
134
+ #qlwapp_modal.qlwapp-modal-contact .panel .options_group {
135
+ overflow: hidden;
136
+ border-bottom: 1px solid #eee;
137
+ }
138
+ #qlwapp_modal.qlwapp-modal-contact .panel .options_group:first-child {
139
+ border-top: 0;
140
+ }
141
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field {
142
+ font-size: 12px;
143
+ padding: 7.5px 15px;
144
+ line-height: 24px;
145
+ }
146
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field > label {
147
+ display: inline-block;
148
+ }
149
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field > label:first-child {
150
+ width: 80px;
151
+ }
152
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field > .select2-container:nth-of-type(1) {
153
+ width: 80px!important;
154
+ }
155
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field > .select2-container:nth-of-type(2) {
156
+ width: calc(100% - 171px) !important;
157
+ }
158
+ #qlwapp_modal.qlwapp-modal-contact .panel p.form-field > .select2-container:only-of-type {
159
+ width: calc(100% - 88px) !important;
160
+ }
161
+ #qlwapp_modal.qlwapp-modal-contact .panel select,
162
+ #qlwapp_modal.qlwapp-modal-contact .panel textarea,
163
+ #qlwapp_modal.qlwapp-modal-contact .panel input[type=phone],
164
+ #qlwapp_modal.qlwapp-modal-contact .panel input[type=text] {
165
+ width: 100%;
166
+ max-width: 100%;
167
+ }
168
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs {
169
+ margin: 0;
170
+ width: 20%;
171
+ float: left;
172
+ line-height: 1em;
173
+ padding: 0 0 10px;
174
+ position: relative;
175
+ background-color: #fafafa;
176
+ border-right: 1px solid #eee;
177
+ box-sizing: border-box;
178
+ }
179
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs:after {
180
+ content: "";
181
+ display: block;
182
+ width: 100%;
183
+ height: 9999em;
184
+ position: absolute;
185
+ bottom: -9999em;
186
+ left: 0;
187
+ background-color: #fafafa;
188
+ border-right: 1px solid #eee;
189
+ }
190
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li {
191
+ margin: 0;
192
+ padding: 0;
193
+ display: block;
194
+ position: relative;
195
+ }
196
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a {
197
+ margin: 0;
198
+ padding: 10px;
199
+ display: block;
200
+ box-shadow: none;
201
+ text-decoration: none;
202
+ line-height: 20px!important;
203
+ border-bottom: 1px solid #eee;
204
+ }
205
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a span {
206
+ margin-left: .618em;
207
+ margin-right: .618em;
208
+ }
209
+ #qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a:before {
210
+ content: "\f107";
211
+ font-family: Dashicons;
212
+ speak: none;
213
+ font-weight: 400;
214
+ text-transform: none;
215
+ line-height: 1;
216
+ -webkit-font-smoothing: antialiased;
217
+ font-variant: normal;
218
+ text-decoration: none;
219
+ }
220
+ #qlwapp_modal.qlwapp-modal-contact .qlwapp-input,
221
+ #qlwapp_modal.qlwapp-modal-contact .qlwapp-select2 {
222
+ width: 350px;
223
+ max-width: 100%;
224
+ }
225
+ #qlwapp_modal.qlwapp-modal-contact .qlwapp-input {
226
+ margin: 0;
227
+ padding: 6px;
228
+ box-sizing: border-box;
229
+ vertical-align: top;
230
+ }
231
+ .settings-save-status .spinner {
232
+ float: none;
233
+ display: inline-block;
234
+ margin: 0 10px;
235
+ }
236
+ .settings-save-status .saved {
237
+ font-size: 12px;
238
+ display: none;
239
+ }
240
+ .settings-save-status .saved.is-active {
241
+ display: inline-block;
242
+ }
243
+ /*# sourceMappingURL=qlwapp-admin.css.map */
assets/backend/css/qlwapp-admin.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["../../less/qlwapp-admin.less"],"names":[],"mappings":"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","file":"qlwapp-admin.css"}
assets/backend/css/qlwapp-admin.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+
2
+ #qlwapp_contacts_table td,#qlwapp_contacts_table th{padding:1em!important;vertical-align:top;line-height:1.75em}#qlwapp_contacts_table td img.qlwapp-avatar{width:50px;height:50px}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button{position:relative;overflow:hidden;float:left;display:block;width:24px;height:24px;margin:0;background:0;border:0;box-shadow:none;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button::before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:normal 20px/23px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-up::before{content:"\f343"}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-down::before{content:"\f347"}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-disabled{color:#d5d5d5!important;cursor:default;pointer-events:none}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav::before{content:"\f333";font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:24px;float:left;height:100%;line-height:24px;cursor:move}#qlwapp_modal{max-width:890px;max-height:560px;margin:auto}#qlwapp_modal.processing{pointer-events:none}#qlwapp_modal.processing:before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background-color:#fff;z-index:999;opacity:.8}#qlwapp_modal .select2-container{z-index:160001}#qlwapp_modal.qlwapp-modal-icon .thumbnail{vertical-align:middle;text-align:center}#qlwapp_modal.qlwapp-modal-icon .thumbnail:before{content:'';display:inline-block;width:0;height:100%;vertical-align:middle}#qlwapp_modal.qlwapp-modal-icon .thumbnail>i{text-align:center;font-size:2vw;display:inline-block;vertical-align:middle;height:auto;width:auto}#qlwapp_modal.qlwapp-modal-contact{max-width:990px;max-height:560px;margin:auto}#qlwapp_modal.qlwapp-modal-contact table{padding:15px;border-width:1px 0 0 0;box-shadow:none;table-layout:fixed}#qlwapp_modal.qlwapp-modal-contact table th{width:70px}#qlwapp_modal.qlwapp-modal-contact table td{width:calc(50% - 70px)}#qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-media-view{width:75%}#qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-info{width:25%}#qlwapp_modal.qlwapp-modal-contact .edit-attachment-frame .attachment-details{overflow:hidden}#qlwapp_modal.qlwapp-modal-contact input[type=time]{height:30px}#qlwapp_modal.qlwapp-modal-contact .panel-wrap{overflow:hidden}#qlwapp_modal.qlwapp-modal-contact .panel .options_group{overflow:hidden;border-bottom:1px solid #eee}#qlwapp_modal.qlwapp-modal-contact .panel .options_group:first-child{border-top:0}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field{font-size:12px;padding:7.5px 15px;line-height:24px}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field>label{display:inline-block}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field>label:first-child{width:80px}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field>.select2-container:nth-of-type(1){width:80px!important}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field>.select2-container:nth-of-type(2){width:calc(100% - 171px)!important}#qlwapp_modal.qlwapp-modal-contact .panel p.form-field>.select2-container:only-of-type{width:calc(100% - 88px)!important}#qlwapp_modal.qlwapp-modal-contact .panel select,#qlwapp_modal.qlwapp-modal-contact .panel textarea,#qlwapp_modal.qlwapp-modal-contact .panel input[type=phone],#qlwapp_modal.qlwapp-modal-contact .panel input[type=text]{width:100%;max-width:100%}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs{margin:0;width:20%;float:left;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs:after{content:"";display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;left:0;background-color:#fafafa;border-right:1px solid #eee}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li{margin:0;padding:0;display:block;position:relative}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a span{margin-left:.618em;margin-right:.618em}#qlwapp_modal.qlwapp-modal-contact ul.qlwapp-tabs li a:before{content:"\f107";font-family:Dashicons;speak:none;font-weight:400;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;font-variant:normal;text-decoration:none}#qlwapp_modal.qlwapp-modal-contact .qlwapp-input,#qlwapp_modal.qlwapp-modal-contact .qlwapp-select2{width:350px;max-width:100%}#qlwapp_modal.qlwapp-modal-contact .qlwapp-input{margin:0;padding:6px;box-sizing:border-box;vertical-align:top}.settings-save-status .spinner{float:none;display:inline-block;margin:0 10px}.settings-save-status .saved{font-size:12px;display:none}.settings-save-status .saved.is-active{display:inline-block}
assets/backend/css/qlwapp-select2.css ADDED
@@ -0,0 +1,414 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .select2-container {
2
+ box-sizing: border-box;
3
+ display: inline-block;
4
+ margin: 0;
5
+ position: relative;
6
+ vertical-align: middle;
7
+ z-index:9999;
8
+ }
9
+
10
+ .modal-open .select2-container--open {
11
+ z-index: 160010;
12
+ }
13
+
14
+ .select2-container .select2-selection {
15
+ box-sizing: border-box;
16
+ cursor: pointer;
17
+ display: block;
18
+ height: 28px;
19
+ margin: 0 0 -4px;
20
+ -moz-user-select: none;
21
+ -ms-user-select: none;
22
+ user-select: none;
23
+ -webkit-user-select: none
24
+ }
25
+
26
+ .select2-container .select2-selection .select2-selection__rendered {
27
+ display: block;
28
+ padding-left: 8px;
29
+ padding-right: 20px;
30
+ overflow: hidden;
31
+ text-overflow: ellipsis;
32
+ white-space: nowrap
33
+ }
34
+
35
+ .select2-container .select2-selection .select2-selection__clear {
36
+ position: relative
37
+ }
38
+
39
+ .select2-container[dir=rtl] .select2-selection .select2-selection__rendered {
40
+ padding-right: 8px;
41
+ padding-left: 20px
42
+ }
43
+
44
+ .select2-container .select2-selection {
45
+ box-sizing: border-box;
46
+ cursor: pointer;
47
+ display: block;
48
+ min-height: 32px;
49
+ -moz-user-select: none;
50
+ -ms-user-select: none;
51
+ user-select: none;
52
+ -webkit-user-select: none
53
+ }
54
+
55
+ .select2-container .select2-selection .select2-selection__rendered {
56
+ display: inline-block;
57
+ overflow: hidden;
58
+ padding-left: 8px;
59
+ text-overflow: ellipsis;
60
+ white-space: nowrap
61
+ }
62
+
63
+ .select2-container .select2-search--inline {
64
+ float: left;
65
+ padding: 0
66
+ }
67
+
68
+ .select2-container .select2-search--inline .select2-search__field {
69
+ box-sizing: border-box;
70
+ border: none;
71
+ font-size: 100%;
72
+ margin: 0;
73
+ padding: 0
74
+ }
75
+
76
+ .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
77
+ -webkit-appearance: none
78
+ }
79
+
80
+ .select2-dropdown {
81
+ background-color: #fff;
82
+ border: 1px solid #ccc;
83
+ border-radius: 2px;
84
+ box-sizing: border-box;
85
+ display: block;
86
+ position: absolute;
87
+ left: -100000px;
88
+ width: 100%;
89
+ z-index: 1051
90
+ }
91
+
92
+ .select2-results {
93
+ display: block
94
+ }
95
+
96
+ .select2-results__options {
97
+ list-style: none;
98
+ margin: 0;
99
+ padding: 0
100
+ }
101
+
102
+ .select2-results__option {
103
+ margin: 0;
104
+ padding: 8px;
105
+ -moz-user-select: none;
106
+ -ms-user-select: none;
107
+ user-select: none;
108
+ -webkit-user-select: none
109
+ }
110
+
111
+ .select2-results__option[aria-selected],
112
+ .select2-results__option[data-selected] {
113
+ cursor: pointer
114
+ }
115
+
116
+ .select2-container--open .select2-dropdown {
117
+ left: 0
118
+ }
119
+
120
+ .select2-container--open .select2-dropdown--above {
121
+ border-bottom: none;
122
+ border-bottom-left-radius: 0;
123
+ border-bottom-right-radius: 0
124
+ }
125
+
126
+ .select2-container--open .select2-dropdown--below {
127
+ border-top: none;
128
+ border-top-left-radius: 0;
129
+ border-top-right-radius: 0
130
+ }
131
+
132
+ .select2-search--dropdown {
133
+ display: block;
134
+ padding: 4px
135
+ }
136
+
137
+ .select2-search--dropdown .select2-search__field {
138
+ padding: 4px;
139
+ width: 100%;
140
+ box-sizing: border-box
141
+ }
142
+
143
+ .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
144
+ -webkit-appearance: none
145
+ }
146
+
147
+ .select2-search--dropdown.select2-search--hide {
148
+ display: none
149
+ }
150
+
151
+ .select2-close-mask {
152
+ border: 0;
153
+ margin: 0;
154
+ padding: 0;
155
+ display: block;
156
+ position: fixed;
157
+ left: 0;
158
+ top: 0;
159
+ min-height: 100%;
160
+ min-width: 100%;
161
+ height: auto;
162
+ width: auto;
163
+ opacity: 0;
164
+ z-index: 99;
165
+ background-color: #fff
166
+ }
167
+
168
+ .select2-hidden-accessible {
169
+ border: 0!important;
170
+ clip: rect(0 0 0 0)!important;
171
+ height: 1px!important;
172
+ margin: -1px!important;
173
+ overflow: hidden!important;
174
+ padding: 0!important;
175
+ position: absolute!important;
176
+ width: 1px!important
177
+ }
178
+
179
+ .select2-container--default .select2-selection {
180
+ background-color: #fff;
181
+ border: 1px solid #ccc;
182
+ border-radius: 4px
183
+ }
184
+
185
+ .select2-container--default .select2-selection .select2-selection__clear {
186
+ cursor: pointer;
187
+ float: right;
188
+ font-weight: 700
189
+ }
190
+
191
+ .select2-container--default .select2-selection .select2-selection__placeholder {
192
+ color: #999
193
+ }
194
+
195
+ .select2-container--default .select2-selection .select2-selection__arrow {
196
+ height: 32px;
197
+ position: absolute;
198
+ top: 0px;
199
+ right: 1px;
200
+ width: 20px
201
+ }
202
+
203
+ .select2-container--default .select2-selection .select2-selection__arrow b {
204
+ border-color: #888 transparent transparent transparent;
205
+ border-style: solid;
206
+ border-width: 5px 4px 0 4px;
207
+ height: 0;
208
+ left: 50%;
209
+ margin-left: -4px;
210
+ margin-top: -2px;
211
+ position: absolute;
212
+ top: 50%;
213
+ width: 0
214
+ }
215
+
216
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__clear {
217
+ float: left
218
+ }
219
+
220
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__arrow {
221
+ left: 1px;
222
+ right: auto
223
+ }
224
+
225
+ .select2-container--default.select2-container--disabled .select2-selection {
226
+ background-color: #eee;
227
+ cursor: default
228
+ }
229
+
230
+ .select2-container--default.select2-container--disabled .select2-selection .select2-selection__clear {
231
+ display: none
232
+ }
233
+
234
+ .select2-container--default.select2-container--open .select2-selection .select2-selection__arrow b {
235
+ border-color: transparent transparent #888 transparent;
236
+ border-width: 0 4px 5px 4px
237
+ }
238
+
239
+ .select2-container--default .select2-selection {
240
+ background-color: #fff;
241
+ border: 1px solid #ccc;
242
+ border-radius: 2px;
243
+ cursor: text
244
+ }
245
+
246
+ .select2-container--default .select2-selection .select2-selection__rendered {
247
+ color: #444;
248
+ line-height: 30px;
249
+ box-sizing: border-box;
250
+ list-style: none;
251
+ margin: 0;
252
+ padding: 0 5px;
253
+ width: 100%
254
+ }
255
+
256
+ .select2-container--default .select2-selection .select2-selection__rendered li {
257
+ list-style: none;
258
+ margin: 2px 4px 2px 0;
259
+ line-height: 24px;
260
+ }
261
+
262
+ .select2-container--default .select2-selection .select2-selection__rendered li.select2-search {
263
+ margin: 0;
264
+ }
265
+
266
+ .select2-container--default .select2-selection .select2-selection__rendered li:before {
267
+ content: '';
268
+ display: none
269
+ }
270
+
271
+ .select2-container--default .select2-selection .select2-selection__placeholder {
272
+ color: #999;
273
+ float: left
274
+ }
275
+
276
+ .select2-container--default .select2-selection .select2-selection__clear {
277
+ cursor: pointer;
278
+ float: right;
279
+ font-weight: 700;
280
+ margin-right: 10px
281
+ }
282
+
283
+ .select2-container--default .select2-selection .select2-selection__choice {
284
+ background-color: #e4e4e4;
285
+ border: 1px solid #ccc;
286
+ border-radius: 2px;
287
+ cursor: default;
288
+ float: left;
289
+ margin-right: 5px;
290
+ margin-top: 5px;
291
+ padding: 0 5px
292
+ }
293
+
294
+ .select2-container--default .select2-selection .select2-selection__choice__remove {
295
+ color: #999;
296
+ cursor: pointer;
297
+ display: inline-block;
298
+ font-weight: 700;
299
+ margin-right: 2px
300
+ }
301
+
302
+ .select2-container--default .select2-selection .select2-selection__choice__remove:hover {
303
+ color: #333
304
+ }
305
+
306
+ .select2-container--default[dir=rtl] .select2-selection .select2-search--inline,
307
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice,
308
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__placeholder {
309
+ float: right
310
+ }
311
+
312
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice {
313
+ margin-left: 5px;
314
+ margin-right: auto
315
+ }
316
+
317
+ .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice__remove {
318
+ margin-left: 2px;
319
+ margin-right: auto
320
+ }
321
+
322
+ .select2-container--default.select2-container--focus .select2-selection {
323
+ outline: 0
324
+ }
325
+
326
+ .select2-container--default.select2-container--disabled .select2-selection {
327
+ background-color: #eee;
328
+ cursor: default
329
+ }
330
+
331
+ .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
332
+ display: none
333
+ }
334
+
335
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection,
336
+ .select2-container--default.select2-container--open.select2-container--above .select2-selection {
337
+ border-top-left-radius: 0;
338
+ border-top-right-radius: 0
339
+ }
340
+
341
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection,
342
+ .select2-container--default.select2-container--open.select2-container--below .select2-selection {
343
+ border-bottom-left-radius: 0;
344
+ border-bottom-right-radius: 0
345
+ }
346
+
347
+ .select2-container--default .select2-search--dropdown .select2-search__field {
348
+ border: 1px solid #ccc
349
+ }
350
+
351
+ .select2-container--default .select2-search--inline .select2-search__field {
352
+ background: 0 0;
353
+ border: none;
354
+ outline: 0;
355
+ box-shadow: none;
356
+ -webkit-appearance: textfield
357
+ }
358
+
359
+ .select2-container--default .select2-results>.select2-results__options {
360
+ max-height: 200px;
361
+ overflow-y: auto
362
+ }
363
+
364
+ .select2-container--default .select2-results__option[role=group] {
365
+ padding: 0
366
+ }
367
+
368
+ .select2-container--default .select2-results__option[aria-disabled=true] {
369
+ color: #999
370
+ }
371
+
372
+ .select2-container--default .select2-results__option[aria-selected=true],
373
+ .select2-container--default .select2-results__option[data-selected=true] {
374
+ background-color: #ddd
375
+ }
376
+
377
+ .select2-container--default .select2-results__option .select2-results__option {
378
+ padding-left: 1em
379
+ }
380
+
381
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
382
+ padding-left: 0
383
+ }
384
+
385
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
386
+ margin-left: -1em;
387
+ padding-left: 2em
388
+ }
389
+
390
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
391
+ margin-left: -2em;
392
+ padding-left: 3em
393
+ }
394
+
395
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
396
+ margin-left: -3em;
397
+ padding-left: 4em
398
+ }
399
+
400
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
401
+ margin-left: -4em;
402
+ padding-left: 5em
403
+ }
404
+
405
+ .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
406
+ margin-left: -5em;
407
+ padding-left: 6em
408
+ }
409
+
410
+ .select2-container--default .select2-results__option--highlighted[aria-selected],
411
+ .select2-container--default .select2-results__option--highlighted[data-selected] {
412
+ background-color: #0073aa;
413
+ color: #fff
414
+ }
assets/backend/css/qlwapp-select2.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+
2
+ .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;z-index:9999}.modal-open .select2-container--open{z-index:160010}.select2-container .select2-selection{box-sizing:border-box;cursor:pointer;display:block;height:28px;margin:0 0 -4px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left;padding:0}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:0;font-size:100%;margin:0;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{margin:0;padding:8px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected],.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection{background-color:#fff;border:1px solid #ccc;border-radius:4px}.select2-container--default .select2-selection .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection .select2-selection__arrow{height:32px;position:absolute;top:0;right:1px;width:20px}.select2-container--default .select2-selection .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection{background-color:#fff;border:1px solid #ccc;border-radius:2px;cursor:text}.select2-container--default .select2-selection .select2-selection__rendered{color:#444;line-height:30px;box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection .select2-selection__rendered li{list-style:none;margin:2px 4px 2px 0;line-height:24px}.select2-container--default .select2-selection .select2-selection__rendered li.select2-search{margin:0}.select2-container--default .select2-selection .select2-selection__rendered li:before{content:'';display:none}.select2-container--default .select2-selection .select2-selection__placeholder{color:#999;float:left}.select2-container--default .select2-selection .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--default .select2-selection .select2-selection__choice{background-color:#e4e4e4;border:1px solid #ccc;border-radius:2px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection{outline:0}.select2-container--default.select2-container--disabled .select2-selection{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection,.select2-container--default.select2-container--open.select2-container--above .select2-selection{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection,.select2-container--default.select2-container--open.select2-container--below .select2-selection{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #ccc}.select2-container--default .select2-search--inline .select2-search__field{background:0;border:0;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#0073aa;color:#fff}
assets/{img → backend/img}/box1.png RENAMED
File without changes
assets/{img → backend/img}/box2.png RENAMED
File without changes
assets/{img → backend/img}/icon.png RENAMED
File without changes
assets/{img → backend/img}/logo.jpg RENAMED
File without changes
assets/{img → backend/img}/quadlayers.jpg RENAMED
File without changes
assets/{js → backend/js}/qlwapp-admin-contact.js RENAMED
@@ -3,6 +3,23 @@
3
  var count = 0,
4
  timer;
5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  _.mixin({
7
  escapeHtml: function (attribute) {
8
  return attribute.replace('&', /&/g)
@@ -10,14 +27,115 @@
10
  .replace(/&lt;/g, "<")
11
  .replace(/&quot;/g, '"')
12
  .replace(/&#039;/g, "'");
13
- }
14
  });
15
-
16
  var Contact = Backbone.Model.extend({
17
  defaults: qlwapp_contact.args
18
  });
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  var ContactView = Backbone.View.extend({
 
21
  events: {
22
  'change input': 'enable',
23
  'change textarea': 'enable',
@@ -27,41 +145,71 @@
27
  'click .media-modal-prev': 'edit',
28
  'click .media-modal-next': 'edit',
29
  'change .media-modal-change': 'change',
 
30
  'submit .media-modal-form': 'submit'
31
  },
32
  templates: {},
33
  initialize: function () {
34
- _.bindAll(this, 'open', 'edit', 'change', 'load', 'render', 'close', 'submit');
35
  this.init();
36
  this.open();
37
-
38
  },
39
  init: function () {
40
  this.templates.window = wp.template('qlwapp-modal-window');
41
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  render: function () {
43
 
44
  var modal = this;
45
-
46
  // get active tab from the previous modal
47
  var tab = this.$el.find('ul.wc-tabs li.active a').attr('href');
48
-
49
  modal.$el.html(modal.templates.window(modal.model.attributes));
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  _.delay(function () {
52
- // modal.$el.trigger('wooccm-enhanced-options');
53
- // modal.$el.trigger('wooccm-enhanced-select');
54
- // modal.$el.trigger('wooccm-tab-panels', tab);
55
- // modal.$el.trigger('init_tooltips');
56
  }, 100);
57
-
58
  },
59
  load: function () {
60
  var modal = this;
61
- if (modal.model.attributes.id == undefined) {
62
- modal.render();
63
- return;
64
- }
65
  $.ajax({
66
  url: ajaxurl,
67
  data: {
@@ -72,16 +220,16 @@
72
  dataType: 'json',
73
  type: 'POST',
74
  beforeSend: function () {
75
-
76
  },
77
  complete: function () {
78
- //unblock($tr);
79
  },
80
  error: function () {
81
  alert('Error!');
82
  },
83
  success: function (response) {
84
-
85
  if (response.success) {
86
  modal.model.set(response.data);
87
  modal.render();
@@ -97,6 +245,7 @@
97
  $button = $(e.target),
98
  contact_count = parseInt($('#qlwapp_contacts_table tr[data-contact_id]').length),
99
  order = parseInt(modal.model.get('order'));
 
100
  count++;
101
  if (timer) {
102
  clearTimeout(timer);
@@ -109,39 +258,44 @@
109
  } else {
110
  order = Math.max(order - count, 1);
111
  }
112
-
113
  modal.model.set({
114
- id: parseInt($('#qlwapp_contacts_table tr[data-contact_order=' + order + ']').data('contact_id'))
115
  });
116
  count = 0;
117
  modal.load();
118
  }, 300);
119
  },
120
  open: function (e) {
121
- this.load();
122
  $('body').addClass('modal-open').append(this.$el);
 
 
 
 
 
 
 
123
  },
124
  update: function (e) {
125
 
126
  e.preventDefault();
127
-
128
  var $field = $(e.target),
129
  name = $field.attr('name'),
130
  value = $field.val();
131
-
132
  if (e.target.type === 'checkbox') {
133
  value = $field.prop('checked') === true ? 1 : 0;
134
  }
135
 
136
  this.model.attributes[name] = value;
137
  this.model.changed[name] = value;
138
-
139
  },
140
  change: function (e) {
141
  e.preventDefault();
142
  this.update(e);
143
- this.render();
144
-
 
 
145
  },
146
  reload: function (e) {
147
  if (this.$el.find('#qlwapp_modal').hasClass('reload')) {
@@ -155,7 +309,9 @@
155
  e.preventDefault();
156
  this.undelegateEvents();
157
  $(document).off('focusin');
158
- $('body').removeClass('modal-open');
 
 
159
  this.reload(e);
160
  return;
161
  },
@@ -189,14 +345,15 @@
189
  alert('Error!');
190
  },
191
  success: function (response) {
 
192
  if (response.success) {
193
 
194
- $modal.addClass('reload');
195
-
196
  if (modal.model.attributes.id == undefined) {
 
 
197
  modal.close(e);
198
  }
199
-
200
  } else {
201
  alert(response.data);
202
  }
@@ -215,17 +372,25 @@
215
  });
216
  new ContactView({
217
  model: model
218
- });
219
- },
220
  });
 
 
221
  $('.qlwapp_settings_edit').on('click', function (e) {
222
  e.preventDefault();
223
- new ContactModal(e);
 
 
 
224
  });
 
225
  $('#qlwapp_contact_add').on('click', function (e) {
 
226
  e.preventDefault();
227
  new ContactModal(e);
228
  });
 
229
  $('.qlwapp_settings_delete').on('click', function (e) {
230
  e.preventDefault();
231
  var nonce = $('#qlwapp_delete_contact_nonce').val();
@@ -257,7 +422,7 @@
257
  success: function (response) {
258
 
259
  if (response.data) {
260
- console.log(response.data);
261
  location.reload();
262
  } else {
263
  alert(response.data);
@@ -266,7 +431,6 @@
266
  });
267
  }
268
  });
269
-
270
  // Sorting
271
  // ---------------------------------------------------------------------------
272
  $('table#qlwapp_contacts_table tbody').sortable({
@@ -361,6 +525,7 @@
361
  /// alert(response);
362
  },
363
  success: function (response) {
 
364
  $saved.addClass('is-active');
365
  $('#qlwapp_contact_order').prop('disabled', true);
366
  if (response.success) {
@@ -376,4 +541,24 @@
376
  });
377
  return false;
378
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  })(jQuery);
3
  var count = 0,
4
  timer;
5
 
6
+ var is_blocked = function ($node) {
7
+ return $node.is('.processing') || $node.parents('.processing').length;
8
+ };
9
+
10
+ //fix
11
+ var block = function () {
12
+ //var $node = $('#qlwapp_modal');
13
+ // if (!is_blocked($node)) {
14
+ $('#qlwapp_modal').addClass('processing');
15
+ // }
16
+ };
17
+
18
+ var unblock = function () {
19
+ $('#qlwapp_modal').removeClass('processing');
20
+ };
21
+
22
+
23
  _.mixin({
24
  escapeHtml: function (attribute) {
25
  return attribute.replace('&amp;', /&/g)
27
  .replace(/&lt;/g, "<")
28
  .replace(/&quot;/g, '"')
29
  .replace(/&#039;/g, "'");
30
+ },
31
  });
 
32
  var Contact = Backbone.Model.extend({
33
  defaults: qlwapp_contact.args
34
  });
35
 
36
+ var SubHeader = Backbone.View.extend({
37
+ templates: {},
38
+ initialize: function (options) {
39
+ this.templates.window = wp.template(options.subview);
40
+ },
41
+ render: function () {
42
+ var modal = this;
43
+ modal.$el.html(modal.templates.window(modal.attributes));
44
+ return this;
45
+ }
46
+ });
47
+
48
+ var SubFooter = Backbone.View.extend({
49
+ templates: {},
50
+ initialize: function (options) {
51
+ this.templates.window = wp.template(options.subview);
52
+ },
53
+ render: function () {
54
+ var modal = this;
55
+ modal.$el.html(modal.templates.window(modal.attributes));
56
+ return this;
57
+ }
58
+ });
59
+
60
+ var SubTabs = Backbone.View.extend({
61
+ templates: {},
62
+ initialize: function (options) {
63
+ this.templates.window = wp.template(options.subview);
64
+ },
65
+ render: function () {
66
+ var modal = this;
67
+ modal.$el.html(modal.templates.window(modal.attributes));
68
+ return this;
69
+ }
70
+ });
71
+
72
+ var SubContact = Backbone.View.extend({
73
+ templates: {},
74
+ initialize: function (options) {
75
+ this.templates.window = wp.template(options.subview);
76
+ },
77
+ render: function () {
78
+ var modal = this;
79
+ modal.$el.html(modal.templates.window(modal.attributes));
80
+ return this;
81
+ }
82
+ });
83
+
84
+ var SubViewChat = Backbone.View.extend({
85
+
86
+ templates: {},
87
+ initialize: function (options) {
88
+ this.templates.window = wp.template(options.subview);
89
+ },
90
+ render: function () {
91
+ var modal = this;
92
+ modal.$el.html(modal.templates.window(modal.attributes));
93
+ return this;
94
+ }
95
+ });
96
+
97
+ var SubVisibility = Backbone.View.extend({
98
+ templates: {},
99
+ initialize: function (options) {
100
+ this.templates.window = wp.template(options.subview);
101
+ },
102
+ render: function () {
103
+ var modal = this;
104
+ modal.$el.html(modal.templates.window(modal.attributes));
105
+ return this;
106
+ }
107
+ });
108
+ var SubInfo = Backbone.View.extend({
109
+ templates: {},
110
+ initialize: function (options) {
111
+ this.templates.window = wp.template(options.subview);
112
+ },
113
+ render: function () {
114
+ var modal = this;
115
+ modal.$el.html(modal.templates.window(modal.attributes));
116
+ return this;
117
+ }
118
+
119
+ });
120
+
121
+ var LoadTemplate = Backbone.View.extend({
122
+ templates: {},
123
+ initialize: function (options) {
124
+ // this.model.attributes = options.attributes;
125
+ // console.log(options);
126
+ this.templates.window = wp.template(options.subview);
127
+ // return this.init();
128
+ },
129
+ render: function () {
130
+ var modal = this;
131
+ modal.$el.html(modal.templates.window(modal.attributes));
132
+ return this;
133
+ }
134
+ });
135
+
136
+
137
  var ContactView = Backbone.View.extend({
138
+
139
  events: {
140
  'change input': 'enable',
141
  'change textarea': 'enable',
145
  'click .media-modal-prev': 'edit',
146
  'click .media-modal-next': 'edit',
147
  'change .media-modal-change': 'change',
148
+ 'change .media-modal-subview': 'subview',
149
  'submit .media-modal-form': 'submit'
150
  },
151
  templates: {},
152
  initialize: function () {
153
+ _.bindAll(this, 'open', 'edit', 'change', 'subview', 'load', 'render', 'close', 'submit');
154
  this.init();
155
  this.open();
 
156
  },
157
  init: function () {
158
  this.templates.window = wp.template('qlwapp-modal-window');
159
  },
160
+ LoadTemplate1: function (options) {
161
+ var x = Backbone.View.extend({
162
+ templates: {},
163
+ initialize: function (options) {
164
+ // this.model.attributes = options.attributes;
165
+ this.templates.window = wp.template(options.subview);
166
+ // return this.init();
167
+ },
168
+ render: function () {
169
+ var modal = this;
170
+ modal.$el.html(modal.templates.window(modal.attributes));
171
+ return this;
172
+ }
173
+ });
174
+ return x;
175
+ },
176
+ assign: function (view, selector) {
177
+ view.setElement(this.$(selector)).render();
178
+ },
179
  render: function () {
180
 
181
  var modal = this;
 
182
  // get active tab from the previous modal
183
  var tab = this.$el.find('ul.wc-tabs li.active a').attr('href');
 
184
  modal.$el.html(modal.templates.window(modal.model.attributes));
185
 
186
+ this.header = new SubHeader({subview: "subview-header", attributes: modal.model.attributes});
187
+ this.footer = new SubFooter({subview: "subview-footer", attributes: modal.model.attributes});
188
+ this.tabs = new SubTabs({subview: "subview-tabs", attributes: modal.model.attributes});
189
+ this.contact = new SubContact({subview: "subview-contact", attributes: modal.model.attributes});
190
+ this.contact_chat = new SubViewChat({subview: "subview-contact-chat", attributes: modal.model.attributes});
191
+ this.info = new SubInfo({subview: "subview-contact-info", attributes: modal.model.attributes});
192
+ this.visibility = new SubVisibility({subview: "subview-visibility", attributes: modal.model.attributes});
193
+
194
+ this.assign(this.header, '#panel-header');
195
+ this.assign(this.footer, '#panel-footer');
196
+ this.assign(this.tabs, '#panel-tabs');
197
+ this.assign(this.contact, '#panel-contact');
198
+ this.assign(this.contact_chat, '#subpanel-contact-chat');
199
+ this.assign(this.info, '#panel-info');
200
+ this.assign(this.visibility, '#panel-visibility');
201
+
202
  _.delay(function () {
203
+ modal.$el.trigger('qlwapp-enhanced-select');
204
+ modal.$el.trigger('qlwapp-tab-panels', tab);
205
+ // modal.$el.trigger('init_tooltips');
 
206
  }, 100);
 
207
  },
208
  load: function () {
209
  var modal = this;
210
+
211
+ block();
212
+
 
213
  $.ajax({
214
  url: ajaxurl,
215
  data: {
220
  dataType: 'json',
221
  type: 'POST',
222
  beforeSend: function () {
223
+ // block($modal); fix si se puede
224
  },
225
  complete: function () {
226
+ unblock();
227
  },
228
  error: function () {
229
  alert('Error!');
230
  },
231
  success: function (response) {
232
+ // console.log(response.data);
233
  if (response.success) {
234
  modal.model.set(response.data);
235
  modal.render();
245
  $button = $(e.target),
246
  contact_count = parseInt($('#qlwapp_contacts_table tr[data-contact_id]').length),
247
  order = parseInt(modal.model.get('order'));
248
+ //var global
249
  count++;
250
  if (timer) {
251
  clearTimeout(timer);
258
  } else {
259
  order = Math.max(order - count, 1);
260
  }
261
+ // console.log(order);
262
  modal.model.set({
263
+ id: parseInt($('#qlwapp_contacts_table tr[data-contact_position=' + order + ']').data('contact_id'))
264
  });
265
  count = 0;
266
  modal.load();
267
  }, 300);
268
  },
269
  open: function (e) {
 
270
  $('body').addClass('modal-open').append(this.$el);
271
+ if (this.model.attributes.id == undefined) {
272
+ _.delay(function () {
273
+ unblock();
274
+ }, 100);
275
+ return;
276
+ }
277
+ this.load();
278
  },
279
  update: function (e) {
280
 
281
  e.preventDefault();
 
282
  var $field = $(e.target),
283
  name = $field.attr('name'),
284
  value = $field.val();
 
285
  if (e.target.type === 'checkbox') {
286
  value = $field.prop('checked') === true ? 1 : 0;
287
  }
288
 
289
  this.model.attributes[name] = value;
290
  this.model.changed[name] = value;
 
291
  },
292
  change: function (e) {
293
  e.preventDefault();
294
  this.update(e);
295
+ // this.render();
296
+ },
297
+ subview: function (e) {
298
+ this.contact_chat.render();
299
  },
300
  reload: function (e) {
301
  if (this.$el.find('#qlwapp_modal').hasClass('reload')) {
309
  e.preventDefault();
310
  this.undelegateEvents();
311
  $(document).off('focusin');
312
+ // $('body').removeClass('modal-open');
313
+ // if necesary reload...
314
+ this.$el.find('#qlwapp_modal').addClass('reload');
315
  this.reload(e);
316
  return;
317
  },
345
  alert('Error!');
346
  },
347
  success: function (response) {
348
+ //.log(response);
349
  if (response.success) {
350
 
 
 
351
  if (modal.model.attributes.id == undefined) {
352
+ $modal.addClass('reload');
353
+ modal.reload(e);
354
  modal.close(e);
355
  }
356
+
357
  } else {
358
  alert(response.data);
359
  }
372
  });
373
  new ContactView({
374
  model: model
375
+ }).render();
376
+ }
377
  });
378
+
379
+ var exist_modal = false;
380
  $('.qlwapp_settings_edit').on('click', function (e) {
381
  e.preventDefault();
382
+ if (!exist_modal) {
383
+ new ContactModal(e);
384
+ exist_modal = true;
385
+ }
386
  });
387
+
388
  $('#qlwapp_contact_add').on('click', function (e) {
389
+
390
  e.preventDefault();
391
  new ContactModal(e);
392
  });
393
+
394
  $('.qlwapp_settings_delete').on('click', function (e) {
395
  e.preventDefault();
396
  var nonce = $('#qlwapp_delete_contact_nonce').val();
422
  success: function (response) {
423
 
424
  if (response.data) {
425
+ // console.log(response.data);
426
  location.reload();
427
  } else {
428
  alert(response.data);
431
  });
432
  }
433
  });
 
434
  // Sorting
435
  // ---------------------------------------------------------------------------
436
  $('table#qlwapp_contacts_table tbody').sortable({
525
  /// alert(response);
526
  },
527
  success: function (response) {
528
+ // console.log(response);
529
  $saved.addClass('is-active');
530
  $('#qlwapp_contact_order').prop('disabled', true);
531
  if (response.success) {
541
  });
542
  return false;
543
  });
544
+ $(document).on('qlwapp-tab-panels', function (e, active) {
545
+ var $modal = $(e.target),
546
+ $tabs = $modal.find('ul.qlwapp-tabs'),
547
+ $active = $tabs.find('a[href="' + active + '"]');
548
+ $tabs.show();
549
+ $tabs.find('a').click(function (e) {
550
+ e.preventDefault();
551
+ var panel_wrap = $(this).closest('div.panel-wrap');
552
+ $tabs.find('li', panel_wrap).removeClass('active');
553
+ $(this).parent().addClass('active');
554
+ $('div.panel', panel_wrap).hide();
555
+ $($(this).attr('href')).show();
556
+ });
557
+ if ($active.length && $($active.attr('href')).length) {
558
+ $active.click();
559
+ } else {
560
+ $tabs.find('li.active').find('a').click();
561
+ }
562
+
563
+ });
564
  })(jQuery);
assets/backend/js/qlwapp-admin-contact.min.js ADDED
@@ -0,0 +1 @@
 
1
+ (function(d){var e=0,k;var r=function(s){return s.is(".processing")||s.parents(".processing").length};var i=function(){d("#qlwapp_modal").addClass("processing")};var g=function(){d("#qlwapp_modal").removeClass("processing")};_.mixin({escapeHtml:function(s){return s.replace("&amp;",/&/g).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&#039;/g,"'")},});var f=Backbone.Model.extend({defaults:qlwapp_contact.args});var c=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var a=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var n=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var l=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var p=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var h=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var m=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var q=Backbone.View.extend({templates:{},initialize:function(s){this.templates.window=wp.template(s.subview)},render:function(){var s=this;s.$el.html(s.templates.window(s.attributes));return this}});var o=Backbone.View.extend({events:{"change input":"enable","change textarea":"enable","change select":"enable","click .media-modal-backdrop":"close","click .media-modal-close":"close","click .media-modal-prev":"edit","click .media-modal-next":"edit","change .media-modal-change":"change","change .media-modal-subview":"subview","submit .media-modal-form":"submit"},templates:{},initialize:function(){_.bindAll(this,"open","edit","change","subview","load","render","close","submit");this.init();this.open()},init:function(){this.templates.window=wp.template("qlwapp-modal-window")},LoadTemplate1:function(t){var s=Backbone.View.extend({templates:{},initialize:function(u){this.templates.window=wp.template(u.subview)},render:function(){var u=this;u.$el.html(u.templates.window(u.attributes));return this}});return s},assign:function(t,s){t.setElement(this.$(s)).render()},render:function(){var t=this;var s=this.$el.find("ul.wc-tabs li.active a").attr("href");t.$el.html(t.templates.window(t.model.attributes));this.header=new c({subview:"subview-header",attributes:t.model.attributes});this.footer=new a({subview:"subview-footer",attributes:t.model.attributes});this.tabs=new n({subview:"subview-tabs",attributes:t.model.attributes});this.contact=new l({subview:"subview-contact",attributes:t.model.attributes});this.contact_chat=new p({subview:"subview-contact-chat",attributes:t.model.attributes});this.info=new m({subview:"subview-contact-info",attributes:t.model.attributes});this.visibility=new h({subview:"subview-visibility",attributes:t.model.attributes});this.assign(this.header,"#panel-header");this.assign(this.footer,"#panel-footer");this.assign(this.tabs,"#panel-tabs");this.assign(this.contact,"#panel-contact");this.assign(this.contact_chat,"#subpanel-contact-chat");this.assign(this.info,"#panel-info");this.assign(this.visibility,"#panel-visibility");_.delay(function(){t.$el.trigger("qlwapp-enhanced-select");t.$el.trigger("qlwapp-tab-panels",s)},100)},load:function(){var s=this;i();d.ajax({url:ajaxurl,data:{action:"qlwapp_edit_contact",nonce:qlwapp_contact.nonce.qlwapp_edit_contact,contact_id:this.model.attributes.id},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){g()},error:function(){alert("Error!")},success:function(t){if(t.success){s.model.set(t.data);s.render()}else{alert(t.data)}}})},edit:function(w){w.preventDefault();var u=this,v=d(w.target),t=parseInt(d("#qlwapp_contacts_table tr[data-contact_id]").length),s=parseInt(u.model.get("order"));e++;if(k){clearTimeout(k)}k=setTimeout(function(){if(v.hasClass("media-modal-next")){s=Math.min(s+e,t)}else{s=Math.max(s-e,1)}u.model.set({id:parseInt(d("#qlwapp_contacts_table tr[data-contact_position="+s+"]").data("contact_id"))});e=0;u.load()},300)},open:function(s){d("body").addClass("modal-open").append(this.$el);if(this.model.attributes.id==undefined){_.delay(function(){g()},100);return}this.load()},update:function(v){v.preventDefault();var t=d(v.target),s=t.attr("name"),u=t.val();if(v.target.type==="checkbox"){u=t.prop("checked")===true?1:0}this.model.attributes[s]=u;this.model.changed[s]=u},change:function(s){s.preventDefault();this.update(s)},subview:function(s){this.contact_chat.render()},reload:function(s){if(this.$el.find("#qlwapp_modal").hasClass("reload")){location.reload();return}this.remove();return},close:function(s){s.preventDefault();this.undelegateEvents();d(document).off("focusin");this.$el.find("#qlwapp_modal").addClass("reload");this.reload(s);return},enable:function(s){d(".media-modal-submit").removeProp("disabled")},submit:function(v){v.preventDefault();var u=this,t=u.$el.find("#qlwapp_modal"),s=t.find(".attachment-details");d.ajax({url:ajaxurl,data:{action:"qlwapp_save_contact",nonce:qlwapp_contact.nonce.qlwapp_save_contact,contact_id:u.model.attributes.id,contact_data:d("form",this.$el).serialize()},dataType:"json",type:"POST",beforeSend:function(){d(".media-modal-submit").prop("disabled",true);s.addClass("save-waiting")},complete:function(){s.addClass("save-complete");s.removeClass("save-waiting")},error:function(){alert("Error!")},success:function(w){if(w.success){if(u.model.attributes.id==undefined){t.addClass("reload");u.reload(v);u.close(v)}}else{alert(w.data)}}});return false}});var b=Backbone.View.extend({initialize:function(v){var u=d(v.target),t=u.closest("[data-contact_id]").data("contact_id");var s=new f();s.set({id:t});new o({model:s}).render()}});var j=false;d(".qlwapp_settings_edit").on("click",function(s){s.preventDefault();if(!j){new b(s);j=true}});d("#qlwapp_contact_add").on("click",function(s){s.preventDefault();new b(s)});d(".qlwapp_settings_delete").on("click",function(v){v.preventDefault();var s=d("#qlwapp_delete_contact_nonce").val();var u=d(v.target),t=u.closest("[data-contact_id]").data("contact_id");if(!confirm(qlwapp_contact.message.contact_confirm_delete)){return false}else{d.ajax({url:ajaxurl,data:{action:"qlwapp_delete_contact",nonce:s,contact_id:t},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(w){console.log("response from error ");console.log(w)},success:function(w){if(w.data){location.reload()}else{alert(w.data)}}})}});d("table#qlwapp_contacts_table tbody").sortable({items:"tr",cursor:"move",axis:"y",handle:"td.sort",scrollSensitivity:40,helper:function(s,t){t.children().each(function(){d(this).width(d(this).width())});t.css("left","0");return t},start:function(s,t){t.item.css("background-color","#f6f6f6")},stop:function(s,t){t.item.removeAttr("style");t.item.trigger("updateMoveButtons");t.item.trigger("updateSaveButton")}});d(document).on("updateSaveButton",function(){d("#qlwapp_contact_order").removeProp("disabled")});d(".wc-item-reorder-nav").find(".wc-move-up, .wc-move-down").on("click",function(){var x=d(this),s=x.closest("tr");x.focus();var w=x.is(".wc-move-up"),v=x.is(".wc-move-down");if(w){var u=s.prev("tr");if(u&&u.length){u.before(s)}}else{if(v){var t=s.next("tr");if(t&&t.length){t.after(s)}}}x.focus();x.closest("table").trigger("updateMoveButtons");x.closest("table").trigger("updateSaveButton")});d(".wc-item-reorder-nav").closest("table").on("updateMoveButtons",function(){var t=d(this),s=d(this).find("tbody tr:last"),u=d(this).find("tbody tr:first");t.find(".wc-item-reorder-nav .wc-move-disabled").removeClass("wc-move-disabled").attr({tabindex:"0","aria-hidden":"false"});u.find(".wc-item-reorder-nav .wc-move-up").addClass("wc-move-disabled").attr({tabindex:"-1","aria-hidden":"true"});s.find(".wc-item-reorder-nav .wc-move-down").addClass("wc-move-disabled").attr({tabindex:"-1","aria-hidden":"true"})});d("table#qlwapp_contacts_table tbody").trigger("updateMoveButtons");d(document).on("submit","#qlwapp_contacts_form",function(v){v.preventDefault();var s=d(this),u=s.find(".settings-save-status .spinner"),t=s.find(".settings-save-status .saved");d.ajax({url:ajaxurl,data:{action:"qlwapp_save_contact_order",nonce:qlwapp_contact.nonce.qlwapp_save_contact_order,contact_data:s.serialize()},dataType:"json",type:"POST",beforeSend:function(){u.addClass("is-active")},complete:function(){u.removeClass("is-active")},error:function(w){console.log("response from error ");console.log(w)},success:function(w){t.addClass("is-active");d("#qlwapp_contact_order").prop("disabled",true);if(w.success){setTimeout(function(){t.removeClass("is-active")},1500)}else{console.log(w.data);alert(w.data)}}});return false});d(document).on("qlwapp-tab-panels",function(w,v){var u=d(w.target),t=u.find("ul.qlwapp-tabs"),s=t.find('a[href="'+v+'"]');t.show();t.find("a").click(function(y){y.preventDefault();var x=d(this).closest("div.panel-wrap");t.find("li",x).removeClass("active");d(this).parent().addClass("active");d("div.panel",x).hide();d(d(this).attr("href")).show()});if(s.length&&d(s.attr("href")).length){s.click()}else{t.find("li.active").find("a").click()}})})(jQuery);
assets/{js → backend/js}/qlwapp-admin.js RENAMED
@@ -11,7 +11,7 @@
11
  }
12
 
13
  disabled(true);
14
-
15
  $('form').change(function (e) {
16
  disabled(false);
17
  });
@@ -27,53 +27,71 @@
27
  change: function (event, ui) {
28
  disabled(false);
29
  },
 
 
 
30
  });
31
 
32
  $(document).on('tinymce_change', function (e) {
33
  disabled(false);
34
  });
35
 
36
- $('.qlwapp-select2').select2({allowClear: false, theme: 'default', minimumResultsForSearch: -1});
37
-
38
- $('.qlwapp-select2-ajax').each(function () {
39
-
40
- var $select = $(this),
41
- name = $(this).data('name');
42
- $select.select2({
43
- allowClear: true,
44
- ajax: {
45
- url: ajaxurl,
46
- dataType: 'json',
47
- //delay: 500,
48
- data: function (params) {
49
- return {
50
- name: name,
51
- per_page: 10,
52
- q: params.term || 0,
53
- selected: $select.select2('val') || 0,
54
- action: 'qlwapp_get_posts',
55
- nonce: qlwapp.nonce.qlwapp_get_posts
56
- };
57
- },
58
- processResults: function (response) {
59
-
60
- var options = [];
61
-
62
- if (response) {
63
- $.each(response, function (index, text) {
64
- options.push({id: text[0], text: text[1]});
65
- });
66
- }
67
- return {
68
- results: options
69
- };
 
 
 
 
 
 
 
 
 
70
  },
71
- cache: true
72
- },
73
- minimumInputLength: 3
 
 
74
  });
75
 
76
- });
 
 
 
 
77
 
78
  $('.qlwapp-color-field').wpColorPicker();
79
 
11
  }
12
 
13
  disabled(true);
14
+
15
  $('form').change(function (e) {
16
  disabled(false);
17
  });
27
  change: function (event, ui) {
28
  disabled(false);
29
  },
30
+ clear: function (event, ui) {
31
+ disabled(false);
32
+ },
33
  });
34
 
35
  $(document).on('tinymce_change', function (e) {
36
  disabled(false);
37
  });
38
 
39
+ $(document).on('qlwapp-enhanced-select', function (e) {
40
+ $('.qlwapp-select2').filter(':not(.enhanced)').each(function () {
41
+ var select2_args = {
42
+ allowClear: false,
43
+ theme: 'default',
44
+ minimumResultsForSearch: -1
45
+ };
46
+
47
+ $(this).select2(select2_args).addClass('enhanced');
48
+ });
49
+ $('.qlwapp-select2-search').filter(':not(.enhanced)').each(function () {
50
+ var $select = $(this),
51
+ name = $(this).data('name');
52
+ var select2_args = {
53
+ allowClear: true,
54
+ ajax: {
55
+ url: ajaxurl,
56
+ dataType: 'json',
57
+ //delay: 500,
58
+ data: function (params) {
59
+ return {
60
+ name: name,
61
+ per_page: 10,
62
+ q: params.term || 0,
63
+ selected: $select.select2('val') || 0,
64
+ action: 'qlwapp_get_posts',
65
+ nonce: qlwapp.nonce.qlwapp_get_posts
66
+ };
67
+ },
68
+ processResults: function (response) {
69
+
70
+ var options = [];
71
+
72
+ if (response) {
73
+ $.each(response, function (index, text) {
74
+ options.push({id: text[0], text: text[1]});
75
+ });
76
+ }
77
+ return {
78
+ results: options
79
+ };
80
+ },
81
+ cache: true
82
  },
83
+ minimumInputLength: 3
84
+ };
85
+
86
+ $(this).select2(select2_args).addClass('enhanced');
87
+
88
  });
89
 
90
+ // $('.qlwapp-select2').select2({allowClear: false, theme: 'default', minimumResultsForSearch: -1});
91
+
92
+ }).trigger('qlwapp-enhanced-select');
93
+
94
+
95
 
96
  $('.qlwapp-color-field').wpColorPicker();
97
 
assets/backend/js/qlwapp-admin.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+
2
+ (function(b){function a(c){if(c){b("#submit").attr("disabled",true)}else{b("#submit").attr("disabled",false)}}a(true);b("form").change(function(c){a(false)});b(".button").click(function(){a(false)});b("button").click(function(){a(false)});b(".qlwapp-color-field").wpColorPicker({change:function(c,d){a(false)},clear:function(c,d){a(false)},});b(document).on("tinymce_change",function(c){a(false)});b(document).on("qlwapp-enhanced-select",function(c){b(".qlwapp-select2").filter(":not(.enhanced)").each(function(){var d={allowClear:false,theme:"default",minimumResultsForSearch:-1};b(this).select2(d).addClass("enhanced")});b(".qlwapp-select2-search").filter(":not(.enhanced)").each(function(){var e=b(this),d=b(this).data("name");var f={allowClear:true,ajax:{url:ajaxurl,dataType:"json",data:function(g){return{name:d,per_page:10,q:g.term||0,selected:e.select2("val")||0,action:"qlwapp_get_posts",nonce:qlwapp.nonce.qlwapp_get_posts}},processResults:function(g){var h=[];if(g){b.each(g,function(i,j){h.push({id:j[0],text:j[1]})})}return{results:h}},cache:true},minimumInputLength:3};b(this).select2(f).addClass("enhanced")})}).trigger("qlwapp-enhanced-select");b(".qlwapp-color-field").wpColorPicker();b(document).on("click",".upload_image_button",function(f){f.preventDefault();var c=wp.media.editor.send.attachment,d=b(this);wp.media.editor.send.attachment=function(e,g){b(d).parent().prev().attr("src",g.url);b(d).prev().val(g.url).trigger("change");wp.media.editor.send.attachment=c};wp.media.editor.open(d);return false});b(document).on("click",".remove_image_button",function(c){c.preventDefault();var d=b(this).parent().prev().attr("data-src");b(this).parent().prev().attr("src",d);b(this).prev().prev().val("").trigger("change");return false});b(document).on("qlwapp.save","form",function(i,h,f){var c=b(i.currentTarget),g=c.find(".settings-save-status .spinner"),d=c.find(".settings-save-status .saved");b.ajax({url:ajaxurl,data:{action:h,nonce:f,form_data:c.serialize()},dataType:"json",type:"POST",beforeSend:function(){a(true);g.addClass("is-active")},complete:function(){g.removeClass("is-active")},error:function(e){console.log(e)},success:function(e){d.addClass("is-active");if(e.success){setTimeout(function(){d.removeClass("is-active")},2000);console.log(e.data)}else{alert(e.data)}}});return false});b(document).on("submit","#qlwapp_button_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_button_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_button",d])});b(document).on("submit","#qlwapp_box_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_box_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_box",d])});b(document).on("submit","#qlwapp_display_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_display_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_display",d])});b(document).on("submit","#qlwapp_scheme_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_scheme_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_scheme",d])})})(jQuery);
assets/{js → backend/js}/select2.min.js RENAMED
File without changes
assets/css/qlwapp-admin.css DELETED
@@ -1,143 +0,0 @@
1
- /* re-order td */
2
- #qlwapp_contacts_table td,
3
- #qlwapp_contacts_table th {
4
- padding: 1em!important;
5
- vertical-align: top;
6
- line-height: 1.75em;
7
- }
8
- #qlwapp_contacts_table td img.qlwapp-avatar {
9
- width: 50px;
10
- height: 50px;
11
- }
12
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button {
13
- position: relative;
14
- overflow: hidden;
15
- float: left;
16
- display: block;
17
- width: 24px;
18
- height: 24px;
19
- margin: 0;
20
- background: 0 0;
21
- border: none;
22
- box-shadow: none;
23
- color: #82878c;
24
- text-indent: -9999px;
25
- cursor: pointer;
26
- outline: 0;
27
- }
28
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button::before {
29
- display: inline-block;
30
- position: absolute;
31
- top: 0;
32
- right: 0;
33
- width: 100%;
34
- height: 100%;
35
- font: normal 20px/23px dashicons;
36
- text-align: center;
37
- text-indent: 0;
38
- -webkit-font-smoothing: antialiased;
39
- -moz-osx-font-smoothing: grayscale;
40
- }
41
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-up::before {
42
- content: "\f343";
43
- }
44
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-down::before {
45
- content: "\f347";
46
- }
47
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-disabled {
48
- color: #d5d5d5!important;
49
- cursor: default;
50
- pointer-events: none;
51
- }
52
- #qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav::before {
53
- content: "\f333";
54
- font-family: Dashicons;
55
- text-align: center;
56
- line-height: 1;
57
- color: #999;
58
- display: block;
59
- width: 24px;
60
- float: left;
61
- height: 100%;
62
- line-height: 24px;
63
- cursor: move;
64
- }
65
- /*end re-order*/
66
- #qlwapp_modal {
67
- max-width: 890px;
68
- max-height: 560px;
69
- margin: auto;
70
- }
71
- #qlwapp_modal .edit-attachment-frame .attachment-media-view {
72
- width: 75% ;
73
- }
74
- #qlwapp_modal .edit-attachment-frame .attachment-info {
75
- width: 25%;
76
- }
77
- #qlwapp_modal input[type=time] {
78
- height: 30px;
79
- }
80
- #qlwapp_modal.qlwapp-modal-contact table {
81
- width: 100%;
82
- padding: 15px;
83
- border-width: 1px 0 0 0;
84
- box-shadow: none;
85
- table-layout: fixed;
86
- }
87
- #qlwapp_modal.qlwapp-modal-contact table th {
88
- width: 70px;
89
- }
90
- #qlwapp_modal.qlwapp-modal-contact table td {
91
- width: calc(50% - 70px);
92
- }
93
- #qlwapp_modal.qlwapp-modal-icons .attachments {
94
- top: 0;
95
- left: 0;
96
- right: 0;
97
- }
98
- #qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail {
99
- vertical-align: middle;
100
- text-align: center;
101
- }
102
- #qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail > i {
103
- text-align: center;
104
- font-size: 3vw;
105
- display: inline-block;
106
- vertical-align: middle;
107
- height: auto;
108
- width: auto;
109
- font-size: 2em;
110
- position: relative;
111
- left: -1px;
112
- }
113
- #qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail:before {
114
- content: '';
115
- display: inline-block;
116
- width: 0px;
117
- height: 100%;
118
- vertical-align: middle;
119
- }
120
- .settings-save-status .spinner {
121
- float: none;
122
- display: inline-block;
123
- margin: 0 10px;
124
- }
125
- .settings-save-status .saved {
126
- font-size: 12px;
127
- display: none;
128
- }
129
- .settings-save-status .saved.is-active {
130
- display: inline-block;
131
- }
132
- .qlwapp-input,
133
- .qlwapp-select2 {
134
- width: 350px;
135
- max-width: 100%;
136
- }
137
- .qlwapp-input {
138
- margin: 0;
139
- padding: 6px;
140
- box-sizing: border-box;
141
- vertical-align: top;
142
- }
143
- /*# sourceMappingURL=qlwapp-admin.css.map */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/qlwapp-admin.css.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../less/qlwapp-admin.less"],"names":[],"mappings":";AAEA,sBACE;AADF,sBAEE;EACE,sBAAA;EACA,mBAAA;EACA,mBAAA;;AALJ,sBAQE,GAAG,IAAG;EACJ,WAAA;EACA,YAAA;;AAIA,sBADF,MACG,YACC,qBACE;EACE,kBAAA;EACA,gBAAA;EACA,WAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,eAAA;EACA,YAAA;EACA,gBAAA;EACA,cAAA;EACA,oBAAA;EACA,eAAA;EACA,UAAA;;AACA,sBAlBR,MACG,YACC,qBACE,OAeG;EACC,qBAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,YAAA;EACA,gCAAA;EACA,kBAAA;EACA,cAAA;EACA,mCAAA;EACA,kCAAA;;AAEF,sBA/BR,MACG,YACC,qBACE,OA4BG,WAAW;EACV,SAAS,OAAT;;AAEF,sBAlCR,MACG,YACC,qBACE,OA+BG,aAAa;EACZ,SAAS,OAAT;;AAEF,sBArCR,MACG,YACC,qBACE,OAkCG;EACC,wBAAA;EACA,eAAA;EACA,oBAAA;;AAGJ,sBA3CN,MACG,YACC,qBAyCG;EACC,SAAS,OAAT;EACA,sBAAA;EACA,kBAAA;EACA,cAAA;EACA,WAAA;EACA,cAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,YAAA;;;AAYV;EAEE,gBAAA;EACA,iBAAA;EACA,YAAA;;AAJF,aAME,uBAAuB;EACrB,WAAA;;AAPJ,aASE,uBAAuB;EACrB,UAAA;;AAVJ,aAaE,MAAK;EACH,YAAA;;AAGF,aAAC,qBAEC;EACE,WAAA;EACA,aAAA;EACA,uBAAA;EACA,gBAAA;EACA,mBAAA;;AAPJ,aAAC,qBAEC,MAOE;EACE,WAAA;;AAVN,aAAC,qBAEC,MAWE;EACE,uBAAA;;AAKN,aAAC,mBAEC;EACE,MAAA;EACA,OAAA;EACA,QAAA;;AALJ,aAAC,mBAEC,aAKE;EACE,sBAAA;EACA,kBAAA;;AATN,aAAC,mBAEC,aAKE,WAIE;EACE,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,sBAAA;EACA,YAAA;EACA,WAAA;EACA,cAAA;EACA,kBAAA;EACA,UAAA;;AAGF,aAvBL,mBAEC,aAKE,WAgBG;EACC,SAAS,EAAT;EACA,qBAAA;EACA,UAAA;EACA,YAAA;EACA,sBAAA;;AAQV,qBAEE;EACE,WAAA;EACA,qBAAA;EACA,cAAA;;AALJ,qBAQE;EACE,eAAA;EACA,aAAA;;AACA,qBAHF,OAGG;EACC,qBAAA;;AAKN;AACA;EACE,YAAA;EACA,eAAA;;AAGF;EACE,SAAA;EACA,YAAA;EACA,sBAAA;EACA,mBAAA","file":"qlwapp-admin.css"}
 
assets/css/qlwapp-admin.min.css DELETED
@@ -1,2 +0,0 @@
1
-
2
- #qlwapp_contacts_table td,#qlwapp_contacts_table th{padding:1em!important;vertical-align:top;line-height:1.75em}#qlwapp_contacts_table td img.qlwapp-avatar{width:50px;height:50px}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button{position:relative;overflow:hidden;float:left;display:block;width:24px;height:24px;margin:0;background:0;border:0;box-shadow:none;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button::before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:normal 20px/23px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-up::before{content:"\f343"}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-down::before{content:"\f347"}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav button.wc-move-disabled{color:#d5d5d5!important;cursor:default;pointer-events:none}#qlwapp_contacts_table tbody.ui-sortable .wc-item-reorder-nav::before{content:"\f333";font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:24px;float:left;height:100%;line-height:24px;cursor:move}#qlwapp_modal{max-width:890px;max-height:560px;margin:auto}#qlwapp_modal .edit-attachment-frame .attachment-media-view{width:75%}#qlwapp_modal .edit-attachment-frame .attachment-info{width:25%}#qlwapp_modal input[type=time]{height:30px}#qlwapp_modal.qlwapp-modal-contact table{width:100%;padding:15px;border-width:1px 0 0 0;box-shadow:none;table-layout:fixed}#qlwapp_modal.qlwapp-modal-contact table th{width:70px}#qlwapp_modal.qlwapp-modal-contact table td{width:calc(50% - 70px)}#qlwapp_modal.qlwapp-modal-icons .attachments{top:0;left:0;right:0}#qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail{vertical-align:middle;text-align:center}#qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail>i{text-align:center;font-size:3vw;display:inline-block;vertical-align:middle;height:auto;width:auto;font-size:2em;position:relative;left:-1px}#qlwapp_modal.qlwapp-modal-icons .attachments .thumbnail:before{content:'';display:inline-block;width:0;height:100%;vertical-align:middle}.settings-save-status .spinner{float:none;display:inline-block;margin:0 10px}.settings-save-status .saved{font-size:12px;display:none}.settings-save-status .saved.is-active{display:inline-block}.qlwapp-input,.qlwapp-select2{width:350px;max-width:100%}.qlwapp-input{margin:0;padding:6px;box-sizing:border-box;vertical-align:top}
 
 
assets/css/qlwapp-select2.css DELETED
@@ -1,409 +0,0 @@
1
- .select2-container {
2
- box-sizing: border-box;
3
- display: inline-block;
4
- margin: 0;
5
- position: relative;
6
- vertical-align: middle
7
- }
8
-
9
- .select2-container .select2-selection--single {
10
- box-sizing: border-box;
11
- cursor: pointer;
12
- display: block;
13
- height: 28px;
14
- margin: 0 0 -4px;
15
- -moz-user-select: none;
16
- -ms-user-select: none;
17
- user-select: none;
18
- -webkit-user-select: none
19
- }
20
-
21
- .select2-container .select2-selection--single .select2-selection__rendered {
22
- display: block;
23
- padding-left: 8px;
24
- padding-right: 20px;
25
- overflow: hidden;
26
- text-overflow: ellipsis;
27
- white-space: nowrap
28
- }
29
-
30
- .select2-container .select2-selection--single .select2-selection__clear {
31
- position: relative
32
- }
33
-
34
- .select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered {
35
- padding-right: 8px;
36
- padding-left: 20px
37
- }
38
-
39
- .select2-container .select2-selection {
40
- box-sizing: border-box;
41
- cursor: pointer;
42
- display: block;
43
- min-height: 32px;
44
- -moz-user-select: none;
45
- -ms-user-select: none;
46
- user-select: none;
47
- -webkit-user-select: none
48
- }
49
-
50
- .select2-container .select2-selection .select2-selection__rendered {
51
- display: inline-block;
52
- overflow: hidden;
53
- padding-left: 8px;
54
- text-overflow: ellipsis;
55
- white-space: nowrap
56
- }
57
-
58
- .select2-container .select2-search--inline {
59
- float: left;
60
- padding: 0
61
- }
62
-
63
- .select2-container .select2-search--inline .select2-search__field {
64
- box-sizing: border-box;
65
- border: none;
66
- font-size: 100%;
67
- margin: 0;
68
- padding: 0
69
- }
70
-
71
- .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
72
- -webkit-appearance: none
73
- }
74
-
75
- .select2-dropdown {
76
- background-color: #fff;
77
- border: 1px solid #ccc;
78
- border-radius: 2px;
79
- box-sizing: border-box;
80
- display: block;
81
- position: absolute;
82
- left: -100000px;
83
- width: 100%;
84
- z-index: 1051
85
- }
86
-
87
- .select2-results {
88
- display: block
89
- }
90
-
91
- .select2-results__options {
92
- list-style: none;
93
- margin: 0;
94
- padding: 0
95
- }
96
-
97
- .select2-results__option {
98
- margin: 0;
99
- padding: 8px;
100
- -moz-user-select: none;
101
- -ms-user-select: none;
102
- user-select: none;
103
- -webkit-user-select: none
104
- }
105
-
106
- .select2-results__option[aria-selected],
107
- .select2-results__option[data-selected] {
108
- cursor: pointer
109
- }
110
-
111
- .select2-container--open .select2-dropdown {
112
- left: 0
113
- }
114
-
115
- .select2-container--open .select2-dropdown--above {
116
- border-bottom: none;
117
- border-bottom-left-radius: 0;
118
- border-bottom-right-radius: 0
119
- }
120
-
121
- .select2-container--open .select2-dropdown--below {
122
- border-top: none;
123
- border-top-left-radius: 0;
124
- border-top-right-radius: 0
125
- }
126
-
127
- .select2-search--dropdown {
128
- display: block;
129
- padding: 4px
130
- }
131
-
132
- .select2-search--dropdown .select2-search__field {
133
- padding: 4px;
134
- width: 100%;
135
- box-sizing: border-box
136
- }
137
-
138
- .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
139
- -webkit-appearance: none
140
- }
141
-
142
- .select2-search--dropdown.select2-search--hide {
143
- display: none
144
- }
145
-
146
- .select2-close-mask {
147
- border: 0;
148
- margin: 0;
149
- padding: 0;
150
- display: block;
151
- position: fixed;
152
- left: 0;
153
- top: 0;
154
- min-height: 100%;
155
- min-width: 100%;
156
- height: auto;
157
- width: auto;
158
- opacity: 0;
159
- z-index: 99;
160
- background-color: #fff
161
- }
162
-
163
- .select2-hidden-accessible {
164
- border: 0!important;
165
- clip: rect(0 0 0 0)!important;
166
- height: 1px!important;
167
- margin: -1px!important;
168
- overflow: hidden!important;
169
- padding: 0!important;
170
- position: absolute!important;
171
- width: 1px!important
172
- }
173
-
174
- .select2-container--default .select2-selection--single {
175
- background-color: #fff;
176
- border: 1px solid #ccc;
177
- border-radius: 4px
178
- }
179
-
180
- .select2-container--default .select2-selection--single .select2-selection__rendered {
181
- color: #444;
182
- line-height: 28px
183
- }
184
-
185
- .select2-container--default .select2-selection--single .select2-selection__clear {
186
- cursor: pointer;
187
- float: right;
188
- font-weight: 700
189
- }
190
-
191
- .select2-container--default .select2-selection--single .select2-selection__placeholder {
192
- color: #999
193
- }
194
-
195
- .select2-container--default .select2-selection--single .select2-selection__arrow {
196
- height: 32px;
197
- position: absolute;
198
- top: 0px;
199
- right: 1px;
200
- width: 20px
201
- }
202
-
203
- .select2-container--default .select2-selection--single .select2-selection__arrow b {
204
- border-color: #888 transparent transparent transparent;
205
- border-style: solid;
206
- border-width: 5px 4px 0 4px;
207
- height: 0;
208
- left: 50%;
209
- margin-left: -4px;
210
- margin-top: -2px;
211
- position: absolute;
212
- top: 50%;
213
- width: 0
214
- }
215
-
216
- .select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear {
217
- float: left
218
- }
219
-
220
- .select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow {
221
- left: 1px;
222
- right: auto
223
- }
224
-
225
- .select2-container--default.select2-container--disabled .select2-selection--single {
226
- background-color: #eee;
227
- cursor: default
228
- }
229
-
230
- .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
231
- display: none
232
- }
233
-
234
- .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
235
- border-color: transparent transparent #888 transparent;
236
- border-width: 0 4px 5px 4px
237
- }
238
-
239
- .select2-container--default .select2-selection {
240
- background-color: #fff;
241
- border: 1px solid #ccc;
242
- border-radius: 2px;
243
- cursor: text
244
- }
245
-
246
- .select2-container--default .select2-selection .select2-selection__rendered {
247
- box-sizing: border-box;
248
- list-style: none;
249
- margin: 0;
250
- padding: 0 5px;
251
- width: 100%
252
- }
253
-
254
- .select2-container--default .select2-selection .select2-selection__rendered li {
255
- list-style: none;
256
- margin: 5px 5px 0 0
257
- }
258
-
259
- .select2-container--default .select2-selection .select2-selection__rendered li:before {
260
- content: '';
261
- display: none
262
- }
263
-
264
- .select2-container--default .select2-selection .select2-selection__placeholder {
265
- color: #999;
266
- margin-top: 5px;
267
- float: left
268
- }
269
-
270
- .select2-container--default .select2-selection .select2-selection__clear {
271
- cursor: pointer;
272
- float: right;
273
- font-weight: 700;
274
- margin-top: 5px;
275
- margin-right: 10px
276
- }
277
-
278
- .select2-container--default .select2-selection .select2-selection__choice {
279
- background-color: #e4e4e4;
280
- border: 1px solid #ccc;
281
- border-radius: 2px;
282
- cursor: default;
283
- float: left;
284
- margin-right: 5px;
285
- margin-top: 5px;
286
- padding: 0 5px
287
- }
288
-
289
- .select2-container--default .select2-selection .select2-selection__choice__remove {
290
- color: #999;
291
- cursor: pointer;
292
- display: inline-block;
293
- font-weight: 700;
294
- margin-right: 2px
295
- }
296
-
297
- .select2-container--default .select2-selection .select2-selection__choice__remove:hover {
298
- color: #333
299
- }
300
-
301
- .select2-container--default[dir=rtl] .select2-selection .select2-search--inline,
302
- .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice,
303
- .select2-container--default[dir=rtl] .select2-selection .select2-selection__placeholder {
304
- float: right
305
- }
306
-
307
- .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice {
308
- margin-left: 5px;
309
- margin-right: auto
310
- }
311
-
312
- .select2-container--default[dir=rtl] .select2-selection .select2-selection__choice__remove {
313
- margin-left: 2px;
314
- margin-right: auto
315
- }
316
-
317
- .select2-container--default.select2-container--focus .select2-selection {
318
- outline: 0
319
- }
320
-
321
- .select2-container--default.select2-container--disabled .select2-selection {
322
- background-color: #eee;
323
- cursor: default
324
- }
325
-
326
- .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
327
- display: none
328
- }
329
-
330
- .select2-container--default.select2-container--open.select2-container--above .select2-selection,
331
- .select2-container--default.select2-container--open.select2-container--above .select2-selection--single {
332
- border-top-left-radius: 0;
333
- border-top-right-radius: 0
334
- }
335
-
336
- .select2-container--default.select2-container--open.select2-container--below .select2-selection,
337
- .select2-container--default.select2-container--open.select2-container--below .select2-selection--single {
338
- border-bottom-left-radius: 0;
339
- border-bottom-right-radius: 0
340
- }
341
-
342
- .select2-container--default .select2-search--dropdown .select2-search__field {
343
- border: 1px solid #ccc
344
- }
345
-
346
- .select2-container--default .select2-search--inline .select2-search__field {
347
- background: 0 0;
348
- border: none;
349
- outline: 0;
350
- box-shadow: none;
351
- -webkit-appearance: textfield
352
- }
353
-
354
- .select2-container--default .select2-results>.select2-results__options {
355
- max-height: 200px;
356
- overflow-y: auto
357
- }
358
-
359
- .select2-container--default .select2-results__option[role=group] {
360
- padding: 0
361
- }
362
-
363
- .select2-container--default .select2-results__option[aria-disabled=true] {
364
- color: #999
365
- }
366
-
367
- .select2-container--default .select2-results__option[aria-selected=true],
368
- .select2-container--default .select2-results__option[data-selected=true] {
369
- background-color: #ddd
370
- }
371
-
372
- .select2-container--default .select2-results__option .select2-results__option {
373
- padding-left: 1em
374
- }
375
-
376
- .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
377
- padding-left: 0
378
- }
379
-
380
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
381
- margin-left: -1em;
382
- padding-left: 2em
383
- }
384
-
385
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
386
- margin-left: -2em;
387
- padding-left: 3em
388
- }
389
-
390
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
391
- margin-left: -3em;
392
- padding-left: 4em
393
- }
394
-
395
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
396
- margin-left: -4em;
397
- padding-left: 5em
398
- }
399
-
400
- .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
401
- margin-left: -5em;
402
- padding-left: 6em
403
- }
404
-
405
- .select2-container--default .select2-results__option--highlighted[aria-selected],
406
- .select2-container--default .select2-results__option--highlighted[data-selected] {
407
- background-color: #0073aa;
408
- color: #fff
409
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/qlwapp-select2.min.css DELETED
@@ -1,2 +0,0 @@
1
-
2
- .select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;margin:0 0 -4px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left;padding:0}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:0;font-size:100%;margin:0;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{margin:0;padding:8px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected],.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:0;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #ccc;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:32px;position:absolute;top:0;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection{background-color:#fff;border:1px solid #ccc;border-radius:2px;cursor:text}.select2-container--default .select2-selection .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection .select2-selection__rendered li{list-style:none;margin:5px 5px 0 0}.select2-container--default .select2-selection .select2-selection__rendered li:before{content:'';display:none}.select2-container--default .select2-selection .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection .select2-selection__choice{background-color:#e4e4e4;border:1px solid #ccc;border-radius:2px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection{outline:0}.select2-container--default.select2-container--disabled .select2-selection{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #ccc}.select2-container--default .select2-search--inline .select2-search__field{background:0;border:0;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected],.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#0073aa;color:#fff}
 
 
assets/css/qlwapp.min.css DELETED
@@ -1,2 +0,0 @@
1
-
2
- @font-face{font-family:'qlwapp-whatsapp';src:url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff');font-weight:normal;font-style:normal}.qlwapp-whatsapp-icon{font-family:'qlwapp-whatsapp'!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.qlwapp-whatsapp-icon:before{content:"\e900"}#qlwapp{pointer-events:none;box-sizing:border-box}@media(min-width:430px){#qlwapp{width:430px}}#qlwapp *{box-sizing:border-box}#qlwapp.qlwapp-js-ready{display:block}#qlwapp.qlwapp-hide,#qlwapp.qlwapp-desktop.mobile,#qlwapp.qlwapp-mobile.desktop{display:none}#qlwapp .qlwapp-readonly,#qlwapp.qlwapp-readonly{pointer-events:none!important;opacity:.5!important}#qlwapp .qlwapp-disabled,#qlwapp.qlwapp-disabled{display:none;visibility:hidden}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-bottom-left,#qlwapp.qlwapp-middle-right,#qlwapp.qlwapp-bottom-right{position:fixed;z-index:9999999}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-bottom-left{right:auto;left:0}#qlwapp.qlwapp-middle-left .qlwapp-toggle .qlwapp-time,#qlwapp.qlwapp-bottom-left .qlwapp-toggle .qlwapp-time{left:0;right:auto}#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-bottom-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-toggle,#qlwapp.qlwapp-bottom-left.qlwapp-button .qlwapp-toggle{margin-left:20px}#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-toggle .qlwapp-text,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-toggle .qlwapp-text{right:auto;left:60px}#qlwapp.qlwapp-middle-left .qlwapp-box:before,#qlwapp.qlwapp-bottom-left .qlwapp-box:before{right:auto;left:20px}#qlwapp.qlwapp-middle-right,#qlwapp.qlwapp-bottom-right{left:auto;right:0}#qlwapp.qlwapp-middle-right .qlwapp-toggle .qlwapp-time,#qlwapp.qlwapp-bottom-right .qlwapp-toggle .qlwapp-time{left:auto;right:0}#qlwapp.qlwapp-middle-right.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-bottom-right.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-bottom-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-bottom-right.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-toggle,#qlwapp.qlwapp-bottom-right.qlwapp-button .qlwapp-toggle{margin-right:20px}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-middle-right{top:40%;bottom:auto}#qlwapp.qlwapp-middle-left .qlwapp-developer,#qlwapp.qlwapp-middle-right .qlwapp-developer{padding:0 24px}#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-toggle{margin-left:-48px;padding-left:60px}#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-toggle{margin-right:-48px;padding-right:60px}#qlwapp.qlwapp-bottom-left,#qlwapp.qlwapp-bottom-right{top:auto;bottom:0}#qlwapp.qlwapp-rounded.qlwapp-bubble .qlwapp-toggle{border-radius:50%}#qlwapp.qlwapp-rounded.qlwapp-button .qlwapp-toggle{border-radius:50px}@media(min-width:430px){#qlwapp.qlwapp-rounded .qlwapp-box{border-radius:8px}}#qlwapp.qlwapp-rounded .qlwapp-box .qlwapp-user,#qlwapp.qlwapp-rounded .qlwapp-box .qlwapp-message{border-radius:4px}#qlwapp p:last-child{margin:0}#qlwapp time{opacity:.8;font-style:italic;font-size:10px}#qlwapp .qlwapp-container{display:flex;flex-direction:column}#qlwapp .qlwapp-clearfix:before,#qlwapp .qlwapp-clearfix:after{content:'';display:block;clear:both}#qlwapp .qlwapp-previous,#qlwapp .qlwapp-close{display:block;opacity:.8;font-style:unset;font-size:24px;font-weight:bold;width:24px;height:24px;cursor:pointer;text-align:center;line-height:24px;z-index:1}#qlwapp .qlwapp-previous{width:16px;height:36px;cursor:pointer;text-align:center;line-height:36px;margin-right:auto}#qlwapp .qlwapp-developer{font-size:8px;top:-20px;position:relative}#qlwapp .qlwapp-developer,#qlwapp .qlwapp-toggle{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;margin-right:auto}#qlwapp .qlwapp-toggle{pointer-events:all;cursor:pointer;box-shadow:0 1px 6px 0 rgba(0,0,0,0.06),0 2px 32px 0 rgba(0,0,0,0.16);margin-top:24px;margin-bottom:24px;position:relative;text-decoration:none}#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-toggle:active,#qlwapp .qlwapp-toggle:focus,#qlwapp .qlwapp-toggle:hover{outline:0;text-decoration:none}#qlwapp .qlwapp-toggle .qlwapp-time{position:absolute;bottom:-2em;color:initial;font-size:10px;display:inline-block;top:auto;width:120px}#qlwapp .qlwapp-avatar .qlwapp-avatar-container{overflow:hidden;border-radius:50%;width:inherit;height:inherit}#qlwapp .qlwapp-avatar .qlwapp-avatar-container img{width:100%;height:auto}#qlwapp.qlwapp-bubble .qlwapp-toggle{width:60px;height:60px}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon,#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{position:absolute;display:block;pointer-events:none;font-size:24px}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-text{position:absolute;right:60px;height:60px;margin:0 24px;display:flex;align-items:center;justify-content:flex-end;font-weight:bold;white-space:pre}#qlwapp.qlwapp-button .qlwapp-toggle{height:40px;white-space:nowrap;padding:12px 24px}#qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-icon{margin:0 12px 0 0}#qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-close{display:none}#qlwapp .qlwapp-box{pointer-events:all;padding-bottom:56px;position:fixed;top:auto;bottom:0;left:0;right:0;z-index:99999;box-shadow:0 5px 40px 5px rgba(0,0,0,0.5)}@media(min-width:430px){#qlwapp .qlwapp-box{position:relative;top:auto;bottom:auto;left:auto;right:auto;box-shadow:0 8px 25px -5px rgba(45,62,79,0.15);margin-top:24px;margin-left:24px;margin-right:24px;margin-bottom:12px}#qlwapp .qlwapp-box:before{content:'';position:absolute;bottom:-6px;right:24px;width:13px;height:13px;transform:rotate(45deg)}#qlwapp .qlwapp-box .qlwapp-header{border-top-left-radius:inherit;border-top-right-radius:inherit}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}}#qlwapp .qlwapp-box .qlwapp-header{position:relative;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-header:before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background:linear-gradient(135deg,transparent 0,rgba(0,0,0,0.3) 100%)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-close{position:absolute;top:12px;right:12px}@media(min-width:430px){#qlwapp .qlwapp-box .qlwapp-header .qlwapp-close{position:absolute;top:7px;right:7px;font-size:16px}}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-description{position:relative}#qlwapp .qlwapp-box .qlwapp-description,#qlwapp .qlwapp-box .qlwapp-contact{padding:24px 36px;height:100%}#qlwapp .qlwapp-box .qlwapp-description p,#qlwapp .qlwapp-box .qlwapp-description h3{color:inherit;font-family:inherit;margin:0}#qlwapp .qlwapp-box .qlwapp-description h3{margin:0 0 .25em 0}#qlwapp .qlwapp-box .qlwapp-contact{display:flex;justify-content:flex-end;align-items:center;text-align:right}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous{position:relative;left:-16px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous>i{line-height:36px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-avatar{width:42px;height:42px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-name{color:inherit}#qlwapp .qlwapp-box .qlwapp-account{color:inherit;padding:16px 36px;display:flex;align-items:center;overflow:hidden;position:relative;cursor:pointer;width:100%;text-decoration:none}#qlwapp .qlwapp-box .qlwapp-account:only-of-type{padding-top:36px;padding-bottom:36px}#qlwapp .qlwapp-box .qlwapp-info{padding:0 16px}#qlwapp .qlwapp-box .qlwapp-avatar{position:relative;width:62px;height:62px}#qlwapp .qlwapp-box .qlwapp-avatar:after{content:'';display:block;width:15px;height:15px;position:absolute;bottom:2px;right:2px;background-image:url(data:image/png;base64,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);background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:4}#qlwapp .qlwapp-box .qlwapp-time,#qlwapp .qlwapp-box .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-offline-text{font-size:12px;line-height:1.5em;opacity:.6;display:block}#qlwapp .qlwapp-box .qlwapp-time{font-size:11px;font-style:italic}#qlwapp .qlwapp-box .qlwapp-name{display:block;font-weight:bold;line-height:1.5em}#qlwapp .qlwapp-box .qlwapp-body{overflow-x:hidden;overflow-y:auto}#qlwapp .qlwapp-box .qlwapp-body .qlwapp-carousel{max-height:470px;min-height:134px}#qlwapp .qlwapp-box .qlwapp-chat{display:flex;flex-direction:column;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-user,#qlwapp .qlwapp-box .qlwapp-message{padding:16px 24px;margin:36px;position:relative;word-wrap:break-word;width:calc(100% - 36px*2)}#qlwapp .qlwapp-box .qlwapp-user:before,#qlwapp .qlwapp-box .qlwapp-message:before{content:'';position:absolute;top:-6px;right:24px;width:13px;height:13px;transform:rotate(45deg)}#qlwapp .qlwapp-box .qlwapp-user{width:auto;max-width:75%;align-self:flex-start;justify-self:flex-end;margin-top:0}#qlwapp .qlwapp-box .qlwapp-user:before{top:auto;bottom:-6px;left:24px}#qlwapp .qlwapp-box .qlwapp-padding{padding-bottom:56px}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{position:absolute;bottom:0;left:0;right:0;height:auto;width:100%}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-footer pre,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-footer textarea,#qlwapp .qlwapp-box .qlwapp-response textarea{max-height:160px}#qlwapp .qlwapp-box .qlwapp-footer pre,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-footer textarea,#qlwapp .qlwapp-box .qlwapp-response textarea{color:inherit;background-color:inherit}#qlwapp .qlwapp-box .qlwapp-footer:before,#qlwapp .qlwapp-box .qlwapp-response:before{pointer-events:none;position:absolute;content:'';height:59px;top:-59px;background-image:linear-gradient(transparent,rgba(0,0,0,0.05));left:0;right:0}#qlwapp .qlwapp-box .qlwapp-footer{min-height:56px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;padding:12px 36px}#qlwapp .qlwapp-box .qlwapp-footer p{padding:0;font-size:inherit}#qlwapp .qlwapp-box .qlwapp-footer p:last-child{margin-bottom:0}#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-response textarea,#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons{min-height:56px}#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-response textarea{width:100%;height:100%;resize:none;border:0;padding:18px 56px 18px 36px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:20px;white-space:pre-wrap;word-wrap:break-word;border-radius:inherit;margin:0}#qlwapp .qlwapp-box .qlwapp-response pre{visibility:hidden}#qlwapp .qlwapp-box .qlwapp-response textarea{position:absolute;bottom:0;left:0}#qlwapp .qlwapp-box .qlwapp-response textarea:focus{outline:0}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons{position:absolute;top:0;right:21px;display:flex;align-items:center}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons.active>i{display:none}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons.active>i.qlwf-emoji{display:block}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>i{opacity:.4}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>i,#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>a{cursor:pointer;margin:0 0 0 10px;display:inherit;font-size:18px;line-height:24px}#qlwapp .qlwapp-previous,#qlwapp .qlwapp-close,#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-box .qlwapp-header,#qlwapp .qlwapp-box .qlwapp-contact,#qlwapp .qlwapp-box .qlwapp-user{color:#fff}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-text{color:#303030}#qlwapp .qlwapp-box,#qlwapp .qlwapp-box:before{background-color:#fff}#qlwapp .qlwapp-box .qlwapp-account{background-color:#fff}#qlwapp .qlwapp-box .qlwapp-account:not(:first-child){border-top:1px solid #f5f5f5}#qlwapp .qlwapp-box .qlwapp-avatar .qlwapp-avatar-container{background-color:#eee}#qlwapp .qlwapp-box .qlwapp-message,#qlwapp .qlwapp-box .qlwapp-message:before{background-color:#eee}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{color:#303030;background-color:#fff;border-top:1px solid #e6e6e6}#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-box .qlwapp-header,#qlwapp .qlwapp-box .qlwapp-user,#qlwapp .qlwapp-box .qlwapp-user:before{background-color:#303030}#qlwapp{display:none}#qlwapp.qlwapp-show .qlwapp-box{visibility:visible;opacity:1;transform:translateY(0) scale(1);display:block}#qlwapp.qlwapp-transition .qlwapp-box{visibility:visible;display:block}#qlwapp.qlwapp-bubble.qlwapp-show .qlwapp-toggle .qlwapp-icon{transform:scale(0,0);opacity:0}#qlwapp.qlwapp-bubble.qlwapp-show .qlwapp-toggle .qlwapp-close{transform:scale(1,1);opacity:1}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{transform:scale(0,0);opacity:0}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon{transform:scale(1,1);opacity:1}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon,#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{transition:transform 300ms cubic-bezier(0.215,0.61,0.355,1),opacity 300ms ease-in}#qlwapp .qlwapp-box{display:none;opacity:0;visibility:hidden;transform:translateY(50px);transition:transform 300ms cubic-bezier(0.215,0.61,0.355,1),opacity 300ms ease-in}@media(min-width:430px){#qlwapp .qlwapp-box{transform:translateY(50px) scale(0.9)}}#qlwapp .qlwapp-box .qlwapp-carousel{display:flex;width:200%;height:100%}#qlwapp .qlwapp-box .qlwapp-carousel .qlwapp-slide{width:50%;transition:max-height 500ms cubic-bezier(0.215,0.61,0.355,1) 1000ms,transform 300ms cubic-bezier(0.215,0.61,0.355,1) 500ms,opacity 500ms ease-in 500ms;height:100%;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-slide{max-height:300px}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{opacity:0;transition:transform cubic-bezier(0.215,0.61,0.355,1) .3s,opacity ease-in .3s}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label{transform:translateX(56px)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{transform:scale(0.5)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name{transition-delay:800ms}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label{transition-delay:850ms}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-previous,#qlwapp .qlwapp-box .qlwapp-message,#qlwapp .qlwapp-box .qlwapp-user{transition:transform cubic-bezier(0.215,0.61,0.355,1) 600ms,opacity ease-in 200ms}#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-previous,#qlwapp .qlwapp-box .qlwapp-user{opacity:0}#qlwapp .qlwapp-box .qlwapp-response{pointer-events:none}#qlwapp .qlwapp-box .qlwapp-previous{transform:translateX(56px)}#qlwapp .qlwapp-box .qlwapp-user{transform:translateY(56px)}#qlwapp .qlwapp-box .qlwapp-close{transition:opacity 300ms cubic-bezier(0.215,0.61,0.355,1)}#qlwapp .qlwapp-box .qlwapp-description{transition:transform 600ms cubic-bezier(0.215,0.61,0.355,1),opacity 900ms cubic-bezier(0.215,0.61,0.355,1)}#qlwapp .qlwapp-box .qlwapp-account{transition:transform 600ms cubic-bezier(0.215,0.61,0.355,1),opacity 150ms ease-in}#qlwapp .qlwapp-box .qlwapp-previous{transition-delay:800ms}#qlwapp .qlwapp-box .qlwapp-message{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-close,#qlwapp .qlwapp-box .qlwapp-description{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-user{transition-delay:200ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(6){transition-delay:600ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(5){transition-delay:500ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(4){transition-delay:400ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(3){transition-delay:300ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(2){transition-delay:200ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(1){transition-delay:100ms}#qlwapp .qlwapp-box .qlwapp-slide .qlwapp-message{opacity:0;transform:translateY(-56px)}#qlwapp .qlwapp-box .qlwapp-slide .qlwapp-box .qlwapp-account:hover{background-color:#fafafa}#qlwapp .qlwapp-box.response .qlwapp-carousel .qlwapp-slide{transform:translateX(-100%)}#qlwapp .qlwapp-box.response .qlwapp-body .qlwapp-carousel{overflow:hidden;max-height:134px!important;min-height:122px}#qlwapp .qlwapp-box.response .qlwapp-close{transition-delay:0ms}#qlwapp .qlwapp-box.response .qlwapp-close,#qlwapp .qlwapp-box.response .qlwapp-footer,#qlwapp .qlwapp-box.response .qlwapp-description,#qlwapp .qlwapp-box.response .qlwapp-account{opacity:0}#qlwapp .qlwapp-box.response .qlwapp-account{transform:translateY(-33.333%);border-top-color:transparent!important}#qlwapp .qlwapp-box.response .qlwapp-user{display:block}#qlwapp .qlwapp-box.response .qlwapp-message,#qlwapp .qlwapp-box.response .qlwapp-previous,#qlwapp .qlwapp-box.response .qlwapp-response{opacity:1}#qlwapp .qlwapp-box.response .qlwapp-response{pointer-events:all}#qlwapp .qlwapp-box.response .qlwapp-message,#qlwapp .qlwapp-box.response .qlwapp-previous{transform:translate(0)}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-slide{max-height:84px}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-avatar{opacity:1}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-label{opacity:.5}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-label{transform:translateX(0)}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-avatar{transform:scale(1)}#qlwapp .qlwapp-box.response.opening .qlwapp-footer,#qlwapp .qlwapp-box.response.opening .qlwapp-response,#qlwapp .qlwapp-box.response.opening .qlwapp-close,#qlwapp .qlwapp-box.response.opening .qlwapp-previous,#qlwapp .qlwapp-box.response.opening .qlwapp-description,#qlwapp .qlwapp-box.response.opening .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response.opening .qlwapp-header .qlwapp-label{visibility:visible}#qlwapp .qlwapp-box.texting .qlwapp-body{overflow-y:auto}#qlwapp .qlwapp-box.texting .qlwapp-user{opacity:1;transform:translate(0)}#qlwapp .qlwapp-box.closing .qlwapp-previous{transition-delay:0ms;transform:translateX(-24px);opacity:0;transition:transform cubic-bezier(0.215,0.61,0.355,1) 300ms,opacity ease-out 200ms}#qlwapp .qlwapp-box.closing .qlwapp-description{opacity:0}
 
 
assets/{css → frontend/css}/qlwapp.css RENAMED
@@ -413,7 +413,6 @@
413
  display: flex;
414
  justify-content: flex-end;
415
  align-items: center;
416
- text-align: right;
417
  }
418
  #qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous {
419
  position: relative;
@@ -594,7 +593,7 @@
594
  height: 100%;
595
  resize: none;
596
  border: none;
597
- padding: 18px 56px 18px 36px;
598
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
599
  font-size: 14px;
600
  font-weight: normal;
@@ -638,6 +637,7 @@
638
  display: inherit;
639
  font-size: 18px;
640
  line-height: 24px;
 
641
  }
642
  #qlwapp .qlwapp-previous,
643
  #qlwapp .qlwapp-close,
@@ -906,4 +906,25 @@
906
  #qlwapp .qlwapp-box.closing .qlwapp-description {
907
  opacity: 0;
908
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
909
  /*# sourceMappingURL=qlwapp.css.map */
413
  display: flex;
414
  justify-content: flex-end;
415
  align-items: center;
 
416
  }
417
  #qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous {
418
  position: relative;
593
  height: 100%;
594
  resize: none;
595
  border: none;
596
+ padding: 18px 88px 18px 36px;
597
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
598
  font-size: 14px;
599
  font-weight: normal;
637
  display: inherit;
638
  font-size: 18px;
639
  line-height: 24px;
640
+ text-decoration: none;
641
  }
642
  #qlwapp .qlwapp-previous,
643
  #qlwapp .qlwapp-close,
906
  #qlwapp .qlwapp-box.closing .qlwapp-description {
907
  opacity: 0;
908
  }
909
+ body.rtl #qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-icon {
910
+ margin: 0 0 0 12px;
911
+ }
912
+ body.rtl #qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons {
913
+ right: auto;
914
+ left: 21px;
915
+ flex-direction: row-reverse;
916
+ }
917
+ body.rtl #qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons > a {
918
+ transform: rotate(180deg);
919
+ }
920
+ body.rtl #qlwapp .qlwapp-box .qlwapp-response pre,
921
+ body.rtl #qlwapp .qlwapp-box .qlwapp-response textarea {
922
+ padding: 18px 36px 18px 88px;
923
+ }
924
+ body.rtl #qlwapp .qlwapp-box.response .qlwapp-carousel .qlwapp-slide {
925
+ transform: translateX(100%);
926
+ }
927
+ body.rtl #qlwapp .qlwapp-box .qlwapp-contact {
928
+ flex-direction: row-reverse;
929
+ }
930
  /*# sourceMappingURL=qlwapp.css.map */
assets/frontend/css/qlwapp.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["../../less/qlwapp.less","../../less/colors.less","../../less/animations.less","../../less/rtl.less"],"names":[],"mappings":"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","file":"qlwapp.css"}
assets/frontend/css/qlwapp.min.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+
2
+ @font-face{font-family:'qlwapp-whatsapp';src:url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff');font-weight:normal;font-style:normal}.qlwapp-whatsapp-icon{font-family:'qlwapp-whatsapp'!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.qlwapp-whatsapp-icon:before{content:"\e900"}#qlwapp{pointer-events:none;box-sizing:border-box}@media(min-width:430px){#qlwapp{width:430px}}#qlwapp *{box-sizing:border-box}#qlwapp.qlwapp-js-ready{display:block}#qlwapp.qlwapp-hide,#qlwapp.qlwapp-desktop.mobile,#qlwapp.qlwapp-mobile.desktop{display:none}#qlwapp .qlwapp-readonly,#qlwapp.qlwapp-readonly{pointer-events:none!important;opacity:.5!important}#qlwapp .qlwapp-disabled,#qlwapp.qlwapp-disabled{display:none;visibility:hidden}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-bottom-left,#qlwapp.qlwapp-middle-right,#qlwapp.qlwapp-bottom-right{position:fixed;z-index:9999999}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-bottom-left{right:auto;left:0}#qlwapp.qlwapp-middle-left .qlwapp-toggle .qlwapp-time,#qlwapp.qlwapp-bottom-left .qlwapp-toggle .qlwapp-time{left:0;right:auto}#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-bottom-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-toggle,#qlwapp.qlwapp-bottom-left.qlwapp-button .qlwapp-toggle{margin-left:20px}#qlwapp.qlwapp-middle-left.qlwapp-bubble .qlwapp-toggle .qlwapp-text,#qlwapp.qlwapp-bottom-left.qlwapp-bubble .qlwapp-toggle .qlwapp-text{right:auto;left:60px}#qlwapp.qlwapp-middle-left .qlwapp-box:before,#qlwapp.qlwapp-bottom-left .qlwapp-box:before{right:auto;left:20px}#qlwapp.qlwapp-middle-right,#qlwapp.qlwapp-bottom-right{left:auto;right:0}#qlwapp.qlwapp-middle-right .qlwapp-toggle .qlwapp-time,#qlwapp.qlwapp-bottom-right .qlwapp-toggle .qlwapp-time{left:auto;right:0}#qlwapp.qlwapp-middle-right.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-bottom-right.qlwapp-bubble .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-bottom-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-bottom-right.qlwapp-bubble .qlwapp-toggle,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-toggle,#qlwapp.qlwapp-bottom-right.qlwapp-button .qlwapp-toggle{margin-right:20px}#qlwapp.qlwapp-middle-left,#qlwapp.qlwapp-middle-right{top:40%;bottom:auto}#qlwapp.qlwapp-middle-left .qlwapp-developer,#qlwapp.qlwapp-middle-right .qlwapp-developer{padding:0 24px}#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-left.qlwapp-button .qlwapp-toggle{margin-left:-48px;padding-left:60px}#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-developer,#qlwapp.qlwapp-middle-right.qlwapp-button .qlwapp-toggle{margin-right:-48px;padding-right:60px}#qlwapp.qlwapp-bottom-left,#qlwapp.qlwapp-bottom-right{top:auto;bottom:0}#qlwapp.qlwapp-rounded.qlwapp-bubble .qlwapp-toggle{border-radius:50%}#qlwapp.qlwapp-rounded.qlwapp-button .qlwapp-toggle{border-radius:50px}@media(min-width:430px){#qlwapp.qlwapp-rounded .qlwapp-box{border-radius:8px}}#qlwapp.qlwapp-rounded .qlwapp-box .qlwapp-user,#qlwapp.qlwapp-rounded .qlwapp-box .qlwapp-message{border-radius:4px}#qlwapp p:last-child{margin:0}#qlwapp time{opacity:.8;font-style:italic;font-size:10px}#qlwapp .qlwapp-container{display:flex;flex-direction:column}#qlwapp .qlwapp-clearfix:before,#qlwapp .qlwapp-clearfix:after{content:'';display:block;clear:both}#qlwapp .qlwapp-previous,#qlwapp .qlwapp-close{display:block;opacity:.8;font-style:unset;font-size:24px;font-weight:bold;width:24px;height:24px;cursor:pointer;text-align:center;line-height:24px;z-index:1}#qlwapp .qlwapp-previous{width:16px;height:36px;cursor:pointer;text-align:center;line-height:36px;margin-right:auto}#qlwapp .qlwapp-developer{font-size:8px;top:-20px;position:relative}#qlwapp .qlwapp-developer,#qlwapp .qlwapp-toggle{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;margin-right:auto}#qlwapp .qlwapp-toggle{pointer-events:all;cursor:pointer;box-shadow:0 1px 6px 0 rgba(0,0,0,0.06),0 2px 32px 0 rgba(0,0,0,0.16);margin-top:24px;margin-bottom:24px;position:relative;text-decoration:none}#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-toggle:active,#qlwapp .qlwapp-toggle:focus,#qlwapp .qlwapp-toggle:hover{outline:0;text-decoration:none}#qlwapp .qlwapp-toggle .qlwapp-time{position:absolute;bottom:-2em;color:initial;font-size:10px;display:inline-block;top:auto;width:120px}#qlwapp .qlwapp-avatar .qlwapp-avatar-container{overflow:hidden;border-radius:50%;width:inherit;height:inherit}#qlwapp .qlwapp-avatar .qlwapp-avatar-container img{width:100%;height:auto}#qlwapp.qlwapp-bubble .qlwapp-toggle{width:60px;height:60px}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon,#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{position:absolute;display:block;pointer-events:none;font-size:24px}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-text{position:absolute;right:60px;height:60px;margin:0 24px;display:flex;align-items:center;justify-content:flex-end;font-weight:bold;white-space:pre}#qlwapp.qlwapp-button .qlwapp-toggle{height:40px;white-space:nowrap;padding:12px 24px}#qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-icon{margin:0 12px 0 0}#qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-close{display:none}#qlwapp .qlwapp-box{pointer-events:all;padding-bottom:56px;position:fixed;top:auto;bottom:0;left:0;right:0;z-index:99999;box-shadow:0 5px 40px 5px rgba(0,0,0,0.5)}@media(min-width:430px){#qlwapp .qlwapp-box{position:relative;top:auto;bottom:auto;left:auto;right:auto;box-shadow:0 8px 25px -5px rgba(45,62,79,0.15);margin-top:24px;margin-left:24px;margin-right:24px;margin-bottom:12px}#qlwapp .qlwapp-box:before{content:'';position:absolute;bottom:-6px;right:24px;width:13px;height:13px;transform:rotate(45deg)}#qlwapp .qlwapp-box .qlwapp-header{border-top-left-radius:inherit;border-top-right-radius:inherit}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}}#qlwapp .qlwapp-box .qlwapp-header{position:relative;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-header:before{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background:linear-gradient(135deg,transparent 0,rgba(0,0,0,0.3) 100%)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-close{position:absolute;top:12px;right:12px}@media(min-width:430px){#qlwapp .qlwapp-box .qlwapp-header .qlwapp-close{position:absolute;top:7px;right:7px;font-size:16px}}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-description{position:relative}#qlwapp .qlwapp-box .qlwapp-description,#qlwapp .qlwapp-box .qlwapp-contact{padding:24px 36px;height:100%}#qlwapp .qlwapp-box .qlwapp-description p,#qlwapp .qlwapp-box .qlwapp-description h3{color:inherit;font-family:inherit;margin:0}#qlwapp .qlwapp-box .qlwapp-description h3{margin:0 0 .25em 0}#qlwapp .qlwapp-box .qlwapp-contact{display:flex;justify-content:flex-end;align-items:center}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous{position:relative;left:-16px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-previous>i{line-height:36px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-avatar{width:42px;height:42px}#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-contact .qlwapp-name{color:inherit}#qlwapp .qlwapp-box .qlwapp-account{color:inherit;padding:16px 36px;display:flex;align-items:center;overflow:hidden;position:relative;cursor:pointer;width:100%;text-decoration:none}#qlwapp .qlwapp-box .qlwapp-account:only-of-type{padding-top:36px;padding-bottom:36px}#qlwapp .qlwapp-box .qlwapp-info{padding:0 16px}#qlwapp .qlwapp-box .qlwapp-avatar{position:relative;width:62px;height:62px}#qlwapp .qlwapp-box .qlwapp-avatar:after{content:'';display:block;width:15px;height:15px;position:absolute;bottom:2px;right:2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAXgklEQVR4Ad2aCXhV9Zn/scv/P/N02mfmmc50anWqdUHUouwLYSFhCQlhIYEkLEnYF1SkoriXKkWxLo+2OlintopOq9UiewJJSEJCErKHsBAWCIshYSFAWO5y7zvf833uub78nnNvEhaxc9oP7295f+/vPd/znuXmsZ2I3Eh+AO4FkWAe+D3IAlWgDtSD4+AI2AMKwQrwEkgC3cGtV7y/X2j9bAdsG7kRoj0ApoOPwWHglqs7zoGt4AUwCvzw/6KAt4JnQC7wyvU9joAPQRz47t+7gBHgU3BKbsyxAzwGbvl7E7ArWCffnOMkWAD++Zsu4O3gXeCTb+axB6R8EwW8CTwK6uUqDq/fJxd9F6XJc0aOXqqXAxfqZN+FA3Lo4hFpcB2XZm+zuP1uuQZHOuj0TRHwDrBeruA47joh287tkM+OrZKlB96UZ2oXyy92PSNzdyyQ6TXzZPK2hyRt2xyZuu1hmbF9vjy8c6Es3L1IFu1dKv916H3JOVkAkQ/JBe9FuYLjLHjkRgs4EjQA8avM/MqaxzFXg2SeyJGl+9+kSBOrZ0pS1VQZXzWd7UnVsySlerakQrg0Mtdqg9kYn0WfCVUzrDVgGn3mQ/TlRz+R8jNV4vK1uUI/Av9yIwScBnxKNmK3TPV2Ne+RPxz+iKKNq5wsyTh5CGWLdBXMoaiJlVMkqXKqPF37omw4kS1nPefMS6p7Zj8f/9z5dQq4lBubledQc7XNe+X1g++wssbhJCdVzZLU6jkB5gbbaQYcUz5psIRt1d/GMViuYSWPrUiTeTufki8a1soF3wXhYSjmB/gH2ANyEP92u94C3gSW+UUlYBvjaHA1yjuH/sAqG4uKg7XFUszWVo8bY87tFFpHIOQMCvnozqcl92SBUX5+ctn//IA/G6XP9RTwbaoVwA+YiKHippObZWbNfEnACUysmikpVbMpYAgLwoxXKapb2VYkV06DkJPllf1vybFLDepp46cJikc43gi6ot+uFbRJwBe5SaiNRfgJ8tuD71nCIfHpuF1nK2YpZpuWmH3tn6L8w8d0JqE8VWbV/EK2NpWrYgzmT6s4Au66lgIm6w1MrKMR32mL9iyVMWUpMrFyZjDxiQr2Kwnb2sfsc8zyNcbVfPg5rDV9Eivwtq+cISsb7K8uJZzQakpgfgjahaM14g2A44Vw4u09v1/m1Dwu8bjKEI9MoNVgzGjThm2HjxFunOvNOBA1uWK6dZH5ReDz+4IiivP5rQA3XU0F/iucDoYTb9e5WplS/bAklKUFkp3BqwxrMBPjnP/Kr4JW+ygwb/Rpnf3NuXB+zG9U6UR5p+59LWIonrwaAf8cTrz95+soXnx5GsSY0QLTJTnQtu3Vrmk5jukPKu32dBkJEd879KHw8IcU0QV6XomAY8OJd9rdJA/VLJTRpSl2Qn93JFVMkxGlE+Tz+lUtVWGRz+f7DmhnEqo0fwB2OYrnF/6g//We17l5cjkSKZ8mpAKwD9g25zim0P7GOgOHtQpjjLGIsbexF8bGlU3B42eyFJwqbknE2X4IZhBSwGfDVd8fDn0ssVuTJREJtMSYslSJ2zpe4ooJiS9NY/KJ14WppDV+OseUyjly9GJ9OBEbwA9NrZzE+xE4HUq8sqYq3rZjy6YwiXEWZZrgGMWaV/GUfH54tWyoz5aM+ixZcWStPFz5pIwumQSfaSHXJhL2ac15WO0La7a1jzOJNvCJKxkvz+9+WTx+TzgRf+ODRhonAX8TSrxmz3mZu+0JGVkykaU/1gTJ2O3hRcny2q635bzngphHw4VGSSmZI2NKU+lrMs45bqsZ12ofWNWO3Zok6xo2BgX0EVsDtl3gznAC3gwC33w+U0D57MtVMqw4UcaW4rkBxpZODrQB2gSJxBQlyYvbXxUJrHO6GO/v+5h+WEvwHGI8xmWf7QBsG33urfY3maxQa/jMU37qPEbhrphS+YiccZ/96q3sA5cL+Wo4ARdiQUB5n/i42CfWccp1WlIq5nKTeGwIgknp/oitE2Va6Tw5danJUTxbwMPNR2VMYSqqMI3rHClR8Q0SuM5uE91X88CcM9vKDitKlA8Pf6Jy90lAE1vML9H+vpOA34bDbryahahF1vHBoU9kaNE4iS9JkzEgaEsvb0cXjJPs+rywbzT76i7Z8QarkDHsmGb8UJS2zneM9jVRuduMRAFMKp8jDZeOC46ADtQEWthF5Z/m9BKJ8mEWgtHZRvysPkmreEhGFE/AJqlBRm9VbRDLl8bT4va6TQFNOF94vISCc31o7Hljb2D2wRgQZr05xzWm7+DCBPn06ErmqAvKbiP/dCcBl9HBwDrWN2Qx6ChsRphsCmwKrN3GxlsS+GzT4oUT0OV1ydzyhRJblMz1Ohas2kNh7w/sOW11bnrchHspH733cBTClMp50uQ+wwIyBQTWe6K9FvA7oMoQj7ev1++VhdtfkOiixODmI4NM0m2Jzh8nhY0l4QU0RFy+/1OJyh9tnOCkr/YpDozBcj9iCsJ5Iz9jPdfpPuPZeyk4zoLJPb4lWIUmyH+yFrCHD4dT9dWc2YkHaxJu34kASQC0A5awPdy6vQvT5Mvz9W0SsPHCCUkumsHbH3EUdmxjLzVnjjn7me2W18NSwFf2/DacgH/SAs4KcfvyWRBVMIaixRUBWA3GSQxuw+TiGXLGdbZlAQ0Rf7v7v1GF8cI9uI/C2Ic+GuVn2xFFpo+9Dtbw174j6EfLx0pi6XR8TZy2b2OTo8j/+7aA7zncvnz7PF6zyHq2YbMJZHjAmgwrTJLEounSdOlMmwVce2SjRG4ebceGnch2sK+IM+ZUXoafczu8n+6Pl+jCRKlu2h6qCn3I/16I5/t/aO8yJql648XjEr91MsUZXjiBIDDseIm1LIAFEySmMFli88fL/rMH2yzg0h1vSWQ+BQzGB4wbWwjQJvZ+dh6Yty19uS5gbfS4BdfYbe7BGPYa2GCsgcjpo0OfmQIq/DHtUGk/QafZ6fbddXaPRG9JgoDJEkO4AduEbfY5PiB3pKw/mtmmZ2BRY5kM25zIi6Tjxqr47Ks50w97G7loP2LnreI5Wu2DizpGntq++PJb2Kut/zkI6Otov0C8hoCZDbkyIH+UDNvCk4Ml7NNqMN8vb6S8tvOdVn/G1J07LPEFk/GMjed6jblPjLEXrTlXaFi2DR9zXBWIEZN5zah4TPhdqz5jlJCfWxXYlx2FLeC7Bz6QvnkjhFUIYMMyqCBBJhXNkXPu5nAicu7kpVMypfhR6b95lI6t2q2nTesLwsfQDMpPkKSSmXLWfU4Ekni9XhSZhY8WOhW2w4siwcfBAErA53csZVUNLUhskWjLbkmUPpuGy4Yvc0IKKH7h8cK2V6VXTgwTbTm+sU/r0bmBtq0bnD+Wz078bmfeFA4iUi9aX3U7/DOXyhIlIBbMr36OAg4pGKdIFNp8NabonzdKZpc8zosRUkQcy2o/kF6bYpioETssat+2+3Gs9UBAfl7VNO0UHNRHA0FrLQGfMif8gc+YuZVPUkAECjDOuW0QkT1cNtXnhxXw9KUmSSyYTsGHhIxNa2LMh/PlvNlv5Xr2ef4lJyu0gJoDloC/NCcwRjur4gnpmztCBiFQkM12O4GgD9i2fbhpcsFMOe8+H1bEgoZiiB0nUZvjsc6Iq2KiDfTeHDPyUvPKEq43c+a4eU5qnH2ef8Hx4lACHrIEfNacsF8msyFgRK51ggkgntZsm1AM2J7ZMbJ42+vCwx9axLd2vifds4aGi6dI0O1WM6hVfvGOY31y4yDg1lAC1rXDfTzfSUCxbuGKJ6V3znCJzIsPDzYyxwZuHiM9MofJ2sOZYV8oHp9Hnq74tXTPjmYc4BgTfWPe9B0TPi+2w2DGBQMRMwIVWHaqOpSA+ywBU9kx4Euk6nnpiQc9Al0RETlxEpMzXuovNIa9lc+6zknqloctEbGOiX8j6J87mqLWnt1HPRx02mHdwkMcBcSxZOeb0g0nNQCBguSZ7TAgiW64PReULWrxrXy0uZ7PTcsf64BTPG1J4EKNkK6ZQ3ix++eOCsyNcfLnOG146NcXcWMLJsrxiyfs70CTUlSgt5snhID/U/c36ZI1RPrnjGJiuCLAbGsLbF811mXjYFm2+4MWP67rzx+TyYXzpPPGQdJPxe5H60yvTbEyKi9Vfl+7XB4ueUr6ZA6XrrgIENX24XqdO2I7526M98Y3bWLRDLwML4jf679cI4/H+h7c2A7/3IkBl9eDQaAFLD5RzpdB35yR0g/CEKudq9pAt4HyJzyZ7huiZcPRnJZE5K+YZytekq4bhlAcey9zP8AT7Js5UqpPbg++rGpO7cL6lyUyO1464UL02RSn1lo2dDyT7tnDZHrpY4GXqlc8wPhaecsS8Afo1CtlYT0s2f1n66yrwST6bqIwNuiPMPq0BkEfXoj+maOkuLGsJRF5rKhbJ0OyE+XBjVG8AEZsjnXKGCSfHVwdjKePA2cPySs1v5Oo7AR5YEMkxTZyb5HOmYPlJTzGcFA8j8cDLGtXoG9iO4hmkWFNKvghfc7VLKO3TJYeWcMkApv2ARFhCDvP59RQiDJO9jTtCy8itRD+aeyx0kWsRlQTRIgLxuuYMVBerHb8TGJfC/nStrdkYFY8hVQxWqQLnquZx/ICAlIX8SqNIGA3W8BnDQGpsnW8tOMtqwpYhSSbVnqzrdgUihGc7w3QxvNtiMTlTGrV3w3tY0tDCV5Ev5KeG2IpQof0vjK/5DlxeV2tjQEh61iRvfGMRDUyfxLifHplD7fuKl4A8YkpHtreZgh4sy3gGE4YWMf6L7OYNDYCw024kXM/znkNxh5ENcXmTJTdTXvDCmBW066mPfJi1et8RuLTx1zbGiEh/PPcX+fWK5CrPpfOqL60rY+Iy+PiM9DUBprlQMCbbAF/jMGThhPfPA3nj8vQvCTplhktvbKszWKlJ+iVBdgHsCY9Lew5+iswbp1EVFaCFDWUqdswrJDmoeZbL+JzFS/j9o9kTgGYZ8/g+TA/uT9jgHxw4FPBoTXRAi7gfx+IBsHgqlBV+NquZXIfAmKTID2C7Ri0ae2+QvsDY6wTPm+6pw+T5Xv/qkW5LtgXYGbhAtxRUcKc7NwNumcOYwHU4llt374mEK8fBUTHZr6DIzcuO1HFZxcCgxjSQ1kNx7JAK/26bBwq968bIIur3uD3lqrGa4r9IojPncoLp3PSICdW3zPVLzEPPOucqq8G4v1/U8AfgSbTGQH4Rp5dulDuSx9AEW26KfSYwsnfoR0tHdb1lYTcaVLYUHpdqtE6tuMbsWvGUOmK/fT+mm4bo1Ghg6T4eDkFDHH7/sYSzxCQrAhVhTnHtuDZESVdUTHYRMFNMR5NIdhW47SGPzHHkfzP0wfKg+ui5PmKV2TX6T2C45pUpH08Xb4EF6qfnScxc7s3vZ/MLXuKRaOrT3ERwt0TFNDtcWv6W05uhyoUBJxZ8jg26E+Bum4AG4fCAvRxK2pL9DzbRp/WZgMtHxXt10VIj/QYWVT5quw8XSuijysU7+O9n/NR0Rn76r01na3vzQ2DpeREpfHscwutm9W3geIFBXR7NN+B41YtYKDNgJUna+TBjChu0gVCdA6Atok5H8Z/iNAacw/iNrp7bR/plh4tqfmPyKq6DOvD3hBTWhKOf8R4rQYvwbX9GVPvbXI3LtzCysXmrWu+PAZdJiAEMnAPBlSbGLfyku1vyj14XuFqkU4ZAcs+yNDWxHmuk2EVuGCDuN89a/rK4MxEWVi6WPKOFcmx840S7nDjhZFbXyhJebPknrV9KZ4ZW4HHR6REZI2UunNHWCy2Bm63G+D8YVF9+RDtu0YFuk2+BTIAF1mBAm0G3nfmAK/WA+lREG+wwRBagzb6QbQQ8/enD2RVdljbT3qnx8m0LY/Jst0fyhd16bLxaJ5kgpWo1Hd3L5exuTOkw5p+EL9fS3vyIt21ro98fmit4FDC6fNn9fWwhVMvEa8To4wAgBUouccK5d71/SHgIGw8WIhq6/4DRI0TY10628Z605dtOxbsIFZMe1TWHWt6yV2r+8jdqyMs2L5zdS++LODnvK+R88/W9MSt++vAc0+Jp4RE9S03xQt8SPs0xOP1PsKFBtbxdu2fmDQEbD0ZrfGLor1qMtq0D88lrfhRaXadF5/HZ54zgagnIdbtIQT0aggWpJtB8CbmCyVpy2zcRhHSEYl8bay/5jEp3p1re8vgTUlSbz1PfeIkHvF5ffN9Pn87BxwF/A+8ts+ZQcQrcvDsYbwAhsp9+Bz4+fooEKmsE1EGkaQj0OuJ2Q+/1tw/9LzdTw+0AxfkzjW9pW/maNnZVBtWPOixEZX2LdCutRU40CEQN8k4miN3YOP71w8ETIgWOPbhp+cI2+aYOW6sDUf4HJzj3766pwzIipftp3eL+EOLhzuxESL91BRN43T7vhlKwAXlL8htq3rgg3QgqpDYbSRm9INtwDlgrlNrTJz8ibkPrQn9HPYdID9d1U1G5KXxr+0tiOeCQLEUqg0Cfg8LD5rBfHj+XXJdkmE5E1n6djKaezlGq+ZhnX2B3Ufb8MccUHOGv7ku1Lxazzf2rRDvF+W/kjOXzoa7bQnESaFIbRTwPiz2AeP558dv0718ltyDbzCe4FoSbHcA7TH3M3xC3LqyG650d/aVT8usI8aa/i2vUe0OwBzHXcM+viD4LBePP6x4+BJ5gQJdgYAzHQKy1N+tXS63rOwCofoHuXtNhPxsVU8I1lVuh+24fpDEb54uv9v9R3l5++9we0VSzPZr+lJgrPnauAfwYiK3sfkzpexEdfDPU+Erz/ua9d+Nt1pABAyCz5QNbrfLUcCHSp6RW77oIrdBKFgm1jl9qMTlpspzVa9Idn2+7D9TF/QH/IvKo2W/pIA/wRp86PLEUMW0ZA2wx9g2oa/2AdYY0HMUjmOsuFuQ36DsJPn04Gq55HaFv2Vdwdt2iSVe2wRUzz8EOeJymc8/v9Q3N8iD64fwio7OmypPVi6RPx/4gr8bXUiOgvmAF/9XX+/oc7zkeJXMK32OFXnzik5y28oeFBVC2KDfMtqXVrXvXN0neGGH56bIH/d9Yn0cq6pz2UIRV1A8jOOAGPMpXhsF1D/fohDHr4MDbO5jZX2w769SeXJ78I1M0bx+9btRV66L4GJoIVmRy2o/xAmmyk9Xdpebv+jMW/yO1b3lLuunGERtHx763LUmgoLhsYHK7sw4D6wfLE9ULJb0o5vkgusi8/NBOJwLoHi2WGrMZeV/3O/zRVO4KxPQY7PUhYAUD9Y+eYyhqrzBCqNgLpUELPtKsMuSpQW2kH6Ri+6Lkn+sWN7e/SeZtOUR6Zo+jJVEUVd0lh+jSq1b/icruqCqutKqcTx38SWwNlIis8bK05Uvy19xmx44c8i+E5gv8lGVRrGCeTEngHMu8vt9D1C0qxUQwmzUAtptWjsBigSUpQ/9VLKEcYyLYV8Qz1dVHHhE1JzcJdlf5sv7e/8iL1a/IY+W/lJmFi+UGcVPyKytT8rCiiXy2o535W9162RrY4XsbToo5y41Mw5BHO5hiMZ+IAcSuGXxyHoVQn3PEuHqBPR6LG5DzHO2MIRtbKhE4Jj24Rx9QqP8GYcE1/Ck/R6rbMQWVT1TFT5j3GNXmo6n28754lGVCYH6UCRw1QJ6UX0gOXiyenN90u6WROLfzBpxZT9GRX/kwkVuQVBTTIW+5YBDDI61AeS03fo41iJdMwFx4m+0IRldPedRvVsQaIHP5++Gjf/N3hxCdkXSf4GfG8iNgcLtQT5Tkdc/UZxrLSA2+EcIUdtKwZrgXw5x3sbiGGx0e6jN4UML7sOaV9Ue1x3sdQZ7pmPvkVq46yVgB2zqC5GIF/PFEOP3cJ6MwLeYG7UsINo+tv8BxKJi30HMkusg2jHE/Rv2eAI5/KfO53oLOMcQ7ABO/l1MpiFQRzPwVQho0gU+qdhvKcjE3odxt593upgGrsCdsA3rl4P5iDUc+/67zuHrFPB9JLE6INj94Hs60HUU0OT74DbQEfQE/RAjMsBA9CNAZ9Ae/Ah829z3Rgj4v+tgYwWlsH1vAAAAAElFTkSuQmCC);background-color:transparent;background-repeat:no-repeat;background-position:center center;background-size:cover;z-index:4}#qlwapp .qlwapp-box .qlwapp-time,#qlwapp .qlwapp-box .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-offline-text{font-size:12px;line-height:1.5em;opacity:.6;display:block}#qlwapp .qlwapp-box .qlwapp-time{font-size:11px;font-style:italic}#qlwapp .qlwapp-box .qlwapp-name{display:block;font-weight:bold;line-height:1.5em}#qlwapp .qlwapp-box .qlwapp-body{overflow-x:hidden;overflow-y:auto}#qlwapp .qlwapp-box .qlwapp-body .qlwapp-carousel{max-height:470px;min-height:134px}#qlwapp .qlwapp-box .qlwapp-chat{display:flex;flex-direction:column;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-user,#qlwapp .qlwapp-box .qlwapp-message{padding:16px 24px;margin:36px;position:relative;word-wrap:break-word;width:calc(100% - 36px*2)}#qlwapp .qlwapp-box .qlwapp-user:before,#qlwapp .qlwapp-box .qlwapp-message:before{content:'';position:absolute;top:-6px;right:24px;width:13px;height:13px;transform:rotate(45deg)}#qlwapp .qlwapp-box .qlwapp-user{width:auto;max-width:75%;align-self:flex-start;justify-self:flex-end;margin-top:0}#qlwapp .qlwapp-box .qlwapp-user:before{top:auto;bottom:-6px;left:24px}#qlwapp .qlwapp-box .qlwapp-padding{padding-bottom:56px}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{position:absolute;bottom:0;left:0;right:0;height:auto;width:100%}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-footer pre,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-footer textarea,#qlwapp .qlwapp-box .qlwapp-response textarea{max-height:160px}#qlwapp .qlwapp-box .qlwapp-footer pre,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-footer textarea,#qlwapp .qlwapp-box .qlwapp-response textarea{color:inherit;background-color:inherit}#qlwapp .qlwapp-box .qlwapp-footer:before,#qlwapp .qlwapp-box .qlwapp-response:before{pointer-events:none;position:absolute;content:'';height:59px;top:-59px;background-image:linear-gradient(transparent,rgba(0,0,0,0.05));left:0;right:0}#qlwapp .qlwapp-box .qlwapp-footer{min-height:56px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;padding:12px 36px}#qlwapp .qlwapp-box .qlwapp-footer p{padding:0;font-size:inherit}#qlwapp .qlwapp-box .qlwapp-footer p:last-child{margin-bottom:0}#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-response textarea,#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons{min-height:56px}#qlwapp .qlwapp-box .qlwapp-response pre,#qlwapp .qlwapp-box .qlwapp-response textarea{width:100%;height:100%;resize:none;border:0;padding:18px 88px 18px 36px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:20px;white-space:pre-wrap;word-wrap:break-word;border-radius:inherit;margin:0}#qlwapp .qlwapp-box .qlwapp-response pre{visibility:hidden}#qlwapp .qlwapp-box .qlwapp-response textarea{position:absolute;bottom:0;left:0}#qlwapp .qlwapp-box .qlwapp-response textarea:focus{outline:0}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons{position:absolute;top:0;right:21px;display:flex;align-items:center}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons.active>i{display:none}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons.active>i.qlwf-emoji{display:block}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>i{opacity:.4}#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>i,#qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>a{cursor:pointer;margin:0 0 0 10px;display:inherit;font-size:18px;line-height:24px;text-decoration:none}#qlwapp .qlwapp-previous,#qlwapp .qlwapp-close,#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-box .qlwapp-header,#qlwapp .qlwapp-box .qlwapp-contact,#qlwapp .qlwapp-box .qlwapp-user{color:#fff}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-text{color:#303030}#qlwapp .qlwapp-box,#qlwapp .qlwapp-box:before{background-color:#fff}#qlwapp .qlwapp-box .qlwapp-account{background-color:#fff}#qlwapp .qlwapp-box .qlwapp-account:not(:first-child){border-top:1px solid #f5f5f5}#qlwapp .qlwapp-box .qlwapp-avatar .qlwapp-avatar-container{background-color:#eee}#qlwapp .qlwapp-box .qlwapp-message,#qlwapp .qlwapp-box .qlwapp-message:before{background-color:#eee}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response{color:#303030;background-color:#fff;border-top:1px solid #e6e6e6}#qlwapp .qlwapp-toggle,#qlwapp .qlwapp-box .qlwapp-header,#qlwapp .qlwapp-box .qlwapp-user,#qlwapp .qlwapp-box .qlwapp-user:before{background-color:#303030}#qlwapp{display:none}#qlwapp.qlwapp-show .qlwapp-box{visibility:visible;opacity:1;transform:translateY(0) scale(1);display:block}#qlwapp.qlwapp-transition .qlwapp-box{visibility:visible;display:block}#qlwapp.qlwapp-bubble.qlwapp-show .qlwapp-toggle .qlwapp-icon{transform:scale(0,0);opacity:0}#qlwapp.qlwapp-bubble.qlwapp-show .qlwapp-toggle .qlwapp-close{transform:scale(1,1);opacity:1}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{transform:scale(0,0);opacity:0}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon{transform:scale(1,1);opacity:1}#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-icon,#qlwapp.qlwapp-bubble .qlwapp-toggle .qlwapp-close{transition:transform 300ms cubic-bezier(0.215,0.61,0.355,1),opacity 300ms ease-in}#qlwapp .qlwapp-box{display:none;opacity:0;visibility:hidden;transform:translateY(50px);transition:transform 300ms cubic-bezier(0.215,0.61,0.355,1),opacity 300ms ease-in}@media(min-width:430px){#qlwapp .qlwapp-box{transform:translateY(50px) scale(0.9)}}#qlwapp .qlwapp-box .qlwapp-carousel{display:flex;width:200%;height:100%}#qlwapp .qlwapp-box .qlwapp-carousel .qlwapp-slide{width:50%;transition:max-height 500ms cubic-bezier(0.215,0.61,0.355,1) 1000ms,transform 300ms cubic-bezier(0.215,0.61,0.355,1) 500ms,opacity 500ms ease-in 500ms;height:100%;overflow:hidden}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-slide{max-height:300px}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{opacity:0;transition:transform cubic-bezier(0.215,0.61,0.355,1) .3s,opacity ease-in .3s}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label{transform:translateX(56px)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{transform:scale(0.5)}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-name{transition-delay:800ms}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-label{transition-delay:850ms}#qlwapp .qlwapp-box .qlwapp-header .qlwapp-avatar{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-footer,#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-previous,#qlwapp .qlwapp-box .qlwapp-message,#qlwapp .qlwapp-box .qlwapp-user{transition:transform cubic-bezier(0.215,0.61,0.355,1) 600ms,opacity ease-in 200ms}#qlwapp .qlwapp-box .qlwapp-response,#qlwapp .qlwapp-box .qlwapp-previous,#qlwapp .qlwapp-box .qlwapp-user{opacity:0}#qlwapp .qlwapp-box .qlwapp-response{pointer-events:none}#qlwapp .qlwapp-box .qlwapp-previous{transform:translateX(56px)}#qlwapp .qlwapp-box .qlwapp-user{transform:translateY(56px)}#qlwapp .qlwapp-box .qlwapp-close{transition:opacity 300ms cubic-bezier(0.215,0.61,0.355,1)}#qlwapp .qlwapp-box .qlwapp-description{transition:transform 600ms cubic-bezier(0.215,0.61,0.355,1),opacity 900ms cubic-bezier(0.215,0.61,0.355,1)}#qlwapp .qlwapp-box .qlwapp-account{transition:transform 600ms cubic-bezier(0.215,0.61,0.355,1),opacity 150ms ease-in}#qlwapp .qlwapp-box .qlwapp-previous{transition-delay:800ms}#qlwapp .qlwapp-box .qlwapp-message{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-close,#qlwapp .qlwapp-box .qlwapp-description{transition-delay:900ms}#qlwapp .qlwapp-box .qlwapp-user{transition-delay:200ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(6){transition-delay:600ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(5){transition-delay:500ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(4){transition-delay:400ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(3){transition-delay:300ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(2){transition-delay:200ms}#qlwapp .qlwapp-box .qlwapp-account:nth-of-type(1){transition-delay:100ms}#qlwapp .qlwapp-box .qlwapp-slide .qlwapp-message{opacity:0;transform:translateY(-56px)}#qlwapp .qlwapp-box .qlwapp-slide .qlwapp-box .qlwapp-account:hover{background-color:#fafafa}#qlwapp .qlwapp-box.response .qlwapp-carousel .qlwapp-slide{transform:translateX(-100%)}#qlwapp .qlwapp-box.response .qlwapp-body .qlwapp-carousel{overflow:hidden;max-height:134px!important;min-height:122px}#qlwapp .qlwapp-box.response .qlwapp-close{transition-delay:0ms}#qlwapp .qlwapp-box.response .qlwapp-close,#qlwapp .qlwapp-box.response .qlwapp-footer,#qlwapp .qlwapp-box.response .qlwapp-description,#qlwapp .qlwapp-box.response .qlwapp-account{opacity:0}#qlwapp .qlwapp-box.response .qlwapp-account{transform:translateY(-33.333%);border-top-color:transparent!important}#qlwapp .qlwapp-box.response .qlwapp-user{display:block}#qlwapp .qlwapp-box.response .qlwapp-message,#qlwapp .qlwapp-box.response .qlwapp-previous,#qlwapp .qlwapp-box.response .qlwapp-response{opacity:1}#qlwapp .qlwapp-box.response .qlwapp-response{pointer-events:all}#qlwapp .qlwapp-box.response .qlwapp-message,#qlwapp .qlwapp-box.response .qlwapp-previous{transform:translate(0)}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-slide{max-height:84px}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-avatar{opacity:1}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-label{opacity:.5}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-label{transform:translateX(0)}#qlwapp .qlwapp-box.response .qlwapp-header .qlwapp-avatar{transform:scale(1)}#qlwapp .qlwapp-box.response.opening .qlwapp-footer,#qlwapp .qlwapp-box.response.opening .qlwapp-response,#qlwapp .qlwapp-box.response.opening .qlwapp-close,#qlwapp .qlwapp-box.response.opening .qlwapp-previous,#qlwapp .qlwapp-box.response.opening .qlwapp-description,#qlwapp .qlwapp-box.response.opening .qlwapp-header .qlwapp-name,#qlwapp .qlwapp-box.response.opening .qlwapp-header .qlwapp-label{visibility:visible}#qlwapp .qlwapp-box.texting .qlwapp-body{overflow-y:auto}#qlwapp .qlwapp-box.texting .qlwapp-user{opacity:1;transform:translate(0)}#qlwapp .qlwapp-box.closing .qlwapp-previous{transition-delay:0ms;transform:translateX(-24px);opacity:0;transition:transform cubic-bezier(0.215,0.61,0.355,1) 300ms,opacity ease-out 200ms}#qlwapp .qlwapp-box.closing .qlwapp-description{opacity:0}body.rtl #qlwapp.qlwapp-button .qlwapp-toggle .qlwapp-icon{margin:0 0 0 12px}body.rtl #qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons{right:auto;left:21px;flex-direction:row-reverse}body.rtl #qlwapp .qlwapp-box .qlwapp-response .qlwapp-buttons>a{transform:rotate(180deg)}body.rtl #qlwapp .qlwapp-box .qlwapp-response pre,body.rtl #qlwapp .qlwapp-box .qlwapp-response textarea{padding:18px 36px 18px 88px}body.rtl #qlwapp .qlwapp-box.response .qlwapp-carousel .qlwapp-slide{transform:translateX(100%)}body.rtl #qlwapp .qlwapp-box .qlwapp-contact{flex-direction:row-reverse}
assets/{js → frontend/js}/qlwapp.js RENAMED
File without changes
assets/{js → frontend/js}/qlwapp.min.js RENAMED
@@ -1 +1,2 @@
 
1
  (function(d,c,a,g){var e={};function b(i,h){this.$qlwapp=d(i);this.init(this)}b.prototype={timeDateToString:function(i){var h=""+i.getMinutes();if(h.length===1){h="0"+h}return i.getHours()+":"+h},timeStringToInt:function(i,h){return parseInt(i+h)},init:function(i){var h=this.$qlwapp;h.on("qlwapp.init",function(j){i.mobiledevice=(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))});h.on("qlwapp.time",function(p){var j=d(p.target),r=j.data("timefrom")||false,s=j.data("timeto")||false,o=parseInt(j.data("timezone"))||0;console.log(j.data("timezone"));if(!s||!r||(r===s)){return true}var v=new Date(),l=v.getTimezoneOffset(),q=-l-o;var u=new Date(),k=new Date();var t,m;t=i.timeStringToInt(r[0],r[1]);m=i.timeStringToInt(r[3],r[4]);k.setHours(t);k.setMinutes(m+q);t=i.timeStringToInt(s[0],s[1]);m=i.timeStringToInt(s[3],s[4]);u.setHours(t);u.setMinutes(m+q);if(!(v.getTime()>=k.getTime()&&v.getTime()<=u.getTime())){j.addClass("qlwapp-readonly")}if(!o){return true}j.find(".from").text(i.timeDateToString(k));j.find(".to").text(i.timeDateToString(u))});h.on("qlwapp.pro",function(j){h.find(".qlwapp-toggle").trigger("qlwapp.time");h.find(".qlwapp-account").each(function(l,k){d(k).trigger("qlwapp.time")})});h.on("qlwapp.resize",function(j){if(d(this).hasClass("qlwapp-show")){d(this).trigger("qlwapp.toggle")}});h.on("qlwapp.init",function(j){if(!i.mobiledevice){h.addClass("desktop").removeClass("mobile")}else{h.addClass("mobile").removeClass("desktop")}h.addClass("qlwapp-js-ready")});h.on("qlwapp.init",function(j){if(h.hasClass("qlwapp-premium")){h.trigger("qlwapp.pro")}});h.addClass("qlwapp-js-ready").trigger("qlwapp.init");h.on("qlwapp.height",function(o){var p=d(o.delegateTarget),n=p.find(".qlwapp-body"),m=n.find(".qlwapp-carousel");var l=p.find(".qlwapp-header"),k=p.find(".qlwapp-footer"),j=(d(c).innerHeight()-l.outerHeight()-k.outerHeight());if(!i.mobiledevice){j=(d(c).innerHeight()*0.7-l.outerHeight()-k.outerHeight())}m.css({"max-height":j+"px"})});h.on("qlwapp.toggle",function(k){var l=d(k.delegateTarget),j=l.find(".qlwapp-box");l.addClass("qlwapp-transition");j.removeClass("response texting");setTimeout(function(){l.toggleClass("qlwapp-show").trigger("qlwapp.height")},10);setTimeout(function(){l.toggleClass("qlwapp-transition")},300)});h.on("click","[data-action=box], [data-action=close]",function(j){j.preventDefault();d(j.delegateTarget).trigger("qlwapp.toggle")});h.on("click","[data-action=open]",function(n){var k="https://api.whatsapp.com/send";if(!i.mobiledevice){k="https://web.whatsapp.com/send"}var m=d(this),l=m.data("message")||"",j=m.data("phone")||"";d(this).attr("href",k+"?phone="+j+"&text="+l)});h.on("click","[data-action=previous]",function(k){k.preventDefault();var l=d(k.delegateTarget),j=l.find(".qlwapp-box");j.addClass("closing");setTimeout(function(){j.removeClass("response").removeClass("closing");j.removeClass("texting")},300)});h.on("click","[data-action=chat]",function(w){w.preventDefault();var n=d(this),t=d(w.delegateTarget),u=t.find(".qlwapp-box"),v=n.find(".qlwapp-avatar img").attr("src"),A=n.find(".qlwapp-name").text(),q=n.find(".qlwapp-label").text(),p=n.find(".qlwapp-time").text(),r=n.data("message"),o=n.data("phone");u.addClass("response").addClass("opening");t.trigger("qlwapp.height");setTimeout(function(){u.removeClass("opening")},300);var k=u.find(".qlwapp-reply"),x=u.find(".qlwapp-header"),j=x.find(".qlwapp-avatar img"),m=x.find(".qlwapp-number"),l=x.find(".qlwapp-name"),z=x.find(".qlwapp-label"),y=u.find(".qlwapp-message");var s=p?p+" - "+q:q;k.data("phone",o);j.attr("src",v);m.html(o);l.html(A);z.html(s);y.html(r)});h.on("click","textarea",function(j){h.off("qlwapp.resize")});h.on("keypress","textarea",function(j){if(j.keyCode==13){h.find(".qlwapp-reply").trigger("click");setTimeout(function(){c.location=h.find(".qlwapp-reply").attr("href")},100)}});h.on("keyup","[data-action=response]",function(m){m.preventDefault();var p=d(this).find("textarea"),o=d(this).find("pre"),j=d(this).find(".qlwapp-reply"),n=d(m.delegateTarget),l=n.find(".qlwapp-box"),k=l.find(".qlwapp-buttons");o.html(p.val());setTimeout(function(){l.addClass("texting").css({"padding-bottom":o.outerHeight()});k.addClass("active");var q=p.val();j.data("message",q);if(q==""){l.removeClass("texting");k.removeClass("active")}},300)})}};d.fn.qlwapp=function(i){var h=arguments;if(i===g||typeof i==="object"){return this.each(function(){if(!d.data(this,"plugin_qlwapp")){d.data(this,"plugin_qlwapp",new b(this,i))}})}else{if(typeof i==="string"&&i[0]!=="_"&&i!=="init"){var j;this.each(function(){var k=d.data(this,"plugin_qlwapp");if(k instanceof b&&typeof k[i]==="function"){j=k[i].apply(k,Array.prototype.slice.call(h,1))}if(i==="destroy"){d.data(this,"plugin_qlwapp",null)}});return j!==g?j:this}}};function f(){d("div#qlwapp").qlwapp()}f();d(c).on("load",function(){f()});d(c).on("click",function(h){if(!d(h.target).closest("#qlwapp.qlwapp-show").length){d("div#qlwapp.qlwapp-show").trigger("qlwapp.toggle")}});d(c).on("resize",function(h){d("div#qlwapp").trigger("qlwapp.resize");d("div#qlwapp").trigger("qlwapp.init")})})(jQuery,window,document);
1
+
2
  (function(d,c,a,g){var e={};function b(i,h){this.$qlwapp=d(i);this.init(this)}b.prototype={timeDateToString:function(i){var h=""+i.getMinutes();if(h.length===1){h="0"+h}return i.getHours()+":"+h},timeStringToInt:function(i,h){return parseInt(i+h)},init:function(i){var h=this.$qlwapp;h.on("qlwapp.init",function(j){i.mobiledevice=(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))});h.on("qlwapp.time",function(p){var j=d(p.target),r=j.data("timefrom")||false,s=j.data("timeto")||false,o=parseInt(j.data("timezone"))||0;console.log(j.data("timezone"));if(!s||!r||(r===s)){return true}var v=new Date(),l=v.getTimezoneOffset(),q=-l-o;var u=new Date(),k=new Date();var t,m;t=i.timeStringToInt(r[0],r[1]);m=i.timeStringToInt(r[3],r[4]);k.setHours(t);k.setMinutes(m+q);t=i.timeStringToInt(s[0],s[1]);m=i.timeStringToInt(s[3],s[4]);u.setHours(t);u.setMinutes(m+q);if(!(v.getTime()>=k.getTime()&&v.getTime()<=u.getTime())){j.addClass("qlwapp-readonly")}if(!o){return true}j.find(".from").text(i.timeDateToString(k));j.find(".to").text(i.timeDateToString(u))});h.on("qlwapp.pro",function(j){h.find(".qlwapp-toggle").trigger("qlwapp.time");h.find(".qlwapp-account").each(function(l,k){d(k).trigger("qlwapp.time")})});h.on("qlwapp.resize",function(j){if(d(this).hasClass("qlwapp-show")){d(this).trigger("qlwapp.toggle")}});h.on("qlwapp.init",function(j){if(!i.mobiledevice){h.addClass("desktop").removeClass("mobile")}else{h.addClass("mobile").removeClass("desktop")}h.addClass("qlwapp-js-ready")});h.on("qlwapp.init",function(j){if(h.hasClass("qlwapp-premium")){h.trigger("qlwapp.pro")}});h.addClass("qlwapp-js-ready").trigger("qlwapp.init");h.on("qlwapp.height",function(o){var p=d(o.delegateTarget),n=p.find(".qlwapp-body"),m=n.find(".qlwapp-carousel");var l=p.find(".qlwapp-header"),k=p.find(".qlwapp-footer"),j=(d(c).innerHeight()-l.outerHeight()-k.outerHeight());if(!i.mobiledevice){j=(d(c).innerHeight()*0.7-l.outerHeight()-k.outerHeight())}m.css({"max-height":j+"px"})});h.on("qlwapp.toggle",function(k){var l=d(k.delegateTarget),j=l.find(".qlwapp-box");l.addClass("qlwapp-transition");j.removeClass("response texting");setTimeout(function(){l.toggleClass("qlwapp-show").trigger("qlwapp.height")},10);setTimeout(function(){l.toggleClass("qlwapp-transition")},300)});h.on("click","[data-action=box], [data-action=close]",function(j){j.preventDefault();d(j.delegateTarget).trigger("qlwapp.toggle")});h.on("click","[data-action=open]",function(n){var k="https://api.whatsapp.com/send";if(!i.mobiledevice){k="https://web.whatsapp.com/send"}var m=d(this),l=m.data("message")||"",j=m.data("phone")||"";d(this).attr("href",k+"?phone="+j+"&text="+l)});h.on("click","[data-action=previous]",function(k){k.preventDefault();var l=d(k.delegateTarget),j=l.find(".qlwapp-box");j.addClass("closing");setTimeout(function(){j.removeClass("response").removeClass("closing");j.removeClass("texting")},300)});h.on("click","[data-action=chat]",function(w){w.preventDefault();var n=d(this),t=d(w.delegateTarget),u=t.find(".qlwapp-box"),v=n.find(".qlwapp-avatar img").attr("src"),A=n.find(".qlwapp-name").text(),q=n.find(".qlwapp-label").text(),p=n.find(".qlwapp-time").text(),r=n.data("message"),o=n.data("phone");u.addClass("response").addClass("opening");t.trigger("qlwapp.height");setTimeout(function(){u.removeClass("opening")},300);var k=u.find(".qlwapp-reply"),x=u.find(".qlwapp-header"),j=x.find(".qlwapp-avatar img"),m=x.find(".qlwapp-number"),l=x.find(".qlwapp-name"),z=x.find(".qlwapp-label"),y=u.find(".qlwapp-message");var s=p?p+" - "+q:q;k.data("phone",o);j.attr("src",v);m.html(o);l.html(A);z.html(s);y.html(r)});h.on("click","textarea",function(j){h.off("qlwapp.resize")});h.on("keypress","textarea",function(j){if(j.keyCode==13){h.find(".qlwapp-reply").trigger("click");setTimeout(function(){c.location=h.find(".qlwapp-reply").attr("href")},100)}});h.on("keyup","[data-action=response]",function(m){m.preventDefault();var p=d(this).find("textarea"),o=d(this).find("pre"),j=d(this).find(".qlwapp-reply"),n=d(m.delegateTarget),l=n.find(".qlwapp-box"),k=l.find(".qlwapp-buttons");o.html(p.val());setTimeout(function(){l.addClass("texting").css({"padding-bottom":o.outerHeight()});k.addClass("active");var q=p.val();j.data("message",q);if(q==""){l.removeClass("texting");k.removeClass("active")}},300)})}};d.fn.qlwapp=function(i){var h=arguments;if(i===g||typeof i==="object"){return this.each(function(){if(!d.data(this,"plugin_qlwapp")){d.data(this,"plugin_qlwapp",new b(this,i))}})}else{if(typeof i==="string"&&i[0]!=="_"&&i!=="init"){var j;this.each(function(){var k=d.data(this,"plugin_qlwapp");if(k instanceof b&&typeof k[i]==="function"){j=k[i].apply(k,Array.prototype.slice.call(h,1))}if(i==="destroy"){d.data(this,"plugin_qlwapp",null)}});return j!==g?j:this}}};function f(){d("div#qlwapp").qlwapp()}f();d(c).on("load",function(){f()});d(c).on("click",function(h){if(!d(h.target).closest("#qlwapp.qlwapp-show").length){d("div#qlwapp.qlwapp-show").trigger("qlwapp.toggle")}});d(c).on("resize",function(h){d("div#qlwapp").trigger("qlwapp.resize");d("div#qlwapp").trigger("qlwapp.init")})})(jQuery,window,document);
assets/js/qlwapp-admin-contact.min.js DELETED
@@ -1 +0,0 @@
1
- (function(c){var b=0,f;_.mixin({escapeHtml:function(g){return g.replace("&amp;",/&/g).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&#039;/g,"'")}});var e=Backbone.Model.extend({defaults:qlwapp_contact.args});var d=Backbone.View.extend({events:{"change input":"enable","change textarea":"enable","change select":"enable","click .media-modal-backdrop":"close","click .media-modal-close":"close","click .media-modal-prev":"edit","click .media-modal-next":"edit","change .media-modal-change":"change","submit .media-modal-form":"submit"},templates:{},initialize:function(){_.bindAll(this,"open","edit","change","load","render","close","submit");this.init();this.open()},init:function(){this.templates.window=wp.template("qlwapp-modal-window")},render:function(){var h=this;var g=this.$el.find("ul.wc-tabs li.active a").attr("href");h.$el.html(h.templates.window(h.model.attributes));_.delay(function(){},100)},load:function(){var g=this;if(g.model.attributes.id==undefined){g.render();return}c.ajax({url:ajaxurl,data:{action:"qlwapp_edit_contact",nonce:qlwapp_contact.nonce.qlwapp_edit_contact,contact_id:this.model.attributes.id},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(){alert("Error!")},success:function(h){if(h.success){g.model.set(h.data);g.render()}else{alert(h.data)}}})},edit:function(k){k.preventDefault();var i=this,j=c(k.target),h=parseInt(c("#qlwapp_contacts_table tr[data-contact_id]").length),g=parseInt(i.model.get("order"));b++;if(f){clearTimeout(f)}f=setTimeout(function(){if(j.hasClass("media-modal-next")){g=Math.min(g+b,h)}else{g=Math.max(g-b,1)}i.model.set({id:parseInt(c("#qlwapp_contacts_table tr[data-contact_order="+g+"]").data("contact_id"))});b=0;i.load()},300)},open:function(g){this.load();c("body").addClass("modal-open").append(this.$el)},update:function(j){j.preventDefault();var h=c(j.target),g=h.attr("name"),i=h.val();if(j.target.type==="checkbox"){i=h.prop("checked")===true?1:0}this.model.attributes[g]=i;this.model.changed[g]=i},change:function(g){g.preventDefault();this.update(g);this.render()},reload:function(g){if(this.$el.find("#qlwapp_modal").hasClass("reload")){location.reload();return}this.remove();return},close:function(g){g.preventDefault();this.undelegateEvents();c(document).off("focusin");c("body").removeClass("modal-open");this.reload(g);return},enable:function(g){c(".media-modal-submit").removeProp("disabled")},submit:function(j){j.preventDefault();var i=this,h=i.$el.find("#qlwapp_modal"),g=h.find(".attachment-details");c.ajax({url:ajaxurl,data:{action:"qlwapp_save_contact",nonce:qlwapp_contact.nonce.qlwapp_save_contact,contact_id:i.model.attributes.id,contact_data:c("form",this.$el).serialize()},dataType:"json",type:"POST",beforeSend:function(){c(".media-modal-submit").prop("disabled",true);g.addClass("save-waiting")},complete:function(){g.addClass("save-complete");g.removeClass("save-waiting")},error:function(){alert("Error!")},success:function(k){if(k.success){h.addClass("reload");if(i.model.attributes.id==undefined){i.close(j)}}else{alert(k.data)}}});return false}});var a=Backbone.View.extend({initialize:function(j){var i=c(j.target),h=i.closest("[data-contact_id]").data("contact_id");var g=new e();g.set({id:h});new d({model:g})},});c(".qlwapp_settings_edit").on("click",function(g){g.preventDefault();new a(g)});c("#qlwapp_contact_add").on("click",function(g){g.preventDefault();new a(g)});c(".qlwapp_settings_delete").on("click",function(j){j.preventDefault();var g=c("#qlwapp_delete_contact_nonce").val();var i=c(j.target),h=i.closest("[data-contact_id]").data("contact_id");if(!confirm(qlwapp_contact.message.contact_confirm_delete)){return false}else{c.ajax({url:ajaxurl,data:{action:"qlwapp_delete_contact",nonce:g,contact_id:h},dataType:"json",type:"POST",beforeSend:function(){},complete:function(){},error:function(k){console.log("response from error ");console.log(k)},success:function(k){if(k.data){console.log(k.data);location.reload()}else{alert(k.data)}}})}});c("table#qlwapp_contacts_table tbody").sortable({items:"tr",cursor:"move",axis:"y",handle:"td.sort",scrollSensitivity:40,helper:function(g,h){h.children().each(function(){c(this).width(c(this).width())});h.css("left","0");return h},start:function(g,h){h.item.css("background-color","#f6f6f6")},stop:function(g,h){h.item.removeAttr("style");h.item.trigger("updateMoveButtons");h.item.trigger("updateSaveButton")}});c(document).on("updateSaveButton",function(){c("#qlwapp_contact_order").removeProp("disabled")});c(".wc-item-reorder-nav").find(".wc-move-up, .wc-move-down").on("click",function(){var l=c(this),g=l.closest("tr");l.focus();var k=l.is(".wc-move-up"),j=l.is(".wc-move-down");if(k){var i=g.prev("tr");if(i&&i.length){i.before(g)}}else{if(j){var h=g.next("tr");if(h&&h.length){h.after(g)}}}l.focus();l.closest("table").trigger("updateMoveButtons");l.closest("table").trigger("updateSaveButton")});c(".wc-item-reorder-nav").closest("table").on("updateMoveButtons",function(){var h=c(this),g=c(this).find("tbody tr:last"),i=c(this).find("tbody tr:first");h.find(".wc-item-reorder-nav .wc-move-disabled").removeClass("wc-move-disabled").attr({tabindex:"0","aria-hidden":"false"});i.find(".wc-item-reorder-nav .wc-move-up").addClass("wc-move-disabled").attr({tabindex:"-1","aria-hidden":"true"});g.find(".wc-item-reorder-nav .wc-move-down").addClass("wc-move-disabled").attr({tabindex:"-1","aria-hidden":"true"})});c("table#qlwapp_contacts_table tbody").trigger("updateMoveButtons");c(document).on("submit","#qlwapp_contacts_form",function(j){j.preventDefault();var g=c(this),i=g.find(".settings-save-status .spinner"),h=g.find(".settings-save-status .saved");c.ajax({url:ajaxurl,data:{action:"qlwapp_save_contact_order",nonce:qlwapp_contact.nonce.qlwapp_save_contact_order,contact_data:g.serialize()},dataType:"json",type:"POST",beforeSend:function(){i.addClass("is-active")},complete:function(){i.removeClass("is-active")},error:function(k){console.log("response from error ");console.log(k)},success:function(k){h.addClass("is-active");c("#qlwapp_contact_order").prop("disabled",true);if(k.success){setTimeout(function(){h.removeClass("is-active")},1500)}else{console.log(k.data);alert(k.data)}}});return false})})(jQuery);
 
assets/js/qlwapp-admin.min.js DELETED
@@ -1,2 +0,0 @@
1
-
2
- (function(b){function a(c){if(c){b("#submit").attr("disabled",true)}else{b("#submit").attr("disabled",false)}}a(true);b("form").change(function(c){a(false)});b(".button").click(function(){a(false)});b("button").click(function(){a(false)});b(".qlwapp-color-field").wpColorPicker({change:function(c,d){a(false)},});b(document).on("tinymce_change",function(c){a(false)});b(".qlwapp-select2").select2({allowClear:false,theme:"default",minimumResultsForSearch:-1});b(".qlwapp-select2-ajax").each(function(){var d=b(this),c=b(this).data("name");d.select2({allowClear:true,ajax:{url:ajaxurl,dataType:"json",data:function(e){return{name:c,per_page:10,q:e.term||0,selected:d.select2("val")||0,action:"qlwapp_get_posts",nonce:qlwapp.nonce.qlwapp_get_posts}},processResults:function(e){var f=[];if(e){b.each(e,function(g,h){f.push({id:h[0],text:h[1]})})}return{results:f}},cache:true},minimumInputLength:3})});b(".qlwapp-color-field").wpColorPicker();b(document).on("click",".upload_image_button",function(f){f.preventDefault();var c=wp.media.editor.send.attachment,d=b(this);wp.media.editor.send.attachment=function(e,g){b(d).parent().prev().attr("src",g.url);b(d).prev().val(g.url).trigger("change");wp.media.editor.send.attachment=c};wp.media.editor.open(d);return false});b(document).on("click",".remove_image_button",function(c){c.preventDefault();var d=b(this).parent().prev().attr("data-src");b(this).parent().prev().attr("src",d);b(this).prev().prev().val("").trigger("change");return false});b(document).on("qlwapp.save","form",function(i,h,f){var c=b(i.currentTarget),g=c.find(".settings-save-status .spinner"),d=c.find(".settings-save-status .saved");b.ajax({url:ajaxurl,data:{action:h,nonce:f,form_data:c.serialize()},dataType:"json",type:"POST",beforeSend:function(){a(true);g.addClass("is-active")},complete:function(){g.removeClass("is-active")},error:function(e){console.log(e)},success:function(e){d.addClass("is-active");if(e.success){setTimeout(function(){d.removeClass("is-active")},2000);console.log(e.data)}else{alert(e.data)}}});return false});b(document).on("submit","#qlwapp_button_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_button_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_button",d])});b(document).on("submit","#qlwapp_box_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_box_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_box",d])});b(document).on("submit","#qlwapp_display_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_display_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_display",d])});b(document).on("submit","#qlwapp_scheme_form",function(f){f.preventDefault();var c=b(this),d=c.find("#qlwapp_scheme_form_nonce").val();c.trigger("qlwapp.save",["qlwapp_save_scheme",d])})})(jQuery);
 
 
changelog.txt CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  = 4.5.4 =
2
  * Fix. reload modal on add new contact
3
 
1
+ = 4.5.5 =
2
+ * New. RTL support
3
+ * New. contact display settings
4
+ * Fix. plugin list settings url
5
+
6
  = 4.5.4 =
7
  * Fix. reload modal on add new contact
8
 
includes/backend.php CHANGED
@@ -48,12 +48,12 @@ class QLWAPP_Admin {
48
 
49
  function add_js() {
50
  if (isset($_GET['page']) && strpos($_GET['page'], QLWAPP_DOMAIN) !== false) {
51
- wp_register_style('qlwapp-select2', plugins_url('/assets/css/qlwapp-select2' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), array('wp-color-picker'), QLWAPP_PLUGIN_VERSION, 'all');
52
 
53
- wp_enqueue_style('qlwapp-admin', plugins_url('/assets/css/qlwapp-admin' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), array('wp-color-picker', 'qlwapp-select2'), QLWAPP_PLUGIN_VERSION, 'all');
54
 
55
- wp_register_script('qlwapp-select2', plugins_url('/assets/js/select2.min.js', QLWAPP_PLUGIN_FILE), array('jquery'), QLWAPP_PLUGIN_VERSION);
56
- wp_enqueue_script('qlwapp-admin', plugins_url('/assets/js/qlwapp-admin' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('jquery', 'qlwapp-select2', 'wp-color-picker'), QLWAPP_PLUGIN_VERSION, true);
57
 
58
  wp_localize_script('qlwapp-admin', 'qlwapp', array(
59
  'nonce' => array(
@@ -61,7 +61,7 @@ class QLWAPP_Admin {
61
  )));
62
  }
63
  }
64
-
65
  function ajax_get_posts() {
66
 
67
  if (current_user_can('manage_options')) {
@@ -69,7 +69,7 @@ class QLWAPP_Admin {
69
  if (!empty($_REQUEST) && check_admin_referer('qlwapp_get_posts', 'nonce')) {
70
 
71
  $data = array(
72
- array('none', esc_html__('Exclude from all', 'wp-whatsapp-chat'))
73
  );
74
 
75
  $args = array(
48
 
49
  function add_js() {
50
  if (isset($_GET['page']) && strpos($_GET['page'], QLWAPP_DOMAIN) !== false) {
51
+ wp_register_style('qlwapp-select2', plugins_url('/assets/backend/css/qlwapp-select2' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), array('wp-color-picker'), QLWAPP_PLUGIN_VERSION, 'all');
52
 
53
+ wp_enqueue_style('qlwapp-admin', plugins_url('/assets/backend/css/qlwapp-admin' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), array('wp-color-picker', 'qlwapp-select2'), QLWAPP_PLUGIN_VERSION, 'all');
54
 
55
+ wp_register_script('qlwapp-select2', plugins_url('/assets/backend/js/select2.min.js', QLWAPP_PLUGIN_FILE), array('jquery'), QLWAPP_PLUGIN_VERSION);
56
+ wp_enqueue_script('qlwapp-admin', plugins_url('/assets/backend/js/qlwapp-admin' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('jquery', 'qlwapp-select2', 'wp-color-picker'), QLWAPP_PLUGIN_VERSION, true);
57
 
58
  wp_localize_script('qlwapp-admin', 'qlwapp', array(
59
  'nonce' => array(
61
  )));
62
  }
63
  }
64
+ /// pasarlo al controlador de display
65
  function ajax_get_posts() {
66
 
67
  if (current_user_can('manage_options')) {
69
  if (!empty($_REQUEST) && check_admin_referer('qlwapp_get_posts', 'nonce')) {
70
 
71
  $data = array(
72
+ array('all', esc_html__('all', 'wp-whatsapp-chat'))
73
  );
74
 
75
  $args = array(
includes/controllers/ContactController.php CHANGED
@@ -1,148 +1,169 @@
1
  <?php
2
 
3
  include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Contact.php');
4
-
5
  include_once(QLWAPP_PLUGIN_DIR . 'includes/controllers/QLWAPP_Controller.php');
6
 
7
  class QLWAPP_Contact_Controller extends QLWAPP_Controller {
8
 
9
- protected static $instance;
10
-
11
- function add_menu() {
12
- add_submenu_page(QLWAPP_DOMAIN, esc_html__('Contacts', 'wp-whatsapp-chat'), esc_html__('Contacts', 'wp-whatsapp-chat'), 'manage_options', QLWAPP_DOMAIN . '_contacts', array($this, 'add_panel'));
13
- }
14
-
15
- function add_panel() {
16
- global $submenu;
17
- $contact_model = new QLWAPP_Contact();
18
- $contacts = $contact_model->get_contacts_reorder();
19
- $contact_args = $contact_model->get_args();
20
- include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
21
- include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/contacts.php');
22
- }
23
-
24
- function ajax_edit_contact() {
25
- if (check_ajax_referer('qlwapp_edit_contact', 'nonce', false)) {
26
- $contact_id = (isset($_REQUEST['contact_id'])) ? absint($_REQUEST['contact_id']) : -1;
27
- if ($contact_id != -1) {
28
- $contact_model = new QLWAPP_Contact();
29
- $contact = $contact_model->get_contact($contact_id);
30
- if ($contact) {
31
- return parent::success_ajax($contact);
32
- }
33
- }
34
- parent::error_reload_page();
35
  }
36
- parent::error_access_denied();
37
- }
38
 
39
- function ajax_save_contact() {
 
 
 
 
 
 
 
 
 
 
 
40
 
41
- if (current_user_can('manage_options')) {
42
- if (check_ajax_referer('qlwapp_save_contact', 'nonce', false) && isset($_REQUEST['contact_data'])) {
43
- $contact_data = array();
44
 
45
- parse_str($_REQUEST['contact_data'], $contact_data);
 
 
46
 
47
  $contact_model = new QLWAPP_Contact();
48
-
49
- if (is_array($contact_data)) {
50
- if (isset($contact_data['id'])) {
51
- return parent::success_save($contact_model->update_contact($contact_data));
52
- } else {
53
- return parent::success_save($contact_model->add_contact($contact_data));
54
- }
55
- return parent::error_reload_page();
56
  }
57
- }
58
- return parent::error_access_denied();
59
  }
60
- }
61
-
62
- function ajax_save_contact_order() {
63
- if (current_user_can('manage_options')) {
64
- if (check_ajax_referer('qlwapp_save_contact_order', 'nonce', false) && isset($_REQUEST['contact_data'])) {
65
- if (array_key_exists('contact_data', $_REQUEST)) {
66
- $contact_model = new QLWAPP_Contact();
67
- $contacts = $contact_model->get_contacts();
68
- $contact_order = array();
69
- parse_str($_REQUEST['contact_data'], $contact_order);
70
- $contact_order = $contact_order['contact_order'];
71
- $result = -1;
72
- if (is_array($contact_order) && count($contact_order) > 0) {
73
- $loop = 1;
74
- foreach ($contact_order as $contact_id) {
75
- if (isset($contacts[$contact_id])) {
76
- $contacts[$contact_id]['order'] = $loop;
77
- $loop++;
78
- }
79
  }
80
- $result = $contact_model->update_contacts($contacts);
81
- }
82
  }
83
- }
84
- wp_send_json_success($result);
85
  }
86
- }
87
 
88
- function ajax_delete_contact() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
- if (check_ajax_referer('qlwapp_delete_contact', 'nonce', false)) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
- $contact_id = (isset($_REQUEST['contact_id'])) ? absint($_REQUEST['contact_id']) : -1;
 
93
 
94
- $contact_model = new QLWAPP_Contact();
95
- // delete
96
- $contact = $contact_model->delete($contact_id);
97
- if ($contact_id) {
 
 
 
 
98
 
99
- return parent::success_ajax($contact);
100
- }
101
- parent::error_reload_page();
 
 
 
 
102
  }
103
- parent::error_access_denied();
104
- }
105
-
106
- function init() {
107
-
108
- add_action('wp_ajax_qlwapp_add_contact', array($this, 'ajax_add_contact'));
109
- add_action('wp_ajax_qlwapp_edit_contact', array($this, 'ajax_edit_contact'));
110
- add_action('wp_ajax_qlwapp_save_contact', array($this, 'ajax_save_contact'));
111
- add_action('wp_ajax_qlwapp_delete_contact', array($this, 'ajax_delete_contact'));
112
- add_action('wp_ajax_qlwapp_save_contact_order', array($this, 'ajax_save_contact_order'));
113
- add_action('admin_enqueue_scripts', array($this, 'add_js'));
114
- add_action('admin_menu', array($this, 'add_menu'));
115
- }
116
-
117
- function add_js() {
118
- if (isset($_GET['page']) && ($_GET['page'] === 'qlwapp_contacts')) {
119
- $contact_model = new QLWAPP_Contact();
120
- wp_enqueue_media();
121
- wp_enqueue_script('qlwapp-admin-contact', plugins_url('/assets/js/qlwapp-admin-contact' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('jquery', 'backbone'), QLWAPP_PLUGIN_VERSION, true);
122
-
123
- wp_localize_script('qlwapp-admin-contact', 'qlwapp_contact', array(
124
- 'nonce' => array(
125
- 'qlwapp_get_contact' => wp_create_nonce('qlwapp_get_contact'),
126
- 'qlwapp_edit_contact' => wp_create_nonce('qlwapp_edit_contact'),
127
- 'qlwapp_add_contact' => wp_create_nonce('qlwapp_add_contact'),
128
- 'qlwapp_save_contact' => wp_create_nonce('qlwapp_save_contact'),
129
- 'qlwapp_save_contact_order' => wp_create_nonce('qlwapp_save_contact_order')
130
- ),
131
- 'message' => array(
132
- 'contact_confirm_delete' => 'you want to delete the contact',
133
- 'contact_confirm_delete_title' => 'Contact: confirmation'
134
- ),
135
- 'args' => $contact_model->get_args()));
136
  }
137
- }
138
 
139
- public static function instance() {
140
- if (!isset(self::$instance)) {
141
- self::$instance = new self();
142
- self::$instance->init();
 
 
143
  }
144
- return self::$instance;
145
- }
146
 
147
  }
148
 
1
  <?php
2
 
3
  include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Contact.php');
4
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display.php');
5
  include_once(QLWAPP_PLUGIN_DIR . 'includes/controllers/QLWAPP_Controller.php');
6
 
7
  class QLWAPP_Contact_Controller extends QLWAPP_Controller {
8
 
9
+ protected static $instance;
10
+
11
+ function add_menu() {
12
+ add_submenu_page(QLWAPP_DOMAIN, esc_html__('Contacts', 'wp-whatsapp-chat'), esc_html__('Contacts', 'wp-whatsapp-chat'), 'manage_options', QLWAPP_DOMAIN . '_contacts', array($this, 'add_panel'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
 
 
14
 
15
+ function add_panel() {
16
+ global $submenu;
17
+ $contact_model = new QLWAPP_Contact();
18
+ $contact_visibility = new Display_Component();
19
+ $contacts = $contact_model->get_contacts_reorder();
20
+
21
+ $contact_args = $contact_model->get_args();
22
+ $contact_entries = $contact_visibility->get_entries();
23
+ $contact_taxonomies = $contact_visibility->get_taxonomies();
24
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
25
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/contacts.php');
26
+ }
27
 
28
+ function get_contact($contact_id) {
 
 
29
 
30
+ function get_the_title1($id) {
31
+ return ($id == 'all') ? esc_html__('All', 'wp-whatsapp-chat') : get_the_title($id);
32
+ }
33
 
34
  $contact_model = new QLWAPP_Contact();
35
+ $contact = $contact_model->get_contact($contact_id);
36
+ foreach ($contact['display']['entries'] as $key => $value) {
37
+ $type = get_post_type_object($key);
38
+ $contact ['display']['entries'][$key]['ids'] = array_filter(array_combine((array) $value['ids'], array_map('get_the_title1', (array) $value['ids'])));
39
+ }
40
+ foreach ($contact['display']['taxonomies'] as $key => $value) {
41
+ $contact ['display']['taxonomies'][$key]['ids'] = array_filter(array_combine((array) $value['ids'], array_map('get_the_title1', (array) $value['ids'])));
 
42
  }
43
+
44
+ return $contact;
45
  }
46
+
47
+ function ajax_edit_contact() {
48
+ if (check_ajax_referer('qlwapp_edit_contact', 'nonce', false)) {
49
+ $contact_id = (isset($_REQUEST['contact_id'])) ? absint($_REQUEST['contact_id']) : -1;
50
+ if ($contact_id != -1) {
51
+ $contact = $this->get_contact($contact_id);
52
+ if ($contact) {
53
+ return parent::success_ajax($contact);
54
+ }
55
+ } else {
56
+ return parent::success_ajax(-1);
 
 
 
 
 
 
 
 
57
  }
58
+ /// parent::error_reload_page();
 
59
  }
60
+ parent::error_access_denied();
 
61
  }
 
62
 
63
+ function ajax_save_contact() {
64
+
65
+ if (current_user_can('manage_options')) {
66
+ if (check_ajax_referer('qlwapp_save_contact', 'nonce', false) && isset($_REQUEST['contact_data'])) {
67
+ $contact_data = array();
68
+ parse_str($_REQUEST['contact_data'], $contact_data);
69
+ $contact_model = new QLWAPP_Contact();
70
+ if (is_array($contact_data)) {
71
+ if (isset($contact_data['id'])) {
72
+ return parent::success_save($contact_model->update_contact($contact_data));
73
+ } else {
74
+ return parent::success_save($contact_model->add_contact($contact_data));
75
+ }
76
+ return parent::error_reload_page();
77
+ }
78
+ }
79
+ return parent::error_access_denied();
80
+ }
81
+ }
82
 
83
+ function ajax_save_contact_order() {
84
+ if (current_user_can('manage_options')) {
85
+ if (check_ajax_referer('qlwapp_save_contact_order', 'nonce', false) && isset($_REQUEST['contact_data'])) {
86
+ if (array_key_exists('contact_data', $_REQUEST)) {
87
+ $contact_model = new QLWAPP_Contact();
88
+ $contacts = $contact_model->get_contacts();
89
+ $contact_order = array();
90
+ parse_str($_REQUEST['contact_data'], $contact_order);
91
+ $contacts_id = $contact_order['contact_id'];
92
+ $result = -1;
93
+ if (is_array($contacts_id) && count($contacts_id) > 0) {
94
+ $loop = 1;
95
+ foreach ($contacts_id as $contact_id) {
96
+ if (isset($contacts[$contact_id])) {
97
+ $contacts[$contact_id]['order'] = $loop;
98
+ $loop++;
99
+ }
100
+ }
101
+ $result = $contact_model->update_contacts($contacts);
102
+ }
103
+ }
104
+ }
105
+ return wp_send_json_success($result);
106
+ }
107
+ }
108
+
109
+ function ajax_delete_contact() {
110
+
111
+ if (check_ajax_referer('qlwapp_delete_contact', 'nonce', false)) {
112
+
113
+ $contact_id = (isset($_REQUEST['contact_id'])) ? absint($_REQUEST['contact_id']) : -1;
114
+
115
+ $contact_model = new QLWAPP_Contact();
116
 
117
+ $contact = $contact_model->delete($contact_id);
118
+ if ($contact_id) {
119
 
120
+ return parent::success_ajax($contact);
121
+ }
122
+ parent::error_reload_page();
123
+ }
124
+ parent::error_access_denied();
125
+ }
126
+
127
+ function init() {
128
 
129
+ add_action('wp_ajax_qlwapp_add_contact', array($this, 'ajax_add_contact'));
130
+ add_action('wp_ajax_qlwapp_edit_contact', array($this, 'ajax_edit_contact'));
131
+ add_action('wp_ajax_qlwapp_save_contact', array($this, 'ajax_save_contact'));
132
+ add_action('wp_ajax_qlwapp_delete_contact', array($this, 'ajax_delete_contact'));
133
+ add_action('wp_ajax_qlwapp_save_contact_order', array($this, 'ajax_save_contact_order'));
134
+ add_action('admin_enqueue_scripts', array($this, 'add_js'));
135
+ add_action('admin_menu', array($this, 'add_menu'));
136
  }
137
+
138
+ function add_js() {
139
+ if (isset($_GET['page']) && ($_GET['page'] === 'qlwapp_contacts')) {
140
+ $contact_model = new QLWAPP_Contact();
141
+ wp_enqueue_media();
142
+ wp_enqueue_script('qlwapp-admin-contact', plugins_url('/assets/backend/js/qlwapp-admin-contact' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('wp-util', 'jquery', 'backbone'), QLWAPP_PLUGIN_VERSION, true);
143
+
144
+ wp_localize_script('qlwapp-admin-contact', 'qlwapp_contact', array(
145
+ 'nonce' => array(
146
+ 'qlwapp_get_contact' => wp_create_nonce('qlwapp_get_contact'),
147
+ 'qlwapp_edit_contact' => wp_create_nonce('qlwapp_edit_contact'),
148
+ 'qlwapp_add_contact' => wp_create_nonce('qlwapp_add_contact'),
149
+ 'qlwapp_save_contact' => wp_create_nonce('qlwapp_save_contact'),
150
+ 'qlwapp_save_contact_order' => wp_create_nonce('qlwapp_save_contact_order')
151
+ ),
152
+ 'message' => array(
153
+ 'contact_confirm_delete' => 'you want to delete the contact',
154
+ 'contact_confirm_delete_title' => 'Contact: confirmation'
155
+ ),
156
+ 'args' => $contact_model->get_args()));
157
+ }
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
 
159
 
160
+ public static function instance() {
161
+ if (!isset(self::$instance)) {
162
+ self::$instance = new self();
163
+ self::$instance->init();
164
+ }
165
+ return self::$instance;
166
  }
 
 
167
 
168
  }
169
 
includes/controllers/DisplayController.php CHANGED
@@ -6,48 +6,50 @@ include_once(QLWAPP_PLUGIN_DIR . 'includes/controllers/QLWAPP_Controller.php');
6
 
7
  class QLWAPP_Display_Controller extends QLWAPP_Controller {
8
 
9
- protected static $instance;
10
-
11
- function add_menu() {
12
- add_submenu_page(QLWAPP_DOMAIN, esc_html__('Display', 'wp-whatsapp-chat'), esc_html__('Display', 'wp-whatsapp-chat'), 'manage_options', QLWAPP_DOMAIN . '_display', array($this, 'add_panel'));
13
- }
14
-
15
- function add_panel() {
16
- global $submenu;
17
- $display_model = new QLWAPP_Display();
18
- $display = $display_model->get();
19
- include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
20
- include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/display.php');
21
- }
22
-
23
- function init() {
24
- add_action('wp_ajax_qlwapp_save_display', array($this, 'ajax_qlwapp_save_display'));
25
- add_action('admin_menu', array($this, 'add_menu'));
26
- }
27
-
28
- public function ajax_qlwapp_save_display() {
29
- $display_model = new QLWAPP_Display();
30
- if (current_user_can('manage_options')) {
31
- if (check_ajax_referer('qlwapp_save_display', 'nonce', false) && isset($_REQUEST['form_data'])) {
32
- $form_data = array();
33
- parse_str($_REQUEST['form_data'], $form_data);
34
- if (is_array($form_data)) {
35
- $display_model->save($form_data);
36
- return parent::success_save($form_data);
 
 
 
 
 
 
 
37
  }
38
- return parent::error_reload_page();
39
- }
40
- return parent::error_access_denied();
41
  }
42
- }
43
 
44
- public static function instance() {
45
- if (!isset(self::$instance)) {
46
- self::$instance = new self();
47
- self::$instance->init();
 
48
  }
49
- return self::$instance;
50
- }
51
 
52
  }
53
 
6
 
7
  class QLWAPP_Display_Controller extends QLWAPP_Controller {
8
 
9
+ protected static $instance;
10
+
11
+ function add_menu() {
12
+ add_submenu_page(QLWAPP_DOMAIN, esc_html__('Display', 'wp-whatsapp-chat'), esc_html__('Display', 'wp-whatsapp-chat'), 'manage_options', QLWAPP_DOMAIN . '_display', array($this, 'add_panel'));
13
+ }
14
+
15
+ function add_panel() {
16
+ global $submenu;
17
+ $display_model = new QLWAPP_Display();
18
+ $display = $display_model->get();
19
+ $visibility_component = new Display_Component();
20
+ $post_types = $visibility_component->get_entries();
21
+ $taxonomies = $visibility_component->get_taxonomies();
22
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
23
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/display.php');
24
+ }
25
+
26
+ function init() {
27
+ add_action('wp_ajax_qlwapp_save_display', array($this, 'ajax_qlwapp_save_display'));
28
+ add_action('admin_menu', array($this, 'add_menu'));
29
+ }
30
+
31
+ public function ajax_qlwapp_save_display() {
32
+ $display_model = new QLWAPP_Display();
33
+ if (current_user_can('manage_options')) {
34
+ if (check_ajax_referer('qlwapp_save_display', 'nonce', false) && isset($_REQUEST['form_data'])) {
35
+ $form_data = array();
36
+ parse_str($_REQUEST['form_data'], $form_data);
37
+ if (is_array($form_data)) {
38
+ $display_model->save($form_data);
39
+ return parent::success_save($form_data);
40
+ }
41
+ return parent::error_reload_page();
42
+ }
43
+ return parent::error_access_denied();
44
  }
 
 
 
45
  }
 
46
 
47
+ public static function instance() {
48
+ if (!isset(self::$instance)) {
49
+ self::$instance = new self();
50
+ self::$instance->init();
51
+ }
52
  }
 
 
53
 
54
  }
55
 
includes/controllers/Display_services.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class QLWAPP_DisplayServices_Controller {
4
+
5
+ public function is_show_view($display) {
6
+
7
+ global $wp_query;
8
+ $show = true;
9
+ if (is_customize_preview()) {
10
+ return true;
11
+ }
12
+ // general
13
+ if (is_front_page() || is_home() || is_search() || is_404()) {
14
+
15
+ if ((isset($display['target']['ids'])) ? count($display['target']['ids']) : 0) {
16
+ $show = !(bool) $display['target']['include'];
17
+ if (is_front_page() && in_array('home', $display['target']['ids'])) {
18
+ $show = !$show;
19
+ } else if (is_home() && in_array('blog', $display['target']['ids'])) {
20
+ $show = !$show;
21
+ } else if (is_search() && in_array('search', $display['target']['ids'])) {
22
+ $show = !$show;
23
+ } else if (is_404() && in_array('error', $display['target']['ids'])) {
24
+ $show = !$show;
25
+ } else if (in_array('all', $display['target']['ids'])) {
26
+ $show = !$show;
27
+ }
28
+ }
29
+
30
+ return $show;
31
+ }
32
+ // post
33
+ if (!is_front_page() && is_singular() && isset($wp_query->get_queried_object()->post_type)) {
34
+
35
+ if (isset($display['entries'][$wp_query->get_queried_object()->post_type]['ids']) && count($display['entries'][$wp_query->get_queried_object()->post_type]['ids'])) {
36
+ $show = !$display['entries'][$wp_query->get_queried_object()->post_type]['include'];
37
+ if (in_array('all', $display['entries'][$wp_query->get_queried_object()->post_type]['ids'])) {
38
+ return !$show;
39
+ }
40
+ if (in_array($wp_query->get_queried_object()->ID, $display['entries'][$wp_query->get_queried_object()->post_type]['ids'])) {
41
+ $show = !$show;
42
+ }
43
+ //backward compatibility for $post->post_name
44
+ if (in_array($wp_query->get_queried_object()->post_name, $display['entries'][$wp_query->get_queried_object()->post_type]['ids'])) {
45
+ $show = !$show;
46
+ }
47
+ }
48
+ return $show;
49
+ }
50
+ // taxonomies
51
+ if (is_archive() && isset($wp_query->get_queried_object()->taxonomy)) {
52
+
53
+ if (isset($display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['ids']) && count($display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['ids'])) {
54
+
55
+ $show = !$display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['include'];
56
+ if (in_array('all', $display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['ids'])) {
57
+ return !$show;
58
+ }
59
+
60
+ if (in_array($wp_query->get_queried_object()->term_id, $display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['ids'])) {
61
+ $show = !$show;
62
+ }
63
+ //backward compatibility for $term->name
64
+ if (in_array($wp_query->get_queried_object()->slug, $display['taxonomies'][$wp_query->get_queried_object()->taxonomy]['ids'])) {
65
+ $show = !$show;
66
+ }
67
+ }
68
+ return $show;
69
+ }
70
+
71
+ return $show;
72
+ }
73
+
74
+ }
75
+
76
+ //QLWAPP_DisplayServices_Controller::instance();
includes/controllers/QLWAPP_Controller.php CHANGED
@@ -2,23 +2,20 @@
2
 
3
  class QLWAPP_Controller {
4
 
5
- // return data for jquery
6
- function success_save($data) {
7
- return wp_send_json_success($data);
8
- }
9
 
10
- function success_ajax($data) {
11
- $this->success_save($data);
12
- }
13
 
14
- function error_reload_page() {
15
- return wp_send_json_error(esc_html__('Please, reload page', 'wp-whatsapp-chat'));
16
- }
17
 
18
- function error_access_denied() {
19
- wp_send_json_error(esc_html__('Access denied', 'wp-whatsapp-chat'));
20
- }
21
-
22
-
23
 
24
  }
2
 
3
  class QLWAPP_Controller {
4
 
5
+ function success_save($data) {
6
+ return wp_send_json_success($data);
7
+ }
 
8
 
9
+ function success_ajax($data) {
10
+ $this->success_save($data);
11
+ }
12
 
13
+ function error_reload_page() {
14
+ return wp_send_json_error(esc_html__('Please, reload page', 'wp-whatsapp-chat'));
15
+ }
16
 
17
+ function error_access_denied() {
18
+ wp_send_json_error(esc_html__('Access denied', 'wp-whatsapp-chat'));
19
+ }
 
 
20
 
21
  }
includes/controllers/SchemeController.php CHANGED
@@ -17,8 +17,8 @@ class QLWAPP_Scheme_Controller extends QLWAPP_Controller {
17
  global $submenu;
18
  $scheme_model = new QLWAPP_Scheme();
19
  $scheme = $scheme_model->get();
20
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/parts/header.php');
21
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/scheme.php');
22
  }
23
 
24
  function init() {
17
  global $submenu;
18
  $scheme_model = new QLWAPP_Scheme();
19
  $scheme = $scheme_model->get();
20
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
21
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/scheme.php');
22
  }
23
 
24
  function init() {
includes/controllers/SuggestionsController.php CHANGED
@@ -13,8 +13,8 @@ class QLWAPP_Suggestions_Controller {
13
  include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Suggestions.php');
14
  $wp_list_table = new QLWAPP_Suggestions_List_Table();
15
  $wp_list_table->prepare_items();
16
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/parts/header.php');
17
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/suggestions.php');
18
  }
19
 
20
  // fix for activateUrl on install now button
13
  include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Suggestions.php');
14
  $wp_list_table = new QLWAPP_Suggestions_List_Table();
15
  $wp_list_table->prepare_items();
16
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
17
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/suggestions.php');
18
  }
19
 
20
  // fix for activateUrl on install now button
includes/controllers/WelcomeController.php CHANGED
@@ -5,15 +5,15 @@ class QLWAPP_Welcome_Controller {
5
  protected static $instance;
6
 
7
  function add_menu() {
8
- add_menu_page(QLWAPP_PLUGIN_NAME, QLWAPP_PLUGIN_NAME, 'edit_posts', QLWAPP_DOMAIN, array($this, 'add_panel'), plugins_url('/assets/img/icon.png', QLWAPP_PLUGIN_FILE));
9
 
10
  add_submenu_page(QLWAPP_DOMAIN, esc_html__('Welcome', 'wp-whatsapp-chat'), esc_html__('Welcome', 'wp-whatsapp-chat'), 'edit_posts', QLWAPP_DOMAIN, array($this, 'add_panel'));
11
  }
12
 
13
  function add_panel() {
14
  global $submenu;
15
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/parts/header.php');
16
- include (QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/welcome.php');
17
  }
18
 
19
  function init() {
5
  protected static $instance;
6
 
7
  function add_menu() {
8
+ add_menu_page(QLWAPP_PLUGIN_NAME, QLWAPP_PLUGIN_NAME, 'edit_posts', QLWAPP_DOMAIN, array($this, 'add_panel'), plugins_url('/assets/backend/img/icon.png', QLWAPP_PLUGIN_FILE));
9
 
10
  add_submenu_page(QLWAPP_DOMAIN, esc_html__('Welcome', 'wp-whatsapp-chat'), esc_html__('Welcome', 'wp-whatsapp-chat'), 'edit_posts', QLWAPP_DOMAIN, array($this, 'add_panel'));
11
  }
12
 
13
  function add_panel() {
14
  global $submenu;
15
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/parts/header.php');
16
+ include (QLWAPP_PLUGIN_DIR . '/includes/view/backend/pages/welcome.php');
17
  }
18
 
19
  function init() {
includes/frontend.php CHANGED
@@ -1,170 +1,150 @@
1
  <?php
2
  if (!class_exists('QLWAPP_Frontend')) {
3
 
4
- class QLWAPP_Frontend {
5
 
6
- protected static $instance;
7
 
8
- function add_js() {
9
- wp_enqueue_style(QLWAPP_DOMAIN, plugins_url('/assets/css/qlwapp' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), null, QLWAPP_PLUGIN_VERSION, 'all');
10
- wp_enqueue_script(QLWAPP_DOMAIN, plugins_url('/assets/js/qlwapp' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('jquery'), QLWAPP_PLUGIN_VERSION, true);
11
- }
12
-
13
- function add_box() {
14
-
15
- global $qlwapp;
16
 
17
- include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Box.php');
18
- include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Contact.php');
19
- include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display.php');
20
- include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Button.php');
21
 
22
- $box_model = new QLWAPP_Box();
23
- $contact_model = new QLWAPP_Contact();
24
- $button_model = new QLWAPP_Button();
25
- $display_model = new QLWAPP_Display();
26
-
27
- $contacts = $contact_model->get_contacts_reorder();
28
- $display = $display_model->get();
29
- $button = $button_model->get();
30
- $box = $box_model->get();
31
 
32
- if ($show = apply_filters('qlwapp_box_display', '__return_true')) {
33
 
34
- if (is_file($file = apply_filters('qlwapp_box_template', QLWAPP_PLUGIN_DIR . 'template/box.php'))) {
35
- include_once $file;
36
- }
37
- }
38
- }
39
 
40
- function add_frontend_css() {
41
- $scheme_model = new QLWAPP_Scheme();
42
- $scheme = $scheme_model->get();
43
- ?>
44
- <style>
45
- :root {
46
- <?php
47
- foreach ($scheme as $key => $value) {
48
- if ($value != '') {
49
- printf('--%s-scheme-%s:%s;', QLWAPP_DOMAIN, $key, $value);
50
- }
51
- }
52
- ?>
53
- }
54
- <?php if ($scheme['brand']): ?>
55
- #qlwapp .qlwapp-toggle,
56
- #qlwapp .qlwapp-box .qlwapp-header,
57
- #qlwapp .qlwapp-box .qlwapp-user,
58
- #qlwapp .qlwapp-box .qlwapp-user:before {
59
- background-color: var(--qlwapp-scheme-brand);
60
- }
61
- <?php endif; ?>
62
- <?php if ($scheme['text']): ?>
63
- #qlwapp .qlwapp-toggle,
64
- #qlwapp .qlwapp-toggle .qlwapp-icon,
65
- #qlwapp .qlwapp-toggle .qlwapp-text,
66
- #qlwapp .qlwapp-box .qlwapp-header,
67
- #qlwapp .qlwapp-box .qlwapp-user {
68
- color: var(--qlwapp-scheme-text);
69
- }
70
- <?php endif; ?>
71
- </style>
72
- <?php
73
- }
74
 
75
- function box_display($show) {
 
 
 
 
76
 
77
- global $wp_query;
78
- $display_model = new QLWAPP_Display();
79
- $display = $display_model->get();
80
- if (is_customize_preview()) {
81
- return true;
82
- }
83
 
84
- if (count($display['target'])) {
85
 
86
- if (is_front_page() || is_home() || is_search() || is_404()) {
87
- $show = false;
88
- }
89
 
90
- if (is_front_page() && in_array('home', $display['target'])) {
91
- return true;
92
  }
93
 
94
- if (is_home() && in_array('blog', $display['target'])) {
95
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
 
98
- if (is_search() && in_array('search', $display['target'])) {
99
- return true;
 
 
 
 
 
 
 
100
  }
101
 
102
- if (is_404() && in_array('error', $display['target'])) {
103
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
105
- }
106
-
107
- if (is_archive() && isset($wp_query->queried_object->taxonomy)) {
108
-
109
- if (isset($display[$wp_query->queried_object->taxonomy]) && count($display[$wp_query->queried_object->taxonomy])) {
110
 
111
- $show = false;
 
 
 
 
 
 
112
 
113
- if (in_array($wp_query->queried_object->term_id, $display[$wp_query->queried_object->taxonomy])) {
114
- return true;
115
- }
116
 
117
- //backward compatibility for $term->name
118
- if (in_array($wp_query->queried_object->slug, $display[$wp_query->queried_object->taxonomy])) {
119
- return true;
120
- }
121
  }
122
- }
123
 
124
- return $show;
125
- }
 
 
 
126
 
127
- function do_shortcode($atts, $content = null) {
128
-
129
- $button_model = new QLWAPP_Button();
130
- $button = $button_model->get();
131
-
132
- $atts = wp_parse_args($atts, $button);
133
-
134
- ob_start();
135
- ?>
136
- <div style="width: auto;" id="qlwapp" class="qlwapp-js-ready <?php printf("qlwapp-%s qlwapp-%s", esc_attr($atts['layout']), esc_attr($atts['rounded'] === 'yes' ? 'rounded' : 'square')); ?>">
137
- <a class="qlwapp-toggle" data-action="open" data-phone="<?php echo esc_attr($atts['phone']); ?>" data-message="<?php echo esc_html($atts['message']); ?>" href="#" target="_blank">
138
- <?php if ($atts['icon']): ?>
139
- <i class="qlwapp-icon <?php echo esc_attr($atts['icon']); ?>"></i>
140
- <?php endif; ?>
141
- <i class="qlwapp-close" data-action="close">&times;</i>
142
- <?php if ($atts['text']): ?>
143
- <span class="qlwapp-text"><?php echo esc_html($content); ?></span>
144
- <?php endif; ?>
145
- </a>
146
- </div>
147
- <?php
148
- return ob_get_clean();
149
- }
150
 
151
- function init() {
152
- add_action('wp_enqueue_scripts', array($this, 'add_js'));
153
- add_action('wp_head', array($this, 'add_frontend_css'), 200);
154
- add_action('wp_footer', array($this, 'add_box'));
155
- add_filter('qlwapp_box_display', array($this, 'box_display'));
156
- add_shortcode('whatsapp', array($this, 'do_shortcode'));
157
- }
158
 
159
- public static function instance() {
160
- if (!isset(self::$instance)) {
161
- self::$instance = new self();
162
- self::$instance->init();
163
- }
164
- return self::$instance;
165
  }
166
 
167
- }
168
-
169
- QLWAPP_Frontend::instance();
170
  }
1
  <?php
2
  if (!class_exists('QLWAPP_Frontend')) {
3
 
 
4
 
5
+ class QLWAPP_Frontend {
6
 
7
+ protected static $instance;
 
 
 
 
 
 
 
8
 
9
+ function add_js() {
 
 
 
10
 
11
+ wp_enqueue_style(QLWAPP_DOMAIN, plugins_url('/assets/frontend/css/qlwapp' . QLWAPP::is_min() . '.css', QLWAPP_PLUGIN_FILE), null, QLWAPP_PLUGIN_VERSION, 'all');
12
+ wp_enqueue_script(QLWAPP_DOMAIN, plugins_url('/assets/frontend/js/qlwapp' . QLWAPP::is_min() . '.js', QLWAPP_PLUGIN_FILE), array('jquery'), QLWAPP_PLUGIN_VERSION, true);
13
+ }
 
 
 
 
 
 
14
 
15
+ function add_box() {
16
 
17
+ global $qlwapp;
 
 
 
 
18
 
19
+ if (is_file($file = apply_filters('qlwapp_box_template', QLWAPP_PLUGIN_DIR . 'template/box.php'))) {
20
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Box.php');
21
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Contact.php');
22
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display.php');
23
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Button.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
+ $box_model = new QLWAPP_Box();
26
+ $contact_model = new QLWAPP_Contact();
27
+ $button_model = new QLWAPP_Button();
28
+ $display_model = new QLWAPP_Display();
29
+ $display_service = new QLWAPP_DisplayServices_Controller();
30
 
31
+ $contacts = $contact_model->get_contacts_reorder();
32
+ $display = $display_model->get();
33
+ $button = $button_model->get();
34
+ $box = $box_model->get();
 
 
35
 
 
36
 
 
 
 
37
 
38
+ include_once $file;
39
+ }
40
  }
41
 
42
+ function add_frontend_css() {
43
+
44
+ $scheme_model = new QLWAPP_Scheme();
45
+ $scheme = $scheme_model->get();
46
+ ?>
47
+ <style>
48
+ :root {
49
+ <?php
50
+ foreach ($scheme as $key => $value) {
51
+ if ($value != '') {
52
+ printf('--%s-scheme-%s:%s;', QLWAPP_DOMAIN, $key, $value);
53
+ }
54
+ }
55
+ ?>
56
+ }
57
+ <?php if ($scheme['brand']): ?>
58
+ #qlwapp .qlwapp-toggle,
59
+ #qlwapp .qlwapp-box .qlwapp-header,
60
+ #qlwapp .qlwapp-box .qlwapp-user,
61
+ #qlwapp .qlwapp-box .qlwapp-user:before {
62
+ background-color: var(--qlwapp-scheme-brand);
63
+ }
64
+ <?php endif; ?>
65
+ <?php if ($scheme['text']): ?>
66
+ #qlwapp .qlwapp-toggle,
67
+ #qlwapp .qlwapp-toggle .qlwapp-icon,
68
+ #qlwapp .qlwapp-toggle .qlwapp-text,
69
+ #qlwapp .qlwapp-box .qlwapp-header,
70
+ #qlwapp .qlwapp-box .qlwapp-user {
71
+ color: var(--qlwapp-scheme-text);
72
+ }
73
+ <?php endif; ?>
74
+ </style>
75
+ <?php
76
  }
77
 
78
+ function box_display1($show) {
79
+ global $wp_query;
80
+ $display_model = new QLWAPP_Display();
81
+ $display = $display_model->get();
82
+ if (is_customize_preview()) {
83
+ return true;
84
+ }
85
+ $display_service = new QLWAPP_DisplayServices_Controller();
86
+ return $display_service->is_show_view($display);
87
  }
88
 
89
+ function do_shortcode($atts, $content = null) {
90
+
91
+ $button_model = new QLWAPP_Button();
92
+ $button = $button_model->get();
93
+
94
+ $atts = wp_parse_args($atts, $button);
95
+
96
+ ob_start();
97
+ ?>
98
+ <div style="width: auto;" id="qlwapp" class="qlwapp-js-ready <?php printf("qlwapp-%s qlwapp-%s", esc_attr($atts['layout']), esc_attr($atts['rounded'] === 'yes' ? 'rounded' : 'square')); ?>">
99
+ <a class="qlwapp-toggle" data-action="open" data-phone="<?php echo esc_attr($atts['phone']); ?>" data-message="<?php echo esc_html($atts['message']); ?>" href="#" target="_blank">
100
+ <?php if ($atts['icon']): ?>
101
+ <i class="qlwapp-icon <?php echo esc_attr($atts['icon']); ?>"></i>
102
+ <?php endif; ?>
103
+ <i class="qlwapp-close" data-action="close">&times;</i>
104
+ <?php if ($atts['text']): ?>
105
+ <span class="qlwapp-text"><?php echo esc_html($content); ?></span>
106
+ <?php endif; ?>
107
+ </a>
108
+ </div>
109
+ <?php
110
+ return ob_get_clean();
111
  }
 
 
 
 
 
112
 
113
+ function display() {
114
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/QLWAPP_Model.php');
115
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display.php');
116
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/controllers/Display_services.php');
117
+ $display_model = new QLWAPP_Display();
118
+ $display = $display_model->get();
119
+ $display_service = new QLWAPP_DisplayServices_Controller();
120
 
121
+ if ($display_service->is_show_view($display)) {
 
 
122
 
123
+ do_action('qlwapp_load');
124
+ }
 
 
125
  }
 
126
 
127
+ function load() {
128
+ add_action('wp_enqueue_scripts', array($this, 'add_js'));
129
+ add_action('wp_head', array($this, 'add_frontend_css'), 200);
130
+ add_action('wp_footer', array($this, 'add_box'));
131
+ }
132
 
133
+ function init() {
134
+ add_action('template_redirect', array($this, 'display'));
135
+ add_shortcode('whatsapp', array($this, 'do_shortcode'));
136
+ add_action('qlwapp_load', array($this, 'load'));
137
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
+ public static function instance() {
140
+ if (!isset(self::$instance)) {
141
+ self::$instance = new self();
142
+ self::$instance->init();
143
+ }
144
+ return self::$instance;
145
+ }
146
 
 
 
 
 
 
 
147
  }
148
 
149
+ QLWAPP_Frontend::instance();
 
 
150
  }
includes/models/Box.php CHANGED
@@ -29,7 +29,6 @@ class QLWAPP_Box extends QLWAPP_Model {
29
  }
30
 
31
  function save($box_data = NULL) {
32
- // return $this->sanitize($box_data);
33
  return parent::save_data($this->table, $this->sanitize($box_data));
34
  }
35
 
29
  }
30
 
31
  function save($box_data = NULL) {
 
32
  return parent::save_data($this->table, $this->sanitize($box_data));
33
  }
34
 
includes/models/Contact.php CHANGED
@@ -2,139 +2,151 @@
2
 
3
  include_once(QLWAPP_PLUGIN_DIR . 'includes/helpers.php');
4
 
 
 
5
  class QLWAPP_Contact extends QLWAPP_Model {
6
 
7
- protected $table = 'contacts';
8
-
9
- function get_args() {
10
- $args = array(
11
- 'id' => null,
12
- 'order' => 1,
13
- // Defaults
14
- // -----------------------------------------------------------------
15
- 'chat' => true,
16
- 'avatar' => 'https://www.gravatar.com/avatar/00000000000000000000000000000000',
17
- 'phone' => '542215677768',
18
- 'firstname' => 'John',
19
- 'lastname' => 'Doe',
20
- 'label' => esc_html__('Support', 'wp-whatsapp-chat'),
21
- 'message' => esc_html__('Hello! I\'m John from the support team.', 'wp-whatsapp-chat'),
22
- 'timefrom' => '00:00',
23
- 'timeto' => '00:00',
24
- 'timezone' => qlwapp_get_current_timezone(),
25
- 'timeout' => 'readonly'
26
- );
27
- return $args;
28
- }
29
-
30
- function get_next_id() {
31
- $contactos = $this->get_contacts();
32
- if (count($contactos)) {
33
- return max(array_keys($contactos)) + 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
- return 0;
36
- }
37
-
38
- function add_contact($contact_data) {
39
- $contact_data['id'] = $this->get_next_id();
40
- $contact_data['order'] = count($this->get_contacts()) + 1;
41
- return $this->save($contact_data);
42
- }
43
-
44
- function update_contact($contact_data) {
45
- return $this->save($contact_data);
46
- }
47
-
48
- function update_contacts($contacts) {
49
- return $this->save_data($this->table, $this->sanitize_value_data($contacts));
50
- }
51
-
52
- function save($contact_data = NULL) {
53
- $contacts = $this->get_contacts();
54
- $contacts[$contact_data['id']] = wp_parse_args($contact_data, $this->get_args());
55
- return $this->save_data($this->table, $this->sanitize_value_data($contacts));
56
- }
57
-
58
- function delete($id = NULL) {
59
- $contacts = parent::get_all($this->table);
60
- if ($contacts) {
61
- if (count($contacts) > 0) {
62
- unset($contacts[$id]);
63
  return $this->save_data($this->table, $this->sanitize_value_data($contacts));
64
- }
65
  }
66
- return false;
67
- }
68
-
69
- function settings_sanitize($settings) {
70
-
71
- if (isset($settings['contacts'])) {
72
- if (count($settings['contacts'])) {
73
- foreach ($settings['contacts'] as $id => $c) {
74
- $settings['contacts'][$id]['id'] = $id;
75
- $settings['contacts'][$id]['chat'] = (bool) $settings['contacts'][$id]['chat'];
76
- $settings['contacts'][$id]['avatar'] = sanitize_text_field($settings['contacts'][$id]['avatar']);
77
- $settings['contacts'][$id]['phone'] = sanitize_text_field($settings['contacts'][$id]['phone']);
78
- $settings['contacts'][$id]['firstname'] = sanitize_text_field($settings['contacts'][$id]['firstname']);
79
- $settings['contacts'][$id]['lastname'] = sanitize_text_field($settings['contacts'][$id]['lastname']);
80
- $settings['contacts'][$id]['label'] = sanitize_text_field($settings['contacts'][$id]['label']);
81
- $settings['contacts'][$id]['message'] = wp_kses_post($settings['contacts'][$id]['message']);
82
- $settings['contacts'][$id]['timeto'] = wp_kses_post($settings['contacts'][$id]['timeto']);
83
- $settings['contacts'][$id]['phone'] = qlwapp_format_phone($settings['contacts'][$id]['phone']);
84
  }
85
- }
86
  }
87
 
88
- return $settings;
89
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
- function sanitize_value_data($contacts, $args = null) {
92
- //$contact_sanitized = array();
93
- foreach ($contacts as $key => $contact) {
94
- $contacts[$key] = parent::sanitize_value_data($contact, $this->get_args());
95
  }
96
- return $contacts;
97
- }
98
-
99
- // asumir que el id es igual al orden dentro del array
100
- function get_contact($id) {
101
- $parent_id = @max(array_keys(array_column($contacts, 'id'), $id));
102
- $contacts = $this->get_contacts();
103
- $contacts[$id];
104
- return $contacts[$id];
105
- }
106
-
107
- function get_contacts() {
108
- // $this->contacts see how to avoid multiple db calls in the same execution
109
- $result = parent::get_all($this->table);
110
- if ($result === NULL || count($result) === 0) {
111
- $default = array();
112
- $default[0] = $this->get_args();
113
- $default[0]['id'] = 0;
114
- $result = $default;
115
- } else {
116
- foreach ($result as $id => $c) {
117
- $result[$id] = wp_parse_args($c, $this->get_args());
118
- }
119
  }
120
- return $result;
121
- }
122
 
123
- function order_contact($a, $b) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
- if (!isset($a['order']) || !isset($b['order']))
126
- return 0;
127
 
128
- if ($a['order'] == $b['order'])
129
- return 0;
130
 
131
- return ( $a['order'] < $b['order'] ) ? -1 : 1;
132
- }
133
 
134
- function get_contacts_reorder() {
135
- $contacts = $this->get_contacts();
136
- uasort($contacts, array($this, 'order_contact'));
137
- return $contacts;
138
- }
139
 
 
 
 
 
 
 
140
  }
2
 
3
  include_once(QLWAPP_PLUGIN_DIR . 'includes/helpers.php');
4
 
5
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display_Component.php');
6
+
7
  class QLWAPP_Contact extends QLWAPP_Model {
8
 
9
+ protected $table = 'contacts';
10
+
11
+ function get_args() {
12
+
13
+ $display_component_model = new Display_Component();
14
+ $args = array(
15
+ 'id' => null,
16
+ 'order' => 1,
17
+ 'active' => 1,
18
+ // Defaults
19
+ // -----------------------------------------------------------------
20
+ 'chat' => true,
21
+ 'avatar' => 'https://www.gravatar.com/avatar/00000000000000000000000000000000',
22
+ 'phone' => '542215677768',
23
+ 'firstname' => 'John',
24
+ 'lastname' => 'Doe',
25
+ 'label' => esc_html__('Support', 'wp-whatsapp-chat'),
26
+ 'message' => esc_html__('Hello! I\'m John from the support team.', 'wp-whatsapp-chat'),
27
+ 'timefrom' => '00:00',
28
+ 'timeto' => '00:00',
29
+ 'timezone' => qlwapp_get_current_timezone(),
30
+ 'timeout' => 'readonly',
31
+ 'display' => $display_component_model->get_args()
32
+ );
33
+ return $args;
34
+ }
35
+
36
+ function get_next_id() {
37
+ $contactos = $this->get_contacts();
38
+ if (count($contactos)) {
39
+ return max(array_keys($contactos)) + 1;
40
+ }
41
+ return 0;
42
+ }
43
+
44
+ function add_contact($contact_data) {
45
+ $contact_id = $this->get_next_id();
46
+ $contact_data['id'] = $contact_id;
47
+ return $this->save($contact_data);
48
+ }
49
+
50
+ function update_contact($contact_data) {
51
+ return $this->save($contact_data);
52
+ }
53
+
54
+ function update_contacts($contacts, $order=0) {
55
+ return $this->save_with_reorder($contacts);
56
+ }
57
+
58
+ function save($contact_data = NULL) {
59
+ $contacts = $this->get_contacts();
60
+ $contacts[$contact_data['id']] = wp_parse_args($contact_data, $this->get_args());
61
+ return $this->save_with_reorder($contacts,1);
62
  }
63
+
64
+ function save_with_reorder($contacts, $with = 0) {
65
+ if($with) {
66
+ $loop = 1;
67
+ foreach ($contacts as $key => $value) {
68
+ $contacts[$key]['order'] = $loop;
69
+ $loop++;
70
+ }
71
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  return $this->save_data($this->table, $this->sanitize_value_data($contacts));
 
73
  }
74
+
75
+ function delete($id = NULL) {
76
+ $contacts = parent::get_all($this->table);
77
+ if ($contacts) {
78
+ if (count($contacts) > 0) {
79
+ unset($contacts[$id]);
80
+ return $this->save_with_reorder($contacts, 1);
81
+ }
 
 
 
 
 
 
 
 
 
 
82
  }
83
+ return false;
84
  }
85
 
86
+ function settings_sanitize($settings) {
87
+
88
+ if (isset($settings['contacts'])) {
89
+ if (count($settings['contacts'])) {
90
+ foreach ($settings['contacts'] as $id => $c) {
91
+ $settings['contacts'][$id]['id'] = $id;
92
+ $settings['contacts'][$id]['chat'] = (bool) $settings['contacts'][$id]['chat'];
93
+ $settings['contacts'][$id]['avatar'] = sanitize_text_field($settings['contacts'][$id]['avatar']);
94
+ $settings['contacts'][$id]['phone'] = sanitize_text_field($settings['contacts'][$id]['phone']);
95
+ $settings['contacts'][$id]['firstname'] = sanitize_text_field($settings['contacts'][$id]['firstname']);
96
+ $settings['contacts'][$id]['lastname'] = sanitize_text_field($settings['contacts'][$id]['lastname']);
97
+ $settings['contacts'][$id]['label'] = sanitize_text_field($settings['contacts'][$id]['label']);
98
+ $settings['contacts'][$id]['message'] = wp_kses_post($settings['contacts'][$id]['message']);
99
+ $settings['contacts'][$id]['timeto'] = wp_kses_post($settings['contacts'][$id]['timeto']);
100
+ $settings['contacts'][$id]['phone'] = qlwapp_format_phone($settings['contacts'][$id]['phone']);
101
+ }
102
+ }
103
+ }
104
 
105
+ return $settings;
 
 
 
106
  }
107
+
108
+ function sanitize_value_data($contacts, $args = null) {
109
+ foreach ($contacts as $key => $contact) {
110
+ $contacts[$key] = parent::sanitize_value_data($contact, $this->get_args());
111
+ }
112
+ return $contacts;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  }
 
 
114
 
115
+ function get_contact($id) {
116
+ $parent_id = @max(array_keys(array_column($contacts, 'id'), $id));
117
+ $contacts = $this->get_contacts();
118
+ return array_replace_recursive($this->get_args(), $contacts[$id]);
119
+ }
120
+ function get_contacts() {
121
+ $result = parent::get_all($this->table);
122
+ if ($result === NULL || count($result) === 0) {
123
+ $default = array();
124
+ $default[0] = $this->get_args();
125
+ $default[0]['id'] = 0;
126
+ $result = $default;
127
+ } else {
128
+ foreach ($result as $id => $c) {
129
+ $result[$id] = wp_parse_args($c, $this->get_args());
130
+ }
131
+ }
132
+ return $result;
133
+ }
134
 
135
+ function order_contact($a, $b) {
 
136
 
137
+ if (!isset($a['order']) || !isset($b['order']))
138
+ return 0;
139
 
140
+ if ($a['order'] == $b['order'])
141
+ return 0;
142
 
143
+ return ( $a['order'] < $b['order'] ) ? -1 : 1;
144
+ }
 
 
 
145
 
146
+ function get_contacts_reorder() {
147
+ $contacts = $this->get_contacts();
148
+ uasort($contacts, array($this, 'order_contact'));
149
+ return $contacts;
150
+ }
151
+
152
  }
includes/models/Display.php CHANGED
@@ -1,24 +1,20 @@
1
  <?php
2
 
 
 
3
  class QLWAPP_Display extends QLWAPP_Model {
4
 
5
  protected $table = 'display';
6
 
 
7
  function get_args() {
 
8
 
9
- $args = array(
10
- 'devices' => 'all',
11
- 'target' => array(),
12
- 'page' => array(),
13
- 'post' => array(),
14
- 'category' => array(),
15
- );
16
- return $args;
17
  }
18
 
19
  function save($display_data = NULL) {
20
  return parent::save_data($this->table, $display_data);
21
  }
22
-
23
 
24
  }
1
  <?php
2
 
3
+ include_once(QLWAPP_PLUGIN_DIR . 'includes/models/Display_Component.php');
4
+
5
  class QLWAPP_Display extends QLWAPP_Model {
6
 
7
  protected $table = 'display';
8
 
9
+ // Entries and Taxonomies = array of Display_Component
10
  function get_args() {
11
+ $display_component_model = new Display_Component();
12
 
13
+ return $display_component_model->get_args();
 
 
 
 
 
 
 
14
  }
15
 
16
  function save($display_data = NULL) {
17
  return parent::save_data($this->table, $display_data);
18
  }
 
19
 
20
  }
includes/models/Display_Component.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Display_Component {
4
+
5
+ //entries ex. page or post , taxonomies ex. tag or category
6
+
7
+ public $base = array(
8
+ 'include' => 1,
9
+ 'ids' => array(),
10
+ );
11
+
12
+ function get_args() {
13
+ $args = array(
14
+ 'entries' => $this->get_display_entries(),
15
+ 'taxonomies' => $this->get_display_taxonomies(),
16
+ 'target' => $this->base,
17
+ 'devices' => 'all',
18
+ );
19
+ return $args;
20
+ }
21
+
22
+ function get_display_entries() {
23
+ $post_types = $this->get_entries();
24
+ $array = array();
25
+ foreach ($post_types as $key => $entry) {
26
+ $array[$key] = $this->base;
27
+ }
28
+ return $array;
29
+ }
30
+
31
+ function get_display_taxonomies() {
32
+ $taxonomies = $this->get_taxonomies();
33
+ $array = array();
34
+ foreach ($taxonomies as $key => $taxonomy) {
35
+ $array[$key] = $this->base;
36
+ }
37
+ return $array;
38
+ }
39
+
40
+ function get_entries() {
41
+ $post_types = get_post_types(array('public' => true, 'show_in_nav_menus' => true), 'objects');
42
+ $array = array();
43
+ foreach ($post_types as $type) {
44
+ if ($count = wp_count_posts($type->name)) {
45
+ $array[$type->name] = $type;
46
+ }
47
+ }
48
+ return $array;
49
+ }
50
+
51
+ function get_taxonomies() {
52
+ $taxonomies = get_taxonomies(array('public' => true), 'objects');
53
+ $array = array();
54
+ foreach ($taxonomies as $taxonomy) {
55
+ $terms = get_terms(array(
56
+ 'taxonomy' => $taxonomy->name,
57
+ 'hide_empty' => false,
58
+ ));
59
+
60
+ if (count($terms)) {
61
+ $array[$taxonomy->name] = $taxonomy;
62
+ }
63
+ }
64
+ return $array;
65
+ }
66
+
67
+ }
includes/models/QLWAPP_Model.php CHANGED
@@ -4,6 +4,8 @@ include_once(QLWAPP_PLUGIN_DIR . 'includes/helpers.php');
4
 
5
  class QLWAPP_Model {
6
 
 
 
7
  // == schema
8
  function options() {
9
  $options = array();
@@ -22,7 +24,6 @@ class QLWAPP_Model {
22
  $result = $this->get_all($this->table);
23
  return wp_parse_args($result, $this->get_args());
24
  }
25
-
26
 
27
  public function sanitize_value_data($value_data, $args) {
28
 
@@ -60,9 +61,11 @@ class QLWAPP_Model {
60
  }
61
 
62
  function get_all($key) {
63
- $qlwapp = get_option('qlwapp', array());
64
- $qlwapp = wp_parse_args($qlwapp, $this->options());
65
- $res = $qlwapp[$key];
 
 
66
  return $res;
67
  }
68
 
4
 
5
  class QLWAPP_Model {
6
 
7
+ protected $qlwapp = null;
8
+
9
  // == schema
10
  function options() {
11
  $options = array();
24
  $result = $this->get_all($this->table);
25
  return wp_parse_args($result, $this->get_args());
26
  }
 
27
 
28
  public function sanitize_value_data($value_data, $args) {
29
 
61
  }
62
 
63
  function get_all($key) {
64
+ if (!$this->qlwapp) {
65
+ $this->qlwapp = get_option('qlwapp', array());
66
+ }
67
+ $this->qlwapp = wp_parse_args($this->qlwapp, $this->options());
68
+ $res = $this->qlwapp[$key];
69
  return $res;
70
  }
71
 
includes/notices.php CHANGED
@@ -1,93 +1,93 @@
1
- <?php
2
-
3
- class QLWAPP_Notices {
4
-
5
- protected static $instance;
6
-
7
- public static function instance() {
8
- if (is_null(self::$instance)) {
9
- self::$instance = new self();
10
- self::$instance->init();
11
- }
12
- return self::$instance;
13
- }
14
-
15
- function init() {
16
- add_filter('plugin_action_links_' . plugin_basename(QLWAPP_PLUGIN_FILE), array($this, 'add_action_links'));
17
- add_action('admin_notices', array($this, 'add_notices'));
18
- add_action('wp_ajax_qlwapp_dismiss_notice', array($this, 'ajax_dismiss_notice'));
19
- }
20
-
21
- function ajax_dismiss_notice() {
22
-
23
- if (check_admin_referer('qlwapp_dismiss_notice', 'nonce') && isset($_REQUEST['notice_id'])) {
24
-
25
- $notice_id = sanitize_key($_REQUEST['notice_id']);
26
-
27
- update_user_meta(get_current_user_id(), $notice_id, true);
28
-
29
- wp_send_json($notice_id);
30
- }
31
-
32
- wp_die();
33
- }
34
-
35
- function add_notices() {
36
-
37
- if (!get_transient('qlwapp-first-rating') && !get_user_meta(get_current_user_id(), 'qlwapp-user-rating', true)) {
38
- ?>
39
- <div id="qlwapp-admin-rating" class="qlwapp-notice notice is-dismissible" data-notice_id="qlwapp-user-rating">
40
- <div class="notice-container" style="padding-top: 10px; padding-bottom: 10px; display: flex; justify-content: left; align-items: center;">
41
- <div class="notice-image">
42
- <img style="border-radius:50%;max-width: 90px;" src="<?php echo plugins_url('/assets/img/logo.jpg', QLWAPP_PLUGIN_FILE); ?>" alt="<?php echo esc_html(QLWAPP_PLUGIN_NAME); ?>>">
43
- </div>
44
- <div class="notice-content" style="margin-left: 15px;">
45
- <p>
46
- <?php printf(esc_html__('Hello! Thank you for choosing the %s plugin!', 'wp-whatsapp-chat'), QLWAPP_PLUGIN_NAME); ?>
47
- <br/>
48
- <?php esc_html_e('Could you please give it a 5-star rating on WordPress? We know its a big favor, but we\'ve worked very much and very hard to release this great product. Your feedback will boost our motivation and help us promote and continue to improve this product.', 'wp-whatsapp-chat'); ?>
49
- </p>
50
- <a href="<?php echo esc_url(QLWAPP_REVIEW_URL); ?>" class="button-primary" target="_blank">
51
- <?php esc_html_e('Yes, of course!', 'wp-whatsapp-chat'); ?>
52
- </a>
53
- <a href="<?php echo esc_url(QLWAPP_SUPPORT_URL); ?>" class="button-secondary" target="_blank">
54
- <?php esc_html_e('Report a bug', 'wp-whatsapp-chat'); ?>
55
- </a>
56
- </div>
57
- </div>
58
- </div>
59
- <script>
60
- (function ($) {
61
- $('.qlwapp-notice').on('click', '.notice-dismiss', function (e) {
62
- e.preventDefault();
63
- var notice_id = $(e.delegateTarget).data('notice_id');
64
- $.ajax({
65
- type: 'POST',
66
- url: ajaxurl,
67
- data: {
68
- notice_id: notice_id,
69
- action: 'qlwapp_dismiss_notice',
70
- nonce: '<?php echo wp_create_nonce('qlwapp_dismiss_notice'); ?>'
71
- },
72
- success: function (response) {
73
- console.log(response);
74
- },
75
- });
76
- });
77
- })(jQuery);
78
- </script>
79
- <?php
80
- }
81
- }
82
-
83
- public function add_action_links($links) {
84
-
85
- $links[] = '<a target="_blank" href="' . QLWAPP_PURCHASE_URL . '">' . esc_html__('Premium', 'woocommerce-checkout-manager') . '</a>';
86
- $links[] = '<a href="' . admin_url('admin.php?page=wc-settings&tab=' . sanitize_title(QLWAPP_PREFIX)) . '">' . esc_html__('Settings', 'woocommerce-checkout-manager') . '</a>';
87
-
88
- return $links;
89
- }
90
-
91
- }
92
-
93
- QLWAPP_Notices::instance();
1
+ <?php
2
+
3
+ class QLWAPP_Notices {
4
+
5
+ protected static $instance;
6
+
7
+ public static function instance() {
8
+ if (is_null(self::$instance)) {
9
+ self::$instance = new self();
10
+ self::$instance->init();
11
+ }
12
+ return self::$instance;
13
+ }
14
+
15
+ function init() {
16
+ add_filter('plugin_action_links_' . plugin_basename(QLWAPP_PLUGIN_FILE), array($this, 'add_action_links'));
17
+ add_action('admin_notices', array($this, 'add_notices'));
18
+ add_action('wp_ajax_qlwapp_dismiss_notice', array($this, 'ajax_dismiss_notice'));
19
+ }
20
+
21
+ function ajax_dismiss_notice() {
22
+
23
+ if (check_admin_referer('qlwapp_dismiss_notice', 'nonce') && isset($_REQUEST['notice_id'])) {
24
+
25
+ $notice_id = sanitize_key($_REQUEST['notice_id']);
26
+
27
+ update_user_meta(get_current_user_id(), $notice_id, true);
28
+
29
+ wp_send_json($notice_id);
30
+ }
31
+
32
+ wp_die();
33
+ }
34
+
35
+ function add_notices() {
36
+
37
+ if (!get_transient('qlwapp-first-rating') && !get_user_meta(get_current_user_id(), 'qlwapp-user-rating', true)) {
38
+ ?>
39
+ <div id="qlwapp-admin-rating" class="qlwapp-notice notice is-dismissible" data-notice_id="qlwapp-user-rating">
40
+ <div class="notice-container" style="padding-top: 10px; padding-bottom: 10px; display: flex; justify-content: left; align-items: center;">
41
+ <div class="notice-image">
42
+ <img style="border-radius:50%;max-width: 90px;" src="<?php echo plugins_url('/assets/backend/img/logo.jpg', QLWAPP_PLUGIN_FILE); ?>" alt="<?php echo esc_html(QLWAPP_PLUGIN_NAME); ?>>">
43
+ </div>
44
+ <div class="notice-content" style="margin-left: 15px;">
45
+ <p>
46
+ <?php printf(esc_html__('Hello! Thank you for choosing the %s plugin!', 'wp-whatsapp-chat'), QLWAPP_PLUGIN_NAME); ?>
47
+ <br/>
48
+ <?php esc_html_e('Could you please give it a 5-star rating on WordPress? We know its a big favor, but we\'ve worked very much and very hard to release this great product. Your feedback will boost our motivation and help us promote and continue to improve this product.', 'wp-whatsapp-chat'); ?>
49
+ </p>
50
+ <a href="<?php echo esc_url(QLWAPP_REVIEW_URL); ?>" class="button-primary" target="_blank">
51
+ <?php esc_html_e('Yes, of course!', 'wp-whatsapp-chat'); ?>
52
+ </a>
53
+ <a href="<?php echo esc_url(QLWAPP_SUPPORT_URL); ?>" class="button-secondary" target="_blank">
54
+ <?php esc_html_e('Report a bug', 'wp-whatsapp-chat'); ?>
55
+ </a>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ <script>
60
+ (function ($) {
61
+ $('.qlwapp-notice').on('click', '.notice-dismiss', function (e) {
62
+ e.preventDefault();
63
+ var notice_id = $(e.delegateTarget).data('notice_id');
64
+ $.ajax({
65
+ type: 'POST',
66
+ url: ajaxurl,
67
+ data: {
68
+ notice_id: notice_id,
69
+ action: 'qlwapp_dismiss_notice',
70
+ nonce: '<?php echo wp_create_nonce('qlwapp_dismiss_notice'); ?>'
71
+ },
72
+ success: function (response) {
73
+ console.log(response);
74
+ },
75
+ });
76
+ });
77
+ })(jQuery);
78
+ </script>
79
+ <?php
80
+ }
81
+ }
82
+
83
+ public function add_action_links($links) {
84
+
85
+ $links[] = '<a target="_blank" href="' . QLWAPP_PURCHASE_URL . '">' . esc_html__('Premium', 'wp-whatsapp-chat') . '</a>';
86
+ $links[] = '<a href="' . admin_url('admin.php?page=' . sanitize_title(QLWAPP_PREFIX)) . '">' . esc_html__('Settings', 'wp-whatsapp-chat') . '</a>';
87
+
88
+ return $links;
89
+ }
90
+
91
+ }
92
+
93
+ QLWAPP_Notices::instance();
includes/settings.php CHANGED
@@ -60,16 +60,6 @@ class QLWAPP_Settings {
60
  if (get_option('whatsapp_chat_hide_page')) {
61
  $qlwapp['display']['page'] = array('none');
62
  }
63
- // No se usa mas
64
- /* if (get_option('whatsapp_chat_hide_product')) {
65
- $qlwapp['display']['product'] = array('none');
66
- }
67
- // No se usa mas
68
- if (get_option('whatsapp_chat_hide_project')) {
69
- $qlwapp['display']['project'] = array('none');
70
- }
71
- */
72
-
73
  //scheme
74
  if (get_option('whatsapp_chat_dark')) {
75
  $qlwapp['scheme']['brand'] = '#075E54';
@@ -98,6 +88,62 @@ class QLWAPP_Settings {
98
  if (isset($qlwapp['button']['developer']) && $qlwapp['button']['developer'] == 1) {
99
  $qlwapp['button']['developer'] = 'yes';
100
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  return $qlwapp;
102
  }
103
 
60
  if (get_option('whatsapp_chat_hide_page')) {
61
  $qlwapp['display']['page'] = array('none');
62
  }
 
 
 
 
 
 
 
 
 
 
63
  //scheme
64
  if (get_option('whatsapp_chat_dark')) {
65
  $qlwapp['scheme']['brand'] = '#075E54';
88
  if (isset($qlwapp['button']['developer']) && $qlwapp['button']['developer'] == 1) {
89
  $qlwapp['button']['developer'] = 'yes';
90
  }
91
+ // display
92
+ // part free
93
+ if (isset($qlwapp['display']['target'])) {
94
+
95
+ if (!isset($qlwapp['display']['target']['ids']) && isset($qlwapp['display']['target'][0])) {
96
+
97
+ if ($qlwapp['display']['target'][0] == 'none') {
98
+ $qlwapp['display']['target']['ids'] = array('all');
99
+ $qlwapp['display']['target']['include'] = '0';
100
+ } else {
101
+ $qlwapp['display']['target']['ids'] = $qlwapp['display']['target'];
102
+ $qlwapp['display']['target']['include'] = '1';
103
+ }
104
+ }
105
+ }
106
+ // part pro taxonomies
107
+ // rename-re asign
108
+ if (isset($qlwapp['display']['category'])) {
109
+ if (!isset($qlwapp['display']['category']['ids']) && isset($qlwapp['display']['category'][0])) {
110
+ $qlwapp['display']['taxonomies']['category']['include'] = '1';
111
+ if (in_array('none', $qlwapp['display']['category'])) {
112
+ $key = array_search('none', $qlwapp['display']['category']);
113
+ $qlwapp['display']['category'][$key] = 'all';
114
+ $qlwapp['display']['taxonomies']['category']['include'] = '0';
115
+ }
116
+ $qlwapp['display']['taxonomies']['category']['ids'] = $qlwapp['display']['category'];
117
+ }
118
+ }
119
+ // part PRO
120
+ // rename-re asign o ['entries']
121
+ // PAGE
122
+ if (isset($qlwapp['display']['page'])) {
123
+ if (!isset($qlwapp['display']['page']['ids']) && isset($qlwapp['display']['page'][0])) {
124
+ $qlwapp['display']['entries']['page']['include'] = '0';
125
+ if (in_array('none', $qlwapp['display']['page'])) {
126
+ $key = array_search('none', $qlwapp['display']['page']);
127
+ $qlwapp['display']['page'][$key] = 'all';
128
+ $qlwapp['display']['entries']['page']['include'] = '0';
129
+ }
130
+ $qlwapp['display']['entries']['page']['ids'] = $qlwapp['display']['page'];
131
+ }
132
+ }
133
+ // POST
134
+ if (isset($qlwapp['display']['post'])) {
135
+ if (!isset($qlwapp['display']['post']['ids']) && isset($qlwapp['display']['post'][0])) {
136
+ $qlwapp['display']['entries']['post']['include'] = '1';
137
+
138
+ if (in_array('none', $qlwapp['display']['post'])) {
139
+ $key = array_search('none', $qlwapp['display']['post']);
140
+ $qlwapp['display']['post'][$key] = 'all';
141
+ $qlwapp['display']['entries']['post']['include'] = '0';
142
+ }
143
+ $qlwapp['display']['entries']['post']['ids'] = $qlwapp['display']['post'];
144
+ }
145
+ }
146
+
147
  return $qlwapp;
148
  }
149
 
includes/view/backend/pages/contacts.php CHANGED
@@ -1,22 +1,23 @@
1
  <div class="wrap about-wrap full-width-layout qlwrap">
2
  <form id="qlwapp_contacts_form" method="post" >
3
- <p class="submit qlwapp-premium-field">
4
  <?php submit_button(esc_html__('+ Contact', 'wp-whatsapp-chat'), 'secondary', 'submit', false, array('id' => 'qlwapp_contact_add')); ?>
5
  <?php submit_button(esc_html__('Save reorder', 'wp-whatsapp-chat'), 'primary', 'submit', false, array('id' => 'qlwapp_contact_order', 'disabled' => 'disabled')); ?>
6
  <span class="settings-save-status">
7
  <span class="spinner"></span>
8
  <span class="saved"><?php esc_html_e('Saved successfully!'); ?></span>
9
- </span>
10
- </p>
 
11
  <table id="qlwapp_contacts_table" class="form-table widefat striped">
12
  <thead>
13
  <tr>
14
- <th style="text-align: center"><?php esc_html_e('Order', 'wp-whatsapp-chat'); ?></th>
15
- <th><?php esc_html_e('Avatar', 'wp-whatsapp-chat'); ?></th>
16
  <th><?php esc_html_e('Phone', 'wp-whatsapp-chat'); ?></th>
17
  <th><?php esc_html_e('Name', 'wp-whatsapp-chat'); ?></th>
18
- <th><?php esc_html_e('Label', 'wp-whatsapp-chat'); ?></th>
19
- <th><?php esc_html_e('Chat', 'wp-whatsapp-chat'); ?></th>
20
  <th><?php esc_html_e('Message', 'wp-whatsapp-chat'); ?></th>
21
  <th><?php esc_html_e('Availability', 'wp-whatsapp-chat'); ?></th>
22
  <th><?php esc_html_e('Timezone', 'wp-whatsapp-chat'); ?></th>
@@ -26,40 +27,35 @@
26
  <tbody class="ui-sortable">
27
  <?php if (count($contacts)): ?>
28
  <?php
29
- $position = 0;
30
  foreach ($contacts as $id => $c) {
31
  ?>
32
- <tr data-contact_id="<?php echo esc_attr($id) ?>" data-contact_order="<?php echo esc_attr($c['order']) ?>">
33
  <td class="sort ui-sortable-handle">
34
  <div class="wc-item-reorder-nav">
35
- <button type="button" class="wc-move-up " tabindex="-1" aria-hidden="true" aria-label="<?php ///echo ///esc_attr(sprintf(__('Move the "%s" payment method up', 'woocommerce-checkout-manager'), $contact['label'])); ?>"><?php esc_html_e('Move up', 'wp-whatsapp-chat'); ?></button>
36
- <button type="button" class="wc-move-down" tabindex="0" aria-hidden="false" aria-label="<?php ///echo esc_attr(sprintf(__('Move the "%s" payment method down', 'woocommerce-checkout-manager'), $field['label'])); ?>"><?php esc_html_e('Move down', 'wp-whatsapp-chat'); ?></button>
37
- <input type="hidden" name="contact_order[]" value="<?php echo esc_attr($id); ?>">
38
  </div>
39
  </td>
40
  <td>
41
  <img class="qlwapp-avatar" src="<?php echo $c['avatar']; ?>" alt="" width="50" height="50" /> </td>
42
- <td><?php echo esc_attr($c['phone']); ?></td>
43
- <td><?php echo $c['firstname'] . ', ' . $c['lastname']; ?> </td>
44
  <td><?php echo $c['label']; ?></td>
45
  <td>
46
- <?php
47
- if ($c['chat'])
48
- esc_html_e('active', 'wp-whatsapp-chat');
49
- else
50
- esc_html_e('inactive', 'wp-whatsapp-chat');
51
- ?>
52
  </td>
53
  <td><?php echo wp_trim_words(substr($c['message'], 0, 36), 3); ?></td>
54
  <td><?php echo $c['timefrom']; ?> to <?php echo $c['timeto']; ?></td>
55
  <td><?php echo $c['timezone']; ?></td>
56
- <td>
57
- <a class="qlwapp_settings_edit button" aria-label="<?php esc_html_e('Edit checkout field', 'wp-whatsapp-chat'); ?>" href="javascript:;"><?php esc_html_e('Edit'); ?></a>
58
  <a class="qlwapp_settings_delete" aria-label="<?php esc_html_e('Edit checkout field', 'wp-whatsapp-chat'); ?>" href="javascript:;"><?php esc_html_e('Delete'); ?></a>
59
-
60
  </td>
61
  </tr>
62
  <?php
 
63
  }
64
  ?>
65
  </tbody>
@@ -68,6 +64,5 @@
68
  <?php wp_nonce_field('qlwapp_delete_contact', 'qlwapp_delete_contact_nonce'); ?>
69
  </form>
70
  </div>
71
- <script type="text/html" id='tmpl-qlwapp-modal-window'>
72
- <?php include_once('modals/contact-modal.php'); ?>
73
- </script>
1
  <div class="wrap about-wrap full-width-layout qlwrap">
2
  <form id="qlwapp_contacts_form" method="post" >
3
+ <div class="submit qlwapp-premium-field">
4
  <?php submit_button(esc_html__('+ Contact', 'wp-whatsapp-chat'), 'secondary', 'submit', false, array('id' => 'qlwapp_contact_add')); ?>
5
  <?php submit_button(esc_html__('Save reorder', 'wp-whatsapp-chat'), 'primary', 'submit', false, array('id' => 'qlwapp_contact_order', 'disabled' => 'disabled')); ?>
6
  <span class="settings-save-status">
7
  <span class="spinner"></span>
8
  <span class="saved"><?php esc_html_e('Saved successfully!'); ?></span>
9
+ </span>
10
+ </div>
11
+
12
  <table id="qlwapp_contacts_table" class="form-table widefat striped">
13
  <thead>
14
  <tr>
15
+ <th style="text-align: center;"><?php esc_html_e('Order', 'wp-whatsapp-chat'); ?></th>
16
+ <th style="width:1%"><?php esc_html_e('Avatar', 'wp-whatsapp-chat'); ?></th>
17
  <th><?php esc_html_e('Phone', 'wp-whatsapp-chat'); ?></th>
18
  <th><?php esc_html_e('Name', 'wp-whatsapp-chat'); ?></th>
19
+ <th style="width:1%"><?php esc_html_e('Label', 'wp-whatsapp-chat'); ?></th>
20
+ <th style="width:1%"><?php esc_html_e('Chat', 'wp-whatsapp-chat'); ?></th>
21
  <th><?php esc_html_e('Message', 'wp-whatsapp-chat'); ?></th>
22
  <th><?php esc_html_e('Availability', 'wp-whatsapp-chat'); ?></th>
23
  <th><?php esc_html_e('Timezone', 'wp-whatsapp-chat'); ?></th>
27
  <tbody class="ui-sortable">
28
  <?php if (count($contacts)): ?>
29
  <?php
30
+ $position = 1;
31
  foreach ($contacts as $id => $c) {
32
  ?>
33
+ <tr class="<?php if ($position > 1) echo 'qlwapp-premium-field'; ?>" data-contact_id="<?php echo esc_attr($id) ?>" data-contact_position="<?php echo esc_attr($position) ?>">
34
  <td class="sort ui-sortable-handle">
35
  <div class="wc-item-reorder-nav">
36
+ <button type="button" class="wc-move-up " tabindex="-1" aria-hidden="true" aria-label="<?php ///echo ///esc_attr(sprintf(__('Move the "%s" payment method up', 'wp-whatsapp-chat'), $contact['label'])); ?>"><?php esc_html_e('Move up', 'wp-whatsapp-chat'); ?></button>
37
+ <button type="button" class="wc-move-down" tabindex="0" aria-hidden="false" aria-label="<?php ///echo esc_attr(sprintf(__('Move the "%s" payment method down', 'wp-whatsapp-chat'), $field['label'])); ?>"><?php esc_html_e('Move down', 'wp-whatsapp-chat'); ?></button>
38
+ <input type="hidden" name="contact_id[]" value="<?php echo esc_attr($id); ?>">
39
  </div>
40
  </td>
41
  <td>
42
  <img class="qlwapp-avatar" src="<?php echo $c['avatar']; ?>" alt="" width="50" height="50" /> </td>
43
+ <td><?php echo esc_html($c['phone']); ?></td>
44
+ <td><?php echo esc_html($c['firstname'] . ', ' . $c['lastname']); ?> </td>
45
  <td><?php echo $c['label']; ?></td>
46
  <td>
47
+ <i class="dashicons dashicons-<?php echo ($c['chat'] ? 'yes' : 'no'); ?>"></i>
 
 
 
 
 
48
  </td>
49
  <td><?php echo wp_trim_words(substr($c['message'], 0, 36), 3); ?></td>
50
  <td><?php echo $c['timefrom']; ?> to <?php echo $c['timeto']; ?></td>
51
  <td><?php echo $c['timezone']; ?></td>
52
+ <td>
53
+ <a class="qlwapp_settings_edit button" aria-label="<?php esc_html_e('Edit checkout field', 'wp-whatsapp-chat'); ?>" href="javascript:;"><?php esc_html_e('Edit'); ?></a>
54
  <a class="qlwapp_settings_delete" aria-label="<?php esc_html_e('Edit checkout field', 'wp-whatsapp-chat'); ?>" href="javascript:;"><?php esc_html_e('Delete'); ?></a>
 
55
  </td>
56
  </tr>
57
  <?php
58
+ $position++;
59
  }
60
  ?>
61
  </tbody>
64
  <?php wp_nonce_field('qlwapp_delete_contact', 'qlwapp_delete_contact_nonce'); ?>
65
  </form>
66
  </div>
67
+
68
+ <?php include_once('modals/template-scripts.php'); ?>
 
includes/view/backend/pages/display.php CHANGED
@@ -16,66 +16,63 @@
16
  <tr>
17
  <th scope="row"><?php esc_html_e('Target', 'wp-whatsapp-chat'); ?></th>
18
  <td>
19
- <select multiple="multiple" name="target[]" style="width:350px" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr('Posts', 'wp-whatsapp-chat'); ?>" class="qlwapp-select2">
20
- <option value="none" <?php echo selected(true, in_array('none', (array) $display['target'])); ?>><?php echo esc_html__('Exclude from all', 'wp-whatsapp-chat'); ?></option>
21
- <option value="home" <?php echo selected(true, in_array('home', (array) $display['target'])); ?>><?php echo esc_html__('Home', 'wp-whatsapp-chat'); ?></option>
22
- <option value="blog" <?php echo selected(true, in_array('blog', (array) $display['target'])); ?>><?php echo esc_html__('Blog', 'wp-whatsapp-chat'); ?></option>
23
- <option value="search" <?php echo selected(true, in_array('search', (array) $display['target'])); ?>><?php echo esc_html__('Search', 'wp-whatsapp-chat'); ?></option>
24
- <option value="error" <?php echo selected(true, in_array('error', (array) $display['target'])); ?>><?php echo esc_html('404'); ?></option>
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  </select>
26
  <p class="description hidden"><?php esc_html_e('If you select an option all the other will be excluded', 'wp-whatsapp-chat'); ?></p>
27
  </td>
28
  </tr>
29
  <?php
30
- foreach (get_post_types(array('public' => true, 'show_in_nav_menus' => true), 'objects') as $type) {
31
- if (!isset($display[$type->name])) {
32
- $display[$type->name] = array();
33
  }
34
-
35
  if ($count = wp_count_posts($type->name)) {
36
  ?>
37
  <tr class="qlwapp-premium-field">
38
  <th scope="row"><?php esc_html_e(ucwords($type->label)); ?></th>
39
  <td>
40
- <!-- <select style="width:80px" class="qlwapp-select2">
41
- <option value="include">Include</option>
42
- <option value="include">Exclude</option>
43
- </select>-->
44
- <select id="qlwapp_select2_<?php echo esc_attr($type->name); ?>" multiple="multiple" name="<?php echo esc_attr($type->name . '[]'); ?>" style="width:350px" data-placeholder="<?php printf(esc_html__('Select for %s&hellip;', 'wp-whatsapp-chat'), $type->label); ?>" aria-label="<?php echo esc_attr($type->label); ?>" data-name="<?php echo esc_attr($type->name); ?>" class="qlwapp-select2-ajax">
45
- <option value="none" <?php echo selected(true, in_array('none', (array) $display[$type->name])); ?>><?php echo esc_html__('Exclude from all', 'wp-whatsapp-chat'); ?></option>
46
- <!--<option value="archive" <?php echo selected(true, in_array('archive', (array) $display[$type->name])); ?>><?php echo esc_html__('Archive', 'wp-whatsapp-chat'); ?></option>-->
 
47
  <?php
48
- // Print selected posts
49
  // -------------------------------------------------------------
50
- if (isset($display[$type->name]) && count($display[$type->name])) {
51
- foreach ($display[$type->name] as $post_id) {
52
-
53
  if (!$post = get_post($post_id)) {
54
  //backward compatibility for $post->post_name
55
  $post = get_page_by_path($post_id);
56
  }
57
-
58
  if (isset($post->ID)) {
59
- ?>
60
  <option value="<?php echo esc_attr($post->ID); ?>" selected="selected"><?php echo esc_html(mb_substr($post->post_title, 0, 49)); ?></option>
61
  <?php
62
  }
63
  }
64
  }
65
- // Print firsts 10 posts
66
- // -------------------------------------------------------------
67
- /* if ($count->publish < 11) {
68
- $posts = get_posts(array(
69
- 'post_type' => $type->name,
70
- 'post_status' => 'publish',
71
- 'numberposts' => 10
72
- ));
73
- foreach ($posts as $post) {
74
- ?>
75
- <option value="<?php echo esc_attr($post->post_name); ?>" <?php echo selected(true, in_array($post->post_name, (array) $display[$type->name])); ?>><?php echo esc_html($post->post_title); ?></option>
76
- <?php
77
- }
78
- } */
79
  ?>
80
  </select>
81
  <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
@@ -86,14 +83,13 @@
86
  }
87
  ?>
88
  <?php
89
- foreach ($taxonomies = get_taxonomies(array('public' => true), 'objects') as $taxonomy) {
90
-
91
- if (!isset($display[$taxonomy->name])) {
92
- $display[$taxonomy->name] = array();
93
  }
94
 
95
  $terms = get_terms(array(
96
- 'taxonomy' => $taxonomy->name,
97
  'hide_empty' => false,
98
  ));
99
 
@@ -102,13 +98,23 @@
102
  <tr>
103
  <th scope="row"><?php esc_html_e(ucwords($taxonomy->label)); ?></th>
104
  <td>
105
- <select multiple="multiple" name="<?php echo esc_attr($taxonomy->name . '[]'); ?>" style="width:350px" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr($taxonomy->label); ?>" class="qlwapp-select2">
106
- <option value="none" <?php echo selected(true, in_array('none', (array) $display[$taxonomy->name])); ?>><?php echo esc_html__('Exclude from all', 'wp-whatsapp-chat'); ?></option>
 
 
 
 
 
 
 
 
 
 
 
107
  <?php
108
  foreach ($terms as $term) {
109
- //backward compatibility for $term->name
110
- ?>
111
- <option value="<?php echo esc_attr($term->term_id); ?>" <?php echo selected(true, in_array($term->term_id, (array) $display[$taxonomy->name]) || in_array($term->name, (array) $display[$taxonomy->name])); ?>><?php echo esc_html($term->name); ?></option>
112
  <?php
113
  }
114
  ?>
16
  <tr>
17
  <th scope="row"><?php esc_html_e('Target', 'wp-whatsapp-chat'); ?></th>
18
  <td>
19
+ <select style="width:80px" name="target[include]" class="qlwapp-select2">
20
+ <option value="1" <?php if (isset($display['target']['include']) && $display['target']['include'] === '1') echo 'selected'; ?> >Include</option>
21
+ <option value="0" <?php if (isset($display['target']['include']) && $display['target']['include'] === '0') echo 'selected'; ?> >Exclude</option>
22
+ </select>
23
+ <?php
24
+ $ids = [''];
25
+ if (isset($display['target']['ids'])) {
26
+ $ids = (array) $display['target']['ids'];
27
+ }
28
+ ?>
29
+
30
+
31
+
32
+ <select multiple="multiple" name="target[ids][]" style="width:350px" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr('Posts', 'wp-whatsapp-chat'); ?>" class="qlwapp-select2">
33
+ <option value="all" <?php echo selected(true, in_array('all', $ids)); ?>><?php echo esc_html__('All', 'wp-whatsapp-chat'); ?></option>
34
+ <option value="home" <?php echo selected(true, in_array('home', $ids)); ?>><?php echo esc_html__('Home', 'wp-whatsapp-chat'); ?></option>
35
+ <option value="blog" <?php echo selected(true, in_array('blog', $ids)); ?>><?php echo esc_html__('Blog', 'wp-whatsapp-chat'); ?></option>
36
+ <option value="search" <?php echo selected(true, in_array('search', $ids)); ?>><?php echo esc_html__('Search', 'wp-whatsapp-chat'); ?></option>
37
+ <option value="error" <?php echo selected(true, in_array('error', $ids)); ?>><?php echo esc_html('404'); ?></option>
38
  </select>
39
  <p class="description hidden"><?php esc_html_e('If you select an option all the other will be excluded', 'wp-whatsapp-chat'); ?></p>
40
  </td>
41
  </tr>
42
  <?php
43
+ foreach ($post_types as $type) {
44
+ if (!isset($display['entries'][$type->name])) {
45
+ $display['entries'][$type->name] = array();
46
  }
 
47
  if ($count = wp_count_posts($type->name)) {
48
  ?>
49
  <tr class="qlwapp-premium-field">
50
  <th scope="row"><?php esc_html_e(ucwords($type->label)); ?></th>
51
  <td>
52
+ <select style="width:80px" name="entries[<?php echo esc_attr($type->name); ?>][include]" class="qlwapp-select2">
53
+ <option value="1" <?php if (isset($display['entries'][$type->name]['include']) && $display['entries'][$type->name]['include'] === '1') echo 'selected'; ?> >Include</option>
54
+ <option value="0" <?php if (isset($display['entries'][$type->name]['include']) && $display['entries'][$type->name]['include'] === '0') echo 'selected'; ?> >Exclude</option>
55
+ </select>
56
+
57
+ <select id="qlwapp_select2_<?php echo esc_attr($type->name); ?>" multiple="multiple" name="entries[<?php echo esc_attr($type->name); ?>][ids][]" style="width:350px" data-placeholder="<?php printf(esc_html__('Select for %s&hellip;', 'wp-whatsapp-chat'), $type->label); ?>" aria-label="<?php echo esc_attr($type->label); ?>" data-name="<?php echo esc_attr($type->name); ?>" class="qlwapp-select2-search">
58
+ <option value="all" <?php if (isset($display['entries'][$type->name]['ids'])) echo selected(true, in_array('all', (array) $display['entries'][$type->name]['ids'])); ?>><?php echo esc_html__('All', 'wp-whatsapp-chat'); ?></option>
59
+ <!--<option value="archive" <?php // echo selected(true, in_array('archive', (array) $display['entries'][$type->name]['ids'])); ?>><?php // echo esc_html__('Archive', 'wp-whatsapp-chat'); ?></option>-->
60
  <?php
 
61
  // -------------------------------------------------------------
62
+ // Print selected posts
63
+ if (isset($display['entries'][$type->name]['ids']) && count($display['entries'][$type->name]['ids'])) {
64
+ foreach ($display['entries'][$type->name]['ids'] as $post_id) {
65
  if (!$post = get_post($post_id)) {
66
  //backward compatibility for $post->post_name
67
  $post = get_page_by_path($post_id);
68
  }
 
69
  if (isset($post->ID)) {
70
+ ?>
71
  <option value="<?php echo esc_attr($post->ID); ?>" selected="selected"><?php echo esc_html(mb_substr($post->post_title, 0, 49)); ?></option>
72
  <?php
73
  }
74
  }
75
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  ?>
77
  </select>
78
  <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
83
  }
84
  ?>
85
  <?php
86
+ foreach ($taxonomies as $key => $taxonomy) {
87
+ if (!isset($display['taxonomies'][$key])) {
88
+ $display['taxonomies'][$key] = array();
 
89
  }
90
 
91
  $terms = get_terms(array(
92
+ 'taxonomy' => $key,
93
  'hide_empty' => false,
94
  ));
95
 
98
  <tr>
99
  <th scope="row"><?php esc_html_e(ucwords($taxonomy->label)); ?></th>
100
  <td>
101
+
102
+ <select style="width:80px" name="taxonomies[<?php echo esc_attr($key); ?>][include]" class="qlwapp-select2">
103
+ <option value="1" <?php if (isset($display['taxonomies'][$key]['include']) && $display['taxonomies'][$key]['include'] === '1') echo 'selected'; ?> >Include</option>
104
+ <option value="0" <?php if (isset($display['taxonomies'][$key]['include']) && $display['taxonomies'][$key]['include'] === '0') echo 'selected'; ?> >Exclude</option>
105
+ </select>
106
+ <?php
107
+ $ids = [''];
108
+ if (isset($display['taxonomies'][$key]['ids'])) {
109
+ $ids = (array) $display['taxonomies'][$key]['ids'];
110
+ }
111
+ ?>
112
+ <select multiple="multiple" name="taxonomies[<?php echo esc_attr($key); ?>][ids][]" style="width:350px" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr($taxonomy->label); ?>" class="qlwapp-select2">
113
+ <option value="all" <?php echo selected(true, in_array('all', $ids)); ?>><?php echo esc_html__('All', 'wp-whatsapp-chat'); ?></option>
114
  <?php
115
  foreach ($terms as $term) {
116
+ ?>
117
+ <option value="<?php echo esc_attr($term->term_id); ?>" <?php echo selected(true, in_array($term->term_id, $ids) || in_array($term->name, $ids)); ?>><?php echo esc_html($term->name); ?></option>
 
118
  <?php
119
  }
120
  ?>
includes/view/backend/pages/modals/contact-modal.php DELETED
@@ -1,127 +0,0 @@
1
- <div class="media-modal-backdrop">&nbsp;</div>
2
- <div tabindex="0" id="<?php echo esc_attr(QLWAPP_DOMAIN . '_modal'); ?>" class="media-modal wp-core-ui upload-php qlwapp-modal-contact" role="dialog" aria-modal="true" aria-labelledby="media-frame-title">
3
- <div class="media-modal-content" role="document">
4
- <form class="media-modal-form" method="POST" data-contact_id="{{data.id}}">
5
- <# if ( data.id != undefined ) { #>
6
- <input type="hidden" name="id" value="{{data.id}}" />
7
- <input type="hidden" name="order" value="{{data.order}}" />
8
- <# } #>
9
- <div class="edit-attachment-frame mode-select hide-menu hide-router">
10
- <div class="edit-media-header ">
11
- <# if (data.id != undefined ) { #>
12
- <button type="button" class="media-modal-prev left dashicons <# if ( data.order == 1 ) { #>disabled<# } #>"><span class="screen-reader-text"><?php esc_html_e('Edit previous media item'); ?></span></button>
13
- <button type="button" class="media-modal-next right dashicons <# if ( data.order == <?php echo esc_attr(count($contacts)); ?> ) { #>disabled<# } #>"><span class="screen-reader-text"><?php esc_html_e('Edit next media item'); ?></span></button>
14
- <# } #>
15
- <button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text"><?php esc_html_e('Close dialog'); ?></span></span></button>
16
- </div>
17
- <div class="media-frame-title">
18
- <h1><?php esc_html_e('Edit contact', 'wp-whatsapp-chat'); ?> #<# if ( data.id != undefined ) { #>{{data.id}}<# } else { #><?php echo esc_html_e('new', 'wp-whatsapp-chat'); ?><# } #></h1>
19
- </div>
20
- <div class="media-frame-content" style="bottom:61px;">
21
- <div class="attachment-details">
22
- <div class="attachment-media-view landscape" style="overflow: hidden;">
23
- <table class="widefat">
24
- <tr>
25
- <th><?php esc_html_e('Firstname', 'wp-whatsapp-chat'); ?></th>
26
- <td><input type="text" id="cfirstname" name="firstname" placeholder="<?php echo esc_html($contact_args['firstname']); ?>" value="{{data.firstname}}" /></td>
27
- <th><?php esc_html_e('Lastname', 'wp-whatsapp-chat'); ?></th>
28
- <td><input type="text" id="clastname" name="lastname" placeholder="<?php echo esc_html($contact_args['lastname']); ?>" value="{{data.lastname}}" /></td>
29
- </tr>
30
- <tr>
31
- <th><?php esc_html_e('Phone', 'wp-whatsapp-chat'); ?></td><td><input type="text" id="cphone" name="phone" placeholder="<?php echo esc_html($contact_args['phone']); ?>" value="{{data.phone}}" required="required" pattern="\d[0-9]{6,15}$"/></th>
32
- <td><?php esc_html_e('Label', 'wp-whatsapp-chat'); ?></td><td><input type="text" id="clabel" name="label" placeholder="<?php echo esc_html($contact_args['label']); ?>" value="{{data.label}}" /></td>
33
- </tr>
34
- </table>
35
- <table class="widefat">
36
- <tr>
37
- <th><?php esc_html_e('From', 'wp-whatsapp-chat'); ?></th>
38
- <td class="qlwapp-premium-field">
39
- <input type="time" name="timefrom" placeholder="<?php echo esc_html($contact_args['timefrom']); ?>" value="{{data.timefrom}}" />
40
- <?php esc_html_e('To', 'wp-whatsapp-chat'); ?>
41
- <input type="time" name="timeto" placeholder="<?php echo esc_html($contact_args['timeto']); ?>" value="{{data.timeto}}" />
42
- </td>
43
- <!-- <td><?php esc_html_e('Time is over', 'wp-whatsapp-chat'); ?></td>
44
- <td class="qlwapp-premium-field">
45
- <select id="ctimeout" name="<?php echo esc_attr(QLWAPP_DOMAIN . '[contacts][' . $id . '][timeout]'); ?>">
46
- <option value="readonly" ><?php esc_html_e('Show the field as read only', 'wp-whatsapp-chat'); ?></option>
47
- <option value="disabled" > <?php esc_html_e('Do not show the field', 'wp-whatsapp-chat'); ?></option>
48
- </select>
49
- <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
50
- </td> -->
51
- <th><?php esc_html_e('Timezone', 'wp-whatsapp-chat'); ?></th>
52
- <td class="qlwapp-premium-field">
53
- <select name="timezone" aria-describedby="timezone-description">
54
- <?php echo preg_replace('/(.*)value="([^"]*)"(.*)/', '$1value="$2"<# if ( data.timezone == "$2" ) { #> selected="selected"<# } #> $3', wp_timezone_choice('__return_null')); ?>
55
- </select>
56
- </td>
57
- </tr>
58
- </table>
59
- <table class="widefat">
60
- <tr>
61
- <th><?php esc_html_e('Chat', 'wp-whatsapp-chat'); ?></th>
62
- <td class="qlwapp-premium-field">
63
- <p>
64
- <label><input type="radio" class="media-modal-change" name="chat" value="1" <# if(data.chat) {#> checked <#}#> /><?php esc_html_e('Enabled', 'wp-whatsapp-chat'); ?></label>
65
- <label><input type="radio" class="media-modal-change" name="chat" value="0" <# if(data.chat == false) {#> checked <#}#> /><?php esc_html_e('Disabled', 'wp-whatsapp-chat'); ?></label>
66
- </p>
67
- <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
68
- </td>
69
- </tr>
70
- <tr class="qlwapp-premium-field">
71
- <th><?php esc_html_e('Message', 'wp-whatsapp-chat'); ?></th>
72
- <td colspan="2">
73
- <textarea style="width:100%" name="message" <# if(data.chat == false) { #>readonly="readonly"<# } #>>{{ _.escapeHtml(data.message)}}</textarea>
74
- </td>
75
- <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
76
- </tr>
77
- </table>
78
- </div>
79
-
80
- <div class="attachment-info">
81
-
82
- <span class="settings-save-status">
83
- <span class="spinner"></span>
84
- <span class="saved"><?php esc_html_e('Saved.'); ?></span>
85
- </span>
86
-
87
- <div class="details">
88
- <div class="filename"><strong><?php esc_html_e('Contact id', 'wp-whatsapp-chat'); ?>:</strong> {{data.id}}</div>
89
- </div>
90
-
91
- <div class="settings">
92
- <div class="upload">
93
- <img id="cavatar-img" class="qlwapp-avatar" data-src="{{data.avatar}}" src="{{data.avatar}}" width="150" height="150"/>
94
- <div>
95
- <input type="hidden" name="avatar" id="cavatar" value="{{data.avatar}}" />
96
- <button type="button" class="upload_image_button button"><?php esc_html_e('Upload', 'wp-whatsapp-chat'); ?></button>
97
- <button type="button" class="remove_image_button button">&times;</button>
98
- </div>
99
- </div>
100
- </div>
101
-
102
- <div class="actions">
103
- <a target="_blank" href="<?php echo QLWAPP_PURCHASE_URL; ?>"><?php esc_html_e('Premium', 'wp-whatsapp-chat'); ?></a> |
104
- <a target="_blank" href="<?php echo QLWAPP_DOCUMENTATION_URL; ?>"><?php esc_html_e('Documentation', 'wp-whatsapp-chat'); ?></a>
105
- </div>
106
-
107
- </div>
108
- </div>
109
- </div>
110
- <div class="media-frame-toolbar" style="left:0;">
111
- <div class="media-toolbar">
112
- <div class="media-toolbar-secondary"></div>
113
- <div class="media-toolbar-primary search-form">
114
- <button type="submit" id="submit" class="media-modal-submit button button-primary media-button button-large" disabled="disabled"><?php esc_html_e('Save'); ?></button>
115
- <button type="button" class="media-modal-close button button-secondary media-button button-large" style="
116
- height: auto;
117
- float: none;
118
- position: inherit;
119
- padding: inherit;
120
- "><?php esc_html_e('Close'); ?></button>
121
- </div>
122
- </div>
123
- </div>
124
- </div>
125
- </form>
126
- </div>
127
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/view/backend/pages/modals/contact/modal-contact.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!--qlwapp_modal-->
2
+ <div class="media-modal-backdrop">&nbsp;</div>
3
+ <div tabindex="0" id="<?php echo esc_attr(QLWAPP_DOMAIN . '_modal'); ?>" class="media-modal wp-core-ui upload-php qlwapp-modal-contact processing" role="dialog" aria-modal="true" aria-labelledby="media-frame-title">
4
+ <div class="media-modal-content" role="document">
5
+ <form class="media-modal-form" method="POST" data-contact_id="{{data.id}}">
6
+ <# if ( data.id != undefined ) { #>
7
+ <input type="hidden" name="id" value="{{data.id}}" />
8
+ <input type="hidden" name="order" value="{{data.order}}" />
9
+ <# } #>
10
+ <div class="edit-attachment-frame mode-select hide-menu hide-router">
11
+ <div id="panel-header" > </div>
12
+ <div class="media-frame-content" style="bottom:61px;">
13
+ <div class="attachment-details">
14
+ <div class="attachment-media-view landscape" style="height:100%;">
15
+ <div class="panel-wrap" style="height:100%;">
16
+ <div id="panel-tabs"></div>
17
+ <div id="panel-container" style="height: 100%;overflow-x: hidden;">
18
+ <div id="panel-contact"></div>
19
+ <div id="panel-visibility"></div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ <div class="attachment-info">
24
+ <div id="panel-info" ></div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <div class="media-frame-toolbar" style="left:0;">
29
+ <div class="media-toolbar">
30
+ <div id="panel-footer" ></div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </form>
35
+ </div>
36
+ </div>
includes/view/backend/pages/modals/contact/panel-contact-chat.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="options_group qlwapp-premium-field">
2
+ <p class="form-field">
3
+ <label><?php esc_html_e('Chat', 'wp-whatsapp-chat'); ?></label>
4
+ <input type="radio" class="media-modal-change media-modal-subview" name="chat" value="1" <# if(data.chat) {#> checked <#}#> />
5
+ <label><?php esc_html_e('Enabled', 'wp-whatsapp-chat'); ?></label>
6
+ <input type="radio" class="media-modal-change media-modal-subview" name="chat" value="0" <# if(data.chat == false) {#> checked <#}#> />
7
+ <label><?php esc_html_e('Disabled', 'wp-whatsapp-chat'); ?></label>
8
+ <span style="float: right;" class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></span>
9
+ </p>
10
+ </div>
11
+ <div class="options_group qlwapp-premium-field">
12
+ <p class="form-field">
13
+ <label><?php esc_html_e('Message', 'wp-whatsapp-chat'); ?></label>
14
+ <textarea style="width:100%" name="message" <# if(data.chat == false) { #>readonly="readonly"<# } #>>{{ _.escapeHtml(data.message)}}</textarea>
15
+ </p>
16
+ </div>
includes/view/backend/pages/modals/contact/panel-contact.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="tab_panel_contact" class="panel qlwapp_options_panel " >
2
+ <div class="options_group">
3
+ <p class="form-field" style="
4
+ width: calc(50% - 30px);
5
+ float: left;
6
+ ">
7
+ <label><?php esc_html_e('Firstname', 'wp-whatsapp-chat'); ?></label>
8
+ <input type="text" name="firstname" placeholder="<?php echo esc_html($contact_args['firstname']); ?>" value="{{data.firstname}}" />
9
+ </p>
10
+ <p class="form-field" style="
11
+ width: calc(50% - 30px);
12
+ float: right;
13
+ ">
14
+ <label><?php esc_html_e('Lastname', 'wp-whatsapp-chat'); ?></label>
15
+ <input type="text" name="lastname" placeholder="<?php echo esc_html($contact_args['lastname']); ?>" value="{{data.lastname}}" />
16
+ </p>
17
+ </div>
18
+ <div class="options_group">
19
+ <p class="form-field" style="
20
+ width: calc(50% - 30px);
21
+ float: left;
22
+ ">
23
+ <label><?php esc_html_e('Phone', 'wp-whatsapp-chat'); ?></label>
24
+ <input type="text" name="phone" placeholder="<?php echo esc_html($contact_args['phone']); ?>" value="{{data.phone}}" required="required" pattern="\d[0-9]{6,15}$"/>
25
+ </p>
26
+ <p class="form-field" style="
27
+ width: calc(50% - 30px);
28
+ float: right;
29
+ ">
30
+ <?php esc_html_e('Label', 'wp-whatsapp-chat'); ?>
31
+ <input type="text" name="label" placeholder="<?php echo esc_html($contact_args['label']); ?>" value="{{data.label}}" />
32
+ </p>
33
+ </div>
34
+ <div class="options_group">
35
+ <p class="form-field" style="
36
+ width: calc(50% - 30px);
37
+ float: left;
38
+ ">
39
+ <label style="display: block"><?php esc_html_e('Schedule', 'wp-whatsapp-chat'); ?></label>
40
+ <input type="time" name="timefrom" placeholder="<?php echo esc_html($contact_args['timefrom']); ?>" value="{{data.timefrom}}" />
41
+ <?php esc_html_e('To', 'wp-whatsapp-chat'); ?>
42
+ <input type="time" name="timeto" placeholder="<?php echo esc_html($contact_args['timeto']); ?>" value="{{data.timeto}}" />
43
+ <!-- <?php esc_html_e('Time is over', 'wp-whatsapp-chat'); ?>
44
+
45
+ <select name="<?php echo esc_attr(QLWAPP_DOMAIN . '[contacts][' . $id . '][timeout]'); ?>">
46
+ <option value="readonly" ><?php esc_html_e('Show the field as read only', 'wp-whatsapp-chat'); ?></option>
47
+ <option value="disabled" > <?php esc_html_e('Do not show the field', 'wp-whatsapp-chat'); ?></option>
48
+ </select>
49
+ <p class="description hidden"><small><?php esc_html_e('This is a premium feature', 'wp-whatsapp-chat'); ?></small></p>
50
+ -->
51
+ </p>
52
+ <p class="form-field" style="
53
+ width: calc(50% - 30px);
54
+ float: right;
55
+ ">
56
+ <label><?php esc_html_e('Timezone', 'wp-whatsapp-chat'); ?></label>
57
+ <select name="timezone" aria-describedby="timezone-description">
58
+ <?php echo preg_replace('/(.*)value="([^"]*)"(.*)/', '$1value="$2"<# if ( data.timezone == "$2" ) { #> selected="selected"<# } #> $3', wp_timezone_choice('__return_null')); ?>
59
+ </select>
60
+ </p>
61
+ </div>
62
+ <div id="subpanel-contact-chat"></div>
63
+ </div>
includes/view/backend/pages/modals/contact/panel-footer.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="media-toolbar-secondary"></div>
2
+ <div class="media-toolbar-primary search-form">
3
+ <button id="submit" type="submit" class="media-modal-submit button button-primary media-button button-large" disabled="disabled"><?php esc_html_e('Save'); ?></button>
4
+
5
+ <button type="button" class="media-modal-close button button-secondary media-button button-large" style="
6
+ height: auto;
7
+ float: none;
8
+ position: inherit;
9
+ padding: inherit;
10
+ "><?php esc_html_e('Close'); ?></button>
11
+ </div>
includes/view/backend/pages/modals/contact/panel-header.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <div class="edit-media-header ">
2
+ <# if (data.id != undefined ) { #>
3
+ <button type="button" class="media-modal-prev left dashicons qlwapp-premium-field" <# if ( data.order == 1 ) { #>disabled="disabled"<# } #>><span class="screen-reader-text"><?php esc_html_e('Edit previous media item'); ?></span></button>
4
+ <button type="button" class="media-modal-next right dashicons qlwapp-premium-field" <# if ( data.order == <?php echo esc_attr(count($contacts)); ?> ) { #>disabled="disabled"<# } #>><span class="screen-reader-text"><?php esc_html_e('Edit next media item'); ?></span></button>
5
+ <# } #>
6
+ <button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text"><?php esc_html_e('Close dialog'); ?></span></span></button>
7
+ </div>
8
+ <div class="media-frame-title">
9
+ <h1><?php esc_html_e('Edit Contact:', 'wp-whatsapp-chat'); ?> <# if ( data.id != undefined ) { #>{{data.firstname}} {{data.lastname}}<# } else { #><?php echo esc_html_e('new', 'wp-whatsapp-chat'); ?><# } #></h1>
10
+ </div>
includes/view/backend/pages/modals/contact/panel-info.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <span class="settings-save-status">
3
+ <span class="spinner"></span>
4
+ <span class="saved"><?php esc_html_e('Saved.'); ?></span>
5
+ </span>
6
+
7
+ <div class="details">
8
+ <div class="filename"><strong><?php esc_html_e('Contact id', 'wp-whatsapp-chat'); ?>:</strong> {{data.id}}</div>
9
+ </div>
10
+
11
+ <div class="settings">
12
+ <div class="upload">
13
+ <img id="cavatar-img" class="qlwapp-avatar" data-src="{{data.avatar}}" src="{{data.avatar}}" width="150" height="150"/>
14
+ <div>
15
+ <input type="hidden" name="avatar" id="cavatar" value="{{data.avatar}}" />
16
+ <button type="button" class="upload_image_button button"><?php esc_html_e('Upload', 'wp-whatsapp-chat'); ?></button>
17
+ <button type="button" class="remove_image_button button">&times;</button>
18
+ </div>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="actions">
23
+ <a target="_blank" href="<?php echo QLWAPP_PURCHASE_URL; ?>"><?php esc_html_e('Premium', 'wp-whatsapp-chat'); ?></a> |
24
+ <a target="_blank" href="<?php echo QLWAPP_DOCUMENTATION_URL; ?>"><?php esc_html_e('Documentation', 'wp-whatsapp-chat'); ?></a>
25
+ </div>
includes/view/backend/pages/modals/contact/panel-tabs.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <ul class="qlwapp-tabs">
2
+ <li class="contact_options active">
3
+ <a href="#tab_panel_contact"><span><?php esc_html_e('Contact', 'wp-whatsapp-chat'); ?></span></a>
4
+ </li>
5
+ <li class="visibility_options">
6
+ <a href="#tab_panel_visibility"><span><?php esc_html_e('Visibility', 'wp-whatsapp-chat'); ?></span></a>
7
+ </li>
8
+ </ul>
includes/view/backend/pages/modals/contact/panel-visibility.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="tab_panel_visibility" class="panel qlwapp_options_panel hidden" style="display: none;">
2
+ <div class="options_group">
3
+ <p class="form-field">
4
+ <label><?php esc_html_e('Devices', 'wp-whatsapp-chat'); ?></label>
5
+ <select name="display[devices]" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr('Posts', 'wp-whatsapp-chat'); ?>" class="qlwapp-select2">
6
+ <option <# if ( data.display.devices == '<?php echo esc_attr('all'); ?>') { #>selected="selected"<# } #> value="<?php echo esc_attr('all'); ?>"><?php echo esc_html('all'); ?></option>
7
+ <option <# if ( data.display.devices == '<?php echo esc_attr('mobile'); ?>') { #>selected="selected"<# } #> value="<?php echo esc_attr('mobile'); ?>"><?php echo esc_html('mobile'); ?></option>
8
+ <option <# if ( data.display.devices == '<?php echo esc_attr('desktop'); ?>') { #>selected="selected"<# } #> value="<?php echo esc_attr('desktop'); ?>"><?php echo esc_html('desktop'); ?></option>
9
+ <option <# if ( data.display.devices == '<?php echo esc_attr('hide'); ?>') { #>selected="selected"<# } #> value="<?php echo esc_attr('hide'); ?>"><?php echo esc_html('hide'); ?></option>
10
+ </select>
11
+ </p>
12
+ </div>
13
+ <div class="options_group">
14
+ <p class="form-field">
15
+ <label><?php esc_html_e('Target', 'wp-whatsapp-chat'); ?></label>
16
+ <select name="display[target][include]" class="qlwapp-select2">
17
+ <option <# if ( data.display.target.include == 1 ) { #>selected="selected"<# } #> value="1"><?php esc_html_e('Include'); ?></option>
18
+ <option <# if ( data.display.target.include == 0 ) { #>selected="selected"<# } #> value="0"><?php esc_html_e('Exclude'); ?></option>
19
+ </select>
20
+
21
+ <select multiple="multiple" name="display[target][ids][]" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" aria-label="<?php echo esc_attr('Posts', 'wp-whatsapp-chat'); ?>" class="qlwapp-select2">
22
+ <option <# if ( _.contains(data.display.target.ids,'all') ) { #>selected="selected"<# } #> value="<?php echo esc_attr('all'); ?>"><?php echo esc_html('all'); ?></option>
23
+ <option <# if ( _.contains(data.display.target.ids,'home') ) { #>selected="selected"<# } #> value="<?php echo esc_attr('home'); ?>"><?php echo esc_html('home'); ?></option>
24
+ <option <# if (_.contains(data.display.target.ids, 'blog') ) { #>selected="selected"<# } #> value="<?php echo esc_attr('blog'); ?>"><?php echo esc_html('blog'); ?></option>
25
+ <option <# if ( _.contains(data.display.target.ids,'search')) { #>selected="selected"<# } #> value="<?php echo esc_attr('search'); ?>"><?php echo esc_html('search'); ?></option>
26
+ <option <# if ( _.contains(data.display.target.ids,'error') ) { #>selected="selected"<# } #> value="<?php echo esc_attr('error'); ?>"><?php echo esc_html('error'); ?></option>
27
+ </select>
28
+ <span class="description hidden"><?php esc_html_e('If you select an option all the other will be excluded', 'wp-whatsapp-chat'); ?></span>
29
+ </p>
30
+ </div>
31
+ <?php foreach ($contact_entries as $key => $entry) : ?>
32
+ <div class="options_group qlwapp-premium-field">
33
+ <p class="form-field">
34
+ <label><?php esc_html_e(ucwords($entry->label)); ?></label>
35
+ <select name="display[entries][<?php echo esc_attr($key); ?>][include]" class="qlwapp-select2">
36
+ <option <# if ( data.display.entries.<?php echo esc_attr($key); ?>.include == 1 ) { #>selected="selected"<# } #> value="1"><?php esc_html_e('Include'); ?></option>
37
+ <option <# if ( data.display.entries.<?php echo esc_attr($key); ?>.include == 0 ) { #>selected="selected"<# } #> value="0"><?php esc_html_e('Exclude'); ?></option>
38
+ </select>
39
+ <select multiple="multiple" id="qlwapp_select2_<?php echo esc_attr($key); ?>" data-placeholder="<?php echo esc_attr('Search by title&hellip;', 'wp-whatsapp-chat'); ?>" name="display[entries][<?php echo esc_attr($key); ?>][ids][]" data-name="<?php echo esc_attr($key); ?>" class="qlwapp-select2-search">
40
+ <# _.each(data.display.entries.<?php echo esc_attr($key); ?>.ids, function(title, id){ #>
41
+ <option selected="selected" value="{{id}}">{{title}} </option>
42
+ <# }); #>
43
+ </select>
44
+ </p>
45
+ </div>
46
+ <?php endforeach; ?>
47
+ <?php foreach ($contact_taxonomies as $key => $taxonomy) : ?>
48
+
49
+ <div class="options_group ">
50
+ <p class="form-field">
51
+ <label><?php esc_html_e(ucwords($taxonomy->label)); ?></label>
52
+ <select name="display[taxonomies][<?php echo esc_attr($key); ?>][include]" class="qlwapp-select2">
53
+ <option <# if ( data.display.taxonomies.<?php echo esc_attr($key); ?>.include == 1 ) { #>selected="selected"<# } #> value="1"><?php esc_html_e('Include', 'wp-whatsapp-chat'); ?></option>
54
+ <option <# if ( data.display.taxonomies.<?php echo esc_attr($key); ?>.include == 0 ) { #>selected="selected"<# } #> value="0"><?php esc_html_e('Exclude', 'wp-whatsapp-chat'); ?></option>
55
+ </select>
56
+ <select multiple="multiple" id="qlwapp_select2_<?php echo esc_attr($key); ?>" data-placeholder="<?php echo esc_attr('Choose target&hellip;', 'wp-whatsapp-chat'); ?>" name="display[taxonomies][<?php echo esc_attr($key); ?>][ids][]" data-name="<?php echo esc_attr($key); ?>" class="qlwapp-select2">
57
+ <?php
58
+ $terms = get_terms(array(
59
+ 'taxonomy' => $key,
60
+ 'hide_empty' => false,
61
+ ));
62
+ foreach ($terms as $term) :
63
+ ?>
64
+ <option value="<?php echo esc_attr($term->term_id); ?>" <# if ( data.display.taxonomies.<?php echo esc_attr($key); ?>.ids[<?php echo esc_attr($term->term_id); ?>]!= undefined ) { #>selected="selected"<# } #>><?php echo esc_html($term->name); ?></option>
65
+ <?php endforeach; ?>
66
+ </select>
67
+ </p>
68
+ </div>
69
+ <?php endforeach; ?>
70
+ </div>
includes/view/backend/pages/modals/template-scripts.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script type="text/html" id='tmpl-qlwapp-modal-window'>
2
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/modal-contact.php'); ?>
3
+ </script>
4
+
5
+ <script type="text/html" id='tmpl-subview-header'>
6
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-header.php'); ?>
7
+ </script>
8
+
9
+ <script type="text/html" id='tmpl-subview-tabs'>
10
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-tabs.php'); ?>
11
+ </script>
12
+
13
+ <script type="text/html" id='tmpl-subview-contact'>
14
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-contact.php'); ?>
15
+ </script>
16
+
17
+ <script type="text/html" id='tmpl-subview-contact-chat'>
18
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-contact-chat.php'); ?>
19
+ </script>
20
+
21
+ <script type="text/html" id='tmpl-subview-contact-info'>
22
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-info.php'); ?>
23
+ </script>
24
+
25
+ <script type="text/html" id='tmpl-subview-visibility'>
26
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-visibility.php'); ?>
27
+ </script>
28
+
29
+ <script type="text/html" id='tmpl-subview-footer'>
30
+ <?php include_once(QLWAPP_PLUGIN_DIR . 'includes/view/backend/pages/modals/contact/panel-footer.php'); ?>
31
+ </script>
includes/view/backend/pages/parts/header.php CHANGED
@@ -5,9 +5,9 @@
5
  <p class="about-text"><?php printf(esc_html__('Thanks for using %s! We will do our best to offer you the best and improved communication experience with your users.', 'wp-whatsapp-chat'), QLWAPP_PLUGIN_NAME); ?></p>
6
 
7
  <p class="about-text">
8
- <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_DEMO_URL, esc_html__('Purchase', 'wp-whatsapp-chat')); ?></a> |
9
  <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_DEMO_URL, esc_html__('Demo', 'wp-whatsapp-chat')); ?></a> |
10
- <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_DEMO_URL, esc_html__('Documentation', 'wp-whatsapp-chat')); ?></a>
11
  </p>
12
 
13
  <?php printf('<a href="%s" target="_blank"><div style="
@@ -23,7 +23,7 @@
23
  height: 40px;
24
  display: inline-block;
25
  width: 140px;
26
- " class="wp-badge">%s</div></a>', 'https://quadlayers.com/?utm_source=qlwapp_admin', plugins_url('/assets/img/quadlayers.jpg', QLWAPP_PLUGIN_FILE), esc_html__('QuadLayers', 'wp-whatsapp-chat')); ?>
27
 
28
  </div>
29
  <?php
5
  <p class="about-text"><?php printf(esc_html__('Thanks for using %s! We will do our best to offer you the best and improved communication experience with your users.', 'wp-whatsapp-chat'), QLWAPP_PLUGIN_NAME); ?></p>
6
 
7
  <p class="about-text">
8
+ <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_PURCHASE_URL, esc_html__('Purchase', 'wp-whatsapp-chat')); ?></a> |
9
  <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_DEMO_URL, esc_html__('Demo', 'wp-whatsapp-chat')); ?></a> |
10
+ <?php printf('<a href="%s" target="_blank">%s</a>', QLWAPP_DOCUMENTATION_URL, esc_html__('Documentation', 'wp-whatsapp-chat')); ?></a>
11
  </p>
12
 
13
  <?php printf('<a href="%s" target="_blank"><div style="
23
  height: 40px;
24
  display: inline-block;
25
  width: 140px;
26
+ " class="wp-badge">%s</div></a>', 'https://quadlayers.com/?utm_source=qlwapp_admin', plugins_url('/assets/backend/img/quadlayers.jpg', QLWAPP_PLUGIN_FILE), esc_html__('QuadLayers', 'wp-whatsapp-chat')); ?>
27
 
28
  </div>
29
  <?php
includes/view/backend/pages/premium.php CHANGED
@@ -31,14 +31,14 @@
31
  </div>
32
  </div>
33
  <div class="column">
34
- <img src="<?php echo plugins_url('/assets/img/box1.png', QLWAPP_PLUGIN_FILE); ?>">
35
  </div>
36
  </div>
37
  <br/>
38
  <br/>
39
  <div class="has-2-columns is-wider-right" style="max-width: 100%">
40
  <div class="column">
41
- <img src="<?php echo plugins_url('/assets/img/box2.png', QLWAPP_PLUGIN_FILE); ?>">
42
  </div>
43
  <div class="column">
44
  <br/>
31
  </div>
32
  </div>
33
  <div class="column">
34
+ <img src="<?php echo plugins_url('/assets/backend/img/box1.png', QLWAPP_PLUGIN_FILE); ?>">
35
  </div>
36
  </div>
37
  <br/>
38
  <br/>
39
  <div class="has-2-columns is-wider-right" style="max-width: 100%">
40
  <div class="column">
41
+ <img src="<?php echo plugins_url('/assets/backend/img/box2.png', QLWAPP_PLUGIN_FILE); ?>">
42
  </div>
43
  <div class="column">
44
  <br/>
includes/view/backend/pages/welcome.php CHANGED
@@ -31,7 +31,7 @@
31
  </div>
32
  </div>
33
  <div class="column">
34
- <img src="<?php echo plugins_url('/assets/img/box1.png', QLWAPP_PLUGIN_FILE); ?>">
35
  </div>
36
  </div>
37
  </div>
31
  </div>
32
  </div>
33
  <div class="column">
34
+ <img src="<?php echo plugins_url('/assets/backend/img/box1.png', QLWAPP_PLUGIN_FILE); ?>">
35
  </div>
36
  </div>
37
  </div>
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: quadlayers
3
  Donate link: https://quadlayers.com/portfolio/wordpress-whatsapp-chat/
4
  Tags: whatsapp, whatsapp button, whatsapp chat, whatsapp support, contact, click to chat, directly message whatsapp, floating whatsapp, whatsapp business, messaging, help desk
5
  Requires at least: 4.6
6
- Tested up to: 5.3.2
7
- Stable tag: 4.5.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
3
  Donate link: https://quadlayers.com/portfolio/wordpress-whatsapp-chat/
4
  Tags: whatsapp, whatsapp button, whatsapp chat, whatsapp support, contact, click to chat, directly message whatsapp, floating whatsapp, whatsapp business, messaging, help desk
5
  Requires at least: 4.6
6
+ Tested up to: 5.3.0
7
+ Stable tag: 4.5.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
template/box.php CHANGED
@@ -49,8 +49,5 @@
49
  <span class="qlwapp-text"><?php echo esc_html($button['text']); ?></span>
50
  <?php endif; ?>
51
  </a>
52
- <!--<?php //if ($button['developer'] === 'yes'): ?>
53
- <a class="qlwapp-developer" href="<?php echo esc_url(QLWAPP_DEMO_URL); ?>" target="_blank"><?php esc_html_e('Powered by QuadLayers'); ?></a>
54
- <?php //endif; ?>-->
55
  </div>
56
  </div>
49
  <span class="qlwapp-text"><?php echo esc_html($button['text']); ?></span>
50
  <?php endif; ?>
51
  </a>
 
 
 
52
  </div>
53
  </div>
wp-whatsapp-chat.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: WhatsApp Chat
5
  * Plugin URI: https://quadlayers.com/portfolio/wordpress-whatsapp-chat/
6
  * Description: WhatsApp Chat allows your visitors to contact you or your team through WhatsApp chat with a single click.
7
- * Version: 4.5.4
8
  * Author: QuadLayers
9
  * Author URI: https://quadlayers.com
10
  * License: GPL-2.0+
@@ -19,7 +19,7 @@ if (!defined('QLWAPP_PLUGIN_NAME')) {
19
  define('QLWAPP_PLUGIN_NAME', 'WhatsApp Chat');
20
  }
21
  if (!defined('QLWAPP_PLUGIN_VERSION')) {
22
- define('QLWAPP_PLUGIN_VERSION', '4.5.4');
23
  }
24
  if (!defined('QLWAPP_PLUGIN_FILE')) {
25
  define('QLWAPP_PLUGIN_FILE', __FILE__);
@@ -37,7 +37,7 @@ if (!defined('QLWAPP_WORDPRESS_URL')) {
37
  define('QLWAPP_WORDPRESS_URL', 'https://wordpress.org/plugins/wp-whatsapp-chat/');
38
  }
39
  if (!defined('QLWAPP_REVIEW_URL')) {
40
- define('QLWAPP_REVIEW_URL', 'https://wordpress.org/support/plugin/wp-whatsapp-chat/reviews/?filter=5#new-post');
41
  }
42
  if (!defined('QLWAPP_DEMO_URL')) {
43
  define('QLWAPP_DEMO_URL', 'https://quadlayers.com/portfolio/wordpress-whatsapp-chat/?utm_source=qlwapp_admin');
4
  * Plugin Name: WhatsApp Chat
5
  * Plugin URI: https://quadlayers.com/portfolio/wordpress-whatsapp-chat/
6
  * Description: WhatsApp Chat allows your visitors to contact you or your team through WhatsApp chat with a single click.
7
+ * Version: 4.5.5
8
  * Author: QuadLayers
9
  * Author URI: https://quadlayers.com
10
  * License: GPL-2.0+
19
  define('QLWAPP_PLUGIN_NAME', 'WhatsApp Chat');
20
  }
21
  if (!defined('QLWAPP_PLUGIN_VERSION')) {
22
+ define('QLWAPP_PLUGIN_VERSION', '4.5.5');
23
  }
24
  if (!defined('QLWAPP_PLUGIN_FILE')) {
25
  define('QLWAPP_PLUGIN_FILE', __FILE__);
37
  define('QLWAPP_WORDPRESS_URL', 'https://wordpress.org/plugins/wp-whatsapp-chat/');
38
  }
39
  if (!defined('QLWAPP_REVIEW_URL')) {
40
+ define('QLWAPP_REVIEW_URL', 'https://wordpress.org/support/plugin/woocommerce-checkout-manager/reviews/?filter=5#new-post');
41
  }
42
  if (!defined('QLWAPP_DEMO_URL')) {
43
  define('QLWAPP_DEMO_URL', 'https://quadlayers.com/portfolio/wordpress-whatsapp-chat/?utm_source=qlwapp_admin');