Download Monitor - Version 4.4.14

Version Description

Download this release

Release Info

Developer giucu91
Plugin Icon 128x128 Download Monitor
Version 4.4.14
Comparing to
See all releases

Code changes from version 4.4.13 to 4.4.14

assets/css/admin.css CHANGED
@@ -1,1681 +1 @@
1
- /* Logs */
2
- .post-type-dlm_download h1 a.dlm-delete-logs {
3
- color: #a00;
4
- }
5
- .post-type-dlm_download h1 a.dlm-delete-logs:hover {
6
- color: #fff;
7
- background: #a00;
8
- border-color: #7C0900;
9
- }
10
- #dlm_logs td {
11
- padding: 7px 7px;
12
- vertical-align: middle;
13
- }
14
- #dlm_logs .check-column {
15
- width: 1%;
16
- padding: 0;
17
- vertical-align: middle;
18
- }
19
- #dlm_logs .column-status {
20
- width: 2%;
21
- }
22
- #dlm_logs td.column-status {
23
- font-size: 10px;
24
- vertical-align: middle;
25
- text-align: center;
26
- }
27
- #dlm_logs td.column-status span {
28
- color: #fff;
29
- font-weight: normal;
30
- -moz-border-radius: 50%;
31
- -webkit-border-radius: 50%;
32
- border-radius: 50%;
33
- height: 18px;
34
- line-height: 18px;
35
- width: 18px;
36
- display: inline-block;
37
- background: url('../images/log-status-icons.png') top left no-repeat;
38
- }
39
- #dlm_logs td.column-status .completed {
40
- background-color: #6cc644;
41
- }
42
- #dlm_logs td.column-status .failed {
43
- background-color: #bd2c00;
44
- background-position-y: -18px;
45
- }
46
- #dlm_logs td.column-status .redirected {
47
- background-color: #1c769b;
48
- background-position-y: -36px;
49
- }
50
- #dlm_logs td.column-user_ip,
51
- #dlm_logs td.column-user_agent {
52
- font-family: monospace;
53
- font-weight: normal;
54
- }
55
- #dlm_logs span.dlm-description {
56
- font-weight: normal;
57
- }
58
- #dlm_logs .column-download,
59
- #dlm_logs .column-file,
60
- #dlm_logs .column-user,
61
- #dlm_logs .column-user_ua {
62
- width: 16% !important;
63
- }
64
- #dlm_logs .column-user_ip,
65
- #dlm_logs .column-date {
66
- width: 6% !important;
67
- }
68
- .post-type-dlm_download .inline-edit-row .inline-edit-col-dlm .inline-edit-col-dlm-inner {
69
- margin-top: 10px;
70
- }
71
-
72
- /* Branding bar */
73
- body.post-type-dlm_download:not(.post-new-php):not(.post-php) #wpcontent {
74
- padding-left: 0;
75
- }
76
-
77
- body.post-type-dlm_download .wrap.dlm-admin-settings,
78
- body.post-type-dlm_download #available-extensions,
79
- body.post-type-dlm_download #posts-filter,
80
- body.post-type-dlm_download #wpbody-content .wrap > ul.subsubsub {
81
- padding-left: 20px;
82
- }
83
-
84
- body.post-type-dlm_download.post-new-php .dlm-page-header,
85
- body.post-type-dlm_download.post-php .dlm-page-header {
86
- margin-left: -20px;
87
- padding-right: 20px;
88
- margin-right: -20px;
89
- }
90
-
91
- body.post-type-dlm_download .dlm-page-header {
92
- border-bottom : 1px solid #ccc;
93
- padding : 15px 20px;
94
- display : flex;
95
- justify-content : space-between;
96
- background : #fff;
97
- width : 100%;
98
- box-sizing: border-box;
99
- }
100
-
101
- body.post-type-dlm_download .dlm-page-header .dlm-header-links {
102
- margin-right: 30px;
103
- }
104
-
105
- body.post-type-dlm_download .dlm-page-header .dlm-header-links a span{vertical-align: middle;}
106
-
107
- body.post-type-dlm_download .dlm-page-header .dlm-header-logo img {
108
- max-height : 35px;
109
- }
110
-
111
-
112
- .dlm-header-links .dashicons { font-size: 16px; }
113
-
114
-
115
- /* Settings */
116
-
117
-
118
-
119
- .dlm-settings-sub-nav {
120
- margin: 0 0 10px 0;
121
- width: 100%;
122
- border-bottom: 1px solid #ccc;
123
- box-shadow: 0 1px 1px rgba(0,0,0,.04);
124
- }
125
-
126
- .dlm-settings-sub-nav li {
127
- margin-right: 10px;
128
- margin-bottom: -2px;
129
- }
130
-
131
- .dlm-settings-sub-nav a {
132
- padding: 13px;
133
- display: block;
134
- }
135
- .dlm-settings-sub-nav .active-section {margin-bottom: -2px;}
136
- .dlm-settings-sub-nav .active-section a {
137
- border-bottom: 4px solid #000;
138
- padding-bottom: 9px;
139
- margin-bottom: -2px;
140
- font-weight: 600;
141
- }
142
-
143
- /* Blue */
144
- .admin-color-blue .dlm-settings-sub-nav .active-section a {
145
- border-bottom-color: #096484;
146
- }
147
-
148
- /* Coffee */
149
- .admin-color-coffee .dlm-settings-sub-nav .active-section a {
150
- border-bottom-color: #c7a589;
151
- }
152
-
153
- /* Ectoplasm */
154
- .admin-color-ectoplasm .dlm-settings-sub-nav .active-section a {
155
- border-bottom-color: #a3b745;
156
- }
157
-
158
- /* Midnight */
159
- .admin-color-midnight .dlm-settings-sub-nav .active-section a {
160
- border-bottom-color: #e14d43;
161
- }
162
-
163
- /* Ocean */
164
- .admin-color-ocean .dlm-settings-sub-nav .active-section a {
165
- border-bottom-color: #627c83;
166
- }
167
-
168
- /* Sunrise */
169
- .admin-color-sunrise .dlm-settings-sub-nav .active-section a {
170
- border-bottom-color: #be3631;
171
- }
172
-
173
- /* Light */
174
- .admin-color-light .dlm-settings-sub-nav .active-section a {
175
- border-bottom-color: #888;
176
- }
177
-
178
- /* bbPress Color Schemes */
179
-
180
- /* Evergreen */
181
- .admin-color-evergreen .dlm-settings-sub-nav .active-section a {
182
- border-bottom-color: #36533f;
183
- }
184
-
185
- /* Mint */
186
- .admin-color-mint .dlm-settings-sub-nav .active-section a {
187
- border-bottom-color: #4f6d59;
188
- }
189
-
190
- /* Modern */
191
- .admin-color-modern .dlm-settings-sub-nav .active-section a {
192
- border-bottom-color: #3858e9;
193
- }
194
-
195
- /** Settings */
196
- .dlm-admin-settings #setting-dlm_decimal_separator,
197
- .dlm-admin-settings #setting-dlm_thousand_separator {
198
- width: 50px;
199
- }
200
- .dlm-admin-settings table td {
201
- padding: 15px 0;
202
- }
203
- .dlm-admin-settings h3 {
204
- margin: 2em 0 0;
205
- }
206
- /* File lists */
207
- ul.download_monitor_file_browser {
208
- list-style: none outside;
209
- margin: 0;
210
- border: 1px solid #ddd;
211
- -moz-border-radius: 3px;
212
- -webkit-border-radius: 3px;
213
- border-radius: 3px;
214
- background: #f9f9f9;
215
- padding: 5px 5px;
216
- -moz-box-shadow: inset 0 0 0 1px #fff;
217
- -webkit-box-shadow: inset 0 0 0 1px #fff;
218
- box-shadow: inset 0 0 0 1px #fff;
219
- }
220
- ul.download_monitor_file_browser li {
221
- padding: 0;
222
- margin: 0;
223
- }
224
- ul.download_monitor_file_browser li a {
225
- color: #21759B;
226
- display: block;
227
- padding: 4px 0 4px 4px;
228
- text-decoration: none;
229
- }
230
- ul.download_monitor_file_browser li a:hover {
231
- background-color: #eaf2fa;
232
- }
233
- ul.download_monitor_file_browser li a:before {
234
- font-family: dashicons !important;
235
- speak: none;
236
- font-weight: normal;
237
- font-variant: normal;
238
- text-transform: none;
239
- -webkit-font-smoothing: antialiased;
240
- -moz-osx-font-smoothing: grayscale;
241
- margin: 0 4px 0 0;
242
- content: "\f123";
243
- top: 1px;
244
- left: -1px;
245
- font-size: 1em;
246
- line-height: inherit;
247
- position: relative;
248
- vertical-align: top;
249
- }
250
- ul.download_monitor_file_browser li a.folder:before {
251
- font-family: dashicons !important;
252
- speak: none;
253
- font-weight: normal;
254
- font-variant: normal;
255
- text-transform: none;
256
- -webkit-font-smoothing: antialiased;
257
- -moz-osx-font-smoothing: grayscale;
258
- margin: 0 4px 0 0;
259
- content: "\f318";
260
- top: 1px;
261
- left: -1px;
262
- font-size: 1em;
263
- line-height: inherit;
264
- position: relative;
265
- vertical-align: top;
266
- }
267
- ul.download_monitor_file_browser li a.filetype-mov:before,
268
- ul.download_monitor_file_browser li a.filetype-avi:before,
269
- ul.download_monitor_file_browser li a.filetype-3g2:before,
270
- ul.download_monitor_file_browser li a.filetype-3gp:before,
271
- ul.download_monitor_file_browser li a.filetype-asf:before,
272
- ul.download_monitor_file_browser li a.filetype-asx:before,
273
- ul.download_monitor_file_browser li a.filetype-mp4:before,
274
- ul.download_monitor_file_browser li a.filetype-mpg:before,
275
- ul.download_monitor_file_browser li a.filetype-rm:before,
276
- ul.download_monitor_file_browser li a.filetype-srt:before,
277
- ul.download_monitor_file_browser li a.filetype-vob:before,
278
- ul.download_monitor_file_browser li a.filetype-wmv:before {
279
- font-family: dashicons !important;
280
- speak: none;
281
- font-weight: normal;
282
- font-variant: normal;
283
- text-transform: none;
284
- -webkit-font-smoothing: antialiased;
285
- -moz-osx-font-smoothing: grayscale;
286
- margin: 0 4px 0 0;
287
- content: "\f126";
288
- top: 1px;
289
- left: -1px;
290
- font-size: 1em;
291
- line-height: inherit;
292
- position: relative;
293
- vertical-align: top;
294
- }
295
- ul.download_monitor_file_browser li a.filetype-mp3:before,
296
- ul.download_monitor_file_browser li a.filetype-aif:before,
297
- ul.download_monitor_file_browser li a.filetype-iff:before,
298
- ul.download_monitor_file_browser li a.filetype-m3u:before,
299
- ul.download_monitor_file_browser li a.filetype-m4a:before,
300
- ul.download_monitor_file_browser li a.filetype-mid:before,
301
- ul.download_monitor_file_browser li a.filetype-midi:before,
302
- ul.download_monitor_file_browser li a.filetype-mpa:before,
303
- ul.download_monitor_file_browser li a.filetype-ra:before,
304
- ul.download_monitor_file_browser li a.filetype-wav:before,
305
- ul.download_monitor_file_browser li a.filetype-wma:before {
306
- font-family: dashicons !important;
307
- speak: none;
308
- font-weight: normal;
309
- font-variant: normal;
310
- text-transform: none;
311
- -webkit-font-smoothing: antialiased;
312
- -moz-osx-font-smoothing: grayscale;
313
- margin: 0 4px 0 0;
314
- content: "\f127";
315
- top: 1px;
316
- left: -1px;
317
- font-size: 1em;
318
- line-height: inherit;
319
- position: relative;
320
- vertical-align: top;
321
- }
322
- ul.download_monitor_file_browser li a.filetype-psd:before,
323
- ul.download_monitor_file_browser li a.filetype-ai:before,
324
- ul.download_monitor_file_browser li a.filetype-eps:before,
325
- ul.download_monitor_file_browser li a.filetype-ps:before,
326
- ul.download_monitor_file_browser li a.filetype-svg:before,
327
- ul.download_monitor_file_browser li a.filetype-bmp:before,
328
- ul.download_monitor_file_browser li a.filetype-dds:before,
329
- ul.download_monitor_file_browser li a.filetype-gif:before,
330
- ul.download_monitor_file_browser li a.filetype-jpg:before,
331
- ul.download_monitor_file_browser li a.filetype-jpeg:before,
332
- ul.download_monitor_file_browser li a.filetype-png:before,
333
- ul.download_monitor_file_browser li a.filetype-pspimage:before,
334
- ul.download_monitor_file_browser li a.filetype-tga:before,
335
- ul.download_monitor_file_browser li a.filetype-thm:before,
336
- ul.download_monitor_file_browser li a.filetype-tif:before,
337
- ul.download_monitor_file_browser li a.filetype-yuv:before,
338
- ul.download_monitor_file_browser li a.filetype-ico:before {
339
- font-family: dashicons !important;
340
- speak: none;
341
- font-weight: normal;
342
- font-variant: normal;
343
- text-transform: none;
344
- -webkit-font-smoothing: antialiased;
345
- -moz-osx-font-smoothing: grayscale;
346
- margin: 0 4px 0 0;
347
- content: "\f128";
348
- top: 1px;
349
- left: -1px;
350
- font-size: 1em;
351
- line-height: inherit;
352
- position: relative;
353
- vertical-align: top;
354
- }
355
- ul.download_monitor_file_browser li.nofiles {
356
- color: #999;
357
- font-style: italic;
358
- padding: 4px 0;
359
- }
360
- ul.download_monitor_file_browser li ul {
361
- list-style: none outside;
362
- margin: 0;
363
- padding: 0 0 0 28px;
364
- }
365
- ul.download_monitor_file_browser li ul.loading {
366
- background: url(../images/ajax-loader.gif) no-repeat 24px 0;
367
- height: 32px;
368
- }
369
- /* Download list */
370
- table.wp-list-table .column-thumb {
371
- width: 44px;
372
- text-align: center;
373
- white-space: nowrap;
374
- }
375
- table.wp-list-table .column-dlm_download_cat,
376
- table.wp-list-table .column-dlm_download_tag,
377
- table.wp-list-table .column-file {
378
- width: 11% !important;
379
- }
380
- table.wp-list-table .column-title,
381
- table.wp-list-table .column-file {
382
- width: 17% !important;
383
- }
384
- table.wp-list-table .column-download_id,
385
- table.wp-list-table .column-version {
386
- width: 5em;
387
- }
388
- table.wp-list-table th.column-thumb span:first-child,
389
- table.wp-list-table th.column-download_count span:first-child,
390
- table.wp-list-table th.column-members_only span:first-child,
391
- table.wp-list-table th.column-redirect_only span:first-child,
392
- table.wp-list-table th.column-featured span:first-child {
393
- float: none;
394
- display: inline-block;
395
- width: 1em;
396
- height: 1em;
397
- line-height: 1em;
398
- padding: 2px 0 0 0;
399
- overflow: hidden;
400
- }
401
- table.wp-list-table th.column-thumb .sorting-indicator,
402
- table.wp-list-table th.column-download_count .sorting-indicator,
403
- table.wp-list-table th.column-members_only .sorting-indicator,
404
- table.wp-list-table th.column-redirect_only .sorting-indicator,
405
- table.wp-list-table th.column-featured .sorting-indicator {
406
- float: right;
407
- }
408
- table.wp-list-table th.column-thumb {
409
- width: 52px;
410
- text-align: center;
411
- }
412
- table.wp-list-table th.column-thumb span:first-child:before {
413
- font-family: dashicons !important;
414
- speak: none;
415
- font-weight: normal;
416
- font-variant: normal;
417
- text-transform: none;
418
- -webkit-font-smoothing: antialiased;
419
- -moz-osx-font-smoothing: grayscale;
420
- margin: 0 4px 0 0;
421
- content: "\f128";
422
- top: 1px;
423
- left: -1px;
424
- font-size: 1em;
425
- line-height: inherit;
426
- position: relative;
427
- vertical-align: top;
428
- }
429
- table.wp-list-table th.column-download_count {
430
- width: 5em;
431
- }
432
- table.wp-list-table th.column-download_count span:first-child:before {
433
- font-family: dashicons !important;
434
- speak: none;
435
- font-weight: normal;
436
- font-variant: normal;
437
- text-transform: none;
438
- -webkit-font-smoothing: antialiased;
439
- -moz-osx-font-smoothing: grayscale;
440
- margin: 0 4px 0 0;
441
- content: "\f346";
442
- top: 1px;
443
- left: -1px;
444
- font-size: 1em;
445
- line-height: inherit;
446
- position: relative;
447
- vertical-align: top;
448
- }
449
- table.wp-list-table th.column-members_only {
450
- width: 3.5em;
451
- }
452
- table.wp-list-table th.column-members_only span:first-child:before {
453
- font-family: dashicons !important;
454
- speak: none;
455
- font-weight: normal;
456
- font-variant: normal;
457
- text-transform: none;
458
- -webkit-font-smoothing: antialiased;
459
- -moz-osx-font-smoothing: grayscale;
460
- margin: 0 4px 0 0;
461
- content: "\f338";
462
- top: 1px;
463
- left: -1px;
464
- font-size: 1em;
465
- line-height: inherit;
466
- position: relative;
467
- vertical-align: top;
468
- }
469
- table.wp-list-table th.column-redirect_only {
470
- width: 3.5em;
471
- }
472
- table.wp-list-table th.column-redirect_only span:first-child:before {
473
- font-family: dashicons !important;
474
- speak: none;
475
- font-weight: normal;
476
- font-variant: normal;
477
- text-transform: none;
478
- -webkit-font-smoothing: antialiased;
479
- -moz-osx-font-smoothing: grayscale;
480
- margin: 0 4px 0 0;
481
- content: "\f103";
482
- top: 1px;
483
- left: -1px;
484
- font-size: 1em;
485
- line-height: inherit;
486
- position: relative;
487
- vertical-align: top;
488
- }
489
- table.wp-list-table th.column-featured {
490
- width: 3.5em;
491
- }
492
- table.wp-list-table th.column-featured span:first-child:before {
493
- font-family: dashicons !important;
494
- speak: none;
495
- font-weight: normal;
496
- font-variant: normal;
497
- text-transform: none;
498
- -webkit-font-smoothing: antialiased;
499
- -moz-osx-font-smoothing: grayscale;
500
- margin: 0 4px 0 0;
501
- content: "\f155";
502
- top: 1px;
503
- left: -1px;
504
- font-size: 1em;
505
- line-height: inherit;
506
- position: relative;
507
- vertical-align: top;
508
- }
509
- table.wp-list-table td.column-download_count,
510
- table.wp-list-table td.column-members_only,
511
- table.wp-list-table td.column-redirect_only,
512
- table.wp-list-table td.column-featured {
513
- text-align: left;
514
- padding-left: 11px;
515
- }
516
- table.wp-list-table td.column-download_count span.na,
517
- table.wp-list-table td.column-members_only span.na,
518
- table.wp-list-table td.column-redirect_only span.na,
519
- table.wp-list-table td.column-featured span.na {
520
- color: #999;
521
- width: 1em;
522
- height: 1em;
523
- line-height: 1em;
524
- display: inline-block;
525
- overflow: hidden;
526
- vertical-align: middle;
527
- }
528
- table.wp-list-table td.column-download_count span.na:before,
529
- table.wp-list-table td.column-members_only span.na:before,
530
- table.wp-list-table td.column-redirect_only span.na:before,
531
- table.wp-list-table td.column-featured span.na:before {
532
- font-family: dashicons !important;
533
- speak: none;
534
- font-weight: normal;
535
- font-variant: normal;
536
- text-transform: none;
537
- -webkit-font-smoothing: antialiased;
538
- -moz-osx-font-smoothing: grayscale;
539
- margin: 0 4px 0 0;
540
- content: "\f460";
541
- top: 1px;
542
- left: -1px;
543
- font-size: 1em;
544
- line-height: inherit;
545
- position: relative;
546
- vertical-align: top;
547
- }
548
- table.wp-list-table td.column-download_count span.yes,
549
- table.wp-list-table td.column-members_only span.yes,
550
- table.wp-list-table td.column-redirect_only span.yes,
551
- table.wp-list-table td.column-featured span.yes {
552
- width: 1em;
553
- height: 1em;
554
- line-height: 1em;
555
- display: inline-block;
556
- overflow: hidden;
557
- vertical-align: middle;
558
- }
559
- table.wp-list-table td.column-download_count span.yes:before,
560
- table.wp-list-table td.column-members_only span.yes:before,
561
- table.wp-list-table td.column-redirect_only span.yes:before,
562
- table.wp-list-table td.column-featured span.yes:before {
563
- font-family: dashicons !important;
564
- speak: none;
565
- font-weight: normal;
566
- font-variant: normal;
567
- text-transform: none;
568
- -webkit-font-smoothing: antialiased;
569
- -moz-osx-font-smoothing: grayscale;
570
- margin: 0 4px 0 0;
571
- content: "\f147";
572
- top: 1px;
573
- left: -1px;
574
- font-size: 1em;
575
- line-height: inherit;
576
- position: relative;
577
- vertical-align: top;
578
- }
579
- table.wp-list-table .column-thumb img {
580
- padding: 2px;
581
- margin: 0;
582
- border: 1px solid #dfdfdf;
583
- vertical-align: middle;
584
- width: 32px;
585
- height: 32px;
586
- }
587
- /* Meta boxes */
588
- #download-monitor-file .inside {
589
- padding: 0;
590
- margin: 0;
591
- }
592
- #download-monitor-file .dlm-metaboxes-wrapper .expand_all,
593
- #download-monitor-file .dlm-metaboxes-wrapper .close_all {
594
- float: right;
595
- margin-left: 1em;
596
- line-height: 22px;
597
- text-decoration: none;
598
- }
599
- #download-monitor-file .dlm-metaboxes-wrapper .expand_all:before {
600
- font-family: dashicons !important;
601
- speak: none;
602
- font-weight: normal;
603
- font-variant: normal;
604
- text-transform: none;
605
- -webkit-font-smoothing: antialiased;
606
- -moz-osx-font-smoothing: grayscale;
607
- margin: 0 4px 0 0;
608
- content: "\f168";
609
- top: 1px;
610
- left: -1px;
611
- font-size: 1em;
612
- line-height: inherit;
613
- position: relative;
614
- vertical-align: top;
615
- }
616
- #download-monitor-file .dlm-metaboxes-wrapper .close_all:before {
617
- font-family: dashicons !important;
618
- speak: none;
619
- font-weight: normal;
620
- font-variant: normal;
621
- text-transform: none;
622
- -webkit-font-smoothing: antialiased;
623
- -moz-osx-font-smoothing: grayscale;
624
- margin: 0 4px 0 0;
625
- content: "\f460";
626
- top: 1px;
627
- left: -1px;
628
- font-size: 1em;
629
- line-height: inherit;
630
- position: relative;
631
- vertical-align: top;
632
- }
633
- #download-monitor-file .dlm-metaboxes-wrapper p.toolbar {
634
- margin: 0 !important;
635
- border-top: 1px solid white;
636
- border-bottom: 1px solid #DFDFDF;
637
- padding: 7px 12px !important;
638
- overflow: hidden;
639
- zoom: 1;
640
- }
641
- #download-monitor-file .dlm-metaboxes-wrapper p.toolbar a.button {
642
- float: left;
643
- margin: 0;
644
- }
645
- #download-monitor-file .dlm-metaboxes-wrapper select.attribute_taxonomy,
646
- #download-monitor-file .dlm-metaboxes-wrapper button.add_attribute,
647
- #download-monitor-file .dlm-metaboxes-wrapper button.add_variable_attribute,
648
- #download-monitor-file .dlm-metaboxes-wrapper .fr {
649
- float: right;
650
- margin: 0 0 0 6px;
651
- }
652
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metaboxes {
653
- padding: 0 12px 0;
654
- }
655
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox-sortable-placeholder {
656
- border-color: #bbb;
657
- background-color: #f5f5f5;
658
- margin: 9px 0;
659
- border-width: 1px;
660
- border-style: dashed;
661
- }
662
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox {
663
- background: #ececec;
664
- border: 1px solid #ececec;
665
- margin: 9px 0 !important;
666
- }
667
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 {
668
- margin: 0 !important;
669
- padding: 6px !important;
670
- font-size: 1em !important;
671
- overflow: hidden;
672
- zoom: 1;
673
- cursor: move;
674
- }
675
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 button {
676
- float: right;
677
- }
678
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 strong {
679
- line-height: 24px;
680
- }
681
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 select {
682
- font-family: sans-serif;
683
- }
684
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 .handlediv {
685
- background-position: 6px 5px !important;
686
- display: none !important;
687
- height: 24px;
688
- }
689
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:hover h3 .handlediv {
690
- display: block;
691
- }
692
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table {
693
- width: 100%;
694
- position: relative;
695
- background: #fff;
696
- padding: 3px;
697
- }
698
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td {
699
- text-align: left;
700
- padding: 6px 6px;
701
- vertical-align: top;
702
- border: 0;
703
- line-height: 26px;
704
- }
705
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td label {
706
- text-align: left;
707
- display: block;
708
- line-height: 21px;
709
- }
710
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input {
711
- float: left;
712
- min-width: 200px;
713
- }
714
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input,
715
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea {
716
- width: 100%;
717
- margin: 0;
718
- display: block;
719
- font-size: 14px;
720
- padding: 4px;
721
- color: #555;
722
- }
723
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea {
724
- height: 7.5em;
725
- }
726
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td select {
727
- width: 100%;
728
- }
729
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.short {
730
- width: 200px;
731
- }
732
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.checkbox {
733
- width: auto;
734
- min-width: inherit;
735
- vertical-align: middle;
736
- display: inline;
737
- float: none;
738
- }
739
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.date-picker-field {
740
- width: 50%;
741
- min-width: inherit;
742
- float: none;
743
- display: inline;
744
- }
745
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.minute,
746
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.hour {
747
- width: 2em;
748
- min-width: inherit;
749
- float: none;
750
- display: inline;
751
- }
752
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td.attribute_name {
753
- width: 200px;
754
- }
755
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .plus,
756
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .minus {
757
- margin-top: 6px;
758
- }
759
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fl {
760
- float: left;
761
- }
762
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fr {
763
- float: right;
764
- }
765
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:first-child {
766
- /* main file */
767
- }
768
- #download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:first-child h3 {
769
- background-color: #FAFAFA;
770
- border-bottom: 1px solid #dcdcde;
771
- }
772
- #download-monitor-file .dlm-metaboxes-wrapper .plus:before {
773
- font-family: dashicons !important;
774
- speak: none;
775
- font-weight: normal;
776
- font-variant: normal;
777
- text-transform: none;
778
- -webkit-font-smoothing: antialiased;
779
- -moz-osx-font-smoothing: grayscale;
780
- margin: 0 4px 0 0;
781
- content: "\f132";
782
- top: 1px;
783
- left: -1px;
784
- font-size: 1em;
785
- line-height: inherit;
786
- position: relative;
787
- vertical-align: top;
788
- }
789
- #download-monitor-file .dlm-metaboxes-wrapper .minus:before {
790
- font-family: dashicons !important;
791
- speak: none;
792
- font-weight: normal;
793
- font-variant: normal;
794
- text-transform: none;
795
- -webkit-font-smoothing: antialiased;
796
- -moz-osx-font-smoothing: grayscale;
797
- margin: 0 4px 0 0;
798
- content: "\f460";
799
- top: 1px;
800
- left: -1px;
801
- font-size: 1em;
802
- line-height: inherit;
803
- position: relative;
804
- vertical-align: top;
805
- }
806
- #download-monitor-file .dlm-metaboxes-wrapper .dlm_upload_file:before {
807
- font-family: dashicons !important;
808
- speak: none;
809
- font-weight: normal;
810
- font-variant: normal;
811
- text-transform: none;
812
- -webkit-font-smoothing: antialiased;
813
- -moz-osx-font-smoothing: grayscale;
814
- margin: 0 4px 0 0;
815
- content: "\f317";
816
- top: 1px;
817
- left: -1px;
818
- font-size: 1em;
819
- line-height: inherit;
820
- position: relative;
821
- vertical-align: top;
822
- }
823
- #download-monitor-file .dlm-metaboxes-wrapper .dlm_browse_for_file:before {
824
- font-family: dashicons !important;
825
- speak: none;
826
- font-weight: normal;
827
- font-variant: normal;
828
- text-transform: none;
829
- -webkit-font-smoothing: antialiased;
830
- -moz-osx-font-smoothing: grayscale;
831
- margin: 0 4px 0 0;
832
- content: "\f322";
833
- top: 1px;
834
- left: -1px;
835
- font-size: 1em;
836
- line-height: inherit;
837
- position: relative;
838
- vertical-align: top;
839
- }
840
- /* Writepanel forms */
841
- #download-monitor-information p {
842
- overflow: hidden;
843
- }
844
- #download-monitor-information p label {
845
- width: 100%;
846
- font-weight: bold;
847
- box-sizing: border-box;
848
- line-height: 28px;
849
- float: left;
850
- }
851
- #download-monitor-information p label input {
852
- width: 65%;
853
- padding: 5px;
854
- font-size: 11px;
855
- font-weight: normal;
856
- background: #eaeaea;
857
- border: 0;
858
- box-shadow: none;
859
- box-sizing: border-box;
860
- float: right;
861
- }
862
- #download-monitor-options .inside {
863
- padding: 0;
864
- margin: 0;
865
- }
866
- #download-monitor-options .form-field-checkbox label {
867
- display: inline;
868
- padding: 0 0 4px;
869
- }
870
- #download-monitor-options .form-field-checkbox input {
871
- display: inline-block;
872
- width: auto;
873
- vertical-align: middle;
874
- }
875
- #download-monitor-options .form-field-checkbox .dlm-description {
876
- padding: 4px 0 0 0;
877
- display: block;
878
- }
879
- #download-monitor-options .access_permissions {
880
- margin: 0 !important;
881
- border-top: 1px solid white;
882
- border-bottom: 1px solid #DFDFDF;
883
- padding: 7px 12px !important;
884
- overflow: hidden;
885
- zoom: 1;
886
- }
887
- #download-monitor-options .access_permissions h4 {
888
- margin-bottom: 0.5em;
889
- margin: 0 0 0.5em;
890
- }
891
- #download-monitor-options .access_permissions ul {
892
- background: #fff;
893
- border: 1px solid #dfdfdf;
894
- height: 110px;
895
- overflow: auto;
896
- padding: 0.5em 0.9em;
897
- margin: 0;
898
- }
899
- #download-monitor-options p {
900
- margin: 0 !important;
901
- border-top: 1px solid white;
902
- border-bottom: 1px solid #DFDFDF;
903
- padding: 7px 12px !important;
904
- overflow: hidden;
905
- zoom: 1;
906
- }
907
- #insert-download {
908
- padding: 20px 20px;
909
- }
910
- #insert-download #insert-shortcode,
911
- #insert-download #drag-drop-area {
912
- margin: 1em 0;
913
- }
914
- #insert-download .updated,
915
- #insert-download .error {
916
- margin-left: 0;
917
- margin-right: 0;
918
- }
919
- #insert-download h2 {
920
- margin-top: 0;
921
- }
922
- #insert-download label {
923
- margin: 0 0 0.25em 0;
924
- display: block;
925
- font-size: 1.1em;
926
- }
927
- #insert-download span.description {
928
- display: block;
929
- }
930
- #insert-download input.input {
931
- margin: 0 0 0.25em 0;
932
- display: block;
933
- width: 100%;
934
- font-size: 1.1em;
935
- }
936
- #insert-download .add_link {
937
- float: right;
938
- }
939
- #insert-download ul.page-numbers {
940
- overflow: hidden;
941
- zoom: 1;
942
- margin: 0 auto;
943
- padding: 0;
944
- text-align: center;
945
- }
946
- #insert-download ul.page-numbers li {
947
- display: inline-block;
948
- margin: 0;
949
- list-style: none outside;
950
- line-height: 1em;
951
- }
952
- #insert-download ul.page-numbers li a,
953
- #insert-download ul.page-numbers li span {
954
- text-decoration: none;
955
- border: 1px solid #ddd;
956
- -webkit-border-radius: 4px;
957
- border-radius: 4px;
958
- padding: 8px;
959
- display: block;
960
- }
961
- #insert-download ul.page-numbers li span {
962
- border-color: #eee;
963
- }
964
- #insert-download legend {
965
- font-weight: bold;
966
- display: block;
967
- margin: 0 0 1em;
968
- }
969
- #insert-download fieldset label {
970
- display: block;
971
- margin: 0 0 0.5em;
972
- }
973
- /* Settings */
974
- .dlm-code-nginx-rules {
975
- display: block;
976
- }
977
- .settings_panel .form-table td {
978
- padding-left: 0;
979
- }
980
- .settings_panel .dlm-lazy-select-loader {
981
- display: inline-block;
982
- vertical-align: middle;
983
- padding: 0 0 0 3px;
984
- }
985
- .settings_panel .dlm-lazy-select-loader img {
986
- display: inline-block;
987
- height: 25px;
988
- width: 25px;
989
- margin-top: 1px;
990
- }
991
- /* Reports */
992
- .dlm-reports h1 .dlm-reports-actions {
993
- float: right;
994
- }
995
- .dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher,
996
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector,
997
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period {
998
- margin: 0 5px;
999
- float: left;
1000
- }
1001
- .dlm-reports h1 .dlm-reports-actions > :last-child {
1002
- margin-right: 0;
1003
- }
1004
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector {
1005
- position: relative;
1006
- font-size: 14px;
1007
- padding: 0 0.5em 0 1em;
1008
- background: #fff;
1009
- border: 1px solid #cccccc;
1010
- border-radius: 3px;
1011
- user-select: none;
1012
- cursor: pointer;
1013
- }
1014
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm-arrow:before {
1015
- font-family: "dashicons" !important;
1016
- content: "\f140";
1017
- font-style: normal;
1018
- font-weight: normal;
1019
- speak: none;
1020
- display: inline-block;
1021
- text-decoration: inherit;
1022
- width: 1em;
1023
- text-align: center;
1024
- font-variant: normal;
1025
- text-transform: none;
1026
- line-height: 1em;
1027
- font-size: 1.6em;
1028
- vertical-align: middle;
1029
- margin-top: -2px;
1030
- }
1031
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay {
1032
- display: block;
1033
- width: 466px;
1034
- padding: 10px;
1035
- background: #fff;
1036
- border: 1px solid #cccccc;
1037
- position: absolute;
1038
- top: 30px;
1039
- right: 0;
1040
- z-index: 10;
1041
- overflow: hidden;
1042
- }
1043
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date {
1044
- font-size: 70%;
1045
- margin-right: 5px;
1046
- float: left;
1047
- z-index: 11;
1048
- }
1049
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline {
1050
- border: 0;
1051
- }
1052
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline .ui-state-highlight {
1053
- background: #e6e6e6 url(../images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
1054
- color: #555555;
1055
- border: 1px solid #D3D3D3;
1056
- }
1057
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline .ui-state-active {
1058
- border: 1px solid #aaaaaa;
1059
- background: #ffffff url(../images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
1060
- }
1061
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline td,
1062
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline th {
1063
- padding: 0;
1064
- margin: 0;
1065
- line-height: 2em;
1066
- }
1067
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline td a,
1068
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline th a {
1069
- text-align: center !important;
1070
- }
1071
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_actions {
1072
- width: 70px;
1073
- padding-left: 10px;
1074
- text-align: center;
1075
- float: left;
1076
- }
1077
- .dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher {
1078
- display: block;
1079
- margin-top: 1px;
1080
- padding-top: 4px;
1081
- color: #23282d;
1082
- text-decoration: none;
1083
- }
1084
- .dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher:before {
1085
- font-family: "dashicons" !important;
1086
- font-style: normal;
1087
- font-weight: normal;
1088
- speak: none;
1089
- display: inline-block;
1090
- text-decoration: inherit;
1091
- width: 1em;
1092
- text-align: center;
1093
- font-variant: normal;
1094
- text-transform: none;
1095
- line-height: 1em;
1096
- font-size: 1.4em;
1097
- }
1098
- .dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher.dlm-line:before {
1099
- content: "\f238";
1100
- }
1101
- .dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher.dlm-bar:before {
1102
- content: "\f185";
1103
- }
1104
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a {
1105
- border-color: #cccccc !important;
1106
- }
1107
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a:first-child {
1108
- border-bottom-right-radius: 0;
1109
- border-top-right-radius: 0;
1110
- border-right: 0;
1111
- }
1112
- .dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a:last-child {
1113
- border-bottom-left-radius: 0;
1114
- border-top-left-radius: 0;
1115
- border-left: 0;
1116
- }
1117
- .dlm-reports .dlm_reports_loader {
1118
- position: absolute;
1119
- width: 32px;
1120
- height: 32px;
1121
- top: 50%;
1122
- left: 50%;
1123
- margin: -16px 0 0 -16px;
1124
- }
1125
- .dlm-reports .dlm-reports-block-chart {
1126
- width: 100%;
1127
- height: 300px;
1128
- margin-top: 20px;
1129
- background: #fff;
1130
- border: 1px solid #e5e5e5;
1131
- overflow: hidden;
1132
- }
1133
- .dlm-reports .dlm-reports-block-chart .chart-container h6 {
1134
- display: none;
1135
- }
1136
- .dlm-reports .dlm-reports-block-summary #popular span {
1137
- line-height: 1em;
1138
- }
1139
- .dlm-reports .dlm-reports-block {
1140
- position: relative;
1141
- box-sizing: border-box;
1142
- width: 100%;
1143
- padding: 20px 10px;
1144
- margin-top: 20px;
1145
- background: #fff;
1146
- border: 1px solid #e5e5e5;
1147
- overflow: hidden;
1148
- float: left;
1149
- }
1150
- .dlm-reports .dlm-reports-block.dlm-reports-block-half {
1151
- width: 49%;
1152
- margin-right: 1%;
1153
- }
1154
- .dlm-reports .dlm-reports-block.dlm-reports-block-half-right {
1155
- width: 49%;
1156
- margin-left: 1%;
1157
- }
1158
- .dlm-reports .dlm-reports-block .dlm-reports-placeholder-no-data {
1159
- display: inline-block;
1160
- width: 100%;
1161
- font-size: 1.5em;
1162
- color: #b4b9be;
1163
- font-style: italic;
1164
- text-align: center;
1165
- }
1166
- .dlm-reports .dlm-reports-block ul {
1167
- box-sizing: border-box;
1168
- width: 100%;
1169
- padding: 0;
1170
- margin: 0;
1171
- }
1172
- .dlm-reports .dlm-reports-block ul li {
1173
- display: inline-block;
1174
- width: 33%;
1175
- padding: 5px 0;
1176
- }
1177
- .dlm-reports .dlm-reports-block ul li label,
1178
- .dlm-reports .dlm-reports-block ul li span {
1179
- display: block;
1180
- width: 100%;
1181
- text-align: center;
1182
- }
1183
- .dlm-reports .dlm-reports-block ul li span {
1184
- font-size: 2.5em;
1185
- font-weight: bold;
1186
- padding: 0.5em 0 0;
1187
- }
1188
- .dlm-reports .dlm-reports-block table {
1189
- width: 100%;
1190
- }
1191
- .dlm-reports .dlm-reports-block table th,
1192
- .dlm-reports .dlm-reports-block table td {
1193
- text-align: center;
1194
- padding: 10px 0;
1195
- border-bottom: 1px solid #e5e5e5;
1196
- }
1197
- .dlm-reports .dlm-reports-block table th:first-child,
1198
- .dlm-reports .dlm-reports-block table td:first-child {
1199
- text-align: left;
1200
- }
1201
- .dlm-reports .dlm-reports-block table th {
1202
- padding-bottom: 20px;
1203
- }
1204
- .dlm-reports-block-summary {
1205
- background: #333 !important;
1206
- color: white;
1207
- }
1208
- /** Products overview page */
1209
- .post-type-dlm_product table.wp-list-table .column-title {
1210
- width: 65% !important;
1211
- }
1212
- /** Products detail page */
1213
- .dlm_mb_shop_product_information .dlm_shop_field_row {
1214
- width: 100%;
1215
- overflow: hidden;
1216
- }
1217
- .dlm_mb_shop_product_information .dlm_shop_field_row label.dlm_shop_field_label {
1218
- display: inline-block;
1219
- width: 20%;
1220
- height: 100%;
1221
- line-height: 2.2em;
1222
- float: left;
1223
- }
1224
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input {
1225
- display: inline-block;
1226
- width: 50%;
1227
- float: left;
1228
- }
1229
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .dlm_shop_input {
1230
- width: 100%;
1231
- padding: 5px 7px;
1232
- }
1233
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-selection--multiple {
1234
- border: 1px solid #dddddd;
1235
- }
1236
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-search,
1237
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-selection__choice {
1238
- margin-bottom: 0;
1239
- }
1240
- .dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-search__field {
1241
- padding-top: 3px;
1242
- }
1243
- /** Orders Overview */
1244
- .dlm-order-overview #dlm_empty_trash {
1245
- margin-left: 3px;
1246
- }
1247
- .dlm-order-overview .wp-list-table td .column-id {
1248
- width: 25%;
1249
- }
1250
- /** Order details */
1251
- .dlm-order-details {
1252
- max-width: 1250px;
1253
- margin-left: auto;
1254
- margin-right: auto;
1255
- padding-right: 20px;
1256
- }
1257
- .dlm-order-details h1 {
1258
- padding-bottom: 25px;
1259
- }
1260
- .dlm-order-details .dlm-order-details-main,
1261
- .dlm-order-details .dlm-order-details-side {
1262
- width: 100%;
1263
- float: left;
1264
- }
1265
- .dlm-order-details .dlm-order-details-block {
1266
- padding: 0;
1267
- margin-bottom: 20px;
1268
- line-height: 1;
1269
- border: 1px solid #e5e5e5;
1270
- background: #fff;
1271
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
1272
- }
1273
- .dlm-order-details .dlm-order-details-block h2.dlm-order-details-block-title {
1274
- font-size: 14px;
1275
- padding: 8px 12px;
1276
- margin: 0;
1277
- line-height: 1.4;
1278
- border-bottom: 1px solid #eee;
1279
- }
1280
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside {
1281
- margin: 6px 0 0 0;
1282
- padding: 6px 12px 12px;
1283
- line-height: 1.4em;
1284
- font-size: 13px;
1285
- }
1286
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside label {
1287
- display: block;
1288
- font-weight: bold;
1289
- padding-bottom: 6px;
1290
- }
1291
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside p {
1292
- padding: 0;
1293
- margin: 0;
1294
- }
1295
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul,
1296
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul li {
1297
- list-style: none;
1298
- padding: 0;
1299
- margin: 0;
1300
- }
1301
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul li {
1302
- padding: 6px 0;
1303
- }
1304
- .dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside .dlm-order-details-current-state {
1305
- width: 70%;
1306
- height: 30px;
1307
- }
1308
- .dlm-order-details .dlm-order-details-block.dlm-order-details-customer .dlm-order-details-customer-image {
1309
- float: right;
1310
- }
1311
- .dlm-order-details .dlm-order-details-block.dlm-order-details-customer ul li {
1312
- margin-bottom: 4px;
1313
- padding: 0;
1314
- }
1315
- .dlm-order-details .dlm-order-details-block.dlm-order-details-customer ul li:first-child {
1316
- font-weight: bold;
1317
- }
1318
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items {
1319
- overflow: hidden;
1320
- }
1321
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview {
1322
- width: 25%;
1323
- float: right;
1324
- }
1325
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview th,
1326
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview td {
1327
- padding-top: 1.5em;
1328
- padding-bottom: 1.5em;
1329
- text-align: right;
1330
- }
1331
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview th {
1332
- width: 50%;
1333
- font-weight: normal;
1334
- }
1335
- .dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview td {
1336
- padding-right: 1em;
1337
- font-weight: bold;
1338
- }
1339
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table {
1340
- width: 100%;
1341
- }
1342
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th,
1343
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td {
1344
- text-align: center;
1345
- }
1346
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th:first-child,
1347
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td:first-child {
1348
- text-align: left;
1349
- padding-left: 0.5em;
1350
- }
1351
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th {
1352
- padding-top: 0.5em;
1353
- padding-bottom: 0.5em;
1354
- border-bottom: 2px solid #c3c1bc;
1355
- }
1356
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td {
1357
- padding-top: 1.5em;
1358
- padding-bottom: 1.5em;
1359
- border-bottom: 1px solid #c3c1bc;
1360
- }
1361
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-details-order-items-item-total,
1362
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-details-order-items-item-total {
1363
- text-align: right;
1364
- padding-right: 1em;
1365
- }
1366
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-transaction-processor-id,
1367
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-transaction-processor-id {
1368
- display: none;
1369
- }
1370
- .dlm-order-details .dlm-order-details-block .dlm-order-details-update-successful {
1371
- font-size: 2em;
1372
- padding: 0.2em 0.3em;
1373
- color: #46b450;
1374
- }
1375
- @media (min-width: 768px) {
1376
- .dlm-order-details .dlm-order-details-main {
1377
- width: 62%;
1378
- float: left;
1379
- }
1380
- .dlm-order-details .dlm-order-details-side {
1381
- width: 35%;
1382
- float: right;
1383
- }
1384
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-transaction-processor-id,
1385
- .dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-transaction-processor-id {
1386
- display: table-cell;
1387
- }
1388
- }
1389
- /** Onboarding */
1390
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-one-col {
1391
- margin: 0 auto;
1392
- max-width: 680px;
1393
- }
1394
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-cta {
1395
- margin-top: 40px;
1396
- text-align: center;
1397
- }
1398
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col {
1399
- max-width: 680px;
1400
- margin: 40px auto 0;
1401
- overflow: hidden;
1402
- display: flex;
1403
- justify-content: space-between;
1404
- flex-wrap: wrap;
1405
- }
1406
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col {
1407
- padding-top: 2.5em;
1408
- flex: 1;
1409
- align-self: flex-start;
1410
- min-width: 100%;
1411
- max-width: 100%;
1412
- }
1413
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col img {
1414
- width: 100%;
1415
- }
1416
- .dlm-onboarding .dlm-onboarding-section h2 {
1417
- margin: 60px 0 0.6em;
1418
- font-size: 2.7em;
1419
- line-height: 1.3;
1420
- font-weight: 300;
1421
- text-align: center;
1422
- }
1423
- .dlm-onboarding .dlm-onboarding-section p {
1424
- max-width: 55em;
1425
- margin: 0.6em auto 0 auto;
1426
- }
1427
- .dlm-onboarding .dlm-onboarding-section a.button-hero {
1428
- height: 46px;
1429
- font-size: 14px;
1430
- line-height: 44px;
1431
- padding: 0 36px;
1432
- font-weight: bold;
1433
- text-align: center;
1434
- }
1435
- .dlm-onboarding .dlm-onboarding-pages {
1436
- max-width: 55em;
1437
- margin: 0 auto;
1438
- padding: 2em 0 0;
1439
- }
1440
- .dlm-onboarding .dlm-onboarding-pages a.button-hero {
1441
- width: 170px;
1442
- }
1443
- .dlm-onboarding .dlm-onboarding-pages a.button-hero.dlm-page-exists {
1444
- background: #46b450;
1445
- border-color: #46b450 #4a8442 #467a3f;
1446
- box-shadow: 0 2px 0 #467a3f;
1447
- text-shadow: 0 -1px 1px #4a8442, 1px 0 1px #4a8442, 0 1px 1px #4a8442, -1px 0 1px #4a8442;
1448
- }
1449
- .dlm-onboarding .dlm-onboarding-pages a.button-hero.dlm-page-exists:active {
1450
- box-shadow: 0 2px 0 #467a3f;
1451
- }
1452
- .dlm-onboarding .dlm-onboarding-pages th,
1453
- .dlm-onboarding .dlm-onboarding-pages td {
1454
- padding: 1em 0;
1455
- border-bottom: 1px solid #ccc;
1456
- }
1457
- .dlm-onboarding .dlm-onboarding-pages th {
1458
- width: 13%;
1459
- min-width: 6em;
1460
- text-align: left;
1461
- }
1462
- .dlm-onboarding .dlm-onboarding-pages td {
1463
- padding-right: 0.5em;
1464
- padding-left: 0.5em;
1465
- }
1466
- .dlm-onboarding .dlm-onboarding-pages td.dlm-onboarding-pages-page-title {
1467
- font-weight: bold;
1468
- }
1469
- @media (min-width: 768px) {
1470
- .dlm-onboarding .dlm-onboarding-section .dlm-onboarding-pages {
1471
- width: 55em;
1472
- }
1473
- .dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col {
1474
- padding-top: 0;
1475
- min-width: 31%;
1476
- max-width: 31%;
1477
- }
1478
- }
1479
- /* Extensions */
1480
- .dlm_download_page_dlm-extensions .theme.dlm_extension {background-color: #FFF;}
1481
- .dlm_extensions_wrap h1 a.dlm-reload-button {
1482
- float: right;
1483
- }
1484
- .dlm_extensions_wrap .dlm_extensions {
1485
- padding: 15px 0;
1486
- overflow: hidden;
1487
- }
1488
-
1489
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension a {
1490
- color: #444;
1491
- text-decoration: none;
1492
- }
1493
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper {
1494
- width: 100%;
1495
- background: #419CCB;
1496
- text-align: center;
1497
- }
1498
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper img {
1499
- max-width: 100%;
1500
- margin: 0 auto;
1501
- }
1502
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension h3 {
1503
- padding: 0 20px;
1504
- }
1505
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension p.extension-desc {
1506
- min-height: 85px;
1507
- padding: 0 20px;
1508
- }
1509
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer {
1510
- padding: 15px 15px 15px 0;
1511
- text-align: right;
1512
- background-color: #FAFAFA;
1513
- border-top: 1px solid #dcdcde;
1514
- }
1515
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .button .dashicons {
1516
- vertical-align: middle;
1517
- font-size: 16px;
1518
- }
1519
-
1520
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price {
1521
- font-weight: bold;
1522
- }
1523
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale {
1524
- color: #008000;
1525
- }
1526
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale strike {
1527
- color: #444;
1528
- }
1529
-
1530
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license {
1531
- padding: 0 20px 20px;
1532
- -webkit-box-sizing: border-box;
1533
- -moz-box-sizing: border-box;
1534
- box-sizing: border-box;
1535
- }
1536
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license div.dlm_license_error {
1537
- padding: 0.5em;
1538
- margin-bottom: 15px;
1539
- background: lightYellow;
1540
- }
1541
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license div.dlm_license_error a {
1542
- color: blue;
1543
- text-decoration: underline;
1544
- }
1545
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status {
1546
- padding: 5px 0;
1547
- margin: 5px 0;
1548
- background: red;
1549
- font-weight: bold;
1550
- font-size: 1.2em;
1551
- color: #fff;
1552
- text-align: center;
1553
- }
1554
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status.active {
1555
- background: #008000;
1556
- }
1557
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license input {
1558
- width: 100%;
1559
- margin: 7px 0;
1560
- padding: 7px;
1561
- }
1562
- .dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license a.button-primary {
1563
- width: 100%;
1564
- margin: 5px auto 0;
1565
- color: #fff;
1566
- text-align: center;
1567
- }
1568
- /* Fix Datepicker's UI bug */
1569
- #ui-datepicker-div {
1570
- display: none;
1571
- }
1572
- /* Upsells */
1573
- .wpchill-upsell {
1574
- background: #fff;
1575
- border: 0;
1576
- padding: 15px;
1577
- margin-top: 30px;
1578
- }
1579
- .wpchill-upsell .wpchill-upsell-features {
1580
- text-align: left;
1581
- display: flex;
1582
- flex-wrap: wrap;
1583
- padding: 20px 0;
1584
- }
1585
- .wpchill-upsell .wpchill-upsell-features li {
1586
- width: 33%;
1587
- }
1588
- .wpchill-upsells-wrapper {
1589
- width: 100%;
1590
- }
1591
- .wrap.dlm-admin-settings .form-table {
1592
- width: 65%;
1593
- float: left;
1594
- }
1595
- .wrap.dlm-admin-settings .form-table + .wpchill-upsells-wrapper {
1596
- width: 30%;
1597
- float: right;
1598
- }
1599
-
1600
- .wrap.dlm-admin-settings .dlm-upsell-badge {
1601
- background: green;
1602
- color: #fff;
1603
- padding: 5px 10px;
1604
- font-size: 11px;
1605
- }
1606
- #total_downloads_browser_table a.nav-tab {
1607
- text-transform: capitalize;
1608
- }
1609
-
1610
-
1611
- #dlm-download-page-upsell .inside,
1612
- #dlm-amazon-s3-upsell .inside,
1613
- #dlm-google-drive-upsell .inside,
1614
- #dlm-buttons-upsell .inside {
1615
- display: flex;
1616
- flex-wrap: wrap;
1617
- background: #f1f1f1;
1618
- }
1619
- #dlm-download-page-upsell .inside .wpchill-upsell,
1620
- #dlm-amazon-s3-upsell .inside .wpchill-upsell,
1621
- #dlm-google-drive-upsell .inside .wpchill-upsell,
1622
- #dlm-buttons-upsell .inside .wpchill-upsell {
1623
- background: transparent;
1624
- text-align: center;
1625
- width: 100%;
1626
- margin-top: 0;
1627
- }
1628
- #dlm-download-page-upsell .inside,
1629
- #dlm-amazon-s3-upsell .inside,
1630
- #dlm-google-drive-upsell .inside,
1631
- #dlm-buttons-upsell .inside {
1632
- margin: 0;
1633
- padding: 0;
1634
- }
1635
- .upsells-columns {
1636
- display: flex;
1637
- flex-wrap: wrap;
1638
- align-items: center;
1639
- align-content: center;
1640
- }
1641
- .upsells-columns .upsells-columns-2 {
1642
- width: 50%;
1643
- text-align: center;
1644
- display: flex;
1645
- align-items: center;
1646
- align-content: center;
1647
- }
1648
- .upsells-columns .upsells-column {
1649
- width: 100%;
1650
- text-align: center;
1651
- display: flex;
1652
- align-items: center;
1653
- align-content: center;
1654
- }
1655
- .upsells-columns .upsells-column > * {
1656
- display: inline-block;
1657
- align-content: center;
1658
- vertical-align: middle;
1659
- margin: 0 15px;
1660
- padding: 10px 0;
1661
- }
1662
- .upsells-columns .upsells-column > *.wpchill-upsell {
1663
- position: relative;
1664
- float: none;
1665
- flex-grow: 1;
1666
- display: flex;
1667
- align-items: center;
1668
- }
1669
- .upsells-columns .upsells-column > *.wpchill-upsell .wpchill-upsell-description {
1670
- margin: 0 auto;
1671
- }
1672
- .upsells-columns .upsells-column h3 {
1673
- line-height: 1.3em;
1674
- }
1675
- .upsells-columns .upsells-column:last-child {
1676
- border-top: 1px solid #c3c4c7;
1677
- border-bottom: 1px solid #c3c4c7;
1678
- }
1679
- .upsells-columns .wpchill-upsell {
1680
- margin-top: 0;
1681
- }
1
+ .post-type-dlm_download h1 a.dlm-delete-logs{color:#a00}.post-type-dlm_download h1 a.dlm-delete-logs:hover{color:#fff;background:#a00;border-color:#7c0900}.post-type-dlm_download .dlm-page-header{border-bottom:1px solid #ccc;padding:15px 20px;display:flex;justify-content:space-between;background:#fff;width:calc(100% + 20px);box-sizing:border-box;margin-left:-20px}.post-type-dlm_download .dlm-page-header .dlm-header-links{margin-left:-20px}.post-type-dlm_download .dlm-page-header .dlm-header-links a span{vertical-align:middle}.post-type-dlm_download .dlm-page-header .dlm-header-logo img{max-height:35px}#dlm_logs td{padding:7px 7px;vertical-align:middle}#dlm_logs .check-column{width:1%;padding:0;vertical-align:middle}#dlm_logs .column-status{width:2%}#dlm_logs td.column-status{font-size:10px;vertical-align:middle;text-align:center}#dlm_logs td.column-status span{color:#fff;font-weight:400;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;height:18px;line-height:18px;width:18px;display:inline-block;background:url(../images/log-status-icons.png) top left no-repeat}#dlm_logs td.column-status .completed{background-color:#6cc644}#dlm_logs td.column-status .failed{background-color:#bd2c00;background-position-y:-18px}#dlm_logs td.column-status .redirected{background-color:#1c769b;background-position-y:-36px}#dlm_logs td.column-user_agent,#dlm_logs td.column-user_ip{font-family:monospace;font-weight:400}#dlm_logs span.dlm-description{font-weight:400}#dlm_logs .column-download,#dlm_logs .column-file,#dlm_logs .column-user,#dlm_logs .column-user_ua{width:16%!important}#dlm_logs .column-date,#dlm_logs .column-user_ip{width:6%!important}.post-type-dlm_download .inline-edit-row .inline-edit-col-dlm .inline-edit-col-dlm-inner{margin-top:10px}.dlm-settings-sub-nav{margin:0 0 10px 0;width:100%;border-bottom:1px solid #ccc;box-shadow:0 1px 1px rgba(0,0,0,.04)}.dlm-settings-sub-nav li{margin-right:10px;margin-bottom:-2px}.dlm-settings-sub-nav a{padding:13px;display:block}.dlm-settings-sub-nav .active-section{margin-bottom:-2px}.dlm-settings-sub-nav .active-section a{border-bottom:4px solid #000;padding-bottom:9px;margin-bottom:-2px;font-weight:600}.admin-color-blue .dlm-settings-sub-nav .active-section a{border-bottom-color:#096484}.admin-color-coffee .dlm-settings-sub-nav .active-section a{border-bottom-color:#c7a589}.admin-color-ectoplasm .dlm-settings-sub-nav .active-section a{border-bottom-color:#a3b745}.admin-color-midnight .dlm-settings-sub-nav .active-section a{border-bottom-color:#e14d43}.admin-color-ocean .dlm-settings-sub-nav .active-section a{border-bottom-color:#627c83}.admin-color-sunrise .dlm-settings-sub-nav .active-section a{border-bottom-color:#be3631}.admin-color-light .dlm-settings-sub-nav .active-section a{border-bottom-color:#888}.admin-color-evergreen .dlm-settings-sub-nav .active-section a{border-bottom-color:#36533f}.admin-color-mint .dlm-settings-sub-nav .active-section a{border-bottom-color:#4f6d59}.admin-color-modern .dlm-settings-sub-nav .active-section a{border-bottom-color:#3858e9}.dlm-admin-settings #setting-dlm_decimal_separator,.dlm-admin-settings #setting-dlm_thousand_separator{width:50px}.dlm-admin-settings table td{padding:15px 0}.dlm-admin-settings h3{margin:2em 0 0}ul.download_monitor_file_browser{list-style:none outside;margin:0;border:1px solid #ddd;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:#f9f9f9;padding:5px 5px;-moz-box-shadow:inset 0 0 0 1px #fff;-webkit-box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px #fff}ul.download_monitor_file_browser li{padding:0;margin:0}ul.download_monitor_file_browser li a{color:#21759b;display:block;padding:4px 0 4px 4px;text-decoration:none}ul.download_monitor_file_browser li a:hover{background-color:#eaf2fa}ul.download_monitor_file_browser li a:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f123";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.folder:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f318";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-3g2:before,ul.download_monitor_file_browser li a.filetype-3gp:before,ul.download_monitor_file_browser li a.filetype-asf:before,ul.download_monitor_file_browser li a.filetype-asx:before,ul.download_monitor_file_browser li a.filetype-avi:before,ul.download_monitor_file_browser li a.filetype-mov:before,ul.download_monitor_file_browser li a.filetype-mp4:before,ul.download_monitor_file_browser li a.filetype-mpg:before,ul.download_monitor_file_browser li a.filetype-rm:before,ul.download_monitor_file_browser li a.filetype-srt:before,ul.download_monitor_file_browser li a.filetype-vob:before,ul.download_monitor_file_browser li a.filetype-wmv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f126";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-aif:before,ul.download_monitor_file_browser li a.filetype-iff:before,ul.download_monitor_file_browser li a.filetype-m3u:before,ul.download_monitor_file_browser li a.filetype-m4a:before,ul.download_monitor_file_browser li a.filetype-mid:before,ul.download_monitor_file_browser li a.filetype-midi:before,ul.download_monitor_file_browser li a.filetype-mp3:before,ul.download_monitor_file_browser li a.filetype-mpa:before,ul.download_monitor_file_browser li a.filetype-ra:before,ul.download_monitor_file_browser li a.filetype-wav:before,ul.download_monitor_file_browser li a.filetype-wma:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f127";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li a.filetype-ai:before,ul.download_monitor_file_browser li a.filetype-bmp:before,ul.download_monitor_file_browser li a.filetype-dds:before,ul.download_monitor_file_browser li a.filetype-eps:before,ul.download_monitor_file_browser li a.filetype-gif:before,ul.download_monitor_file_browser li a.filetype-ico:before,ul.download_monitor_file_browser li a.filetype-jpeg:before,ul.download_monitor_file_browser li a.filetype-jpg:before,ul.download_monitor_file_browser li a.filetype-png:before,ul.download_monitor_file_browser li a.filetype-ps:before,ul.download_monitor_file_browser li a.filetype-psd:before,ul.download_monitor_file_browser li a.filetype-pspimage:before,ul.download_monitor_file_browser li a.filetype-svg:before,ul.download_monitor_file_browser li a.filetype-tga:before,ul.download_monitor_file_browser li a.filetype-thm:before,ul.download_monitor_file_browser li a.filetype-tif:before,ul.download_monitor_file_browser li a.filetype-yuv:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}ul.download_monitor_file_browser li.nofiles{color:#999;font-style:italic;padding:4px 0}ul.download_monitor_file_browser li ul{list-style:none outside;margin:0;padding:0 0 0 28px}ul.download_monitor_file_browser li ul.loading{background:url(../images/ajax-loader.gif) no-repeat 24px 0;height:32px}table.wp-list-table .column-thumb{width:44px;text-align:center;white-space:nowrap}table.wp-list-table .column-dlm_download_cat,table.wp-list-table .column-dlm_download_tag,table.wp-list-table .column-file{width:11%!important}table.wp-list-table .column-file,table.wp-list-table .column-title{width:17%!important}table.wp-list-table .column-download_id,table.wp-list-table .column-version{width:5em}table.wp-list-table th.column-download_count span:first-child,table.wp-list-table th.column-featured span:first-child,table.wp-list-table th.column-members_only span:first-child,table.wp-list-table th.column-redirect_only span:first-child,table.wp-list-table th.column-thumb span:first-child{float:none;display:inline-block;width:1em;height:1em;line-height:1em;padding:2px 0 0 0;overflow:hidden}table.wp-list-table th.column-download_count .sorting-indicator,table.wp-list-table th.column-featured .sorting-indicator,table.wp-list-table th.column-members_only .sorting-indicator,table.wp-list-table th.column-redirect_only .sorting-indicator,table.wp-list-table th.column-thumb .sorting-indicator{float:right}table.wp-list-table th.column-thumb{width:52px;text-align:center}table.wp-list-table th.column-thumb span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f128";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-download_count{width:5em}table.wp-list-table th.column-download_count span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f346";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-members_only{width:3.5em}table.wp-list-table th.column-members_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f338";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-redirect_only{width:3.5em}table.wp-list-table th.column-redirect_only span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f103";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table th.column-featured{width:3.5em}table.wp-list-table th.column-featured span:first-child:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f155";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count,table.wp-list-table td.column-featured,table.wp-list-table td.column-members_only,table.wp-list-table td.column-redirect_only{text-align:left;padding-left:11px}table.wp-list-table td.column-download_count span.na,table.wp-list-table td.column-featured span.na,table.wp-list-table td.column-members_only span.na,table.wp-list-table td.column-redirect_only span.na{color:#999;width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.na:before,table.wp-list-table td.column-featured span.na:before,table.wp-list-table td.column-members_only span.na:before,table.wp-list-table td.column-redirect_only span.na:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table td.column-download_count span.yes,table.wp-list-table td.column-featured span.yes,table.wp-list-table td.column-members_only span.yes,table.wp-list-table td.column-redirect_only span.yes{width:1em;height:1em;line-height:1em;display:inline-block;overflow:hidden;vertical-align:middle}table.wp-list-table td.column-download_count span.yes:before,table.wp-list-table td.column-featured span.yes:before,table.wp-list-table td.column-members_only span.yes:before,table.wp-list-table td.column-redirect_only span.yes:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f147";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}table.wp-list-table .column-thumb img{padding:2px;margin:0;border:1px solid #dfdfdf;vertical-align:middle;width:32px;height:32px}#download-monitor-file .inside{padding:0;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .close_all,#download-monitor-file .dlm-metaboxes-wrapper .expand_all{float:right;margin-left:1em;line-height:22px;text-decoration:none}#download-monitor-file .dlm-metaboxes-wrapper .expand_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f168";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .close_all:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-file .dlm-metaboxes-wrapper p.toolbar a.button{float:left;margin:0}#download-monitor-file .dlm-metaboxes-wrapper .fr,#download-monitor-file .dlm-metaboxes-wrapper button.add_attribute,#download-monitor-file .dlm-metaboxes-wrapper button.add_variable_attribute,#download-monitor-file .dlm-metaboxes-wrapper select.attribute_taxonomy{float:right;margin:0 0 0 6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metaboxes{padding:0 12px 0}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin:9px 0;border-width:1px;border-style:dashed}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox{background:#ececec;border:1px solid #ececec;margin:9px 0!important}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3{margin:0!important;padding:6px!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 button{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 strong{line-height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 select{font-family:sans-serif}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox h3 .handlediv{background-position:6px 5px!important;display:none!important;height:24px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:hover h3 .handlediv{display:block}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table{width:100%;position:relative;background:#fff;padding:3px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td{text-align:left;padding:6px 6px;vertical-align:top;border:0;line-height:26px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td label{text-align:left;display:block;line-height:21px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input{float:left;min-width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td textarea{height:7.5em}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td select{width:100%}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.short{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.checkbox{width:auto;min-width:inherit;vertical-align:middle;display:inline;float:none}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.date-picker-field{width:50%;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.hour,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td input.minute{width:2em;min-width:inherit;float:none;display:inline}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table td.attribute_name{width:200px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .minus,#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .plus{margin-top:6px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fl{float:left}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox table .fr{float:right}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox:first-child h3{background-color:#fafafa;border-bottom:1px solid #dcdcde}#download-monitor-file .dlm-metaboxes-wrapper .plus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f132";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .minus:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f460";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_upload_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f317";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-file .dlm-metaboxes-wrapper .dlm_browse_for_file:before{font-family:dashicons!important;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0 4px 0 0;content:"\f322";top:1px;left:-1px;font-size:1em;line-height:inherit;position:relative;vertical-align:top}#download-monitor-information .dlm_information_panel div p{overflow:hidden;width:100%;font-weight:700;box-sizing:border-box;line-height:28px;margin-bottom:5px}#download-monitor-information .dlm_information_panel input{margin:0;border-top-right-radius:0;border-bottom-right-radius:0;flex-grow:1;width:calc(100% - 45px)}#download-monitor-options .inside{padding:0;margin:0}#download-monitor-options .form-field-checkbox label{display:inline;padding:0 0 4px}#download-monitor-options .form-field-checkbox input{display:inline-block;width:auto;vertical-align:middle}#download-monitor-options .form-field-checkbox .dlm-description{padding:4px 0 0 0;display:block}#download-monitor-options .access_permissions{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-options .access_permissions h4{margin-bottom:.5em;margin:0 0 .5em}#download-monitor-options .access_permissions ul{background:#fff;border:1px solid #dfdfdf;height:110px;overflow:auto;padding:.5em .9em;margin:0}#download-monitor-options p{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;padding:7px 12px!important;overflow:hidden;zoom:1}#download-monitor-options p.not-active{opacity:.7}#download-monitor-options .options_upsell_link{color:unset;text-decoration:none}#download-monitor-options .dlm-upsell-badge{font-size:10px;background:#f4daa4;padding:2px 5px;display:inline-block;margin-left:5px;border-radius:10px}#insert-download{padding:20px 20px}#insert-download #drag-drop-area,#insert-download #insert-shortcode{margin:1em 0}#insert-download .error,#insert-download .updated{margin-left:0;margin-right:0}#insert-download h2{margin-top:0}#insert-download label{margin:0 0 .25em 0;display:block;font-size:1.1em}#insert-download span.description{display:block}#insert-download input.input{margin:0 0 .25em 0;display:block;width:100%;font-size:1.1em}#insert-download .add_link{float:right}#insert-download ul.page-numbers{overflow:hidden;zoom:1;margin:0 auto;padding:0;text-align:center}#insert-download ul.page-numbers li{display:inline-block;margin:0;list-style:none outside;line-height:1em}#insert-download ul.page-numbers li a,#insert-download ul.page-numbers li span{text-decoration:none;border:1px solid #ddd;-webkit-border-radius:4px;border-radius:4px;padding:8px;display:block}#insert-download ul.page-numbers li span{border-color:#eee}#insert-download legend{font-weight:700;display:block;margin:0 0 1em}#insert-download fieldset label{display:block;margin:0 0 .5em}.dlm-code-nginx-rules{display:block}.settings_panel .form-table td{padding-left:0}.settings_panel .dlm-lazy-select-loader{display:inline-block;vertical-align:middle;padding:0 0 0 3px}.settings_panel .dlm-lazy-select-loader img{display:inline-block;height:25px;width:25px;margin-top:1px}.dlm-reports h1 .dlm-reports-actions{float:right}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector,.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period,.dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher{margin:0 5px;float:left}.dlm-reports h1 .dlm-reports-actions>:last-child{margin-right:0}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector{position:relative;font-size:14px;padding:0 .5em 0 1em;background:#fff;border:1px solid #ccc;border-radius:3px;user-select:none;cursor:pointer}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm-arrow:before{font-family:dashicons!important;content:"\f140";font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;font-size:1.6em;vertical-align:middle;margin-top:-2px}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay{display:block;width:466px;padding:10px;background:#fff;border:1px solid #ccc;position:absolute;top:30px;right:0;z-index:10;overflow:hidden}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date{font-size:70%;margin-right:5px;float:left;z-index:11}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline{border:0}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline .ui-state-highlight{background:#e6e6e6 url(../images/jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;color:#555;border:1px solid #d3d3d3}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline .ui-state-active{border:1px solid #aaa;background:#fff url(../images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline td,.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline th{padding:0;margin:0;line-height:2em}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline td a,.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_date .ui-datepicker-inline th a{text-align:center!important}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-date-selector .dlm_rdrs_overlay .dlm_rdrs_actions{width:70px;padding-left:10px;text-align:center;float:left}.dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher{display:block;margin-top:1px;padding-top:4px;color:#23282d;text-decoration:none}.dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher:before{font-family:dashicons!important;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;font-size:1.4em}.dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher.dlm-line:before{content:"\f238"}.dlm-reports h1 .dlm-reports-actions a.dlm-reports-header-chart-switcher.dlm-bar:before{content:"\f185"}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a{border-color:#ccc!important}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a:first-child{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.dlm-reports h1 .dlm-reports-actions .dlm-reports-header-period a:last-child{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0}.dlm-reports .dlm_reports_loader{position:absolute;width:32px;height:32px;top:50%;left:50%;margin:-16px 0 0 -16px}.dlm-reports .dlm-reports-block-chart{width:100%;height:300px;margin-top:20px;background:#fff;border:1px solid #e5e5e5;overflow:hidden}.dlm-reports .dlm-reports-block-chart .chart-container h6{display:none}.dlm-reports .dlm-reports-block-summary #popular span{line-height:1em}.dlm-reports .dlm-reports-block{position:relative;box-sizing:border-box;width:100%;padding:20px 10px;margin-top:20px;background:#fff;border:1px solid #e5e5e5;overflow:hidden;float:left}.dlm-reports .dlm-reports-block.dlm-reports-block-half{width:49%;margin-right:1%}.dlm-reports .dlm-reports-block.dlm-reports-block-half-right{width:49%;margin-left:1%}.dlm-reports .dlm-reports-block .dlm-reports-placeholder-no-data{display:inline-block;width:100%;font-size:1.5em;color:#b4b9be;font-style:italic;text-align:center}.dlm-reports .dlm-reports-block ul{box-sizing:border-box;width:100%;padding:0;margin:0}.dlm-reports .dlm-reports-block ul li{display:inline-block;width:33%;padding:5px 0}.dlm-reports .dlm-reports-block ul li label,.dlm-reports .dlm-reports-block ul li span{display:block;width:100%;text-align:center}.dlm-reports .dlm-reports-block ul li span{font-size:2.5em;font-weight:700;padding:.5em 0 0}.dlm-reports .dlm-reports-block table{width:100%}.dlm-reports .dlm-reports-block table td,.dlm-reports .dlm-reports-block table th{text-align:center;padding:10px 0;border-bottom:1px solid #e5e5e5}.dlm-reports .dlm-reports-block table td:first-child,.dlm-reports .dlm-reports-block table th:first-child{text-align:left}.dlm-reports .dlm-reports-block table th{padding-bottom:20px}.dlm-reports-block-summary{background:#333!important;color:#fff}.post-type-dlm_product table.wp-list-table .column-title{width:65%!important}.dlm_mb_shop_product_information .dlm_shop_field_row{width:100%;overflow:hidden}.dlm_mb_shop_product_information .dlm_shop_field_row label.dlm_shop_field_label{display:inline-block;width:20%;height:100%;line-height:2.2em;float:left}.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input{display:inline-block;width:50%;float:left}.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .dlm_shop_input{width:100%;padding:5px 7px}.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-selection--multiple{border:1px solid #ddd}.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-search,.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-selection__choice{margin-bottom:0}.dlm_mb_shop_product_information .dlm_shop_field_row span.dlm_shop_field_input .select2-search__field{padding-top:3px}.dlm-order-overview #dlm_empty_trash{margin-left:3px}.dlm-order-overview .wp-list-table td .column-id{width:25%}.dlm-order-details{max-width:1250px;margin-left:auto;margin-right:auto;padding-right:20px}.dlm-order-details h1{padding-bottom:25px}.dlm-order-details .dlm-order-details-main,.dlm-order-details .dlm-order-details-side{width:100%;float:left}.dlm-order-details .dlm-order-details-block{padding:0;margin-bottom:20px;line-height:1;border:1px solid #e5e5e5;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.dlm-order-details .dlm-order-details-block h2.dlm-order-details-block-title{font-size:14px;padding:8px 12px;margin:0;line-height:1.4;border-bottom:1px solid #eee}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside{margin:6px 0 0 0;padding:6px 12px 12px;line-height:1.4em;font-size:13px}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside label{display:block;font-weight:700;padding-bottom:6px}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside p{padding:0;margin:0}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul,.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul li{list-style:none;padding:0;margin:0}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside ul li{padding:6px 0}.dlm-order-details .dlm-order-details-block .dlm-order-details-block-inside .dlm-order-details-current-state{width:70%;height:30px}.dlm-order-details .dlm-order-details-block.dlm-order-details-customer .dlm-order-details-customer-image{float:right}.dlm-order-details .dlm-order-details-block.dlm-order-details-customer ul li{margin-bottom:4px;padding:0}.dlm-order-details .dlm-order-details-block.dlm-order-details-customer ul li:first-child{font-weight:700}.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items{overflow:hidden}.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview{width:25%;float:right}.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview td,.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview th{padding-top:1.5em;padding-bottom:1.5em;text-align:right}.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview th{width:50%;font-weight:400}.dlm-order-details .dlm-order-details-block.dlm-order-details-order-items .dlm-order-details-overview td{padding-right:1em;font-weight:700}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table{width:100%}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td,.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th{text-align:center}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td:first-child,.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th:first-child{text-align:left;padding-left:.5em}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th{padding-top:.5em;padding-bottom:.5em;border-bottom:2px solid #c3c1bc}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td{padding-top:1.5em;padding-bottom:1.5em;border-bottom:1px solid #c3c1bc}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-details-order-items-item-total,.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-details-order-items-item-total{text-align:right;padding-right:1em}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-transaction-processor-id,.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-transaction-processor-id{display:none}.dlm-order-details .dlm-order-details-block .dlm-order-details-update-successful{font-size:2em;padding:.2em .3em;color:#46b450}@media (min-width:768px){.dlm-order-details .dlm-order-details-main{width:62%;float:left}.dlm-order-details .dlm-order-details-side{width:35%;float:right}.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table td.dlm-order-transaction-processor-id,.dlm-order-details .dlm-order-details-block table.dlm-order-details-data-table th.dlm-order-transaction-processor-id{display:table-cell}}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-one-col{margin:0 auto;max-width:680px}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-cta{margin-top:40px;text-align:center}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col{max-width:680px;margin:40px auto 0;overflow:hidden;display:flex;justify-content:space-between;flex-wrap:wrap}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col{padding-top:2.5em;flex:1;align-self:flex-start;min-width:100%;max-width:100%}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col img{width:100%}.dlm-onboarding .dlm-onboarding-section h2{margin:60px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.dlm-onboarding .dlm-onboarding-section p{max-width:55em;margin:.6em auto 0 auto}.dlm-onboarding .dlm-onboarding-section a.button-hero{height:46px;font-size:14px;line-height:44px;padding:0 36px;font-weight:700;text-align:center}.dlm-onboarding .dlm-onboarding-pages{max-width:55em;margin:0 auto;padding:2em 0 0}.dlm-onboarding .dlm-onboarding-pages a.button-hero{width:170px}.dlm-onboarding .dlm-onboarding-pages a.button-hero.dlm-page-exists{background:#46b450;border-color:#46b450 #4a8442 #467a3f;box-shadow:0 2px 0 #467a3f;text-shadow:0 -1px 1px #4a8442,1px 0 1px #4a8442,0 1px 1px #4a8442,-1px 0 1px #4a8442}.dlm-onboarding .dlm-onboarding-pages a.button-hero.dlm-page-exists:active{box-shadow:0 2px 0 #467a3f}.dlm-onboarding .dlm-onboarding-pages td,.dlm-onboarding .dlm-onboarding-pages th{padding:1em 0;border-bottom:1px solid #ccc}.dlm-onboarding .dlm-onboarding-pages th{width:13%;min-width:6em;text-align:left}.dlm-onboarding .dlm-onboarding-pages td{padding-right:.5em;padding-left:.5em}.dlm-onboarding .dlm-onboarding-pages td.dlm-onboarding-pages-page-title{font-weight:700}@media (min-width:768px){.dlm-onboarding .dlm-onboarding-section .dlm-onboarding-pages{width:55em}.dlm-onboarding .dlm-onboarding-section.dlm-onboarding-section-three-col .dlm-onboarding-col{padding-top:0;min-width:31%;max-width:31%}}.dlm_extensions_wrap h1 a.dlm-reload-button{float:right}.dlm_extensions_wrap .dlm_extensions{padding:15px 0;overflow:hidden}.dlm_extensions_wrap .dlm_extensions div.dlm_extension a{color:#444;text-decoration:none}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper{width:100%;background:#419ccb;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .dlm_extension_img_wrapper img{max-width:100%;margin:0 auto}.dlm_extensions_wrap .dlm_extensions div.dlm_extension h3{padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension div.extension-desc{min-height:85px;padding:0 20px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer{padding:15px 15px 15px 0;text-align:right;background-color:#fafafa;border-top:1px solid #dcdcde}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price{font-weight:700}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale{color:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .loop_price.sale strike{color:#444}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .product_footer .button .dashicons{vertical-align:middle;font-size:16px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license{padding:0 20px 20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license div.dlm_license_error{padding:.5em;margin-bottom:15px;background:#ffffe0}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license div.dlm_license_error a{color:#00f;text-decoration:underline}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status{padding:5px 0;margin:5px 0;background:red;font-weight:700;font-size:1.2em;color:#fff;text-align:center}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license p.license-status.active{background:green}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license input{width:100%;margin:7px 0;padding:7px}.dlm_extensions_wrap .dlm_extensions div.dlm_extension .extension_license a.button-primary{width:100%;margin:5px auto 0;color:#fff;text-align:center}#ui-datepicker-div{display:none}.wpchill-upsell{background:#fff;border:0;padding:15px;margin-top:30px}.wpchill-upsell .wpchill-upsell-features{text-align:left;display:flex;flex-wrap:wrap;padding:20px 0}.wpchill-upsell .wpchill-upsell-features li{width:33%}.wpchill-upsells-wrapper{width:100%}.wrap.dlm-admin-settings .form-table{width:65%;float:left}.wrap.dlm-admin-settings .form-table+.wpchill-upsells-wrapper{width:30%;float:right}.wrap.dlm-admin-settings .dlm-upsell-badge{font-size:10px;background:#f4daa4;padding:2px 5px;display:inline-block;margin-left:10px;border-radius:10px}#total_downloads_browser_table a.nav-tab{text-transform:capitalize}#dlm-amazon-s3-upsell .inside,#dlm-buttons-upsell .inside,#dlm-download-page-upsell .inside,#dlm-google-drive-upsell .inside{display:flex;flex-wrap:wrap;background:#f1f1f1}#dlm-amazon-s3-upsell .inside .wpchill-upsell,#dlm-buttons-upsell .inside .wpchill-upsell,#dlm-download-page-upsell .inside .wpchill-upsell,#dlm-google-drive-upsell .inside .wpchill-upsell{background:0 0;text-align:center;width:100%;margin-top:0}#dlm-amazon-s3-upsell .inside,#dlm-buttons-upsell .inside,#dlm-download-page-upsell .inside,#dlm-google-drive-upsell .inside{margin:0;padding:0}.upsells-columns{display:flex;flex-wrap:wrap;align-items:center;align-content:center}.upsells-columns .upsells-columns-2{width:50%;text-align:center;display:flex;align-items:center;align-content:center}.upsells-columns .upsells-column{width:100%;text-align:center;display:flex;align-items:center;align-content:center}.upsells-columns .upsells-column>*{display:inline-block;align-content:center;vertical-align:middle;margin:0 15px;padding:10px 0}.upsells-columns .upsells-column>.wpchill-upsell{position:relative;float:none;flex-grow:1;display:flex;align-items:center}.upsells-columns .upsells-column>.wpchill-upsell .wpchill-upsell-description{margin:0 auto}.upsells-columns .upsells-column h3{line-height:1.3em}.upsells-columns .upsells-column:last-child{border-top:1px solid #c3c4c7;border-bottom:1px solid #c3c4c7}.upsells-columns .wpchill-upsell{margin-top:0}.dlm_download_page_dlm-extensions .theme.dlm_extension{background-color:#fff}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/admin.less CHANGED
@@ -28,6 +28,29 @@
28
  }
29
  }
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  #dlm_logs {
@@ -97,37 +120,122 @@
97
  }
98
  }
99
 
100
- /* Settings */
101
- .nav-section-wrapper {
102
- padding: 0;
103
- margin: 0;
 
 
104
  li {
105
- display: inline-block;
106
- padding: 0 0 0 2px;
107
- margin: 0 2px;
108
-
 
 
 
 
 
109
  a {
110
- text-decoration: none;
 
 
 
111
  }
 
 
112
 
113
- &.active-section {
 
 
114
  a {
115
- font-weight: bold;
116
- color: #000;
117
  }
118
  }
119
- &:after {
120
- content: "|";
121
- padding-left: 7px;
 
 
 
 
 
122
  }
123
- &:last-child:after {
124
- content: "";
125
- padding: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  }
127
  }
128
  }
129
 
130
- /** Settings */
131
  .dlm-admin-settings {
132
 
133
  #setting-dlm_decimal_separator, #setting-dlm_thousand_separator {
@@ -392,7 +500,6 @@ table.wp-list-table {
392
  float: right;
393
  }
394
  strong {
395
- font-weight: normal;
396
  line-height: 24px;
397
  }
398
  select {
@@ -480,22 +587,8 @@ table.wp-list-table {
480
  &:first-child {
481
  /* main file */
482
  h3 {
483
- background: #EAF2FA;
484
- background-image: linear-gradient(bottom, rgb(218, 230, 242) 0%, rgb(234, 242, 250) 100%);
485
- background-image: -o-linear-gradient(bottom, rgb(218, 230, 242) 0%, rgb(234, 242, 250) 100%);
486
- background-image: -moz-linear-gradient(bottom, rgb(218, 230, 242) 0%, rgb(234, 242, 250) 100%);
487
- background-image: -webkit-linear-gradient(bottom, rgb(218, 230, 242) 0%, rgb(234, 242, 250) 100%);
488
- background-image: -ms-linear-gradient(bottom, rgb(218, 230, 242) 0%, rgb(234, 242, 250) 100%);
489
-
490
- background-image: -webkit-gradient(
491
- linear,
492
- left bottom,
493
- left top,
494
- color-stop(0, rgb(218, 230, 242)),
495
- color-stop(1, rgb(234, 242, 250))
496
- );
497
- border-color: #d3deea;
498
- color: #21759B;
499
  }
500
  }
501
  }
@@ -516,27 +609,24 @@ table.wp-list-table {
516
 
517
  /* Writepanel forms */
518
  #download-monitor-information {
519
- p {
520
- overflow: hidden;
521
- label {
522
- width: 100%;
523
- // font-size: 11px;
524
- font-weight: bold;
525
- box-sizing: border-box;
526
- line-height: 28px;
527
- float: left;
528
- input {
529
- width: 65%;
530
- padding: 5px;
531
- font-size: 11px;
532
- font-weight: normal;
533
- background: #eaeaea;
534
- border: 0;
535
- box-shadow: none;
536
  box-sizing: border-box;
537
- float: right;
 
538
  }
539
  }
 
 
 
 
 
 
 
540
  }
541
  }
542
 
@@ -588,6 +678,23 @@ table.wp-list-table {
588
  padding: 7px 12px !important;
589
  overflow: hidden;
590
  zoom: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
591
  }
592
  }
593
 
@@ -1319,7 +1426,6 @@ table.wp-list-table {
1319
  padding: 15px 0;
1320
  overflow: hidden;
1321
  div.dlm_extension {
1322
- cursor: auto !important;
1323
  a {
1324
  color: #444;
1325
  text-decoration: none;
@@ -1337,12 +1443,15 @@ table.wp-list-table {
1337
  padding: 0 20px;
1338
 
1339
  }
1340
- p.extension-desc {
1341
  min-height: 85px;
1342
  padding: 0 20px;
1343
  }
1344
  .product_footer {
1345
- padding: 0 20px 15px;
 
 
 
1346
  .loop_price {
1347
  font-weight: bold;
1348
  &.sale {
@@ -1352,11 +1461,11 @@ table.wp-list-table {
1352
  }
1353
  }
1354
  }
1355
- .loop_more {
1356
- color: #459ac9;
1357
- text-decoration: none;
1358
- font-weight: bold;
1359
- float: right;
1360
  }
1361
  }
1362
  .extension_license {
@@ -1445,28 +1554,13 @@ table.wp-list-table {
1445
  }
1446
  }
1447
 
1448
- .nav-tab-wrapper {
1449
-
1450
- a.nav-tab {
1451
- margin: 0 auto;
1452
- border-right: 0;
1453
-
1454
- &:first-child {
1455
- border-top-left-radius: 5px;
1456
- }
1457
-
1458
- &:last-child {
1459
- border-top-right-radius: 5px;
1460
- border-right: 1px solid #c3c4c7;
1461
- }
1462
- }
1463
- }
1464
-
1465
  .dlm-upsell-badge {
1466
- background:green;
1467
- color:#fff;
1468
- padding:5px 10px;
1469
- font-size:11px;
 
 
1470
  }
1471
  }
1472
 
@@ -1476,28 +1570,6 @@ table.wp-list-table {
1476
  }
1477
  }
1478
 
1479
- .post-type-dlm_download {
1480
-
1481
- .nav-tab-wrapper {
1482
-
1483
- a.nav-tab {
1484
- margin: 0 auto;
1485
- border-right: 0;
1486
- border-bottom:0;
1487
-
1488
- &:first-child {
1489
- border-top-left-radius: 5px;
1490
- }
1491
-
1492
- &:last-child,
1493
- &.last_tab{
1494
- border-top-right-radius: 5px;
1495
- border-right: 1px solid #c3c4c7;
1496
- }
1497
- }
1498
- }
1499
- }
1500
-
1501
  #dlm-download-page-upsell,
1502
  #dlm-amazon-s3-upsell ,
1503
  #dlm-google-drive-upsell,
@@ -1578,3 +1650,8 @@ table.wp-list-table {
1578
  margin-top: 0;
1579
  }
1580
  }
 
 
 
 
 
28
  }
29
  }
30
  }
31
+
32
+ .dlm-page-header {
33
+ border-bottom: 1px solid #ccc;
34
+ padding: 15px 20px;
35
+ display: flex;
36
+ justify-content: space-between;
37
+ background: #fff;
38
+ width: calc( 100% + 20px );
39
+ box-sizing: border-box;
40
+ margin-left: -20px;
41
+
42
+ .dlm-header-links {
43
+ margin-left: -20px;
44
+ a {
45
+ span {
46
+ vertical-align: middle;
47
+ }
48
+ }
49
+ }
50
+ .dlm-header-logo img {
51
+ max-height : 35px;
52
+ }
53
+ }
54
  }
55
 
56
  #dlm_logs {
120
  }
121
  }
122
 
123
+ /** Settings */
124
+ .dlm-settings-sub-nav {
125
+ margin: 0 0 10px 0;
126
+ width: 100%;
127
+ border-bottom: 1px solid #ccc;
128
+ box-shadow: 0 1px 1px rgba(0,0,0,.04);
129
  li {
130
+ margin-right: 10px;
131
+ margin-bottom: -2px;
132
+ }
133
+ a {
134
+ padding: 13px;
135
+ display: block;
136
+ }
137
+ .active-section {
138
+ margin-bottom: -2px;
139
  a {
140
+ border-bottom: 4px solid #000;
141
+ padding-bottom: 9px;
142
+ margin-bottom: -2px;
143
+ font-weight: 600;
144
  }
145
+ }
146
+ }
147
 
148
+ .admin-color-blue {
149
+ .dlm-settings-sub-nav {
150
+ .active-section {
151
  a {
152
+ border-bottom-color: #096484;
 
153
  }
154
  }
155
+ }
156
+ }
157
+ .admin-color-coffee {
158
+ .dlm-settings-sub-nav {
159
+ .active-section {
160
+ a {
161
+ border-bottom-color: #c7a589;
162
+ }
163
  }
164
+ }
165
+ }
166
+ .admin-color-ectoplasm {
167
+ .dlm-settings-sub-nav {
168
+ .active-section {
169
+ a {
170
+ border-bottom-color: #a3b745;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ .admin-color-midnight {
176
+ .dlm-settings-sub-nav {
177
+ .active-section {
178
+ a {
179
+ border-bottom-color: #e14d43;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ .admin-color-ocean {
185
+ .dlm-settings-sub-nav {
186
+ .active-section {
187
+ a {
188
+ border-bottom-color: #627c83;
189
+ }
190
+ }
191
+ }
192
+ }
193
+ .admin-color-sunrise {
194
+ .dlm-settings-sub-nav {
195
+ .active-section {
196
+ a {
197
+ border-bottom-color: #be3631;
198
+ }
199
+ }
200
+ }
201
+ }
202
+ .admin-color-light {
203
+ .dlm-settings-sub-nav {
204
+ .active-section {
205
+ a {
206
+ border-bottom-color: #888;
207
+ }
208
+ }
209
+ }
210
+ }
211
+ .admin-color-evergreen {
212
+ .dlm-settings-sub-nav {
213
+ .active-section {
214
+ a {
215
+ border-bottom-color: #36533f;
216
+ }
217
+ }
218
+ }
219
+ }
220
+ .admin-color-mint {
221
+ .dlm-settings-sub-nav {
222
+ .active-section {
223
+ a {
224
+ border-bottom-color: #4f6d59;
225
+ }
226
+ }
227
+ }
228
+ }
229
+ .admin-color-modern {
230
+ .dlm-settings-sub-nav {
231
+ .active-section {
232
+ a {
233
+ border-bottom-color: #3858e9;
234
+ }
235
  }
236
  }
237
  }
238
 
 
239
  .dlm-admin-settings {
240
 
241
  #setting-dlm_decimal_separator, #setting-dlm_thousand_separator {
500
  float: right;
501
  }
502
  strong {
 
503
  line-height: 24px;
504
  }
505
  select {
587
  &:first-child {
588
  /* main file */
589
  h3 {
590
+ background-color: #FAFAFA;
591
+ border-bottom: 1px solid #dcdcde;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
592
  }
593
  }
594
  }
609
 
610
  /* Writepanel forms */
611
  #download-monitor-information {
612
+ .dlm_information_panel {
613
+ div {
614
+ p {
615
+ overflow: hidden;
616
+ width: 100%;
617
+ font-weight: bold;
 
 
 
 
 
 
 
 
 
 
 
618
  box-sizing: border-box;
619
+ line-height: 28px;
620
+ margin-bottom: 5px;
621
  }
622
  }
623
+ input {
624
+ margin: 0;
625
+ border-top-right-radius: 0;
626
+ border-bottom-right-radius: 0;
627
+ flex-grow: 1;
628
+ width: calc(100% - 45px);
629
+ }
630
  }
631
  }
632
 
678
  padding: 7px 12px !important;
679
  overflow: hidden;
680
  zoom: 1;
681
+
682
+ &.not-active {
683
+ opacity: 0.7;
684
+ }
685
+ }
686
+ .options_upsell_link {
687
+ color: unset;
688
+ text-decoration: none;
689
+ }
690
+
691
+ .dlm-upsell-badge {
692
+ font-size: 10px;
693
+ background: #f4daa4;
694
+ padding: 2px 5px;
695
+ display: inline-block;
696
+ margin-left: 5px;
697
+ border-radius: 10px;
698
  }
699
  }
700
 
1426
  padding: 15px 0;
1427
  overflow: hidden;
1428
  div.dlm_extension {
 
1429
  a {
1430
  color: #444;
1431
  text-decoration: none;
1443
  padding: 0 20px;
1444
 
1445
  }
1446
+ div.extension-desc {
1447
  min-height: 85px;
1448
  padding: 0 20px;
1449
  }
1450
  .product_footer {
1451
+ padding: 15px 15px 15px 0;
1452
+ text-align: right;
1453
+ background-color: #FAFAFA;
1454
+ border-top: 1px solid #dcdcde;
1455
  .loop_price {
1456
  font-weight: bold;
1457
  &.sale {
1461
  }
1462
  }
1463
  }
1464
+ .button {
1465
+ .dashicons {
1466
+ vertical-align: middle;
1467
+ font-size: 16px;
1468
+ }
1469
  }
1470
  }
1471
  .extension_license {
1554
  }
1555
  }
1556
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1557
  .dlm-upsell-badge {
1558
+ font-size: 10px;
1559
+ background: #f4daa4;
1560
+ padding: 2px 5px;
1561
+ display: inline-block;
1562
+ margin-left: 10px;
1563
+ border-radius: 10px;
1564
  }
1565
  }
1566
 
1570
  }
1571
  }
1572
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1573
  #dlm-download-page-upsell,
1574
  #dlm-amazon-s3-upsell ,
1575
  #dlm-google-drive-upsell,
1650
  margin-top: 0;
1651
  }
1652
  }
1653
+ .dlm_download_page_dlm-extensions{
1654
+ .theme.dlm_extension {
1655
+ background-color: #FFF;
1656
+ }
1657
+ }
assets/css/dlm-uninstall.css CHANGED
@@ -1 +1,151 @@
1
- .dlm-uninstall-form-active .dlm-uninstall-form-bg{background:rgba(0,0,0,.5);position:fixed;top:0;left:0;width:100%;height:100%}.dlm-uninstall-form-wrapper{position:fixed;z-index:999;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;margin:0 auto}.dlm-uninstall-form-wrapper .uninstall{text-align:center}.dlm-uninstall-form-active .dlm-uninstall-form-wrapper{display:block;z-index:999}.dlm-uninstall-form{display:none}.dlm-uninstall-form-active .dlm-uninstall-form{position:absolute;left:0;right:0;margin:0 auto;top:50%;transform:translateY(-50%);max-width:600px;background:#fff;white-space:normal}.dlm-uninstall-form-head{background:#774cce;padding:8px 18px;position:relative}.dlm-uninstall-form-head h3{color:#fff}.dlm-uninstall-form-body{padding:8px 18px;color:#444}.deactivating-spinner{display:none}.deactivating-spinner .spinner{float:none;margin:4px 4px 0 18px;vertical-align:bottom;visibility:visible}.toggle-spinner .deactivating-spinner{display:block!important}.dlm-uninstall-form-footer p{display:flex;align-items:center;justify-content:space-between}.dlm-uninstall-form.process-response .dlm-uninstall-form-body{position:relative}.dlm-uninstall-form.process-response .dlm-uninstall-form-body:after{content:"";display:block;position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,.5)}.dlm-uninstall-form-head .close-uninstall-form{position:absolute;right:15px;color:#fff;font-family:Arial;font-size:14px;display:inline-block;top:50%;transform:translateY(-50%);cursor:pointer}.dlm-red-text,.dlm-red-text:hover{color:red;font-weight:700}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .dlm-uninstall-form-active .dlm-uninstall-form-bg {
2
+ background: rgba(0, 0, 0, .5);
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ width: 100%;
7
+ height: 100%
8
+ }
9
+
10
+ .dlm-uninstall-form-wrapper {
11
+ position: fixed;
12
+ z-index: 999;
13
+ display: none;
14
+ width: 100%;
15
+ height: 100%;
16
+ top: 0;
17
+ left: 0;
18
+ right: 0;
19
+ bottom: 0;
20
+ margin: 0 auto
21
+ }
22
+
23
+ .dlm-uninstall-form-wrapper .uninstall {
24
+ text-align: center
25
+ }
26
+
27
+ .dlm-uninstall-form-active .dlm-uninstall-form-wrapper {
28
+ display: block;
29
+ z-index: 999
30
+ }
31
+
32
+ .dlm-uninstall-form {
33
+ display: none
34
+ }
35
+
36
+ .dlm-uninstall-form-active .dlm-uninstall-form {
37
+ position: absolute;
38
+ left: 0;
39
+ right: 0;
40
+ margin: 0 auto;
41
+ top: 50%;
42
+ transform: translateY(-50%);
43
+ max-width: 600px;
44
+ background: #fff;
45
+ white-space: normal
46
+ }
47
+
48
+ .dlm-uninstall-form-head {
49
+ background: #774cce;
50
+ padding: 8px 18px;
51
+ position: relative
52
+ }
53
+
54
+ .dlm-uninstall-form-head h3 {
55
+ color: #fff
56
+ }
57
+
58
+ .dlm-uninstall-form-body {
59
+ padding: 8px 18px;
60
+ color: #444
61
+ }
62
+
63
+ .deactivating-spinner {
64
+ display: none
65
+ }
66
+
67
+ .deactivating-spinner .spinner {
68
+ float: none;
69
+ margin: 4px 4px 0 18px;
70
+ vertical-align: bottom;
71
+ visibility: visible
72
+ }
73
+
74
+ .toggle-spinner .deactivating-spinner {
75
+ display: block !important
76
+ }
77
+
78
+ .dlm-uninstall-form-footer p {
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: space-between
82
+ }
83
+
84
+ .dlm-uninstall-form.process-response .dlm-uninstall-form-body {
85
+ position: relative
86
+ }
87
+
88
+ .dlm-uninstall-form.process-response .dlm-uninstall-form-body:after {
89
+ content: "";
90
+ display: block;
91
+ position: absolute;
92
+ top: 0;
93
+ left: 0;
94
+ width: 100%;
95
+ height: 100%;
96
+ background-color: rgba(255, 255, 255, .5)
97
+ }
98
+
99
+ .dlm-uninstall-form-head .close-uninstall-form {
100
+ position: absolute;
101
+ right: 15px;
102
+ color: #fff;
103
+ font-family: Arial;
104
+ font-size: 14px;
105
+ display: inline-block;
106
+ top: 50%;
107
+ transform: translateY(-50%);
108
+ cursor: pointer
109
+ }
110
+
111
+ .dlm-red-text,
112
+ .dlm-red-text:hover {
113
+ color: red;
114
+ font-weight: 700
115
+ }
116
+
117
+ /* Plugins page */
118
+ .dlm-plugin-inline-notice {
119
+ padding: 5px 15px;
120
+ background: lightYellow;
121
+ margin-bottom: 1px;
122
+ }
123
+
124
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__row,
125
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__header {
126
+ display: flex;
127
+ flex-direction: row;
128
+ justify-content: space-around;
129
+ width: 100%;
130
+ text-align: left;
131
+ }
132
+
133
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__header .dlm-plugin-inline-notice__line,
134
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__row .dlm-plugin-inline-notice__line {
135
+ text-align: left;
136
+ width: 100%;
137
+ margin: 5px 0;
138
+ padding: 10px 0;
139
+ }
140
+
141
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__row .dlm-plugin-inline-notice__line {
142
+ border-top: 1px solid #ccc;
143
+ }
144
+
145
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__strong {
146
+ font-weight: bold;
147
+ }
148
+
149
+ .dlm-plugin-inline-notice .dlm-plugin-inline-notice__required-version {
150
+ color: red;
151
+ }
assets/js/edit-download.js CHANGED
@@ -231,4 +231,15 @@ jQuery( function ( $ ) {
231
  dlm_upload_file_frame.open();
232
  } );
233
 
 
 
 
 
 
 
 
 
 
 
 
234
  } );
231
  dlm_upload_file_frame.open();
232
  } );
233
 
234
+ // Copy button functionality
235
+ $('.copy-dlm-button').click(function(e) {
236
+ e.preventDefault();
237
+ var dlm_input = $(this).parent().find('input');
238
+ dlm_input.focus();
239
+ dlm_input.select();
240
+ document.execCommand('copy');
241
+ $(this).next('span').text( $(this).data('item') + ' copied');
242
+ $('.copy-dlm-button').not($(this)).parent().find('span').text('');
243
+ });
244
+
245
  } );
assets/js/edit-download.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(d){function l(){jQuery(".downloadable_files .downloadable_file").each(function(e,o){jQuery(".file_menu_order",o).val(parseInt(jQuery(o).index(".downloadable_files .downloadable_file")))})}var r;jQuery(".expand_all").click(function(){return jQuery(this).closest(".dlm-metaboxes-wrapper").find(".dlm-metabox table").show(),!1}),jQuery(".close_all").click(function(){return jQuery(this).closest(".dlm-metaboxes-wrapper").find(".dlm-metabox table").hide(),!1}),jQuery(".dlm-metaboxes-wrapper").on("click",".dlm-metabox h3",function(e){jQuery(e.target).filter(":input, option").length||jQuery(this).next(".dlm-metabox-content").toggle()}),jQuery(".dlm-metabox.closed").each(function(){jQuery(this).find(".dlm-metabox-content").hide()}),jQuery(".date-picker-field").datepicker({dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0}),jQuery(".downloadable_files").sortable({items:".downloadable_file",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"dlm-metabox-sortable-placeholder",start:function(e,o){o.item.css("background-color","#f6f6f6")},stop:function(e,o){o.item.removeAttr("style"),l()}}),jQuery(".download_monitor_files").on("click","a.add_file",function(){jQuery(".download_monitor_files").block({message:null,overlayCSS:{background:"#fff url("+d("#dlm-plugin-url").val()+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var e=jQuery(".downloadable_files .downloadable_file").length,o={action:"download_monitor_add_file",post_id:d("#dlm-post-id").val(),size:e,security:d("#dlm-ajax-nonce-add-file").val()};return jQuery.post(ajaxurl,o,function(e){jQuery(".downloadable_files").prepend(e),l(),jQuery(".download_monitor_files").unblock(),jQuery(".date-picker-field").datepicker({dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0})}),!1}),jQuery(".download_monitor_files").on("click","button.remove_file",function(e){if(e.preventDefault(),confirm(dlm_ed_strings.confirm_delete)){var o=jQuery(this).closest(".downloadable_file"),l=o.attr("data-file");if(0<l){jQuery(o).block({message:null,overlayCSS:{background:"#fff url("+d("#dlm-plugin-url").val()+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var a={action:"download_monitor_remove_file",file_id:l,download_id:d("#dlm-post-id").val(),security:d("#dlm-ajax-nonce-remove-file").val()};jQuery.post(ajaxurl,a,function(e){jQuery(o).fadeOut("300").remove()})}else jQuery(o).fadeOut("300").remove()}return!1}),jQuery(".download_monitor_files").on("click","a.dlm_browse_for_file",function(e){return downloadable_files_field=jQuery(this).closest(".downloadable_file").find('textarea[name^="downloadable_file_urls"]'),window.send_to_editor=window.send_to_browse_file_url,tb_show(dlm_ed_strings.browse_file,"media-upload.php?post_id="+d("#dlm-post-id").val()+"&amp;type=downloadable_file_browser&amp;from=wpdlm01&amp;TB_iframe=true"),!1}),window.send_to_browse_file_url=function(e){e&&(old=jQuery.trim(jQuery(downloadable_files_field).val()),old&&(old+="\n"),jQuery(downloadable_files_field).val(old+e)),tb_remove(),window.send_to_editor=window.send_to_editor_default},jQuery(document).on("click",".dlm_upload_file",function(e){var o=d(this),l=o.parent().parent().find(".downloadable_file_urls"),a=l.val();e.preventDefault(),r&&r.close();var t=[new wp.media.controller.Library({library:wp.media.query(),multiple:!0,title:o.data("choose"),priority:20,filterable:"uploaded"})];(r=wp.media.frames.downloadable_file=wp.media({title:o.data("choose"),library:{type:""},button:{text:o.data("update")},multiple:!0,states:t})).on("select",function(){r.state().get("selection").map(function(e){(e=e.toJSON()).url&&(a=a?a+"\n"+e.url:e.url)}),l.val(a)}),r.on("ready",function(){r.uploader.options.uploader.params={type:"dlm_download"}}),r.open()})});
1
+ jQuery(function(a){function l(){jQuery(".downloadable_files .downloadable_file").each(function(e,o){jQuery(".file_menu_order",o).val(parseInt(jQuery(o).index(".downloadable_files .downloadable_file")))})}var n;jQuery(".expand_all").click(function(){return jQuery(this).closest(".dlm-metaboxes-wrapper").find(".dlm-metabox table").show(),!1}),jQuery(".close_all").click(function(){return jQuery(this).closest(".dlm-metaboxes-wrapper").find(".dlm-metabox table").hide(),!1}),jQuery(".dlm-metaboxes-wrapper").on("click",".dlm-metabox h3",function(e){jQuery(e.target).filter(":input, option").length||jQuery(this).next(".dlm-metabox-content").toggle()}),jQuery(".dlm-metabox.closed").each(function(){jQuery(this).find(".dlm-metabox-content").hide()}),jQuery(".date-picker-field").datepicker({dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0}),jQuery(".downloadable_files").sortable({items:".downloadable_file",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"dlm-metabox-sortable-placeholder",start:function(e,o){o.item.css("background-color","#f6f6f6")},stop:function(e,o){o.item.removeAttr("style"),l()}}),jQuery(".download_monitor_files").on("click","a.add_file",function(){jQuery(".download_monitor_files").block({message:null,overlayCSS:{background:"#fff url("+a("#dlm-plugin-url").val()+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var e=jQuery(".downloadable_files .downloadable_file").length,e={action:"download_monitor_add_file",post_id:a("#dlm-post-id").val(),size:e,security:a("#dlm-ajax-nonce-add-file").val()};return jQuery.post(ajaxurl,e,function(e){jQuery(".downloadable_files").prepend(e),l(),jQuery(".download_monitor_files").unblock(),jQuery(".date-picker-field").datepicker({dateFormat:"yy-mm-dd",numberOfMonths:1,showButtonPanel:!0})}),!1}),jQuery(".download_monitor_files").on("click","button.remove_file",function(e){var o;return e.preventDefault(),confirm(dlm_ed_strings.confirm_delete)&&(0<(e=(o=jQuery(this).closest(".downloadable_file")).attr("data-file"))?(jQuery(o).block({message:null,overlayCSS:{background:"#fff url("+a("#dlm-plugin-url").val()+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}}),e={action:"download_monitor_remove_file",file_id:e,download_id:a("#dlm-post-id").val(),security:a("#dlm-ajax-nonce-remove-file").val()},jQuery.post(ajaxurl,e,function(e){jQuery(o).fadeOut("300").remove()})):jQuery(o).fadeOut("300").remove()),!1}),jQuery(".download_monitor_files").on("click","a.dlm_browse_for_file",function(e){return downloadable_files_field=jQuery(this).closest(".downloadable_file").find('textarea[name^="downloadable_file_urls"]'),window.send_to_editor=window.send_to_browse_file_url,tb_show(dlm_ed_strings.browse_file,"media-upload.php?post_id="+a("#dlm-post-id").val()+"&amp;type=downloadable_file_browser&amp;from=wpdlm01&amp;TB_iframe=true"),!1}),window.send_to_browse_file_url=function(e){e&&(old=jQuery.trim(jQuery(downloadable_files_field).val()),old&&(old+="\n"),jQuery(downloadable_files_field).val(old+e)),tb_remove(),window.send_to_editor=window.send_to_editor_default},jQuery(document).on("click",".dlm_upload_file",function(e){var o=a(this),l=o.parent().parent().find(".downloadable_file_urls"),t=l.val();e.preventDefault(),n&&n.close();e=[new wp.media.controller.Library({library:wp.media.query(),multiple:!0,title:o.data("choose"),priority:20,filterable:"uploaded"})];(n=wp.media.frames.downloadable_file=wp.media({title:o.data("choose"),library:{type:""},button:{text:o.data("update")},multiple:!0,states:e})).on("select",function(){n.state().get("selection").map(function(e){(e=e.toJSON()).url&&(t=t?t+"\n"+e.url:e.url)}),l.val(t)}),n.on("ready",function(){n.uploader.options.uploader.params={type:"dlm_download"}}),n.open()}),a(".copy-dlm-button").click(function(e){e.preventDefault();e=a(this).parent().find("input");e.focus(),e.select(),document.execCommand("copy"),a(this).next("span").text(a(this).data("item")+" copied"),a(".copy-dlm-button").not(a(this)).parent().find("span").text("")})});
changelog.txt ADDED
@@ -0,0 +1,504 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ = 4.4.14 - 12.01.2022 =
2
+ Added: Filter 'dlm_filemanager_get_file_name' to filter the displayed file name.
3
+ Fixed: Check if there are pages/posts/cpt with the same slug as the endpoint ( https://github.com/WPChill/download-monitor/issues/774 )
4
+ Added: Filter 'dlm_completed_order_download' to filter download button in checkout page.
5
+ Added: DLM Rest Routes for dlm_download, dlm_download_category & dlm_download_tag
6
+ Fixed: Changed the escaping method to allow some html tags to be inserted in the title ( https://github.com/WPChill/download-monitor/issues/783 )
7
+ Changed: The "View" category button in Downloads > Categories should not exist ( https://github.com/WPChill/download-monitor/issues/775 )
8
+ Added: Upsells in admin download page options metabox ( https://github.com/WPChill/download-monitor/issues/780 )
9
+ Fixed: Fixed a typo in settings. ( https://github.com/WPChill/download-monitor/issues/663 )
10
+ Added: Quick copy button in download page. ( https://github.com/WPChill/download-monitor/issues/717 )
11
+ Fixed: Wrong post_type in url. Coud not see order details. ( https://github.com/WPChill/download-monitor/issues/788 )
12
+ Changed: The plugin's css will only load when the shortcode is present. ( https://github.com/WPChill/download-monitor/issues/782 )
13
+
14
+ = 4.4.13 - 16.11.2021 =
15
+ Fixed: Fatal error because an extra semicolon
16
+
17
+ = 4.4.12 - 16.11.2021 =
18
+ Fixed: Dependencies in widgets screen cc @HardeepAsrani
19
+ Removed: Custom webpack build and replaced with @wordpress/scripts cc @HardeepAsrani
20
+ Fixed: Optimized block with React Hooks for readibility purposes cc @HardeepAsrani
21
+ Fixed: Product not saving in downloads select ( https://github.com/WPChill/download-monitor/issues/770 )
22
+ Fixed: Typo in file URLs
23
+ Fixed: Widget options update - https://github.com/WPChill/download-monitor/issues/768
24
+ Fixed: Downloads not working with shop enabled - https://github.com/WPChill/download-monitor/issues/769
25
+
26
+ = 4.4.11 - 03.11.2021 =
27
+ Fixed: Reports date changing ( https://github.com/WPChill/download-monitor/issues/755 )
28
+ Fixed: Log page - Status Column width ( https://github.com/WPChill/download-monitor/issues/756 )
29
+ Fixed: Password protection form, password field not being displayed ( https://github.com/WPChill/download-monitor/issues/757 )
30
+ Fixed: Escaping problem in the No-Access page ( https://github.com/WPChill/download-monitor/issues/758 )
31
+
32
+ = 4.4.10 - 02.11.2021 =
33
+ Fixed: Escaping in admin "All Downloads" page. ( https://github.com/WPChill/download-monitor/issues/753 )
34
+ Added: Review request in dashboard.
35
+
36
+ = 4.4.9 - 01.11.2021 =
37
+ Fixed: Escaping in admin column, displaying HTLM instead of correct form
38
+ Added: Clear transients button.
39
+
40
+ = 4.4.8 - 29.10.2021 =
41
+ Fixed: Insert Download/Quick Download Button
42
+
43
+ = 4.4.7 - 29.10.2021 =
44
+ Fixed: Sanitization & Escaping
45
+
46
+ = 4.4.6 - 20.10.2021 =
47
+ Fixed: Checking for modifications to the upload folder
48
+
49
+ = 4.4.5 - 20.10.2021 =
50
+ Fixed: PHP 8 bug - slow query ( https://github.com/WPChill/download-monitor/issues/685 )
51
+ Fixed: Deprecated PHP 8 notice (https://github.com/WPChill/download-monitor/issues/682 thanks to @ashleyfae )
52
+ Fixed: PHP templates errors ( https://github.com/WPChill/download-monitor/issues/691 )
53
+ Fixed: Single shop download error ( https://github.com/WPChill/download-monitor/issues/690 )
54
+ Fixed: Permalink errors - retrieved permalinks on archives didn't show the correct URL ( https://github.com/WPChill/download-monitor/issues/689 )
55
+ Fixed : [downloads] shortcode now displays both featured and not featured downloads when left as is ( thanks to @kadimi https://github.com/WPChill/download-monitor/pull/526 )
56
+ Added : Size filter in the placeholder image ( thanks to @jamesgol https://github.com/WPChill/download-monitor/pull/507 )
57
+ Fixed : Sha256 support added when new files are added ( thanks to @jamesgol https://github.com/WPChill/download-monitor/pull/633 )
58
+ Added: Upsells
59
+ Fixed: Fix download from CDN where uploads folder is replaced ( https://github.com/WPChill/download-monitor/issues/698 )
60
+ Fixed: Fatal error on URL with version param ( https://github.com/WPChill/download-monitor/issues/709 )
61
+ Changed: Notice display
62
+ Changed: Tab reconstruction and settings structure
63
+ Changed: TinyMCE interface for short description ( https://github.com/WPChill/download-monitor/issues/708 )
64
+ Fixed : Added layer of security against certain SQL Injections
65
+
66
+ = 4.4.4: October 19, 2020 =
67
+ * Tweak: Fixed PHP 7.4 notices.
68
+ * Tweak: Check if download variable is set in content-download template. This prevents a fatal error in odd case no download is given.
69
+ * Tweak: Now passing variables to actions to version.php admin view file.
70
+ * Tweak: Bump websocket-extensions from 0.1.3 to 0.1.4
71
+
72
+ = 4.4.3: June 8, 2020 =
73
+ * Tweak: Small minor fixes and tweaks.
74
+
75
+ = 4.4.2: April 3, 2019 =
76
+ * Tweak: Fixed an relative inclusion bug that sometimes caused bootstrap not to properly load. (Undefined function dlm_is_shop_enabled()).
77
+
78
+ = 4.4.1: March 27, 2019 =
79
+ * Tweak: Added proper html escaping to order overview page, props Nam.Dinh.
80
+
81
+ = 4.4.0: March 8, 2019 =
82
+ * Feature: Added a new product post type to create a clear separation between downloads and the products you can sell. Read more about this here: https://www.download-monitor.com/kb/products/
83
+ * Feature: Shop products now have a basic detail (single) page. This will be improved in future updates.
84
+ * Feature: Added "Paid Only" option to downloads. This allows you to require users to have a purchase linked to the download before file can be downloaded.
85
+ * Feature: Versions are now passed through the no-access page.
86
+ * Tweak: dlm_buy shortcode now takes a product id, instead of a download ID. These need to be updated manually.
87
+ * Tweak: Shop feature has been more isolated from non-shop. To enable shop, go to general Download Monitor settings and check "Enable Shop".
88
+ * Tweak: PayPal gateway is now enabled by default.
89
+
90
+ = 4.3.0: February 27, 2019 =
91
+ * Feature: Added Shop (Beta) feature. You can now sell your downloads via Download Monitor! More addition to shop (like taxes and discounts) coming soon.
92
+ * Feature: Added PayPal integration for shop feature.
93
+ * Feature: Added an onboarding screen, helping the user set up the plugin.
94
+ * Tweak: Fixed an error when changing dates in reports on Safari.
95
+ * Tweak: Added download ID to Reports overview table.
96
+ * Tweak: Increased spacing of download title on reports summary block.
97
+ * Tweak: We're no longer automatically creating the No Access page. This is now done via the onboarding screen.
98
+ * Tweak: We're no longer supporting PHP 5.2. If you upgrade and are still running PHP 5.2, the plugin will not load but display an upgrade notice instead. More info: https://www.download-monitor.com/kb/minimum-required-php-version/
99
+ * Tweak: Updated translations.
100
+
101
+ = 4.2.1: January 31, 2019 =
102
+ * Tweak: Correctly set default template of Gutenberg block on frontend of website when no specific template is set.
103
+
104
+ = 4.2.0: January 24, 2019 =
105
+ * Feature: Added Gutenberg download block. Type /download in your post screen to see it in action!
106
+
107
+ = 4.1.1: September 12, 2018 =
108
+ * Tweak: Fixed a bug that incorrectly included featured downloads by default in [downloads].
109
+ * Tweak: Added 'dlm_get_template_part_args' filter that allows argument filtering on Download Monitor templates.
110
+
111
+ = 4.1.0: May 21, 2018 =
112
+ * Feature: Added a new option that allows site-owners if and how they wish to track IP addresses of users.
113
+ * Feature: Added a new option that allows site-owners to decide if they wish to track user agent of users.
114
+ * Tweak: Fixed an issue where title of log dates had incorrect date.
115
+ * Tweak: Added compatibility for 'Post Types Order' plugin. The dashboard widget no longer is affected by their custom order.
116
+ * Tweak: Added dlm_frontend_scripts filter, allows user to not include DLM frontend assets.
117
+ * Tweak: No longer load jQuery UI CSS from Google CDN, file is now included in plugin.
118
+ * Tweak: No longer loading jQuery images from Google CDN, images are now included in plugin.
119
+
120
+ = 4.0.8: May 3, 2018 =
121
+ * Tweak: Fixed a bug in the legacy upgrader that caused versions with empty dates not to added.
122
+ * Tweak: Fixed the use of getTimeStamp() because PHP 5.2 doesn't support this.
123
+
124
+ = 4.0.7: April 13, 2018 =
125
+ * Tweak: Fixed a bug that caused certain months in the reports filter to crash for non English languages.
126
+ * Tweak: Fixed a bug that caused the 10 download limit on the Dashboard Widget to be ignored.
127
+ * Tweak: Added "dlm_remove_dashboard_popular_downloads" filter that allows for not loading of dashboard widget.
128
+ * Tweak: Moved 'dlm_log_item' filter to within the WordPressLogItemRepository::persist() method. This way the filter will always be called upon a log persist.
129
+ * Tweak: Filter 'dlm_log_item' 2nd and 3rd argument changed from DLM_Download & DLM_Download_Version type to int (ID's of both download and version).
130
+ * Tweak: Moved 'dlm_downloading_log_item_added' filter to within the WordPressLogItemRepository::persist() method. This way the filter will always be called upon a log persist.
131
+ * Tweak: Filter 'dlm_downloading_log_item_added' 2nd and 3rd argument changed from DLM_Download & DLM_Download_Version type to int (ID's of both download and version).
132
+ * Tweak: Added filter 'dlm_reports_page_start' to add content on top of admin reports page.
133
+ * Tweak: Added filter 'dlm_reports_page_end' to add content on bottom of admin reports page.
134
+ * Tweak: Added download id and download object to 'dlm_placeholder_image_src' filter, props [James Golovich](https://github.com/jamesgol).
135
+ * Tweak: Added filter 'dlm_download_get_versions' on return of DLM_Download::get_versions(), props [James Golovich](https://github.com/jamesgol).
136
+ * Tweak: Added $atts to various shortcode filters, props [James Golovich](https://github.com/jamesgol).
137
+
138
+ = 4.0.6: March 8, 2018 =
139
+ * Tweak: Fixed a bug in the version-list template, correct version links are now displayed.
140
+
141
+ = 4.0.5: February 21, 2018 =
142
+ * Tweak: Fixed a bug that caused the "Add file" button to not appear on the Add New Download screen.
143
+ * Tweak: Fixed a bug that caused the crc32b hash not to be saved when adding a download via the 'Quick-add Download' option.
144
+ * Tweak: WordPressVersionRepository no longer explicitly sets 'post_content' and 'post_excerpt' database fields of dlm_download_version to empty strings. Props [Erin Morelli](https://github.com/ErinMorelli).
145
+
146
+ = 4.0.4: February 19, 2018 =
147
+ * Tweak: Fixed a bug where versions of draft and pending review downloads were not displayed in the backend.
148
+
149
+ = 4.0.3: February 9, 2018 =
150
+ * Tweak: We now cache if we need to upgrade legacy downloads. This prevents us from checking if we need to upgrade on every pageload, improving performance and preventing constant sql warning when legacy table doesn't exist.
151
+ * Tweak: Fixed SQL error in has_ip_downloaded_version() call ('type' does not exist).
152
+
153
+ = 4.0.2: February 2, 2018 =
154
+ * Tweak: Moved no cache headers up in download process, improving cache prevention.
155
+ * Tweak: Added new log item meta data methods, making it easier to add meta data.
156
+ * Tweak: Added new action 'dlm_downloading_log_item_added'. Is triggered after log item is added on download request.
157
+ * Tweak: Added $download and $version arguments to 'dlm_log_item' filter.
158
+
159
+ = 4.0.1: January 25, 2018 =
160
+ * Tweak: Fixed an issue that caused widget limit to not work.
161
+ * Tweak: Fixed an count() warning in PHP7.2 on extension page.
162
+ * Tweak: Fixed a passed by reference notice in lower PHP versions in get_visitor_ip() call.
163
+ * Tweak: Added 'dlm_download_count' filter to fitler get_download_count() return value.
164
+ * Tweak: Downloads now return an empty version if no version is added. This prevents mulitple possible fatal errors when external scripts don't check if get_version() returns null.
165
+ * Tweak: Added an extra check to if website needs upgrading. If there are new downloads in the database, no upgrade is recommended.
166
+ * Tweak: Added an extra warning on the upgrade page to users that navigate to the page while we think no upgrade is needed.
167
+ * Tweak: Requesting a non existing download no longer triggers a fatal error (exception is now properly handled).
168
+ * Tweak: Correct exception handling when trying to save meta boxes of non existing download.
169
+
170
+ = 4.0.0: January 22, 2018 =
171
+ * Feature: Added reports page for download statistics.
172
+ * Feature: Added hash values to version blocks.
173
+ * Feature: Added option to include downloads in WordPress default search results, props [Kurt Zenisek](https://github.com/KZeni).
174
+ * Feature: Added SHA256 hash.
175
+ * Feature: Added support for regex patterns in user agent blacklist, props [Matt Mower](https://github.com/mdmower).
176
+ * Feature: Added user filter to logs, props [neptuneweb](https://github.com/neptuneweb).
177
+ * Feature: Log columns in log table are now sortable.
178
+ * Feature: Added an option for the user to remove all transients.
179
+ * Feature: Added the ability to exclude tags from the [downloads] shortcode.
180
+ * Feature: Added search option in "Insert Download" overlay.
181
+ * Feature: Added builtin legacy upgrade tool to help users move their downloads from legacy to current version.
182
+ * Tweak: Added 'dlm_file_path' filter to filter file_path in download request.
183
+ * Tweak: We're now only serving downloads when requested over the GET or POST HTTP method. This can be filtered via filter dlm_accepted_request_methods.
184
+ * Tweak: Added Download Title to download log CSV export file.
185
+ * Tweak: Added 'dlm_shortcode_total_downloads' filter to output of [total_downloads] shortcode, props [Joel James](https://github.com/Joel-James).
186
+ * Tweak: Added support for Apache 2.4 and up in generated .htaccess file.
187
+ * Tweak: Added 'dlm_download_use_version_transient' filter to allow website to not use cache transients.
188
+ * Tweak: Downloads need to be published in order to exist, draft downloads can no longer be downloaded.
189
+ * Tweak: Fixed plugin links on plugin overview page.
190
+ * Tweak: Optimization rewrite of DLM_Download class.
191
+ * Tweak: Optimization rewrite of DLM_Download_Version class.
192
+ * Tweak: Introduction of Factory and Repository design patterns for Downloads and Versions.
193
+ * Tweak: Complete rewrite of setting fields.
194
+ * Tweak: Updated template files to use new download methods.
195
+ * Tweak: Introduced new filter "dlm_setting_field_TYPE", allowing third party programs to add custom field types to settings.
196
+ * Tweak: Implemented Composer autoloader.
197
+ * Tweak: Download Categories and Download Tags label name now contains 'Download'.
198
+ * Tweak: Download Widget now uses default template output set in settings when no output template is set.
199
+ * Tweak: Download Widget CSS tweaks.
200
+ * Tweak: Download category and download tags are now excluded from Yoast SEO sitemap.
201
+ * Tweak: 'Delete Logs' button now requires a confirmation.
202
+ * Tweak: Placeholders for download thumbnails in media library list view are now also properly replaced.
203
+ * Tweak: Minor UX improvement on Download Information fields making it easier to copy these, props [Danny van Kooten](https://github.com/dannyvankooten).
204
+ * Tweak: Replaced double underscore prefixed functions with single underscore prefix to comply with PHP reserved method naming rules.
205
+
206
+ = 1.9.9: October 18, 2017 =
207
+ * Tweak: Fixed an issue with 'No Access' page not saving correctly.
208
+
209
+ = 1.9.8: October 6, 2017 =
210
+ * Tweak: Add option to allow HTTP header X_FORWARD_FOR. Allowing Download Monitor to use the X_FORWARDED_FOR HTTP header set by proxies as the IP address.
211
+ * Tweak: Download files that are added via 'Quick-add download' are now properly added to WP media library.
212
+ * Tweak: Introduced 'lazy select' option for Download Monitor settings. Options of these select elements are only loaded on setting pages, increasing overall plugin performance.
213
+ * Tweak: We're now filtering attachment thumbnails in media library for files in dlm_uploads. This solves 403 errors on thumbnails in the protected folder.
214
+
215
+ = 1.9.7: May 5, 2017 =
216
+ * Tweak: Added capability checks to log export and delete functionality. Props [Pritect](http://www.pritect.net/).
217
+ * Tweak: We're now redirecting users to home on empty download request. Behavior can be changed via filters. See https://www.download-monitor.com/kb/empty-download-request-redirection/
218
+
219
+ = 1.9.6: February 28, 2017 =
220
+ * Tweak: Fix display for unknown user in exported log, props [Matt Mower](https://github.com/mdmower).
221
+ * Tweak: Settings screen hash tweaks.
222
+ * Tweak: Display correct tab on settings save, props [Matt Mower](https://github.com/mdmower).
223
+ * Tweak: Fixed issue with some dismissible notices.
224
+ * Tweak: Add Portuguese (pt_PT) translation, props [Pedro Mendonça](https://github.com/pedro-mendonca).
225
+ * Tweak: Included various language tweaks via Transifex. Help out over at [Transifex](https://www.transifex.com/barrykooijplugins/download-monitor/).
226
+
227
+ = 1.9.5: August 23, 2016 =
228
+ * Tweak: Fixed a bug where Download Options couldn't be checked off in quick edit.
229
+ * Tweak: Updated settings screen description for custom templates.
230
+ * Tweak: Download Information input fields are now readonly since these fields are informational only. Props [kraftner](https://github.com/kraftner).
231
+ * Tweak: Removed code that triggered PHP7 incompatibility false positives in PHP7 compatibility scans.
232
+ * Tweak: Removed old JSON library since default JSON functions are available from PHP 5.2 and up.
233
+
234
+ = 1.9.4: May 2, 2016 =
235
+ * Tweak: Various cookie tweaks to prevent incorrect double logging entries.
236
+ * Tweak: Added a Cookie Manager class to centralize cookie related tasks.
237
+
238
+ = 1.9.3: April 11, 2016 =
239
+ * Tweak: Small rework of [downloads] loop. Downloads now filterable per download via dlm_shortcode_downloads_loop_download.
240
+ * Tweak: We now report missing versions for removed downloads in logs, props [Matt Mower](https://github.com/mdmower).
241
+ * Tweak: Updated Danish translation, props [Georg Adamsen](https://github.com/GSAdev).
242
+
243
+ = 1.9.2: March 27, 2016 =
244
+ * Tweak: Fixed bug where 'version' and 'version_id' were ignored in [download].
245
+ * Tweak: Fixed a bug that caused the file upload overlay to append file URL to wrong version, props [kraftner](https://github.com/kraftner).
246
+ * Tweak: Optimized [download] shortcode code.
247
+ * Tweak: Flush rewrites in admin settings on shutdown instead of during page load, props [sybrew](https://github.com/sybrew).
248
+ * Tweak: Added extra checks to blacklist checks to prevent stristr empty needle notices, props [Matt Mower](https://github.com/mdmower).
249
+ * Tweak: Removed DS_Store backups, props [Matt Mower](https://github.com/mdmower).
250
+ * Tweak: Added Ukrainian translation, props [Fremler](https://www.transifex.com/user/profile/Fremler/).
251
+ * Tweak: Added Croatian translation, props [molekula](https://www.transifex.com/user/profile/molekula/).
252
+ * Tweak: Updated Dutch translation.
253
+ * Tweak: Updated Portuguese (Brazil) translation.
254
+
255
+ = 1.9.1: December 1, 2015 =
256
+ * Tweak: Check if $visitor_ua isn't empty to prevent stristr warnings.
257
+ * Tweak: Added wmv filetype icon support
258
+ * Tweak: Correctly populate data on quick edit of download.
259
+ * Tweak: Settings tab now loads tab of set URL hash.
260
+
261
+ = 1.9.0: September 15, 2015 =
262
+ * Feature: We added a separate 'No Access' page that includes the following features:
263
+ * No Access Page : Added [dlm_no_access] shortcode that displays the no access content.
264
+ * No Access Page : Added new option in Access settings tab to set No Access Page.
265
+ * No Access Page : Added new template file for no access page.
266
+ * No Access Page : We now redirect to set No Access page (if set) when user has no access to download.
267
+ * Feature: Added ability to remove log entries.
268
+ * Feature: Added browser detection for IE 11 and up.
269
+ * Feature: Added OS detection for Windows 8.1
270
+ * Feature: Added OS detection for Windows 10
271
+ * Feature: Added Featured download, Members only and Redirect to file to bulk edit options.
272
+ * Feature: Added Featured download, Members only and Redirect to file to quick edit options.
273
+
274
+ = 1.8.1: August 21, 2015 =
275
+ * Tweak: Small tweak to make download count fit better in box template.
276
+ * Tweak: Fixed a zero file size bug.
277
+ * Tweak: Fixed featured image disappears bug, props [Ricardo](https://wordpress.org/support/profile/ricardopires).
278
+ * Tweak: Search template file in custom path before in plugin path.
279
+
280
+ = 1.8.0: July 10, 2015 =
281
+ * Feature: Added option to only count downloads and add logs from unique ip addresses, props [Matt Mower](https://github.com/mdmower).
282
+ * Feature: It's now possible to display downloads with the downloads shortcode that are in all given categories (AND instead of OR) by using + (plus_ instead of , (comma).
283
+ * Feature: Display nginx rules if server is running nginx.
284
+ * Feature: Added Multisite / Network compatibility.
285
+ * Feature: Redone blacklist IP feature, now available in the 'Access' tab.
286
+ * Feature: Redone blacklist user agent feature, now available in the 'Access' tab.
287
+ * Tweak: Added icon support for Office X Excel & PPT extensions.
288
+ * Tweak: Run thumbnail compatibility method later to allowed themes to register first.
289
+ * Tweak: Prefixed admin CSS classes to prevent plugin conflicts.
290
+ * Tweak: Fix checking shortcodes for empty version strings, props [Matt Mower](https://github.com/mdmower).
291
+ * Tweak: Fixed a call of trigger() in DLM_Download_Handler, props [Matt Mower](https://github.com/mdmower).
292
+ * Tweak: Remove trailing space from downloads count, props [Matt Mower](https://github.com/mdmower).
293
+ * Tweak: Directory browser items are now always in alphabetical order, props [Matt Mower](https://github.com/mdmower).
294
+ * Tweak: The 60 seconds download counter increment cool down is now set to version ID instead of download ID, props [Matt Mower](https://github.com/mdmower).
295
+ * Tweak: Created and implemented local independent basename fixing issues with Cyrillic alphabets.
296
+ * Tweak: Made user agents regexes filterable: dlm_ua_parser_regexes.
297
+ * Tweak: Optimized log status icons, also fixes WP emoji conflict.
298
+ * Tweak: Members Only check now only does check if requester can still download.
299
+ * Tweak: Replaced PHP4 constructors in widget.
300
+ * Tweak: Added Danish translation.
301
+ * Tweak: Updated Dutch translation.
302
+ * Tweak: Updated German translation.
303
+
304
+ = 1.7.2: April 29, 2015 =
305
+ * Tweak: Fixed a bug that caused logs not to be displayed in WP 4.2.
306
+
307
+ = 1.7.1: April 17, 2015 =
308
+ * Tweak: Pass third arg to add_query_arg to prevent XSS.
309
+
310
+ = 1.7.0: March 22, 2015 =
311
+ * Feature: Added 'Download Information' meta box to edit download screen that displays useful download information.
312
+ * Feature: Error message shown when visitor has no access to download is now an option.
313
+ * Tweak: Fixing a bug where versions with spaces did not work, versions now are checked on a sanitized title.
314
+ * Tweak: Viewing logs now needs custom capability: dlm_manage_logs (automatically added to administrators).
315
+ * Tweak: Improved hotlink prevention check.
316
+ * Tweak: Extension page tweaks.
317
+ * Tweak: Added $download_id argument to dlm_hotlink_redirect filter.
318
+ * Tweak: Moved hash settings to their own tab.
319
+ * Tweak: Moved 'X-Accel-Redirect / X-Sendfile' and 'Prevent hotlinking' settings to General tab.
320
+ * Tweak: Optimized the Insert Download button.
321
+ * Tweak: Introduced a multi-byte-safe pathinfo so we can handle 'special' filenames.
322
+ * Tweak: Also set the post_date_gmt value for version dates.
323
+ * Tweak: Updated French translation. Props Li-An.
324
+ * Tweak: Updated German translation. Props maphy-psd.
325
+ * Tweak: Updated Swedish translation. Props EyesX.
326
+ * Tweak: Update Slovakian translation. Props attitude.
327
+ * Tweak: Added Dutch translation.
328
+
329
+ = 1.6.4: March 8, 2015 =
330
+ * Removed unused library jqueryFileTree.
331
+ * dlm_shortcode_download_content filter now also includes $atts.
332
+ * Fixed small parse file parse error because of whitespace.
333
+ * Changed some admin menu hook priorities.
334
+
335
+ = 1.6.3: January 18, 2015 =
336
+ * Fixed an undefined method call 'get_filesize'.
337
+ * Allow third party extensions to hijack [downloads] shortcode with filter dlm_shortcode_download_content.
338
+ * Made 'wp_dlm_downloading' cookie only accessible through the HTTP protocol, props [Matt Mower](https://github.com/mdmower).
339
+
340
+ = 1.6.2: January 11, 2015 =
341
+ * Fixed a bug that caused translations not to load.
342
+ * Fixed a bug that prevented download versions from being removed.
343
+ * Fixed a pagination in 'insert download' shortcode bug.
344
+ * Fixed a bug in the template loader when used with a custom directory, a slug and no custom template.
345
+ * Removed assigning by reference, fixed strict notice when deleting downloads.
346
+ * Tweaked template loader to accept arguments.
347
+ * Allow downloads shortcode WP_Query arguments to be filtered with 'dlm_shortcode_downloads_args'.
348
+
349
+ = 1.6.1: January 9, 2015 =
350
+ * Fixed an extension activation error.
351
+ * Fixed a bug that caused the featured image to disappear in some themes.
352
+ * Tweak: In multisite only users that are a member of the blog can download 'member only' downloads.
353
+
354
+ = 1.6.0: January 8, 2015 =
355
+ * Plugin is now initiated at plugins_loaded.
356
+ * Implemented auto loader.
357
+ * Classes are no longer initiated at bottom of class file but whenever an object is needed.
358
+ * Code standards corrections.
359
+ * Introduced Template_Handler. Loading of template parts should be done through this class.
360
+ * Removed $GLOBALS['dlm_logging'] global.
361
+ * Removed $GLOBALS['DLM_Download_Handler'] global.
362
+ * Removed internal use of $download_monitor global.
363
+ * Moved all inline JavaScript to separate JavaScript files.
364
+ * Moved all install related code to installer class.
365
+ * Moved main plugin class to it's own file.
366
+ * Deprecated 'dlm_create_log' function.
367
+ * Redone extensions page.
368
+ * Fixed a bug in shortcode download where orderby=download_count wasn't working.
369
+ * Fixed a bug where downloads didn't work with default WP permalink structure.
370
+ * Delete dlm_file_version_ids_ transient on save.
371
+ * Added dlm_download_headers filter.
372
+ * Added dlm_get_template_part filter.
373
+
374
+ = 1.5.1 =
375
+ * Fallback for JSON_UNESCAPED_UNICODE to fix accented characters on < PHP 5.4.
376
+ * Changed default orderby for downloads shortcode to date, desc.
377
+
378
+ = 1.5.0 =
379
+ * JSON_UNESCAPED_UNICODE for files to fix unicode chars when json encoded. Fix needs PHP 5.4+ to work, but won't break lower versions.
380
+ * Style filetype-docx
381
+ * Update get_version_id to work with non-numeric versions.
382
+ * Fix shortcode arg booleans.
383
+ * Add transient cache for get_file_version_ids.
384
+ * Moved all translations to Transifex - https://www.transifex.com/projects/p/download-monitor/
385
+ * Changed text domain from download_monitor to download-monitor.
386
+ * Added Grunt.
387
+ * Added options to generate file hashes DISABLED BY DEFAULT as they can cause performance issues with large files.
388
+
389
+ = 1.4.4 =
390
+ * Use home_dir instead of site_dir - fixes hot-linking protections against own site (when not in root dir)
391
+ * Replace hardcoded WP_CONTENT_DIR and WP_CONTENT_URL with wp_upload_dir to work when UPLOADS and UPLOADS_URL constants are set.
392
+ * Added some filters for hotlink protection customisation.
393
+
394
+ = 1.4.3 =
395
+ * Add password form to download page when required
396
+ * Run shortcodes in excerpt/short desc
397
+ * Various hook additions
398
+ * pr_br and zh_cn translation
399
+ * Sort download count by meta_value_num
400
+ * Store URLs in JSON format to allow easier search/replace
401
+ * Fix dashboard sorting
402
+ * Option for basic referer checking to prevent hotlinking.
403
+ * Only get file hashes on save as they are resource heavy.
404
+ * Disable remote file hash generation, but can be enabled with filter dlm_allow_remote_hash_file
405
+ * Radio buttons instead of select (with pagination) in popup to improve performance.
406
+
407
+ = 1.4.2 =
408
+ * Fix for site_url -> abspath
409
+ * Check if hash functions are supported before use.
410
+
411
+ = 1.4.1 =
412
+ * Fix file_exists error in download handlers
413
+
414
+ = 1.4.0 =
415
+ * MP6/3.8 admin styling. Requires 3.8.
416
+ * Polish translation.
417
+ * Turkish translation.
418
+ * Change capability required to view dashboard widget.
419
+ * Don't show "insert download" when editing a download.
420
+ * Allow pagination for the [downloads] shortcode. Simply add paginate=true to the shortcode.
421
+ * Reverted flush change in download handler to reduce memory usage on some hosting envrionments
422
+ * changed download handlers and fixed corruption when resuming files
423
+ * Calculate md5/sha1/crc32 hashes for files. Obtainable via methods or download_data, e.g. [download_data id="86" data="md5"]
424
+ * Added file_date data
425
+
426
+ = 1.3.2 =
427
+ * Cleaned up log table queries
428
+ * Tweaked download handler headers
429
+ * Tweaked logging
430
+ * Limit UA to 200
431
+ * Setcookie to prevent double logging
432
+ * Addons page (disable using add_filter( 'dlm_show_addons_page', '__return_false' ); )
433
+
434
+ = 1.3.1 =
435
+ * Added some new hooks
436
+ * FR and SR_RS updates
437
+
438
+ = 1.3.0 =
439
+ * Fix 0kb downloads in some hosting enviroments
440
+ * Added button to delete logs
441
+ * Fixed log page when no logs are present
442
+ * FR and HU updates
443
+ * Added dropdown for the default template option to make available templates more obvious
444
+ * Added version-list and title templates
445
+
446
+ = 1.2.0 =
447
+ * Option to redirect to files only (do not force)
448
+ * Fixed textdomains
449
+ * HU translation by Győző Farkas
450
+ * Fix dlm_upload folder when not using month/day upload folders.
451
+ * Fix IP lookup
452
+ * Resumable download support
453
+ * Tweaked download handler
454
+
455
+ = 1.1.2 =
456
+ * HTTPS headers for IE fix
457
+ * Italian locale
458
+
459
+ = 1.1.1 =
460
+ * Specify error statuses on wp_die messages e.g. 404 for missing files.
461
+ * Moved DONOTCACHEPAGE
462
+
463
+ = 1.1.0 =
464
+ * Fixed admin notices
465
+ * Added download link to admin 'file' column for copying and pasting
466
+ * Farsi localisation
467
+ * Wrapping content in a [download] shortcode will wrap it in a simple link.
468
+
469
+ = 1.0.6 =
470
+ * Hide taxonomies from nav menus
471
+ * Fix categories in download_data method.
472
+
473
+ = 1.0.5 =
474
+ * When do_not_force is enabled, still replace abspath with home_url
475
+ * Exclude dlm_download from search and disable query var
476
+ * Added category_include_children option for downloads shortcode
477
+ * Fixed logs time offset.
478
+
479
+ = 1.0.4 =
480
+ * Tweak admin page detection to work when no downloads exist.
481
+ * Fix dashboard widget warning.
482
+ * Add filters to logs and export csv function.
483
+ * Added extra columns to CSV.
484
+
485
+ = 1.0.3 =
486
+ * Fix config page to work with multibyte tab names.
487
+ * Japanese locale by hide92795
488
+ * Admin CSS/script conditonally loaded
489
+ * Versions are now strtolower to be compatible with version_compare and to standardise numbers.
490
+
491
+ = 1.0.2 =
492
+ * Only use wp_remote_head to get fielsize on remote files. Prevents timeouts when a file doesn't exist.
493
+ * If a filesize cannot be found, set to -1 to prevent re-tries.
494
+ * Insert button added to all CPT except downloads.
495
+ * French locale by Jean-Michel MEYER.
496
+
497
+ = 1.0.1 =
498
+ * Update blockui
499
+ * Workaround root relative URLS
500
+
501
+ = 1.0.0 =
502
+ * Complete rewrite of the plugin making use of custom post types and other best practices. Fresh start version '1' to prevent auto-updates (legacy importer needs to be used to migrate from old versions).
503
+
504
+ == Upgrade Notice ==
download-monitor.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Download Monitor
4
  Plugin URI: https://www.download-monitor.com
5
  Description: A full solution for managing and selling downloadable files, monitoring downloads and outputting download links and file information on your WordPress powered site.
6
- Version: 4.4.13
7
  Author: WPChill
8
  Author URI: https://wpchill.com
9
  Requires at least: 5.4
@@ -33,7 +33,7 @@ if ( ! defined( 'ABSPATH' ) ) {
33
  } // Exit if accessed directly
34
 
35
  // Define DLM Version
36
- define( 'DLM_VERSION', '4.4.13' );
37
 
38
  // Define DLM FILE
39
  define( 'DLM_PLUGIN_FILE', __FILE__ );
3
  Plugin Name: Download Monitor
4
  Plugin URI: https://www.download-monitor.com
5
  Description: A full solution for managing and selling downloadable files, monitoring downloads and outputting download links and file information on your WordPress powered site.
6
+ Version: 4.4.14
7
  Author: WPChill
8
  Author URI: https://wpchill.com
9
  Requires at least: 5.4
33
  } // Exit if accessed directly
34
 
35
  // Define DLM Version
36
+ define( 'DLM_VERSION', '4.4.14' );
37
 
38
  // Define DLM FILE
39
  define( 'DLM_PLUGIN_FILE', __FILE__ );
includes/admin/class-dlm-upsells.php CHANGED
@@ -141,7 +141,7 @@ class DLM_Upsells {
141
  echo '<p class="wpchill-upsell-description">' . esc_html( $description ) . '</p>';
142
  echo '<p>';
143
 
144
- $buttons = '<a target="_blank" href="https://download-monitor.com/extensions/' . esc_attr( $extension ) . '/?utm_source=' . esc_attr( $utm_source ) . '&utm_medium=upsell&utm_campaign=w.org&utm_content=' . esc_attr( $tab ) . '" class="button-primary button">' . esc_html__( 'Get Extension!', 'download-monitor' ) . '</a>';
145
 
146
  echo wp_kses_post( apply_filters( 'dlm_upsell_buttons', $buttons, $tab ) );
147
 
@@ -229,7 +229,7 @@ class DLM_Upsells {
229
  // First is the tab and then are the sections
230
  $this->upsell_tabs = apply_filters( 'dlm_upsell_tabs', array(
231
  'lead_generation' => array(
232
- 'title' => esc_html__( 'Lead Generation', 'download-monitor' ),
233
  'upsell' => true,
234
  'sections' => array(
235
  'ninja_forms' => array(
@@ -403,7 +403,7 @@ class DLM_Upsells {
403
  if ( ! $this->check_extension( 'dlm-email-lock' ) ) {
404
 
405
  $this->generate_upsell_box(
406
- __( 'Email lock', 'download-monitor' ),
407
  __( 'Require your users’ email addresses to send newsletters and create a list of your customers.', 'download-monitor' ),
408
  'access',
409
  'email-lock'
@@ -413,7 +413,7 @@ class DLM_Upsells {
413
  if ( ! $this->check_extension( 'dlm-gravity-forms' ) ) {
414
 
415
  $this->generate_upsell_box(
416
- __( 'Gravity forms extension', 'download-monitor' ),
417
  __( 'Ask users to fill in a form created on Gravity Forms before they start downloading your files.', 'download-monitor' ),
418
  'access',
419
  'gravity-forms'
@@ -423,8 +423,8 @@ class DLM_Upsells {
423
  if ( ! $this->check_extension( 'dlm-ninja-forms' ) ) {
424
 
425
  $this->generate_upsell_box(
426
- __( 'Ninja forms extension', 'download-monitor' ),
427
- __( 'Use the Ninja Forms extension to add forms easily to your download files.', 'download-monitor' ),
428
  'access',
429
  'ninja-forms'
430
  );
@@ -611,8 +611,8 @@ class DLM_Upsells {
611
  if ( ! $this->check_extension( 'dlm-ninja-forms' ) ) {
612
 
613
  $this->generate_upsell_box(
614
- __( 'Ninja Forms extension', 'download-monitor' ),
615
- __( 'The Ninja Forms extension for Download Monitor allows you to require users to fill in a Ninja Forms form before they gain access to a download.','download-monitor' ),
616
  'ninja_forms',
617
  'ninja-forms'
618
  );
@@ -621,7 +621,7 @@ class DLM_Upsells {
621
  if ( ! $this->check_extension( 'dlm-email-lock' ) ) {
622
 
623
  $this->generate_upsell_box(
624
- __( 'Email lock extension', 'download-monitor' ),
625
  __( 'The Email Lock extension for Download Monitor allows you to require users to fill in their email address before they gain access to a download.', 'download-monitor' ),
626
  'email_lock',
627
  'email-lock'
@@ -631,8 +631,8 @@ class DLM_Upsells {
631
  if ( ! $this->check_extension( 'dlm-gravity-forms' ) ) {
632
 
633
  $this->generate_upsell_box(
634
- __( 'Gravity Forms extension', 'download-monitor' ),
635
- __( 'The Gravity Forms extension for Download Monitor allows you to require users to fill out a Gravity Forms form before they gain access to a download.', 'download-monitor' ),
636
  'gravity_forms',
637
  'gravity-forms'
638
  );
141
  echo '<p class="wpchill-upsell-description">' . esc_html( $description ) . '</p>';
142
  echo '<p>';
143
 
144
+ $buttons = '<a target="_blank" href="https://www.download-monitor.com/pricing/?utm_source=' . esc_attr( $utm_source ) . '&utm_medium=upsell&utm_campaign=w.org&utm_content=' . esc_attr( $tab ) . '" class="button-primary button">' . esc_html__( 'Get Extension!', 'download-monitor' ) . '</a>';
145
 
146
  echo wp_kses_post( apply_filters( 'dlm_upsell_buttons', $buttons, $tab ) );
147
 
229
  // First is the tab and then are the sections
230
  $this->upsell_tabs = apply_filters( 'dlm_upsell_tabs', array(
231
  'lead_generation' => array(
232
+ 'title' => esc_html__( 'Content Locking', 'download-monitor' ),
233
  'upsell' => true,
234
  'sections' => array(
235
  'ninja_forms' => array(
403
  if ( ! $this->check_extension( 'dlm-email-lock' ) ) {
404
 
405
  $this->generate_upsell_box(
406
+ __( 'Email Lock', 'download-monitor' ),
407
  __( 'Require your users’ email addresses to send newsletters and create a list of your customers.', 'download-monitor' ),
408
  'access',
409
  'email-lock'
413
  if ( ! $this->check_extension( 'dlm-gravity-forms' ) ) {
414
 
415
  $this->generate_upsell_box(
416
+ __( 'Gravity Forms Lock', 'download-monitor' ),
417
  __( 'Ask users to fill in a form created on Gravity Forms before they start downloading your files.', 'download-monitor' ),
418
  'access',
419
  'gravity-forms'
423
  if ( ! $this->check_extension( 'dlm-ninja-forms' ) ) {
424
 
425
  $this->generate_upsell_box(
426
+ __( 'Ninja Forms Lock', 'download-monitor' ),
427
+ __( 'Use the Ninja Forms - content locking extension to add forms easily to your download files.', 'download-monitor' ),
428
  'access',
429
  'ninja-forms'
430
  );
611
  if ( ! $this->check_extension( 'dlm-ninja-forms' ) ) {
612
 
613
  $this->generate_upsell_box(
614
+ __( 'Ninja Forms Lock', 'download-monitor' ),
615
+ __( 'The Ninja Forms - content locking extension for Download Monitor allows you to require users to fill in a Ninja Forms form before they gain access to a download.','download-monitor' ),
616
  'ninja_forms',
617
  'ninja-forms'
618
  );
621
  if ( ! $this->check_extension( 'dlm-email-lock' ) ) {
622
 
623
  $this->generate_upsell_box(
624
+ __( 'Email Lock', 'download-monitor' ),
625
  __( 'The Email Lock extension for Download Monitor allows you to require users to fill in their email address before they gain access to a download.', 'download-monitor' ),
626
  'email_lock',
627
  'email-lock'
631
  if ( ! $this->check_extension( 'dlm-gravity-forms' ) ) {
632
 
633
  $this->generate_upsell_box(
634
+ __( 'Gravity Forms Lock', 'download-monitor' ),
635
+ __( 'The Gravity Forms - content locking extension for Download Monitor allows you to require users to fill out a Gravity Forms form before they gain access to a download.', 'download-monitor' ),
636
  'gravity_forms',
637
  'gravity-forms'
638
  );
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wpchill, silkalns, barrykooij, mikejolley
3
  Tags: download manager, document management, file manager, digital store, ecommerce, document management plugin, download monitor, download counter, password protection, download protection, password, protect downloads, tracker, sell, shop, ecommerce, paypal
4
  Requires at least: 5.4
5
  Tested up to: 5.8
6
- Stable tag: 4.4.13
7
  License: GPLv3
8
  Text Domain: -
9
  Requires PHP: 5.6
@@ -29,6 +29,7 @@ Download Monitor provides an interface for uploading and managing downloadable f
29
  * Member only downloads, requires users to be logged in to download your files.
30
  * Customisable endpoints for showing pretty download links.
31
 
 
32
 
33
  > #### Download Monitor Extensions
34
  > Extend the core Download Monitor plugin with it's powerful extensions.
@@ -122,494 +123,4 @@ More documentation can be found in our [Knowledge Base](https://www.download-mon
122
 
123
  == Changelog ==
124
 
125
- = 4.4.13 - 16.11.2021 =
126
- Fixed: Fatal error because an extra semicolon
127
-
128
- = 4.4.12 - 16.11.2021 =
129
- Fixed: Dependencies in widgets screen cc @HardeepAsrani
130
- Removed: Custom webpack build and replaced with @wordpress/scripts cc @HardeepAsrani
131
- Fixed: Optimized block with React Hooks for readibility purposes cc @HardeepAsrani
132
- Fixed: Product not saving in downloads select ( https://github.com/WPChill/download-monitor/issues/770 )
133
- Fixed: Typo in file URLs
134
- Fixed: Widget options update - https://github.com/WPChill/download-monitor/issues/768
135
- Fixed: Downloads not working with shop enabled - https://github.com/WPChill/download-monitor/issues/769
136
-
137
- = 4.4.11 - 03.11.2021 =
138
- Fixed: Reports date changing ( https://github.com/WPChill/download-monitor/issues/755 )
139
- Fixed: Log page - Status Column width ( https://github.com/WPChill/download-monitor/issues/756 )
140
- Fixed: Password protection form, password field not being displayed ( https://github.com/WPChill/download-monitor/issues/757 )
141
- Fixed: Escaping problem in the No-Access page ( https://github.com/WPChill/download-monitor/issues/758 )
142
-
143
- = 4.4.10 - 02.11.2021 =
144
- Fixed: Escaping in admin "All Downloads" page. ( https://github.com/WPChill/download-monitor/issues/753 )
145
- Added: Review request in dashboard.
146
-
147
- = 4.4.9 - 01.11.2021 =
148
- Fixed: Escaping in admin column, displaying HTLM instead of correct form
149
- Added: Clear transients button.
150
-
151
- = 4.4.8 - 29.10.2021 =
152
- Fixed: Insert Download/Quick Download Button
153
-
154
- = 4.4.7 - 29.10.2021 =
155
- Fixed: Sanitization & Escaping
156
-
157
- = 4.4.6 - 20.10.2021 =
158
- Fixed: Checking for modifications to the upload folder
159
-
160
- = 4.4.5 - 20.10.2021 =
161
- Fixed: PHP 8 bug - slow query ( https://github.com/WPChill/download-monitor/issues/685 )
162
- Fixed: Deprecated PHP 8 notice (https://github.com/WPChill/download-monitor/issues/682 thanks to @ashleyfae )
163
- Fixed: PHP templates errors ( https://github.com/WPChill/download-monitor/issues/691 )
164
- Fixed: Single shop download error ( https://github.com/WPChill/download-monitor/issues/690 )
165
- Fixed: Permalink errors - retrieved permalinks on archives didn't show the correct URL ( https://github.com/WPChill/download-monitor/issues/689 )
166
- Fixed : [downloads] shortcode now displays both featured and not featured downloads when left as is ( thanks to @kadimi https://github.com/WPChill/download-monitor/pull/526 )
167
- Added : Size filter in the placeholder image ( thanks to @jamesgol https://github.com/WPChill/download-monitor/pull/507 )
168
- Fixed : Sha256 support added when new files are added ( thanks to @jamesgol https://github.com/WPChill/download-monitor/pull/633 )
169
- Added: Upsells
170
- Fixed: Fix download from CDN where uploads folder is replaced ( https://github.com/WPChill/download-monitor/issues/698 )
171
- Fixed: Fatal error on URL with version param ( https://github.com/WPChill/download-monitor/issues/709 )
172
- Changed: Notice display
173
- Changed: Tab reconstruction and settings structure
174
- Changed: TinyMCE interface for short description ( https://github.com/WPChill/download-monitor/issues/708 )
175
- Fixed : Added layer of security against certain SQL Injections
176
-
177
- = 4.4.4: October 19, 2020 =
178
- * Tweak: Fixed PHP 7.4 notices.
179
- * Tweak: Check if download variable is set in content-download template. This prevents a fatal error in odd case no download is given.
180
- * Tweak: Now passing variables to actions to version.php admin view file.
181
- * Tweak: Bump websocket-extensions from 0.1.3 to 0.1.4
182
-
183
- = 4.4.3: June 8, 2020 =
184
- * Tweak: Small minor fixes and tweaks.
185
-
186
- = 4.4.2: April 3, 2019 =
187
- * Tweak: Fixed an relative inclusion bug that sometimes caused bootstrap not to properly load. (Undefined function dlm_is_shop_enabled()).
188
-
189
- = 4.4.1: March 27, 2019 =
190
- * Tweak: Added proper html escaping to order overview page, props Nam.Dinh.
191
-
192
- = 4.4.0: March 8, 2019 =
193
- * Feature: Added a new product post type to create a clear separation between downloads and the products you can sell. Read more about this here: https://www.download-monitor.com/kb/products/
194
- * Feature: Shop products now have a basic detail (single) page. This will be improved in future updates.
195
- * Feature: Added "Paid Only" option to downloads. This allows you to require users to have a purchase linked to the download before file can be downloaded.
196
- * Feature: Versions are now passed through the no-access page.
197
- * Tweak: dlm_buy shortcode now takes a product id, instead of a download ID. These need to be updated manually.
198
- * Tweak: Shop feature has been more isolated from non-shop. To enable shop, go to general Download Monitor settings and check "Enable Shop".
199
- * Tweak: PayPal gateway is now enabled by default.
200
-
201
- = 4.3.0: February 27, 2019 =
202
- * Feature: Added Shop (Beta) feature. You can now sell your downloads via Download Monitor! More addition to shop (like taxes and discounts) coming soon.
203
- * Feature: Added PayPal integration for shop feature.
204
- * Feature: Added an onboarding screen, helping the user set up the plugin.
205
- * Tweak: Fixed an error when changing dates in reports on Safari.
206
- * Tweak: Added download ID to Reports overview table.
207
- * Tweak: Increased spacing of download title on reports summary block.
208
- * Tweak: We're no longer automatically creating the No Access page. This is now done via the onboarding screen.
209
- * Tweak: We're no longer supporting PHP 5.2. If you upgrade and are still running PHP 5.2, the plugin will not load but display an upgrade notice instead. More info: https://www.download-monitor.com/kb/minimum-required-php-version/
210
- * Tweak: Updated translations.
211
-
212
- = 4.2.1: January 31, 2019 =
213
- * Tweak: Correctly set default template of Gutenberg block on frontend of website when no specific template is set.
214
-
215
- = 4.2.0: January 24, 2019 =
216
- * Feature: Added Gutenberg download block. Type /download in your post screen to see it in action!
217
-
218
- = 4.1.1: September 12, 2018 =
219
- * Tweak: Fixed a bug that incorrectly included featured downloads by default in [downloads].
220
- * Tweak: Added 'dlm_get_template_part_args' filter that allows argument filtering on Download Monitor templates.
221
-
222
- = 4.1.0: May 21, 2018 =
223
- * Feature: Added a new option that allows site-owners if and how they wish to track IP addresses of users.
224
- * Feature: Added a new option that allows site-owners to decide if they wish to track user agent of users.
225
- * Tweak: Fixed an issue where title of log dates had incorrect date.
226
- * Tweak: Added compatibility for 'Post Types Order' plugin. The dashboard widget no longer is affected by their custom order.
227
- * Tweak: Added dlm_frontend_scripts filter, allows user to not include DLM frontend assets.
228
- * Tweak: No longer load jQuery UI CSS from Google CDN, file is now included in plugin.
229
- * Tweak: No longer loading jQuery images from Google CDN, images are now included in plugin.
230
-
231
- = 4.0.8: May 3, 2018 =
232
- * Tweak: Fixed a bug in the legacy upgrader that caused versions with empty dates not to added.
233
- * Tweak: Fixed the use of getTimeStamp() because PHP 5.2 doesn't support this.
234
-
235
- = 4.0.7: April 13, 2018 =
236
- * Tweak: Fixed a bug that caused certain months in the reports filter to crash for non English languages.
237
- * Tweak: Fixed a bug that caused the 10 download limit on the Dashboard Widget to be ignored.
238
- * Tweak: Added "dlm_remove_dashboard_popular_downloads" filter that allows for not loading of dashboard widget.
239
- * Tweak: Moved 'dlm_log_item' filter to within the WordPressLogItemRepository::persist() method. This way the filter will always be called upon a log persist.
240
- * Tweak: Filter 'dlm_log_item' 2nd and 3rd argument changed from DLM_Download & DLM_Download_Version type to int (ID's of both download and version).
241
- * Tweak: Moved 'dlm_downloading_log_item_added' filter to within the WordPressLogItemRepository::persist() method. This way the filter will always be called upon a log persist.
242
- * Tweak: Filter 'dlm_downloading_log_item_added' 2nd and 3rd argument changed from DLM_Download & DLM_Download_Version type to int (ID's of both download and version).
243
- * Tweak: Added filter 'dlm_reports_page_start' to add content on top of admin reports page.
244
- * Tweak: Added filter 'dlm_reports_page_end' to add content on bottom of admin reports page.
245
- * Tweak: Added download id and download object to 'dlm_placeholder_image_src' filter, props [James Golovich](https://github.com/jamesgol).
246
- * Tweak: Added filter 'dlm_download_get_versions' on return of DLM_Download::get_versions(), props [James Golovich](https://github.com/jamesgol).
247
- * Tweak: Added $atts to various shortcode filters, props [James Golovich](https://github.com/jamesgol).
248
-
249
- = 4.0.6: March 8, 2018 =
250
- * Tweak: Fixed a bug in the version-list template, correct version links are now displayed.
251
-
252
- = 4.0.5: February 21, 2018 =
253
- * Tweak: Fixed a bug that caused the "Add file" button to not appear on the Add New Download screen.
254
- * Tweak: Fixed a bug that caused the crc32b hash not to be saved when adding a download via the 'Quick-add Download' option.
255
- * Tweak: WordPressVersionRepository no longer explicitly sets 'post_content' and 'post_excerpt' database fields of dlm_download_version to empty strings. Props [Erin Morelli](https://github.com/ErinMorelli).
256
-
257
- = 4.0.4: February 19, 2018 =
258
- * Tweak: Fixed a bug where versions of draft and pending review downloads were not displayed in the backend.
259
-
260
- = 4.0.3: February 9, 2018 =
261
- * Tweak: We now cache if we need to upgrade legacy downloads. This prevents us from checking if we need to upgrade on every pageload, improving performance and preventing constant sql warning when legacy table doesn't exist.
262
- * Tweak: Fixed SQL error in has_ip_downloaded_version() call ('type' does not exist).
263
-
264
- = 4.0.2: February 2, 2018 =
265
- * Tweak: Moved no cache headers up in download process, improving cache prevention.
266
- * Tweak: Added new log item meta data methods, making it easier to add meta data.
267
- * Tweak: Added new action 'dlm_downloading_log_item_added'. Is triggered after log item is added on download request.
268
- * Tweak: Added $download and $version arguments to 'dlm_log_item' filter.
269
-
270
- = 4.0.1: January 25, 2018 =
271
- * Tweak: Fixed an issue that caused widget limit to not work.
272
- * Tweak: Fixed an count() warning in PHP7.2 on extension page.
273
- * Tweak: Fixed a passed by reference notice in lower PHP versions in get_visitor_ip() call.
274
- * Tweak: Added 'dlm_download_count' filter to fitler get_download_count() return value.
275
- * Tweak: Downloads now return an empty version if no version is added. This prevents mulitple possible fatal errors when external scripts don't check if get_version() returns null.
276
- * Tweak: Added an extra check to if website needs upgrading. If there are new downloads in the database, no upgrade is recommended.
277
- * Tweak: Added an extra warning on the upgrade page to users that navigate to the page while we think no upgrade is needed.
278
- * Tweak: Requesting a non existing download no longer triggers a fatal error (exception is now properly handled).
279
- * Tweak: Correct exception handling when trying to save meta boxes of non existing download.
280
-
281
- = 4.0.0: January 22, 2018 =
282
- * Feature: Added reports page for download statistics.
283
- * Feature: Added hash values to version blocks.
284
- * Feature: Added option to include downloads in WordPress default search results, props [Kurt Zenisek](https://github.com/KZeni).
285
- * Feature: Added SHA256 hash.
286
- * Feature: Added support for regex patterns in user agent blacklist, props [Matt Mower](https://github.com/mdmower).
287
- * Feature: Added user filter to logs, props [neptuneweb](https://github.com/neptuneweb).
288
- * Feature: Log columns in log table are now sortable.
289
- * Feature: Added an option for the user to remove all transients.
290
- * Feature: Added the ability to exclude tags from the [downloads] shortcode.
291
- * Feature: Added search option in "Insert Download" overlay.
292
- * Feature: Added builtin legacy upgrade tool to help users move their downloads from legacy to current version.
293
- * Tweak: Added 'dlm_file_path' filter to filter file_path in download request.
294
- * Tweak: We're now only serving downloads when requested over the GET or POST HTTP method. This can be filtered via filter dlm_accepted_request_methods.
295
- * Tweak: Added Download Title to download log CSV export file.
296
- * Tweak: Added 'dlm_shortcode_total_downloads' filter to output of [total_downloads] shortcode, props [Joel James](https://github.com/Joel-James).
297
- * Tweak: Added support for Apache 2.4 and up in generated .htaccess file.
298
- * Tweak: Added 'dlm_download_use_version_transient' filter to allow website to not use cache transients.
299
- * Tweak: Downloads need to be published in order to exist, draft downloads can no longer be downloaded.
300
- * Tweak: Fixed plugin links on plugin overview page.
301
- * Tweak: Optimization rewrite of DLM_Download class.
302
- * Tweak: Optimization rewrite of DLM_Download_Version class.
303
- * Tweak: Introduction of Factory and Repository design patterns for Downloads and Versions.
304
- * Tweak: Complete rewrite of setting fields.
305
- * Tweak: Updated template files to use new download methods.
306
- * Tweak: Introduced new filter "dlm_setting_field_TYPE", allowing third party programs to add custom field types to settings.
307
- * Tweak: Implemented Composer autoloader.
308
- * Tweak: Download Categories and Download Tags label name now contains 'Download'.
309
- * Tweak: Download Widget now uses default template output set in settings when no output template is set.
310
- * Tweak: Download Widget CSS tweaks.
311
- * Tweak: Download category and download tags are now excluded from Yoast SEO sitemap.
312
- * Tweak: 'Delete Logs' button now requires a confirmation.
313
- * Tweak: Placeholders for download thumbnails in media library list view are now also properly replaced.
314
- * Tweak: Minor UX improvement on Download Information fields making it easier to copy these, props [Danny van Kooten](https://github.com/dannyvankooten).
315
- * Tweak: Replaced double underscore prefixed functions with single underscore prefix to comply with PHP reserved method naming rules.
316
-
317
- = 1.9.9: October 18, 2017 =
318
- * Tweak: Fixed an issue with 'No Access' page not saving correctly.
319
-
320
- = 1.9.8: October 6, 2017 =
321
- * Tweak: Add option to allow HTTP header X_FORWARD_FOR. Allowing Download Monitor to use the X_FORWARDED_FOR HTTP header set by proxies as the IP address.
322
- * Tweak: Download files that are added via 'Quick-add download' are now properly added to WP media library.
323
- * Tweak: Introduced 'lazy select' option for Download Monitor settings. Options of these select elements are only loaded on setting pages, increasing overall plugin performance.
324
- * Tweak: We're now filtering attachment thumbnails in media library for files in dlm_uploads. This solves 403 errors on thumbnails in the protected folder.
325
-
326
- = 1.9.7: May 5, 2017 =
327
- * Tweak: Added capability checks to log export and delete functionality. Props [Pritect](http://www.pritect.net/).
328
- * Tweak: We're now redirecting users to home on empty download request. Behavior can be changed via filters. See https://www.download-monitor.com/kb/empty-download-request-redirection/
329
-
330
- = 1.9.6: February 28, 2017 =
331
- * Tweak: Fix display for unknown user in exported log, props [Matt Mower](https://github.com/mdmower).
332
- * Tweak: Settings screen hash tweaks.
333
- * Tweak: Display correct tab on settings save, props [Matt Mower](https://github.com/mdmower).
334
- * Tweak: Fixed issue with some dismissible notices.
335
- * Tweak: Add Portuguese (pt_PT) translation, props [Pedro Mendonça](https://github.com/pedro-mendonca).
336
- * Tweak: Included various language tweaks via Transifex. Help out over at [Transifex](https://www.transifex.com/barrykooijplugins/download-monitor/).
337
-
338
- = 1.9.5: August 23, 2016 =
339
- * Tweak: Fixed a bug where Download Options couldn't be checked off in quick edit.
340
- * Tweak: Updated settings screen description for custom templates.
341
- * Tweak: Download Information input fields are now readonly since these fields are informational only. Props [kraftner](https://github.com/kraftner).
342
- * Tweak: Removed code that triggered PHP7 incompatibility false positives in PHP7 compatibility scans.
343
- * Tweak: Removed old JSON library since default JSON functions are available from PHP 5.2 and up.
344
-
345
- = 1.9.4: May 2, 2016 =
346
- * Tweak: Various cookie tweaks to prevent incorrect double logging entries.
347
- * Tweak: Added a Cookie Manager class to centralize cookie related tasks.
348
-
349
- = 1.9.3: April 11, 2016 =
350
- * Tweak: Small rework of [downloads] loop. Downloads now filterable per download via dlm_shortcode_downloads_loop_download.
351
- * Tweak: We now report missing versions for removed downloads in logs, props [Matt Mower](https://github.com/mdmower).
352
- * Tweak: Updated Danish translation, props [Georg Adamsen](https://github.com/GSAdev).
353
-
354
- = 1.9.2: March 27, 2016 =
355
- * Tweak: Fixed bug where 'version' and 'version_id' were ignored in [download].
356
- * Tweak: Fixed a bug that caused the file upload overlay to append file URL to wrong version, props [kraftner](https://github.com/kraftner).
357
- * Tweak: Optimized [download] shortcode code.
358
- * Tweak: Flush rewrites in admin settings on shutdown instead of during page load, props [sybrew](https://github.com/sybrew).
359
- * Tweak: Added extra checks to blacklist checks to prevent stristr empty needle notices, props [Matt Mower](https://github.com/mdmower).
360
- * Tweak: Removed DS_Store backups, props [Matt Mower](https://github.com/mdmower).
361
- * Tweak: Added Ukrainian translation, props [Fremler](https://www.transifex.com/user/profile/Fremler/).
362
- * Tweak: Added Croatian translation, props [molekula](https://www.transifex.com/user/profile/molekula/).
363
- * Tweak: Updated Dutch translation.
364
- * Tweak: Updated Portuguese (Brazil) translation.
365
-
366
- = 1.9.1: December 1, 2015 =
367
- * Tweak: Check if $visitor_ua isn't empty to prevent stristr warnings.
368
- * Tweak: Added wmv filetype icon support
369
- * Tweak: Correctly populate data on quick edit of download.
370
- * Tweak: Settings tab now loads tab of set URL hash.
371
-
372
- = 1.9.0: September 15, 2015 =
373
- * Feature: We added a separate 'No Access' page that includes the following features:
374
- * No Access Page : Added [dlm_no_access] shortcode that displays the no access content.
375
- * No Access Page : Added new option in Access settings tab to set No Access Page.
376
- * No Access Page : Added new template file for no access page.
377
- * No Access Page : We now redirect to set No Access page (if set) when user has no access to download.
378
- * Feature: Added ability to remove log entries.
379
- * Feature: Added browser detection for IE 11 and up.
380
- * Feature: Added OS detection for Windows 8.1
381
- * Feature: Added OS detection for Windows 10
382
- * Feature: Added Featured download, Members only and Redirect to file to bulk edit options.
383
- * Feature: Added Featured download, Members only and Redirect to file to quick edit options.
384
-
385
- = 1.8.1: August 21, 2015 =
386
- * Tweak: Small tweak to make download count fit better in box template.
387
- * Tweak: Fixed a zero file size bug.
388
- * Tweak: Fixed featured image disappears bug, props [Ricardo](https://wordpress.org/support/profile/ricardopires).
389
- * Tweak: Search template file in custom path before in plugin path.
390
-
391
- = 1.8.0: July 10, 2015 =
392
- * Feature: Added option to only count downloads and add logs from unique ip addresses, props [Matt Mower](https://github.com/mdmower).
393
- * Feature: It's now possible to display downloads with the downloads shortcode that are in all given categories (AND instead of OR) by using + (plus_ instead of , (comma).
394
- * Feature: Display nginx rules if server is running nginx.
395
- * Feature: Added Multisite / Network compatibility.
396
- * Feature: Redone blacklist IP feature, now available in the 'Access' tab.
397
- * Feature: Redone blacklist user agent feature, now available in the 'Access' tab.
398
- * Tweak: Added icon support for Office X Excel & PPT extensions.
399
- * Tweak: Run thumbnail compatibility method later to allowed themes to register first.
400
- * Tweak: Prefixed admin CSS classes to prevent plugin conflicts.
401
- * Tweak: Fix checking shortcodes for empty version strings, props [Matt Mower](https://github.com/mdmower).
402
- * Tweak: Fixed a call of trigger() in DLM_Download_Handler, props [Matt Mower](https://github.com/mdmower).
403
- * Tweak: Remove trailing space from downloads count, props [Matt Mower](https://github.com/mdmower).
404
- * Tweak: Directory browser items are now always in alphabetical order, props [Matt Mower](https://github.com/mdmower).
405
- * Tweak: The 60 seconds download counter increment cool down is now set to version ID instead of download ID, props [Matt Mower](https://github.com/mdmower).
406
- * Tweak: Created and implemented local independent basename fixing issues with Cyrillic alphabets.
407
- * Tweak: Made user agents regexes filterable: dlm_ua_parser_regexes.
408
- * Tweak: Optimized log status icons, also fixes WP emoji conflict.
409
- * Tweak: Members Only check now only does check if requester can still download.
410
- * Tweak: Replaced PHP4 constructors in widget.
411
- * Tweak: Added Danish translation.
412
- * Tweak: Updated Dutch translation.
413
- * Tweak: Updated German translation.
414
-
415
- = 1.7.2: April 29, 2015 =
416
- * Tweak: Fixed a bug that caused logs not to be displayed in WP 4.2.
417
-
418
- = 1.7.1: April 17, 2015 =
419
- * Tweak: Pass third arg to add_query_arg to prevent XSS.
420
-
421
- = 1.7.0: March 22, 2015 =
422
- * Feature: Added 'Download Information' meta box to edit download screen that displays useful download information.
423
- * Feature: Error message shown when visitor has no access to download is now an option.
424
- * Tweak: Fixing a bug where versions with spaces did not work, versions now are checked on a sanitized title.
425
- * Tweak: Viewing logs now needs custom capability: dlm_manage_logs (automatically added to administrators).
426
- * Tweak: Improved hotlink prevention check.
427
- * Tweak: Extension page tweaks.
428
- * Tweak: Added $download_id argument to dlm_hotlink_redirect filter.
429
- * Tweak: Moved hash settings to their own tab.
430
- * Tweak: Moved 'X-Accel-Redirect / X-Sendfile' and 'Prevent hotlinking' settings to General tab.
431
- * Tweak: Optimized the Insert Download button.
432
- * Tweak: Introduced a multi-byte-safe pathinfo so we can handle 'special' filenames.
433
- * Tweak: Also set the post_date_gmt value for version dates.
434
- * Tweak: Updated French translation. Props Li-An.
435
- * Tweak: Updated German translation. Props maphy-psd.
436
- * Tweak: Updated Swedish translation. Props EyesX.
437
- * Tweak: Update Slovakian translation. Props attitude.
438
- * Tweak: Added Dutch translation.
439
-
440
- = 1.6.4: March 8, 2015 =
441
- * Removed unused library jqueryFileTree.
442
- * dlm_shortcode_download_content filter now also includes $atts.
443
- * Fixed small parse file parse error because of whitespace.
444
- * Changed some admin menu hook priorities.
445
-
446
- = 1.6.3: January 18, 2015 =
447
- * Fixed an undefined method call 'get_filesize'.
448
- * Allow third party extensions to hijack [downloads] shortcode with filter dlm_shortcode_download_content.
449
- * Made 'wp_dlm_downloading' cookie only accessible through the HTTP protocol, props [Matt Mower](https://github.com/mdmower).
450
-
451
- = 1.6.2: January 11, 2015 =
452
- * Fixed a bug that caused translations not to load.
453
- * Fixed a bug that prevented download versions from being removed.
454
- * Fixed a pagination in 'insert download' shortcode bug.
455
- * Fixed a bug in the template loader when used with a custom directory, a slug and no custom template.
456
- * Removed assigning by reference, fixed strict notice when deleting downloads.
457
- * Tweaked template loader to accept arguments.
458
- * Allow downloads shortcode WP_Query arguments to be filtered with 'dlm_shortcode_downloads_args'.
459
-
460
- = 1.6.1: January 9, 2015 =
461
- * Fixed an extension activation error.
462
- * Fixed a bug that caused the featured image to disappear in some themes.
463
- * Tweak: In multisite only users that are a member of the blog can download 'member only' downloads.
464
-
465
- = 1.6.0: January 8, 2015 =
466
- * Plugin is now initiated at plugins_loaded.
467
- * Implemented auto loader.
468
- * Classes are no longer initiated at bottom of class file but whenever an object is needed.
469
- * Code standards corrections.
470
- * Introduced Template_Handler. Loading of template parts should be done through this class.
471
- * Removed $GLOBALS['dlm_logging'] global.
472
- * Removed $GLOBALS['DLM_Download_Handler'] global.
473
- * Removed internal use of $download_monitor global.
474
- * Moved all inline JavaScript to separate JavaScript files.
475
- * Moved all install related code to installer class.
476
- * Moved main plugin class to it's own file.
477
- * Deprecated 'dlm_create_log' function.
478
- * Redone extensions page.
479
- * Fixed a bug in shortcode download where orderby=download_count wasn't working.
480
- * Fixed a bug where downloads didn't work with default WP permalink structure.
481
- * Delete dlm_file_version_ids_ transient on save.
482
- * Added dlm_download_headers filter.
483
- * Added dlm_get_template_part filter.
484
-
485
- = 1.5.1 =
486
- * Fallback for JSON_UNESCAPED_UNICODE to fix accented characters on < PHP 5.4.
487
- * Changed default orderby for downloads shortcode to date, desc.
488
-
489
- = 1.5.0 =
490
- * JSON_UNESCAPED_UNICODE for files to fix unicode chars when json encoded. Fix needs PHP 5.4+ to work, but won't break lower versions.
491
- * Style filetype-docx
492
- * Update get_version_id to work with non-numeric versions.
493
- * Fix shortcode arg booleans.
494
- * Add transient cache for get_file_version_ids.
495
- * Moved all translations to Transifex - https://www.transifex.com/projects/p/download-monitor/
496
- * Changed text domain from download_monitor to download-monitor.
497
- * Added Grunt.
498
- * Added options to generate file hashes DISABLED BY DEFAULT as they can cause performance issues with large files.
499
-
500
- = 1.4.4 =
501
- * Use home_dir instead of site_dir - fixes hot-linking protections against own site (when not in root dir)
502
- * Replace hardcoded WP_CONTENT_DIR and WP_CONTENT_URL with wp_upload_dir to work when UPLOADS and UPLOADS_URL constants are set.
503
- * Added some filters for hotlink protection customisation.
504
-
505
- = 1.4.3 =
506
- * Add password form to download page when required
507
- * Run shortcodes in excerpt/short desc
508
- * Various hook additions
509
- * pr_br and zh_cn translation
510
- * Sort download count by meta_value_num
511
- * Store URLs in JSON format to allow easier search/replace
512
- * Fix dashboard sorting
513
- * Option for basic referer checking to prevent hotlinking.
514
- * Only get file hashes on save as they are resource heavy.
515
- * Disable remote file hash generation, but can be enabled with filter dlm_allow_remote_hash_file
516
- * Radio buttons instead of select (with pagination) in popup to improve performance.
517
-
518
- = 1.4.2 =
519
- * Fix for site_url -> abspath
520
- * Check if hash functions are supported before use.
521
-
522
- = 1.4.1 =
523
- * Fix file_exists error in download handlers
524
-
525
- = 1.4.0 =
526
- * MP6/3.8 admin styling. Requires 3.8.
527
- * Polish translation.
528
- * Turkish translation.
529
- * Change capability required to view dashboard widget.
530
- * Don't show "insert download" when editing a download.
531
- * Allow pagination for the [downloads] shortcode. Simply add paginate=true to the shortcode.
532
- * Reverted flush change in download handler to reduce memory usage on some hosting envrionments
533
- * changed download handlers and fixed corruption when resuming files
534
- * Calculate md5/sha1/crc32 hashes for files. Obtainable via methods or download_data, e.g. [download_data id="86" data="md5"]
535
- * Added file_date data
536
-
537
- = 1.3.2 =
538
- * Cleaned up log table queries
539
- * Tweaked download handler headers
540
- * Tweaked logging
541
- * Limit UA to 200
542
- * Setcookie to prevent double logging
543
- * Addons page (disable using add_filter( 'dlm_show_addons_page', '__return_false' ); )
544
-
545
- = 1.3.1 =
546
- * Added some new hooks
547
- * FR and SR_RS updates
548
-
549
- = 1.3.0 =
550
- * Fix 0kb downloads in some hosting enviroments
551
- * Added button to delete logs
552
- * Fixed log page when no logs are present
553
- * FR and HU updates
554
- * Added dropdown for the default template option to make available templates more obvious
555
- * Added version-list and title templates
556
-
557
- = 1.2.0 =
558
- * Option to redirect to files only (do not force)
559
- * Fixed textdomains
560
- * HU translation by Győző Farkas
561
- * Fix dlm_upload folder when not using month/day upload folders.
562
- * Fix IP lookup
563
- * Resumable download support
564
- * Tweaked download handler
565
-
566
- = 1.1.2 =
567
- * HTTPS headers for IE fix
568
- * Italian locale
569
-
570
- = 1.1.1 =
571
- * Specify error statuses on wp_die messages e.g. 404 for missing files.
572
- * Moved DONOTCACHEPAGE
573
-
574
- = 1.1.0 =
575
- * Fixed admin notices
576
- * Added download link to admin 'file' column for copying and pasting
577
- * Farsi localisation
578
- * Wrapping content in a [download] shortcode will wrap it in a simple link.
579
-
580
- = 1.0.6 =
581
- * Hide taxonomies from nav menus
582
- * Fix categories in download_data method.
583
-
584
- = 1.0.5 =
585
- * When do_not_force is enabled, still replace abspath with home_url
586
- * Exclude dlm_download from search and disable query var
587
- * Added category_include_children option for downloads shortcode
588
- * Fixed logs time offset.
589
-
590
- = 1.0.4 =
591
- * Tweak admin page detection to work when no downloads exist.
592
- * Fix dashboard widget warning.
593
- * Add filters to logs and export csv function.
594
- * Added extra columns to CSV.
595
-
596
- = 1.0.3 =
597
- * Fix config page to work with multibyte tab names.
598
- * Japanese locale by hide92795
599
- * Admin CSS/script conditonally loaded
600
- * Versions are now strtolower to be compatible with version_compare and to standardise numbers.
601
-
602
- = 1.0.2 =
603
- * Only use wp_remote_head to get fielsize on remote files. Prevents timeouts when a file doesn't exist.
604
- * If a filesize cannot be found, set to -1 to prevent re-tries.
605
- * Insert button added to all CPT except downloads.
606
- * French locale by Jean-Michel MEYER.
607
-
608
- = 1.0.1 =
609
- * Update blockui
610
- * Workaround root relative URLS
611
-
612
- = 1.0.0 =
613
- * Complete rewrite of the plugin making use of custom post types and other best practices. Fresh start version '1' to prevent auto-updates (legacy importer needs to be used to migrate from old versions).
614
-
615
- == Upgrade Notice ==
3
  Tags: download manager, document management, file manager, digital store, ecommerce, document management plugin, download monitor, download counter, password protection, download protection, password, protect downloads, tracker, sell, shop, ecommerce, paypal
4
  Requires at least: 5.4
5
  Tested up to: 5.8
6
+ Stable tag: 4.4.14
7
  License: GPLv3
8
  Text Domain: -
9
  Requires PHP: 5.6
29
  * Member only downloads, requires users to be logged in to download your files.
30
  * Customisable endpoints for showing pretty download links.
31
 
32
+ Download Monitor has been featured on the websites of some of the most popular and leading businesses in the WordPress ecosystem, such as WPBeginner, Pagely, Jilt, WP Fusion & Kinsta.
33
 
34
  > #### Download Monitor Extensions
35
  > Extend the core Download Monitor plugin with it's powerful extensions.
123
 
124
  == Changelog ==
125
 
126
+ See <a href="https://github.com/WPChill/download-monitor/blob/master/changelog.txt" target="_blank">changelog</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/Admin/CustomActions.php CHANGED
@@ -208,6 +208,7 @@ class DLM_Custom_Actions {
208
  <label for="_featured"><input type="checkbox" name="_featured" id="_featured" value="1"/><?php echo esc_html__( 'Featured download', 'download-monitor' ); ?></label>
209
  <label for="_members_only"><input type="checkbox" name="_members_only" id="_members_only" value="1"/><?php echo esc_html__( 'Members only', 'download-monitor' ); ?></label>
210
  <label for="_redirect_only"><input type="checkbox" name="_redirect_only" id="_redirect_only" value="1"/><?php echo esc_html__( 'Redirect to file', 'download-monitor' ); ?></label>
 
211
  </div>
212
  </fieldset>
213
  <?php
208
  <label for="_featured"><input type="checkbox" name="_featured" id="_featured" value="1"/><?php echo esc_html__( 'Featured download', 'download-monitor' ); ?></label>
209
  <label for="_members_only"><input type="checkbox" name="_members_only" id="_members_only" value="1"/><?php echo esc_html__( 'Members only', 'download-monitor' ); ?></label>
210
  <label for="_redirect_only"><input type="checkbox" name="_redirect_only" id="_redirect_only" value="1"/><?php echo esc_html__( 'Redirect to file', 'download-monitor' ); ?></label>
211
+ <?php do_action( 'dlm_extra_quick_bulk_fields' ); ?>
212
  </div>
213
  </fieldset>
214
  <?php
src/Admin/Extensions.php CHANGED
@@ -91,6 +91,8 @@ class DLM_Admin_Extensions {
91
 
92
  add_filter( 'dlm_add_edit_tabs', array( $this, 'dlm_cpt_tabs' ) );
93
 
 
 
94
 
95
  }
96
 
@@ -302,10 +304,9 @@ class DLM_Admin_Extensions {
302
  echo '<a href="' . esc_url( $extension->url ) . '?utm_source=plugin&utm_medium=extension-block&utm_campaign=' . esc_attr( $extension->name ) . '" target="_blank">';
303
  echo '<div class="dlm_extension_img_wrapper"><img src="' . esc_url( $extension->image ) . '" alt="' . esc_attr( $extension->name ) . '" /></div>';
304
  echo '<h3>' . esc_html( $extension->name ) . '</h3>';
305
- echo '<p class="extension-desc">' . esc_html( $extension->desc ) . '</p>';
306
  echo '<div class="product_footer">';
307
- //echo '<span class="loop_price' . ( ( $sale ) ? ' sale' : '' ) . '">' . esc_html( $price_display ) . ' / ' . esc_html__( 'year', 'download-monitor' ) . '</span>';
308
- echo '<div class="button button-secondary loop_more">' . esc_html__( 'Get This Extension', 'download-monitor' ) . '<span class="dashicons dashicons-external"></span></div>';
309
  echo '</div>';
310
  echo '</a>';
311
  echo '</div>';
@@ -313,17 +314,7 @@ class DLM_Admin_Extensions {
313
 
314
  echo '</div>';
315
  echo '</div>';
316
- ?>
317
- <div class="wrap dlm_extensions_wrap">
318
- <div class="icon32 icon32-posts-dlm_download" id="icon-edit"><br/></div>
319
- <h1>
320
- <?php esc_html_e( 'Download Monitor Installed Extensions', 'download-monitor' ); ?>
321
- <a href="<?php echo esc_url( add_query_arg( 'dlm-force-recheck', '1', admin_url( 'edit.php?post_type=dlm_download&page=dlm-extensions' ) ) ); ?>"
322
- class="button dlm-reload-button">
323
- <?php esc_html_e( 'Reload Extensions', 'download-monitor' ); ?>
324
- </a>
325
- </h1>
326
- <?php
327
  } else if ( count( $this->installed_extensions ) > 0 ) {
328
  echo '<p>' . esc_html__( 'Wow, looks like you installed all our extensions. Thanks, you rock!', 'download-monitor' ) . '</p>';
329
  }
@@ -480,4 +471,21 @@ class DLM_Admin_Extensions {
480
  public function get_extensions(){
481
  return $this->installed_extensions;
482
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
483
  }
91
 
92
  add_filter( 'dlm_add_edit_tabs', array( $this, 'dlm_cpt_tabs' ) );
93
 
94
+ add_filter( 'dlm_settings', array( $this, 'remove_pro_badge' ), 99 );
95
+
96
 
97
  }
98
 
304
  echo '<a href="' . esc_url( $extension->url ) . '?utm_source=plugin&utm_medium=extension-block&utm_campaign=' . esc_attr( $extension->name ) . '" target="_blank">';
305
  echo '<div class="dlm_extension_img_wrapper"><img src="' . esc_url( $extension->image ) . '" alt="' . esc_attr( $extension->name ) . '" /></div>';
306
  echo '<h3>' . esc_html( $extension->name ) . '</h3>';
307
+ echo '<div class="extension-desc">' . wp_kses_post( $extension->desc ) . '</div>';
308
  echo '<div class="product_footer">';
309
+ echo '<div class="button button-secondary loop_more">' . esc_html__( 'View Extension', 'download-monitor' ) . '<span class="dashicons dashicons-external"></span></div>';
 
310
  echo '</div>';
311
  echo '</a>';
312
  echo '</div>';
314
 
315
  echo '</div>';
316
  echo '</div>';
317
+
 
 
 
 
 
 
 
 
 
 
318
  } else if ( count( $this->installed_extensions ) > 0 ) {
319
  echo '<p>' . esc_html__( 'Wow, looks like you installed all our extensions. Thanks, you rock!', 'download-monitor' ) . '</p>';
320
  }
471
  public function get_extensions(){
472
  return $this->installed_extensions;
473
  }
474
+
475
+ /**
476
+ * Removes pro badge if the section has any extension installed
477
+ *
478
+ * @return array
479
+ *
480
+ * @since 4.4.14
481
+ */
482
+ public function remove_pro_badge( $settings ){
483
+
484
+ foreach($settings as $key => $setting){
485
+ if( !empty( $setting['sections'] ) && isset( $setting['badge'] ) ){
486
+ $settings[$key]['badge'] = false;
487
+ }
488
+ }
489
+ return $settings;
490
+ }
491
  }
src/Admin/OptionsUpsells.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ } // Exit if accessed directly
6
+
7
+ /**
8
+ * DLM_Admin class.
9
+ */
10
+ class DLM_Admin_OptionsUpsells {
11
+
12
+ /**
13
+ * __construct function.
14
+ *
15
+ * @access public
16
+ */
17
+ public function __construct() {
18
+ add_action( 'dlm_options_end', array( $this, 'add_upsells_products' ), 99 );
19
+ }
20
+
21
+ public function get_active_addons(){
22
+
23
+ return DLM_Product_Manager::get()->get_products();
24
+ }
25
+
26
+ public function add_upsells_products(){
27
+
28
+ $active_addons = $this->get_active_addons();
29
+
30
+ if( !array_key_exists( 'dlm-terms-and-conditions', $active_addons ) ){
31
+ $this->render_terms_and_conditions_upsell();
32
+ }
33
+
34
+ if( !array_key_exists( 'dlm-twitter-lock', $active_addons ) ){
35
+ $this->render_twitter_lock_upsell();
36
+ }
37
+
38
+ if( !array_key_exists( 'dlm-email-lock', $active_addons ) ){
39
+ $this->render_email_lock_upsell();
40
+ }
41
+
42
+ if( !array_key_exists( 'dlm-captcha', $active_addons ) ){
43
+ $this->render_captcha_upsell();
44
+ }
45
+
46
+
47
+ }
48
+
49
+ public function render_terms_and_conditions_upsell(){
50
+ ?>
51
+ <a href="<?php echo esc_url( 'https://www.download-monitor.com/pricing/?utm_source=plugin&utm_medium=extension-block&utm_campaign=Terms%20and%20Conditions' ); ?>" class="options_upsell_link" target="_blank">
52
+ <p class="form-field form-field-checkbox not-active">
53
+ <span class="dashicons dashicons-lock"></span>
54
+ <span><?php esc_html_e( 'Terms &amp; Conditions Required', 'download-monitor' ); ?><span class="dlm-upsell-badge">PRO</span> </span>
55
+ <span class="dlm-description"> <?php esc_html_e( 'This download will only be downloadable after accepting the terms and conditions.', 'download-monitor' ); ?></span>
56
+ </p>
57
+ </a>
58
+ <?php
59
+ }
60
+
61
+ public function render_twitter_lock_upsell(){
62
+ ?>
63
+ <a href="<?php echo esc_url( 'https://www.download-monitor.com/pricing/?utm_source=plugin&utm_medium=extension-block&utm_campaign=Twitter%20Lock' ); ?>" class="options_upsell_link" target="_blank">
64
+ <p class="form-field form-field-checkbox not-active">
65
+ <span class="dashicons dashicons-lock"></span>
66
+ <span><?php esc_html_e( 'Twitter Lock', 'download-monitor' ); ?><span class="dlm-upsell-badge">PRO</span></span>
67
+ <span class="dlm-description"> <?php esc_html_e( 'Twitter locked downloads will only be available after user tweets a predefined text.', 'download-monitor' ); ?></span>
68
+ </p>
69
+ </a>
70
+ <?php
71
+ }
72
+
73
+ public function render_email_lock_upsell(){
74
+ ?>
75
+ <a href="<?php echo esc_url( 'https://www.download-monitor.com/pricing/?utm_source=plugin&utm_medium=extension-block&utm_campaign=Email%20Lock' ); ?>" class="options_upsell_link" target="_blank">
76
+ <p class="form-field form-field-checkbox not-active">
77
+ <span class="dashicons dashicons-lock"></span>
78
+ <span><?php esc_html_e( 'Email Lock', 'download-monitor' ); ?><span class="dlm-upsell-badge">PRO</span></span>
79
+ <span class="dlm-description"> <?php esc_html_e( 'Email locked downloads will only be available after user entered their email address.', 'download-monitor' ); ?></span>
80
+ </p>
81
+ </a>
82
+ <?php
83
+ }
84
+
85
+ public function render_captcha_upsell(){
86
+ ?>
87
+ <a href="<?php echo esc_url( 'https://www.download-monitor.com/pricing/?utm_source=plugin&utm_medium=extension-block&utm_campaign=Captcha' ); ?>" class="options_upsell_link" target="_blank">
88
+ <p class="form-field form-field-checkbox not-active">
89
+ <span class="dashicons dashicons-lock"></span>
90
+ <span><?php esc_html_e( 'Require Captcha', 'download-monitor' ); ?><span class="dlm-upsell-badge">PRO</span></span>
91
+ <span class="dlm-description"> <?php esc_html_e( 'User is required to complete a reCAPTCHA before access is granted to the dowload.', 'download-monitor' ); ?></span>
92
+ </p>
93
+ </a>
94
+ <?php
95
+ }
96
+ }
src/Admin/Settings/Page.php CHANGED
@@ -11,7 +11,7 @@ class DLM_Settings_Page {
11
  add_filter( 'dlm_admin_menu_links', array( $this, 'add_settings_page' ), 30 );
12
 
13
  // catch setting actions
14
- add_action( 'admin_init', array( $this, 'catch_admin_actions' ) );
15
 
16
  //$this->load_hooks();
17
 
@@ -65,6 +65,19 @@ class DLM_Settings_Page {
65
  if ( isset( $_GET['dlm_action_done'] ) ) {
66
  add_action( 'admin_notices', array( $this, 'display_admin_action_message' ) );
67
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
69
 
70
  /**
@@ -89,6 +102,15 @@ class DLM_Settings_Page {
89
  <?php
90
  }
91
 
 
 
 
 
 
 
 
 
 
92
 
93
  /**
94
  * settings_page function.
@@ -270,7 +292,7 @@ class DLM_Settings_Page {
270
  ?>
271
  <div class="dlm-page-header <?php echo ( $extra_class ) ? esc_attr( $extra_class ) : ''; ?>">
272
  <div class="dlm-header-logo">
273
-
274
  <img src="<?php echo esc_url( DLM_URL . 'assets/images/logo.png' ); ?>" class="dlm-logo" />
275
  </div>
276
  <div class="dlm-header-links">
@@ -312,7 +334,7 @@ class DLM_Settings_Page {
312
  private
313
  function generate_tabs( $settings ) {
314
 
315
-
316
  ?>
317
  <h2 class="nav-tab-wrapper">
318
  <?php
@@ -321,7 +343,7 @@ class DLM_Settings_Page {
321
  // backwards compatibility for when $section did not have 'title' index yet (it simply had the title set at 0)
322
  $title = ( isset( $section['title'] ) ? $section['title'] : $section[0] );
323
 
324
- echo '<a href="' . esc_url( add_query_arg( 'tab', $key, DLM_Admin_Settings::get_url() ) ) . '" class="nav-tab' . ( ( $this->get_active_tab() === $key ) ? ' nav-tab-active' : '' ) . '">' . esc_html( $title ) . ( isset( $section['badge'] ) ? ' <span class="dlm-upsell-badge">PRO</span>' : '' ) . '</a>';
325
  }
326
  ?>
327
  </h2>
@@ -365,5 +387,4 @@ class DLM_Settings_Page {
365
  return ( ! empty( $_GET['section'] ) ? sanitize_title( wp_unslash($_GET['section']) ) : $this->array_first_key( $sections ) );
366
  }
367
 
368
-
369
- }
11
  add_filter( 'dlm_admin_menu_links', array( $this, 'add_settings_page' ), 30 );
12
 
13
  // catch setting actions
14
+ add_action( 'current_screen', array( $this, 'catch_admin_actions' ) );
15
 
16
  //$this->load_hooks();
17
 
65
  if ( isset( $_GET['dlm_action_done'] ) ) {
66
  add_action( 'admin_notices', array( $this, 'display_admin_action_message' ) );
67
  }
68
+
69
+ $screen = get_current_screen();
70
+
71
+ if( $screen->base == 'dlm_download_page_download-monitor-settings' ) {
72
+ $ep_value = get_option( 'dlm_download_endpoint' );
73
+ $page_check = get_page_by_path( $ep_value );
74
+ $cpt_check = post_type_exists( $ep_value );
75
+
76
+ if( $page_check || $cpt_check ) {
77
+ add_action( 'admin_notices', array( $this, 'display_admin_invalid_ep' ) );
78
+ }
79
+ }
80
+
81
  }
82
 
83
  /**
102
  <?php
103
  }
104
 
105
+ public function display_admin_invalid_ep() {
106
+ ?>
107
+ <div class="notice notice-error">
108
+ <p><?php echo esc_html__( 'The Download Monitor endpoint is already in use by a page or post. Please change the endpoint to something else.', 'download-monitor' ); ?></p>
109
+ </div>
110
+ <?php
111
+ }
112
+
113
+
114
 
115
  /**
116
  * settings_page function.
292
  ?>
293
  <div class="dlm-page-header <?php echo ( $extra_class ) ? esc_attr( $extra_class ) : ''; ?>">
294
  <div class="dlm-header-logo">
295
+
296
  <img src="<?php echo esc_url( DLM_URL . 'assets/images/logo.png' ); ?>" class="dlm-logo" />
297
  </div>
298
  <div class="dlm-header-links">
334
  private
335
  function generate_tabs( $settings ) {
336
 
337
+
338
  ?>
339
  <h2 class="nav-tab-wrapper">
340
  <?php
343
  // backwards compatibility for when $section did not have 'title' index yet (it simply had the title set at 0)
344
  $title = ( isset( $section['title'] ) ? $section['title'] : $section[0] );
345
 
346
+ echo '<a href="' . esc_url( add_query_arg( 'tab', $key, DLM_Admin_Settings::get_url() ) ) . '" class="nav-tab' . ( ( $this->get_active_tab() === $key ) ? ' nav-tab-active' : '' ) . '">' . esc_html( $title ) . ( ( isset( $section['badge'] ) && true === $section['badge'] ) ? ' <span class="dlm-upsell-badge">PRO</span>' : '' ) . '</a>';
347
  }
348
  ?>
349
  </h2>
387
  return ( ! empty( $_GET['section'] ) ? sanitize_title( wp_unslash($_GET['section']) ) : $this->array_first_key( $sections ) );
388
  }
389
 
390
+ }
 
src/Admin/Settings/Settings.php CHANGED
@@ -291,23 +291,28 @@ class DLM_Admin_Settings {
291
  )
292
  ),
293
  'lead_generation' => array(
294
- 'title' => esc_html__( 'Lead Generation', 'download-monitor' ),
 
295
  'sections' => array()
296
  ),
297
  'external_hosting' => array(
298
  'title' => esc_html__( 'External Hosting', 'download-monitor' ),
 
299
  'sections' => array()
300
  ),
301
  'integration' => array(
302
  'title' => esc_html__( 'Integration', 'download-monitor' ),
 
303
  'sections' => array()
304
  ),
305
  'email_notification' => array(
306
  'title' => esc_html__( 'Emails', 'download-monitor' ),
 
307
  'sections' => array()
308
  ),
309
  'terns_and_conditions' => array(
310
  'title' => esc_html__( 'Terms and Conditions', 'download-monitor' ),
 
311
  'sections' => array()
312
  )
313
  );
@@ -365,7 +370,7 @@ class DLM_Admin_Settings {
365
  'std' => '',
366
  'label' => __( 'Disable Cart', 'download-monitor' ),
367
  'cb_label' => __( 'Disable', 'download-monitor' ),
368
- 'desc' => __( 'If checked, your customers will be send to your checkout page directly.', 'download-monitor' ),
369
  'type' => 'checkbox'
370
  ),
371
  )
@@ -677,4 +682,4 @@ class DLM_Admin_Settings {
677
  return $sections;
678
  }
679
 
680
- }
291
  )
292
  ),
293
  'lead_generation' => array(
294
+ 'title' => esc_html__( 'Content Locking', 'download-monitor' ),
295
+ 'badge' => true,
296
  'sections' => array()
297
  ),
298
  'external_hosting' => array(
299
  'title' => esc_html__( 'External Hosting', 'download-monitor' ),
300
+ 'badge' => true,
301
  'sections' => array()
302
  ),
303
  'integration' => array(
304
  'title' => esc_html__( 'Integration', 'download-monitor' ),
305
+ 'badge' => true,
306
  'sections' => array()
307
  ),
308
  'email_notification' => array(
309
  'title' => esc_html__( 'Emails', 'download-monitor' ),
310
+ 'badge' => true,
311
  'sections' => array()
312
  ),
313
  'terns_and_conditions' => array(
314
  'title' => esc_html__( 'Terms and Conditions', 'download-monitor' ),
315
+ 'badge' => true,
316
  'sections' => array()
317
  )
318
  );
370
  'std' => '',
371
  'label' => __( 'Disable Cart', 'download-monitor' ),
372
  'cb_label' => __( 'Disable', 'download-monitor' ),
373
+ 'desc' => __( 'If checked, your customers will be sent to your checkout page directly.', 'download-monitor' ),
374
  'type' => 'checkbox'
375
  ),
376
  )
682
  return $sections;
683
  }
684
 
685
+ }
src/Admin/WritePanels.php CHANGED
@@ -102,24 +102,21 @@ class DLM_Admin_Writepanels {
102
 
103
  do_action( 'dlm_information_start', $download->get_id(), $download );
104
  ?>
105
- <p>
106
- <label for="dlm-info-id"><?php echo esc_html__( 'ID', 'download-monitor' ); ?>
107
- <input type="text" id="dlm-info-id" value="<?php echo esc_attr( $download->get_id() ); ?>" readonly
108
- onfocus="this.select()"/>
109
- </label>
110
- </p>
111
- <p>
112
- <label for="dlm-info-url"><?php echo esc_html__( 'URL', 'download-monitor' ); ?>
113
- <input type="text" id="dlm-info-url" value="<?php echo esc_attr( $download->get_the_download_link() ); ?>"
114
- readonly onfocus="this.select()"/>
115
- </label>
116
- </p>
117
- <p>
118
- <label for="dlm-info-shortcode"><?php echo esc_html__( 'Shortcode', 'download-monitor' ); ?>
119
- <input type="text" id="dlm-info-shortcode"
120
- value='[download id="<?php echo esc_attr( $download->get_id() ); ?>"]' readonly onfocus="this.select()"/>
121
- </label>
122
- </p>
123
  <?php
124
  do_action( 'dlm_information_end', $download->get_id(), $download );
125
  } catch ( Exception $e ) {
102
 
103
  do_action( 'dlm_information_start', $download->get_id(), $download );
104
  ?>
105
+ <div>
106
+ <p><?php echo esc_html__( 'ID', 'download-monitor' ); ?> </p>
107
+ <input type="text" id="dlm-info-id" value="<?php echo esc_attr( $download->get_id() ); ?>" readonly onfocus="this.select()"/>
108
+ <a href="#" title="<?php esc_attr_e( 'Copy ID', 'download-monitor' ); ?>" class="copy-dlm-button button button-primary dashicons dashicons-format-gallery" data-item="Id" style="width:40px;"></a><span></span>
109
+ </div>
110
+ <div>
111
+ <p><?php echo esc_html__( 'URL', 'download-monitor' ); ?></p>
112
+ <input type="text" id="dlm-info-id" value="<?php echo esc_attr( $download->get_the_download_link() ); ?>" readonly onfocus="this.select()"/>
113
+ <a href="#" title="<?php esc_attr_e( 'Copy URL', 'download-monitor' ); ?>" class="copy-dlm-button button button-primary dashicons dashicons-format-gallery" data-item="Url" style="width:40px;"></a><span></span>
114
+ </div>
115
+ <div>
116
+ <p><?php echo esc_html__( 'Shortcode', 'download-monitor' ); ?> </p>
117
+ <input type="text" id="dlm-info-id" value='[download id="<?php echo esc_attr( $download->get_id() ); ?>"]' readonly onfocus="this.select()"/>
118
+ <a href="#" title="<?php esc_attr_e( 'Copy shortcode', 'download-monitor' ); ?>" class="copy-dlm-button button button-primary dashicons dashicons-format-gallery" data-item="Shortcode" style="width:40px;"></a><span></span>
119
+ </div>
 
 
 
120
  <?php
121
  do_action( 'dlm_information_end', $download->get_id(), $download );
122
  } catch ( Exception $e ) {
src/DLM.php CHANGED
@@ -119,6 +119,9 @@ class WP_DLM {
119
  // Onboarding
120
  $onboarding = new Util\Onboarding();
121
  $onboarding->setup();
 
 
 
122
  }
123
 
124
  // Setup AJAX handler if doing AJAX
@@ -272,7 +275,7 @@ class WP_DLM {
272
  */
273
  public function frontend_scripts() {
274
  if ( apply_filters( 'dlm_frontend_scripts', true ) ) {
275
- wp_enqueue_style( 'dlm-frontend', $this->get_plugin_url() . '/assets/css/frontend.css' );
276
  }
277
 
278
  // only enqueue preview stylesheet when we're in the preview
119
  // Onboarding
120
  $onboarding = new Util\Onboarding();
121
  $onboarding->setup();
122
+
123
+ // Admin Download Page Options Upsells
124
+ new DLM_Admin_OptionsUpsells();
125
  }
126
 
127
  // Setup AJAX handler if doing AJAX
275
  */
276
  public function frontend_scripts() {
277
  if ( apply_filters( 'dlm_frontend_scripts', true ) ) {
278
+ wp_register_style( 'dlm-frontend', $this->get_plugin_url() . '/assets/css/frontend.css' );
279
  }
280
 
281
  // only enqueue preview stylesheet when we're in the preview
src/Download/Download.php CHANGED
@@ -105,7 +105,7 @@ class DLM_Download {
105
  * @return void
106
  */
107
  public function the_title() {
108
- echo esc_html( $this->get_title() );
109
  }
110
 
111
  /**
105
  * @return void
106
  */
107
  public function the_title() {
108
+ echo wp_kses_post( $this->get_title() );
109
  }
110
 
111
  /**
src/DownloadHandler.php CHANGED
@@ -430,9 +430,17 @@ class DLM_Download_Handler {
430
  // check if we can find a permalink
431
  if ( false !== $no_access_permalink ) {
432
 
 
 
 
433
  // append download id to no access URL
434
- $no_access_permalink = untrailingslashit( $no_access_permalink ) . '/download-id/' . $download->get_id() . '/';
435
 
 
 
 
 
 
 
436
  if ( ! $download->get_version()->is_latest() ) {
437
  $no_access_permalink = add_query_arg( 'version', $download->get_version()->get_version(), $no_access_permalink );
438
  }
430
  // check if we can find a permalink
431
  if ( false !== $no_access_permalink ) {
432
 
433
+ //get wordpress permalink structure so we can build the url
434
+ $structure = get_option('permalink_structure', 0 );
435
+
436
  // append download id to no access URL
 
437
 
438
+ if( '' == $structure || 0 == $structure ){
439
+ $no_access_permalink = add_query_arg( 'download-id', $download->get_id(), untrailingslashit( $no_access_permalink ) );
440
+ }else{
441
+ $no_access_permalink = untrailingslashit( $no_access_permalink ) . '/download-id/' . $download->get_id() . '/';
442
+ }
443
+
444
  if ( ! $download->get_version()->is_latest() ) {
445
  $no_access_permalink = add_query_arg( 'version', $download->get_version()->get_version(), $no_access_permalink );
446
  }
src/FileManager.php CHANGED
@@ -212,7 +212,7 @@ class DLM_File_Manager {
212
  * @return string
213
  */
214
  public function get_file_name( $file_path ) {
215
- return current( explode( '?', DLM_Utils::basename( $file_path ) ) );
216
  }
217
 
218
  /**
212
  * @return string
213
  */
214
  public function get_file_name( $file_path ) {
215
+ return apply_filters( 'dlm_filemanager_get_file_name', current( explode( '?', DLM_Utils::basename( $file_path ) ) ) );
216
  }
217
 
218
  /**
src/PostTypeManager.php CHANGED
@@ -6,9 +6,12 @@ class DLM_Post_Type_Manager {
6
  * Setup hooks
7
  */
8
  public function setup() {
 
9
  add_action( 'init', array( $this, 'register' ), 10 );
10
 
11
  add_filter( 'views_edit-dlm_download', array( $this, 'add_extensions_tab' ), 10, 1 );
 
 
12
  }
13
 
14
  /**
@@ -64,7 +67,8 @@ class DLM_Post_Type_Manager {
64
  ) ),
65
  'has_archive' => false,
66
  'show_in_nav_menus' => false,
67
- 'menu_position' => 35
 
68
  ) )
69
  );
70
 
@@ -103,6 +107,27 @@ class DLM_Post_Type_Manager {
103
 
104
  }
105
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  public function add_extensions_tab( $views ) {
107
  $this->display_extension_tab();
108
  return $views;
@@ -151,4 +176,18 @@ class DLM_Post_Type_Manager {
151
  <?php
152
  }
153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
 
6
  * Setup hooks
7
  */
8
  public function setup() {
9
+ add_action( 'rest_api_init', array( $this, 'register_dlm_download_post_meta_rest' ) );
10
  add_action( 'init', array( $this, 'register' ), 10 );
11
 
12
  add_filter( 'views_edit-dlm_download', array( $this, 'add_extensions_tab' ), 10, 1 );
13
+
14
+ add_action( 'current_screen', array( $this, 'disable_geditor'));
15
  }
16
 
17
  /**
67
  ) ),
68
  'has_archive' => false,
69
  'show_in_nav_menus' => false,
70
+ 'menu_position' => 35,
71
+ 'show_in_rest' => true,
72
  ) )
73
  );
74
 
107
 
108
  }
109
 
110
+ public function register_dlm_download_post_meta_rest() {
111
+ register_rest_field( 'dlm_download', 'featured', array(
112
+ 'get_callback' => function( $post_arr ) {
113
+ return get_post_meta( $post_arr['id'], '_featured', true );
114
+
115
+ },
116
+ ));
117
+ register_rest_field( 'dlm_download', 'download_count', array(
118
+ 'get_callback' => function( $post_arr ) {
119
+ return get_post_meta( $post_arr['id'], '_download_count', true );
120
+
121
+ },
122
+ ));
123
+ register_rest_field( 'dlm_download', 'author', array(
124
+ 'get_callback' => function( $post_arr ) {
125
+ return get_the_author_meta( 'nickname', $post_arr['author'] );
126
+ },
127
+ ));
128
+
129
+ }
130
+
131
  public function add_extensions_tab( $views ) {
132
  $this->display_extension_tab();
133
  return $views;
176
  <?php
177
  }
178
 
179
+ /**
180
+ * Explicitely disable the gutenberg editor for downloads
181
+ * This is needed because the download edit page is not compatible with the gutenberg editor
182
+ */
183
+ public function disable_geditor() {
184
+
185
+ $screen = get_current_screen();
186
+ if( $screen->post_type == 'dlm_download' ) {
187
+ add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );
188
+ }
189
+
190
+ }
191
+
192
  }
193
+
src/Product/Product.php CHANGED
@@ -136,6 +136,10 @@ class DLM_Product {
136
  $this->license->store();
137
  }
138
 
 
 
 
 
139
  /**
140
  * Attempt to activate a plugin licence
141
  *
@@ -297,7 +301,7 @@ class DLM_Product {
297
  $tracking_vars = urlencode_deep( $tracking_vars );
298
  $query_string = build_query( $tracking_vars );
299
 
300
- return 'https://www.download-monitor.com/extensions/' . str_ireplace( 'dlm-', '', $this->get_product_id() ) . '?' . $query_string;
301
  }
302
 
303
 
@@ -451,7 +455,7 @@ class DLM_Product {
451
  $id = sanitize_title( $plugin_data['Name'] );
452
  echo '<tr class="plugin-update-tr active">';
453
  echo '<td colspan="3" class="plugin-update colspanchange">';
454
- echo '<div style="padding: 6px 12px; margin: 0 10px 8px 31px; background: lightYellow;">';
455
  printf(
456
  wp_kses_post (__( '<a href="%s">Register your copy</a> of the <strong>%s</strong> extension to receive access to automatic upgrades and support. Need a license key? <a href="%s" target="_blank">Purchase one now</a>.', 'download-monitor' ) ),
457
  esc_url( admin_url( 'edit.php?post_type=dlm_download&page=dlm-installed-extensions' ) ),
136
  $this->license->store();
137
  }
138
 
139
+ public function get_version() {
140
+ return $this->version;
141
+ }
142
+
143
  /**
144
  * Attempt to activate a plugin licence
145
  *
301
  $tracking_vars = urlencode_deep( $tracking_vars );
302
  $query_string = build_query( $tracking_vars );
303
 
304
+ return 'https://www.download-monitor.com/pricing?' . $query_string;
305
  }
306
 
307
 
455
  $id = sanitize_title( $plugin_data['Name'] );
456
  echo '<tr class="plugin-update-tr active">';
457
  echo '<td colspan="3" class="plugin-update colspanchange">';
458
+ echo '<div class="dlm-plugin-inline-notice">';
459
  printf(
460
  wp_kses_post (__( '<a href="%s">Register your copy</a> of the <strong>%s</strong> extension to receive access to automatic upgrades and support. Need a license key? <a href="%s" target="_blank">Purchase one now</a>.', 'download-monitor' ) ),
461
  esc_url( admin_url( 'edit.php?post_type=dlm_download&page=dlm-installed-extensions' ) ),
src/Product/ProductManager.php CHANGED
@@ -22,11 +22,75 @@ class DLM_Product_Manager {
22
  */
23
  private $error_handler;
24
 
 
 
25
  /**
26
  * Private constructor
27
  */
28
  private function __construct() {
29
  $this->error_handler = DLM_Product_Error_Handler::get();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  }
31
 
32
  /**
@@ -62,6 +126,7 @@ class DLM_Product_Manager {
62
 
63
  /**
64
  * Load extensions
 
65
  * @hooked admin_init
66
  */
67
  public function load_extensions() {
@@ -99,7 +164,7 @@ class DLM_Product_Manager {
99
  $extension = array(
100
  'file' => $extension,
101
  'version' => false,
102
- 'name' => "",
103
  );
104
  }
105
 
@@ -120,7 +185,6 @@ class DLM_Product_Manager {
120
  // Add product to products property
121
  $this->products[ $extension['file'] ] = $product;
122
  }
123
-
124
  }
125
 
126
  }
@@ -133,4 +197,108 @@ class DLM_Product_Manager {
133
  public function get_products() {
134
  return $this->products;
135
  }
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  */
23
  private $error_handler;
24
 
25
+ private $addons_requirements;
26
+
27
  /**
28
  * Private constructor
29
  */
30
  private function __construct() {
31
  $this->error_handler = DLM_Product_Error_Handler::get();
32
+
33
+ add_action( 'after_plugin_row_download-monitor/download-monitor.php', array( $this, 'update_addons_notice' ), 999, 2 );
34
+
35
+ $this->addons_requirements = apply_filters(
36
+ 'dlm_addons_requirements',
37
+ array(
38
+ 'dlm-buttons' => array(
39
+ 'version' => '4.0.3',
40
+ ),
41
+ 'dlm-captcha' => array(
42
+ 'version' => '4.2.2',
43
+ ),
44
+ 'dlm-downloading-page' => array(
45
+ 'version' => '4.0.2',
46
+ ),
47
+ 'dlm-google-drive' => array(
48
+ 'version' => '4.0.1',
49
+ ),
50
+ 'dlm-terms-and-conditions' => array(
51
+ 'version' => '4.0.2',
52
+ ),
53
+ 'dlm-twitter-lock' => array(
54
+ 'version' => '4.0.2',
55
+ ),
56
+ 'dlm-advanced-access-manager' => array(
57
+ 'version' => '4.0.4',
58
+ ),
59
+ 'dlm-email-notification' => array(
60
+ 'version' => '4.1.7',
61
+ ),
62
+ 'dlm-csv-exporter' => array(
63
+ 'version' => '4.0.1',
64
+ ),
65
+ 'dlm-gravity-forms' => array(
66
+ 'version' => '4.0.3',
67
+ ),
68
+ 'dlm-ninja-forms' => array(
69
+ 'version' => '4.1.0',
70
+ ),
71
+ 'dlm-email-lock' => array(
72
+ 'version' => '4.2.2',
73
+ ),
74
+ 'dlm-download-duplicator' => array(
75
+ 'version' => '4.0.3',
76
+ ),
77
+ 'dlm-csv-importer' => array(
78
+ 'version' => '4.1.3',
79
+ ),
80
+ 'dlm-email-notification' => array(
81
+ 'version' => '4.1.7',
82
+ ),
83
+ 'dlm-amazon-s3' => array(
84
+ 'version' => '4.0.3',
85
+ ),
86
+ 'dlm-mailchimp-lock' => array(
87
+ 'version' => '4.0.2',
88
+ ),
89
+ 'dlm-page-addon' => array(
90
+ 'version' => '4.1.4',
91
+ ),
92
+ )
93
+ );
94
  }
95
 
96
  /**
126
 
127
  /**
128
  * Load extensions
129
+ *
130
  * @hooked admin_init
131
  */
132
  public function load_extensions() {
164
  $extension = array(
165
  'file' => $extension,
166
  'version' => false,
167
+ 'name' => '',
168
  );
169
  }
170
 
185
  // Add product to products property
186
  $this->products[ $extension['file'] ] = $product;
187
  }
 
188
  }
189
 
190
  }
197
  public function get_products() {
198
  return $this->products;
199
  }
200
+
201
+ /**
202
+ * Display update addons notice
203
+ *
204
+ * @param [type] $file
205
+ * @param [type] $plugin_data
206
+ * @return void
207
+ */
208
+ public function update_addons_notice( $file, $plugin_data ) {
209
+
210
+ $addons = $this->get_products();
211
+
212
+ if ( empty( $addons ) || empty( $this->addons_requirements ) ) {
213
+ return;
214
+ }
215
+
216
+ $php_version = phpversion();
217
+ $table_header = ''; // The table header of our markup.
218
+ $table_end = '</div></td></tr>'; // The ending of the table
219
+ $addons_content = ''; // The inline/row content containing info about each addon specified in the requirements.
220
+ $html = ''; // General HTML to be shown in plugin inline notification.
221
+
222
+ // Create the table header HTML markup.
223
+ $table_header .= '<tr class="plugin-update-tr active"><td colspan="4" class="plugin-update colspanchange">';
224
+ $table_header .= '<div class="dlm-plugin-inline-notice">';
225
+ $table_header .= '<div class="dlm-plugin-inline-notice__header">';
226
+ $table_header .= '<div class="dlm-plugin-inline-notice__line"><span class="dlm-plugin-inline-notice__strong">' . esc_html__( 'Extension', 'download-monitor' ) . '<span></div>';
227
+ $table_header .= '<div class="dlm-plugin-inline-notice__line"><span class="dlm-plugin-inline-notice__strong">' . esc_html__( 'Requirements', 'download-monitor' ) . '</span></div>';
228
+ $table_header .= '<div class="dlm-plugin-inline-notice__line"><span class="dlm-plugin-inline-notice__strong">' . esc_html__( 'Current', 'download-monitor' ) . '</span></div>';
229
+ $table_header .= '<div class="dlm-plugin-inline-notice__line"><span class="dlm-plugin-inline-notice__strong">' . esc_html__( 'Actions', 'download-monitor' ) . '</span></div>';
230
+ $table_header .= '</div>';
231
+
232
+ foreach ( $addons as $slug => $addon ) {
233
+
234
+ if ( isset( $this->addons_requirements[ $slug ] ) ) {
235
+
236
+ $addon_present = false; // Verify if the addon doesn't meet one or multiple requirements.
237
+ $addon_row_req = ''; // The addon row HTML markup for requirements info.
238
+ $addon_row_curr = ''; // The addon row HTML markup for current info.
239
+ $actions = ''; // The actions content for each addon.
240
+
241
+ $plugin_slug = $addon->get_plugin_name();
242
+ $plugin_name = $addon->get_product_name();
243
+
244
+ if ( version_compare( $addon->get_version(), $this->addons_requirements[ $slug ]['version'], '<' ) ) {
245
+
246
+ $addon_present = true;
247
+ $required_version = $this->addons_requirements[ $slug ]['version'];
248
+ $current_version = $addon->get_version();
249
+
250
+ $addon_row_req .= '<p>' . esc_html__( 'Extension version:', 'download-monitor' ) . '<span class="dlm-plugin-inline-notice__required-version"> ' . esc_html( $required_version ) . '</span> ' . esc_html__( ' or higher', 'download-monitor' ) . '</p>';
251
+ $addon_row_curr .= '<p>' . esc_html__( 'Extension version:', 'download-monitor' ) . '<span class="dlm-plugin-inline-notice__current-version"> ' . esc_html( $current_version ) . '</span></p>';
252
+
253
+ if ( ! $addon->get_license()->is_active() ) {
254
+
255
+ $actions .= '<div class="dlm-plugin-inline-notice__line"><a href="' . esc_url( admin_url( 'edit.php?post_type=dlm_download&page=dlm-installed-extensions' ) ) . '" target="_blank">' . esc_html__( 'Enter your license key', 'download-monitor' ) . '</a> or <a href="https://www.download-monitor.com/pricing/" target="_blank">' . esc_html__( 'Purchase a new one', 'download-monitor' ) . '</a></div>';
256
+
257
+ } else {
258
+ $actions .= '<div class="dlm-plugin-inline-notice__line">';
259
+
260
+ $update_url = apply_filters( 'dlm_extension_inline_action_' . $plugin_slug, '', $addon );
261
+
262
+ if ( ! empty( $update_url ) ) {
263
+ $actions .= '<a href="' . esc_url( $update_url ) . '" target="_blank" class="update-link">' . esc_html__( 'Update', 'download-monitor' ) . ' ' . esc_html( $plugin_name ) . '</a>';
264
+ } else {
265
+ $actions .= '<a href="https://www.download-monitor.com/my-account/" target="_blank">' . esc_html__( 'Please update extension', 'download-monitor' ) . '</a>';
266
+ }
267
+
268
+ $actions .= '</div>';
269
+
270
+ }
271
+ }
272
+
273
+ if ( isset( $this->addons_requirements[ $slug ]['php'] ) && version_compare( $php_version, $this->addons_requirements[ $slug ]['php'], '<' ) ) {
274
+
275
+ $addon_present = true;
276
+
277
+ $required_php_version = $this->addons_requirements[ $slug ]['php'];
278
+
279
+ $addon_row_req .= '<p>' . esc_html__( 'PHP version:', 'download-monitor' ) . '<span class="dlm-plugin-inline-notice__required-version"> ' . esc_html( $required_php_version ) . '</span> ' . esc_html__( ' or higher', 'download-monitor' ) . '</p>';
280
+ $addon_row_curr .= '<p>' . esc_html__( 'PHP version:', 'download-monitor' ) . '<span class="dlm-plugin-inline-notice__current-version"> ' . esc_html( $php_version ) . '</span></p>';
281
+
282
+ }
283
+ }
284
+
285
+ // Now, let's create the addon row info content only if the addon doesn't meet the requirements.
286
+ if ( $addon_present ) {
287
+
288
+ $addons_content .= '<div class="dlm-plugin-inline-notice__row">';
289
+ $addons_content .= '<div class="dlm-plugin-inline-notice__line">' . $plugin_name . '</div>';
290
+ $addons_content .= '<div class="dlm-plugin-inline-notice__line">' . $addon_row_req . '</div>';
291
+ $addons_content .= '<div class="dlm-plugin-inline-notice__line">' . $addon_row_curr . '</div>';
292
+ $addons_content .= $actions;
293
+ $addons_content .= '</div>';
294
+ }
295
+ }
296
+
297
+ // If there is content in the addons_content variable it means there is something to be displayed, so display it.
298
+ if ( ! empty( $addons_content ) ) {
299
+ $html .= $table_header . $addons_content . $table_end;
300
+ }
301
+
302
+ echo wp_kses_post( $html );
303
+ }
304
+ }
src/Shop/Admin/OrderTable.php CHANGED
@@ -71,7 +71,7 @@ class OrderTable extends \WP_List_Table {
71
  * @return string
72
  */
73
  private function get_base_url() {
74
- return admin_url( sprintf( "edit.php?post_type=%s&page=download-monitor-orders", PostType::KEY ) );
75
  }
76
 
77
  /**
71
  * @return string
72
  */
73
  private function get_base_url() {
74
+ return admin_url( "edit.php?post_type=dlm_download&page=download-monitor-orders" );
75
  }
76
 
77
  /**
src/Shop/Checkout/Field.php CHANGED
@@ -198,7 +198,7 @@ class Field {
198
 
199
  foreach ( $fields as $field ) {
200
  $val = ( isset( $values[ $field['name'] ] ) ) ? $values[ $field['name'] ] : "";
201
- echo wp_kses_post( $this->generate( $field, $val ) );
202
  }
203
 
204
  }
198
 
199
  foreach ( $fields as $field ) {
200
  $val = ( isset( $values[ $field['name'] ] ) ) ? $values[ $field['name'] ] : "";
201
+ echo $this->generate( $field, $val );
202
  }
203
 
204
  }
src/Shortcodes.php CHANGED
@@ -69,6 +69,8 @@ class DLM_Shortcodes {
69
  * @return string
70
  */
71
  public function download( $atts, $content = '' ) {
 
 
72
 
73
  // extract shortcode atts
74
  extract( shortcode_atts( array(
69
  * @return string
70
  */
71
  public function download( $atts, $content = '' ) {
72
+ // enqueue style only on shortcode use
73
+ wp_enqueue_style( 'dlm-frontend' );
74
 
75
  // extract shortcode atts
76
  extract( shortcode_atts( array(
src/TaxonomyManager.php CHANGED
@@ -19,69 +19,80 @@ class DLM_Taxonomy_Manager {
19
  public function register() {
20
 
21
  // Register Download Category
22
- register_taxonomy( 'dlm_download_category',
 
23
  array( 'dlm_download' ),
24
- apply_filters( 'dlm_download_category_args', array(
25
- 'hierarchical' => true,
26
- 'update_count_callback' => '_update_post_term_count',
27
- 'label' => __( 'Categories', 'download-monitor' ),
28
- 'labels' => array(
29
- 'name' => __( 'Download Categories', 'download-monitor' ),
30
- 'menu_name' => __( 'Categories', 'download-monitor' ),
31
- 'singular_name' => __( 'Download Category', 'download-monitor' ),
32
- 'search_items' => __( 'Search Download Categories', 'download-monitor' ),
33
- 'all_items' => __( 'All Download Categories', 'download-monitor' ),
34
- 'parent_item' => __( 'Parent Download Category', 'download-monitor' ),
35
- 'parent_item_colon' => __( 'Parent Download Category', 'download-monitor' ),
36
- 'edit_item' => __( 'Edit Download Category', 'download-monitor' ),
37
- 'update_item' => __( 'Update Download Category', 'download-monitor' ),
38
- 'add_new_item' => __( 'Add New Download Category', 'download-monitor' ),
39
- 'new_item_name' => __( 'New Download Category Name', 'download-monitor' )
40
- ),
41
- 'show_ui' => true,
42
- 'query_var' => true,
43
- 'capabilities' => array(
44
- 'manage_terms' => 'manage_downloads',
45
- 'edit_terms' => 'manage_downloads',
46
- 'delete_terms' => 'manage_downloads',
47
- 'assign_terms' => 'manage_downloads',
48
- ),
49
- 'rewrite' => false,
50
- 'show_in_nav_menus' => false
51
- ) )
 
 
 
 
 
52
  );
53
 
54
  // Register Download Tag
55
- register_taxonomy( 'dlm_download_tag',
 
56
  array( 'dlm_download' ),
57
- apply_filters( 'dlm_download_tag_args', array(
58
- 'hierarchical' => false,
59
- 'label' => __( 'Tags', 'download-monitor' ),
60
- 'labels' => array(
61
- 'name' => __( 'Download Tags', 'download-monitor' ),
62
- 'menu_name' => __( 'Tags', 'download-monitor' ),
63
- 'singular_name' => __( 'Download Tag', 'download-monitor' ),
64
- 'search_items' => __( 'Search Download Tags', 'download-monitor' ),
65
- 'all_items' => __( 'All Download Tags', 'download-monitor' ),
66
- 'parent_item' => __( 'Parent Download Tag', 'download-monitor' ),
67
- 'parent_item_colon' => __( 'Parent Download Tag', 'download-monitor' ),
68
- 'edit_item' => __( 'Edit Download Tag', 'download-monitor' ),
69
- 'update_item' => __( 'Update Download Tag', 'download-monitor' ),
70
- 'add_new_item' => __( 'Add New Download Tag', 'download-monitor' ),
71
- 'new_item_name' => __( 'New Download Tag Name', 'download-monitor' )
72
- ),
73
- 'show_ui' => true,
74
- 'query_var' => true,
75
- 'capabilities' => array(
76
- 'manage_terms' => 'manage_downloads',
77
- 'edit_terms' => 'manage_downloads',
78
- 'delete_terms' => 'manage_downloads',
79
- 'assign_terms' => 'manage_downloads',
80
- ),
81
- 'rewrite' => false,
82
- 'show_in_nav_menus' => false
83
- ) )
 
 
 
 
84
  );
85
  }
86
 
87
- }
19
  public function register() {
20
 
21
  // Register Download Category
22
+ register_taxonomy(
23
+ 'dlm_download_category',
24
  array( 'dlm_download' ),
25
+ apply_filters(
26
+ 'dlm_download_category_args',
27
+ array(
28
+ 'hierarchical' => true,
29
+ 'update_count_callback' => '_update_post_term_count',
30
+ 'label' => __( 'Categories', 'download-monitor' ),
31
+ 'labels' => array(
32
+ 'name' => __( 'Download Categories', 'download-monitor' ),
33
+ 'menu_name' => __( 'Categories', 'download-monitor' ),
34
+ 'singular_name' => __( 'Download Category', 'download-monitor' ),
35
+ 'search_items' => __( 'Search Download Categories', 'download-monitor' ),
36
+ 'all_items' => __( 'All Download Categories', 'download-monitor' ),
37
+ 'parent_item' => __( 'Parent Download Category', 'download-monitor' ),
38
+ 'parent_item_colon' => __( 'Parent Download Category', 'download-monitor' ),
39
+ 'edit_item' => __( 'Edit Download Category', 'download-monitor' ),
40
+ 'update_item' => __( 'Update Download Category', 'download-monitor' ),
41
+ 'add_new_item' => __( 'Add New Download Category', 'download-monitor' ),
42
+ 'new_item_name' => __( 'New Download Category Name', 'download-monitor' ),
43
+ ),
44
+ 'show_ui' => true,
45
+ 'query_var' => false,
46
+ 'public' => false,
47
+ 'capabilities' => array(
48
+ 'manage_terms' => 'manage_downloads',
49
+ 'edit_terms' => 'manage_downloads',
50
+ 'delete_terms' => 'manage_downloads',
51
+ 'assign_terms' => 'manage_downloads',
52
+ ),
53
+ 'rewrite' => false,
54
+ 'show_in_nav_menus' => false,
55
+ 'show_in_rest' => true,
56
+ )
57
+ )
58
  );
59
 
60
  // Register Download Tag
61
+ register_taxonomy(
62
+ 'dlm_download_tag',
63
  array( 'dlm_download' ),
64
+ apply_filters(
65
+ 'dlm_download_tag_args',
66
+ array(
67
+ 'hierarchical' => false,
68
+ 'label' => __( 'Tags', 'download-monitor' ),
69
+ 'labels' => array(
70
+ 'name' => __( 'Download Tags', 'download-monitor' ),
71
+ 'menu_name' => __( 'Tags', 'download-monitor' ),
72
+ 'singular_name' => __( 'Download Tag', 'download-monitor' ),
73
+ 'search_items' => __( 'Search Download Tags', 'download-monitor' ),
74
+ 'all_items' => __( 'All Download Tags', 'download-monitor' ),
75
+ 'parent_item' => __( 'Parent Download Tag', 'download-monitor' ),
76
+ 'parent_item_colon' => __( 'Parent Download Tag', 'download-monitor' ),
77
+ 'edit_item' => __( 'Edit Download Tag', 'download-monitor' ),
78
+ 'update_item' => __( 'Update Download Tag', 'download-monitor' ),
79
+ 'add_new_item' => __( 'Add New Download Tag', 'download-monitor' ),
80
+ 'new_item_name' => __( 'New Download Tag Name', 'download-monitor' ),
81
+ ),
82
+ 'show_ui' => true,
83
+ 'query_var' => true,
84
+ 'capabilities' => array(
85
+ 'manage_terms' => 'manage_downloads',
86
+ 'edit_terms' => 'manage_downloads',
87
+ 'delete_terms' => 'manage_downloads',
88
+ 'assign_terms' => 'manage_downloads',
89
+ ),
90
+ 'rewrite' => false,
91
+ 'show_in_nav_menus' => false,
92
+ 'show_in_rest' => true,
93
+ )
94
+ )
95
  );
96
  }
97
 
98
+ }
templates/content-download-button.php CHANGED
@@ -9,7 +9,9 @@ if ( ! defined( 'ABSPATH' ) ) {
9
 
10
  ?>
11
 
12
- <p><a class="aligncenter download-button" href="<?php $dlm_download->the_download_link(); ?>" rel="nofollow">
13
- <?php printf( esc_html__( 'Download &ldquo;%s&rdquo;', 'download-monitor' ), esc_html($dlm_download->get_title()) ); ?>
14
- <small><?php echo esc_html( $dlm_download->get_version()->get_filename() ); ?> &ndash; <?php printf( esc_html(_n( 'Downloaded 1 time', 'Downloaded %d times', $dlm_download->get_download_count(), 'download-monitor' )), esc_html( $dlm_download->get_download_count() ) ) ?> &ndash; <?php echo esc_html( $dlm_download->get_version()->get_filesize_formatted() ); ?></small>
15
- </a></p>
 
 
9
 
10
  ?>
11
 
12
+ <p>
13
+ <a class="aligncenter download-button" href="<?php $dlm_download->the_download_link(); ?>" rel="nofollow">
14
+ <?php printf( esc_html__( 'Download &ldquo;%s&rdquo;', 'download-monitor' ), wp_kses_post( $dlm_download->get_title() ) ); ?>
15
+ <small><?php echo esc_html( $dlm_download->get_version()->get_filename() ); ?> &ndash; <?php printf( esc_html(_n( 'Downloaded 1 time', 'Downloaded %d times', $dlm_download->get_download_count(), 'download-monitor' )), absint( $dlm_download->get_download_count() ) ) ?> &ndash; <?php echo esc_html( $dlm_download->get_version()->get_filesize_formatted() ); ?></small>
16
+ </a>
17
+ </p>
templates/content-download-title.php CHANGED
@@ -11,5 +11,5 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  <a class="download-link" title="<?php if ( $dlm_download->get_version()->has_version_number() ) {
12
  printf( esc_html__( 'Version %s', 'download-monitor' ), esc_html( $dlm_download->get_version()->get_version_number() ) );
13
  } ?>" href="<?php esc_url( $dlm_download->the_download_link() ); ?>" rel="nofollow">
14
- <?php esc_html( $dlm_download->the_title() ); ?>
15
  </a>
11
  <a class="download-link" title="<?php if ( $dlm_download->get_version()->has_version_number() ) {
12
  printf( esc_html__( 'Version %s', 'download-monitor' ), esc_html( $dlm_download->get_version()->get_version_number() ) );
13
  } ?>" href="<?php esc_url( $dlm_download->the_download_link() ); ?>" rel="nofollow">
14
+ <?php $dlm_download->the_title(); ?>
15
  </a>
templates/shop/checkout/order-complete.php CHANGED
@@ -86,14 +86,15 @@ if ( ! defined( 'ABSPATH' ) ) {
86
  if ( $download->exists() ) {
87
  $download_title = $download->get_title();
88
  $version_label = $download->get_version()->get_version();
89
- $download_button_html = "<a href='" . $product->get_secure_download_link( $order, $download ) . "' class='dlm-checkout-download-button'>" . __( 'Download File', 'download-monitor' ) . "</a>";
 
90
  }
91
 
92
  ?>
93
  <tr>
94
  <td><?php echo esc_html( $download_title ); ?></td>
95
  <td><?php echo esc_html( $version_label ); ?></td>
96
- <td><?php echo esc_html( $download_button_html ); ?></td>
97
  </tr>
98
  <?php endforeach; ?>
99
  </tbody>
86
  if ( $download->exists() ) {
87
  $download_title = $download->get_title();
88
  $version_label = $download->get_version()->get_version();
89
+ $download_button_html = "<a href='" . esc_url( $product->get_secure_download_link( $order, $download ) ). "' class='dlm-checkout-download-button'>" . __( 'Download File', 'download-monitor' ) . "</a>";
90
+ $download_button_html = apply_filters( 'dlm_completed_order_download', $download_button_html, $download );
91
  }
92
 
93
  ?>
94
  <tr>
95
  <td><?php echo esc_html( $download_title ); ?></td>
96
  <td><?php echo esc_html( $version_label ); ?></td>
97
+ <td><?php echo $download_button_html; ?></td>
98
  </tr>
99
  <?php endforeach; ?>
100
  </tbody>
uninstall.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
-
3
- // What is happening?
4
- if ( ! defined( 'ABSPATH' ) || ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
5
- exit();
6
- }
7
-
8
- // get option
9
- $clean_up = absint( get_option( 'dlm_clean_on_uninstall', 0 ) );
10
-
11
- // check if we need to clean up
12
- if ( 1 === $clean_up ) {
13
-
14
- global $wpdb;
15
-
16
- /**
17
- * Fetch all Download ID's
18
- */
19
- $ids = get_posts(
20
- array(
21
- 'post_type' => 'dlm_download',
22
- 'fields' => 'ids',
23
- 'post_status' => 'any',
24
- 'posts_per_page' => - 1
25
- )
26
- );
27
-
28
- /**
29
- * Remove all download meta data
30
- */
31
- $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE `post_id` IN (" . implode( ",", $ids ) . ");" );
32
-
33
- /**
34
- * Remove all downloads
35
- */
36
- $wpdb->query( "DELETE FROM $wpdb->posts WHERE `ID` IN (" . implode( ",", $ids ) . ");" );
37
-
38
- /**
39
- * Remove all options
40
- */
41
- $wpdb->query( "DELETE FROM {$wpdb->options} WHERE `option_name` LIKE 'dlm_%';" );
42
-
43
- /**
44
- * Remove all DLM transients
45
- */
46
- $wpdb->query( "DELETE FROM {$wpdb->options} WHERE `option_name` LIKE '_transient_timeout_dlm_%';" );
47
- $wpdb->query( "DELETE FROM {$wpdb->options} WHERE `option_name` LIKE '_transient_dlm_%';" );
48
-
49
- /**
50
- * Drop logs table
51
- */
52
- $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}download_log ;" );
53
-
54
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/autoload_classmap.php CHANGED
@@ -25,6 +25,7 @@ return array(
25
  'DLM_Admin_Scripts' => $baseDir . '/src/Admin/AdminScripts.php',
26
  'DLM_Admin_Settings' => $baseDir . '/src/Admin/Settings/Settings.php',
27
  'DLM_Admin_Writepanels' => $baseDir . '/src/Admin/WritePanels.php',
 
28
  'DLM_Ajax' => $baseDir . '/src/Ajax/Ajax.php',
29
  'DLM_Ajax_CreatePage' => $baseDir . '/src/Ajax/CreatePage.php',
30
  'DLM_Ajax_GetDownloads' => $baseDir . '/src/Ajax/GetDownloads.php',
25
  'DLM_Admin_Scripts' => $baseDir . '/src/Admin/AdminScripts.php',
26
  'DLM_Admin_Settings' => $baseDir . '/src/Admin/Settings/Settings.php',
27
  'DLM_Admin_Writepanels' => $baseDir . '/src/Admin/WritePanels.php',
28
+ 'DLM_Admin_OptionsUpsells' => $baseDir . '/src/Admin/OptionsUpsells.php',
29
  'DLM_Ajax' => $baseDir . '/src/Ajax/Ajax.php',
30
  'DLM_Ajax_CreatePage' => $baseDir . '/src/Ajax/CreatePage.php',
31
  'DLM_Ajax_GetDownloads' => $baseDir . '/src/Ajax/GetDownloads.php',
vendor/composer/autoload_static.php CHANGED
@@ -40,6 +40,7 @@ class ComposerStaticInit80ce4473100edd20fd6c17775a76ce9a
40
  'DLM_Admin_Scripts' => __DIR__ . '/../..' . '/src/Admin/AdminScripts.php',
41
  'DLM_Admin_Settings' => __DIR__ . '/../..' . '/src/Admin/Settings/Settings.php',
42
  'DLM_Admin_Writepanels' => __DIR__ . '/../..' . '/src/Admin/WritePanels.php',
 
43
  'DLM_Ajax' => __DIR__ . '/../..' . '/src/Ajax/Ajax.php',
44
  'DLM_Ajax_CreatePage' => __DIR__ . '/../..' . '/src/Ajax/CreatePage.php',
45
  'DLM_Ajax_GetDownloads' => __DIR__ . '/../..' . '/src/Ajax/GetDownloads.php',
40
  'DLM_Admin_Scripts' => __DIR__ . '/../..' . '/src/Admin/AdminScripts.php',
41
  'DLM_Admin_Settings' => __DIR__ . '/../..' . '/src/Admin/Settings/Settings.php',
42
  'DLM_Admin_Writepanels' => __DIR__ . '/../..' . '/src/Admin/WritePanels.php',
43
+ 'DLM_Admin_OptionsUpsells' => __DIR__ . '/../..' . '/src/Admin/OptionsUpsells.php',
44
  'DLM_Ajax' => __DIR__ . '/../..' . '/src/Ajax/Ajax.php',
45
  'DLM_Ajax_CreatePage' => __DIR__ . '/../..' . '/src/Ajax/CreatePage.php',
46
  'DLM_Ajax_GetDownloads' => __DIR__ . '/../..' . '/src/Ajax/GetDownloads.php',