Download Monitor - Version 4.5.9

Version Description

Download this release

Release Info

Developer raldea89
Plugin Icon 128x128 Download Monitor
Version 4.5.9
Comparing to
See all releases

Code changes from version 4.5.8 to 4.5.9

Files changed (49) hide show
  1. assets/css/admin.css +1 -1
  2. assets/css/admin.less +22 -0
  3. assets/images/Sebastian-Herrmann.jpeg +0 -0
  4. assets/images/banner-dlm.png +0 -0
  5. assets/images/carlos-espinosa.jpeg +0 -0
  6. assets/images/features/content-grouping.png +0 -0
  7. assets/images/features/customisable-endpoints.png +0 -0
  8. assets/images/features/data-importing-exporting.png +0 -0
  9. assets/images/features/downloading-page.png +0 -0
  10. assets/images/features/easy-duplication.png +0 -0
  11. assets/images/features/enforce-download-limits.png +0 -0
  12. assets/images/features/gated-content.png +0 -0
  13. assets/images/features/instant-notifications.png +0 -0
  14. assets/images/features/link-downloads-from-cloud.png +0 -0
  15. assets/images/features/monetize-your-downloads.png +0 -0
  16. assets/images/features/page-addon.png +0 -0
  17. assets/images/features/spam-protection.png +0 -0
  18. assets/images/features/track-your-content.png +0 -0
  19. assets/js/edit-product.min.js +0 -0
  20. assets/js/shop/edit-product.js +11 -0
  21. assets/js/shop/edit-product.min.js +1 -1
  22. assets/js/shop/product-script.js +14 -0
  23. assets/js/shop/product-script.min.js +1 -0
  24. changelog.txt +10 -0
  25. download-monitor.php +2 -2
  26. includes/admin/class-dlm-welcome.php +195 -0
  27. includes/bootstrap.php +2 -0
  28. includes/installer-functions.php +1 -1
  29. includes/submodules/banner/assets/css/wpchill-welcome.css +365 -0
  30. includes/submodules/banner/assets/img/star.svg +12 -0
  31. includes/submodules/banner/class-wpchill-welcome.php +260 -0
  32. includes/submodules/banner/readme.txt +1 -0
  33. readme.txt +1 -1
  34. src/Admin/Admin.php +4 -0
  35. src/Admin/Settings/Page.php +98 -1
  36. src/Admin/Settings/Settings.php +8 -0
  37. src/Admin/WritePanels.php +10 -2
  38. src/DLM.php +3 -0
  39. src/DownloadHandler.php +25 -12
  40. src/FileManager.php +72 -2
  41. src/Installer.php +7 -0
  42. src/Logs/LoggingListTable.php +2 -2
  43. src/Polyfill/DateTimeImmutable/DateTimeImmutable.php +3 -1
  44. src/Shop/Admin/ProductTableColumns.php +9 -5
  45. src/Shop/Admin/WritePanels.php +74 -4
  46. src/Shop/Util/Assets.php +19 -0
  47. src/Version/Version.php +12 -0
  48. vendor/composer/autoload_classmap.php +2 -0
  49. vendor/composer/autoload_static.php +2 -0
assets/css/admin.css CHANGED
@@ -1 +1 @@
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;position:relative;top:-2px;padding-right:10px}.post-type-dlm_download .dlm-page-header .dlm-header-logo img{max-height:35px}.post-type-dlm_download td.column-shortcode .hidden{display:none}#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-locked_download 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-locked_download .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-locked_download{width:3.5em}table.wp-list-table th.column-locked_download 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:"\f160";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-locked_download,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-locked_download 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-locked_download 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-locked_download 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-locked_download 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 .dlm-blury:before{content:url(../images/ajax-loader.gif);display:block;position:absolute;top:50%;transform:translateY(-50%);width:100%;left:0;margin:0 auto;color:#cecece;text-align:center;z-index:11;font-size:16px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox .dlm-blury:after{content:"";display:block;background:rgba(0,0,0,.5);width:100%;top:0;left:0;margin:0 auto;height:100%;z-index:10;position:absolute}#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_media_library: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:"\f104";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{float:right}#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 a.dlm-reload-button{float:right;position:relative;top:-40px}.dlm_extensions_wrap #available-extensions{clear:both}.dlm_extensions_wrap .dlm_extensions{padding:15px 0;overflow:hidden}.dlm_extensions_wrap .dlm_extensions .dlm_extension{background-color:#fff;width:calc(20% - 15px);margin:0 15px 15px 0;display:inline-block;vertical-align:top}.dlm_extensions_wrap .dlm_extensions .dlm_extension p{margin:0}.dlm_extensions_wrap .dlm_extensions .dlm_extension a{color:#444;text-decoration:none}.dlm_extensions_wrap .dlm_extensions .dlm_extension .dlm_extension_img_wrapper{width:100%;background:#419ccb;text-align:center}.dlm_extensions_wrap .dlm_extensions .dlm_extension .dlm_extension_img_wrapper img{max-width:100%;margin:0 auto}.dlm_extensions_wrap .dlm_extensions .dlm_extension h3{padding:0 20px}.dlm_extensions_wrap .dlm_extensions .dlm_extension div.extension-desc{min-height:120px;padding:0 20px}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .product_footer .loop_price{font-weight:700}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .loop_price.sale{color:green}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .loop_price.sale strike{color:#444}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .button .dashicons{vertical-align:middle;font-size:16px}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .extension_license div.dlm_license_error{padding:.5em;margin-bottom:15px;background:#ffffe0}.dlm_extensions_wrap .dlm_extensions .dlm_extension .extension_license div.dlm_license_error a{color:#00f;text-decoration:underline}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .extension_license p.license-status.active{background:green}.dlm_extensions_wrap .dlm_extensions .dlm_extension .extension_license input{width:100%;margin:7px 0;padding:7px}.dlm_extensions_wrap .dlm_extensions .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-upsell a:first-child{margin-right:10px}.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 .form-table .dlm_htaccess_notice{margin-bottom:5px}.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}body.rsvp_page_rsvp-upgrade-to-pro #wpcontent .wrap{margin-left:0;max-width:85%}.rsvp-lite-vs-premium,.rsvp-lite-vs-premium p{font-size:14px;margin:0}.rsvp-lite-vs-premium>.wpchill-plans-table.wpchill-highlight>.wpchill-pricing-package{background:#fefff0;box-shadow:0 0 15px rgb(208 219 219)}.rsvp-lite-vs-premium .wp-badge{display:inline-block;vertical-align:middle;position:relative;margin-right:2.5%}.rsvp-lite-vs-premium h3{display:block;position:relative;font-size:16px;margin:0}.rsvp-lite-vs-premium .wpchill-plans-table{display:flex}.rsvp-lite-vs-premium .wpchill-plans-table.table-header{margin-top:50px;border-top:0}.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package{border:0}.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package.wpchill-title.wpchill-highlight::before,.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package:not(.wpchill-modula-lite):last-child:before{content:'';width:auto;display:inline-block;opacity:1;position:absolute;top:-1px;background:#41495b;text-align:center;left:0;right:0;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 5px;transform:translateY(-100%)}.rsvp-lite-vs-premium.table-footer .wpchill-pricing-package:last-child{border:0}.rsvp-lite-vs-premium .wpchill-pricing-package{text-align:center;line-height:1.5;padding:10px 15px;display:flex;align-content:center;align-items:center;justify-content:center;background:#fff;border-top:1px solid #ccc;width:32%}.rsvp-lite-vs-premium .wpchill-pricing-package:not(:first-child){max-width:300px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title{font-weight:400;color:#666;font-size:1.25rem;height:auto;-ms-flex-direction:column;flex-direction:column;padding-top:30px;padding-bottom:30px;justify-content:space-between;position:relative}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-name{margin:0;font-size:36px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title.wpchill-modula-lite{justify-content:center}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title p.description{font-style:italic;font-size:13px;margin-bottom:40px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p:last-child{font-size:30px;margin:0 0 40px 0}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p.old-price{margin:0;position:relative}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p.old-price:after{content:"";height:2px;width:60px;background:red;display:block;position:absolute;left:50%;top:52%;transform:translate(-50%,-50%)}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price sup{top:2px;position:relative;font-size:15px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-empty{background:0 0;border-color:transparent}.rsvp-lite-vs-premium .wpchill-pricing-package.feature-name{justify-content:space-between;font-weight:400;text-align:left;font-size:13px;display:block;background:0 0}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons-saved{color:green}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons{width:30px;height:30px;font-size:30px}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons-no-alt{color:#ff3439}.rsvp-lite-vs-premium .wpchill-pricing-package:last-child{background:#fefff0}.rsvp-lite-vs-premium .button .dashicons{font-size:16px;vertical-align:middle;line-height:26px}.wpchill-tooltip{position:relative;display:inline-block;float:left;margin-right:10px}.wpchill-tooltip>span{cursor:pointer;color:#0073aa;text-decoration:underline;margin-left:5px}.wpchill-tooltip .wpchill-tooltip-content{display:none;position:absolute;top:50%;right:-10px;transform:translate(100%,-50%);width:300px;background:#000;color:#fff;padding:10px;box-sizing:border-box;z-index:99}.wpchill-tooltip:hover .wpchill-tooltip-content{display:block}.wpchill-tooltip .wpchill-tooltip-content:before{content:'';width:0;height:0;border-style:solid;border-width:8px 8px 8px 0;border-color:transparent #000 transparent transparent;display:block;position:absolute;top:50%;left:-8px;transform:translateY(-50%)}.wpchill-tooltip-button{position:relative}.wpchill-tooltip-button .wpchill-tooltip-content{display:none;position:absolute;top:50%;right:25px;transform:translate(50%,-135%);width:auto;background:rgba(0,0,0,.8);color:#fff;padding:10px 15px;box-sizing:border-box;font-size:14px;z-index:99}.wpchill-tooltip-button:hover .wpchill-tooltip-content{display:block}.wpchill-tooltip-button .wpchill-tooltip-content:before{content:'';width:0;height:0;border-style:solid;border-width:8px 8px 8px 0;border-color:transparent #000 transparent transparent;display:block;position:absolute;bottom:-12px;left:50%;transform:rotate(-90deg)}.dlm-file-link{display:block;margin-top:3px}
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;position:relative;top:-2px;padding-right:10px}.post-type-dlm_download .dlm-page-header .dlm-header-logo img{max-height:35px}.post-type-dlm_download td.column-shortcode .hidden{display:none}#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-locked_download 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-locked_download .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-locked_download{width:3.5em}table.wp-list-table th.column-locked_download 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:"\f160";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-locked_download,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-locked_download 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-locked_download 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-locked_download 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-locked_download 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 .dlm-blury:before{content:url(../images/ajax-loader.gif);display:block;position:absolute;top:50%;transform:translateY(-50%);width:100%;left:0;margin:0 auto;color:#cecece;text-align:center;z-index:11;font-size:16px}#download-monitor-file .dlm-metaboxes-wrapper .dlm-metabox .dlm-blury:after{content:"";display:block;background:rgba(0,0,0,.5);width:100%;top:0;left:0;margin:0 auto;height:100%;z-index:10;position:absolute}#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_media_library: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:"\f104";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{float:right}#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-product-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-product-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 a.dlm-reload-button{float:right;position:relative;top:-40px}.dlm_extensions_wrap #available-extensions{clear:both}.dlm_extensions_wrap .dlm_extensions{padding:15px 0;overflow:hidden}.dlm_extensions_wrap .dlm_extensions .dlm_extension{background-color:#fff;width:calc(20% - 15px);margin:0 15px 15px 0;display:inline-block;vertical-align:top}.dlm_extensions_wrap .dlm_extensions .dlm_extension p{margin:0}.dlm_extensions_wrap .dlm_extensions .dlm_extension a{color:#444;text-decoration:none}.dlm_extensions_wrap .dlm_extensions .dlm_extension .dlm_extension_img_wrapper{width:100%;background:#419ccb;text-align:center}.dlm_extensions_wrap .dlm_extensions .dlm_extension .dlm_extension_img_wrapper img{max-width:100%;margin:0 auto}.dlm_extensions_wrap .dlm_extensions .dlm_extension h3{padding:0 20px}.dlm_extensions_wrap .dlm_extensions .dlm_extension div.extension-desc{min-height:120px;padding:0 20px}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .product_footer .loop_price{font-weight:700}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .loop_price.sale{color:green}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .loop_price.sale strike{color:#444}.dlm_extensions_wrap .dlm_extensions .dlm_extension .product_footer .button .dashicons{vertical-align:middle;font-size:16px}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .extension_license div.dlm_license_error{padding:.5em;margin-bottom:15px;background:#ffffe0}.dlm_extensions_wrap .dlm_extensions .dlm_extension .extension_license div.dlm_license_error a{color:#00f;text-decoration:underline}.dlm_extensions_wrap .dlm_extensions .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 .dlm_extension .extension_license p.license-status.active{background:green}.dlm_extensions_wrap .dlm_extensions .dlm_extension .extension_license input{width:100%;margin:7px 0;padding:7px}.dlm_extensions_wrap .dlm_extensions .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-upsell a:first-child{margin-right:10px}.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 .form-table .dlm_htaccess_notice{margin-bottom:5px}.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}body.rsvp_page_rsvp-upgrade-to-pro #wpcontent .wrap{margin-left:0;max-width:85%}.rsvp-lite-vs-premium,.rsvp-lite-vs-premium p{font-size:14px;margin:0}.rsvp-lite-vs-premium>.wpchill-plans-table.wpchill-highlight>.wpchill-pricing-package{background:#fefff0;box-shadow:0 0 15px rgb(208 219 219)}.rsvp-lite-vs-premium .wp-badge{display:inline-block;vertical-align:middle;position:relative;margin-right:2.5%}.rsvp-lite-vs-premium h3{display:block;position:relative;font-size:16px;margin:0}.rsvp-lite-vs-premium .wpchill-plans-table{display:flex}.rsvp-lite-vs-premium .wpchill-plans-table.table-header{margin-top:50px;border-top:0}.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package{border:0}.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package.wpchill-title.wpchill-highlight::before,.rsvp-lite-vs-premium .wpchill-plans-table.table-header .wpchill-pricing-package:not(.wpchill-modula-lite):last-child:before{content:'';width:auto;display:inline-block;opacity:1;position:absolute;top:-1px;background:#41495b;text-align:center;left:0;right:0;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 5px;transform:translateY(-100%)}.rsvp-lite-vs-premium.table-footer .wpchill-pricing-package:last-child{border:0}.rsvp-lite-vs-premium .wpchill-pricing-package{text-align:center;line-height:1.5;padding:10px 15px;display:flex;align-content:center;align-items:center;justify-content:center;background:#fff;border-top:1px solid #ccc;width:32%}.rsvp-lite-vs-premium .wpchill-pricing-package:not(:first-child){max-width:300px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title{font-weight:400;color:#666;font-size:1.25rem;height:auto;-ms-flex-direction:column;flex-direction:column;padding-top:30px;padding-bottom:30px;justify-content:space-between;position:relative}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-name{margin:0;font-size:36px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title.wpchill-modula-lite{justify-content:center}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title p.description{font-style:italic;font-size:13px;margin-bottom:40px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p:last-child{font-size:30px;margin:0 0 40px 0}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p.old-price{margin:0;position:relative}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price p.old-price:after{content:"";height:2px;width:60px;background:red;display:block;position:absolute;left:50%;top:52%;transform:translate(-50%,-50%)}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-title .wpchill-price sup{top:2px;position:relative;font-size:15px}.rsvp-lite-vs-premium .wpchill-pricing-package.wpchill-empty{background:0 0;border-color:transparent}.rsvp-lite-vs-premium .wpchill-pricing-package.feature-name{justify-content:space-between;font-weight:400;text-align:left;font-size:13px;display:block;background:0 0}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons-saved{color:green}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons{width:30px;height:30px;font-size:30px}.rsvp-lite-vs-premium .wpchill-pricing-package .dashicons-no-alt{color:#ff3439}.rsvp-lite-vs-premium .wpchill-pricing-package:last-child{background:#fefff0}.rsvp-lite-vs-premium .button .dashicons{font-size:16px;vertical-align:middle;line-height:26px}.wpchill-tooltip{position:relative;display:inline-block;float:left;margin-right:10px}.wpchill-tooltip>span{cursor:pointer;color:#0073aa;text-decoration:underline;margin-left:5px}.wpchill-tooltip .wpchill-tooltip-content{display:none;position:absolute;top:50%;right:-10px;transform:translate(100%,-50%);width:300px;background:#000;color:#fff;padding:10px;box-sizing:border-box;z-index:99}.wpchill-tooltip:hover .wpchill-tooltip-content{display:block}.wpchill-tooltip .wpchill-tooltip-content:before{content:'';width:0;height:0;border-style:solid;border-width:8px 8px 8px 0;border-color:transparent #000 transparent transparent;display:block;position:absolute;top:50%;left:-8px;transform:translateY(-50%)}.wpchill-tooltip-button{position:relative}.wpchill-tooltip-button .wpchill-tooltip-content{display:none;position:absolute;top:50%;right:25px;transform:translate(50%,-135%);width:auto;background:rgba(0,0,0,.8);color:#fff;padding:10px 15px;box-sizing:border-box;font-size:14px;z-index:99}.wpchill-tooltip-button:hover .wpchill-tooltip-content{display:block}.wpchill-tooltip-button .wpchill-tooltip-content:before{content:'';width:0;height:0;border-style:solid;border-width:8px 8px 8px 0;border-color:transparent #000 transparent transparent;display:block;position:absolute;bottom:-12px;left:50%;transform:rotate(-90deg)}.dlm-file-link{display:block;margin-top:3px}
assets/css/admin.less CHANGED
@@ -824,6 +824,28 @@ table.wp-list-table {
824
  }
825
  }
826
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
827
 
828
  #download-monitor-options {
829
  .inside {
824
  }
825
  }
826
  }
827
+ #download-monitor-product-information {
828
+ .dlm_information_panel {
829
+ div {
830
+ p {
831
+ overflow: hidden;
832
+ width: 100%;
833
+ font-weight: bold;
834
+ box-sizing: border-box;
835
+ line-height: 28px;
836
+ margin-bottom: 5px;
837
+ }
838
+ }
839
+
840
+ input {
841
+ margin: 0;
842
+ border-top-right-radius: 0;
843
+ border-bottom-right-radius: 0;
844
+ flex-grow: 1;
845
+ width: calc(100% - 45px);
846
+ }
847
+ }
848
+ }
849
 
850
  #download-monitor-options {
851
  .inside {
assets/images/Sebastian-Herrmann.jpeg ADDED
Binary file
assets/images/banner-dlm.png ADDED
Binary file
assets/images/carlos-espinosa.jpeg ADDED
Binary file
assets/images/features/content-grouping.png ADDED
Binary file
assets/images/features/customisable-endpoints.png ADDED
Binary file
assets/images/features/data-importing-exporting.png ADDED
Binary file
assets/images/features/downloading-page.png ADDED
Binary file
assets/images/features/easy-duplication.png ADDED
Binary file
assets/images/features/enforce-download-limits.png ADDED
Binary file
assets/images/features/gated-content.png ADDED
Binary file
assets/images/features/instant-notifications.png ADDED
Binary file
assets/images/features/link-downloads-from-cloud.png ADDED
Binary file
assets/images/features/monetize-your-downloads.png ADDED
Binary file
assets/images/features/page-addon.png ADDED
Binary file
assets/images/features/spam-protection.png ADDED
Binary file
assets/images/features/track-your-content.png ADDED
Binary file
assets/js/edit-product.min.js DELETED
File without changes
assets/js/shop/edit-product.js CHANGED
@@ -1,3 +1,14 @@
1
  jQuery( function ( $ ) {
2
  $('.dlm-select-ext').select2();
 
 
 
 
 
 
 
 
 
 
 
3
  });
1
  jQuery( function ( $ ) {
2
  $('.dlm-select-ext').select2();
3
+
4
+ // Copy button functionality
5
+ $('.copy-dlm-button').click(function(e) {
6
+ e.preventDefault();
7
+ var dlm_input = $(this).parent().find('input');
8
+ dlm_input.focus();
9
+ dlm_input.select();
10
+ document.execCommand('copy');
11
+ $(this).next('span').text( $(this).data('item') + ' copied');
12
+ $('.copy-dlm-button').not($(this)).parent().find('span').text('');
13
+ });
14
  });
assets/js/shop/edit-product.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){e(".dlm-select-ext").select2()});
1
+ jQuery(function(e){e(".dlm-select-ext").select2(),e(".copy-dlm-button").click(function(t){t.preventDefault();t=e(this).parent().find("input");t.focus(),t.select(),document.execCommand("copy"),e(this).next("span").text(e(this).data("item")+" copied"),e(".copy-dlm-button").not(e(this)).parent().find("span").text("")})});
assets/js/shop/product-script.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery( function ( $ ) {
2
+ // Copy shortcode functionality
3
+ $('.copy-dlm-shortcode').click( (e) => {
4
+ e.preventDefault();
5
+
6
+ const target = $(e.currentTarget);
7
+ const dlm_shortcode = target.find('input');
8
+ navigator.clipboard.writeText(dlm_shortcode.val());
9
+ target.find('.wpchill-tooltip-content span').text(dlm_product_overview.shortcode_copied);
10
+ setTimeout(() => {
11
+ target.find('.wpchill-tooltip-content span').text(dlm_product_overview.copy_shortcode);
12
+ }, 1000);
13
+ });
14
+ });
assets/js/shop/product-script.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(function(c){c(".copy-dlm-shortcode").click(t=>{t.preventDefault();const o=c(t.currentTarget),e=o.find("input");navigator.clipboard.writeText(e.val()),o.find(".wpchill-tooltip-content span").text(dlm_product_overview.shortcode_copied),setTimeout(()=>{o.find(".wpchill-tooltip-content span").text(dlm_product_overview.copy_shortcode)},1e3)})});
changelog.txt CHANGED
@@ -1,3 +1,13 @@
 
 
 
 
 
 
 
 
 
 
1
  = 4.5.8 - 28.03.2022 =
2
  Fixed: Upgrade to PRO now disappears when all extensions installed ( https://github.com/WPChill/download-monitor/issues/875 )
3
 
1
+ = 4.5.9 - 05.04.2022 =
2
+ Fixed: Security issues regarding file downloads and download titles
3
+ Added: Option to not count admin downloads. ( https://github.com/WPChill/download-monitor/issues/854 )
4
+ Added: No-index/no-follow header for redirect to file option ( https://github.com/WPChill/download-monitor/issues/879 )
5
+ Added: Welcome banner on activation ( https://github.com/WPChill/download-monitor/issues/874 )
6
+ Added: Robots.txt generation/protection setting ( https://github.com/WPChill/download-monitor/issues/878 )
7
+ Added: Metabox and shortcode column for products ( https://github.com/WPChill/download-monitor/issues/866 )
8
+ Fixed: Error downloading files if the files have been modified directly using a File Manager and the Download has not been updated ( https://github.com/WPChill/download-monitor/issues/860 )
9
+ Fixed: Polyfill DateTimeImmutable __set_state array initialization
10
+
11
  = 4.5.8 - 28.03.2022 =
12
  Fixed: Upgrade to PRO now disappears when all extensions installed ( https://github.com/WPChill/download-monitor/issues/875 )
13
 
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.5.8
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.5.8' );
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.5.9
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.5.9' );
37
 
38
  // Define DLM FILE
39
  define( 'DLM_PLUGIN_FILE', __FILE__ );
includes/admin/class-dlm-welcome.php ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The welcome page shown on fresh installs
5
+ */
6
+ class DLM_Welcome_Page {
7
+
8
+ /**
9
+ * Holds the class object.
10
+ *
11
+ * @since 4.5.9
12
+ *
13
+ * @var object
14
+ */
15
+ public static $instance;
16
+
17
+
18
+ /**
19
+ * Primary class constructor.
20
+ *
21
+ * @since 4.5.9
22
+ */
23
+ private function __construct() {
24
+
25
+ add_filter( 'dlm_admin_menu_links', array( $this, 'dlm_about_menu' ) );
26
+ add_filter( 'submenu_file', array( $this, 'remove_about_submenu_item' ) );
27
+ add_action( 'dlm_after_install_setup', array( $this, 'dlm_on_activation' ), 15 );
28
+ }
29
+
30
+
31
+ /**
32
+ * Add the About submenu
33
+ *
34
+ * @param $links
35
+ *
36
+ * @return mixed
37
+ * @since 4.5.9
38
+ */
39
+ public function dlm_about_menu( $links ) {
40
+
41
+ // Register the hidden submenu.
42
+ $links[] = array(
43
+ 'page_title' => esc_html__( 'About', 'download-monitor' ),
44
+ 'menu_title' => esc_html__( 'About', 'download-monitor' ),
45
+ 'capability' => 'manage_options',
46
+ 'menu_slug' => 'download-monitor-about-page',
47
+ 'function' => array( $this, 'about_page' ),
48
+ 'priority' => 45,
49
+ );
50
+
51
+ return $links;
52
+ }
53
+
54
+ /**
55
+ * @param $submenu_file
56
+ * @return mixed
57
+ *
58
+ * Remove the About submenu
59
+ */
60
+ public function remove_about_submenu_item( $submenu_file ) {
61
+
62
+ remove_submenu_page( 'edit.php?post_type=dlm_download', 'download-monitor-about-page' );
63
+
64
+ return $submenu_file;
65
+ }
66
+
67
+
68
+ /**
69
+ * Returns the singleton instance of the class.
70
+ *
71
+ * @return object The DLM_Welcome_Page object.
72
+ * @since 4.5.9
73
+ */
74
+ public static function get_instance() {
75
+
76
+ if ( ! isset( self::$instance ) && ! ( self::$instance instanceof DLM_Welcome_Page ) ) {
77
+ self::$instance = new DLM_Welcome_Page();
78
+ }
79
+
80
+ return self::$instance;
81
+ }
82
+
83
+
84
+ /**
85
+ * Add activation hook. Need to be this way so that the About page can be created and accessed
86
+ *
87
+ * @param $first_install
88
+ * @since 4.5.9
89
+ */
90
+ public function dlm_on_activation( $first_install ) {
91
+
92
+ if ( $first_install ) {
93
+ add_action( 'activated_plugin', array( $this, 'redirect_on_activation' ) );
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Redirect to About page when activated
99
+ *
100
+ * @param $plugin
101
+ * @since 4.5.9
102
+ */
103
+ public function redirect_on_activation( $plugin ) {
104
+
105
+ if ( DLM_FILE === $plugin ) {
106
+ wp_safe_redirect( admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-about-page' ) );
107
+ exit();
108
+ }
109
+ }
110
+
111
+
112
+ /**
113
+ * @since 4.5.9
114
+ * Display About page
115
+ */
116
+ public function about_page() {
117
+
118
+ // WPChill Welcome Class
119
+ require_once plugin_dir_path( DLM_PLUGIN_FILE ) . '/includes/submodules/banner/class-wpchill-welcome.php';
120
+
121
+ if ( ! class_exists( 'WPChill_Welcome' ) ) {
122
+ return;
123
+ }
124
+
125
+ $welcome = WPChill_Welcome::get_instance();
126
+ ?>
127
+ <div id="wpchill-welcome">
128
+
129
+ <div class="container">
130
+
131
+ <div class="hero features">
132
+
133
+ <div class="mascot">
134
+ <img src="<?php echo esc_attr( DLM_URL . 'assets/images/logo.png' ); ?>" alt="<?php esc_attr_e( 'Download Monitor Logo', 'download-monitor' ); ?>">
135
+ </div>
136
+
137
+ <div class="block">
138
+ <?php $welcome->display_heading( esc_html__( 'Thank you for installing Download Monitor', 'download-monitor' ) ); ?>
139
+ <?php $welcome->display_subheading( esc_html__( 'You\'re just a few steps away from adding, displaying and tracking your first download on your website with the easiest to use WordPress download plugin.', 'download-monitor' ) ); ?>
140
+ </div>
141
+ <div class="button-wrap-single">
142
+ <?php $welcome->display_button( esc_html__( 'Read our step-by-step guide to get started', 'download-monitor' ), 'https://www.download-monitor.com/kb/add-your-first-download/', true, '#7364ff' ); ?>
143
+ </div>
144
+ <?php $welcome->display_empty_space(); ?>
145
+ <img src="<?php echo esc_url( DLM_URL ); ?>assets/images/banner-dlm.png" alt="<?php esc_attr_e( 'Watch how to', 'strong-testimonials' ); ?>" class="video-thumbnail">
146
+ <?php $welcome->horizontal_delimiter(); ?>
147
+ <div class="block">
148
+ <?php $welcome->display_heading( esc_html__( 'Features&Add-ons', 'download-monitor' ) ); ?>
149
+ <?php $welcome->layout_start( 2, 'feature-list clear' ); ?>
150
+ <?php $welcome->display_extension( esc_html__( 'Gated content', 'download-monitor' ), esc_html__( 'Use our Email Lock or Gravity/Ninja Forms extensions to lock downloads and gather leads. Alternatively, use Twitter Lock to require tweets in exchange for access to digital products.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/gated-content.png', true, '#7364ff' ); ?>
151
+ <?php $welcome->display_extension( esc_html__( 'Enforce download limits', 'download-monitor' ), esc_html__( 'Create advanced access rules and IP restrictions to control who can access downloads, how many times can files be downloaded by each user or when do files expire.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/enforce-download-limits.png', true, '#7364ff' ); ?>
152
+ <?php $welcome->display_extension( esc_html__( 'Host files externally', 'download-monitor' ), esc_html__( 'Easily link files from Amazon S3 and Google Drive to your website.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/link-downloads-from-cloud.png', true, '#7364ff' ); ?>
153
+ <?php $welcome->display_extension( esc_html__( 'Track your content', 'download-monitor' ), esc_html__( 'Gain access to detailed reports to see how your downloads are behaving.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/track-your-content.png' ); ?>
154
+ <?php $welcome->display_extension( esc_html__( 'Content grouping', 'download-monitor' ), esc_html__( 'Easily assign categories, tags or other meta to your downloads.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/content-grouping.png' ); ?>
155
+ <?php $welcome->display_extension( esc_html__( 'Customisable endpoints', 'download-monitor' ), esc_html__( 'For showing appealing download links and engaging buttons.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/customisable-endpoints.png', true, '#7364ff' ); ?>
156
+ <?php $welcome->display_extension( esc_html__( 'Spam protection', 'download-monitor' ), esc_html__( 'Our smart Captcha extension stops bots from finding, accessing and/or downloading your files without authorization', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/spam-protection.png', true, '#7364ff' ); ?>
157
+ <?php $welcome->display_extension( esc_html__( 'Monetize your downloads', 'download-monitor' ), esc_html__( 'Ability to sell your downloads straight from your WordPress website.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/monetize-your-downloads.png' ); ?>
158
+ <?php $welcome->display_extension( esc_html__( 'Instant notifications', 'download-monitor' ), esc_html__( 'Receive instant email notifications whenever someone downloads your content.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/instant-notifications.png', true, '#7364ff' ); ?>
159
+ <?php $welcome->display_extension( esc_html__( 'Page Addon', 'download-monitor' ), esc_html__( 'Make use of a shortcode to turn a page into a fully featured download listing page.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/page-addon.png', true, '#7364ff' ); ?>
160
+ <?php $welcome->display_extension( esc_html__( 'Downloading Page', 'download-monitor' ), esc_html__( 'Forces your downloads to be served from a separate page.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/downloading-page.png', true, '#7364ff' ); ?>
161
+ <?php $welcome->display_extension( esc_html__( 'Easy data importing/exporting', 'download-monitor' ), esc_html__( ' Import/export all download data including categories, tags and all file versions to and from a CSV file.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/features/data-importing-exporting.png', true, '#7364ff' ); ?>
162
+ <?php $welcome->layout_end(); ?>
163
+
164
+ <div class="button-wrap-single clear">
165
+ <div class="right">
166
+ <?php $welcome->display_button( esc_html__( 'Upgrade Now', 'download-monitor' ), 'https://www.download-monitor.com/pricing/?utm_source=welcome_banner&utm_medium=upgradenow&utm_campaign=welcome_banner&utm_content=first_button', true, '#E76F51' ); ?>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ <?php $welcome->horizontal_delimiter(); ?>
171
+ <div class="block">
172
+ <div class="testimonials">
173
+ <div class="clear">
174
+ <?php $welcome->display_heading( esc_html__( 'Happy users of Download Monitor', 'download-monitor' ) ); ?>
175
+ <?php $welcome->display_testimonial( esc_html__( 'Do not spend any time considering other plugins that may offer the same bells and whistles. Not only is this full of fantastic functionality, the support behind the plugin is superior to anything you will get from any other developer.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/carlos-espinosa.jpeg', 'Carlos Espinosa' ); ?>
176
+ <?php $welcome->display_testimonial( esc_html__( 'Download Monitor rocks! It lets me easily implement customized/themed lists of downloads and offers useful statistics and access logs for my downloads.', 'download-monitor' ), esc_url( DLM_URL ) . 'assets/images/Sebastian-Herrmann.jpeg', 'Sebastian Herrmann' ); ?>
177
+ </div>
178
+ </div><!-- testimonials -->
179
+
180
+ <div class="button-wrap clear">
181
+ <div class="left">
182
+ <?php $welcome->display_button( esc_html__( 'Start Adding Downloads', 'download-monitor' ), esc_url( admin_url( 'edit.php?post_type=dlm_download' ) ), true, '#7364ff' ); ?>
183
+ </div>
184
+ <div class="right">
185
+ <?php $welcome->display_button( esc_html__( 'Upgrade Now', 'download-monitor' ), 'https://www.download-monitor.com/pricing/?utm_source=welcome_banner&utm_medium=upgradenow&utm_campaign=welcome_banner&utm_content=second_button', true, '#E76F51' ); ?>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </div><!-- hero -->
190
+ </div><!-- container -->
191
+ </div><!-- wpchill welcome -->
192
+ <?php
193
+ }
194
+
195
+ }
includes/bootstrap.php CHANGED
@@ -15,6 +15,7 @@ function download_monitor() {
15
  function _load_download_monitor() {
16
  // fetch instance and store in global
17
  $GLOBALS['download_monitor'] = download_monitor();
 
18
  }
19
 
20
  // require autoloader
@@ -42,4 +43,5 @@ if ( is_admin() && ( false === defined( 'DOING_AJAX' ) || false === DOING_AJAX )
42
 
43
  // Multisite blog delete
44
  add_filter( 'wpmu_drop_tables', '_download_monitor_mu_delete_blog' );
 
45
  }
15
  function _load_download_monitor() {
16
  // fetch instance and store in global
17
  $GLOBALS['download_monitor'] = download_monitor();
18
+
19
  }
20
 
21
  // require autoloader
43
 
44
  // Multisite blog delete
45
  add_filter( 'wpmu_drop_tables', '_download_monitor_mu_delete_blog' );
46
+
47
  }
includes/installer-functions.php CHANGED
@@ -89,4 +89,4 @@ function _download_monitor_mu_delete_blog( $tables ) {
89
  $tables[] = $wpdb->prefix . 'download_log';
90
 
91
  return $tables;
92
- }
89
  $tables[] = $wpdb->prefix . 'download_log';
90
 
91
  return $tables;
92
+ }
includes/submodules/banner/assets/css/wpchill-welcome.css ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpchill-welcome {
2
+ padding-top: 80px;
3
+ }
4
+
5
+ #wpchill-welcome *, #wpchill-welcome *::before, #wpchill-welcome *::after {
6
+ -webkit-box-sizing: border-box;
7
+ -moz-box-sizing: border-box;
8
+ box-sizing: border-box;
9
+ }
10
+
11
+ #wpchill-welcome .clear:before {
12
+ content: " ";
13
+ display: table;
14
+ }
15
+
16
+ #wpchill-welcome .clear:after {
17
+ clear: both;
18
+ content: " ";
19
+ display: table;
20
+ }
21
+
22
+ #wpchill-welcome .container {
23
+ margin: 0 auto;
24
+ max-width: 800px;
25
+ padding: 0;
26
+ }
27
+
28
+ #wpchill-welcome .block {
29
+ padding: 40px;
30
+ }
31
+
32
+ #wpchill-welcome img {
33
+ max-width: 100%;
34
+ height: auto;
35
+ }
36
+
37
+ #wpchill-welcome h1 {
38
+ color: #222;
39
+ font-size: 24px;
40
+ margin: 0 0 16px 0;
41
+ }
42
+
43
+ #wpchill-welcome h5 {
44
+ color: #222;
45
+ font-size: 16px;
46
+ margin: 0 0 8px 0;
47
+ }
48
+
49
+ #wpchill-welcome h6 {
50
+ font-size: 16px;
51
+ font-weight: 400;
52
+ line-height: 1.6;
53
+ margin: 0;
54
+ }
55
+
56
+ #wpchill-welcome .wpmtst-btn-lg {
57
+ font-size: 16px;
58
+ font-weight: 600;
59
+ padding: 16px 28px;
60
+ }
61
+
62
+ #wpchill-welcome .wpmtst-btn-block {
63
+ display: block;
64
+ width: 100%;
65
+ }
66
+
67
+ #wpchill-welcome .wpmtst-btn {
68
+ border: 0;
69
+ border-radius: 40px;
70
+ cursor: pointer;
71
+ display: inline-block;
72
+ margin: 0;
73
+ text-decoration: none;
74
+ text-align: center;
75
+ vertical-align: middle;
76
+ white-space: nowrap;
77
+ box-shadow: none;
78
+ }
79
+
80
+
81
+ #wpchill-welcome .button-wrap {
82
+ max-width: 590px;
83
+ margin: 0 auto 0 auto;
84
+ }
85
+
86
+ #wpchill-welcome .button-wrap .left {
87
+ margin-bottom: 10px;
88
+ }
89
+
90
+ #wpchill-welcome .button-wrap-single a {
91
+ font-size: 14px;
92
+ }
93
+
94
+ #wpchill-welcome .button-wrap-single {
95
+ padding: 0 20px;
96
+ }
97
+
98
+ @media screen and (min-width: 720px) {
99
+
100
+ #wpchill-welcome .button-wrap .left {
101
+ margin-bottom: 0px;
102
+ float: left;
103
+ width: 50%;
104
+ padding-right: 20px;
105
+ }
106
+
107
+ #wpchill-welcome .button-wrap .right {
108
+ float: right;
109
+ width: 50%;
110
+ padding-left: 20px;
111
+ }
112
+
113
+ #wpchill-welcome .button-wrap-single a {
114
+ font-size: 16px;
115
+ }
116
+ }
117
+
118
+ /* hero section */
119
+ #wpchill-welcome .hero {
120
+ background-color: #fff;
121
+ border-radius: 10px;
122
+ margin-bottom: 30px;
123
+ position: relative;
124
+ box-shadow: -3px 2px 70px 0px rgba(128, 144, 174, 0.1);
125
+ padding-top: 40px;
126
+ }
127
+
128
+ #wpchill-welcome .hero .mascot {
129
+ background-color: #fff;
130
+ border-radius: 50%;
131
+ height: 90px;
132
+ width: 90px;
133
+ padding: 28px 28px;
134
+ position: absolute;
135
+ top: -45px;
136
+ left: 50%;
137
+ margin-left: -45px;
138
+ }
139
+
140
+ #wpchill-welcome .hero .video-thumbnail {
141
+ display: block;
142
+ margin: 0;
143
+ width: 100%;
144
+ }
145
+
146
+ #wpchill-welcome .hero .button-wrap {
147
+ margin-top: 20px;
148
+ }
149
+
150
+
151
+ /* features section */
152
+ #wpchill-welcome .features {
153
+ background-color: #fff;
154
+ border-top-left-radius: 10px;
155
+ border-top-right-radius: 10px;
156
+ position: relative;
157
+ padding-top: 20px;
158
+ }
159
+
160
+ #wpchill-welcome .features .feature-list {
161
+ margin-top: 40px;
162
+ }
163
+
164
+ #wpchill-welcome .features .feature-block {
165
+ margin-bottom: 30px;
166
+ }
167
+
168
+ @media screen and (min-width: 720px) {
169
+
170
+ #wpchill-welcome .block-row-2 .feature-block {
171
+ margin: 0 auto;
172
+ float: left;
173
+ width: 50%;
174
+ padding-bottom: 32px;
175
+ overflow: auto;
176
+ }
177
+
178
+ #wpchill-welcome .block-row-3 .feature-block {
179
+ margin: 0 auto;
180
+ float: left;
181
+ width: 33%;
182
+ padding-bottom: 32px;
183
+ overflow: auto;
184
+ }
185
+
186
+ #wpchill-welcome .block-row-2 .feature-block:nth-child(odd) {
187
+ padding-right: 22px;
188
+ clear: both;
189
+ }
190
+
191
+ #wpchill-welcome .block-row-3 .feature-block:not(:nth-child(3n+3)) {
192
+ padding-right: 22px;
193
+ }
194
+
195
+ #wpchill-welcome .block-row-3 .feature-block:nth-child(3n+1) {
196
+ clear: both;
197
+ }
198
+
199
+ #wpchill-welcome .features .feature-block.last {
200
+ padding-left: 22px;
201
+ }
202
+ .block-row-1 > * {
203
+ width: 100%;
204
+ }
205
+ .block-row{
206
+ display:flex;
207
+ flex-wrap:wrap;
208
+ align-items:flex-start;
209
+ flex-direction: row;
210
+ justify-content: flex-start;
211
+ }
212
+
213
+ .block-row-2 > * {
214
+ width: 50%;
215
+ }
216
+
217
+ .block-row-3 > * {
218
+ width: 33%;
219
+ }
220
+
221
+ .block-row-4 > * {
222
+ width: 25%;
223
+ }
224
+ }
225
+
226
+ #wpchill-welcome .features .feature-block img {
227
+ float: left;
228
+ max-width: 44px;
229
+ max-height: 44px;
230
+ }
231
+
232
+ #wpchill-welcome .features .feature-block h5 {
233
+ margin-left: 70px;
234
+ }
235
+
236
+ #wpchill-welcome .features .feature-block p {
237
+ margin-left: 70px;
238
+ }
239
+
240
+ #wpchill-welcome .features .pro-label {
241
+ display: inline-block;
242
+ line-height: 1;
243
+ color: #fff;
244
+ padding: 3px 6px;
245
+ font-size: 0.75rem;
246
+ border-radius: 20px;
247
+ vertical-align: text-top;
248
+ margin-left: 20px;
249
+ }
250
+
251
+ #wpchill-welcome .features .feature-list a {
252
+ color: #5333ED;
253
+ }
254
+
255
+ /* upgrade section */
256
+ #wpchill-welcome .upgrade {
257
+ background-color: white;
258
+ text-align: center;
259
+ }
260
+
261
+ #wpchill-welcome .upgrade h1{
262
+ color: #fff;
263
+ }
264
+
265
+ @media screen and (min-width: 720px) {
266
+
267
+ #wpchill-welcome .upgrade .left{
268
+ float: left;
269
+ width: 50%;
270
+ padding-left: 20%;
271
+ margin-bottom: 30px;
272
+ text-align: left;
273
+ }
274
+
275
+ #wpchill-welcome .upgrade .right{
276
+ float: left;
277
+ width: 50%;
278
+ padding-right: 20%;
279
+ margin-bottom: 30px;
280
+ text-align: left;
281
+ }
282
+ #wpchill-welcome .button-wrap-single{
283
+ width: 50%;
284
+ margin: 0 auto;
285
+ }
286
+ }
287
+
288
+ /* testimonials section */
289
+ #wpchill-welcome .testimonials {
290
+ background-color: #fafafa;
291
+
292
+ position: relative;
293
+ box-shadow: -3px 2px 70px 0px rgba(128, 144, 174, 0.1);
294
+ }
295
+
296
+ #wpchill-welcome .testimonials .testimonial-block {
297
+ padding: 0 16px 32px;
298
+ overflow: auto;
299
+ margin-top: 40px;
300
+ text-align: center;
301
+ }
302
+
303
+ @media screen and (min-width: 720px) {
304
+
305
+ #wpchill-welcome .testimonials .testimonial-block {
306
+ float: left;
307
+ width: 50%;
308
+ }
309
+
310
+ }
311
+
312
+ #wpchill-welcome .testimonials .testimonial-block p {
313
+ font-size: 14px;
314
+ font-weight: 400;
315
+ line-height: 1.6;
316
+ }
317
+
318
+ #wpchill-welcome .testimonials .testimonial-block img {
319
+ max-width: 60px;
320
+ max-height: 60px;
321
+ border-radius: 50%;
322
+ filter: grayscale(100%);
323
+ box-shadow: 0 0 12px rgba(0,0,0,0.15);
324
+ }
325
+
326
+ /* testimonials footer */
327
+ #wpchill-welcome .footer {
328
+ background-color: #fff;
329
+ border-bottom-left-radius: 10px;
330
+ border-bottom-right-radius: 10px;
331
+ margin-bottom: 30px;
332
+ position: relative;
333
+ box-shadow: -3px 2px 70px 0px rgba(128, 144, 174, 0.1);
334
+ }
335
+
336
+ #wpchill-welcome .container {
337
+ position: relative;
338
+ width: 100%;
339
+ height: 0;
340
+ padding-bottom: 56.25%;
341
+ }
342
+
343
+ #wpchill-welcome .video {
344
+ position: absolute;
345
+ top: 0;
346
+ left: 0;
347
+ width: 100%;
348
+ height: 100%;
349
+ }
350
+
351
+ #wpchill-welcome .stars_wrapper svg {
352
+ height: 20px;
353
+ }
354
+
355
+ #wpchill-welcome .wpchill_empty_space{
356
+ display:block;
357
+ clear:both;
358
+ }
359
+
360
+ .wpchill_horizontal_delimiter {
361
+ background-color: #f0f0f1;
362
+ height:20px;
363
+ width:100%;
364
+ margin:0 auto;
365
+ }
includes/submodules/banner/assets/img/star.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="-274 399.8 53 43.1" style="enable-background:new -274 399.8 53 43.1;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#5333ED;}
7
+ </style>
8
+ <g>
9
+ <path class="st0" d="M-234.8,415h-11.5l-3.6-11c-1.4-4.3-3.7-4.3-5.1,0l-3.6,11h-11.5c-4.5,0-5.3,2.2-1.6,4.8l9.3,6.8l-3.6,11
10
+ c-1.4,4.3,0.4,5.7,4.1,3l9.3-6.8l9.3,6.8c3.7,2.7,5.5,1.3,4.1-3l-3.6-11l9.3-6.8C-229.6,417.1-230.3,415-234.8,415z"/>
11
+ </g>
12
+ </svg>
includes/submodules/banner/class-wpchill-welcome.php ADDED
@@ -0,0 +1,260 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! class_exists( 'WPChill_Welcome' ) ) {
4
+
5
+ class WPChill_Welcome {
6
+
7
+ /**
8
+ * Contains the instance of the Class
9
+ *
10
+ * @since 1.0.0
11
+ * @param WPChill_Welcome $instance
12
+ */
13
+ private static $instance = null;
14
+
15
+ /**
16
+ * @since 1.0.0
17
+ * @param string $textdomain - wpchill textdomain
18
+ */
19
+ public $textdomain = 'wpchill';
20
+
21
+ private function __construct() {
22
+ add_action( 'admin_footer', array( $this, 'welcome_style' ) );
23
+ }
24
+
25
+ /**
26
+ * @since 1.0.0
27
+ * Singleton
28
+ */
29
+ public static function get_instance() {
30
+
31
+ if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WPChill_Welcome ) ) {
32
+ self::$instance = new WPChill_Welcome();
33
+ }
34
+
35
+ return self::$instance;
36
+ }
37
+
38
+ /**
39
+ * @since 1.0.0
40
+ * Enqueue admin Wellcome style
41
+ */
42
+ public function welcome_style() {
43
+ wp_register_style( 'wpchill-welcome-style', plugins_url( '/assets/css/wpchill-welcome.css', __FILE__ ), null, '1.0.0' );
44
+ wp_print_styles( array( 'wpchill-welcome-style' ) );
45
+ }
46
+
47
+ /**
48
+ * @since 1.0.0
49
+ * Renders buttons
50
+ *
51
+ * @param string $text
52
+ *
53
+ * @param string $url
54
+ *
55
+ * @param bool $fill
56
+ *
57
+ * @param string $color
58
+ */
59
+ public function display_button( $text, $link, $fill = true, $color = '#5D3CE4' ) {
60
+ $style = 'style="background-color:' . sanitize_hex_color( $color ) . ';border-color:' . sanitize_hex_color( $color ) . ';color:#fff;"';
61
+ echo '<a href="' . esc_attr( $link ) . '" ' . ( $fill ? $style : '' ) . ' class="wpmtst-btn wpmtst-btn-block wpmtst-btn-lg">' . esc_html( $text ) . '</a>';
62
+ }
63
+
64
+ /**
65
+ * @since 1.0.0
66
+ * Renders extension html
67
+ *
68
+ * @param string $title
69
+ *
70
+ * @param string $description
71
+ *
72
+ * @param string $icon (icon URL)
73
+ *
74
+ * @param bool $pro
75
+ */
76
+ public function display_extension( $title, $description = '', $icon = '', $pro = false, $pro_color = '#5333ED' ) {
77
+
78
+ echo '<div class="feature-block">';
79
+ if ( '' != $icon ) {
80
+ echo '<img src="' . esc_attr( $icon ) . '">';
81
+ }
82
+ echo '<h5>' . esc_html( $title ) . ( ( $pro ) ? '<div style="background-color:' . esc_attr( $pro_color ) . '" class="pro-label">PRO</div>' : '' ) . '</h5>';
83
+ echo '<p>' . esc_html( $description ) . '</p>';
84
+ echo '</div>';
85
+ }
86
+
87
+ /**
88
+ * @since 1.0.0
89
+ * Displays h1 heading
90
+ *
91
+ * @param string $text
92
+ *
93
+ * @param string $position
94
+ */
95
+ public function display_heading( $text, $position = 'center' ) {
96
+ echo '<h1 style="text-align: ' . esc_attr( $position ) . ';" >' . esc_html( $text ) . '</h1>';
97
+ }
98
+
99
+ /**
100
+ * @since 1.0.0
101
+ * Displays h6 subheading
102
+ *
103
+ * @param string $text
104
+ *
105
+ * @param string $position
106
+ */
107
+ public function display_subheading( $text, $position = 'center' ) {
108
+ echo '<h6 style="text-align: ' . esc_attr( $position ) . '" >' . esc_html( $text ) . '</h6>';
109
+ }
110
+
111
+
112
+ /**
113
+ * @since 1.0.0
114
+ * Renders testimonial block
115
+ *
116
+ * @param string $text
117
+ *
118
+ * @param string $icon
119
+ *
120
+ * @param string $name
121
+ *
122
+ * @param string $job (reviewer's job or company)
123
+ */
124
+ public function display_testimonial( $text, $icon = '', $name = '', $job = '', $star_color = '' ) {
125
+
126
+ echo '<div class="testimonial-block">';
127
+ if ( '' != $icon ) {
128
+ echo '<img src=" ' . esc_url( $icon ) . ' "/>';
129
+ }
130
+ echo '<p>' . esc_html( $text ) . '</p>';
131
+
132
+ $this->display_stars( $star_color );
133
+
134
+ if ( '' !== $name || '' !== $job ) {
135
+ echo '<p>';
136
+
137
+ if ( '' !== $name ) {
138
+ echo '<strong>' . esc_html( $name ) . '</strong><br/>';
139
+ }
140
+ if ( '' !== $job ) {
141
+ echo esc_html( $job );
142
+ }
143
+ echo '</p>';
144
+ }
145
+
146
+ echo '</div>';
147
+ }
148
+
149
+ /**
150
+ * @since 1.0.0
151
+ * Renders a UL list
152
+ *
153
+ * @param array $items - array of list items
154
+ */
155
+ public function display_listing( $items ) {
156
+ echo '<ul>';
157
+
158
+ foreach ( $items as $item ) {
159
+ echo '<li>' . esc_html( $item ) . '</li>';
160
+ }
161
+
162
+ echo '</ul>';
163
+ }
164
+
165
+
166
+ /**
167
+ * @since 1.0.0
168
+ * Renders a UL list
169
+ *
170
+ * @param string $url - youtube.com url
171
+ */
172
+ public function display_video( $url ) {
173
+ parse_str( wp_parse_url( esc_url( $url ), PHP_URL_QUERY ), $video_vars );
174
+ echo '<div class="container"><iframe src="https://www.youtube.com/embed/' . esc_attr( $video_vars['v'] ) . '" frameborder="0" allowfullscreen class="video"></iframe></div>';
175
+ }
176
+
177
+ /**
178
+ * @since 1.0.0
179
+ * Renders rating stars block
180
+ *
181
+ * @param string $color - code of the star color fill
182
+ */
183
+ public function display_stars( $color ) {
184
+ $color = ( '' === $color ) ? '#FFD700' : sanitize_hex_color( $color );
185
+ $id = wp_rand( 0, 9999999 );
186
+ $star = '<svg version="1.1" class="svg-' . absint( $id ) . '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-274 399.8 53 43.1" style="enable-background:new -274 399.8 53 43.1;" xml:space="preserve">
187
+ <g>
188
+ <path class="st0" d="M-234.8,415h-11.5l-3.6-11c-1.4-4.3-3.7-4.3-5.1,0l-3.6,11h-11.5c-4.5,0-5.3,2.2-1.6,4.8l9.3,6.8l-3.6,11
189
+ c-1.4,4.3,0.4,5.7,4.1,3l9.3-6.8l9.3,6.8c3.7,2.7,5.5,1.3,4.1-3l-3.6-11l9.3-6.8C-229.6,417.1-230.3,415-234.8,415z"/>
190
+ </g>
191
+ </svg>';
192
+
193
+ $svg_args = array(
194
+ 'svg' => array(
195
+ 'class' => true,
196
+ 'aria-hidden' => true,
197
+ 'aria-labelledby' => true,
198
+ 'role' => true,
199
+ 'xmlns' => true,
200
+ 'width' => true,
201
+ 'height' => true,
202
+ 'viewbox' => true, // <= Must be lower case!
203
+ 'id' => true,
204
+ ),
205
+ 'g' => array( 'fill' => true ),
206
+ 'title' => array( 'title' => true ),
207
+ 'path' => array(
208
+ 'd' => true,
209
+ 'fill' => true,
210
+ ),
211
+ 'style' => array( 'type' => true ),
212
+ );
213
+
214
+ echo '<style>';
215
+ echo '.svg-' . absint( $id ) . '{ fill:' . sanitize_hex_color( $color ) . ';}';
216
+ echo '</style>';
217
+ echo '<div class="stars_wrapper">' . wp_kses( $star . $star . $star . $star . $star, $svg_args ) . '</div>';
218
+ }
219
+
220
+ /**
221
+ * @since 1.0.0
222
+ * Columns wrapper start
223
+ *
224
+ * @param int $cols - # of columns the contained objects should be displayed as. (1/2/3)
225
+ */
226
+ public function layout_start( $cols = 2, $class = '' ) {
227
+ echo '<div class="' . esc_attr( $class ) . ' block-row block-row-' . absint( $cols ) . '">';
228
+ }
229
+
230
+ /**
231
+ * @since 1.0.0
232
+ * Columns wrapper end
233
+ */
234
+ public function layout_end() {
235
+ echo '</div>';
236
+ }
237
+
238
+ /**
239
+ * @since 1.0.0
240
+ * Renders empty space block
241
+ *
242
+ * @param int $height - height(px) of space
243
+ */
244
+ public function display_empty_space( $height = 25 ) {
245
+
246
+ echo '<div class="wpchill_empty_space" style="height:' . esc_attr( $height ) . 'px;"></div>';
247
+ }
248
+
249
+ /**
250
+ * Horizontal delimiter
251
+ *
252
+ * @return void
253
+ * @since 1.0.0
254
+ */
255
+ public function horizontal_delimiter() {
256
+ echo '<hr class="wpchill_horizontal_delimiter">';
257
+ }
258
+
259
+ }
260
+ }
includes/submodules/banner/readme.txt ADDED
@@ -0,0 +1 @@
 
1
+ Readme
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.9
6
- Stable tag: 4.5.8
7
  License: GPLv3
8
  Text Domain: -
9
  Requires PHP: 5.6
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.9
6
+ Stable tag: 4.5.9
7
  License: GPLv3
8
  Text Domain: -
9
  Requires PHP: 5.6
src/Admin/Admin.php CHANGED
@@ -230,6 +230,10 @@ class DLM_Admin {
230
  $enqueue = true;
231
  }
232
 
 
 
 
 
233
  if ( ! $enqueue ) {
234
  return;
235
  }
230
  $enqueue = true;
231
  }
232
 
233
+ if ( 'dlm_product' === get_current_screen()->id ) {
234
+ $enqueue = true;
235
+ }
236
+
237
  if ( ! $enqueue ) {
238
  return;
239
  }
src/Admin/Settings/Page.php CHANGED
@@ -60,12 +60,17 @@ class DLM_Settings_Page {
60
  }
61
  break;
62
  case 'dlm_regenerate_protection':
63
-
64
  if ( $this->regenerate_protection() ) {
65
  wp_redirect( add_query_arg( array( 'dlm_action_done' => $action ), admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-settings&tab=advanced&section=misc' ) ) );
66
  exit;
67
  }
68
  break;
 
 
 
 
 
 
69
  }
70
  }
71
 
@@ -106,6 +111,9 @@ class DLM_Settings_Page {
106
  case 'dlm_regenerate_protection':
107
  echo "<p>" . esc_html__( '.htaccess file successfully regenerated!', 'download-monitor' ) . "</p>";
108
  break;
 
 
 
109
  }
110
  ?>
111
  </div>
@@ -290,6 +298,8 @@ class DLM_Settings_Page {
290
  add_filter( 'dlm_page_header', array( $this, 'page_header_locations' ) );
291
 
292
  add_filter( 'dlm_settings', array( $this, 'access_files_checker_field' ) );
 
 
293
  }
294
 
295
  /**
@@ -530,4 +540,91 @@ Deny from all
530
  }
531
  }
532
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
533
  }
 
 
 
60
  }
61
  break;
62
  case 'dlm_regenerate_protection':
 
63
  if ( $this->regenerate_protection() ) {
64
  wp_redirect( add_query_arg( array( 'dlm_action_done' => $action ), admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-settings&tab=advanced&section=misc' ) ) );
65
  exit;
66
  }
67
  break;
68
+ case 'dlm_regenerate_robots':
69
+ if ( $this->regenerate_robots() ) {
70
+ wp_redirect( add_query_arg( array( 'dlm_action_done' => $action ), admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-settings&tab=advanced&section=misc' ) ) );
71
+ exit;
72
+ }
73
+ break;
74
  }
75
  }
76
 
111
  case 'dlm_regenerate_protection':
112
  echo "<p>" . esc_html__( '.htaccess file successfully regenerated!', 'download-monitor' ) . "</p>";
113
  break;
114
+ case 'dlm_regenerate_robots':
115
+ echo "<p>" . esc_html__( 'Robots.txt file successfully regenerated!', 'download-monitor' ) . "</p>";
116
+ break;
117
  }
118
  ?>
119
  </div>
298
  add_filter( 'dlm_page_header', array( $this, 'page_header_locations' ) );
299
 
300
  add_filter( 'dlm_settings', array( $this, 'access_files_checker_field' ) );
301
+
302
+ add_filter( 'dlm_settings', array( $this, 'robots_files_checker_field' ) );
303
  }
304
 
305
  /**
540
  }
541
  }
542
 
543
+ /**
544
+ * Add setting to check if the robots.txt file is there
545
+ *
546
+ * @param Array $settings
547
+ * @return array
548
+ *
549
+ * @since 4.5.9
550
+ */
551
+ public function robots_files_checker_field( $settings ) {
552
+
553
+ $robots_file = "{$_SERVER['DOCUMENT_ROOT']}/robots.txt";
554
+ $page = wp_remote_get( get_home_url() . '/robots.txt');
555
+ $has_virtual_robots = false !== strpos( $page['headers']['content-type'], 'text/plain' );
556
+
557
+ if ( ! file_exists( $robots_file ) ) {
558
+ $icon = 'dashicons-dismiss';
559
+ $icon_color = '#f00';
560
+ $icon_text = __( 'Robots.txt is missing.', 'download-monitor' );
561
+
562
+ if ( $has_virtual_robots ) {
563
+ $icon_text = __( 'Robots.txt file is missing but site has virtual Robots.txt file. If you regenerate this you will loose the restrictions set in the virtual one. Please either update the virtual with the corresponding rules for dlm_uploads or regenerate and update the newly created one with the contents from the virtual file.', 'download-monitor' );
564
+ }
565
+ } else {
566
+
567
+ $content = file_get_contents( $robots_file );
568
+ if ( stristr( $content, 'dlm_uploads' ) ) {
569
+ $icon = 'dashicons-yes-alt';
570
+ $icon_color = '#00A32A';
571
+ $icon_text = __( 'You are protected by robots.txt.', 'download-monitor' );
572
+ } else {
573
+ $icon = 'dashicons-dismiss';
574
+ $icon_color = '#f00';
575
+ $icon_text = __( 'Robots.txt file exists but dlm_uploads folder is not protected.', 'download-monitor' );
576
+ }
577
+ }
578
+
579
+ $settings['advanced']['sections']['misc']['fields'][] = array(
580
+ 'name' => 'dlm_regenerate_robots',
581
+ 'label' => __( 'Regenerate crawler protection for uploads folder', 'download-monitor' ),
582
+ 'desc' => __( 'Regenerates the robots.txt file.', 'download-monitor' ),
583
+ 'link' => admin_url( 'edit.php?post_type=dlm_download&page=download-monitor-settings' ) . '&tab=advanced&section=misc',
584
+ 'icon' => $icon,
585
+ 'icon-color' => $icon_color,
586
+ 'icon-text' => $icon_text,
587
+ 'disabled' => isset( $disabled ) ? 'true' : 'false',
588
+ 'type' => 'htaccess_status',
589
+ );
590
+
591
+ return $settings;
592
+ }
593
+
594
+ /**
595
+ * Function used to regenerate the robots.txt for the dlm_uploads folder
596
+ *
597
+ * @return void
598
+ *
599
+ * @since 4.5.9
600
+ */
601
+ private function regenerate_robots(){
602
+
603
+ $robots_file = "{$_SERVER['DOCUMENT_ROOT']}/robots.txt";
604
+ if( ! file_exists( $robots_file ) ) {
605
+ $txt = 'User-agent: *' . "\n" . 'Disallow: /dlm_uploads/';
606
+ $dlm_robots = fopen( $robots_file, "w" );
607
+ fwrite( $dlm_robots, $txt );
608
+
609
+ return true;
610
+
611
+ } else {
612
+
613
+ $content = file_get_contents( $robots_file );
614
+ if ( ! stristr( $content, 'dlm_uploads' ) ) {
615
+
616
+ $dlm_robots = fopen( $robots_file, "w" );
617
+ $txt = 'User-agent: *' . "\n" . 'Disallow: /dlm_uploads/' . "\n\n" . $content;
618
+
619
+ fwrite( $dlm_robots, $txt );
620
+
621
+ return true;
622
+ }
623
+ }
624
+
625
+ return false;
626
+ }
627
  }
628
+
629
+
630
+
src/Admin/Settings/Settings.php CHANGED
@@ -281,6 +281,14 @@ class DLM_Admin_Settings {
281
  'desc' => sprintf( __( 'If enabled, the counter for each download will only increment and create a log entry once per IP address. Note that this option only works if %1$s is set to %2$s.', 'download-monitor' ), '<strong>' . __( 'IP Address Logging', 'download-monitor' ) . '</strong>', '<strong>' . __( 'Store full IP address', 'download-monitor' ) . '</strong>' ),
282
  'type' => 'checkbox',
283
  ),
 
 
 
 
 
 
 
 
284
  ),
285
  ),
286
  'misc' => array(
281
  'desc' => sprintf( __( 'If enabled, the counter for each download will only increment and create a log entry once per IP address. Note that this option only works if %1$s is set to %2$s.', 'download-monitor' ), '<strong>' . __( 'IP Address Logging', 'download-monitor' ) . '</strong>', '<strong>' . __( 'Store full IP address', 'download-monitor' ) . '</strong>' ),
282
  'type' => 'checkbox',
283
  ),
284
+ array(
285
+ 'name' => 'dlm_log_admin_download_count',
286
+ 'std' => '1',
287
+ 'label' => __( 'Admin count', 'download-monitor' ),
288
+ 'cb_label' => __( 'Disable', 'download-monitor' ),
289
+ 'desc' => __( 'If disabled, the counter for each download will not increment when an administrator downloads a file.', 'download-monitor' ),
290
+ 'type' => 'checkbox',
291
+ ),
292
  ),
293
  ),
294
  'misc' => array(
src/Admin/WritePanels.php CHANGED
@@ -373,7 +373,7 @@ class DLM_Admin_Writepanels {
373
  $downloadable_file_id = $_POST['downloadable_file_id'];
374
  $downloadable_file_menu_order = $_POST['downloadable_file_menu_order'];
375
  $downloadable_file_version = $_POST['downloadable_file_version'];
376
- $downloadable_file_urls = $_POST['downloadable_file_urls'];
377
  $downloadable_file_date = $_POST['downloadable_file_date'];
378
  $downloadable_file_date_hour = $_POST['downloadable_file_date_hour'];
379
  $downloadable_file_date_minute = $_POST['downloadable_file_date_minute'];
@@ -397,6 +397,13 @@ class DLM_Admin_Writepanels {
397
  $file_date = sanitize_text_field( $downloadable_file_date[ $i ] );
398
  $file_download_count = sanitize_text_field( $downloadable_file_download_count[ $i ] );
399
  $files = array_filter( array_map( 'trim', explode( "\n", $downloadable_file_urls[ $i ] ) ) );
 
 
 
 
 
 
 
400
 
401
  // only continue if there's a file_id
402
  if ( ! $file_id ) {
@@ -420,7 +427,7 @@ class DLM_Admin_Writepanels {
420
  $version->set_menu_order( $file_menu_order );
421
  $version->set_version( $file_version );
422
  $version->set_date( $file_date_obj );
423
- $version->set_mirrors( $files );
424
 
425
  // only set download count if is posted
426
  if ( '' !== $file_download_count ) {
@@ -498,4 +505,5 @@ class DLM_Admin_Writepanels {
498
  wp_send_json_success( array( 'file_url' => wp_get_attachment_url( $attach_id ) ) );
499
 
500
  }
 
501
  }
373
  $downloadable_file_id = $_POST['downloadable_file_id'];
374
  $downloadable_file_menu_order = $_POST['downloadable_file_menu_order'];
375
  $downloadable_file_version = $_POST['downloadable_file_version'];
376
+ $downloadable_file_urls = wp_unslash( $_POST['downloadable_file_urls'] );
377
  $downloadable_file_date = $_POST['downloadable_file_date'];
378
  $downloadable_file_date_hour = $_POST['downloadable_file_date_hour'];
379
  $downloadable_file_date_minute = $_POST['downloadable_file_date_minute'];
397
  $file_date = sanitize_text_field( $downloadable_file_date[ $i ] );
398
  $file_download_count = sanitize_text_field( $downloadable_file_download_count[ $i ] );
399
  $files = array_filter( array_map( 'trim', explode( "\n", $downloadable_file_urls[ $i ] ) ) );
400
+ $secured_files = array();
401
+ $file_manager = new DLM_File_Manager();
402
+
403
+ foreach ( $files as $file ) {
404
+ list( $file_path ) = $file_manager->get_secure_path( $file, true );
405
+ $secured_files[] = addslashes( $file_path );
406
+ }
407
 
408
  // only continue if there's a file_id
409
  if ( ! $file_id ) {
427
  $version->set_menu_order( $file_menu_order );
428
  $version->set_version( $file_version );
429
  $version->set_date( $file_date_obj );
430
+ $version->set_mirrors( $secured_files );
431
 
432
  // only set download count if is posted
433
  if ( '' !== $file_download_count ) {
505
  wp_send_json_success( array( 'file_url' => wp_get_attachment_url( $attach_id ) ) );
506
 
507
  }
508
+
509
  }
src/DLM.php CHANGED
@@ -109,6 +109,9 @@ class WP_DLM {
109
  $upgrade_manager = new DLM_Upgrade_Manager();
110
  $upgrade_manager->setup();
111
 
 
 
 
112
  // Legacy Upgrader
113
  $lu_page = new DLM_LU_Page();
114
  $lu_page->setup();
109
  $upgrade_manager = new DLM_Upgrade_Manager();
110
  $upgrade_manager->setup();
111
 
112
+ // DLM Welcome page
113
+ DLM_Welcome_Page::get_instance();
114
+
115
  // Legacy Upgrader
116
  $lu_page = new DLM_LU_Page();
117
  $lu_page->setup();
src/DownloadHandler.php CHANGED
@@ -409,6 +409,17 @@ class DLM_Download_Handler {
409
  wp_die( esc_html__( 'No file paths defined.', 'download-monitor' ) . ' <a href="' . esc_url( home_url() ) . '">' . esc_html__( 'Go to homepage &rarr;', 'download-monitor' ) . '</a>', esc_html__( 'Download Error', 'download-monitor' ) );
410
  }
411
 
 
 
 
 
 
 
 
 
 
 
 
412
  // Check Access
413
  if ( ! apply_filters( 'dlm_can_download', true, $download, $version ) ) {
414
 
@@ -440,7 +451,7 @@ class DLM_Download_Handler {
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
  }
@@ -494,18 +505,15 @@ class DLM_Download_Handler {
494
 
495
  // Ensure we have a valid URL, not a file path
496
  $scheme = parse_url( get_option( 'home' ), PHP_URL_SCHEME );
497
- $file_path = str_replace( ABSPATH, site_url( '/', $scheme ), $file_path );
498
-
499
- header( 'Location: ' . $file_path );
 
500
  exit;
501
  }
502
 
503
- // Parse file path
504
- list( $file_path, $remote_file ) = download_monitor()->service( 'file_manager' )->parse_file_path( $file_path );
505
- $file_path = apply_filters( 'dlm_file_path', $file_path, $remote_file, $download );
506
-
507
  $this->download_headers( $file_path, $download, $version );
508
-
509
  do_action( 'dlm_start_download_process', $download, $version, $file_path, $remote_file );
510
 
511
  if ( get_option( 'dlm_xsendfile_enabled' ) ) {
@@ -531,7 +539,7 @@ class DLM_Download_Handler {
531
  // phpcs:ignore
532
  $file_path = str_ireplace( $_SERVER['DOCUMENT_ROOT'], '', $file_path );
533
  }
534
-
535
  header( "X-Accel-Redirect: /$file_path" );
536
  exit;
537
  }
@@ -659,8 +667,13 @@ class DLM_Download_Handler {
659
  $headers['Content-Disposition'] = "attachment; filename=\"{$file_name}\";";
660
  $headers['Content-Transfer-Encoding'] = 'binary';
661
 
662
- if ( $version->get_filesize() ) {
663
- $headers['Content-Length'] = $version->get_filesize();
 
 
 
 
 
664
  $headers['Accept-Ranges'] = 'bytes';
665
  }
666
 
409
  wp_die( esc_html__( 'No file paths defined.', 'download-monitor' ) . ' <a href="' . esc_url( home_url() ) . '">' . esc_html__( 'Go to homepage &rarr;', 'download-monitor' ) . '</a>', esc_html__( 'Download Error', 'download-monitor' ) );
410
  }
411
 
412
+ $redirect_path = $file_path;
413
+ // Parse file path
414
+ list( $file_path, $remote_file ) = download_monitor()->service( 'file_manager' )->get_secure_path( $file_path );
415
+ $file_path = apply_filters( 'dlm_file_path', $file_path, $remote_file, $download );
416
+
417
+ // The return of the get_secure_path function is an array that consists of the path ( string or false ) and the remote file ( bool ).
418
+ // If the path is false it means that the file is restricted, so don't download it or redirect to it.
419
+ if ( ! $file_path ) {
420
+ wp_die( esc_html__( 'Access denied to this file', 'download-monitor' ) . ' <a href="' . esc_url( home_url() ) . '">' . esc_html__( 'Go to homepage &rarr;', 'download-monitor' ) . '</a>', esc_html__( 'Download Error', 'download-monitor' ) );
421
+ }
422
+
423
  // Check Access
424
  if ( ! apply_filters( 'dlm_can_download', true, $download, $version ) ) {
425
 
451
  }else{
452
  $no_access_permalink = untrailingslashit( $no_access_permalink ) . '/download-id/' . $download->get_id() . '/';
453
  }
454
+
455
  if ( ! $download->get_version()->is_latest() ) {
456
  $no_access_permalink = add_query_arg( 'version', $download->get_version()->get_version(), $no_access_permalink );
457
  }
505
 
506
  // Ensure we have a valid URL, not a file path
507
  $scheme = parse_url( get_option( 'home' ), PHP_URL_SCHEME );
508
+ $redirect_path = str_replace( ABSPATH, site_url( '/', $scheme ), $redirect_path );
509
+
510
+ header("X-Robots-Tag: noindex, nofollow", true);
511
+ header( 'Location: ' . $redirect_path );
512
  exit;
513
  }
514
 
 
 
 
 
515
  $this->download_headers( $file_path, $download, $version );
516
+
517
  do_action( 'dlm_start_download_process', $download, $version, $file_path, $remote_file );
518
 
519
  if ( get_option( 'dlm_xsendfile_enabled' ) ) {
539
  // phpcs:ignore
540
  $file_path = str_ireplace( $_SERVER['DOCUMENT_ROOT'], '', $file_path );
541
  }
542
+
543
  header( "X-Accel-Redirect: /$file_path" );
544
  exit;
545
  }
667
  $headers['Content-Disposition'] = "attachment; filename=\"{$file_name}\";";
668
  $headers['Content-Transfer-Encoding'] = 'binary';
669
 
670
+ $file_manager = new DLM_File_Manager();
671
+ $file_size = $file_manager->get_file_size( $file_path );
672
+
673
+ if ( $file_size ) {
674
+ // Replace the old way ( getting the filesize from the DB ) in case the user has replaced the file directly using cPanel,
675
+ // FTP or other File Manager, or sometimes using an optimization service it may cause unwanted results.
676
+ $headers['Content-Length'] = $file_size;
677
  $headers['Accept-Ranges'] = 'bytes';
678
  }
679
 
src/FileManager.php CHANGED
@@ -76,7 +76,6 @@ class DLM_File_Manager {
76
  $file_path = trim( str_replace( $wp_uploads_url, $wp_uploads_dir, $file_path ) );
77
  $file_path = realpath( $file_path );
78
 
79
-
80
  } elseif ( is_multisite() && ( ( strpos( $file_path, network_site_url( '/', 'http' ) ) !== false ) || ( strpos( $file_path, network_site_url( '/', 'https' ) ) !== false ) ) ) {
81
 
82
  /** This is a local file outside of wp-content so figure out the path */
@@ -239,4 +238,75 @@ class DLM_File_Manager {
239
  return download_monitor()->service( 'hasher' )->get_file_hashes( $file_path );
240
  }
241
 
242
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  $file_path = trim( str_replace( $wp_uploads_url, $wp_uploads_dir, $file_path ) );
77
  $file_path = realpath( $file_path );
78
 
 
79
  } elseif ( is_multisite() && ( ( strpos( $file_path, network_site_url( '/', 'http' ) ) !== false ) || ( strpos( $file_path, network_site_url( '/', 'https' ) ) !== false ) ) ) {
80
 
81
  /** This is a local file outside of wp-content so figure out the path */
238
  return download_monitor()->service( 'hasher' )->get_file_hashes( $file_path );
239
  }
240
 
241
+ /**
242
+ * Return the secured file path or url of the downloadable file. Should not let restricted files or out of root files to be downloaded.
243
+ *
244
+ * @param string $file The file path/url
245
+ * @param bool $relative Wheter or not to return a relative path. Default is false
246
+ *
247
+ * @return string The secured file path/url
248
+ * @since 4.5.9
249
+ */
250
+ public function get_secure_path( $file, $relative = false ) {
251
+
252
+ // ABSPATH needs to be defined
253
+ if ( ! defined( 'ABSPATH' ) ) {
254
+ die;
255
+ }
256
+
257
+ list( $file_path, $remote_file ) = $this->parse_file_path( $file );
258
+
259
+ // If the file is remote, return the file path. If the file is not located on local server, return the file path.
260
+ // This is available even if the file is one of the restricted files below. The plugin will let the user download the file,
261
+ // but the file will be empty, with a 404 error or an error message.
262
+ if ( $remote_file ) {
263
+ return array( $file_path, $remote_file );
264
+ }
265
+
266
+ // The list of predefined restricted files.
267
+ $restricted_files = array(
268
+ 'wp-config.php',
269
+ '.htaccess',
270
+ 'php.ini',
271
+ );
272
+
273
+ // Specify the files that should be restricted from the download process.
274
+ $restricted_files = array_merge(
275
+ $restricted_files,
276
+ apply_filters(
277
+ 'dlm_file_urls_security_files',
278
+ array()
279
+ )
280
+ );
281
+
282
+ // Loop through the restricted files and return empty string if found.
283
+ foreach ( $restricted_files as $restricted_file ) {
284
+
285
+ if ( basename( $file_path ) === $restricted_file ) {
286
+ // If the file is restricted, return empty string.
287
+ $file_path = false;
288
+ return array( $file_path, $remote_file );
289
+ }
290
+ }
291
+
292
+ // If we get here it means the file is not restricted so we can get put the relative path. Use a untrailingslashit on ABSPATH because on some systems
293
+ // we have `\` and on others we have `/` for paths.
294
+ $abspath_sub = untrailingslashit( ABSPATH );
295
+
296
+ // If ABSPATH is not completly in the file path it means that the file is not in the root of the site, so return empty string.
297
+ if ( false === strpos( $file_path, $abspath_sub ) ) {
298
+ $file_path = false;
299
+ return array( $file_path, $remote_file );
300
+ }
301
+
302
+ if ( $relative ) {
303
+ // If we get here it means the file is not restricted so we can get put the relative path. Use a substract of ABSPATH because on some systems
304
+ // the ABSPATH ends on \ and on others it ends on /
305
+ $file_path = str_replace( $abspath_sub, '', $file_path );
306
+ }
307
+
308
+ return array( $file_path, $remote_file );
309
+
310
+ }
311
+
312
+ }
src/Installer.php CHANGED
@@ -42,6 +42,7 @@ class DLM_Installer {
42
  $no_access_page_endpoint = new DLM_Download_No_Access_Page_Endpoint();
43
  $no_access_page_endpoint->setup();
44
 
 
45
  // Set the current version
46
  update_option( DLM_Constants::OPTION_CURRENT_VERSION, DLM_VERSION );
47
 
@@ -50,6 +51,12 @@ class DLM_Installer {
50
 
51
  // flush rewrite rules
52
  flush_rewrite_rules();
 
 
 
 
 
 
53
  }
54
 
55
 
42
  $no_access_page_endpoint = new DLM_Download_No_Access_Page_Endpoint();
43
  $no_access_page_endpoint->setup();
44
 
45
+ $first_install = ! get_option( DLM_Constants::OPTION_CURRENT_VERSION ) ? true : false;
46
  // Set the current version
47
  update_option( DLM_Constants::OPTION_CURRENT_VERSION, DLM_VERSION );
48
 
51
 
52
  // flush rewrite rules
53
  flush_rewrite_rules();
54
+
55
+ // We need this class here also so that we can use it in the activation hook.
56
+ // DLM Welcome page
57
+ DLM_Welcome_Page::get_instance();
58
+
59
+ do_action( 'dlm_after_install_setup', $first_install );
60
  }
61
 
62
 
src/Logs/LoggingListTable.php CHANGED
@@ -109,8 +109,8 @@ class DLM_Logging_List_Table extends WP_List_Table {
109
  }
110
 
111
 
112
- $download_string = '<a href="' . admin_url( 'post.php?post=' . $download->get_id() . '&action=edit' ) . '">';
113
- $download_string .= '#' . $download->get_id() . ' &ndash; ' . $download->get_title();
114
  $download_string .= '</a>';
115
 
116
  if ( $log->get_version() ) {
109
  }
110
 
111
 
112
+ $download_string = '<a href="' . admin_url( 'post.php?post=' . absint( $download->get_id() ) . '&action=edit' ) . '">';
113
+ $download_string .= '#' . $download->get_id() . ' &ndash; ' . esc_html( $download->get_title() );
114
  $download_string .= '</a>';
115
 
116
  if ( $log->get_version() ) {
src/Polyfill/DateTimeImmutable/DateTimeImmutable.php CHANGED
@@ -14,9 +14,11 @@ if ( ! class_exists( "DateTimeImmutable" ) ) {
14
 
15
 
16
  class DateTimeImmutable implements DateTimeInterface {
17
- public static function __set_state() {
 
18
  }
19
 
 
20
  public static function createFromFormat( $format, $time, $object = null ) {
21
  $dt = DateTime::createFromFormat( $format, $time, $object );
22
  if ( $dt === false ) {
14
 
15
 
16
  class DateTimeImmutable implements DateTimeInterface {
17
+ public static function __set_state( array $array ) {
18
+ return new DateTimeImmutable( $array['date'] );
19
  }
20
 
21
+
22
  public static function createFromFormat( $format, $time, $object = null ) {
23
  $dt = DateTime::createFromFormat( $format, $time, $object );
24
  if ( $dt === false ) {
src/Shop/Admin/ProductTableColumns.php CHANGED
@@ -28,11 +28,12 @@ class ProductTableColumns {
28
  public function add_columns( $columns ) {
29
  $columns = array();
30
 
31
- $columns["cb"] = "<input type=\"checkbox\" />";
32
- $columns["thumb"] = '<span>' . __( "Image", 'download-monitor' ) . '</span>';
33
- $columns["title"] = __( "Title", 'download-monitor' );
34
- $columns["price"] = __( "Price", 'download-monitor' );
35
- $columns["date"] = __( "Date", 'download-monitor' );
 
36
 
37
  return $columns;
38
  }
@@ -63,6 +64,9 @@ class ProductTableColumns {
63
  case "price" :
64
  echo esc_html( dlm_format_money( $product->get_price() ) );
65
  break;
 
 
 
66
  }
67
  }
68
 
28
  public function add_columns( $columns ) {
29
  $columns = array();
30
 
31
+ $columns["cb"] = "<input type=\"checkbox\" />";
32
+ $columns["thumb"] = '<span>' . __( "Image", 'download-monitor' ) . '</span>';
33
+ $columns["title"] = __( "Title", 'download-monitor' );
34
+ $columns["shortcode"] = __( "Shortcode", 'download-monitor' );
35
+ $columns["price"] = __( "Price", 'download-monitor' );
36
+ $columns["date"] = __( "Date", 'download-monitor' );
37
 
38
  return $columns;
39
  }
64
  case "price" :
65
  echo esc_html( dlm_format_money( $product->get_price() ) );
66
  break;
67
+ case "shortcode" :
68
+ echo '<button class="wpchill-tooltip-button copy-dlm-shortcode button button-primary dashicons dashicons-shortcode" style="width:40px;"><div class="wpchill-tooltip-content"><span class="dlm-copy-text">' . esc_html__( 'Copy shortcode', 'download-monitor' ) . '</span><div class="dl-shortcode-copy"><code>[dlm_buy id="' . absint( $post_id ) . '"]</code><input type="text" value="[dlm_buy id=\'' . absint( $post_id ) . '\']" class="hidden"></div></div></button>';
69
+ break;
70
  }
71
  }
72
 
src/Shop/Admin/WritePanels.php CHANGED
@@ -21,10 +21,46 @@ class WritePanels {
21
  * Add the meta boxes
22
  */
23
  public function add_meta_box() {
24
- add_meta_box( 'download-monitor-product-info', __( 'Product Information', 'download-monitor' ), array(
25
- $this,
26
- 'display_product_information'
27
- ), PostType::KEY, 'normal', 'high' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  }
29
 
30
  /**
@@ -149,5 +185,39 @@ class WritePanels {
149
  );
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  }
21
  * Add the meta boxes
22
  */
23
  public function add_meta_box() {
24
+
25
+ // We remove the Publish metabox and add to our queue
26
+ remove_meta_box( 'submitdiv', 'dlm_download', 'side' );
27
+
28
+ $meta_boxes = apply_filters(
29
+ 'dlm_product_metaboxes',
30
+ array(
31
+ array(
32
+ 'id' => 'submitdiv',
33
+ 'title' => esc_html__( 'Publish' ),
34
+ 'callback' => 'post_submit_meta_box',
35
+ 'screen' => PostType::KEY,
36
+ 'context' => 'side',
37
+ 'priority' => 1,
38
+ ),
39
+ array(
40
+ 'id' => 'download-monitor-product-information',
41
+ 'title' => esc_html__( 'Product Information', 'download-monitor' ),
42
+ 'callback' => array( $this, 'download_product_information' ),
43
+ 'screen' => PostType::KEY,
44
+ 'context' => 'side',
45
+ 'priority' => 5,
46
+ ),
47
+ array(
48
+ 'id' => 'download-monitor-product-info',
49
+ 'title' => esc_html__( 'Product Information', 'download-monitor' ),
50
+ 'callback' => array( $this, 'display_product_information' ),
51
+ 'screen' => PostType::KEY,
52
+ 'context' => 'normal',
53
+ 'priority' => 20,
54
+ ),
55
+ )
56
+ );
57
+
58
+ uasort( $meta_boxes, array( 'DLM_Admin_Helper', 'sort_data_by_priority' ) );
59
+
60
+ foreach ( $meta_boxes as $metabox ) {
61
+ // Priority is left out as we prioritise based on our sorting function
62
+ add_meta_box( $metabox['id'], $metabox['title'], $metabox['callback'], $metabox['screen'], $metabox['context'], 'high' );
63
+ }
64
  }
65
 
66
  /**
185
  );
186
  }
187
 
188
+ /**
189
+ * download_product_information function.
190
+ *
191
+ * @access public
192
+ *
193
+ * @param WP_Post $post
194
+ *
195
+ * @return void
196
+ */
197
+ public function download_product_information( $post ) {
198
+
199
+ echo '<div class="dlm_information_panel">';
200
+
201
+ if ( $post->ID ) {
202
+ do_action( 'dlm_product_information_start', $post->ID, $post );
203
+ ?>
204
+ <div>
205
+ <p><?php echo esc_html__( 'ID', 'download-monitor' ); ?> </p>
206
+ <input type="text" id="dlm-info-id" value="<?php echo esc_attr( $post->ID ); ?>" readonly onfocus="this.select()"/>
207
+ <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>
208
+ </div>
209
+ <div>
210
+ <p><?php echo esc_html__( 'Shortcode', 'download-monitor' ); ?> </p>
211
+ <input type="text" id="dlm-info-id" value='[dlm_buy id="<?php echo esc_attr( $post->ID ); ?>"]' readonly onfocus="this.select()"/>
212
+ <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>
213
+ </div>
214
+ <?php
215
+ do_action( 'dlm_product_information_end', $post->ID, $post );
216
+ } else {
217
+ echo '<p>' . esc_html__( 'No information for new products.', 'download-monitor' ) . '</p>';
218
+ }
219
+
220
+ echo '</div>';
221
+ }
222
 
223
  }
src/Shop/Util/Assets.php CHANGED
@@ -54,6 +54,25 @@ class Assets {
54
  public function enqueue_admin_assets() {
55
  global $pagenow;
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  if (
58
  'edit.php' == $pagenow
59
  && isset( $_GET['post_type'] )
54
  public function enqueue_admin_assets() {
55
  global $pagenow;
56
 
57
+ if( 'edit.php' == $pagenow && isset( $_GET['post_type'] ) && PostType::KEY === $_GET['post_type'] ) {
58
+ wp_enqueue_script(
59
+ 'product_script',
60
+ plugins_url( '/assets/js/shop/product-script' . ( ( ! SCRIPT_DEBUG ) ? '.min' : '' ) . '.js', download_monitor()->get_plugin_file() ),
61
+ array( 'jquery' ),
62
+ DLM_VERSION
63
+ );
64
+
65
+ // Make JavaScript strings translatable
66
+ wp_localize_script(
67
+ 'product_script',
68
+ 'dlm_product_overview',
69
+ array(
70
+ 'copy_shortcode' => esc_html__( 'Copy shortcode', 'download-monitor' ),
71
+ 'shortcode_copied' => esc_html__( 'Shortcode copied', 'download-monitor' ),
72
+ )
73
+ );
74
+ }
75
+
76
  if (
77
  'edit.php' == $pagenow
78
  && isset( $_GET['post_type'] )
src/Version/Version.php CHANGED
@@ -353,6 +353,17 @@ class DLM_Download_Version {
353
  * @return void
354
  */
355
  public function increase_download_count() {
 
 
 
 
 
 
 
 
 
 
 
356
  // File download_count
357
  $this->download_count = absint( get_post_meta( $this->id, '_download_count', true ) ) + 1;
358
  update_post_meta( $this->id, '_download_count', $this->download_count );
@@ -360,6 +371,7 @@ class DLM_Download_Version {
360
  // Parent download download_count
361
  $parent_download_count = absint( get_post_meta( $this->download_id, '_download_count', true ) ) + 1;
362
  update_post_meta( $this->download_id, '_download_count', $parent_download_count );
 
363
  }
364
 
365
  /**
353
  * @return void
354
  */
355
  public function increase_download_count() {
356
+
357
+ // Let's check if the user wants skip count if admin
358
+ if ( get_option( 'dlm_log_admin_download_count', false ) ) {
359
+
360
+ // If user really is admin we return
361
+ $user = wp_get_current_user();
362
+ if ( in_array( 'administrator', $user->roles, true ) ) {
363
+ return;
364
+ }
365
+ }
366
+
367
  // File download_count
368
  $this->download_count = absint( get_post_meta( $this->id, '_download_count', true ) ) + 1;
369
  update_post_meta( $this->id, '_download_count', $this->download_count );
371
  // Parent download download_count
372
  $parent_download_count = absint( get_post_meta( $this->download_id, '_download_count', true ) ) + 1;
373
  update_post_meta( $this->download_id, '_download_count', $parent_download_count );
374
+
375
  }
376
 
377
  /**
vendor/composer/autoload_classmap.php CHANGED
@@ -96,6 +96,7 @@ return array(
96
  'DLM_Version_Manager' => $baseDir . '/src/Version/VersionManager.php',
97
  'DLM_Version_Repository' => $baseDir . '/src/Version/VersionRepository.php',
98
  'DLM_View_Manager' => $baseDir . '/src/Admin/ViewManager.php',
 
99
  'DLM_Widget_Downloads' => $baseDir . '/src/Widgets/Downloads.php',
100
  'DLM_Widget_Manager' => $baseDir . '/src/Widgets/Manager.php',
101
  'DLM_WordPress_Download_Repository' => $baseDir . '/src/Download/WordPressDownloadRepository.php',
@@ -256,5 +257,6 @@ return array(
256
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\PimpleTest' => $baseDir . '/src/Dependencies/Pimple/Tests/PimpleTest.php',
257
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ContainerTest' => $baseDir . '/src/Dependencies/Pimple/Tests/Psr11/ContainerTest.php',
258
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ServiceLocatorTest' => $baseDir . '/src/Dependencies/Pimple/Tests/Psr11/ServiceLocatorTest.php',
 
259
  'WP_DLM' => $baseDir . '/src/DLM.php',
260
  );
96
  'DLM_Version_Manager' => $baseDir . '/src/Version/VersionManager.php',
97
  'DLM_Version_Repository' => $baseDir . '/src/Version/VersionRepository.php',
98
  'DLM_View_Manager' => $baseDir . '/src/Admin/ViewManager.php',
99
+ 'DLM_Welcome_Page' => $baseDir . '/includes/admin/class-dlm-welcome.php',
100
  'DLM_Widget_Downloads' => $baseDir . '/src/Widgets/Downloads.php',
101
  'DLM_Widget_Manager' => $baseDir . '/src/Widgets/Manager.php',
102
  'DLM_WordPress_Download_Repository' => $baseDir . '/src/Download/WordPressDownloadRepository.php',
257
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\PimpleTest' => $baseDir . '/src/Dependencies/Pimple/Tests/PimpleTest.php',
258
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ContainerTest' => $baseDir . '/src/Dependencies/Pimple/Tests/Psr11/ContainerTest.php',
259
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ServiceLocatorTest' => $baseDir . '/src/Dependencies/Pimple/Tests/Psr11/ServiceLocatorTest.php',
260
+ 'WPChill_Welcome' => $baseDir . '/includes/submodules/banner/class-wpchill-welcome.php',
261
  'WP_DLM' => $baseDir . '/src/DLM.php',
262
  );
vendor/composer/autoload_static.php CHANGED
@@ -111,6 +111,7 @@ class ComposerStaticInit80ce4473100edd20fd6c17775a76ce9a
111
  'DLM_Version_Manager' => __DIR__ . '/../..' . '/src/Version/VersionManager.php',
112
  'DLM_Version_Repository' => __DIR__ . '/../..' . '/src/Version/VersionRepository.php',
113
  'DLM_View_Manager' => __DIR__ . '/../..' . '/src/Admin/ViewManager.php',
 
114
  'DLM_Widget_Downloads' => __DIR__ . '/../..' . '/src/Widgets/Downloads.php',
115
  'DLM_Widget_Manager' => __DIR__ . '/../..' . '/src/Widgets/Manager.php',
116
  'DLM_WordPress_Download_Repository' => __DIR__ . '/../..' . '/src/Download/WordPressDownloadRepository.php',
@@ -271,6 +272,7 @@ class ComposerStaticInit80ce4473100edd20fd6c17775a76ce9a
271
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\PimpleTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/PimpleTest.php',
272
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ContainerTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/Psr11/ContainerTest.php',
273
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ServiceLocatorTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/Psr11/ServiceLocatorTest.php',
 
274
  'WP_DLM' => __DIR__ . '/../..' . '/src/DLM.php',
275
  );
276
 
111
  'DLM_Version_Manager' => __DIR__ . '/../..' . '/src/Version/VersionManager.php',
112
  'DLM_Version_Repository' => __DIR__ . '/../..' . '/src/Version/VersionRepository.php',
113
  'DLM_View_Manager' => __DIR__ . '/../..' . '/src/Admin/ViewManager.php',
114
+ 'DLM_Welcome_Page' => __DIR__ . '/../..' . '/includes/admin/class-dlm-welcome.php',
115
  'DLM_Widget_Downloads' => __DIR__ . '/../..' . '/src/Widgets/Downloads.php',
116
  'DLM_Widget_Manager' => __DIR__ . '/../..' . '/src/Widgets/Manager.php',
117
  'DLM_WordPress_Download_Repository' => __DIR__ . '/../..' . '/src/Download/WordPressDownloadRepository.php',
272
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\PimpleTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/PimpleTest.php',
273
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ContainerTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/Psr11/ContainerTest.php',
274
  'WPChill\\DownloadMonitor\\Dependencies\\Pimple\\Tests\\Psr11\\ServiceLocatorTest' => __DIR__ . '/../..' . '/src/Dependencies/Pimple/Tests/Psr11/ServiceLocatorTest.php',
275
+ 'WPChill_Welcome' => __DIR__ . '/../..' . '/includes/submodules/banner/class-wpchill-welcome.php',
276
  'WP_DLM' => __DIR__ . '/../..' . '/src/DLM.php',
277
  );
278