Imagify Image Optimizer - Version 1.5

Version Description

  • NEW Features:
    • NextGen Gallery compatibility - Optimize all your images uploaded with NextGen Gallery
    • Asynchronous Optimization - No more latency when you upload new images, Imagify will optimize them in background!
  • Interface:
    • Bulk Optimization: Improvements for a better experience
Download this release

Release Info

Developer wp_media
Plugin Icon 128x128 Imagify Image Optimizer
Version 1.5
Comparing to
See all releases

Code changes from version 1.4.7 to 1.5

Files changed (69) hide show
  1. assets/css/admin.css +1348 -92
  2. assets/css/admin.min.css +1 -1
  3. assets/images/big-blue-check.png +0 -0
  4. assets/images/icon-arrow-choice.png +0 -0
  5. assets/images/icon-arrow-choice.svg +12 -0
  6. assets/images/icon-lock.png +0 -0
  7. assets/images/icon-lock.svg +18 -0
  8. assets/images/icon-pack.png +0 -0
  9. assets/images/icon-pack.svg +16 -0
  10. assets/images/pic-ericwaltr.jpg +0 -0
  11. assets/images/pic-srhdesign.jpg +0 -0
  12. assets/js/admin.js +606 -18
  13. assets/js/admin.min.js +27 -6
  14. assets/js/bulk.js +43 -39
  15. assets/js/bulk.min.js +17 -15
  16. assets/js/imagify.min.js +2 -2
  17. assets/js/upload.js +1 -1
  18. assets/js/upload.min.js +4 -4
  19. contributors.txt +10 -2
  20. imagify.php +45 -41
  21. inc/3rd-party/3rd-party.php +1 -0
  22. inc/3rd-party/nextgen-gallery/inc/admin/ajax.php +107 -0
  23. inc/3rd-party/nextgen-gallery/inc/admin/bulk.php +20 -0
  24. inc/3rd-party/nextgen-gallery/inc/admin/db.php +18 -0
  25. inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php +62 -0
  26. inc/3rd-party/nextgen-gallery/inc/admin/gallery.php +26 -0
  27. inc/3rd-party/nextgen-gallery/inc/admin/heartbeat.php +41 -0
  28. inc/3rd-party/nextgen-gallery/inc/admin/menu.php +17 -0
  29. inc/3rd-party/nextgen-gallery/inc/classes/class-attachment.php +449 -0
  30. inc/3rd-party/nextgen-gallery/inc/classes/class-db.php +140 -0
  31. inc/3rd-party/nextgen-gallery/inc/classes/class-ngg-storage.php +72 -0
  32. inc/3rd-party/nextgen-gallery/inc/classes/class-ngg.php +32 -0
  33. inc/3rd-party/nextgen-gallery/inc/common/attachments.php +73 -0
  34. inc/3rd-party/nextgen-gallery/inc/functions/admin-stats.php +111 -0
  35. inc/3rd-party/nextgen-gallery/nextgen-gallery.php +30 -0
  36. inc/3rd-party/wp-retina-2x.php +5 -1
  37. inc/admin/ajax.php +77 -19
  38. inc/admin/enqueue.php +11 -73
  39. inc/admin/heartbeat.php +1 -1
  40. inc/admin/media.php +9 -7
  41. inc/admin/meta-boxes.php +2 -2
  42. inc/admin/options.php +19 -6
  43. inc/admin/ui/bulk.php +92 -87
  44. inc/admin/ui/notices.php +9 -0
  45. inc/admin/ui/options.php +24 -2
  46. inc/admin/upload.php +5 -1
  47. inc/api/imagify.php +43 -1
  48. inc/classes/abstracts/abstract-attachment.php +383 -0
  49. inc/classes/abstracts/abstract-db.php +233 -0
  50. inc/classes/class-attachment.php +17 -265
  51. inc/common/attachments.php +9 -8
  52. inc/functions/admin-stats.php +147 -55
  53. inc/functions/admin-ui.php +549 -34
  54. inc/functions/admin.php +6 -5
  55. inc/functions/formatting.php +16 -0
  56. inc/functions/i18n.php +107 -0
  57. inc/functions/process.php +21 -12
  58. languages/imagify-de_DE.mo +0 -0
  59. languages/imagify-de_DE.po +1212 -938
  60. languages/imagify-de_DE_formal.mo +0 -0
  61. languages/imagify-de_DE_formal.po +1215 -941
  62. languages/imagify-es_ES.mo +0 -0
  63. languages/imagify-es_ES.po +581 -345
  64. languages/imagify-fr_FR.mo +0 -0
  65. languages/imagify-fr_FR.po +600 -348
  66. languages/imagify-it_IT.mo +0 -0
  67. languages/imagify-it_IT.po +593 -351
  68. readme.txt +12 -2
  69. uninstall.php +7 -0
assets/css/admin.css CHANGED
@@ -1,12 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body.imagify-modal-is-open {
2
  overflow: hidden;
3
  }
4
  .imagify-plugins-error {
5
- overflow:hidden;
6
- padding-left:20px;
7
- list-style-type:disc
8
  }
9
-
10
  .imagify-plugins-error li {
11
  width:300px;
12
  line-height:30px
@@ -79,10 +175,10 @@ body.imagify-modal-is-open {
79
  }
80
 
81
  /* Some basic colors */
82
- .imagify-primary {
83
  color: #40b1d0;
84
  }
85
- .imagify-secondary {
86
  color: #8cc152;
87
  }
88
 
@@ -157,7 +253,17 @@ td .imagify-chart {
157
  position: relative;
158
  width: 180px;
159
  float: left;
160
- margin-right: 40px;
 
 
 
 
 
 
 
 
 
 
161
  }
162
  td .imagify-chart-container {
163
  width: 18px;
@@ -185,16 +291,19 @@ td .imagify-chart {
185
  }
186
 
187
  .media_page_imagify-bulk-optimization .notice,
 
188
  .settings_page_imagify .notice {
189
  margin-right: 20px;
190
  margin-left: 2px;
191
  }
192
 
193
- .media_page_imagify-bulk-optimization .media-item {
 
194
  margin: 0;
195
  }
196
 
197
- .media_page_imagify-bulk-optimization .media-item .progress {
 
198
  float: none;
199
  width: 100%;
200
  margin: 0;
@@ -203,7 +312,8 @@ td .imagify-chart {
203
  border-radius: 0;
204
  }
205
 
206
- .media_page_imagify-bulk-optimization .media-item .percent {
 
207
  width: auto;
208
  padding: 0 5px;
209
  line-height: 1.85;
@@ -211,10 +321,13 @@ td .imagify-chart {
211
  }
212
 
213
  .media_page_imagify-bulk-optimization .media-item .progress,
 
 
214
  .media_page_imagify-bulk-optimization .media-item .percent {
215
  text-align: right;
216
  }
217
- .media_page_imagify-bulk-optimization .media-item .progress .bar {
 
218
  width: 1px;
219
  height: 22px;
220
  margin-top: 0;
@@ -281,13 +394,18 @@ td .imagify-chart {
281
  .imagify-settings .button,
282
  .imagify-welcome .button,
283
  .imagify-notice .button,
284
- .imagify-button-primary.imagify-button-primary {
 
 
285
  height: auto;
286
  padding: 8px 20px;
287
  border: 0 none;
288
  font-size: 14px;
289
  font-weight: 600;
290
  box-shadow: 0 3px 0 rgba(0, 0, 0, .15);
 
 
 
291
  }
292
 
293
  .imagify-notice .button-mini {
@@ -308,20 +426,37 @@ td .imagify-chart {
308
  box-shadow: none!important;
309
  }
310
 
311
- .imagify-title .button-ghost.button-ghost {
 
312
  padding: 2px 9px;
313
  border: 1px solid #40B1D0;
314
  font-size: 12px;
315
  font-weight: normal;
316
  color: #40B1D0;
317
  background: transparent;
 
318
  }
319
  .imagify-title .button-ghost.button-ghost:hover,
320
- .imagify-title .button-ghost.button-ghost:focus {
 
 
321
  border-color: transparent;
322
  color: #000;
323
  background: #40B1D0;
324
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  .button .dashicons {
326
  margin-right: 5px;
327
  vertical-align: middle;
@@ -334,6 +469,12 @@ td .imagify-chart {
334
  box-shadow: 0 3px 0 rgba(51, 142, 166, 1);
335
  text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799!important;
336
  }
 
 
 
 
 
 
337
  .imagify-settings .button-primary:hover,
338
  .imagify-settings .button-primary:focus,
339
  .imagify-welcome .button-primary:hover,
@@ -343,8 +484,55 @@ td .imagify-chart {
343
  background: rgb(51, 142, 166);
344
  box-shadow: 0 3px 0 rgb(31, 122, 146);
345
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
 
347
  /* exception */
 
 
 
348
  .wp_attachment_image .imagify-button-primary,
349
  .media-frame-content .imagify-button-primary {
350
  float: left;
@@ -360,12 +548,20 @@ td .imagify-chart {
360
  font-weight: 600;
361
  box-shadow: none;
362
  }
363
- .imagify-settings p.submit .button-primary {
364
- margin-left: 240px;
 
 
 
 
 
 
 
 
365
  }
366
  @media (max-width: 850px) {
367
- .imagify-settings p.submit .button-primary {
368
- margin-left: 0px;
369
  }
370
  .imagify-settings p.submit {
371
  text-align: center;
@@ -392,15 +588,45 @@ td .imagify-chart {
392
  vertical-align: top;
393
  }
394
  .imagify-sub-header,
395
- .imagify-sub-title.imagify-sub-title,
396
- .imagify-settings div.submit { /* heavier is better */
 
397
  margin: 0;
398
  padding: 20px;
399
  background: #F2F5F7;
400
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
 
402
  .imagify-bulk-info {
403
- margin: 1em 1em 1em 240px;
404
  transition: margin .3s;
405
  }
406
  @media (max-width: 850px) {
@@ -580,7 +806,7 @@ td .imagify-chart {
580
  color: #F7A933;
581
  }
582
  .imagify-rkt-notice .imagify-rkt-cta {
583
- width: 200px!important; /* !important because of a dirtugly WP Engine code */
584
  -webkit-box-flex: 1;
585
  -webkit-flex-grow: 1;
586
  -ms-flex-positive: 1;
@@ -694,18 +920,24 @@ label[for="imagify_sizes_full"] + .imagify-info {
694
  /* Custom checkboxes in CSS */
695
 
696
  .imagify-settings.imagify-settings [type="checkbox"]:not(:checked),
697
- .imagify-settings.imagify-settings [type="checkbox"]:checked {
 
 
698
  opacity: 0.01;
699
  }
700
  .imagify-settings.imagify-settings [type="checkbox"]:not(:checked):focus,
701
- .imagify-settings.imagify-settings [type="checkbox"]:checked:focus {
 
 
702
  box-shadow: none!important; /* system value to override */
703
  outline: none!important;
704
  border: 0 none!important;
705
  }
706
 
707
  .imagify-settings [type="checkbox"]:not(:checked) + label,
708
- .imagify-settings [type="checkbox"]:checked + label {
 
 
709
  position: relative;
710
  padding-left: 6px;
711
  cursor: pointer;
@@ -714,7 +946,9 @@ label[for="imagify_sizes_full"] + .imagify-info {
714
 
715
  /* checkbox aspect */
716
  .imagify-settings [type="checkbox"]:not(:checked) + label:before,
717
- .imagify-settings [type="checkbox"]:checked + label:before {
 
 
718
  content: '';
719
  position: absolute;
720
  left: 0; top: 0;
@@ -726,7 +960,9 @@ label[for="imagify_sizes_full"] + .imagify-info {
726
  }
727
  /* checked mark aspect */
728
  .imagify-settings [type="checkbox"]:not(:checked) + label:after,
729
- .imagify-settings [type="checkbox"]:checked + label:after {
 
 
730
  content: "✓";
731
  position: absolute;
732
  font-size: 1.4em;
@@ -738,19 +974,23 @@ label[for="imagify_sizes_full"] + .imagify-info {
738
  }
739
  /* disabled aspect */
740
  .imagify-settings [type="checkbox"][disabled]:not(:checked) + label:before,
741
- .imagify-settings [type="checkbox"][disabled]:checked + label:before {
 
 
742
  border-color: #ccc;
743
  background: #ddd;
744
  }
745
  /* checked mark aspect changes */
746
- .imagify-settings [type="checkbox"]:not(:checked) + label:after {
 
747
  opacity: 0;
748
  -webkit-transform: scale(0);
749
  -moz-transform: scale(0);
750
  -ms-transform: scale(0);
751
  transform: scale(0);
752
  }
753
- .imagify-settings [type="checkbox"]:checked + label:after {
 
754
  opacity: 1;
755
  -webkit-transform: scale(1);
756
  -moz-transform: scale(1);
@@ -761,9 +1001,27 @@ input[id^="imagify_sizes_"]:checked + label {
761
  font-weight: bold;
762
  }
763
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
764
  /* mini version */
765
  .imagify-settings .mini[type="checkbox"]:not(:checked) + label:before,
766
- .imagify-settings .mini[type="checkbox"]:checked + label:before {
 
 
767
  width: 15px;
768
  height: 15px;
769
  border-width: 1px;
@@ -771,15 +1029,18 @@ input[id^="imagify_sizes_"]:checked + label {
771
  margin-top: 0;
772
  }
773
  .imagify-settings .mini[type="checkbox"]:not(:checked) + label:after,
774
- .imagify-settings .mini[type="checkbox"]:checked + label:after {
775
- content: "✓";
 
776
  font-size: .9em;
777
  left: -21px;
778
  top: 1px;
779
  }
780
  /* focus aspect */
781
  .imagify-settings [type="checkbox"]:not(:checked):focus + label:before,
782
- .imagify-settings [type="checkbox"]:checked:focus + label:before {
 
 
783
  border-style: dotted;
784
  border-color: #40b1d0;
785
  }
@@ -792,10 +1053,11 @@ input[id^="imagify_sizes_"]:checked + label {
792
  max-width: 600px;
793
  border-collapse: collapse;
794
  }
795
- .imagify-inline-options:after {
796
- content: "";
797
- display: table;
798
- clear: both;
 
799
  }
800
  .imagify-inline-options input[type="radio"]:not(:checked),
801
  .imagify-inline-options input[type="radio"]:checked {
@@ -806,10 +1068,6 @@ input[id^="imagify_sizes_"]:checked + label {
806
  .imagify-inline-options input[type="radio"]:not(:checked) + label,
807
  .imagify-inline-options input[type="radio"]:checked + label {
808
  position: relative;
809
- /*
810
- float: left;
811
- padding: 13px 40px;
812
- */
813
  display: table-cell;
814
  padding: 13px 10px;
815
  text-align: center;
@@ -826,6 +1084,14 @@ input[id^="imagify_sizes_"]:checked + label {
826
  -webkit-transition: all .275s;
827
  transition: all .275s;
828
  }
 
 
 
 
 
 
 
 
829
  .imagify-bulk-submit .imagify-inline-options input[type="radio"]:not(:checked) + label,
830
  .imagify-bulk-submit .imagify-inline-options input[type="radio"]:checked + label {
831
  margin-bottom: 1.75em;
@@ -843,6 +1109,14 @@ input[id^="imagify_sizes_"]:checked + label {
843
  background: #8BC34A
844
  }
845
 
 
 
 
 
 
 
 
 
846
  .imagify-inline-options .imagify-info {
847
  margin-top: 15px;
848
  }
@@ -860,13 +1134,23 @@ input[id^="imagify_sizes_"]:checked + label {
860
  }
861
 
862
  /* Ads & columns */
 
 
 
 
 
863
  .imagify-col {
864
- overflow: hidden;
 
 
 
 
 
865
  }
866
  .imagify-sidebar {
867
  float: right;
868
- width: 280px;
869
- margin-left: 25px;
870
  }
871
  .imagify-sidebar-section {
872
  border: 1px solid #BBB;
@@ -875,15 +1159,20 @@ input[id^="imagify_sizes_"]:checked + label {
875
  .imagify-sidebar-section + .imagify-sidebar-section {
876
  margin-top: 2em;
877
  }
878
- @media (max-width: 760px) {
879
  .imagify-settings {
880
  display: flex;
881
  flex-direction: column;
882
  }
 
 
 
 
883
  .imagify-sidebar {
884
  order: 2;
885
  float: none;
886
  width: auto;
 
887
  margin-left: 0;
888
  margin-top: 25px;
889
  }
@@ -896,6 +1185,11 @@ input[id^="imagify_sizes_"]:checked + label {
896
  max-width: 276px;
897
  }
898
  }
 
 
 
 
 
899
  .imagify-sidebar-title {
900
  display: block;
901
  padding: 20px 15px;
@@ -1025,16 +1319,23 @@ a.btn-rocket:focus {
1025
  width: 33.333%;
1026
  padding-left: 28px;
1027
  }
 
 
 
 
1028
  .imagify-columns .col-1-2 {
1029
  width: 50%;
1030
  padding: 0 20px;
1031
  }
 
 
 
1032
  .imagify-columns .col-informations {
1033
- width: 41.6%;
1034
  padding-right: 30px;
1035
  }
1036
  .imagify-columns .col-statistics {
1037
- width: 25%;
1038
  }
1039
  @media (max-width: 830px) {
1040
  .imagify-columns [class^="col-"] {
@@ -1594,23 +1895,58 @@ ul.imagify-datas-details.imagify-datas-details {
1594
  background: #FFF;
1595
  color: #888;
1596
  }
1597
-
1598
- .txt-center {
1599
- text-align: center;
1600
  }
1601
-
1602
- .imagify-list-dash li {
1603
  position: relative;
1604
- padding-left: 24px;
 
 
 
 
 
 
 
 
 
 
 
 
1605
  }
1606
- .imagify-list-dash li:before {
 
1607
  content: "";
1608
  position: absolute;
1609
- left: 0; top: 9px;
1610
- height: 1px; width: 12px;
1611
- background: #5f758e;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1612
  }
1613
-
1614
  .imagify-sub-title.imagify-sub-title {
1615
  font-size: 23px;
1616
  background: #FFF;
@@ -1642,17 +1978,6 @@ ul.imagify-datas-details.imagify-datas-details {
1642
  .imagify-bulk .imagify-settings-section h3 {
1643
  margin-bottom: 2em;
1644
  }
1645
-
1646
- .imagify-bulk-submit {
1647
- margin-top: 4em;
1648
- }
1649
- #imagify-bulk-action {
1650
- float: left;
1651
- }
1652
- #imagify-bulk-action + .imagify-tooltips {
1653
- overflow: hidden;
1654
- display: block;
1655
- }
1656
  .imagify-title .imagify-tooltips {
1657
  position: absolute;
1658
  top: 100%;
@@ -1773,6 +2098,7 @@ ul.imagify-datas-details.imagify-datas-details {
1773
  font-weight: bold;
1774
  line-height: 1.1;
1775
  vertical-align: middle;
 
1776
  }
1777
  .imagify-number-you-optimized .text {
1778
  display: table-cell;
@@ -1890,33 +2216,33 @@ ul.imagify-datas-details.imagify-datas-details {
1890
  }
1891
 
1892
  @-webkit-keyframes congrate {
1893
- 0% {
1894
  opacity: 0;
1895
- -webkit-transform: scale(1);
1896
- }
1897
- 50% {
1898
- -webkit-transform: scale(1.05);
1899
- opacity: 1;
1900
- }
1901
- 100% {
1902
- -webkit-transform: scale(1);
1903
- opacity: 1;
1904
  }
1905
  }
1906
 
1907
  @keyframes congrate {
1908
- 0% {
1909
- opacity: 0;
1910
- transform: scale(1);
1911
- }
1912
- 50% {
1913
- transform: scale(1.05);
1914
- opacity: 1;
1915
- }
1916
- 100% {
1917
- transform: scale(1);
1918
- opacity: 1;
1919
- }
1920
  }
1921
 
1922
 
@@ -2313,4 +2639,934 @@ td.imagify-cell-filename {
2313
  margin-top: 1em;
2314
  color: #40b1d0;
2315
  font-weight: bold;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2316
  }
1
+ /**
2
+ * === Utilities Classes
3
+ */
4
+
5
+ /* Util: float */
6
+ .imagify-start {
7
+ float: left;
8
+ }
9
+ .imagify-end {
10
+ float: right;
11
+ }
12
+
13
+ /* Util: text-align */
14
+ .imagify-txt-start.imagify-txt-start.imagify-txt-start {
15
+ text-align: left;
16
+ }
17
+ .imagify-txt-center.imagify-txt-center.imagify-txt-center {
18
+ text-align: center;
19
+ }
20
+ .imagify-txt-end.imagify-txt-end.imagify-txt-end {
21
+ text-align: right;
22
+ }
23
+
24
+ /* Util: margin/padding */
25
+ .imagify-mt1.imagify-mt1 {
26
+ margin-top: 1em;
27
+ }
28
+ .imagify-mb1.imagify-mb1 {
29
+ margin-bottom: 1em;
30
+ }
31
+ .imagify-mr1.imagify-mr1 {
32
+ margin-right: 1em;
33
+ }
34
+ .imagify-ml2.imagify-ml2 {
35
+ margin-left: 2em;
36
+ }
37
+ .imagify-mr2.imagify-mr2 {
38
+ margin-right: 2em;
39
+ }
40
+
41
+ .imagify-pl0.imagify-pl0.imagify-pl0 {
42
+ padding-left: 0;
43
+ }
44
+ .imagify-pr1.imagify-pr1 {
45
+ padding-right: 1em;
46
+ }
47
+
48
+ /* Util: Overflow */
49
+ .imagify-oh {
50
+ overflow: hidden;
51
+ }
52
+ .imagify-clear {
53
+ clear: both;
54
+ }
55
+ .imagify-clearfix:after,
56
+ .imagify-inline-options:after {
57
+ content: "";
58
+ display: table;
59
+ clear: both;
60
+ }
61
+
62
+ /* Default counter */
63
+ .imagify-count.imagify-count {
64
+ counter-reset: num;
65
+ }
66
+ .imagify-count .imagify-count-title {
67
+ font-weight: bold;
68
+ }
69
+ .imagify-default-settings {
70
+ color: #73818c;
71
+ font-weight: normal;
72
+ }
73
+ .imagify-count .imagify-count-title:before {
74
+ counter-increment: num 1;
75
+ content: counter(num) ". ";
76
+ }
77
+
78
+ /* Table layout */
79
+ .imagify-table {
80
+ display: table;
81
+ width: 100%;
82
+ }
83
+ .imagify-cell {
84
+ display: table-cell;
85
+ padding: 10px;
86
+ vertical-align: top;
87
+ }
88
+ .imagify-cell.va-top,
89
+ .va-top .imagify-cell {
90
+ vertical-align: top;
91
+ }
92
+
93
+ .imagify-bulk-submit .imagify-cell {
94
+ padding-top: 0;
95
+ }
96
+
97
+
98
  body.imagify-modal-is-open {
99
  overflow: hidden;
100
  }
101
  .imagify-plugins-error {
102
+ overflow: hidden;
103
+ padding-left: 20px;
104
+ list-style-type: disc
105
  }
 
106
  .imagify-plugins-error li {
107
  width:300px;
108
  line-height:30px
175
  }
176
 
177
  /* Some basic colors */
178
+ .imagify-primary.imagify-primary.imagify-primary {
179
  color: #40b1d0;
180
  }
181
+ .imagify-secondary.imagify-secondary.imagify-secondary {
182
  color: #8cc152;
183
  }
184
 
253
  position: relative;
254
  width: 180px;
255
  float: left;
256
+ margin-right: 20px;
257
+ }
258
+ .imagify-global-optim-phrase {
259
+ width: 180px;
260
+ padding-top: 20px;
261
+ font-size: 14px;
262
+ font-weight: bold;
263
+ text-align: center;
264
+ }
265
+ .imagify-total-percent {
266
+ color: #46b1ce;
267
  }
268
  td .imagify-chart-container {
269
  width: 18px;
291
  }
292
 
293
  .media_page_imagify-bulk-optimization .notice,
294
+ body[class*="_imagify-ngg-bulk-optimization"] .notice,
295
  .settings_page_imagify .notice {
296
  margin-right: 20px;
297
  margin-left: 2px;
298
  }
299
 
300
+ .media_page_imagify-bulk-optimization .media-item,
301
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item {
302
  margin: 0;
303
  }
304
 
305
+ .media_page_imagify-bulk-optimization .media-item .progress,
306
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress {
307
  float: none;
308
  width: 100%;
309
  margin: 0;
312
  border-radius: 0;
313
  }
314
 
315
+ .media_page_imagify-bulk-optimization .media-item .percent,
316
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent {
317
  width: auto;
318
  padding: 0 5px;
319
  line-height: 1.85;
321
  }
322
 
323
  .media_page_imagify-bulk-optimization .media-item .progress,
324
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress,
325
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent,
326
  .media_page_imagify-bulk-optimization .media-item .percent {
327
  text-align: right;
328
  }
329
+ .media_page_imagify-bulk-optimization .media-item .progress .bar,
330
+ body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar {
331
  width: 1px;
332
  height: 22px;
333
  margin-top: 0;
394
  .imagify-settings .button,
395
  .imagify-welcome .button,
396
  .imagify-notice .button,
397
+ .imagify-button.imagify-button,
398
+ .imagify-button-primary.imagify-button-primary,
399
+ .imagify-button-secondary.imagify-button-secondary {
400
  height: auto;
401
  padding: 8px 20px;
402
  border: 0 none;
403
  font-size: 14px;
404
  font-weight: 600;
405
  box-shadow: 0 3px 0 rgba(0, 0, 0, .15);
406
+ border-radius: 3px;
407
+ cursor: pointer;
408
+ transition: all .275s;
409
  }
410
 
411
  .imagify-notice .button-mini {
426
  box-shadow: none!important;
427
  }
428
 
429
+ .imagify-title .button-ghost.button-ghost,
430
+ .imagify-button-ghost.imagify-button-ghost {
431
  padding: 2px 9px;
432
  border: 1px solid #40B1D0;
433
  font-size: 12px;
434
  font-weight: normal;
435
  color: #40B1D0;
436
  background: transparent;
437
+ box-shadow: none;
438
  }
439
  .imagify-title .button-ghost.button-ghost:hover,
440
+ .imagify-title .button-ghost.button-ghost:focus,
441
+ .imagify-button-ghost.imagify-button-ghost:hover,
442
+ .imagify-button-ghost.imagify-button-ghost:focus {
443
  border-color: transparent;
444
  color: #000;
445
  background: #40B1D0;
446
  }
447
+ .imagify-button-ghost.imagify-button-ghost:hover,
448
+ .imagify-button-ghost.imagify-button-ghost:focus {
449
+ color: #FFF;
450
+ }
451
+ .imagify-button-medium.imagify-button-medium {
452
+ text-transform: uppercase;
453
+ letter-spacing: 0.1em;
454
+ padding: 3px 10px;
455
+ font-weight: bold;
456
+ }
457
+ .imagify-button-medium.imagify-button-ghost {
458
+ border-width: 2px;
459
+ }
460
  .button .dashicons {
461
  margin-right: 5px;
462
  vertical-align: middle;
469
  box-shadow: 0 3px 0 rgba(51, 142, 166, 1);
470
  text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799!important;
471
  }
472
+ .imagify-button-secondary.imagify-button-secondary {
473
+ background: #8BC34A;
474
+ color: #FFF;
475
+ box-shadow: 0 3px 0 #6F9C3B;
476
+ text-shadow: 0 -1px 1px #6F9C3B, 1px 0 1px #6F9C3B, 0 1px 1px #6F9C3B!important;
477
+ }
478
  .imagify-settings .button-primary:hover,
479
  .imagify-settings .button-primary:focus,
480
  .imagify-welcome .button-primary:hover,
484
  background: rgb(51, 142, 166);
485
  box-shadow: 0 3px 0 rgb(31, 122, 146);
486
  }
487
+ .imagify-button-secondary.imagify-button-secondary:hover,
488
+ .imagify-button-secondary.imagify-button-secondary:focus {
489
+ background: #6F9C3B;
490
+ color: #FFF;
491
+ }
492
+
493
+ .imagify-button-light.imagify-button-light {
494
+ background: #FFF;
495
+ color: #4a4a4a;
496
+ box-shadow: 0 2px 0 rgba(0, 0, 0, .2);
497
+ }
498
+ .imagify-button-light.imagify-button-light:hover,
499
+ .imagify-button-light.imagify-button-light:focus {
500
+ color: #FFF;
501
+ background: rgba(0, 0, 0, .2);
502
+ }
503
+
504
+ /* Modifier */
505
+ .imagify-section-positive .imagify-button-light {
506
+ color: #709A41;
507
+ }
508
+ .imagify-button.imagify-button-big {
509
+ font-size: 15px;
510
+ padding: 11px 30px;
511
+ }
512
+ .imagify-button-big .dashicons {
513
+ font-size: 1.45em;
514
+ margin-right: 6px;
515
+ margin-left: -4px;
516
+ }
517
+
518
+ .imagify-settings .button .dashicons,
519
+ .imagify-welcome .button .dashicons,
520
+ .imagify-notice .button .dashicons,
521
+ .imagify-button.imagify-button .dashicons,
522
+ .imagify-button-primary.imagify-button-primary .dashicons,
523
+ .imagify-button-secondary.imagify-button-secondary .dashicons {
524
+ vertical-align: middle;
525
+ }
526
+ .button-text {
527
+ display: inline-block;
528
+ vertical-align: middle;
529
+ }
530
+
531
 
532
  /* exception */
533
+ #imagify-bulk-action {
534
+ padding: 11px 20px;
535
+ }
536
  .wp_attachment_image .imagify-button-primary,
537
  .media-frame-content .imagify-button-primary {
538
  float: left;
548
  font-weight: 600;
549
  box-shadow: none;
550
  }
551
+ .imagify-settings div.submit.submit {
552
+ padding-left: 235px;
553
+ padding-top: 40px;
554
+ }
555
+ .imagify-settings p.submit {
556
+ float: left;
557
+ margin-top: 0;
558
+ }
559
+ .imagify-settings p.submit .button {
560
+ margin: 0 5px;
561
  }
562
  @media (max-width: 850px) {
563
+ .imagify-settings div.submit {
564
+ padding-left: 0;
565
  }
566
  .imagify-settings p.submit {
567
  text-align: center;
588
  vertical-align: top;
589
  }
590
  .imagify-sub-header,
591
+ .imagify-sub-title.imagify-sub-title, /* heavier is better */
592
+ .imagify-settings div.submit,
593
+ .imagify-section {
594
  margin: 0;
595
  padding: 20px;
596
  background: #F2F5F7;
597
  }
598
+ .imagify-sub-title.imagify-sub-title,
599
+ .imagify-section-positive {
600
+ padding-left: 40px;
601
+ }
602
+ .imagify-section-positive {
603
+ background: #8cc152;
604
+ color: #FFF;
605
+ }
606
+ .imagify-section-positive p {
607
+ color: #FFF
608
+ }
609
+ .imagify-section-gray {
610
+ background: #D9E4EB;
611
+ }
612
+ .imagify-section-gray .imagify-count-title {
613
+ color: #4a4a4a;
614
+ }
615
+
616
+ .imagify-section p:first-child {
617
+ margin-top: 0;
618
+ }
619
+ .imagify-section p:last-child {
620
+ margin-bottom: 0;
621
+ }
622
+ p.imagify-section-title.imagify-section-title {
623
+ font-size: 20px;
624
+ margin-top: -.3em;
625
+ margin-bottom: -.6em;
626
+ }
627
 
628
  .imagify-bulk-info {
629
+ margin: 1em 1em 1em 5px;
630
  transition: margin .3s;
631
  }
632
  @media (max-width: 850px) {
806
  color: #F7A933;
807
  }
808
  .imagify-rkt-notice .imagify-rkt-cta {
809
+ width: 250px!important; /* !important because of a dirtugly WP Engine code */
810
  -webkit-box-flex: 1;
811
  -webkit-flex-grow: 1;
812
  -ms-flex-positive: 1;
920
  /* Custom checkboxes in CSS */
921
 
922
  .imagify-settings.imagify-settings [type="checkbox"]:not(:checked),
923
+ .imagify-settings.imagify-settings [type="checkbox"]:checked,
924
+ .imagify-checkbox.imagify-checkbox:not(:checked),
925
+ .imagify-checkbox.imagify-checkbox:checked {
926
  opacity: 0.01;
927
  }
928
  .imagify-settings.imagify-settings [type="checkbox"]:not(:checked):focus,
929
+ .imagify-settings.imagify-settings [type="checkbox"]:checked:focus,
930
+ .imagify-checkbox.imagify-checkbox:not(:checked):focus,
931
+ .imagify-checkbox.imagify-checkbox:checked:focus {
932
  box-shadow: none!important; /* system value to override */
933
  outline: none!important;
934
  border: 0 none!important;
935
  }
936
 
937
  .imagify-settings [type="checkbox"]:not(:checked) + label,
938
+ .imagify-settings [type="checkbox"]:checked + label,
939
+ .imagify-checkbox.imagify-checkbox:not(:checked) + label,
940
+ .imagify-checkbox.imagify-checkbox:checked + label {
941
  position: relative;
942
  padding-left: 6px;
943
  cursor: pointer;
946
 
947
  /* checkbox aspect */
948
  .imagify-settings [type="checkbox"]:not(:checked) + label:before,
949
+ .imagify-settings [type="checkbox"]:checked + label:before,
950
+ .imagify-checkbox.imagify-checkbox:not(:checked) + label:before,
951
+ .imagify-checkbox.imagify-checkbox:checked + label:before {
952
  content: '';
953
  position: absolute;
954
  left: 0; top: 0;
960
  }
961
  /* checked mark aspect */
962
  .imagify-settings [type="checkbox"]:not(:checked) + label:after,
963
+ .imagify-settings [type="checkbox"]:checked + label:after,
964
+ .imagify-checkbox.imagify-checkbox:not(:checked) + label:after,
965
+ .imagify-checkbox.imagify-checkbox:checked + label:after {
966
  content: "✓";
967
  position: absolute;
968
  font-size: 1.4em;
974
  }
975
  /* disabled aspect */
976
  .imagify-settings [type="checkbox"][disabled]:not(:checked) + label:before,
977
+ .imagify-settings [type="checkbox"][disabled]:checked + label:before,
978
+ .imagify-checkbox.imagify-checkbox[disabled]:not(:checked) + label:before,
979
+ .imagify-checkbox.imagify-checkbox[disabled]:checked + label:before {
980
  border-color: #ccc;
981
  background: #ddd;
982
  }
983
  /* checked mark aspect changes */
984
+ .imagify-settings [type="checkbox"]:not(:checked) + label:after,
985
+ .imagify-checkbox.imagify-checkbox:not(:checked) + label:after {
986
  opacity: 0;
987
  -webkit-transform: scale(0);
988
  -moz-transform: scale(0);
989
  -ms-transform: scale(0);
990
  transform: scale(0);
991
  }
992
+ .imagify-settings [type="checkbox"]:checked + label:after,
993
+ .imagify-checkbox.imagify-checkbox:checked + label:after {
994
  opacity: 1;
995
  -webkit-transform: scale(1);
996
  -moz-transform: scale(1);
1001
  font-weight: bold;
1002
  }
1003
 
1004
+ /* medium version */
1005
+ .medium.imagify-checkbox:not(:checked) + label:before,
1006
+ .medium.imagify-checkbox:checked + label:before {
1007
+ width: 22px;
1008
+ height: 22px;
1009
+ border-width: 1.5px;
1010
+ border-radius: 2px;
1011
+ margin-top: 0;
1012
+ }
1013
+ .medium.imagify-checkbox:not(:checked) + label:after,
1014
+ .medium.imagify-checkbox:checked + label:after {
1015
+ font-size: 1.1em;
1016
+ left: -17px;
1017
+ top: 3px;
1018
+ }
1019
+
1020
  /* mini version */
1021
  .imagify-settings .mini[type="checkbox"]:not(:checked) + label:before,
1022
+ .imagify-settings .mini[type="checkbox"]:checked + label:before,
1023
+ .mini.imagify-checkbox:not(:checked) + label:before,
1024
+ .mini.imagify-checkbox:checked + label:before {
1025
  width: 15px;
1026
  height: 15px;
1027
  border-width: 1px;
1029
  margin-top: 0;
1030
  }
1031
  .imagify-settings .mini[type="checkbox"]:not(:checked) + label:after,
1032
+ .imagify-settings .mini[type="checkbox"]:checked + label:after,
1033
+ .mini.imagify-checkbox:not(:checked) + label:after,
1034
+ .mini.imagify-checkbox:checked + label:after {
1035
  font-size: .9em;
1036
  left: -21px;
1037
  top: 1px;
1038
  }
1039
  /* focus aspect */
1040
  .imagify-settings [type="checkbox"]:not(:checked):focus + label:before,
1041
+ .imagify-settings [type="checkbox"]:checked:focus + label:before,
1042
+ .imagify-checkbox.imagify-checkbox:not(:checked):focus + label:before,
1043
+ .imagify-checkbox.imagify-checkbox:checked:focus + label:before {
1044
  border-style: dotted;
1045
  border-color: #40b1d0;
1046
  }
1053
  max-width: 600px;
1054
  border-collapse: collapse;
1055
  }
1056
+ .imagify-small-options {
1057
+ width: 300px;
1058
+ margin: 1em auto .5em;
1059
+ background: #338EA6;
1060
+ border-radius: 4px;
1061
  }
1062
  .imagify-inline-options input[type="radio"]:not(:checked),
1063
  .imagify-inline-options input[type="radio"]:checked {
1068
  .imagify-inline-options input[type="radio"]:not(:checked) + label,
1069
  .imagify-inline-options input[type="radio"]:checked + label {
1070
  position: relative;
 
 
 
 
1071
  display: table-cell;
1072
  padding: 13px 10px;
1073
  text-align: center;
1084
  -webkit-transition: all .275s;
1085
  transition: all .275s;
1086
  }
1087
+ .imagify-small-options input[type="radio"]:not(:checked) + label,
1088
+ .imagify-small-options input[type="radio"]:checked + label {
1089
+ padding: 8px 10px;
1090
+ font-size: 13px;
1091
+ color: #FFF;
1092
+ box-shadow: none;
1093
+ border-left: 0;
1094
+ }
1095
  .imagify-bulk-submit .imagify-inline-options input[type="radio"]:not(:checked) + label,
1096
  .imagify-bulk-submit .imagify-inline-options input[type="radio"]:checked + label {
1097
  margin-bottom: 1.75em;
1109
  background: #8BC34A
1110
  }
1111
 
1112
+ .imagify-small-options input[type="radio"]:not(:checked) + label {
1113
+ background: #338EA6;
1114
+ color: rgba(255, 255, 255, .4);
1115
+ }
1116
+ .imagify-small-options input[type="radio"]:checked + label {
1117
+ background: #40B1D0;
1118
+ }
1119
+
1120
  .imagify-inline-options .imagify-info {
1121
  margin-top: 15px;
1122
  }
1134
  }
1135
 
1136
  /* Ads & columns */
1137
+ .imagify-cols:after {
1138
+ content: "";
1139
+ display: table;
1140
+ clear: both;
1141
+ }
1142
  .imagify-col {
1143
+ float: left;
1144
+ width: 50%;
1145
+ }
1146
+ .imagify-main {
1147
+ float: left;
1148
+ width: 70%;
1149
  }
1150
  .imagify-sidebar {
1151
  float: right;
1152
+ width: 28%;
1153
+ max-width: 300px;
1154
  }
1155
  .imagify-sidebar-section {
1156
  border: 1px solid #BBB;
1159
  .imagify-sidebar-section + .imagify-sidebar-section {
1160
  margin-top: 2em;
1161
  }
1162
+ @media (max-width: 820px) {
1163
  .imagify-settings {
1164
  display: flex;
1165
  flex-direction: column;
1166
  }
1167
+ .imagify-main {
1168
+ width: auto;
1169
+ float: none;
1170
+ }
1171
  .imagify-sidebar {
1172
  order: 2;
1173
  float: none;
1174
  width: auto;
1175
+ max-width: none;
1176
  margin-left: 0;
1177
  margin-top: 25px;
1178
  }
1185
  max-width: 276px;
1186
  }
1187
  }
1188
+ @media (min-width: 1400px) {
1189
+ .imagify-main {
1190
+ width: 74%;
1191
+ }
1192
+ }
1193
  .imagify-sidebar-title {
1194
  display: block;
1195
  padding: 20px 15px;
1319
  width: 33.333%;
1320
  padding-left: 28px;
1321
  }
1322
+ .imagify-columns .col-2-3 {
1323
+ width: 66.666%;
1324
+ padding-left: 28px
1325
+ }
1326
  .imagify-columns .col-1-2 {
1327
  width: 50%;
1328
  padding: 0 20px;
1329
  }
1330
+ .imagify-columns .col-overview {
1331
+ padding-left: 20px;
1332
+ }
1333
  .imagify-columns .col-informations {
1334
+ width: 36.6%;
1335
  padding-right: 30px;
1336
  }
1337
  .imagify-columns .col-statistics {
1338
+ width: 30%;
1339
  }
1340
  @media (max-width: 830px) {
1341
  .imagify-columns [class^="col-"] {
1895
  background: #FFF;
1896
  color: #888;
1897
  }
1898
+ .imagify-list-infos {
1899
+ max-width: 100%;
1900
+ width: 415px;
1901
  }
1902
+ .imagify-list-infos li,
1903
+ .imagify-info-block {
1904
  position: relative;
1905
+ padding: 10px;
1906
+ padding-left: 42px;
1907
+ background: #D9E4EB;
1908
+ border-radius: 4px;
1909
+ line-height: 1.6;
1910
+ }
1911
+ .imagify-list-infos .imagify-alt.imagify-alt {
1912
+ background: #8BA7B5;
1913
+ color: #FFF;
1914
+ font-weight: bold;
1915
+ }
1916
+ .imagify-list-infos li + li {
1917
+ margin-top: 1em;
1918
  }
1919
+ .imagify-list-infos li:before,
1920
+ .imagify-info-block:before {
1921
  content: "";
1922
  position: absolute;
1923
+ left: 13px; top: 14px;
1924
+ height: 16px; width: 16px;
1925
+ border: 1px solid #46b1ce;
1926
+ border-radius: 10px;
1927
+ }
1928
+ .imagify-list-infos li:after,
1929
+ .imagify-info-block:after {
1930
+ content: "i";
1931
+ position: absolute;
1932
+ left: 20px; top: 13px;
1933
+ font-style: italic;
1934
+ color: #46b1ce;
1935
+ }
1936
+ .imagify-cell .imagify-info-block {
1937
+ padding-top: 0;
1938
+ }
1939
+ .imagify-cell .imagify-info-block:after {
1940
+ top: 6px;
1941
+ }
1942
+ .imagify-cell .imagify-info-block:before {
1943
+ top: 7px;
1944
+ }
1945
+ .imagify-list-infos .imagify-alt:before,
1946
+ .imagify-list-infos .imagify-alt:after {
1947
+ color: #fff;
1948
+ border-color: #fff;
1949
  }
 
1950
  .imagify-sub-title.imagify-sub-title {
1951
  font-size: 23px;
1952
  background: #FFF;
1978
  .imagify-bulk .imagify-settings-section h3 {
1979
  margin-bottom: 2em;
1980
  }
 
 
 
 
 
 
 
 
 
 
 
1981
  .imagify-title .imagify-tooltips {
1982
  position: absolute;
1983
  top: 100%;
2098
  font-weight: bold;
2099
  line-height: 1.1;
2100
  vertical-align: middle;
2101
+ white-space: nowrap;
2102
  }
2103
  .imagify-number-you-optimized .text {
2104
  display: table-cell;
2216
  }
2217
 
2218
  @-webkit-keyframes congrate {
2219
+ 0% {
2220
  opacity: 0;
2221
+ -webkit-transform: scale(1);
2222
+ }
2223
+ 50% {
2224
+ -webkit-transform: scale(1.05);
2225
+ opacity: 1;
2226
+ }
2227
+ 100% {
2228
+ -webkit-transform: scale(1);
2229
+ opacity: 1;
2230
  }
2231
  }
2232
 
2233
  @keyframes congrate {
2234
+ 0% {
2235
+ opacity: 0;
2236
+ transform: scale(1);
2237
+ }
2238
+ 50% {
2239
+ transform: scale(1.05);
2240
+ opacity: 1;
2241
+ }
2242
+ 100% {
2243
+ transform: scale(1);
2244
+ opacity: 1;
2245
+ }
2246
  }
2247
 
2248
 
2639
  margin-top: 1em;
2640
  color: #40b1d0;
2641
  font-weight: bold;
2642
+ }
2643
+
2644
+ /**
2645
+ * Payment Modals
2646
+ */
2647
+
2648
+ /* Flexbox re-groups */
2649
+ .imagify-modal-cols,
2650
+ .imagify-border-styled,
2651
+ .imagify-offer-header,
2652
+ .imagify-payment-modal .imagify-modal-content,
2653
+ .imagify-flex-table,
2654
+ .imagify-tabs {
2655
+ display: -webkit-box;
2656
+ display: -webkit-flex;
2657
+ display: -ms-flexbox;
2658
+ display: flex;
2659
+ -webkit-box-orient: horizontal;
2660
+ -webkit-box-direction: normal;
2661
+ -webkit-flex-direction: row;
2662
+ -ms-flex-direction: row;
2663
+ flex-direction: row;
2664
+ }
2665
+ .imagify-modal-cols,
2666
+ .imagify-border-styled {
2667
+ -webkit-box-pack: center;
2668
+ -webkit-justify-content: center;
2669
+ -ms-flex-pack: center;
2670
+ justify-content: center;
2671
+ -webkit-box-align: center;
2672
+ -webkit-align-items: center;
2673
+ -ms-flex-align: center;
2674
+ align-items: center;
2675
+ }
2676
+
2677
+ .imagify-payment-modal {
2678
+ text-align: center;
2679
+ color: #7A8996;
2680
+ }
2681
+ .imagify-payment-modal * {
2682
+ box-sizing: border-box;
2683
+ }
2684
+ .imagify-modal-loader {
2685
+ position: absolute;
2686
+ top: 0; left: 0; right: 0; bottom: 0;
2687
+ background: #fff url('../images/loader-balls.svg') center no-repeat;
2688
+ z-index: 10;
2689
+ }
2690
+ .imagify-payment-modal .imagify-modal-content {
2691
+ width: 980px;
2692
+ max-width: 100%;
2693
+ min-width: 925px;
2694
+ padding: 0;
2695
+ }
2696
+ .imagify-payment-modal .imagify-modal-main {
2697
+ width: 70%;
2698
+ }
2699
+ .imagify-payment-modal .imagify-modal-sidebar {
2700
+ width: 30%;
2701
+ padding: 15px 20px;
2702
+ background: #1F2332;
2703
+ color: #FFF;
2704
+ }
2705
+ .imagify-payment-steps {
2706
+ padding-top: 15px;
2707
+ margin-top: 0;
2708
+ margin-left: 0;
2709
+ list-style: none;
2710
+ counter-reset: steps;
2711
+ }
2712
+ .imagify-payment-steps li {
2713
+ position: relative;
2714
+ display: inline-block;
2715
+ counter-increment: steps;
2716
+ font-weight: bold;
2717
+ }
2718
+ .imagify-payment-steps li + li {
2719
+ margin-left: 35px;
2720
+ }
2721
+ .imagify-payment-steps li + li:after {
2722
+ content: "";
2723
+ position: absolute;
2724
+ top: 19px;
2725
+ left: -90px;
2726
+ z-index: 1;
2727
+ width: 150px;
2728
+ height: 2px;
2729
+ background: #E5EBEF;
2730
+ }
2731
+ .imagify-payment-steps li + li.active:after {
2732
+ background: #40B1D0;
2733
+ }
2734
+ .imagify-payment-steps li:before {
2735
+ display: block;
2736
+ position: relative;
2737
+ content: counter( steps, decimal );
2738
+ width: 36px;
2739
+ height: 36px;
2740
+ margin: 0 auto .3em;
2741
+ border: 2px solid #E5EBEF;
2742
+ text-align: center;
2743
+ line-height: 34px;
2744
+ font-size: 1.4em;
2745
+ color: #E5EBEF;
2746
+ background: #FFF;
2747
+ border-radius: 50%;
2748
+ z-index: 2;
2749
+ }
2750
+ .imagify-payment-steps .active:before {
2751
+ color: #40B1D0;
2752
+ border-color: #40B1D0;
2753
+ }
2754
+ .imagify-modal-section {
2755
+ padding: 0 25px;
2756
+ }
2757
+ .imagify-modal-section.section-gray {
2758
+ margin: 1em 0;
2759
+ padding: 10px 25px 15px;
2760
+ background: #F6F7FB;
2761
+ }
2762
+ .imagify-tabs-contents .section-gray {
2763
+ padding: 8px 25px 10px;
2764
+ }
2765
+ .imagify-modal-section .imagify-modal-title:first-child {
2766
+ margin-top: .3em;
2767
+ margin-bottom: .5em;
2768
+ }
2769
+ .imagify-modal-title {
2770
+ font-size: 1.8em;
2771
+ font-weight: lighter;
2772
+ }
2773
+
2774
+ .imagify-border-styled {
2775
+ width: 200px;
2776
+ margin: 0 auto;
2777
+ color: #8BC34A;
2778
+ font-weight: bold;
2779
+ font-size: 0.925em;
2780
+ }
2781
+ .imagify-big-number {
2782
+ font-size: 3.7em;
2783
+ font-weight: bold;
2784
+ margin: -3px 0;
2785
+ color: #4A4A4A;
2786
+ line-height: 1;
2787
+ }
2788
+
2789
+ .imagify-border-styled:before,
2790
+ .imagify-border-styled:after {
2791
+ content: "";
2792
+ height: 1px;
2793
+ background: rgba(0,0,0,.1);
2794
+ -webkit-flex-basis: 40px;
2795
+ -ms-flex-preferred-size: 40px;
2796
+ flex-basis: 40px;
2797
+ }
2798
+ .imagify-border-styled:before {
2799
+ margin-right: 5px;
2800
+ }
2801
+ .imagify-border-styled:after {
2802
+ margin-left: 5px;
2803
+ }
2804
+ .imagify-payment-modal strong {
2805
+ font-weight: bold;
2806
+ color: #4A4A4A;
2807
+ }
2808
+
2809
+ .imagify-col {
2810
+ -webkit-flex-basis: 50%;
2811
+ -ms-flex-preferred-size: 50%;
2812
+ flex-basis: 50%;
2813
+ }
2814
+ .imagify-modal .imagify-cols {
2815
+ padding: 0 20px;
2816
+ }
2817
+ .imagify-iconed {
2818
+ position: relative;
2819
+ text-align: left;
2820
+ padding-left: 42px;
2821
+ margin-right: 15px;
2822
+ font-weight: 500;
2823
+ }
2824
+ .imagify-iconed .dashicons,
2825
+ .imagify-iconed .icon {
2826
+ position: absolute;
2827
+ font-size: 2em;
2828
+ left: 0; top: 2px;
2829
+ color: #40B1D0;
2830
+ }
2831
+ .imagify-payment-modal .close-btn {
2832
+ top: 10px;
2833
+ right: 10px;
2834
+ width: 24px;
2835
+ height: 24px;
2836
+ padding: 2px 0 0 4.5px; /* Safari iOS bug fix */
2837
+ color: #FFF;
2838
+ background: #40B1D0;
2839
+ border-radius: 50%;
2840
+ -webkit-transition: all .275s;
2841
+ transition: all .275s;
2842
+ }
2843
+ .imagify-payment-modal .close-btn i {
2844
+ margin-left: -3.5px;
2845
+ margin-top: 1px;
2846
+ }
2847
+ .imagify-payment-modal .close-btn:hover {
2848
+ background: #F6F7FB;
2849
+ }
2850
+
2851
+ /* OFFERS */
2852
+ .imagify-offer-line {
2853
+ margin-top: 1.5em;
2854
+ }
2855
+ .imagify-offer-line + .imagify-offer-line {
2856
+ margin-top: 0.75em;
2857
+ }
2858
+ .imagify-offer-header {
2859
+ -webkit-box-pack: justify;
2860
+ -webkit-justify-content: space-between;
2861
+ -ms-flex-pack: justify;
2862
+ justify-content: space-between;
2863
+ -webkit-box-align: center;
2864
+ -webkit-align-items: center;
2865
+ -ms-flex-align: center;
2866
+ align-items: center;
2867
+ padding: 0 0 0 15px;
2868
+ border-radius: 4px 4px 0 0;
2869
+ -webkit-transition: all .275s;
2870
+ transition: all .275s;
2871
+ }
2872
+ .imagify-offer-header.imagify-offer-header.imagify-offer-header .imagify-inline-options label:last-child {
2873
+ border-radius: 0 4px 0 0;
2874
+ }
2875
+ .imagify-offer-header .imagify-inline-options {
2876
+ width: auto;
2877
+ }
2878
+ .imagify-offer-title {
2879
+ font-weight: bold;
2880
+ margin: 0;
2881
+ }
2882
+ .imagify-offer-header,
2883
+ .imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label {
2884
+ background: #E5EBEF;
2885
+ }
2886
+ .imagify-offer-onetime .imagify-offer-header {
2887
+ padding-top:8px;
2888
+ padding-bottom: 8px;
2889
+ }
2890
+ .imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label,
2891
+ .imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label {
2892
+ position: relative;
2893
+ padding: 7px 30px;
2894
+ font-size: 1em;
2895
+ letter-spacing: 0.05em;
2896
+ color: inherit;
2897
+ box-shadow: 0 0 0;
2898
+ border-radius: 0;
2899
+ }
2900
+ .imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label {
2901
+ background: #F6F7FB;
2902
+ }
2903
+
2904
+ .imagify-2-free {
2905
+ position: absolute;
2906
+ bottom: 100%; left: 0; right: 0;
2907
+ padding: 2px 10px;
2908
+ margin-bottom: 8px;
2909
+ font-size: 0.8em;
2910
+ letter-spacing: 0;
2911
+ text-transform: none;
2912
+ text-align: center;
2913
+ color: #FFF;
2914
+ background: #10121A;
2915
+ border-radius: 2px;
2916
+ }
2917
+ .imagify-2-free:after {
2918
+ content: "";
2919
+ position: absolute;
2920
+ left: 50%; bottom: -3px;
2921
+ margin-left: -3px;
2922
+ border-top: 3px solid #10121A;
2923
+ border-left: 3px solid transparent;
2924
+ border-right: 3px solid transparent;
2925
+ }
2926
+ /* right position */
2927
+ .imagify-2-free.imagify-b-right {
2928
+ bottom: auto;
2929
+ left: 100%; right: -100%;
2930
+ margin-bottom: 0;
2931
+ margin-left: 8px;
2932
+ }
2933
+ .imagify-2-free.imagify-b-right:after {
2934
+ left: -3px; bottom: auto; top: 50%;
2935
+ margin-top: -3px; margin-left: 0;
2936
+ border-right: 3px solid #10121A;
2937
+ border-top: 3px solid transparent;
2938
+ border-bottom: 3px solid transparent;
2939
+ border-left: 0;
2940
+ }
2941
+
2942
+ /* bottom position */
2943
+ .imagify-2-free.imagify-b-bottom {
2944
+ bottom: -100%;
2945
+ left: 0; right: 0;
2946
+ margin-top: 8px;
2947
+ }
2948
+ .imagify-2-free.imagify-b-bottom:after {
2949
+ top: -3px; bottom: auto;
2950
+ border-bottom: 3px solid #10121A;
2951
+ border-left: 3px solid transparent;
2952
+ border-right: 3px solid transparent;
2953
+ border-top: 0;
2954
+ }
2955
+
2956
+
2957
+ .imagify-offer-content {
2958
+ text-align: left;
2959
+ background: #F6F7FB;
2960
+ border-radius: 0 0 4px 4px;
2961
+ -webkit-transition: all .275s;
2962
+ transition: all .275s;
2963
+ }
2964
+ .imagify-offer-onetime .imagify-offer-content {
2965
+ padding: 10px 0;
2966
+ }
2967
+
2968
+ /* Checkboxes adjustment */
2969
+ div.imagify-col-checkbox {
2970
+ position: relative;
2971
+ width: 35.5%;
2972
+ padding-top: 10px;
2973
+ padding-bottom: 7px;
2974
+ }
2975
+ .imagify-col-checkbox label {
2976
+ display: block;
2977
+ }
2978
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked),
2979
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked {
2980
+ position: absolute;
2981
+ top: 50%; left: 6px;
2982
+ margin: -8px 0 0 0;
2983
+ }
2984
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked) + label:before,
2985
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked + label:before {
2986
+ margin: 0;
2987
+ top: -3px;
2988
+ left: 6px;
2989
+ -webkit-transition: all .275s;
2990
+ transition: all .275s;
2991
+ }
2992
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked) + label:after,
2993
+ .imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked + label:after {
2994
+ top: 0;
2995
+ left: 13px;
2996
+ }
2997
+ .imagify-col-checkbox label {
2998
+ padding-left: 55px!important;
2999
+ }
3000
+
3001
+ /* Offer col */
3002
+ .imagify-offer-size {
3003
+ font-size: 30px;
3004
+ color: #2E3243;
3005
+ font-weight: bold;
3006
+ -webkit-transition: all .275s;
3007
+ transition: all .275s;
3008
+ }
3009
+ .imagify-offer-by {
3010
+ font-size: 10px;
3011
+ -webkit-transition: all .275s;
3012
+ transition: all .275s;
3013
+ }
3014
+ .imagify-approx {
3015
+ display: block;
3016
+ font-size: 11px;
3017
+ line-height: 1.2;
3018
+ -webkit-transition: all .275s;
3019
+ transition: all .275s;
3020
+ }
3021
+
3022
+ div.imagify-col-price {
3023
+ width: 30%;
3024
+ }
3025
+ .imagify-flex-table .imagify-price-block {
3026
+ padding-left: 0;
3027
+ padding-right: 0;
3028
+ }
3029
+ .imagify-flex-table .imagify-price-complement {
3030
+ padding-right: 0;
3031
+ font-size: 10px;
3032
+ font-weight: bold;
3033
+ }
3034
+ .imagify-price-block span {
3035
+ display: inline-block;
3036
+ vertical-align: middle;
3037
+ }
3038
+ span.imagify-dollars {
3039
+ color: #1F2332;
3040
+ font-size: 18px;
3041
+ font-weight: bold;
3042
+ vertical-align: -2px;
3043
+ }
3044
+ .imagify-offer-onetime .imagify-col-price {
3045
+ padding-top: 0;
3046
+ }
3047
+ .imagify-offer-onetime .imagify-dollars {
3048
+ vertical-align: -7px;
3049
+ }
3050
+ .imagify-price-big,
3051
+ .imagify-price-mini {
3052
+ color: #40B1D0;
3053
+ font-weight: bold;
3054
+ }
3055
+ .imagify-price-big {
3056
+ font-size: 36px;
3057
+ }
3058
+ span.imagify-price-mini {
3059
+ font-size: 18px;
3060
+ vertical-align: 2px;
3061
+ }
3062
+ span.imagify-price-by {
3063
+ font-size: 10px;
3064
+ color: #1F2332;
3065
+ vertical-align: -13px;
3066
+ text-indent: -27px;
3067
+ }
3068
+
3069
+ .imagify-col-other-actions {
3070
+ width: 18.5%;
3071
+ text-align: right;
3072
+ }
3073
+ .imagify-col-other-actions a {
3074
+ font-size: 11px;
3075
+ }
3076
+
3077
+ /* Offer selected */
3078
+ .imagify-offer-selected,
3079
+ .imagify-offer-selected .imagify-offer-title,
3080
+ .imagify-offer-selected .imagify-offer-size,
3081
+ .imagify-offer-selected .imagify-price-big,
3082
+ .imagify-offer-selected .imagify-price-mini,
3083
+ .imagify-offer-selected .imagify-price-complement,
3084
+ .imagify-offer-selected .imagify-col-other-actions a {
3085
+ color: #FFF;
3086
+ }
3087
+ .imagify-offer-selected .imagify-offer-header,
3088
+ .imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label {
3089
+ background: #338EA6;
3090
+ }
3091
+ .imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label {
3092
+ background: #40B1D0;
3093
+ }
3094
+ .imagify-offer-selected .imagify-offer-content {
3095
+ background: #40B1D0;
3096
+ }
3097
+ .imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked) + label:before,
3098
+ .imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked + label:before {
3099
+ border-color: #FFF;
3100
+ background: #40B1D0;
3101
+ }
3102
+ .imagify-offer-selected .imagify-offer-by {
3103
+ color: #2E3243;
3104
+ }
3105
+
3106
+ .imagify-submit-line {
3107
+ margin: 2em 0;
3108
+ }
3109
+ .imagify-submit-line button {
3110
+ font-size: 16px;
3111
+ }
3112
+
3113
+ .imagify-footer-lines {
3114
+ width: 500px;
3115
+ max-width: 100%;
3116
+ margin: 2em auto 1em;
3117
+ font-size: 0.85em;
3118
+ line-height: 1.6;
3119
+ }
3120
+
3121
+ /* Year selected */
3122
+ .imagify-year-selected .imagify-switch-my .imagify-yearly {
3123
+ display: block;
3124
+ }
3125
+ .imagify-year-selected .imagify-switch-my .imagify-monthly {
3126
+ display: none;
3127
+ }
3128
+ /* Month selected */
3129
+ .imagify-month-selected .imagify-switch-my .imagify-yearly {
3130
+ display: none;
3131
+ }
3132
+ .imagify-month-selected .imagify-switch-my .imagify-monthly {
3133
+ display: block;
3134
+ }
3135
+
3136
+ /* Flexbox table */
3137
+ .imagify-flex-table {
3138
+ -webkit-box-align: center;
3139
+ -webkit-align-items: center;
3140
+ -ms-flex-align: center;
3141
+ align-items: center;
3142
+ }
3143
+ .imagify-flex-table > * {
3144
+ -webkit-box-flex: 1;
3145
+ -webkit-flex-grow: 1;
3146
+ -ms-flex-positive: 1;
3147
+ flex-grow: 1;
3148
+ padding: 7px 15px;
3149
+ }
3150
+
3151
+ /* Pricing table */
3152
+ div.imagify-col-details {
3153
+ width: 22%;
3154
+ padding-left: 25px;
3155
+ }
3156
+ .imagify-col-details p {
3157
+ margin: 0;
3158
+ }
3159
+ .imagify-pricing-table {
3160
+ margin: 0 20px;
3161
+ }
3162
+ .imagify-pricing-table .imagify-offer-line {
3163
+ padding: .6em 0;
3164
+ border: 2px solid #E8EEF0;
3165
+ text-align: left;
3166
+ border-radius: 3px;
3167
+ }
3168
+ .imagify-pricing-table .imagify-offer-line:first-child {
3169
+ margin-top: .75em;
3170
+ }
3171
+ .imagify-pricing-table .imagify-offer-line + .imagify-offer-line {
3172
+ margin-top: -2px;
3173
+ }
3174
+ .imagify-pricing-table .imagify-col-other-actions {
3175
+ width: 20.5%;
3176
+ }
3177
+ .imagify-pricing-table .imagify-approx {
3178
+ margin-left: 0;
3179
+ line-height: 0.5;
3180
+ margin-bottom: 1em;
3181
+ }
3182
+ .imagify-pricing-table .imagify-offer-selected {
3183
+ -webkit-transform: scale(1.03);
3184
+ transform: scale(1.03);
3185
+ background: #40B1D0;
3186
+ border-width: 0;
3187
+ }
3188
+ .imagify-pricing-table .imagify-offer-selected .imagify-approx {
3189
+ color: #FFF;
3190
+ }
3191
+ .imagify-pricing-table .imagify-button-secondary {
3192
+ padding: 3px 20px;
3193
+ box-shadow: none;
3194
+ text-transform: uppercase;
3195
+ font-size: 12px;
3196
+ letter-spacing: 0.025em;
3197
+ }
3198
+ .imagify-offer-selected.imagify-offer-selected .imagify-button-secondary {
3199
+ border: 2px solid #FFF;
3200
+ background: #40B1D0;
3201
+ box-shadow: none;
3202
+ text-shadow: none!important;
3203
+ }
3204
+ .imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:hover,
3205
+ .imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:focus {
3206
+ background: #FFF;
3207
+ color: #40B1D0;
3208
+ }
3209
+
3210
+ .imagify-col .imagify-special-needs {
3211
+ margin-left: 25px;
3212
+ }
3213
+ .imagify-special-needs strong {
3214
+ font-size: 25px;
3215
+ font-weight: bold;
3216
+ color: #40B1D0;
3217
+ }
3218
+ .imagify-special-needs span {
3219
+ display: block;
3220
+ font-size: 12px;
3221
+ margin-top: -.5em;
3222
+ }
3223
+ div.imagify-col-price {
3224
+ position: relative;
3225
+ }
3226
+
3227
+ /* we recommend line */
3228
+ .imagify-recommend {
3229
+ display: none;
3230
+ position: absolute;
3231
+ left: -20px; bottom: 100%;
3232
+ padding: 0;
3233
+ margin-bottom: 8px;
3234
+ color: #1F2332;
3235
+ font-weight: bold;
3236
+ font-style: italic;
3237
+ }
3238
+ .imagify-offer-selected .imagify-recommend {
3239
+ display: block;
3240
+ }
3241
+ [class*="imagify-onetime-"] .imagify-recommend {
3242
+ left: 65px;
3243
+ margin-bottom: 20px;
3244
+ }
3245
+ .imagify-recommend:before {
3246
+ content: "";
3247
+ position: absolute;
3248
+ top: 7px; left: -35px;
3249
+ width: 29px; height: 30px;
3250
+ background: url("../images/icon-arrow-choice.png") scroll 0 no-repeat;
3251
+ background-size: contain;
3252
+ }
3253
+ @media only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
3254
+ .imagify-recommend:before {
3255
+ background-image: url("../images/icon-arrow-choice.svg");
3256
+ }
3257
+ }
3258
+
3259
+ /* One Time Adjustments */
3260
+ .imagify-offer-line[class*="imagify-onetime-"] {
3261
+ padding: 0;
3262
+ margin: .3em 0 0;
3263
+ }
3264
+ .imagify-offer-line.imagify-offer-line[class*="imagify-onetime-"]:first-child {
3265
+ margin-top: 2em;
3266
+ }
3267
+ .imagify-offer-line[class*="imagify-onetime-"] + .imagify-offer-line {
3268
+ margin-top: .5em;
3269
+ }
3270
+ .imagify-offer-selected.imagify-offer-line[class*="imagify-onetime-"] {
3271
+ -webkit-transform: scale(1);
3272
+ transform: scale(1);
3273
+ border-width: 2px;
3274
+ }
3275
+
3276
+ /* cols */
3277
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details {
3278
+ position: relative;
3279
+ overflow: hidden;
3280
+ width: 21%;
3281
+ background: #1F2332;
3282
+ color: #FFF;
3283
+ }
3284
+ .imagify-offer-selected.imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details {
3285
+ background: #338EA6;
3286
+ }
3287
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details:before {
3288
+ content: "";
3289
+ position: absolute;
3290
+ bottom: 0; right: 25px;
3291
+ width: 75px; height: 54px;
3292
+ background: url("../images/icon-pack.png");
3293
+ }
3294
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-col-other-actions {
3295
+ width: 30%;
3296
+ }
3297
+
3298
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-offer-size,
3299
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-approx {
3300
+ color: #FFF;
3301
+ }
3302
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-offer-size {
3303
+ font-size: 24px;
3304
+ }
3305
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-approx {
3306
+ font-size: 12px;
3307
+ }
3308
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-price-block {
3309
+ padding-left: 10px;
3310
+ }
3311
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-dollars {
3312
+ vertical-align: middle;
3313
+ }
3314
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-price-big {
3315
+ vertical-align: -5px;
3316
+ }
3317
+ .imagify-offer-line[class*="imagify-onetime-"] .imagify-price-mini {
3318
+ vertical-align: 7px;
3319
+ }
3320
+
3321
+ /* Simple Tabs*/
3322
+ .imagify-tabs {
3323
+ margin-bottom: 0;
3324
+ list-style: none;
3325
+ background: #E5EBEF;
3326
+ }
3327
+ .imagify-modal-content .imagify-tabs {
3328
+ margin: 1em 0 0;
3329
+ }
3330
+ .imagify-tab {
3331
+ -webkit-box-flex: 1;
3332
+ -webkit-flex-grow: 1;
3333
+ -ms-flex-positive: 1;
3334
+ flex-grow: 1;
3335
+ width: 50%;
3336
+ margin: 0;
3337
+ font-size: 23px;
3338
+ }
3339
+ .imagify-tab a {
3340
+ display: block;
3341
+ padding: 15px 10px;
3342
+ color: inherit;
3343
+ text-decoration: none;
3344
+ }
3345
+ .imagify-tab a:focus {
3346
+ box-shadow: none;
3347
+ outline: none;
3348
+ color: #40B1D8;
3349
+ }
3350
+ .imagify-tab.imagify-current a {
3351
+ background: #F6F7FB;
3352
+ }
3353
+ .imagify-tab-content.imagify-current {
3354
+ display: block;
3355
+ }
3356
+ .imagify-tab-content {
3357
+ display: none;
3358
+ }
3359
+ .imagify-tab-content .imagify-modal-section:first-child {
3360
+ margin-top: 0;
3361
+ }
3362
+
3363
+ /* Modal sidebar */
3364
+ .imagify-modal-sidebar-content,
3365
+ .imagify-payment-modal .imagify-modal-sidebar {
3366
+ display: -webkit-box;
3367
+ display: -webkit-flex;
3368
+ display: -ms-flexbox;
3369
+ display: flex;
3370
+ -webkit-box-orient: vertical;
3371
+ -webkit-box-direction: normal;
3372
+ -webkit-flex-direction: column;
3373
+ -ms-flex-direction: column;
3374
+ flex-direction: column;
3375
+ }
3376
+ .imagify-modal-sidebar-content {
3377
+ -webkit-box-flex: 1;
3378
+ -webkit-flex-grow: 1;
3379
+ -ms-flex-positive: 1;
3380
+ flex-grow: 1;
3381
+ }
3382
+ p.imagify-modal-sidebar-title {
3383
+ margin-top: 5px;
3384
+ padding-right: 40px;
3385
+ font-size: 18px;
3386
+ color: #FFF;
3387
+ }
3388
+ .imagify-modal-testimony {
3389
+ margin-top: 1em;
3390
+ }
3391
+ .imagify-modal-testimony + .imagify-modal-testimony {
3392
+ margin-top: 2em;
3393
+ }
3394
+ @media (max-height:620px) {
3395
+ .imagify-modal-testimony + .imagify-modal-testimony {
3396
+ display: none;
3397
+ }
3398
+ }
3399
+ .imagify-modal-testimony-person {
3400
+ display: table;
3401
+ width: 100%;
3402
+ }
3403
+ .imagify-modal-testimony-person > * {
3404
+ display: table-cell;
3405
+ vertical-align: middle;
3406
+ }
3407
+ .imagify-modal-avatar {
3408
+ width: 114px;
3409
+ line-height: 0;
3410
+ }
3411
+ .imagify-modal-avatar img {
3412
+ border: 2px solid #FFF;
3413
+ border-radius: 50%;
3414
+ width: 96px; height: 96px;
3415
+ }
3416
+ .imagify-modal-identity a {
3417
+ text-decoration: none;
3418
+ font-weight: bold;
3419
+ }
3420
+ .imagify-modal-identity a:first-child {
3421
+ font-size: 13px;
3422
+ }
3423
+ .imagify-modal-identity a:first-child + a {
3424
+ display: block;
3425
+ font-size: 10px;
3426
+ color: #7A8996;
3427
+ }
3428
+ .imagify-modal-testimony-content p {
3429
+ font-size: 13px;
3430
+ font-style: italic;
3431
+ line-height: 1.7;
3432
+ color: #7A8996;
3433
+ }
3434
+ .imagify-modal-sidebar-trust {
3435
+ margin-top: auto;
3436
+ padding-top: 1.5em;
3437
+ }
3438
+ .imagify-modal-sidebar-trust p {
3439
+ margin: 0;
3440
+ font-weight: bold;
3441
+ font-size: 12px;
3442
+ line-height: 1.7;
3443
+ }
3444
+ .imagify-modal-sidebar-trust p img {
3445
+ margin-right: 3px;
3446
+ vertical-align: -2px;
3447
+ }
3448
+ .imagify-modal-sidebar-trust p + p {
3449
+ font-size: 11px;
3450
+ }
3451
+
3452
+ /* Cart */
3453
+ .imagify-cart {
3454
+ text-align: left;
3455
+ }
3456
+ .imagify-cart .imagify-cart-list {
3457
+ border-top: 1px solid rgba(122, 137, 150, .2);
3458
+ border-bottom: 1px solid rgba(122, 137, 150, .2);
3459
+ }
3460
+ .imagify-cart .imagify-cart-label {
3461
+ margin-bottom: 0.5em;
3462
+ font-size: 10px;
3463
+ color: #2E3243;
3464
+ }
3465
+ .imagify-cart-list p {
3466
+ margin: 0;
3467
+ font-weight: bold;
3468
+ }
3469
+ .imagify-cart-item {
3470
+ margin: .4em 0;
3471
+ }
3472
+ .imagify-cart .imagify-cart-suggestion {
3473
+ margin-top: -.3em;
3474
+ }
3475
+ .imagify-cart-suggestion a,
3476
+ .imagify-cl-description p {
3477
+ font-size: 10px;
3478
+ }
3479
+ .imagify-remove-from-cart {
3480
+ border: 0;
3481
+ padding: 0;
3482
+ width: 14px;
3483
+ height: 14px;
3484
+ line-height: 13px;
3485
+ border-radius: 50%;
3486
+ background: #40B1D0;
3487
+ cursor: pointer;
3488
+ transition: background .3s;
3489
+ }
3490
+ .imagify-remove-from-cart i:before {
3491
+ position: relative;
3492
+ top: -6px; left: -3px;
3493
+ font-size: 13px;
3494
+ color: #FFF;
3495
+ }
3496
+ .imagify-remove-from-cart:hover,
3497
+ .imagify-remove-from-cart:focus {
3498
+ background: #D0021B;
3499
+ }
3500
+
3501
+ /* col sizes */
3502
+ .imagify-cart .imagify-cl-remove {
3503
+ -webkit-box-flex: 0;
3504
+ -webkit-flex-grow: 0;
3505
+ -ms-flex-positive: 0;
3506
+ flex-grow: 0;
3507
+ width: 45px;
3508
+ }
3509
+ .imagify-cart .imagify-cl-name {
3510
+ -webkit-box-flex: 0;
3511
+ -webkit-flex-grow: 0;
3512
+ -ms-flex-positive: 0;
3513
+ flex-grow: 0;
3514
+ width: 200px;
3515
+ }
3516
+ .imagify-cart .imagify-cl-description {
3517
+ -webkit-align-self: flex-start;
3518
+ -ms-flex-item-align: start;
3519
+ align-self: flex-start;
3520
+ padding-top: 10px;
3521
+ }
3522
+ .imagify-cart .imagify-cl-price {
3523
+ text-align: right;
3524
+ }
3525
+
3526
+ #imagify-payment-iframe {
3527
+ width: 100%;
3528
+ height: 375px;
3529
+ margin-top: 1em;
3530
+ background: #f6f7fb url(../images/loader-balls.svg) 50% 175px no-repeat;
3531
+ }
3532
+
3533
+ .imagify-success-view {
3534
+ display: -webkit-box;
3535
+ display: -webkit-flex;
3536
+ display: -ms-flexbox;
3537
+ display: flex;
3538
+ -webkit-box-align: center;
3539
+ -webkit-align-items: center;
3540
+ -ms-flex-align: center;
3541
+ align-items: center;
3542
+ -webkit-box-orient: vertical;
3543
+ -webkit-box-direction: normal;
3544
+ -webkit-flex-direction: column;
3545
+ -ms-flex-direction: column;
3546
+ flex-direction: column;
3547
+ -webkit-box-pack: center;
3548
+ -webkit-justify-content: center;
3549
+ -ms-flex-pack: center;
3550
+ justify-content: center;
3551
+ height: 100%;
3552
+ }
3553
+ .imagify-success-view p {
3554
+ font-weight: bold;
3555
+ font-size: 16px;
3556
+ }
3557
+
3558
+ /* Imagify cart item removing */
3559
+ .imagify-cart-emptied-item {
3560
+ margin: .3em auto;
3561
+ padding: 6px 20px;
3562
+ background: #E6EBEF;
3563
+ border-radius: 20px;
3564
+ }
3565
+ .imagify-cart-emptied-item.imagify-cart-emptied-item p {
3566
+ font-weight: bold;
3567
+ }
3568
+ .imagify-cart-emptied-item a {
3569
+ color: #40b1d0;
3570
+ float: right;
3571
+ font-weight: bold;
3572
  }
assets/css/admin.min.css CHANGED
@@ -1 +1 @@
1
- body.imagify-modal-is-open{overflow:hidden}.imagify-plugins-error{overflow:hidden;padding-left:20px;list-style-type:disc}.imagify-plugins-error li{width:300px;line-height:30px}@media (max-width:570px){.imagify-plugins-error li{width:auto}}.imagify-notice-dismiss.notice-dismiss{text-decoration:none}.imagify-spinner{display:inline-block;width:20px;height:20px;margin-right:5px;vertical-align:middle;background:rgba(0,0,0,0) url("../images/spinner.gif") no-repeat scroll 0 0 / 20px 20px;opacity:0.7}.spinner.imagify-hidden{width:0;margin:4px 0 0 0}.misc-pub-section.misc-pub-imagify h4{font-size:14px;margin-top:5px;margin-bottom:0}.imagify-sweet-alert button{margin-top:17px !important;height:45px !important;letter-spacing:3px;text-transform:uppercase !important;border-radius:3px !important;background-color:#40b1d0 !important;box-shadow:0 3px 0 #338ea6 !important}.imagify-sweet-alert button.cancel{background:#777 !important;box-shadow:0 3px 0 #444 !important}.imagify-sweet-alert-signup .sa-confirm-button-container{width:40%}.imagify-sweet-alert-signup button{width:100%;padding:0 !important}.imagify-sweet-alert .sa-input-error:before,.imagify-sweet-alert .sa-input-error:after,.imagify-sweet-alert .la-ball-fall{top:25% !important}#wpwrap{transition:all .4s}.stop-scrolling #wpwrap{filter:blur(2px)}.stop-scrolling #wpwrap #wpadminbar{top:-32px}.imagify-primary{color:#40b1d0}.imagify-secondary{color:#8cc152}#imagify-check-api-container{font-weight:bold}#imagify-check-api-container .dashicons{font-size:25px}#imagify-check-api-container .dashicons-no:before{color:#f06e57;vertical-align:-1px}#imagify-check-api-container .dashicons-yes:before{color:#8BC34A;vertical-align:-1px}.imagify-valid{color:#8BC34A}.imagify-chart{width:33.33%;position:relative}#imagify-overview-chart-legend{overflow:hidden}.imagify-doughnut-legend{margin-top:38px;list-style:none}.imagify-doughnut-legend li{display:block;padding-left:30px;position:relative;margin-bottom:15px;border-radius:5px;padding:3px 8px 2px 31px;font-size:14px;font-weight:600;cursor:default;-webkit-transition:background-color 200ms ease-in-out;-moz-transition:background-color 200ms ease-in-out;-o-transition:background-color 200ms ease-in-out;transition:background-color 200ms ease-in-out}.imagify-doughnut-legend li span{display:block;position:absolute;left:0;top:0;width:25px;height:25px;border-radius:50%}.imagify-chart{float:left;margin-bottom:20px}td .imagify-chart{float:none;margin-bottom:0}.imagify-chart-container{position:relative;width:180px;float:left;margin-right:40px}td .imagify-chart-container{width:18px;height:18px;float:none;margin-right:10px}td .imagify-chart{top:4px}.imagify-chart-percent{position:absolute;left:0;right:0;top:50%;margin-top:-14px;text-align:center;font-size:55px;font-weight:bold;color:#46B1CE}.imagify-chart-percent span{font-size:20px;vertical-align:super}.media_page_imagify-bulk-optimization .notice,.settings_page_imagify .notice{margin-right:20px;margin-left:2px}.media_page_imagify-bulk-optimization .media-item{margin:0}.media_page_imagify-bulk-optimization .media-item .progress{float:none;width:100%;margin:0;background:#1F2331;box-shadow:0;border-radius:0}.media_page_imagify-bulk-optimization .media-item .percent{width:auto;padding:0 5px;line-height:1.85;font-size:12px}.media_page_imagify-bulk-optimization .media-item .progress,.media_page_imagify-bulk-optimization .media-item .percent{text-align:right}.media_page_imagify-bulk-optimization .media-item .progress .bar{width:1px;height:22px;margin-top:0;background:#46B1CE;border-radius:0;overflow:visible;-webkit-transition:width .5s;transition:width .5s}.imagify-settings a,.imagify-settings .button,.imagify-settings input,.imagify-welcome a,.imagify-welcome .button,.imagify-weolcome input{-webkit-transition:all .275s;transition:all .275s}.imagify-settings a{color:#40b1d0}.imagify-options-title{padding-bottom:.5em;border-bottom:3px solid #F2F2F2;font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:0.025em;color:#40b1d0}.imagify-settings,.imagify-settings p,.imagify-settings th{color:#5F758E}@media (max-width:782px){.imagify-settings .form-table th{padding-top:2em;padding-bottom:.5em}}.imagify-settings .form-table td{vertical-align:top}.imagify-settings .form-table th span{cursor:pointer}.imagify-middle th{padding-top:35px}.imagify-settings .button,.imagify-welcome .button,.imagify-notice .button,.imagify-button-primary.imagify-button-primary{height:auto;padding:8px 20px;border:0 none;font-size:14px;font-weight:600;box-shadow:0 3px 0 rgba(0,0,0,.15)}.imagify-notice .button-mini{padding:2px 10px;font-size:13px}.button-primary.button-mini{padding:2px 10px}.imagify-settings .button.button-mini-flat{padding:3px 6px 5px;font-size:12px;box-shadow:none!important;line-height:1.2}.imagify-settings .button.button-mini-flat:hover,.imagify-settings .button.button-mini-flat:focus{box-shadow:none!important}.imagify-title .button-ghost.button-ghost{padding:2px 9px;border:1px solid #40B1D0;font-size:12px;font-weight:normal;color:#40B1D0;background:transparent}.imagify-title .button-ghost.button-ghost:hover,.imagify-title .button-ghost.button-ghost:focus{border-color:transparent;color:#000;background:#40B1D0}.button .dashicons{margin-right:5px;vertical-align:middle}.imagify-settings .button-primary.button-primary,.imagify-welcome .button-primary.button-primary,.imagify-button-primary.imagify-button-primary{background:#40B1D0;color:#FFF;box-shadow:0 3px 0 rgba(51,142,166,1);text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799!important}.imagify-settings .button-primary:hover,.imagify-settings .button-primary:focus,.imagify-welcome .button-primary:hover,.imagify-welcome .button-primary:focus,.imagify-button-primary.imagify-button-primary:hover,.imagify-button-primary.imagify-button-primary:focus{background:rgb(51,142,166);box-shadow:0 3px 0 rgb(31,122,146)}.wp_attachment_image .imagify-button-primary,.media-frame-content .imagify-button-primary{float:left;padding:0 10px 1px;margin:0 5px 2px 0;font-size:13px;line-height:26px;box-shadow:0 3px 0 rgba(51,142,166,1)}.imagify-settings input[type="text"]{color:#4A4A4A;font-weight:600;box-shadow:none}.imagify-settings p.submit .button-primary{margin-left:240px}@media (max-width:850px){.imagify-settings p.submit .button-primary{margin-left:0px}.imagify-settings p.submit{text-align:center}}.imagify-title.imagify-title{position:relative;padding:30px 50px;font-size:23px;background:#2E3243;color:#FFF}.imagify-settings .imagify-title+.imagify-notice{margin:0;border-right:1px solid #D9D9D9;padding-top:15px;padding-bottom:15px}.imagify-logo{vertical-align:top}.imagify-sub-header,.imagify-sub-title.imagify-sub-title,.imagify-settings div.submit{margin:0;padding:20px;background:#F2F5F7}.imagify-bulk-info{margin:1em 1em 1em 240px;transition:margin .3s}@media (max-width:850px){.imagify-bulk-info{margin:1em}}.imagify-bulk-info p{display:inline-block;text-align:left;width:400px;max-width:100%;font-weight:bold}@media (min-width:1500px){.imagify-settings div.submit{display:table;width:100%}.imagify-settings div.submit >*{display:table-cell;vertical-align:middle}.imagify-bulk-info{padding:0 25px;text-align:right}}.imagify-settings div.submit{margin-top:2em;padding:20px 0}.imagify-sub-header th{text-align:right}.imagify-sub-header .form-table{margin:0}.imagify-sub-header th,.imagify-sub-header td{padding-top:0;padding-bottom:0}[for="api_key"]{padding-top:5px}.imagify-notice .imagify-rate-us.imagify-rate-us{position:relative;bottom:0;right:0;text-align:left}.imagify-notice .imagify-rate-us .stars{margin:0}.imagify-rate-us.imagify-rate-us{position:absolute;bottom:50%;right:20px;text-align:right;margin-bottom:-2.4em;color:#FFF}.imagify-rate-us a{color:#40B1D0}.imagify-rate-us .stars{display:inline-block;margin:2px 0 0 10px;text-decoration:none;letter-spacing:.2em;vertical-align:-1px}.imagify-rate-us .stars .dashicons:before{font-size:18px}.imagify-rate-us a:hover,.imagify-rate-us a:focus{color:#FEE102}@media (max-width:1220px){.imagify-rate-us.imagify-rate-us{position:static;margin-bottom:0;text-align:left}.imagify-rate-us.imagify-rate-us br{display:none}.imagify-rate-us .stars{display:block;margin-left:0}}.imagify-rkt-notice.imagify-rkt-notice{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:10px 45px 10px 0;border:0 none;box-shadow:none;color:#FFF;background:#412355}.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:2px;margin-right:20px}@media (max-width:782px){.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:0;margin-right:12px}}.imagify-rkt-notice .imagify-cross{position:absolute;right:8px;top:50%;width:22px;height:22px;padding:0;margin-top:-11px;background:transparent;color:#FD7300;border-radius:50%;transition:all .275s}.imagify-rkt-notice .imagify-cross .dashicons{position:relative;top:2px;left:1px;transition:all .275s}.imagify-rkt-notice .imagify-cross:hover{background:#FFF}.imagify-rkt-notice .imagify-cross:hover .dashicons{color:#412355}.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo,.imagify-rkt-notice .imagify-rkt-coupon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.imagify-rkt-notice .imagify-rkt-logo{width:150px!important;text-align:center;padding:0 25px 0 30px;line-height:0.8}.imagify-rkt-notice .imagify-rkt-msg{width:100%!important;padding:0 15px;font-size:14px;line-height:1.6}.imagify-rkt-notice .imagify-rkt-coupon{width:150px!important;padding:0 15px}.imagify-rkt-notice .imagify-rkt-coupon-code{padding:5px 10px;font-size:23px;font-weight:bold;border:1px dashed #F7A933;color:#F7A933}.imagify-rkt-notice .imagify-rkt-cta{width:200px!important;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px;}.imagify-rkt-notice .button.button{position:relative;top:-1px;height:auto;font-weight:600;font-size:14px;box-shadow:0 4px 0 #B27A27;border:0 none;padding:9px 18px 9px;background:#F7A933;text-shadow:1px 1px 1px rgba(0,0,0,.2)}@media (max-width:880px){.imagify-rkt-notice{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.imagify-rkt-notice .imagify-rkt-msg,.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo{text-align:left;padding:5px 15px}.imagify-cross.imagify-cross{top:8px;margin-top:0}.imagify-rkt-notice .imagify-cross .dashicons{top:1px}}.imagify-settings-section{padding:10px 20px}[id="imagify-settings"],.imagify-welcome .imagify-settings-section{border:1px solid #D9D9D9;border-top:0 none;background:#FFF}.imagify-br{line-height:2}.imagify-important{color:#F5A623}.imagify-info,.imagify-info a{color:#40B1D0;font-size:12px}.imagify-info{position:relative;display:inline-block;padding-left:25px;vertical-align:top}.imagify-info .dashicons{position:absolute;left:0;top:-1px}label+.imagify-info,label+.imagify-options-line,.imagify-visual-label{display:inline-block;max-width:70%;margin-left:15px;margin-top:2px!important;-webkit-transition:opacity .3s;transition:opacity .3s}.imagify-visual-label{vertical-align:-5px}label[for="imagify_sizes_full"]+.imagify-info{vertical-align:middle}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked)+label+.imagify-options-line,.imagify-settings.imagify-settings [type="checkbox"]:not(:checked)+label .imagify-visual-label{opacity:.5}.imagify-settings.imagify-settings [type="checkbox"]:checked+label+.imagify-options-line,.imagify-settings.imagify-settings [type="checkbox"]:checked+label .imagify-visual-label{opacity:1}.imagify-checkbox-marged{max-width:500px;margin-left:45px}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked),.imagify-settings.imagify-settings [type="checkbox"]:checked{opacity:0.01}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked):focus,.imagify-settings.imagify-settings [type="checkbox"]:checked:focus{box-shadow:none!important;outline:none!important;border:0 none!important}.imagify-settings [type="checkbox"]:not(:checked)+label,.imagify-settings [type="checkbox"]:checked+label{position:relative;padding-left:6px;cursor:pointer;vertical-align:top}.imagify-settings [type="checkbox"]:not(:checked)+label:before,.imagify-settings [type="checkbox"]:checked+label:before{content:'';position:absolute;left:0;top:0;width:28px;height:28px;margin:0 0 0 -24px;border:2px solid #8BA6B4;background:#FFF;border-radius:4px}.imagify-settings [type="checkbox"]:not(:checked)+label:after,.imagify-settings [type="checkbox"]:checked+label:after{content:"✓";position:absolute;font-size:1.4em;top:3px;left:-16px;-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;transition:all .2s}.imagify-settings [type="checkbox"][disabled]:not(:checked)+label:before,.imagify-settings [type="checkbox"][disabled]:checked+label:before{border-color:#ccc;background:#ddd}.imagify-settings [type="checkbox"]:not(:checked)+label:after{opacity:0;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.imagify-settings [type="checkbox"]:checked+label:after{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}input[id^="imagify_sizes_"]:checked+label{font-weight:bold}.imagify-settings .mini[type="checkbox"]:not(:checked)+label:before,.imagify-settings .mini[type="checkbox"]:checked+label:before{width:15px;height:15px;border-width:1px;border-radius:2px;margin-top:0}.imagify-settings .mini[type="checkbox"]:not(:checked)+label:after,.imagify-settings .mini[type="checkbox"]:checked+label:after{content:"✓";font-size:.9em;left:-21px;top:1px}.imagify-settings [type="checkbox"]:not(:checked):focus+label:before,.imagify-settings [type="checkbox"]:checked:focus+label:before{border-style:dotted;border-color:#40b1d0}.imagify-inline-options{position:relative;display:table;width:100%;max-width:600px;border-collapse:collapse}.imagify-inline-options:after{content:"";display:table;clear:both}.imagify-inline-options input[type="radio"]:not(:checked),.imagify-inline-options input[type="radio"]:checked{position:absolute;left:5px;top:5px;display:none}.imagify-inline-options input[type="radio"]:not(:checked)+label,.imagify-inline-options input[type="radio"]:checked+label{position:relative;display:table-cell;padding:13px 10px;text-align:center;font-weight:600;font-size:16px;text-transform:uppercase;letter-spacing:0.1em;color:#FFF;background:#2E3243;border-left:1px solid rgba(255,255,255,0.2);box-shadow:0 -3px 0 rgba(0,0,0,0.1) inset,inset -1px 0 0 rgba(255,255,255,0.2);z-index:2;-webkit-transition:all .275s;transition:all .275s}.imagify-bulk-submit .imagify-inline-options input[type="radio"]:not(:checked)+label,.imagify-bulk-submit .imagify-inline-options input[type="radio"]:checked+label{margin-bottom:1.75em}.imagify-inline-options input[type="radio"]:not(:checked)+label:first-of-type,.imagify-inline-options input[type="radio"]:checked+label:first-of-type{border-radius:3px 0 0 3px}.imagify-inline-options input[type="radio"]:not(:checked)+label:last-of-type,.imagify-inline-options input[type="radio"]:checked+label:last-of-type{border-radius:0 3px 3px 0}.imagify-inline-options input[type="radio"]:checked+label{background:#8BC34A}.imagify-inline-options .imagify-info{margin-top:15px}.imagify-btn-info{display:block;font-size:0.7em;letter-spacing:0;line-height:1;text-transform:none}#describe-resize-larger input{width:5em}.imagify-col{overflow:hidden}.imagify-sidebar{float:right;width:280px;margin-left:25px}.imagify-sidebar-section{border:1px solid #BBB;background:#FFF}.imagify-sidebar-section+.imagify-sidebar-section{margin-top:2em}@media (max-width:760px){.imagify-settings{display:flex;flex-direction:column}.imagify-sidebar{order:2;float:none;width:auto;margin-left:0;margin-top:25px}.wp-media-products{text-align:center}.wp-media-products li{display:inline-block;width:100%;max-width:276px}}.imagify-sidebar-title{display:block;padding:20px 15px;border-bottom:1px solid #BBB;font-size:14px;font-weight:bold;color:#23282d;background:#F2F5F7}.imagify-sidebar-title img{vertical-align:top;margin-right:5px}.imagify-sidebar .wp-media-products{margin-top:0;margin-bottom:-.5em}.imagify-sidebar .wp-media-products .links{display:block;padding:85px 25px 24px;text-align:center;background-color:#2E3243;background-size:contain;background-repeat:no-repeat;background-position:50% 0;text-decoration:none}.imagify-sidebar .wp-media-products .links p{margin:1.5em auto;color:#FFF}.imagify-sidebar .wp-media-products .wprocket-link{background-image:linear-gradient(to bottom,rgba(59,30,78,0),rgba(59,30,78,0) 130px,rgba(59,30,78,1) 210px),url("../images/sidebar-wp-rocket.jpg");background-color:#3B1E4E;background-repeat:repeat-x,no-repeat}.imagify-sidebar-content{padding:10px 20px}.imagify-mark-styled{display:inline-block;padding:1px 2px 1px 4px;line-height:1.3;font-weight:bold;background:#F7A933;transform-origine:50% 50%;transform:rotateZ(-2deg) rotateX(-10deg) skewX(-2deg) skewY(-3deg);text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.imagify-mark-styled span{display:inline-block;transform:rotateZ(2deg) rotateX(10deg) skewX(2deg) skewY(3deg)}.imagify-discount-code{margin:0.35em 0 .5em;display:block;font-size:2em;letter-spacing:.05em;font-weight:bold;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.imagify-big-text{font-size:15px;font-weight:bold}.imagify-big-text strong{font-size:20px}a.btn-rocket{display:block;font-size:1.15em;padding:12px;background:#F7A933;box-shadow:0 3px 0 #D69626;border-radius:3px;color:#FFF;text-transform:uppercase;font-weight:bold;text-shadow:1px 1px 0 rgba(0,0,0,0.2);text-decoration:none}a.btn-rocket:hover,a.btn-rocket:focus{background:darkorange;box-shadow:0 3px 0 darkorange}.imagify-welcome{margin:30px 20px 0 0}.imagify-welcome .baseline{display:inline-block;margin:.2em 0 0 2em;font-size:17px}.imagify-welcome .imagify-logo{vertical-align:middle}.imagify-welcome-remove{position:absolute;top:50%;right:15px;margin-top:-8px;color:#FFF;text-decoration:none}.imagify-columns{overflow:hidden;padding:15px 0;counter-reset:cols}.imagify-columns [class^="col-"]{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.imagify-columns .col-1-3{width:33.333%;padding-left:28px}.imagify-columns .col-1-2{width:50%;padding:0 20px}.imagify-columns .col-informations{width:41.6%;padding-right:30px}.imagify-columns .col-statistics{width:25%}@media (max-width:830px){.imagify-columns [class^="col-"]{float:none;margin-bottom:1.5em}.imagify-columns .col-1-3,.imagify-columns .col-1-2{width:auto;padding:0 28px;clear:both;padding-top:1em}}.imagify-columns [class^="col-"] img{float:left;margin-right:18px}.imagify-col-content{overflow:hidden}.imagify-col-title{margin:0 0 15px 0;font-size:23px}.counter .imagify-col-title:before{counter-increment:cols;content:counter(cols) ". ";color:#40B1D0}.imagify-col-desc{color:#5F758E;margin-bottom:2em}.imagify-notice.imagify-notice{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0;margin:10px 20px 10px 2px;border:0 none;background:#2E3243;box-shadow:none;color:#FFF}@media (max-width:782px){.imagify-notice.imagify-notice,.imagify-welcome{margin-right:12px}}@media (max-width:450px){.imagify-notice.imagify-notice{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column; -ms-flex-direction:column; flex-direction:column}}.wrap .imagify-notice{margin:5px 15px 2px;position:relative}.imagify-notice-logo{padding:18px 23px;background:#40B1D0}.updated .imagify-notice-logo{background:#8BC34A}.error .imagify-notice-logo{background:#D0021B}.imagify-notice-title{font-size:15px}.imagify-notice-content{padding:5px 23px}.imagify-notice-content.imagify-notice-content p{margin:0.65em 0}.imagify-notice a{color:#40B1D0}.imagify-notice a:hover,.imagify-notice a:focus{color:#FEE102}.imagify-notice code{background:rgba(0,0,0,0.4) none repeat scroll 0 0}.column-imagify_optimized_file.column-imagify_optimized_file{width:300px;text-align:center;vertical-align:middle}.column-imagify_optimized_file >*{max-width:235px;margin:0 auto}ul.imagify-datas-list.imagify-datas-list{margin:0 auto;color:#555;font-size:10px}.compat-field-imagify .label{vertical-align:top}.compat-field-imagify ul.imagify-datas-list{margin-top:7px;font-size:11px}ul.imagify-datas-list .big{font-size:12px;color:#40B1D0}.imagify-data-item{overflow:hidden}.imagify-data-item .imagify-chart{display:inline-block;top:1px;width:20px;vertical-align:middle;margin-bottom:0}li.imagify-data-item{clear:both;margin-bottom:2px}ul.imagify-datas-list .imagify-data-item span.data,ul.imagify-datas-list .imagify-data-item strong{float:left;width:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.imagify-datas-list .imagify-data-item span.data{text-align:left;padding-right:5px}.compat-field-imagify .imagify-datas-list .imagify-data-item .data{width:130px;text-align:left;font-weight:bold}.media-sidebar .imagify-datas-list .imagify-data-item .data{width:auto;float:none}ul.imagify-datas-list .imagify-data-item strong{text-align:left;padding-left:5px}.media-sidebar .imagify-datas-list .imagify-data-item strong{width:auto;float:none}.imagify-datas-more-action.imagify-datas-more-action{margin:.4em auto;background:linear-gradient(to bottom,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent)}.imagify-datas-more-action a{display:inline-block;padding:0 5px;background:#40B1D0;color:#FFF;text-transform:uppercase;font-size:9px;font-weight:bold;line-height:1.9;text-decoration:none}.imagify-datas-more-action a.is-open{background:#555}.imagify-datas-more-action a.is-open .dashicons{transform:rotate(180deg)}.imagify-datas-more-action a .dashicons{font-size:14px;vertical-align:middle;line-height:.8}.imagify-datas-more-action a .dashicons:before{vertical-align:middle;line-height:20px}.imagify-datas-more-action .the-text{display:inline-block;vertical-align:middle;height:20px;line-height:20px}ul.imagify-datas-details.imagify-datas-details{margin:.7em auto}.imagify-datas-details strong{color:#40B1D0}.imagify-datas-details .original{color:#555}.imagify-datas-actions-links{overflow:hidden;border-top:2px solid transparent;padding-top:5px;font-size:8px}.imagify-datas-actions-links a{position:relative;display:inline-block;padding-left:17px;text-decoration:none;font-weight:600}.compat-field-imagify .imagify-datas-actions-links{max-width:300px}.misc-pub-imagify .imagify-datas-actions-links{border-top:2px solid #f2f2f2;padding-bottom:5px}.compat-field-imagify .imagify-datas-actions-links a,.misc-pub-imagify .imagify-datas-actions-links a{font-size:10px;float:left;width:50%}.media-sidebar .compat-field-imagify .imagify-datas-actions-links a,.submitbox .misc-pub-imagify .imagify-datas-actions-links a{display:block;width:auto;float:none}.column-imagify_optimized_file .imagify-datas-actions-links a{margin:0 .7em;padding-left:15px}.imagify-datas-actions-links a:only-child{float:none;width:auto}.imagify-datas-details.is-open+.imagify-datas-actions-links{border-top-color:rgba(0,0,0,.075)}.imagify-datas-actions-links .dashicons{position:absolute;left:0;top:4px;width:12px;margin-right:2px;font-size:11px}.imagify-title >h1{padding:0}.imagify-title-right{display:table;float:right;margin-top:-10px}.imagify-title-right p{margin:0}.imagify-title-right a{font-weight:bold;text-decoration:none}.imagify-title-right >div{display:table-cell;vertical-align:middle}.imagify-title-right .dashicons-arrow-down-alt2{vertical-align:-4px;margin-left:2px}@media (max-width:1200px){.imagify-bulk .imagify-title{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.imagify-title-right{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2;margin-top:20px}}.imagify-account,.imagify-account-link{padding-right:15px}.imagify-sep-v{width:1px;background:rgba(255,255,255,.2)}.imagify-credit-left{position:relative;min-width:280px;padding-left:15px}.imagify-meteo-icon{display:inline-block;height:38px;vertical-align:middle;margin-right:10px}.imagify-user-plan{color:#40b1d0}@media (max-width:630px){.imagify-title-right{display:block;width:auto}.imagify-title-right >div{display:block;width:auto;margin-top:10px;max-width:100%}.imagify-credit-left{padding-left:0}}.imagify-meteo-title.imagify-meteo-title{color:#FFF;font-size:17px}.imagify-space-left{display:inline-block;min-height:38px;min-width:245px;vertical-align:middle}.imagify-space-left >p{color:#FFF}[class^="imagify-bar-"],#wp-admin-bar-imagify-profile [class^="imagify-bar-"]{position:relative;height:15px;width:100%;background:#60758D;color:#FFF;font-size:10px}.base-transparent{background:transparent}[class^="imagify-bar-"].right-outside-number{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:45px}.right-outside-number .imagify-barnb{display:block;margin-right:-45px;text-align:right;font-weight:bold;line-height:15px}.imagify-progress-value,#wp-admin-bar-imagify-profile .imagify-progress-value{position:absolute;top:0;right:0;left:0;bottom:0;text-align:center;line-height:13px;font-weight:bold}.imagify-progress,#wp-admin-bar-imagify-profile .imagify-progress{height:15px}.imagify-bar-positive .imagify-progress{background:#8CC152}.imagify-bar-positive .imagify-barnb{color:#8CC152}.imagify-bar-negative .imagify-progress{background:#73818C}.imagify-bar-negative .imagify-barnb{color:#73818C}.imagify-bar-neutral .imagify-progress{background:#F5A623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#D0021B}#wpadminbar #wp-admin-bar-imagify-profile *{line-height:1.5;white-space:initial}#wpadminbar #wp-admin-bar-imagify .ab-submenu{padding-bottom:0}#wpadminbar #wp-admin-bar-imagify-profile .ab-item{height:auto;padding:0 13px}#wpadminbar #wp-admin-bar-imagify-profile{min-width:200px;padding:15px 0 10px;margin-top:0.7em;background:#222}#wp-admin-bar-imagify .dashicons{font-family:"dashicons";font-size:18px;vertical-align:middle;margin:0 5px 0 0}#wp-admin-bar-imagify .button-text{display:inline-block;vertical-align:middle}#wp-admin-bar-imagify .imagify-abq-row{display:table;width:100%}#wp-admin-bar-imagify .imagify-abq-row+.imagify-abq-row{margin-top:.75em}#wp-admin-bar-imagify .imagify-abq-row >*{display:table-cell}#wp-admin-bar-imagify-profile .imagify-meteo-icon{padding-right:7px}#wp-admin-bar-imagify-profile .imagify-meteo-icon img{width:37px}#wp-admin-bar-imagify-profile .imagify-meteo-title{font-size:17px}#wp-admin-bar-imagify-profile .imagify-meteo-subs{color:#72889F}#wpadminbar #wp-admin-bar-imagify-profile strong{font-weight:bold}#wpadminbar #wp-admin-bar-imagify-profile .imagify-user-plan,#wpadminbar #wp-admin-bar-imagify-profile a{padding:0;color:#40B1D0}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link{display:table}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link >* {display:table-cell}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left{max-width:210px;min-width:210px;width:210px}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left p{font-size:12px}#wp-admin-bar-imagify-profile .imagify-error,#wp-admin-bar-imagify-profile .imagify-warning{padding:10px;margin:0 -13px -13px}#wp-admin-bar-imagify-profile .imagify-error p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p{margin-top:.5em}#wp-admin-bar-imagify-profile .imagify-error p+p+p,#wp-admin-bar-imagify-profile .imagify-warning p+p+p{margin-top:1em}.btn-ghost,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #FFF;text-align:center;background:transparent;color:#FFF;border-radius:3px;transition:all .275s}.btn-ghost:hover,.btn-ghost:focus,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost:hover,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost:focus{background:#FFF;color:#888}.txt-center{text-align:center}.imagify-list-dash li{position:relative;padding-left:24px}.imagify-list-dash li:before{content:"";position:absolute;left:0;top:9px;height:1px;width:12px;background:#5f758e}.imagify-sub-title.imagify-sub-title{font-size:23px;background:#FFF;color:#2E3243;border-left:1px solid #D9D9D9;border-right:1px solid #D9D9D9;font-weight:lighter}.imagify-sub-title .icon-bulk{margin-right:10px;vertical-align:middle}.imagify-sub-title .title-text{display:inline-block;line-height:1;vertical-align:middle}.imagify-bulk .imagify-settings-section{border:1px solid #D9D9D9;border-top:0;background:#F2F5F7;color:#4A4A4A}.imagify-bulk .imagify-settings-section p,.imagify-bulk .imagify-settings-section li,.imagify-bulk .imagify-settings-section h3{color:#4A4A4A}.imagify-bulk .imagify-settings-section h3{margin-bottom:2em}.imagify-bulk-submit{margin-top:4em}#imagify-bulk-action{float:left}#imagify-bulk-action+.imagify-tooltips{overflow:hidden;display:block}.imagify-title .imagify-tooltips{position:absolute;top:100%;left:0}.imagify-tooltips .icon-round{float:left;display:inline-block;width:28px;height:28px;border:1px solid #FFF;margin-right:8px;margin-bottom:8px;font-size:17px;font-style:italic;line-height:29px;font-weight:bold;text-align:center;border-radius:50%}.imagify-tooltips .tooltip-content{display:block;position:relative;max-width:250px;padding:7px 15px 8px;background:#2e3242;color:#FFF;font-size:10px;border-radius:3px}.imagify-tooltips.right .tooltip-content{margin-left:12px}.imagify-tooltips.bottom .tooltip-content{margin-top:4px}.imagify-inline-options label .tooltip-content{position:absolute;left:0;right:0;top:100%;text-transform:none;font-size:10px;letter-spacing:0;text-align:center}.imagify-tooltips .tooltip-content:after{content:"";position:absolute}.imagify-tooltips.right .tooltip-content:after{top:16px;left:-6px;border-right:8px solid #2e3242;border-top:6px solid transparent;border-bottom:6px solid transparent}.imagify-tooltips.bottom .tooltip-content:after{top:-5px;left:50%;margin-left:-3px;border-bottom:6px solid #2e3242;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-space-tooltips .tooltip-content{max-width:280px;margin-top:20px;margin-left:0;padding:5px 15px 5px;font-size:13px;background:#40B1D0;box-shadow:0 3px 0 #338EA6}.imagify-space-tooltips .tooltip-content:after{top:-14px;left:50%;margin-left:-7px;border:0 none;border-bottom:15px solid #40B1D0;border-left:15px solid transparent;border-right:15px solid transparent}.tooltip-content.tooltip-table{display:table;width:100%}.tooltip-content.tooltip-table >*{display:table-cell;vertical-align:middle}.tooltip-content .cell-icon{width:28px}.tooltip-content .cell-icon .icon{margin-bottom:0}.tooltip-content .cell-text{padding:5px 10px 5px 0;line-height:1.3}.tooltip-content .cell-sep{width:1px;background:rgba(255,255,255,.4)}.tooltip-content .cell-cta{padding-left:10px}.tooltip-content .cell-cta a{display:block;color:#FFF;width:100%;height:100%;white-space:nowrap}.imagify-number-you-optimized .number{display:table-cell;padding-right:15px;font-size:36px;font-weight:bold;line-height:1.1;vertical-align:middle}.imagify-number-you-optimized .text{display:table-cell;vertical-align:middle;overflow:hidden;font-size:12px}.imagify-number-you-optimized .text br{display:none}.imagify-number-you-optimized >p{display:table}.imagify-number-you-optimized{padding-bottom:0.85em;margin-bottom:1.35em;overflow:hidden;border-bottom:1px solid rgba(0,0,0,0.05)}.imagify-bars p{font-weight:bold;font-size:12px;margin-bottom:0}.imagify-bars+.imagify-number-you-optimized{border-bottom:0;padding-top:0.85em}.imagify-bars+.imagify-number-you-optimized p{color:#46b1ce}.imagify-bulk-table{margin-top:2em;max-height:600px;max-height:60vh;overflow:auto}.imagify-bulk-table table{width:100%;border-spacing:0;border-collapse:collapse;border:1px solid #D3D3D3}.imagify-bulk-table td{padding:8px 15px}.imagify-bulk-table thead tr,.imagify-bulk-table thead th{background:#2E3242}.imagify-bulk-table tfoot tr,.imagify-bulk-table tfoot th{background:#73818C}.imagify-bulk-table thead th{padding:14px 15px;text-align:left;color:#F2F5F7;font-weight:bold;font-size:14px}.imagify-bulk-table tfoot td{padding:14px 15px;color:#F9FAFA}.imagify-bulk-table tbody tr,.imagify-bulk-table tbody td{background:#FFF}.imagify-bulk-table tbody tr:nth-child(odd),.imagify-bulk-table tbody tr:nth-child(odd) td{background:#F2F5F7}.imagify-bulk-table .imagify-row-progress{display:none}.imagify-bulk-table .imagify-row-progress,.imagify-bulk-table .imagify-row-progress td{height:15px;padding:0}.imagify-bulk-table .imagify-no-uploaded-yet td{height:200px;font-size:17px;letter-spacing:.1em;word-spacing:.12em;vertical-align:middle;text-transform:uppercase;font-weight:bold;text-align:center;color:#999;background-color:#FFF}.imagify-row-complete{padding:35px 20px;margin-top:2em;background:#8BC34A;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,.1)}.imagify-row-complete .imagify-ac-chart{margin-top:3px}.imagify-row-complete p{color:#FFF;margin:0}@-webkit-keyframes congrate{ 0%{opacity:0;-webkit-transform:scale(1)} 50%{-webkit-transform:scale(1.05);opacity:1} 100%{-webkit-transform:scale(1);opacity:1}}​@keyframes congrate{ 0%{opacity:0;transform:scale(1)} 50%{transform:scale(1.05);opacity:1} 100%{transform:scale(1);opacity:1}}.imagify-row-complete.done{-webkit-animation:congrate 500ms ease-in-out;animation:congrate 500ms ease-in-out}.imagify-all-complete{margin:1.5em 0}.imagify-all-complete >div{display:inline-block;vertical-align:middle}.imagify-ac-report{min-width:310px}.imagify-ac-chart{width:46px;height:46px;float:left;margin:0 20px 0 10px}.imagify-ac-report-text{overflow:hidden}.imagify-ac-report-text p{line-height:1.3}.imagify-ac-rt-big{font-weight:bold;font-size:24px;letter-spacing:0.15em;word-spacing:0.15em;text-transform:uppercase}.imagify-ac-share{text-align:right}.imagify-ac-share-content{display:inline-block;padding:10px 15px;background:rgba(255,255,255,.2)}.imagify-ac-share-content >*{display:inline-block;vertical-align:middle}.imagify-bulk-table .imagify-ac-share-content p{margin-right:5px}.imagify-share-networks,.imagify-share-networks li{margin:0}.imagify-share-networks li{display:inline-block}.imagify-share-networks a{display:inline-block;vertical-align:-7px;margin:0 5px;text-decoration:none;color:#FFF}.imagify-cell-filename{max-width:200px}.imagify-cell-status{max-width:145px}.imagify-cell-status .dashicons-warning{margin-right:2px}.imagify-cell-thumbnails{max-width:120px}td.imagify-cell-filename{text-overflow:clip;white-space:nowrap;overflow:hidden}.imagify-bulk-table td.imagify-cell-totaloriginal{padding-right:78px}.imagiuploaded,.imagifilename{display:inline-block;vertical-align:middle}.imagifilename{font-size:12px}.imagiuploaded{width:33px;height:33px;margin-right:5px;margin-left:-8px;overflow:hidden;background:url(../images/upload-image.png) 0 0 no-repeat;background-size:cover}.imagiuploaded img{max-widht:100%;height:auto}.imagistatus{color:#8CA6B3;text-transform:uppercase;font-weight:bold}.status-compressing{color:#46B1CE}.status-error{color:#CE0B24}.status-warning{color:#f5a623}.status-complete{color:#8CC152}.imagify-error{background:#D0021B;color:#FFF}.imagify-warning,#wpadminbar .imagify-warning *{background:#f5a623;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,0.2)}.imagify-bulk-table .imagify-cell-thumbnails{text-align:center}.imagify-cell-percentage,.imagify-cell-savings{color:#46B1CE;font-weight:bold}.imagify-cell-optimized{font-weight:bold}.imagify-cell-totaloriginal{text-align:right}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}.dashicons-admin-generic{transform-origin:48.75% 51.75%}.imagify-modal{display:flex;flex-direction:column;align-items:center;justify-content:center}.js .imagify-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#1F2332;background-color:rgba(31,35,50,.95);z-index:99999}.imagify-modal-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;width:800px;max-width:95%;max-height:90vw;overflow:auto;padding:20px 25px;margin:1em auto;background:#FFF;box-shadow:1px 1px 4px rgba(0,0,0,.7);border-radius:3px}#imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{max-width:1400px;background:transparent;padding:5px;box-shadow:none;border-radius:0}.imagify-modal .h2{margin:.5em 0;color:#8ba6b4;font-weight:normal;font-size:24px;letter-spacing:0.075em;text-align:center}.imagify-modal .h3{color:#40b1d0;font-weight:normal;font-size:18px;letter-spacing:0.075em;text-align:center}.text-justify{text-align:justify}.imagify-modal .close-btn{display:none;visibility:hidden;position:absolute;right:20px;top:20px;font-size:1.2em;border:0;background:transparent none;border-radius:0;cursor:pointer}.imagify-modal .close-btn i{margin-left:-2px}.imagify-modal .close-btn:hover,.imagify-modal .close-btn:focus{color:#40b1d0}.js .imagify-modal .close-btn{display:block;visibility:visible}#imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:50px;right:5px;width:33px;height:33px;padding:1px 0 0 2px;border:1px solid #F2F2F2;color:#F2F2F2;line-height:19px;text-align:center;border-radius:50%}.wp_attachment_image #imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:0}.wp_attachment_image #imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{padding-top:40px}.imagify-modal .imagify-comparison-title{font-size:28px;margin-bottom:1em;color:#F2F2F2;text-align:left}.imagify-modal .imagify-comparison-title .twentytwenty-duo-buttons{position:static;margin:0 10px 0 15px}.imagify-comparison-title .twentytwenty-duo-buttons button{float:none;padding:6px 12px;font-size:16px;text-transform:none;border:1px solid #40B1D0;color:#889;letter-spacing:0}.imagify-comparison-title .twentytwenty-duo-buttons button:focus{outline:none;box-shadow:none}.imagify-comparison-title .twentytwenty-duo-buttons .selected{border:1px solid #40B1D0;color:#FFF;background:#40B1D0}.imagify-comparison-levels{margin:15px 0;overflow:hidden}.imagify-comparison-levels div{display:none;min-width:175px;font-size:11px}.imagify-comparison-levels .imagify-chart,.imagify-comparison-levels .imagify-chart-container{width:25px;float:none;margin:0}.imagify-visual-comparison .imagify-chart-container canvas{width:15px!important;height:15px!important;margin-right:5px}.imagify-c-level.go-left{float:left}.imagify-c-level.go-right{float:right}.imagify-c-level.go-right,.imagify-c-level.go-left{display:table}.imagify-c-level .imagify-c-level-row{display:table-row;margin:0;color:#FFF}.imagify-c-level-row >span{display:table-cell;padding:2px 0}.imagify-c-level-row .value{text-align:right;padding-left:5px}.imagify-c-level-row .value.level{color:#40b1d0}.imagify-c-level-row .value.size{color:#8bc34a;font-weight:bold}.imagify-c-level-row .value .imagify-chart{top:1px}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.imagify-menu-bar-img{margin-top:1em}.imagify-modal .loader{position:absolute;top:50%;left:50%;margin:-32px 0 0 -32px;opacity:0;visibility:hidden;transition:opacity .4s}.imagify-modal .loading .loader{visibility:visible;opacity:1}.imagify-settings .imagify-visual-comparison-text{margin-top:1em;color:#40b1d0;font-weight:bold}
1
+ .imagify-start{float:left}.imagify-end{float:right}.imagify-txt-start.imagify-txt-start.imagify-txt-start{text-align:left}.imagify-txt-center.imagify-txt-center.imagify-txt-center{text-align:center}.imagify-txt-end.imagify-txt-end.imagify-txt-end{text-align:right}.imagify-mt1.imagify-mt1{margin-top:1em}.imagify-mb1.imagify-mb1{margin-bottom:1em}.imagify-mr1.imagify-mr1{margin-right:1em}.imagify-ml2.imagify-ml2{margin-left:2em}.imagify-mr2.imagify-mr2{margin-right:2em}.imagify-pl0.imagify-pl0.imagify-pl0{padding-left:0}.imagify-pr1.imagify-pr1{padding-right:1em}.imagify-oh{overflow:hidden}.imagify-clear{clear:both}.imagify-clearfix:after,.imagify-inline-options:after{content:"";display:table;clear:both}.imagify-count.imagify-count{counter-reset:num}.imagify-count .imagify-count-title{font-weight:bold}.imagify-default-settings{color:#73818c;font-weight:normal}.imagify-count .imagify-count-title:before{counter-increment:num 1;content:counter(num) ". "}.imagify-table{display:table;width:100%}.imagify-cell{display:table-cell;padding:10px;vertical-align:top}.imagify-cell.va-top,.va-top .imagify-cell{vertical-align:top}.imagify-bulk-submit .imagify-cell{padding-top:0}body.imagify-modal-is-open{overflow:hidden}.imagify-plugins-error{overflow:hidden;padding-left:20px;list-style-type:disc}.imagify-plugins-error li{width:300px;line-height:30px}@media (max-width:570px){.imagify-plugins-error li{width:auto}}.imagify-notice-dismiss.notice-dismiss{text-decoration:none}.imagify-spinner{display:inline-block;width:20px;height:20px;margin-right:5px;vertical-align:middle;background:rgba(0,0,0,0) url("../images/spinner.gif") no-repeat scroll 0 0 / 20px 20px;opacity:0.7}.spinner.imagify-hidden{width:0;margin:4px 0 0 0}.misc-pub-section.misc-pub-imagify h4{font-size:14px;margin-top:5px;margin-bottom:0}.imagify-sweet-alert button{margin-top:17px !important;height:45px !important;letter-spacing:3px;text-transform:uppercase !important;border-radius:3px !important;background-color:#40b1d0 !important;box-shadow:0 3px 0 #338ea6 !important}.imagify-sweet-alert button.cancel{background:#777 !important;box-shadow:0 3px 0 #444 !important}.imagify-sweet-alert-signup .sa-confirm-button-container{width:40%}.imagify-sweet-alert-signup button{width:100%;padding:0 !important}.imagify-sweet-alert .sa-input-error:before,.imagify-sweet-alert .sa-input-error:after,.imagify-sweet-alert .la-ball-fall{top:25% !important}#wpwrap{transition:all .4s}.stop-scrolling #wpwrap{filter:blur(2px)}.stop-scrolling #wpwrap #wpadminbar{top:-32px}.imagify-primary.imagify-primary.imagify-primary{color:#40b1d0}.imagify-secondary.imagify-secondary.imagify-secondary{color:#8cc152}#imagify-check-api-container{font-weight:bold}#imagify-check-api-container .dashicons{font-size:25px}#imagify-check-api-container .dashicons-no:before{color:#f06e57;vertical-align:-1px}#imagify-check-api-container .dashicons-yes:before{color:#8BC34A;vertical-align:-1px}.imagify-valid{color:#8BC34A}.imagify-chart{width:33.33%;position:relative}#imagify-overview-chart-legend{overflow:hidden}.imagify-doughnut-legend{margin-top:38px;list-style:none}.imagify-doughnut-legend li{display:block;padding-left:30px;position:relative;margin-bottom:15px;border-radius:5px;padding:3px 8px 2px 31px;font-size:14px;font-weight:600;cursor:default;-webkit-transition:background-color 200ms ease-in-out;-moz-transition:background-color 200ms ease-in-out;-o-transition:background-color 200ms ease-in-out;transition:background-color 200ms ease-in-out}.imagify-doughnut-legend li span{display:block;position:absolute;left:0;top:0;width:25px;height:25px;border-radius:50%}.imagify-chart{float:left;margin-bottom:20px}td .imagify-chart{float:none;margin-bottom:0}.imagify-chart-container{position:relative;width:180px;float:left;margin-right:20px}.imagify-global-optim-phrase{width:180px;padding-top:20px;font-size:14px;font-weight:bold;text-align:center}.imagify-total-percent{color:#46b1ce}td .imagify-chart-container{width:18px;height:18px;float:none;margin-right:10px}td .imagify-chart{top:4px}.imagify-chart-percent{position:absolute;left:0;right:0;top:50%;margin-top:-14px;text-align:center;font-size:55px;font-weight:bold;color:#46B1CE}.imagify-chart-percent span{font-size:20px;vertical-align:super}.media_page_imagify-bulk-optimization .notice,body[class*="_imagify-ngg-bulk-optimization"] .notice,.settings_page_imagify .notice{margin-right:20px;margin-left:2px}.media_page_imagify-bulk-optimization .media-item,body[class*="_imagify-ngg-bulk-optimization"] .media-item{margin:0}.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress{float:none;width:100%;margin:0;background:#1F2331;box-shadow:0;border-radius:0}.media_page_imagify-bulk-optimization .media-item .percent,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent{width:auto;padding:0 5px;line-height:1.85;font-size:12px}.media_page_imagify-bulk-optimization .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress,body[class*="_imagify-ngg-bulk-optimization"] .media-item .percent,.media_page_imagify-bulk-optimization .media-item .percent{text-align:right}.media_page_imagify-bulk-optimization .media-item .progress .bar,body[class*="_imagify-ngg-bulk-optimization"] .media-item .progress .bar{width:1px;height:22px;margin-top:0;background:#46B1CE;border-radius:0;overflow:visible;-webkit-transition:width .5s;transition:width .5s}.imagify-settings a,.imagify-settings .button,.imagify-settings input,.imagify-welcome a,.imagify-welcome .button,.imagify-weolcome input{-webkit-transition:all .275s;transition:all .275s}.imagify-settings a{color:#40b1d0}.imagify-options-title{padding-bottom:.5em;border-bottom:3px solid #F2F2F2;font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:0.025em;color:#40b1d0}.imagify-settings,.imagify-settings p,.imagify-settings th{color:#5F758E}@media (max-width:782px){.imagify-settings .form-table th{padding-top:2em;padding-bottom:.5em}}.imagify-settings .form-table td{vertical-align:top}.imagify-settings .form-table th span{cursor:pointer}.imagify-middle th{padding-top:35px}.imagify-settings .button,.imagify-welcome .button,.imagify-notice .button,.imagify-button.imagify-button,.imagify-button-primary.imagify-button-primary,.imagify-button-secondary.imagify-button-secondary{height:auto;padding:8px 20px;border:0 none;font-size:14px;font-weight:600;box-shadow:0 3px 0 rgba(0,0,0,.15);border-radius:3px;cursor:pointer;transition:all .275s}.imagify-notice .button-mini{padding:2px 10px;font-size:13px}.button-primary.button-mini{padding:2px 10px}.imagify-settings .button.button-mini-flat{padding:3px 6px 5px;font-size:12px;box-shadow:none!important;line-height:1.2}.imagify-settings .button.button-mini-flat:hover,.imagify-settings .button.button-mini-flat:focus{box-shadow:none!important}.imagify-title .button-ghost.button-ghost,.imagify-button-ghost.imagify-button-ghost{padding:2px 9px;border:1px solid #40B1D0;font-size:12px;font-weight:normal;color:#40B1D0;background:transparent;box-shadow:none}.imagify-title .button-ghost.button-ghost:hover,.imagify-title .button-ghost.button-ghost:focus,.imagify-button-ghost.imagify-button-ghost:hover,.imagify-button-ghost.imagify-button-ghost:focus{border-color:transparent;color:#000;background:#40B1D0}.imagify-button-ghost.imagify-button-ghost:hover,.imagify-button-ghost.imagify-button-ghost:focus{color:#FFF}.imagify-button-medium.imagify-button-medium{text-transform:uppercase;letter-spacing:0.1em;padding:3px 10px;font-weight:bold}.imagify-button-medium.imagify-button-ghost{border-width:2px}.button .dashicons{margin-right:5px;vertical-align:middle}.imagify-settings .button-primary.button-primary,.imagify-welcome .button-primary.button-primary,.imagify-button-primary.imagify-button-primary{background:#40B1D0;color:#FFF;box-shadow:0 3px 0 rgba(51,142,166,1);text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799!important}.imagify-button-secondary.imagify-button-secondary{background:#8BC34A;color:#FFF;box-shadow:0 3px 0 #6F9C3B;text-shadow:0 -1px 1px #6F9C3B,1px 0 1px #6F9C3B,0 1px 1px #6F9C3B!important}.imagify-settings .button-primary:hover,.imagify-settings .button-primary:focus,.imagify-welcome .button-primary:hover,.imagify-welcome .button-primary:focus,.imagify-button-primary.imagify-button-primary:hover,.imagify-button-primary.imagify-button-primary:focus{background:rgb(51,142,166);box-shadow:0 3px 0 rgb(31,122,146)}.imagify-button-secondary.imagify-button-secondary:hover,.imagify-button-secondary.imagify-button-secondary:focus{background:#6F9C3B;color:#FFF}.imagify-button-light.imagify-button-light{background:#FFF;color:#4a4a4a;box-shadow:0 2px 0 rgba(0,0,0,.2)}.imagify-button-light.imagify-button-light:hover,.imagify-button-light.imagify-button-light:focus{color:#FFF;background:rgba(0,0,0,.2)}.imagify-section-positive .imagify-button-light{color:#709A41}.imagify-button.imagify-button-big{font-size:15px;padding:11px 30px}.imagify-button-big .dashicons{font-size:1.45em;margin-right:6px;margin-left:-4px}.imagify-settings .button .dashicons,.imagify-welcome .button .dashicons,.imagify-notice .button .dashicons,.imagify-button.imagify-button .dashicons,.imagify-button-primary.imagify-button-primary .dashicons,.imagify-button-secondary.imagify-button-secondary .dashicons{vertical-align:middle}.button-text{display:inline-block;vertical-align:middle}#imagify-bulk-action{padding:11px 20px}.wp_attachment_image .imagify-button-primary,.media-frame-content .imagify-button-primary{float:left;padding:0 10px 1px;margin:0 5px 2px 0;font-size:13px;line-height:26px;box-shadow:0 3px 0 rgba(51,142,166,1)}.imagify-settings input[type="text"]{color:#4A4A4A;font-weight:600;box-shadow:none}.imagify-settings div.submit.submit{padding-left:235px;padding-top:40px}.imagify-settings p.submit{float:left;margin-top:0}.imagify-settings p.submit .button{margin:0 5px}@media (max-width:850px){.imagify-settings div.submit{padding-left:0}.imagify-settings p.submit{text-align:center}}.imagify-title.imagify-title{position:relative;padding:30px 50px;font-size:23px;background:#2E3243;color:#FFF}.imagify-settings .imagify-title + .imagify-notice{margin:0;border-right:1px solid #D9D9D9;padding-top:15px;padding-bottom:15px}.imagify-logo{vertical-align:top}.imagify-sub-header,.imagify-sub-title.imagify-sub-title,.imagify-settings div.submit,.imagify-section{margin:0;padding:20px;background:#F2F5F7}.imagify-sub-title.imagify-sub-title,.imagify-section-positive{padding-left:40px}.imagify-section-positive{background:#8cc152;color:#FFF}.imagify-section-positive p{color:#FFF}.imagify-section-gray{background:#D9E4EB}.imagify-section-gray .imagify-count-title{color:#4a4a4a}.imagify-section p:first-child{margin-top:0}.imagify-section p:last-child{margin-bottom:0}p.imagify-section-title.imagify-section-title{font-size:20px;margin-top:-.3em;margin-bottom:-.6em}.imagify-bulk-info{margin:1em 1em 1em 5px;transition:margin .3s}@media (max-width:850px){.imagify-bulk-info{margin:1em}}.imagify-bulk-info p{display:inline-block;text-align:left;width:400px;max-width:100%;font-weight:bold}@media (min-width:1500px){.imagify-settings div.submit{display:table;width:100%}.imagify-settings div.submit > *{display:table-cell;vertical-align:middle}.imagify-bulk-info{padding:0 25px;text-align:right}}.imagify-settings div.submit{margin-top:2em;padding:20px 0}.imagify-sub-header th{text-align:right}.imagify-sub-header .form-table{margin:0}.imagify-sub-header th,.imagify-sub-header td{padding-top:0;padding-bottom:0}[for="api_key"]{padding-top:5px}.imagify-notice .imagify-rate-us.imagify-rate-us{position:relative;bottom:0;right:0;text-align:left}.imagify-notice .imagify-rate-us .stars{margin:0}.imagify-rate-us.imagify-rate-us{position:absolute;bottom:50%;right:20px;text-align:right;margin-bottom:-2.4em;color:#FFF}.imagify-rate-us a{color:#40B1D0}.imagify-rate-us .stars{display:inline-block;margin:2px 0 0 10px;text-decoration:none;letter-spacing:.2em;vertical-align:-1px}.imagify-rate-us .stars .dashicons:before{font-size:18px}.imagify-rate-us a:hover,.imagify-rate-us a:focus{color:#FEE102}@media (max-width:1220px){.imagify-rate-us.imagify-rate-us{position:static;margin-bottom:0;text-align:left}.imagify-rate-us.imagify-rate-us br{display:none}.imagify-rate-us .stars{display:block;margin-left:0}}.imagify-rkt-notice.imagify-rkt-notice{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;padding:10px 45px 10px 0;border:0 none;box-shadow:none;color:#FFF;background:#412355}.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:2px;margin-right:20px}@media (max-width:782px){.media_page_imagify-bulk-optimization .imagify-rkt-notice{margin-left:0;margin-right:12px}}.imagify-rkt-notice .imagify-cross{position:absolute;right:8px;top:50%;width:22px;height:22px;padding:0;margin-top:-11px;background:transparent;color:#FD7300;border-radius:50%;transition:all .275s}.imagify-rkt-notice .imagify-cross .dashicons{position:relative;top:2px;left:1px;transition:all .275s}.imagify-rkt-notice .imagify-cross:hover{background:#FFF}.imagify-rkt-notice .imagify-cross:hover .dashicons{color:#412355}.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo,.imagify-rkt-notice .imagify-rkt-coupon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.imagify-rkt-notice .imagify-rkt-logo{width:150px!important;text-align:center;padding:0 25px 0 30px;line-height:0.8}.imagify-rkt-notice .imagify-rkt-msg{width:100%!important;padding:0 15px;font-size:14px;line-height:1.6}.imagify-rkt-notice .imagify-rkt-coupon{width:150px!important;padding:0 15px}.imagify-rkt-notice .imagify-rkt-coupon-code{padding:5px 10px;font-size:23px;font-weight:bold;border:1px dashed #F7A933;color:#F7A933}.imagify-rkt-notice .imagify-rkt-cta{width:250px!important;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:200px;-ms-flex-preferred-size:200px;flex-basis:200px}.imagify-rkt-notice .button.button{position:relative;top:-1px;height:auto;font-weight:600;font-size:14px;box-shadow:0 4px 0 #B27A27;border:0 none;padding:9px 18px 9px;background:#F7A933;text-shadow:1px 1px 1px rgba(0,0,0,.2)}@media (max-width:880px){.imagify-rkt-notice{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.imagify-rkt-notice .imagify-rkt-msg,.imagify-rkt-notice .imagify-rkt-cta,.imagify-rkt-notice .imagify-rkt-logo{text-align:left;padding:5px 15px}.imagify-cross.imagify-cross{top:8px;margin-top:0}.imagify-rkt-notice .imagify-cross .dashicons{top:1px}}.imagify-settings-section{padding:10px 20px}[id="imagify-settings"],.imagify-welcome .imagify-settings-section{border:1px solid #D9D9D9;border-top:0 none;background:#FFF}.imagify-br{line-height:2}.imagify-important{color:#F5A623}.imagify-info,.imagify-info a{color:#40B1D0;font-size:12px}.imagify-info{position:relative;display:inline-block;padding-left:25px;vertical-align:top}.imagify-info .dashicons{position:absolute;left:0;top:-1px}label + .imagify-info,label + .imagify-options-line,.imagify-visual-label{display:inline-block;max-width:70%;margin-left:15px;margin-top:2px!important;-webkit-transition:opacity .3s;transition:opacity .3s}.imagify-visual-label{vertical-align:-5px}label[for="imagify_sizes_full"] + .imagify-info{vertical-align:middle}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked) + label + .imagify-options-line,.imagify-settings.imagify-settings [type="checkbox"]:not(:checked) + label .imagify-visual-label{opacity:.5}.imagify-settings.imagify-settings [type="checkbox"]:checked + label + .imagify-options-line,.imagify-settings.imagify-settings [type="checkbox"]:checked + label .imagify-visual-label{opacity:1}.imagify-checkbox-marged{max-width:500px;margin-left:45px}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked),.imagify-settings.imagify-settings [type="checkbox"]:checked,.imagify-checkbox.imagify-checkbox:not(:checked),.imagify-checkbox.imagify-checkbox:checked{opacity:0.01}.imagify-settings.imagify-settings [type="checkbox"]:not(:checked):focus,.imagify-settings.imagify-settings [type="checkbox"]:checked:focus,.imagify-checkbox.imagify-checkbox:not(:checked):focus,.imagify-checkbox.imagify-checkbox:checked:focus{box-shadow:none!important;outline:none!important;border:0 none!important}.imagify-settings [type="checkbox"]:not(:checked) + label,.imagify-settings [type="checkbox"]:checked + label,.imagify-checkbox.imagify-checkbox:not(:checked) + label,.imagify-checkbox.imagify-checkbox:checked + label{position:relative;padding-left:6px;cursor:pointer;vertical-align:top}.imagify-settings [type="checkbox"]:not(:checked) + label:before,.imagify-settings [type="checkbox"]:checked + label:before,.imagify-checkbox.imagify-checkbox:not(:checked) + label:before,.imagify-checkbox.imagify-checkbox:checked + label:before{content:'';position:absolute;left:0;top:0;width:28px;height:28px;margin:0 0 0 -24px;border:2px solid #8BA6B4;background:#FFFFFF;border-radius:4px}.imagify-settings [type="checkbox"]:not(:checked) + label:after,.imagify-settings [type="checkbox"]:checked + label:after,.imagify-checkbox.imagify-checkbox:not(:checked) + label:after,.imagify-checkbox.imagify-checkbox:checked + label:after{content:"✓";position:absolute;font-size:1.4em;top:3px;left:-16px;-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;transition:all .2s}.imagify-settings [type="checkbox"][disabled]:not(:checked) + label:before,.imagify-settings [type="checkbox"][disabled]:checked + label:before,.imagify-checkbox.imagify-checkbox[disabled]:not(:checked) + label:before,.imagify-checkbox.imagify-checkbox[disabled]:checked + label:before{border-color:#ccc;background:#ddd}.imagify-settings [type="checkbox"]:not(:checked) + label:after,.imagify-checkbox.imagify-checkbox:not(:checked) + label:after{opacity:0;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.imagify-settings [type="checkbox"]:checked + label:after,.imagify-checkbox.imagify-checkbox:checked + label:after{opacity:1;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}input[id^="imagify_sizes_"]:checked + label{font-weight:bold}.medium.imagify-checkbox:not(:checked) + label:before,.medium.imagify-checkbox:checked + label:before{width:22px;height:22px;border-width:1.5px;border-radius:2px;margin-top:0}.medium.imagify-checkbox:not(:checked) + label:after,.medium.imagify-checkbox:checked + label:after{font-size:1.1em;left:-17px;top:3px}.imagify-settings .mini[type="checkbox"]:not(:checked) + label:before,.imagify-settings .mini[type="checkbox"]:checked + label:before,.mini.imagify-checkbox:not(:checked) + label:before,.mini.imagify-checkbox:checked + label:before{width:15px;height:15px;border-width:1px;border-radius:2px;margin-top:0}.imagify-settings .mini[type="checkbox"]:not(:checked) + label:after,.imagify-settings .mini[type="checkbox"]:checked + label:after,.mini.imagify-checkbox:not(:checked) + label:after,.mini.imagify-checkbox:checked + label:after{font-size:.9em;left:-21px;top:1px}.imagify-settings [type="checkbox"]:not(:checked):focus + label:before,.imagify-settings [type="checkbox"]:checked:focus + label:before,.imagify-checkbox.imagify-checkbox:not(:checked):focus + label:before,.imagify-checkbox.imagify-checkbox:checked:focus + label:before{border-style:dotted;border-color:#40b1d0}.imagify-inline-options{position:relative;display:table;width:100%;max-width:600px;border-collapse:collapse}.imagify-small-options{width:300px;margin:1em auto .5em;background:#338EA6;border-radius:4px}.imagify-inline-options input[type="radio"]:not(:checked),.imagify-inline-options input[type="radio"]:checked{position:absolute;left:5px;top:5px;display:none}.imagify-inline-options input[type="radio"]:not(:checked) + label,.imagify-inline-options input[type="radio"]:checked + label{position:relative;display:table-cell;padding:13px 10px;text-align:center;font-weight:600;font-size:16px;text-transform:uppercase;letter-spacing:0.1em;color:#FFF;background:#2E3243;border-left:1px solid rgba(255,255,255,0.2);box-shadow:0 -3px 0 rgba(0,0,0,0.1) inset,inset -1px 0 0 rgba(255,255,255,0.2);z-index:2;-webkit-transition:all .275s;transition:all .275s}.imagify-small-options input[type="radio"]:not(:checked) + label,.imagify-small-options input[type="radio"]:checked + label{padding:8px 10px;font-size:13px;color:#FFF;box-shadow:none;border-left:0}.imagify-bulk-submit .imagify-inline-options input[type="radio"]:not(:checked) + label,.imagify-bulk-submit .imagify-inline-options input[type="radio"]:checked + label{margin-bottom:1.75em}.imagify-inline-options input[type="radio"]:not(:checked) + label:first-of-type,.imagify-inline-options input[type="radio"]:checked + label:first-of-type{border-radius:3px 0 0 3px}.imagify-inline-options input[type="radio"]:not(:checked) + label:last-of-type,.imagify-inline-options input[type="radio"]:checked + label:last-of-type{border-radius:0 3px 3px 0}.imagify-inline-options input[type="radio"]:checked + label{background:#8BC34A}.imagify-small-options input[type="radio"]:not(:checked) + label{background:#338EA6;color:rgba(255,255,255,.4)}.imagify-small-options input[type="radio"]:checked + label{background:#40B1D0}.imagify-inline-options .imagify-info{margin-top:15px}.imagify-btn-info{display:block;font-size:0.7em;letter-spacing:0;line-height:1;text-transform:none}#describe-resize-larger input{width:5em}.imagify-cols:after{content:"";display:table;clear:both}.imagify-col{float:left;width:50%}.imagify-main{float:left;width:70%}.imagify-sidebar{float:right;width:28%;max-width:300px}.imagify-sidebar-section{border:1px solid #BBB;background:#FFF}.imagify-sidebar-section + .imagify-sidebar-section{margin-top:2em}@media (max-width:820px){.imagify-settings{display:flex;flex-direction:column}.imagify-main{width:auto;float:none}.imagify-sidebar{order:2;float:none;width:auto;max-width:none;margin-left:0;margin-top:25px}.wp-media-products{text-align:center}.wp-media-products li{display:inline-block;width:100%;max-width:276px}}@media (min-width:1400px){.imagify-main{width:74%}}.imagify-sidebar-title{display:block;padding:20px 15px;border-bottom:1px solid #BBB;font-size:14px;font-weight:bold;color:#23282d;background:#F2F5F7}.imagify-sidebar-title img{vertical-align:top;margin-right:5px}.imagify-sidebar .wp-media-products{margin-top:0;margin-bottom:-.5em}.imagify-sidebar .wp-media-products .links{display:block;padding:85px 25px 24px;text-align:center;background-color:#2E3243;background-size:contain;background-repeat:no-repeat;background-position:50% 0;text-decoration:none}.imagify-sidebar .wp-media-products .links p{margin:1.5em auto;color:#FFF}.imagify-sidebar .wp-media-products .wprocket-link{background-image:linear-gradient(to bottom,rgba(59,30,78,0),rgba(59,30,78,0) 130px,rgba(59,30,78,1) 210px),url("../images/sidebar-wp-rocket.jpg");background-color:#3B1E4E;background-repeat:repeat-x,no-repeat}.imagify-sidebar-content{padding:10px 20px}.imagify-mark-styled{display:inline-block;padding:1px 2px 1px 4px;line-height:1.3;font-weight:bold;background:#F7A933;transform-origine:50% 50%;transform:rotateZ(-2deg) rotateX(-10deg) skewX(-2deg) skewY(-3deg);text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.imagify-mark-styled span{display:inline-block;transform:rotateZ(2deg) rotateX(10deg) skewX(2deg) skewY(3deg)}.imagify-discount-code{margin:0.35em 0 .5em;display:block;font-size:2em;letter-spacing:.05em;font-weight:bold;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,0.2)}.imagify-big-text{font-size:15px;font-weight:bold}.imagify-big-text strong{font-size:20px}a.btn-rocket{display:block;font-size:1.15em;padding:12px;background:#F7A933;box-shadow:0 3px 0 #D69626;border-radius:3px;color:#FFF;text-transform:uppercase;font-weight:bold;text-shadow:1px 1px 0 rgba(0,0,0,0.2);text-decoration:none}a.btn-rocket:hover,a.btn-rocket:focus{background:darkorange;box-shadow:0 3px 0 darkorange}.imagify-welcome{margin:30px 20px 0 0}.imagify-welcome .baseline{display:inline-block;margin:.2em 0 0 2em;font-size:17px}.imagify-welcome .imagify-logo{vertical-align:middle}.imagify-welcome-remove{position:absolute;top:50%;right:15px;margin-top:-8px;color:#FFF;text-decoration:none}.imagify-columns{overflow:hidden;padding:15px 0;counter-reset:cols}.imagify-columns [class^="col-"]{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.imagify-columns .col-1-3{width:33.333%;padding-left:28px}.imagify-columns .col-2-3{width:66.666%;padding-left:28px}.imagify-columns .col-1-2{width:50%;padding:0 20px}.imagify-columns .col-overview{padding-left:20px}.imagify-columns .col-informations{width:36.6%;padding-right:30px}.imagify-columns .col-statistics{width:30%}@media (max-width:830px){.imagify-columns [class^="col-"]{float:none;margin-bottom:1.5em}.imagify-columns .col-1-3,.imagify-columns .col-1-2{width:auto;padding:0 28px;clear:both;padding-top:1em}}.imagify-columns [class^="col-"] img{float:left;margin-right:18px}.imagify-col-content{overflow:hidden}.imagify-col-title{margin:0 0 15px 0;font-size:23px}.counter .imagify-col-title:before{counter-increment:cols;content:counter(cols) ". ";color:#40B1D0}.imagify-col-desc{color:#5F758E;margin-bottom:2em}.imagify-notice.imagify-notice{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0;margin:10px 20px 10px 2px;border:0 none;background:#2E3243;box-shadow:none;color:#FFF}@media (max-width:782px){.imagify-notice.imagify-notice,.imagify-welcome{margin-right:12px}}@media (max-width:450px){.imagify-notice.imagify-notice{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}}.wrap .imagify-notice{margin:5px 15px 2px;position:relative}.imagify-notice-logo{padding:18px 23px;background:#40B1D0}.updated .imagify-notice-logo{background:#8BC34A}.error .imagify-notice-logo{background:#D0021B}.imagify-notice-title{font-size:15px}.imagify-notice-content{padding:5px 23px}.imagify-notice-content.imagify-notice-content p{margin:0.65em 0}.imagify-notice a{color:#40B1D0}.imagify-notice a:hover,.imagify-notice a:focus{color:#FEE102}.imagify-notice code{background:rgba(0,0,0,0.4) none repeat scroll 0 0}.column-imagify_optimized_file.column-imagify_optimized_file{width:300px;text-align:center;vertical-align:middle}.column-imagify_optimized_file > *{max-width:235px;margin:0 auto}ul.imagify-datas-list.imagify-datas-list{margin:0 auto;color:#555;font-size:10px}.compat-field-imagify .label{vertical-align:top}.compat-field-imagify ul.imagify-datas-list{margin-top:7px;font-size:11px}ul.imagify-datas-list .big{font-size:12px;color:#40B1D0}.imagify-data-item{overflow:hidden}.imagify-data-item .imagify-chart{display:inline-block;top:1px;width:20px;vertical-align:middle;margin-bottom:0}li.imagify-data-item{clear:both;margin-bottom:2px}ul.imagify-datas-list .imagify-data-item span.data,ul.imagify-datas-list .imagify-data-item strong{float:left;width:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.imagify-datas-list .imagify-data-item span.data{text-align:left;padding-right:5px}.compat-field-imagify .imagify-datas-list .imagify-data-item .data{width:130px;text-align:left;font-weight:bold}.media-sidebar .imagify-datas-list .imagify-data-item .data{width:auto;float:none}ul.imagify-datas-list .imagify-data-item strong{text-align:left;padding-left:5px}.media-sidebar .imagify-datas-list .imagify-data-item strong{width:auto;float:none}.imagify-datas-more-action.imagify-datas-more-action{margin:.4em auto;background:linear-gradient(to bottom,transparent,transparent 49%,rgba(0,0,0,.075) 50%,rgba(0,0,0,.075) 58%,transparent 58%,transparent)}.imagify-datas-more-action a{display:inline-block;padding:0 5px;background:#40B1D0;color:#FFF;text-transform:uppercase;font-size:9px;font-weight:bold;line-height:1.9;text-decoration:none}.imagify-datas-more-action a.is-open{background:#555}.imagify-datas-more-action a.is-open .dashicons{transform:rotate(180deg)}.imagify-datas-more-action a .dashicons{font-size:14px;vertical-align:middle;line-height:.8}.imagify-datas-more-action a .dashicons:before{vertical-align:middle;line-height:20px}.imagify-datas-more-action .the-text{display:inline-block;vertical-align:middle;height:20px;line-height:20px}ul.imagify-datas-details.imagify-datas-details{margin:.7em auto}.imagify-datas-details strong{color:#40B1D0}.imagify-datas-details .original{color:#555}.imagify-datas-actions-links{overflow:hidden;border-top:2px solid transparent;padding-top:5px;font-size:8px}.imagify-datas-actions-links a{position:relative;display:inline-block;padding-left:17px;text-decoration:none;font-weight:600}.compat-field-imagify .imagify-datas-actions-links{max-width:300px}.misc-pub-imagify .imagify-datas-actions-links{border-top:2px solid #f2f2f2;padding-bottom:5px}.compat-field-imagify .imagify-datas-actions-links a,.misc-pub-imagify .imagify-datas-actions-links a{font-size:10px;float:left;width:50%}.media-sidebar .compat-field-imagify .imagify-datas-actions-links a,.submitbox .misc-pub-imagify .imagify-datas-actions-links a{display:block;width:auto;float:none}.column-imagify_optimized_file .imagify-datas-actions-links a{margin:0 .7em;padding-left:15px}.imagify-datas-actions-links a:only-child{float:none;width:auto}.imagify-datas-details.is-open + .imagify-datas-actions-links{border-top-color:rgba(0,0,0,.075)}.imagify-datas-actions-links .dashicons{position:absolute;left:0;top:4px;width:12px;margin-right:2px;font-size:11px}.imagify-title > h1{padding:0}.imagify-title-right{display:table;float:right;margin-top:-10px}.imagify-title-right p{margin:0}.imagify-title-right a{font-weight:bold;text-decoration:none}.imagify-title-right > div{display:table-cell;vertical-align:middle}.imagify-title-right .dashicons-arrow-down-alt2{vertical-align:-4px;margin-left:2px}@media (max-width:1200px){.imagify-bulk .imagify-title{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.imagify-title-right{-webkit-box-ordinal-group:3;-webkit-order:2;-ms-flex-order:2;order:2;margin-top:20px}}.imagify-account,.imagify-account-link{padding-right:15px}.imagify-sep-v{width:1px;background:rgba(255,255,255,.2)}.imagify-credit-left{position:relative;min-width:280px;padding-left:15px}.imagify-meteo-icon{display:inline-block;height:38px;vertical-align:middle;margin-right:10px}.imagify-user-plan{color:#40b1d0}@media (max-width:630px){.imagify-title-right{display:block;width:auto}.imagify-title-right > div{display:block;width:auto;margin-top:10px;max-width:100%}.imagify-credit-left{padding-left:0}}.imagify-meteo-title.imagify-meteo-title{color:#FFF;font-size:17px}.imagify-space-left{display:inline-block;min-height:38px;min-width:245px;vertical-align:middle}.imagify-space-left > p{color:#FFF}[class^="imagify-bar-"],#wp-admin-bar-imagify-profile [class^="imagify-bar-"]{position:relative;height:15px;width:100%;background:#60758D;color:#FFF;font-size:10px}.base-transparent{background:transparent}[class^="imagify-bar-"].right-outside-number{-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:45px}.right-outside-number .imagify-barnb{display:block;margin-right:-45px;text-align:right;font-weight:bold;line-height:15px}.imagify-progress-value,#wp-admin-bar-imagify-profile .imagify-progress-value{position:absolute;top:0;right:0;left:0;bottom:0;text-align:center;line-height:13px;font-weight:bold}.imagify-progress,#wp-admin-bar-imagify-profile .imagify-progress{height:15px}.imagify-bar-positive .imagify-progress{background:#8CC152}.imagify-bar-positive .imagify-barnb{color:#8CC152}.imagify-bar-negative .imagify-progress{background:#73818C}.imagify-bar-negative .imagify-barnb{color:#73818C}.imagify-bar-neutral .imagify-progress{background:#F5A623}.imagify-space-left .imagify-bar-negative .imagify-progress{background:#D0021B}#wpadminbar #wp-admin-bar-imagify-profile *{line-height:1.5;white-space:initial}#wpadminbar #wp-admin-bar-imagify .ab-submenu{padding-bottom:0}#wpadminbar #wp-admin-bar-imagify-profile .ab-item{height:auto;padding:0 13px}#wpadminbar #wp-admin-bar-imagify-profile{min-width:200px;padding:15px 0 10px;margin-top:0.7em;background:#222}#wp-admin-bar-imagify .dashicons{font-family:"dashicons";font-size:18px;vertical-align:middle;margin:0 5px 0 0}#wp-admin-bar-imagify .button-text{display:inline-block;vertical-align:middle}#wp-admin-bar-imagify .imagify-abq-row{display:table;width:100%}#wp-admin-bar-imagify .imagify-abq-row + .imagify-abq-row{margin-top:.75em}#wp-admin-bar-imagify .imagify-abq-row > *{display:table-cell}#wp-admin-bar-imagify-profile .imagify-meteo-icon{padding-right:7px}#wp-admin-bar-imagify-profile .imagify-meteo-icon img{width:37px}#wp-admin-bar-imagify-profile .imagify-meteo-title{font-size:17px}#wp-admin-bar-imagify-profile .imagify-meteo-subs{color:#72889F}#wpadminbar #wp-admin-bar-imagify-profile strong{font-weight:bold}#wpadminbar #wp-admin-bar-imagify-profile .imagify-user-plan,#wpadminbar #wp-admin-bar-imagify-profile a{padding:0;color:#40B1D0}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link{display:table}#wpadminbar #wp-admin-bar-imagify-profile .imagify-account-link > *{display:table-cell}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left{max-width:210px;min-width:210px;width:210px}#wpadminbar #wp-admin-bar-imagify-profile .imagify-space-left p{font-size:12px}#wp-admin-bar-imagify-profile .imagify-error,#wp-admin-bar-imagify-profile .imagify-warning{padding:10px;margin:0 -13px -13px}#wp-admin-bar-imagify-profile .imagify-error p + p,#wp-admin-bar-imagify-profile .imagify-warning p + p{margin-top:.5em}#wp-admin-bar-imagify-profile .imagify-error p + p + p,#wp-admin-bar-imagify-profile .imagify-warning p + p + p{margin-top:1em}.btn-ghost,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost{display:inline-block;height:auto;padding:7px 10px;border:1px solid #FFF;text-align:center;background:transparent;color:#FFF;border-radius:3px;transition:all .275s}.btn-ghost:hover,.btn-ghost:focus,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost:hover,#wpadminbar #wp-admin-bar-imagify-profile .btn-ghost:focus{background:#FFF;color:#888}.imagify-list-infos{max-width:100%;width:415px}.imagify-list-infos li,.imagify-info-block{position:relative;padding:10px;padding-left:42px;background:#D9E4EB;border-radius:4px;line-height:1.6}.imagify-list-infos .imagify-alt.imagify-alt{background:#8BA7B5;color:#FFF;font-weight:bold}.imagify-list-infos li + li{margin-top:1em}.imagify-list-infos li:before,.imagify-info-block:before{content:"";position:absolute;left:13px;top:14px;height:16px;width:16px;border:1px solid #46b1ce;border-radius:10px}.imagify-list-infos li:after,.imagify-info-block:after{content:"i";position:absolute;left:20px;top:13px;font-style:italic;color:#46b1ce}.imagify-cell .imagify-info-block{padding-top:0}.imagify-cell .imagify-info-block:after{top:6px}.imagify-cell .imagify-info-block:before{top:7px}.imagify-list-infos .imagify-alt:before,.imagify-list-infos .imagify-alt:after{color:#fff;border-color:#fff}.imagify-sub-title.imagify-sub-title{font-size:23px;background:#FFF;color:#2E3243;border-left:1px solid #D9D9D9;border-right:1px solid #D9D9D9;font-weight:lighter}.imagify-sub-title .icon-bulk{margin-right:10px;vertical-align:middle}.imagify-sub-title .title-text{display:inline-block;line-height:1;vertical-align:middle}.imagify-bulk .imagify-settings-section{border:1px solid #D9D9D9;border-top:0;background:#F2F5F7;color:#4A4A4A}.imagify-bulk .imagify-settings-section p,.imagify-bulk .imagify-settings-section li,.imagify-bulk .imagify-settings-section h3{color:#4A4A4A}.imagify-bulk .imagify-settings-section h3{margin-bottom:2em}.imagify-title .imagify-tooltips{position:absolute;top:100%;left:0}.imagify-tooltips .icon-round{float:left;display:inline-block;width:28px;height:28px;border:1px solid #FFF;margin-right:8px;margin-bottom:8px;font-size:17px;font-style:italic;line-height:29px;font-weight:bold;text-align:center;border-radius:50%}.imagify-tooltips .tooltip-content{display:block;position:relative;max-width:250px;padding:7px 15px 8px;background:#2e3242;color:#FFF;font-size:10px;border-radius:3px}.imagify-tooltips.right .tooltip-content{margin-left:12px}.imagify-tooltips.bottom .tooltip-content{margin-top:4px}.imagify-inline-options label .tooltip-content{position:absolute;left:0;right:0;top:100%;text-transform:none;font-size:10px;letter-spacing:0;text-align:center}.imagify-tooltips .tooltip-content:after{content:"";position:absolute}.imagify-tooltips.right .tooltip-content:after{top:16px;left:-6px;border-right:8px solid #2e3242;border-top:6px solid transparent;border-bottom:6px solid transparent}.imagify-tooltips.bottom .tooltip-content:after{top:-5px;left:50%;margin-left:-3px;border-bottom:6px solid #2e3242;border-left:6px solid transparent;border-right:6px solid transparent}.imagify-space-tooltips .tooltip-content{max-width:280px;margin-top:20px;margin-left:0;padding:5px 15px 5px;font-size:13px;background:#40B1D0;box-shadow:0 3px 0 #338EA6}.imagify-space-tooltips .tooltip-content:after{top:-14px;left:50%;margin-left:-7px;border:0 none;border-bottom:15px solid #40B1D0;border-left:15px solid transparent;border-right:15px solid transparent}.tooltip-content.tooltip-table{display:table;width:100%}.tooltip-content.tooltip-table > *{display:table-cell;vertical-align:middle}.tooltip-content .cell-icon{width:28px}.tooltip-content .cell-icon .icon{margin-bottom:0}.tooltip-content .cell-text{padding:5px 10px 5px 0;line-height:1.3}.tooltip-content .cell-sep{width:1px;background:rgba(255,255,255,.4)}.tooltip-content .cell-cta{padding-left:10px}.tooltip-content .cell-cta a{display:block;color:#FFF;width:100%;height:100%;white-space:nowrap}.imagify-number-you-optimized .number{display:table-cell;padding-right:15px;font-size:36px;font-weight:bold;line-height:1.1;vertical-align:middle;white-space:nowrap}.imagify-number-you-optimized .text{display:table-cell;vertical-align:middle;overflow:hidden;font-size:12px}.imagify-number-you-optimized .text br{display:none}.imagify-number-you-optimized > p{display:table}.imagify-number-you-optimized{padding-bottom:0.85em;margin-bottom:1.35em;overflow:hidden;border-bottom:1px solid rgba(0,0,0,0.05)}.imagify-bars p{font-weight:bold;font-size:12px;margin-bottom:0}.imagify-bars + .imagify-number-you-optimized{border-bottom:0;padding-top:0.85em}.imagify-bars + .imagify-number-you-optimized p{color:#46b1ce}.imagify-bulk-table{margin-top:2em;max-height:600px;max-height:60vh;overflow:auto}.imagify-bulk-table table{width:100%;border-spacing:0;border-collapse:collapse;border:1px solid #D3D3D3}.imagify-bulk-table td{padding:8px 15px}.imagify-bulk-table thead tr,.imagify-bulk-table thead th{background:#2E3242}.imagify-bulk-table tfoot tr,.imagify-bulk-table tfoot th{background:#73818C}.imagify-bulk-table thead th{padding:14px 15px;text-align:left;color:#F2F5F7;font-weight:bold;font-size:14px}.imagify-bulk-table tfoot td{padding:14px 15px;color:#F9FAFA}.imagify-bulk-table tbody tr,.imagify-bulk-table tbody td{background:#FFF}.imagify-bulk-table tbody tr:nth-child(odd),.imagify-bulk-table tbody tr:nth-child(odd) td{background:#F2F5F7}.imagify-bulk-table .imagify-row-progress{display:none}.imagify-bulk-table .imagify-row-progress,.imagify-bulk-table .imagify-row-progress td{height:15px;padding:0}.imagify-bulk-table .imagify-no-uploaded-yet td{height:200px;font-size:17px;letter-spacing:.1em;word-spacing:.12em;vertical-align:middle;text-transform:uppercase;font-weight:bold;text-align:center;color:#999;background-color:#FFF}.imagify-row-complete{padding:35px 20px;margin-top:2em;background:#8BC34A;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,.1)}.imagify-row-complete .imagify-ac-chart{margin-top:3px}.imagify-row-complete p{color:#FFF;margin:0}@-webkit-keyframes congrate{0%{opacity:0;-webkit-transform:scale(1)}50%{-webkit-transform:scale(1.05);opacity:1}100%{-webkit-transform:scale(1);opacity:1}}​ @keyframes congrate{0%{opacity:0;transform:scale(1)}50%{transform:scale(1.05);opacity:1}100%{transform:scale(1);opacity:1}}.imagify-row-complete.done{-webkit-animation:congrate 500ms ease-in-out;animation:congrate 500ms ease-in-out}.imagify-all-complete{margin:1.5em 0}.imagify-all-complete > div{display:inline-block;vertical-align:middle}.imagify-ac-report{min-width:310px}.imagify-ac-chart{width:46px;height:46px;float:left;margin:0 20px 0 10px}.imagify-ac-report-text{overflow:hidden}.imagify-ac-report-text p{line-height:1.3}.imagify-ac-rt-big{font-weight:bold;font-size:24px;letter-spacing:0.15em;word-spacing:0.15em;text-transform:uppercase}.imagify-ac-share{text-align:right}.imagify-ac-share-content{display:inline-block;padding:10px 15px;background:rgba(255,255,255,.2)}.imagify-ac-share-content > *{display:inline-block;vertical-align:middle}.imagify-bulk-table .imagify-ac-share-content p{margin-right:5px}.imagify-share-networks,.imagify-share-networks li{margin:0}.imagify-share-networks li{display:inline-block}.imagify-share-networks a{display:inline-block;vertical-align:-7px;margin:0 5px;text-decoration:none;color:#FFF}.imagify-cell-filename{max-width:200px}.imagify-cell-status{max-width:145px}.imagify-cell-status .dashicons-warning{margin-right:2px}.imagify-cell-thumbnails{max-width:120px}td.imagify-cell-filename{text-overflow:clip;white-space:nowrap;overflow:hidden}.imagify-bulk-table td.imagify-cell-totaloriginal{padding-right:78px}.imagiuploaded,.imagifilename{display:inline-block;vertical-align:middle}.imagifilename{font-size:12px}.imagiuploaded{width:33px;height:33px;margin-right:5px;margin-left:-8px;overflow:hidden;background:url(../images/upload-image.png) 0 0 no-repeat;background-size:cover}.imagiuploaded img{max-widht:100%;height:auto}.imagistatus{color:#8CA6B3;text-transform:uppercase;font-weight:bold}.status-compressing{color:#46B1CE}.status-error{color:#CE0B24}.status-warning{color:#f5a623}.status-complete{color:#8CC152}.imagify-error{background:#D0021B;color:#FFF}.imagify-warning,#wpadminbar .imagify-warning *{background:#f5a623;color:#FFF;text-shadow:0 0 2px rgba(0,0,0,0.2)}.imagify-bulk-table .imagify-cell-thumbnails{text-align:center}.imagify-cell-percentage,.imagify-cell-savings{color:#46B1CE;font-weight:bold}.imagify-cell-optimized{font-weight:bold}.imagify-cell-totaloriginal{text-align:right}.dashicons.rotate{-webkit-animation:icon-rotate 2.6s infinite linear;animation:icon-rotate 2.6s infinite linear}.dashicons-admin-generic{transform-origin:48.75% 51.75%}.imagify-modal{display:flex;flex-direction:column;align-items:center;justify-content:center}.js .imagify-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#1F2332;background-color:rgba(31,35,50,.95);z-index:99999}.imagify-modal-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;width:800px;max-width:95%;max-height:90vw;overflow:auto;padding:20px 25px;margin:1em auto;background:#FFF;box-shadow:1px 1px 4px rgba(0,0,0,.7);border-radius:3px}#imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{max-width:1400px;background:transparent;padding:5px;box-shadow:none;border-radius:0}.imagify-modal .h2{margin:.5em 0;color:#8ba6b4;font-weight:normal;font-size:24px;letter-spacing:0.075em;text-align:center}.imagify-modal .h3{color:#40b1d0;font-weight:normal;font-size:18px;letter-spacing:0.075em;text-align:center}.text-justify{text-align:justify}.imagify-modal .close-btn{display:none;visibility:hidden;position:absolute;right:20px;top:20px;font-size:1.2em;border:0;background:transparent none;border-radius:0;cursor:pointer}.imagify-modal .close-btn i{margin-left:-2px}.imagify-modal .close-btn:hover,.imagify-modal .close-btn:focus{color:#40b1d0}.js .imagify-modal .close-btn{display:block;visibility:visible}#imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:50px;right:5px;width:33px;height:33px;padding:1px 0 0 2px;border:1px solid #F2F2F2;color:#F2F2F2;line-height:19px;text-align:center;border-radius:50%}.wp_attachment_image #imagify-visual-comparison .close-btn,.imagify-visual-comparison .close-btn{top:0}.wp_attachment_image #imagify-visual-comparison .imagify-modal-content,.imagify-visual-comparison .imagify-modal-content{padding-top:40px}.imagify-modal .imagify-comparison-title{font-size:28px;margin-bottom:1em;color:#F2F2F2;text-align:left}.imagify-modal .imagify-comparison-title .twentytwenty-duo-buttons{position:static;margin:0 10px 0 15px}.imagify-comparison-title .twentytwenty-duo-buttons button{float:none;padding:6px 12px;font-size:16px;text-transform:none;border:1px solid #40B1D0;color:#888899;letter-spacing:0}.imagify-comparison-title .twentytwenty-duo-buttons button:focus{outline:none;box-shadow:none}.imagify-comparison-title .twentytwenty-duo-buttons .selected{border:1px solid #40B1D0;color:#FFF;background:#40B1D0}.imagify-comparison-levels{margin:15px 0;overflow:hidden}.imagify-comparison-levels div{display:none;min-width:175px;font-size:11px}.imagify-comparison-levels .imagify-chart,.imagify-comparison-levels .imagify-chart-container{width:25px;float:none;margin:0}.imagify-visual-comparison .imagify-chart-container canvas{width:15px!important;height:15px!important;margin-right:5px}.imagify-c-level.go-left{float:left}.imagify-c-level.go-right{float:right}.imagify-c-level.go-right,.imagify-c-level.go-left{display:table}.imagify-c-level .imagify-c-level-row{display:table-row;margin:0;color:#FFF}.imagify-c-level-row > span{display:table-cell;padding:2px 0}.imagify-c-level-row .value{text-align:right;padding-left:5px}.imagify-c-level-row .value.level{color:#40b1d0}.imagify-c-level-row .value.size{color:#8bc34a;font-weight:bold}.imagify-c-level-row .value .imagify-chart{top:1px}@-webkit-keyframes icon-rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes icon-rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.imagify-menu-bar-img{margin-top:1em}.imagify-modal .loader{position:absolute;top:50%;left:50%;margin:-32px 0 0 -32px;opacity:0;visibility:hidden;transition:opacity .4s}.imagify-modal .loading .loader{visibility:visible;opacity:1}.imagify-settings .imagify-visual-comparison-text{margin-top:1em;color:#40b1d0;font-weight:bold}.imagify-modal-cols,.imagify-border-styled,.imagify-offer-header,.imagify-payment-modal .imagify-modal-content,.imagify-flex-table,.imagify-tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.imagify-modal-cols,.imagify-border-styled{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.imagify-payment-modal{text-align:center;color:#7A8996}.imagify-payment-modal *{box-sizing:border-box}.imagify-modal-loader{position:absolute;top:0;left:0;right:0;bottom:0;background:#fff url('../images/loader-balls.svg') center no-repeat;z-index:10}.imagify-payment-modal .imagify-modal-content{width:980px;max-width:100%;min-width:925px;padding:0}.imagify-payment-modal .imagify-modal-main{width:70%}.imagify-payment-modal .imagify-modal-sidebar{width:30%;padding:15px 20px;background:#1F2332;color:#FFF}.imagify-payment-steps{padding-top:15px;margin-top:0;margin-left:0;list-style:none;counter-reset:steps}.imagify-payment-steps li{position:relative;display:inline-block;counter-increment:steps;font-weight:bold}.imagify-payment-steps li + li{margin-left:35px}.imagify-payment-steps li + li:after{content:"";position:absolute;top:19px;left:-90px;z-index:1;width:150px;height:2px;background:#E5EBEF}.imagify-payment-steps li + li.active:after{background:#40B1D0}.imagify-payment-steps li:before{display:block;position:relative;content:counter( steps,decimal );width:36px;height:36px;margin:0 auto .3em;border:2px solid #E5EBEF;text-align:center;line-height:34px;font-size:1.4em;color:#E5EBEF;background:#FFF;border-radius:50%;z-index:2}.imagify-payment-steps .active:before{color:#40B1D0;border-color:#40B1D0}.imagify-modal-section{padding:0 25px}.imagify-modal-section.section-gray{margin:1em 0;padding:10px 25px 15px;background:#F6F7FB}.imagify-tabs-contents .section-gray{padding:8px 25px 10px}.imagify-modal-section .imagify-modal-title:first-child{margin-top:.3em;margin-bottom:.5em}.imagify-modal-title{font-size:1.8em;font-weight:lighter}.imagify-border-styled{width:200px;margin:0 auto;color:#8BC34A;font-weight:bold;font-size:0.925em}.imagify-big-number{font-size:3.7em;font-weight:bold;margin:-3px 0;color:#4A4A4A;line-height:1}.imagify-border-styled:before,.imagify-border-styled:after{content:"";height:1px;background:rgba(0,0,0,.1);-webkit-flex-basis:40px;-ms-flex-preferred-size:40px;flex-basis:40px}.imagify-border-styled:before{margin-right:5px}.imagify-border-styled:after{margin-left:5px}.imagify-payment-modal strong{font-weight:bold;color:#4A4A4A}.imagify-col{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.imagify-modal .imagify-cols{padding:0 20px}.imagify-iconed{position:relative;text-align:left;padding-left:42px;margin-right:15px;font-weight:500}.imagify-iconed .dashicons,.imagify-iconed .icon{position:absolute;font-size:2em;left:0;top:2px;color:#40B1D0}.imagify-payment-modal .close-btn{top:10px;right:10px;width:24px;height:24px;padding:2px 0 0 4.5px;color:#FFF;background:#40B1D0;border-radius:50%;-webkit-transition:all .275s;transition:all .275s}.imagify-payment-modal .close-btn i{margin-left:-3.5px;margin-top:1px}.imagify-payment-modal .close-btn:hover{background:#F6F7FB}.imagify-offer-line{margin-top:1.5em}.imagify-offer-line + .imagify-offer-line{margin-top:0.75em}.imagify-offer-header{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:0 0 0 15px;border-radius:4px 4px 0 0;-webkit-transition:all .275s;transition:all .275s}.imagify-offer-header.imagify-offer-header.imagify-offer-header .imagify-inline-options label:last-child{border-radius:0 4px 0 0}.imagify-offer-header .imagify-inline-options{width:auto}.imagify-offer-title{font-weight:bold;margin:0}.imagify-offer-header,.imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label{background:#E5EBEF}.imagify-offer-onetime .imagify-offer-header{padding-top:8px;padding-bottom:8px}.imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label,.imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label{position:relative;padding:7px 30px;font-size:1em;letter-spacing:0.05em;color:inherit;box-shadow:0 0 0;border-radius:0}.imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label{background:#F6F7FB}.imagify-2-free{position:absolute;bottom:100%;left:0;right:0;padding:2px 10px;margin-bottom:8px;font-size:0.8em;letter-spacing:0;text-transform:none;text-align:center;color:#FFF;background:#10121A;border-radius:2px}.imagify-2-free:after{content:"";position:absolute;left:50%;bottom:-3px;margin-left:-3px;border-top:3px solid #10121A;border-left:3px solid transparent;border-right:3px solid transparent}.imagify-2-free.imagify-b-right{bottom:auto;left:100%;right:-100%;margin-bottom:0;margin-left:8px}.imagify-2-free.imagify-b-right:after{left:-3px;bottom:auto;top:50%;margin-top:-3px;margin-left:0;border-right:3px solid #10121A;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:0}.imagify-2-free.imagify-b-bottom{bottom:-100%;left:0;right:0;margin-top:8px}.imagify-2-free.imagify-b-bottom:after{top:-3px;bottom:auto;border-bottom:3px solid #10121A;border-left:3px solid transparent;border-right:3px solid transparent;border-top:0}.imagify-offer-content{text-align:left;background:#F6F7FB;border-radius:0 0 4px 4px;-webkit-transition:all .275s;transition:all .275s}.imagify-offer-onetime .imagify-offer-content{padding:10px 0}div.imagify-col-checkbox{position:relative;width:35.5%;padding-top:10px;padding-bottom:7px}.imagify-col-checkbox label{display:block}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked),.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked{position:absolute;top:50%;left:6px;margin:-8px 0 0 0}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked) + label:before,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked + label:before{margin:0;top:-3px;left:6px;-webkit-transition:all .275s;transition:all .275s}.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:not(:checked) + label:after,.imagify-col-checkbox .imagify-checkbox.imagify-checkbox:checked + label:after{top:0;left:13px}.imagify-col-checkbox label{padding-left:55px!important}.imagify-offer-size{font-size:30px;color:#2E3243;font-weight:bold;-webkit-transition:all .275s;transition:all .275s}.imagify-offer-by{font-size:10px;-webkit-transition:all .275s;transition:all .275s}.imagify-approx{display:block;font-size:11px;line-height:1.2;-webkit-transition:all .275s;transition:all .275s}div.imagify-col-price{width:30%}.imagify-flex-table .imagify-price-block{padding-left:0;padding-right:0}.imagify-flex-table .imagify-price-complement{padding-right:0;font-size:10px;font-weight:bold}.imagify-price-block span{display:inline-block;vertical-align:middle}span.imagify-dollars{color:#1F2332;font-size:18px;font-weight:bold;vertical-align:-2px}.imagify-offer-onetime .imagify-col-price{padding-top:0}.imagify-offer-onetime .imagify-dollars{vertical-align:-7px}.imagify-price-big,.imagify-price-mini{color:#40B1D0;font-weight:bold}.imagify-price-big{font-size:36px}span.imagify-price-mini{font-size:18px;vertical-align:2px}span.imagify-price-by{font-size:10px;color:#1F2332;vertical-align:-13px;text-indent:-27px}.imagify-col-other-actions{width:18.5%;text-align:right}.imagify-col-other-actions a{font-size:11px}.imagify-offer-selected,.imagify-offer-selected .imagify-offer-title,.imagify-offer-selected .imagify-offer-size,.imagify-offer-selected .imagify-price-big,.imagify-offer-selected .imagify-price-mini,.imagify-offer-selected .imagify-price-complement,.imagify-offer-selected .imagify-col-other-actions a{color:#FFF}.imagify-offer-selected .imagify-offer-header,.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type="radio"]:not(:checked) + label{background:#338EA6}.imagify-offer-selected .imagify-offer-header .imagify-inline-options input[type="radio"]:checked + label{background:#40B1D0}.imagify-offer-selected .imagify-offer-content{background:#40B1D0}.imagify-offer-selected .imagify-checkbox.imagify-checkbox:not(:checked) + label:before,.imagify-offer-selected .imagify-checkbox.imagify-checkbox:checked + label:before{border-color:#FFF;background:#40B1D0}.imagify-offer-selected .imagify-offer-by{color:#2E3243}.imagify-submit-line{margin:2em 0}.imagify-submit-line button{font-size:16px}.imagify-footer-lines{width:500px;max-width:100%;margin:2em auto 1em;font-size:0.85em;line-height:1.6}.imagify-year-selected .imagify-switch-my .imagify-yearly{display:block}.imagify-year-selected .imagify-switch-my .imagify-monthly{display:none}.imagify-month-selected .imagify-switch-my .imagify-yearly{display:none}.imagify-month-selected .imagify-switch-my .imagify-monthly{display:block}.imagify-flex-table{-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.imagify-flex-table > *{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding:7px 15px}div.imagify-col-details{width:22%;padding-left:25px}.imagify-col-details p{margin:0}.imagify-pricing-table{margin:0 20px}.imagify-pricing-table .imagify-offer-line{padding:.6em 0;border:2px solid #E8EEF0;text-align:left;border-radius:3px}.imagify-pricing-table .imagify-offer-line:first-child{margin-top:.75em}.imagify-pricing-table .imagify-offer-line + .imagify-offer-line{margin-top:-2px}.imagify-pricing-table .imagify-col-other-actions{width:20.5%}.imagify-pricing-table .imagify-approx{margin-left:0;line-height:0.5;margin-bottom:1em}.imagify-pricing-table .imagify-offer-selected{-webkit-transform:scale(1.03);transform:scale(1.03);background:#40B1D0;border-width:0}.imagify-pricing-table .imagify-offer-selected .imagify-approx{color:#FFF}.imagify-pricing-table .imagify-button-secondary{padding:3px 20px;box-shadow:none;text-transform:uppercase;font-size:12px;letter-spacing:0.025em}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary{border:2px solid #FFF;background:#40B1D0;box-shadow:none;text-shadow:none!important}.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:hover,.imagify-offer-selected.imagify-offer-selected .imagify-button-secondary:focus{background:#FFF;color:#40B1D0}.imagify-col .imagify-special-needs{margin-left:25px}.imagify-special-needs strong{font-size:25px;font-weight:bold;color:#40B1D0}.imagify-special-needs span{display:block;font-size:12px;margin-top:-.5em}div.imagify-col-price{position:relative}.imagify-recommend{display:none;position:absolute;left:-20px;bottom:100%;padding:0;margin-bottom:8px;color:#1F2332;font-weight:bold;font-style:italic}.imagify-offer-selected .imagify-recommend{display:block}[class*="imagify-onetime-"] .imagify-recommend{left:65px;margin-bottom:20px}.imagify-recommend:before{content:"";position:absolute;top:7px;left:-35px;width:29px;height:30px;background:url("../images/icon-arrow-choice.png") scroll 0 no-repeat;background-size:contain}@media only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.imagify-recommend:before{background-image:url("../images/icon-arrow-choice.svg")}}.imagify-offer-line[class*="imagify-onetime-"]{padding:0;margin:.3em 0 0}.imagify-offer-line.imagify-offer-line[class*="imagify-onetime-"]:first-child{margin-top:2em}.imagify-offer-line[class*="imagify-onetime-"] + .imagify-offer-line{margin-top:.5em}.imagify-offer-selected.imagify-offer-line[class*="imagify-onetime-"]{-webkit-transform:scale(1);transform:scale(1);border-width:2px}.imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details{position:relative;overflow:hidden;width:21%;background:#1F2332;color:#FFF}.imagify-offer-selected.imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details{background:#338EA6}.imagify-offer-line[class*="imagify-onetime-"] .imagify-col-details:before{content:"";position:absolute;bottom:0;right:25px;width:75px;height:54px;background:url("../images/icon-pack.png")}.imagify-offer-line[class*="imagify-onetime-"] .imagify-col-other-actions{width:30%}.imagify-offer-line[class*="imagify-onetime-"] .imagify-offer-size,.imagify-offer-line[class*="imagify-onetime-"] .imagify-approx{color:#FFF}.imagify-offer-line[class*="imagify-onetime-"] .imagify-offer-size{font-size:24px}.imagify-offer-line[class*="imagify-onetime-"] .imagify-approx{font-size:12px}.imagify-offer-line[class*="imagify-onetime-"] .imagify-price-block{padding-left:10px}.imagify-offer-line[class*="imagify-onetime-"] .imagify-dollars{vertical-align:middle}.imagify-offer-line[class*="imagify-onetime-"] .imagify-price-big{vertical-align:-5px}.imagify-offer-line[class*="imagify-onetime-"] .imagify-price-mini{vertical-align:7px}.imagify-tabs{margin-bottom:0;list-style:none;background:#E5EBEF}.imagify-modal-content .imagify-tabs{margin:1em 0 0}.imagify-tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;width:50%;margin:0;font-size:23px}.imagify-tab a{display:block;padding:15px 10px;color:inherit;text-decoration:none}.imagify-tab a:focus{box-shadow:none;outline:none;color:#40B1D8}.imagify-tab.imagify-current a{background:#F6F7FB}.imagify-tab-content.imagify-current{display:block}.imagify-tab-content{display:none}.imagify-tab-content .imagify-modal-section:first-child{margin-top:0}.imagify-modal-sidebar-content,.imagify-payment-modal .imagify-modal-sidebar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.imagify-modal-sidebar-content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}p.imagify-modal-sidebar-title{margin-top:5px;padding-right:40px;font-size:18px;color:#FFF}.imagify-modal-testimony{margin-top:1em}.imagify-modal-testimony + .imagify-modal-testimony{margin-top:2em}@media (max-height:620px){.imagify-modal-testimony + .imagify-modal-testimony{display:none}}.imagify-modal-testimony-person{display:table;width:100%}.imagify-modal-testimony-person > *{display:table-cell;vertical-align:middle}.imagify-modal-avatar{width:114px;line-height:0}.imagify-modal-avatar img{border:2px solid #FFF;border-radius:50%;width:96px;height:96px}.imagify-modal-identity a{text-decoration:none;font-weight:bold}.imagify-modal-identity a:first-child{font-size:13px}.imagify-modal-identity a:first-child + a{display:block;font-size:10px;color:#7A8996}.imagify-modal-testimony-content p{font-size:13px;font-style:italic;line-height:1.7;color:#7A8996}.imagify-modal-sidebar-trust{margin-top:auto;padding-top:1.5em}.imagify-modal-sidebar-trust p{margin:0;font-weight:bold;font-size:12px;line-height:1.7}.imagify-modal-sidebar-trust p img{margin-right:3px;vertical-align:-2px}.imagify-modal-sidebar-trust p + p{font-size:11px}.imagify-cart{text-align:left}.imagify-cart .imagify-cart-list{border-top:1px solid rgba(122,137,150,.2);border-bottom:1px solid rgba(122,137,150,.2)}.imagify-cart .imagify-cart-label{margin-bottom:0.5em;font-size:10px;color:#2E3243}.imagify-cart-list p{margin:0;font-weight:bold}.imagify-cart-item{margin:.4em 0}.imagify-cart .imagify-cart-suggestion{margin-top:-.3em}.imagify-cart-suggestion a,.imagify-cl-description p{font-size:10px}.imagify-remove-from-cart{border:0;padding:0;width:14px;height:14px;line-height:13px;border-radius:50%;background:#40B1D0;cursor:pointer;transition:background .3s}.imagify-remove-from-cart i:before{position:relative;top:-6px;left:-3px;font-size:13px;color:#FFF}.imagify-remove-from-cart:hover,.imagify-remove-from-cart:focus{background:#D0021B}.imagify-cart .imagify-cl-remove{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;width:45px}.imagify-cart .imagify-cl-name{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;width:200px}.imagify-cart .imagify-cl-description{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding-top:10px}.imagify-cart .imagify-cl-price{text-align:right}#imagify-payment-iframe{width:100%;height:375px;margin-top:1em;background:#f6f7fb url(../images/loader-balls.svg) 50% 175px no-repeat}.imagify-success-view{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:100%}.imagify-success-view p{font-weight:bold;font-size:16px}.imagify-cart-emptied-item{margin:.3em auto;padding:6px 20px;background:#E6EBEF;border-radius:20px}.imagify-cart-emptied-item.imagify-cart-emptied-item p{font-weight:bold}.imagify-cart-emptied-item a{color:#40b1d0;float:right;font-weight:bold}
assets/images/big-blue-check.png ADDED
Binary file
assets/images/icon-arrow-choice.png ADDED
Binary file
assets/images/icon-arrow-choice.svg ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="29px" height="30px" viewBox="0 0 29 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 3.6.1 (26313) - http://www.bohemiancoding.com/sketch -->
4
+ <title>Shape</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="Bulk-Optimize" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <g id="Bulk-Optimize-Free-Account-Popup-0-Pricing-One-Time" transform="translate(-770.000000, -526.000000)" fill="#1F2332">
9
+ <path d="M802.296271,541.590991 L799.162499,532.943366 C798.845155,532.07067 797.893123,531.634322 797.020427,531.951666 C796.147731,532.26901 795.711383,533.221042 796.028727,534.093738 L797.774119,538.933235 C793.608979,536.156474 788.650479,534.64909 783.572975,534.64909 C777.70211,534.64909 772.188258,536.553154 767.626438,540.162943 C766.912414,540.718295 766.79341,541.789331 767.348762,542.503355 C767.904114,543.217379 768.97515,543.336383 769.689174,542.781031 C773.695642,539.647259 778.49547,537.981203 783.612643,537.981203 C788.214131,537.981203 792.696615,539.409251 796.465075,541.987671 L791.585911,543.772731 C790.713215,544.090075 790.276867,545.042107 790.594211,545.914803 C790.832219,546.589159 791.466907,547.025507 792.141263,547.025507 C792.339603,547.025507 792.537943,546.985839 792.696615,546.906503 L801.344239,543.772731 L801.344239,543.772731 C802.177267,543.415719 802.613615,542.463687 802.296271,541.590991 L802.296271,541.590991 Z" id="Shape" transform="translate(784.700047, 539.436891) scale(-1, 1) rotate(-310.000000) translate(-784.700047, -539.436891) "></path>
10
+ </g>
11
+ </g>
12
+ </svg>
assets/images/icon-lock.png ADDED
Binary file
assets/images/icon-lock.svg ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="16px" height="19px" viewBox="0 0 16 19" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 3.6.1 (26313) - http://www.bohemiancoding.com/sketch -->
4
+ <title></title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="Bulk-Optimize" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" font-size="24" font-family="FontAwesome" font-weight="normal">
8
+ <g id="Bulk-Optimize-Free-Account-Popup-1" transform="translate(-1047.000000, -799.000000)" fill="#8BC34A">
9
+ <g id="Group-17" transform="translate(984.000000, 155.000000)">
10
+ <g id="Group-15" transform="translate(32.000000, 641.000000)">
11
+ <text id="">
12
+ <tspan x="31" y="22"></tspan>
13
+ </text>
14
+ </g>
15
+ </g>
16
+ </g>
17
+ </g>
18
+ </svg>
assets/images/icon-pack.png ADDED
Binary file
assets/images/icon-pack.svg ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="75px" height="54px" viewBox="0 0 75 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 3.6.1 (26313) - http://www.bohemiancoding.com/sketch -->
4
+ <title>Shape</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="Bulk-Optimize" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.15">
8
+ <g id="Bulk-Optimize-Free-Account-Popup-0-Pricing-One-Time" transform="translate(-602.000000, -556.000000)" fill="#FFFFFF">
9
+ <g id="Group-16" transform="translate(541.000000, 544.000000)">
10
+ <g id="Shape">
11
+ <path d="M135.847615,65.4118845 L135.847615,30.0205479 L98.4782609,12.3256648 L61.1089067,30.0205479 L61.1089067,65.4110993 L98.4782609,83.1067676 L135.847615,65.4118845 L135.847615,65.4118845 Z M98.4782609,45.4491918 L68.2896132,31.1544527 L80.9908469,25.1402027 L111.180452,39.4349418 L98.4782609,45.4491918 L98.4782609,45.4491918 Z M100.87183,77.4403845 L100.87183,48.8493358 L113.573063,42.8350858 L113.573063,48.4205878 L118.360201,46.1535635 L118.360201,40.5680614 L131.061435,34.5538114 L131.061435,63.1440749 L100.87183,77.4403845 L100.87183,77.4403845 Z M128.666909,31.1544527 L115.965675,37.1687027 L85.7770272,22.8731783 L98.4782609,16.8589283 L128.666909,31.1544527 L128.666909,31.1544527 Z M65.8960444,34.5545967 L96.084692,48.8493358 L96.084692,77.4395993 L65.8960444,63.1448602 L65.8960444,34.5545967 L65.8960444,34.5545967 Z"></path>
12
+ </g>
13
+ </g>
14
+ </g>
15
+ </g>
16
+ </svg>
assets/images/pic-ericwaltr.jpg ADDED
Binary file
assets/images/pic-srhdesign.jpg ADDED
Binary file
assets/js/admin.js CHANGED
@@ -1,6 +1,14 @@
1
  jQuery(function($){
2
 
3
- var concat = ajaxurl.indexOf("?") > 0 ? "&" : "?";
 
 
 
 
 
 
 
 
4
 
5
  /*
6
  * Create a new Imagify account
@@ -10,9 +18,9 @@ jQuery(function($){
10
 
11
  // Display the sign up form
12
  swal({
13
- title: imagify.signupTitle,
14
- text: imagify.signupText,
15
- confirmButtonText: imagify.signupConfirmButtonText,
16
  type: "input",
17
  closeOnConfirm: false,
18
  allowOutsideClick: true,
@@ -21,7 +29,7 @@ jQuery(function($){
21
  },
22
  function(inputValue){
23
  if ($.trim(inputValue) == "" || ! inputValue) {
24
- swal.showInputError(imagify.signupErrorEmptyEmail);
25
  return false;
26
  }
27
 
@@ -31,8 +39,8 @@ jQuery(function($){
31
  swal.showInputError(response.data);
32
  } else {
33
  swal({
34
- title:imagify.signupSuccessTitle,
35
- text: imagify.signupSuccessText,
36
  type: "success",
37
  customClass: "imagify-sweet-alert"
38
  });
@@ -49,9 +57,9 @@ jQuery(function($){
49
 
50
  // Display the sign up form
51
  swal({
52
- title: imagify.saveApiKeyTitle,
53
- text: imagify.saveApiKeyText,
54
- confirmButtonText: imagify.saveApiKeyConfirmButtonText,
55
  type: "input",
56
  closeOnConfirm: false,
57
  allowOutsideClick: true,
@@ -60,7 +68,7 @@ jQuery(function($){
60
  },
61
  function(inputValue){
62
  if ($.trim(inputValue) == "" || ! inputValue) {
63
- swal.showInputError(imagify.signupErrorEmptyEmail);
64
  return false;
65
  }
66
 
@@ -70,8 +78,8 @@ jQuery(function($){
70
  swal.showInputError( response.data );
71
  } else {
72
  swal({
73
- title: imagify.ApiKeyCheckSuccessTitle,
74
- text: imagify.ApiKeyCheckSuccessText,
75
  type: "success",
76
  customClass: "imagify-sweet-alert"
77
  });
@@ -118,7 +126,7 @@ jQuery(function($){
118
  $('.imagify-modal').attr('aria-hidden', 'true');
119
 
120
  // on click on modal trigger
121
- $('.imagify-modal-trigger').on('click', function(){
122
 
123
  imagify_open_modal( $(this) );
124
 
@@ -126,11 +134,11 @@ jQuery(function($){
126
  });
127
 
128
  // on click on close button
129
- $(document).on('click', '.imagify-modal .close-btn', function(){
130
  $(this).closest('.imagify-modal').fadeOut(400).attr('aria-hidden', 'true').removeClass('modal-is-open');
131
  $('body').removeClass('imagify-modal-is-open');
132
  })
133
- .on('blur', '.imagify-modal .close-btn', function(){
134
  var $modal = $(this).closest('.imagify-modal');
135
  if ( $modal.attr('aria-hidden') === 'false' ) {
136
  $modal.attr('tabindex', '0').focus().removeAttr('tabindex');
@@ -144,7 +152,7 @@ jQuery(function($){
144
  e.preventDefault();
145
 
146
  // trigger the event
147
- $('.imagify-modal.modal-is-open').find('.close-btn').trigger('click');
148
 
149
  return false;
150
  }
@@ -155,7 +163,7 @@ jQuery(function($){
155
 
156
  $('#wp-admin-bar-imagify').hover( function() {
157
  if ( true === busy ) {
158
- xhr.abort();
159
  }
160
 
161
  busy = true;
@@ -171,4 +179,584 @@ jQuery(function($){
171
  });
172
  }
173
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  });
1
  jQuery(function($){
2
 
3
+ var concat = ajaxurl.indexOf("?") > 0 ? "&" : "?",
4
+ imagify = {
5
+ log: function ( content ) {
6
+ if (console !== 'undefined') console.log( content );
7
+ },
8
+ info: function ( content ) {
9
+ if (console !== 'undefined') console.info( content );
10
+ }
11
+ };
12
 
13
  /*
14
  * Create a new Imagify account
18
 
19
  // Display the sign up form
20
  swal({
21
+ title: imagifyAdmin.labels.signupTitle,
22
+ text: imagifyAdmin.labels.signupText,
23
+ confirmButtonText: imagifyAdmin.labels.signupConfirmButtonText,
24
  type: "input",
25
  closeOnConfirm: false,
26
  allowOutsideClick: true,
29
  },
30
  function(inputValue){
31
  if ($.trim(inputValue) == "" || ! inputValue) {
32
+ swal.showInputError(imagifyAdmin.labels.signupErrorEmptyEmail);
33
  return false;
34
  }
35
 
39
  swal.showInputError(response.data);
40
  } else {
41
  swal({
42
+ title:imagifyAdmin.labels.signupSuccessTitle,
43
+ text: imagifyAdmin.labels.signupSuccessText,
44
  type: "success",
45
  customClass: "imagify-sweet-alert"
46
  });
57
 
58
  // Display the sign up form
59
  swal({
60
+ title: imagifyAdmin.labels.saveApiKeyTitle,
61
+ text: imagifyAdmin.labels.saveApiKeyText,
62
+ confirmButtonText: imagifyAdmin.labels.saveApiKeyConfirmButtonText,
63
  type: "input",
64
  closeOnConfirm: false,
65
  allowOutsideClick: true,
68
  },
69
  function(inputValue){
70
  if ($.trim(inputValue) == "" || ! inputValue) {
71
+ swal.showInputError(imagifyAdmin.labels.signupErrorEmptyEmail);
72
  return false;
73
  }
74
 
78
  swal.showInputError( response.data );
79
  } else {
80
  swal({
81
+ title: imagifyAdmin.labels.ApiKeyCheckSuccessTitle,
82
+ text: imagifyAdmin.labels.ApiKeyCheckSuccessText,
83
  type: "success",
84
  customClass: "imagify-sweet-alert"
85
  });
126
  $('.imagify-modal').attr('aria-hidden', 'true');
127
 
128
  // on click on modal trigger
129
+ $('.imagify-modal-trigger').on('click.imagify', function(){
130
 
131
  imagify_open_modal( $(this) );
132
 
134
  });
135
 
136
  // on click on close button
137
+ $(document).on('click.imagify', '.imagify-modal .close-btn', function(){
138
  $(this).closest('.imagify-modal').fadeOut(400).attr('aria-hidden', 'true').removeClass('modal-is-open');
139
  $('body').removeClass('imagify-modal-is-open');
140
  })
141
+ .on('blur.imagify', '.imagify-modal .close-btn', function(){
142
  var $modal = $(this).closest('.imagify-modal');
143
  if ( $modal.attr('aria-hidden') === 'false' ) {
144
  $modal.attr('tabindex', '0').focus().removeAttr('tabindex');
152
  e.preventDefault();
153
 
154
  // trigger the event
155
+ $('.imagify-modal.modal-is-open').find('.close-btn').trigger('click.imagify');
156
 
157
  return false;
158
  }
163
 
164
  $('#wp-admin-bar-imagify').hover( function() {
165
  if ( true === busy ) {
166
+ return;
167
  }
168
 
169
  busy = true;
179
  });
180
  }
181
  });
182
+
183
+ /**
184
+ * Payment Modal
185
+ *
186
+ * @since 1.5
187
+ * @author Geoffrey
188
+ */
189
+
190
+ if ( $('#imagify-pricing-modal').length ) {
191
+ var $modal = $('#imagify-pricing-modal'),
192
+ imagify_get_html_price = function( content, period ) {
193
+ if ( ! period ) period = null;
194
+ output = '';
195
+
196
+ if ( typeof content === 'object' ) {
197
+ var monthly = content.monthly + "",
198
+ yearly = content.yearly + "",
199
+ m = monthly.split('.'),
200
+ y = yearly.split('.');
201
+
202
+ output += '<span class="imagify-switch-my"><span aria-hidden="' + ( period === 'monthly' ? 'false' : 'true' ) + '" class="imagify-monthly"><span class="imagify-price-big">' + m[0] + '</span> <span class="imagify-price-mini">.' + ( m[1].length === 1 ? m[1] + '0' : m[1] ) + '</span></span> <span aria-hidden="' + ( period === 'yearly' ? 'false' : 'true' ) + '" class="imagify-yearly"><span class="imagify-price-big">' + y[0] + '</span> <span class="imagify-price-mini">.' + ( y[1].length === 1 ? y[1] + '0' : y[1] ) + '</span></span></span>';
203
+ } else {
204
+ var content = content + "", // be sure content is a string
205
+ v = content.split('.');
206
+
207
+ output += '<span class="imagify-price-big">' + v[0] + '</span> <span class="imagify-price-mini">.' + ( v[1].length === 1 ? v[1] + '0' : v[1] ) + '</span>';
208
+ }
209
+
210
+ return output;
211
+ },
212
+ imagify_get_pricing = function( $button ){
213
+ var data = {
214
+ action: 'imagify_get_prices',
215
+ imagifynonce: $button.data('nonce')
216
+ };
217
+
218
+ $modal.find('.imagify-modal-loader').hide().show();
219
+
220
+ $.post( ajaxurl, data, function( response ) {
221
+ if ( response.success ) {
222
+ var datas = response.data,
223
+ monthlies = datas.monthlies,
224
+ onetimes = datas.onetimes,
225
+ mo_user_cons= 1000, // TODO: dynamic, in MB,
226
+ ot_user_cons= 51000, // TODO: dynamic, in MB,
227
+ $mo_tpl = $('#imagify-offer-monthly-template'),
228
+ $ot_tpl = $('#imagify-offer-onetime-template'),
229
+ ot_clone = $ot_tpl.html(),
230
+ mo_clone = $mo_tpl.html(),
231
+ ot_html = '',
232
+ mo_html = '',
233
+ ot_suggested= false,
234
+ mo_suggested= false;
235
+
236
+ // Do the MONTHLIES Markup
237
+ // TODO: remove offers from monthlies depending on mo_user_cons
238
+
239
+ $.each( monthlies, function( index, value ) {
240
+ if ( value.label === 'free' ) {
241
+ return true; // continue like (but $.each is not a loop… so)
242
+ }
243
+ var add = value.additional_gb, // 4
244
+ ann = value.annual_cost, // 49.9
245
+ id = value.id, // 3
246
+ lab = value.label, // 'lite'
247
+ mon = value.monthly_cost, // 4.99
248
+ quo = value.quota, // 1000 (MB) - 5000 images
249
+ name= ( quo >= 1000 ? quo/1000 + ' GB' : quo + ' MB' ),
250
+ $tpl= $( mo_clone ).clone(),
251
+ pcs = { monthly: mon, yearly: Math.round( ann / 12 * 100 ) / 100 };
252
+
253
+ // parent classes
254
+ classes = '';
255
+ if ( ( mo_user_cons < quo && mo_suggested === false ) ) {
256
+ classes = ' imagify-offer-selected';
257
+ mo_suggested = true;
258
+ }
259
+ $tpl.addClass( 'imagify-monthly-' + lab + classes);
260
+
261
+ // name
262
+ $tpl.find('.imagify-offer-size').text( name );
263
+
264
+ // nb images
265
+ $tpl.find('.imagify-approx-nb').text( quo * 5 );
266
+
267
+ // additionnal price
268
+ $tpl.find('.imagify-price-add-data').text( '$' + add );
269
+
270
+ // main prices
271
+ $tpl.find('.imagify-number-block').html( imagify_get_html_price( pcs, 'monthly' ) );
272
+
273
+ // button data-offer attr
274
+ $tpl.find('.imagify-payment-btn-select-plan').attr('data-offer', '{"' + lab + '":{"id":' + id + ',"name":"' + name + '","data":' + quo + ',"dataf":"' + name + '","imgs":' + ( quo * 5 ) + ',"prices":{"monthly":' + pcs.monthly + ',"yearly":' + pcs.yearly + ',"add":' + add + '}}}');
275
+
276
+ // complete Monthlies HTML
277
+ mo_html += $tpl[0].outerHTML;
278
+
279
+ });
280
+
281
+ // Do the ONETIMES Markup
282
+ // TODO: add custom estimation in onetimes table based on ot_user_cons
283
+ $.each( onetimes, function( index, value ) {
284
+ var id = value.id, // 1
285
+ co = value.cost, // 3.49
286
+ la = value.label, // "250MB"
287
+ qu = value.quota, // 250
288
+ name = ( qu >= 1000 ? qu / 1000 + ' GB' : qu + ' MB' ),
289
+ $tpl = $( ot_clone ).clone();
290
+
291
+ // parent classes
292
+ classes = '';
293
+ if ( ( ot_user_cons < qu && ot_suggested === false ) ) {
294
+ classes = ' imagify-offer-selected';
295
+ ot_suggested = true;
296
+ }
297
+ $tpl.addClass( 'imagify-onetime-' + la + classes);
298
+
299
+ // name
300
+ $tpl.find('.imagify-offer-size').text( name );
301
+
302
+ // nb images
303
+ $tpl.find('.imagify-approx-nb').text( qu * 5 );
304
+
305
+ // main prices
306
+ $tpl.find('.imagify-number-block').html( imagify_get_html_price( co, 'monthly' ) );
307
+
308
+ // button data-offer attr
309
+ $tpl.find('.imagify-payment-btn-select-plan').attr('data-offer', '{"ot' + la + '":{"id":' + id + ',"name":"' + name + '","data":' + qu + ',"dataf":"' + name + '","imgs":' + ( qu * 5 ) + ',"price":' + co + '}}');
310
+
311
+ // complete Monthlies HTML
312
+ ot_html += $tpl[0].outerHTML;
313
+ });
314
+
315
+ // Fill pricing tables
316
+ if ( $mo_tpl.parent().find('.imagify-offer-line') ) {
317
+ $mo_tpl.parent().find('.imagify-offer-line').remove();
318
+ }
319
+ $mo_tpl.before( mo_html );
320
+
321
+ if ( $ot_tpl.parent().find('.imagify-offer-line') ) {
322
+ $ot_tpl.parent().find('.imagify-offer-line').remove();
323
+ }
324
+ $ot_tpl.before( ot_html );
325
+
326
+ // Fill the Pre-checkout view
327
+ // (depending on user_cons)
328
+
329
+ // Show the content
330
+ $modal.find('.imagify-modal-loader').fadeOut(300);
331
+
332
+
333
+ } else {
334
+ // TODO: replace modal content by any information
335
+ // an error occurred
336
+ }
337
+
338
+ }); // end $.post
339
+ },
340
+ imagify_check_check = function( $checkbox ) {
341
+ var sel_class = 'imagify-offer-selected';
342
+
343
+ $checkbox.each(function(){
344
+ if ( $(this).is(':checked') ) {
345
+ $(this).closest('.imagify-offer-line').addClass( sel_class );
346
+ }
347
+ else {
348
+ $(this).closest('.imagify-offer-line').removeClass( sel_class );
349
+ }
350
+ });
351
+ },
352
+ imagify_check_radio = function( $radio ) {
353
+ var year_class = 'imagify-year-selected',
354
+ month_class = 'imagify-month-selected';
355
+
356
+ $radio.each(function(){
357
+ // to handle modal pricing & modal suggestion
358
+ var $_this = $(this);
359
+ var $parent = '';
360
+
361
+ if ( $_this.parent('.imagify-cart-list-switcher').length ) {
362
+ $parent = $_this.closest('.imagify-cart');
363
+ } else if ( $_this.parent('.imagify-small-options').length ) {
364
+ $parent = $_this.parent('.imagify-small-options').next('.imagify-pricing-table');
365
+ } else {
366
+ $parent = $_this.closest('.imagify-offer-line');
367
+ }
368
+
369
+ var $to_switch = $parent.find('.imagify-switch-my');
370
+
371
+ if ( $_this.val() === 'yearly' ) {
372
+ $parent.addClass( year_class ).removeClass( month_class );
373
+ $to_switch.find('.imagify-monthly').attr('aria-hidden', 'true');
374
+ $to_switch.find('.imagify-yearly').attr('aria-hidden', 'false');
375
+ } else {
376
+ $parent.addClass( month_class ).removeClass( year_class );
377
+ $to_switch.find('.imagify-monthly').attr('aria-hidden', 'false');
378
+ $to_switch.find('.imagify-yearly').attr('aria-hidden', 'true');
379
+ }
380
+ });
381
+ return $radio;
382
+ },
383
+ $checkboxes = $('.imagify-offer-line').find('.imagify-checkbox'),
384
+ $radios = $('.imagify-payment-modal').find('.imagify-radio-line').find('input');
385
+
386
+ // check all boxes on load
387
+ imagify_check_check( $checkboxes );
388
+ imagify_check_radio( $radios.filter(':checked') );
389
+
390
+ // check the changed box
391
+ $checkboxes.on('change.imagify', function(){
392
+ imagify_check_check( $(this) );
393
+ });
394
+
395
+ // check the radio box
396
+ $radios.on('change.imagify', function(){
397
+ imagify_check_radio( $(this) );
398
+ });
399
+
400
+ /**
401
+ * Get pricings on modal opening
402
+ * Build the pricing tables inside modal
403
+ */
404
+ $('#imagify-get-pricing-modal').on('click.imagify-ajax', function(){
405
+ imagify_get_pricing( $(this) );
406
+ });
407
+
408
+ /**
409
+ * 1) Modal Payment change/select plan
410
+ * 2) Checkout selection(s)
411
+ * 3) Payment process
412
+ */
413
+
414
+ // plans selection view & payment process view hidden by default
415
+ var $plans_view = $('#imagify-plans-selection-view'),
416
+ $payment_view = $('#imagify-payment-process-view'),
417
+ $pre_view = $('#imagify-pre-checkout-view'),
418
+ $success_view = $('#imagify-success-view'),
419
+ speedFadeIn = 300,
420
+ $another_btn = $('.imagify-choose-another-plan'),
421
+ imagify_iframe_set_src = function( params ) {
422
+ /*
423
+ params = {
424
+ 'monthly': {
425
+ 'lite': {
426
+ name: 'something',
427
+ id: ''
428
+ }
429
+ },
430
+ 'onetime': {
431
+ 'recommended': {
432
+ name: 'Recommend',
433
+ id: ''
434
+ }
435
+ },
436
+ 'period': 'monthly'|'yearly'
437
+ }
438
+ */
439
+ var $iframe = $('#imagify-payment-iframe'),
440
+ iframe_src = $iframe.attr('src'),
441
+ monthly_id = 0,
442
+ onetime_id = 0;
443
+ if ( typeof params === 'object' ) {
444
+ if ( params.monthly ) {
445
+ monthly_id = params.monthly[ Object.keys( params.monthly )[0] ].id;
446
+ }
447
+ if ( params.onetime ) {
448
+ onetime_id = params.onetime[ Object.keys( params.onetime )[0] ].id;
449
+ // if onetime ID === 999 it's a custom plan, send datas instead
450
+ onetime_id = ( onetime_id == 999 ? params.onetime[ Object.keys( params.onetime )[0] ].data : onetime_id );
451
+ }
452
+
453
+ if ( params.period ) {
454
+ iframe_src = iframe_src.split('?')[0] + '?monthly=' + monthly_id + '&onetime=' + onetime_id + '&api=' + imagify_get_api_key() + '&period=' + params.period;
455
+
456
+ $iframe.attr( 'src', iframe_src );
457
+
458
+ } else {
459
+ imagifyAdmin.labels.info('No period defined');
460
+ }
461
+ } else if ( typeof params === 'string' ) {
462
+ iframe_src = iframe_src.split('&period=');
463
+ $iframe.attr( 'src', iframe_src[0] + '&period=' + params );
464
+ }
465
+ },
466
+ imagify_get_period = function() {
467
+ return ( $('.imagify-cart').hasClass('imagify-month-selected') ? 'monthly' : 'yearly' );
468
+ },
469
+ imagify_get_api_key = function(){
470
+ return $('#imagify-payment-iframe').data('imagify-api');
471
+ };
472
+
473
+ // init views
474
+ $plans_view.hide();
475
+ $payment_view.hide();
476
+ $success_view.hide();
477
+ //$pre_view.hide();
478
+
479
+ // 1) when you decide to choose another plan
480
+
481
+ // 1.a) on click, display choices
482
+ $another_btn.on('click.imagify', function(){
483
+ var $_this = $(this),
484
+ type = $_this.data('imagify-choose');
485
+
486
+ // hide current
487
+ $_this.closest('.imagify-modal-views').hide().attr('aria-hidden', 'true');
488
+ // hide the checkout view (click could be a triggered action ;p)
489
+ $payment_view.hide().attr('aria-hidden', 'true');
490
+
491
+ // show choices
492
+ $plans_view.fadeIn(speedFadeIn).attr('aria-hidden', 'false');
493
+
494
+ // trigger on tab
495
+ var temp = setInterval(function(){
496
+ var tab = type == 'plan' ? 'monthly' : 'onetime';
497
+ $plans_view.find('a[href="#imagify-pricing-tab-' + tab + '"]').trigger('click.imagify');
498
+ clearInterval( temp );
499
+ temp = null;
500
+ }, 60 );
501
+
502
+ return false;
503
+ });
504
+
505
+ // 1.b) on click in a choice, return to pre-checkout step
506
+ $modal.on('click.imagify', '.imagify-payment-btn-select-plan', function(){
507
+
508
+ var $_this = $(this),
509
+ $offer_line = $_this.closest('.imagify-offer-line'),
510
+ datas = $_this.data('offer'),
511
+ datas_str = $_this.attr('data-offer'),
512
+ is_onetime = ( $_this.closest('.imagify-tab-content').attr('id') === 'imagify-pricing-tab-monthly' ? false : true ),
513
+ $target_line = ( is_onetime ? $pre_view.find('.imagify-offer-onetime') : $pre_view.find('.imagify-offer-monthly') ),
514
+ period = ( is_onetime ? null : ( ( $_this.closest('.imagify-pricing-table').hasClass('imagify-month-selected') ) ? 'monthly' : 'yearly') ),
515
+ price = ( is_onetime ? imagify_get_html_price( datas[ Object.keys( datas )[0] ].price ) : imagify_get_html_price ( datas[ Object.keys( datas )[0] ].prices, period ) ),
516
+ imgs = $offer_line.find('.imagify-approx-nb').text(),
517
+ offer_size = $offer_line.find('.imagify-offer-size').text(),
518
+ monthly_txt = ( ! is_onetime ? '<span class="imagify-price-by">' + $offer_line.find('.imagify-price-by').text() + '</span>' : '' );
519
+
520
+ // change views to go back pre-checkout
521
+ $plans_view.hide().attr('aria-hidden', 'true');
522
+ $pre_view.fadeIn(speedFadeIn).attr('aria-hidden', 'false');
523
+
524
+ // change price (+ "/month" if found in monthly plans)
525
+ $target_line.find('.imagify-number-block').html( price + monthly_txt )
526
+
527
+ // change approx images nb
528
+ $target_line.find('.imagify-approx-nb').text( imgs );
529
+
530
+ // change offer size name
531
+ $target_line.find('.imagify-offer-size').text( offer_size );
532
+
533
+ // change datas (json)
534
+ $target_line.attr('data-offer', datas_str );
535
+
536
+ if ( ! is_onetime ) {
537
+ $target_line.find('.imagify-price-add-data').text( $offer_line.find('.imagify-price-add-data').text() );
538
+
539
+ // trigger period selected from offer selection view to pre-checkout view
540
+ if ( period === 'monthly' ) {
541
+ $target_line.find('#imagify-subscription-monthly').trigger('click.imagify');
542
+ }
543
+ else {
544
+ $target_line.find('#imagify-subscription-yearly').trigger('click.imagify');
545
+ }
546
+ $target_line.find('.imagify-inline-options').find('input:radio:checked').trigger('change.imagify');
547
+ }
548
+
549
+ return false;
550
+ });
551
+
552
+
553
+ // 2) when you checkout
554
+ $('#imagify-modal-checkout-btn').on('click.imagify', function(){
555
+
556
+ var $monthly_offer = $('.imagify-offer-monthly'),
557
+ $onetime_offer = $('.imagify-offer-onetime'),
558
+ checkout_datas = {},
559
+ period_choosen = ( $monthly_offer.hasClass('imagify-year-selected') ? 'year' : 'month' );
560
+
561
+ // if user choose a monthly plan
562
+ if ( $monthly_offer.hasClass('imagify-offer-selected') ) {
563
+
564
+ checkout_datas.monthly = JSON.parse( $monthly_offer.attr('data-offer') );
565
+ $('.imagify-cart-list-my-choice').show();
566
+
567
+ // price calculation
568
+ prices = checkout_datas.monthly[Object.keys(checkout_datas.monthly)[0]].prices;
569
+ save_price = Math.round( ( ( prices.monthly - prices.yearly ) * 12 ) * 100 ) / 100;
570
+ $('.imagify-nb-save-per-year').text( '$' + save_price );
571
+
572
+ } else {
573
+ $('.imagify-cart-list-my-choice').hide();
574
+ }
575
+
576
+ // if user choose a one time plan
577
+ if ( $onetime_offer.hasClass('imagify-offer-selected') ) {
578
+ checkout_datas.onetime = JSON.parse( $onetime_offer.attr('data-offer') );
579
+ }
580
+
581
+ // change views to go to checkout/payment view
582
+ $pre_view.hide().attr('aria-hidden', 'true');
583
+ $payment_view.fadeIn(speedFadeIn).attr('aria-hidden', 'false');
584
+
585
+ // hide "Cancel you removing" blocks
586
+ $('.imagify-cart-emptied-item').hide().attr('aria-hidden', 'true');
587
+
588
+ // Step 2 active
589
+ $('#imagify-pricing-step-2').addClass('active');
590
+
591
+ // Car item emptyfied & hidden
592
+ $payment_view.find('.imagify-cart-item').hide()
593
+ .attr('data-offer', '');
594
+
595
+ // Then completion of those items
596
+ $.each( checkout_datas, function( index, value ) {
597
+
598
+ var $line = $payment_view.find('.imagify-cart-item-' + index ),
599
+ offer = value[Object.keys(value)[0]],
600
+ $cart = $('.imagify-cart');
601
+
602
+ $line.show();
603
+
604
+ // product datas
605
+ $line.attr('data-offer', JSON.stringify( value ) );
606
+
607
+ // product name
608
+ $line.find('.imagify-the-product-name').text( offer.name );
609
+
610
+ // datas provide
611
+ $line.find('.imagify-cart-offer-data').text( offer.dataf );
612
+
613
+ // prices
614
+ if ( index === 'onetime') {
615
+ $line.find('.imagify-number-block').html( imagify_get_html_price( offer.price ) );
616
+ } else {
617
+ $line.find('.imagify-number-block').find('.imagify-switch-my').html( imagify_get_html_price( offer.prices, period_choosen + 'ly' ) );
618
+ }
619
+
620
+ // right class on Cart List depending on period selected
621
+ $cart.removeClass( 'imagify-month-selected imagify-year-selected' )
622
+ .addClass( 'imagify-' + period_choosen + '-selected' );
623
+
624
+ // trigger period choosen
625
+ if ( period_choosen === 'month' ) {
626
+ $cart.find('#imagify-checkout-monthly').trigger('click.imagify');
627
+ } else {
628
+ $cart.find('#imagify-checkout-yearly').trigger('click.imagify');
629
+ }
630
+ $cart.find('.imagify-inline-options').find('input:radio:checked').trigger('change.imagify');
631
+
632
+ });
633
+
634
+ checkout_datas.period = imagify_get_period();
635
+
636
+ imagify_iframe_set_src( checkout_datas );
637
+ return false;
638
+ });
639
+
640
+
641
+ // Removing an item
642
+ $('.imagify-remove-from-cart').on('click.imagify', function(){
643
+ var $_this = $(this),
644
+ $line = $_this.closest('.imagify-cart-item'),
645
+ is_monthly = $line.hasClass('imagify-cart-item-monthly'),
646
+ $other_line = ( is_monthly ? $('.imagify-cart-item-onetime') : $('.imagify-cart-item-monthly') ),
647
+ is_empty = $other_line.hasClass('imagify-temporary-removed'),
648
+ offer_datas = $line.attr('data-offer'), // string
649
+ still_datas = ( is_empty ? null : $other_line.data('offer') ); // object
650
+
651
+ $line.hide().attr('aria-hidden', 'true').attr('data-offer', '').addClass('imagify-temporary-removed');
652
+ $line.next('.imagify-cart-emptied-item').fadeIn(300).attr('aria-hidden', 'false').attr('data-offer', offer_datas )
653
+ .find('.imagify-removed-name').html( $line.find('.imagify-cart-product-name').html() );
654
+
655
+ if ( typeof imagify_iframe_set_src === 'function' ) {
656
+ if ( still_datas !== null ) {
657
+ var datas_to_send = {};
658
+ datas_to_send[ ( is_monthly ? 'onetime' : 'monthly' )] = still_datas;
659
+ datas_to_send.period = imagify_get_period();
660
+ imagify_iframe_set_src( datas_to_send );
661
+ }
662
+ else {
663
+ imagifyAdmin.labels.info('No offers selected');
664
+ }
665
+ } else {
666
+ imagifyAdmin.labels.info('imagify_iframe_set_src seems to be not declared');
667
+ }
668
+ return false;
669
+ });
670
+
671
+ // cancel action
672
+ $('.imagify-cancel-removing').on('click.imagify', function(){
673
+
674
+ var $_this = $(this),
675
+ $msg_block = $_this.closest('.imagify-cart-emptied-item'),
676
+ $line = $msg_block.prev('.imagify-cart-item'),
677
+ is_monthly = $line.hasClass('imagify-cart-item-monthly'),
678
+ $other_line = ( is_monthly ? $('.imagify-cart-item-onetime') : $('.imagify-cart-item-monthly') ),
679
+ other_empty = $other_line.hasClass('imagify-temporary-removed'),
680
+ offer_datas = $msg_block.attr('data-offer'), // string
681
+ still_datas = ( other_empty ? null : $other_line.data('offer') ); // object
682
+
683
+
684
+ $msg_block.hide().attr('aria-hidden', 'true').attr('data-offer', '')
685
+ .prev('.imagify-cart-item').fadeIn(300).attr('aria-hidden', 'true').attr('data-offer', offer_datas ).removeClass('imagify-temporary-removed');
686
+
687
+ // if new_datas === {} that is because both offers been cancelled
688
+ var new_datas = {};
689
+
690
+ new_datas.monthly = ( is_monthly ? JSON.parse( offer_datas ) : still_datas );
691
+ new_datas.onetime = ( is_monthly ? still_datas : JSON.parse( offer_datas ) );
692
+ new_datas.period = imagify_get_period();
693
+
694
+
695
+ if ( typeof imagify_iframe_set_src === 'function' ) {
696
+ imagify_iframe_set_src( new_datas );
697
+ } else {
698
+ imagifyAdmin.labels.info('imagify_iframe_set_src seems to be not declared…');
699
+ }
700
+
701
+ return false;
702
+ });
703
+
704
+ // on Yearly/Monthly payment change on checkout...
705
+ $('.imagify-cart-list-my-choice').find('input[type="radio"]').on('change.imagify', function(){
706
+ imagify_iframe_set_src( $(this).val() );
707
+ });
708
+
709
+ /**
710
+ * Go back to previous step ("Choose Another Plan" links)
711
+ */
712
+ $('.imagify-back-to-plans').on('click.imagify', function(){
713
+ var $_this = $(this),
714
+ is_onetime = $_this.closest('.imagify-cart-item').hasClass('imagify-cart-item-onetime');
715
+
716
+ if ( is_onetime ) {
717
+ $('.imagify-offer-onetime').find('.imagify-choose-another-plan').trigger('click.imagify');
718
+ } else {
719
+ $('.imagify-offer-monthly').find('.imagify-choose-another-plan').trigger('click.imagify');
720
+ }
721
+
722
+ return false;
723
+ });
724
+
725
+ }
726
+
727
+ /**
728
+ * Tabs
729
+ *
730
+ * @Markup:
731
+ * ul.imagify-tabs
732
+ * li.imagify-tab.imagify-current
733
+ * a[href="#target"]
734
+ * div.imagify-tabs-contents
735
+ * div.imagify-tab-content#target
736
+ */
737
+ if ( $('.imagify-tabs').length ) {
738
+
739
+ var $tabs = $('.imagify-tab');
740
+
741
+ $tabs.on('click.imagify', function(){
742
+
743
+ var $_this = $(this);
744
+
745
+ if ( ! $_this.hasClass('imagify-current') ) {
746
+ var target = $_this.find('a').attr('href') || '#' + $_this.find('a').attr('aria-controls'),
747
+ curr_class = 'imagify-current';
748
+
749
+ // show right tab content
750
+ $_this.closest('.imagify-tabs').next('.imagify-tabs-contents').find('.imagify-tab-content').hide().attr('aria-hidden', 'true');
751
+ $( target ).fadeIn(275).attr('aria-hidden', 'false');
752
+
753
+ // change active tabs
754
+ $_this.closest('.imagify-tabs').find('.imagify-tab').removeClass( curr_class ).attr('aria-selected', 'false');
755
+ $_this.addClass( curr_class ).attr('aria-selected', 'true');
756
+ }
757
+
758
+ return false;
759
+ });
760
+
761
+ }
762
  });
assets/js/admin.min.js CHANGED
@@ -1,6 +1,27 @@
1
- jQuery(function(a){var d=0<ajaxurl.indexOf("?")?"&":"?";a("#imagify-signup").click(function(b){b.preventDefault();swal({title:imagify.signupTitle,text:imagify.signupText,confirmButtonText:imagify.signupConfirmButtonText,type:"input",closeOnConfirm:!1,allowOutsideClick:!0,showLoaderOnConfirm:!0,customClass:"imagify-sweet-alert imagify-sweet-alert-signup"},function(b){if(""==a.trim(b)||!b)return swal.showInputError(imagify.signupErrorEmptyEmail),!1;a.get(ajaxurl+d+"action=imagify_signup&email="+b+"&imagifysignupnonce="+
2
- a("#imagifysignupnonce").val()).done(function(a){a.success?swal({title:imagify.signupSuccessTitle,text:imagify.signupSuccessText,type:"success",customClass:"imagify-sweet-alert"}):swal.showInputError(a.data)})})});a("#imagify-save-api-key").click(function(b){b.preventDefault();swal({title:imagify.saveApiKeyTitle,text:imagify.saveApiKeyText,confirmButtonText:imagify.saveApiKeyConfirmButtonText,type:"input",closeOnConfirm:!1,allowOutsideClick:!0,showLoaderOnConfirm:!0,customClass:"imagify-sweet-alert imagify-sweet-alert-signup"},
3
- function(b){if(""==a.trim(b)||!b)return swal.showInputError(imagify.signupErrorEmptyEmail),!1;a.get(ajaxurl+d+"action=imagify_check_api_key_validity&api_key="+b+"&imagifycheckapikeynonce="+a("#imagifycheckapikeynonce").val()).done(function(a){a.success?swal({title:imagify.ApiKeyCheckSuccessTitle,text:imagify.ApiKeyCheckSuccessText,type:"success",customClass:"imagify-sweet-alert"}):swal.showInputError(a.data)})})});a(".imagify-notice-dismiss").click(function(b){b.preventDefault();var c=a(this);b=c.parents(".imagify-welcome, .imagify-notice");
4
- c=c.attr("href");b.fadeTo(100,0,function(){a(this).slideUp(100,function(){a(this).remove()})});a.get(c.replace("admin-post.php","admin-ajax.php"))});a(".imagify-modal").attr("aria-hidden","true");a(".imagify-modal-trigger").on("click",function(){var b=a(this),b=b.data("target")||b.attr("href");a(b).css("display","flex").hide().fadeIn(400).attr("aria-hidden","false").attr("tabindex","0").focus().removeAttr("tabindex").addClass("modal-is-open");a("body").addClass("imagify-modal-is-open");return!1});
5
- a(document).on("click",".imagify-modal .close-btn",function(){a(this).closest(".imagify-modal").fadeOut(400).attr("aria-hidden","true").removeClass("modal-is-open");a("body").removeClass("imagify-modal-is-open")}).on("blur",".imagify-modal .close-btn",function(){var b=a(this).closest(".imagify-modal");"false"===b.attr("aria-hidden")&&b.attr("tabindex","0").focus().removeAttr("tabindex")});a(window).on("keydown",function(b){if(27==b.keyCode&&0<a(".imagify-modal.modal-is-open").length)return b.preventDefault(),
6
- a(".imagify-modal.modal-is-open").find(".close-btn").trigger("click"),!1});var e=!1,f=!1;a("#wp-admin-bar-imagify").hover(function(){!0===e&&f.abort();e=!0;var b=a("#wp-admin-bar-imagify-profile-content");b.is(":empty")&&(f=a.get(ajaxurl+d+"action=imagify_get_admin_bar_profile&imagifygetadminbarprofilenonce="+a("#imagifygetadminbarprofilenonce").val()).done(function(c){b.html(c.data);a("#wp-admin-bar-imagify-profile-loading").remove();e=!1}))})});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function(b){var x=0<ajaxurl.indexOf("?")?"&":"?";b("#imagify-signup").click(function(a){a.preventDefault();swal({title:imagifyAdmin.labels.signupTitle,text:imagifyAdmin.labels.signupText,confirmButtonText:imagifyAdmin.labels.signupConfirmButtonText,type:"input",closeOnConfirm:!1,allowOutsideClick:!0,showLoaderOnConfirm:!0,customClass:"imagify-sweet-alert imagify-sweet-alert-signup"},function(a){if(""==b.trim(a)||!a)return swal.showInputError(imagifyAdmin.labels.signupErrorEmptyEmail),!1;b.get(ajaxurl+
2
+ x+"action=imagify_signup&email="+a+"&imagifysignupnonce="+b("#imagifysignupnonce").val()).done(function(a){a.success?swal({title:imagifyAdmin.labels.signupSuccessTitle,text:imagifyAdmin.labels.signupSuccessText,type:"success",customClass:"imagify-sweet-alert"}):swal.showInputError(a.data)})})});b("#imagify-save-api-key").click(function(a){a.preventDefault();swal({title:imagifyAdmin.labels.saveApiKeyTitle,text:imagifyAdmin.labels.saveApiKeyText,confirmButtonText:imagifyAdmin.labels.saveApiKeyConfirmButtonText,
3
+ type:"input",closeOnConfirm:!1,allowOutsideClick:!0,showLoaderOnConfirm:!0,customClass:"imagify-sweet-alert imagify-sweet-alert-signup"},function(a){if(""==b.trim(a)||!a)return swal.showInputError(imagifyAdmin.labels.signupErrorEmptyEmail),!1;b.get(ajaxurl+x+"action=imagify_check_api_key_validity&api_key="+a+"&imagifycheckapikeynonce="+b("#imagifycheckapikeynonce").val()).done(function(a){a.success?swal({title:imagifyAdmin.labels.ApiKeyCheckSuccessTitle,text:imagifyAdmin.labels.ApiKeyCheckSuccessText,
4
+ type:"success",customClass:"imagify-sweet-alert"}):swal.showInputError(a.data)})})});b(".imagify-notice-dismiss").click(function(a){a.preventDefault();var d=b(this);a=d.parents(".imagify-welcome, .imagify-notice");d=d.attr("href");a.fadeTo(100,0,function(){b(this).slideUp(100,function(){b(this).remove()})});b.get(d.replace("admin-post.php","admin-ajax.php"))});b(".imagify-modal").attr("aria-hidden","true");b(".imagify-modal-trigger").on("click.imagify",function(){var a=b(this),a=a.data("target")||
5
+ a.attr("href");b(a).css("display","flex").hide().fadeIn(400).attr("aria-hidden","false").attr("tabindex","0").focus().removeAttr("tabindex").addClass("modal-is-open");b("body").addClass("imagify-modal-is-open");return!1});b(document).on("click.imagify",".imagify-modal .close-btn",function(){b(this).closest(".imagify-modal").fadeOut(400).attr("aria-hidden","true").removeClass("modal-is-open");b("body").removeClass("imagify-modal-is-open")}).on("blur.imagify",".imagify-modal .close-btn",function(){var a=
6
+ b(this).closest(".imagify-modal");"false"===a.attr("aria-hidden")&&a.attr("tabindex","0").focus().removeAttr("tabindex")});b(window).on("keydown",function(a){if(27==a.keyCode&&0<b(".imagify-modal.modal-is-open").length)return a.preventDefault(),b(".imagify-modal.modal-is-open").find(".close-btn").trigger("click.imagify"),!1});var y=!1;b("#wp-admin-bar-imagify").hover(function(){if(!0!==y){y=!0;var a=b("#wp-admin-bar-imagify-profile-content");a.is(":empty")&&b.get(ajaxurl+x+"action=imagify_get_admin_bar_profile&imagifygetadminbarprofilenonce="+
7
+ b("#imagifygetadminbarprofilenonce").val()).done(function(d){a.html(d.data);b("#wp-admin-bar-imagify-profile-loading").remove();y=!1})}});if(b("#imagify-pricing-modal").length){var z=b("#imagify-pricing-modal"),q=function(a,b){b||(b=null);output="";if("object"===typeof a){var c=a.yearly+"",e=(a.monthly+"").split("."),c=c.split(".");output+='<span class="imagify-switch-my"><span aria-hidden="'+("monthly"===b?"false":"true")+'" class="imagify-monthly"><span class="imagify-price-big">'+e[0]+'</span> <span class="imagify-price-mini">.'+
8
+ (1===e[1].length?e[1]+"0":e[1])+'</span></span> <span aria-hidden="'+("yearly"===b?"false":"true")+'" class="imagify-yearly"><span class="imagify-price-big">'+c[0]+'</span> <span class="imagify-price-mini">.'+(1===c[1].length?c[1]+"0":c[1])+"</span></span></span>"}else e=(a+"").split("."),output+='<span class="imagify-price-big">'+e[0]+'</span> <span class="imagify-price-mini">.'+(1===e[1].length?e[1]+"0":e[1])+"</span>";return output},D=function(a){a={action:"imagify_get_prices",imagifynonce:a.data("nonce")};
9
+ z.find(".imagify-modal-loader").hide().show();b.post(ajaxurl,a,function(a){if(a.success){var c=a.data;a=c.monthlies;var c=c.onetimes,e=b("#imagify-offer-monthly-template"),f=b("#imagify-offer-onetime-template"),l=f.html(),m=e.html(),r="",h="",g=!1,n=!1;b.each(a,function(a,c){if("free"===c.label)return!0;var d=c.additional_gb,e=c.annual_cost,f=c.id,l=c.label,r=c.monthly_cost,k=c.quota,g=1E3<=k?k/1E3+" GB":k+" MB",p=b(m).clone(),e={monthly:r,yearly:Math.round(e/12*100)/100};classes="";1E3<k&&!1===n&&
10
+ (classes=" imagify-offer-selected",n=!0);p.addClass("imagify-monthly-"+l+classes);p.find(".imagify-offer-size").text(g);p.find(".imagify-approx-nb").text(5*k);p.find(".imagify-price-add-data").text("$"+d);p.find(".imagify-number-block").html(q(e,"monthly"));p.find(".imagify-payment-btn-select-plan").attr("data-offer",'{"'+l+'":{"id":'+f+',"name":"'+g+'","data":'+k+',"dataf":"'+g+'","imgs":'+5*k+',"prices":{"monthly":'+e.monthly+',"yearly":'+e.yearly+',"add":'+d+"}}}");h+=p[0].outerHTML});b.each(c,
11
+ function(a,c){var d=c.id,e=c.cost,f=c.label,m=c.quota,h=1E3<=m?m/1E3+" GB":m+" MB",k=b(l).clone();classes="";51E3<m&&!1===g&&(classes=" imagify-offer-selected",g=!0);k.addClass("imagify-onetime-"+f+classes);k.find(".imagify-offer-size").text(h);k.find(".imagify-approx-nb").text(5*m);k.find(".imagify-number-block").html(q(e,"monthly"));k.find(".imagify-payment-btn-select-plan").attr("data-offer",'{"ot'+f+'":{"id":'+d+',"name":"'+h+'","data":'+m+',"dataf":"'+h+'","imgs":'+5*m+',"price":'+e+"}}");r+=
12
+ k[0].outerHTML});e.parent().find(".imagify-offer-line")&&e.parent().find(".imagify-offer-line").remove();e.before(h);f.parent().find(".imagify-offer-line")&&f.parent().find(".imagify-offer-line").remove();f.before(r);z.find(".imagify-modal-loader").fadeOut(300)}})},B=function(a){a.each(function(){b(this).is(":checked")?b(this).closest(".imagify-offer-line").addClass("imagify-offer-selected"):b(this).closest(".imagify-offer-line").removeClass("imagify-offer-selected")})},C=function(a){a.each(function(){var a=
13
+ b(this),c="",c=a.parent(".imagify-cart-list-switcher").length?a.closest(".imagify-cart"):a.parent(".imagify-small-options").length?a.parent(".imagify-small-options").next(".imagify-pricing-table"):a.closest(".imagify-offer-line"),e=c.find(".imagify-switch-my");"yearly"===a.val()?(c.addClass("imagify-year-selected").removeClass("imagify-month-selected"),e.find(".imagify-monthly").attr("aria-hidden","true"),e.find(".imagify-yearly").attr("aria-hidden","false")):(c.addClass("imagify-month-selected").removeClass("imagify-year-selected"),
14
+ e.find(".imagify-monthly").attr("aria-hidden","false"),e.find(".imagify-yearly").attr("aria-hidden","true"))});return a},t=b(".imagify-offer-line").find(".imagify-checkbox"),u=b(".imagify-payment-modal").find(".imagify-radio-line").find("input");B(t);C(u.filter(":checked"));t.on("change.imagify",function(){B(b(this))});u.on("change.imagify",function(){C(b(this))});b("#imagify-get-pricing-modal").on("click.imagify-ajax",function(){D(b(this))});var v=b("#imagify-plans-selection-view"),n=b("#imagify-payment-process-view"),
15
+ w=b("#imagify-pre-checkout-view"),t=b("#imagify-success-view"),u=b(".imagify-choose-another-plan"),g=function(a){var d=b("#imagify-payment-iframe"),c=d.attr("src"),e=0,f=0;"object"===typeof a?(a.monthly&&(e=a.monthly[Object.keys(a.monthly)[0]].id),a.onetime&&(f=a.onetime[Object.keys(a.onetime)[0]].id,f=999==f?a.onetime[Object.keys(a.onetime)[0]].data:f),a.period?(c=c.split("?")[0]+"?monthly="+e+"&onetime="+f+"&api="+b("#imagify-payment-iframe").data("imagify-api")+"&period="+a.period,d.attr("src",
16
+ c)):imagifyAdmin.labels.info("No period defined")):"string"===typeof a&&(c=c.split("&period="),d.attr("src",c[0]+"&period="+a))},A=function(){return b(".imagify-cart").hasClass("imagify-month-selected")?"monthly":"yearly"};v.hide();n.hide();t.hide();u.on("click.imagify",function(){var a=b(this),d=a.data("imagify-choose");a.closest(".imagify-modal-views").hide().attr("aria-hidden","true");n.hide().attr("aria-hidden","true");v.fadeIn(300).attr("aria-hidden","false");var c=setInterval(function(){v.find('a[href="#imagify-pricing-tab-'+
17
+ ("plan"==d?"monthly":"onetime")+'"]').trigger("click.imagify");clearInterval(c);c=null},60);return!1});z.on("click.imagify",".imagify-payment-btn-select-plan",function(){var a=b(this),d=a.closest(".imagify-offer-line"),c=a.data("offer"),e=a.attr("data-offer"),f="imagify-pricing-tab-monthly"===a.closest(".imagify-tab-content").attr("id")?!1:!0,l=f?w.find(".imagify-offer-onetime"):w.find(".imagify-offer-monthly"),a=f?null:a.closest(".imagify-pricing-table").hasClass("imagify-month-selected")?"monthly":
18
+ "yearly",c=f?q(c[Object.keys(c)[0]].price):q(c[Object.keys(c)[0]].prices,a),m=d.find(".imagify-approx-nb").text(),g=d.find(".imagify-offer-size").text(),h=f?"":'<span class="imagify-price-by">'+d.find(".imagify-price-by").text()+"</span>";v.hide().attr("aria-hidden","true");w.fadeIn(300).attr("aria-hidden","false");l.find(".imagify-number-block").html(c+h);l.find(".imagify-approx-nb").text(m);l.find(".imagify-offer-size").text(g);l.attr("data-offer",e);f||(l.find(".imagify-price-add-data").text(d.find(".imagify-price-add-data").text()),
19
+ "monthly"===a?l.find("#imagify-subscription-monthly").trigger("click.imagify"):l.find("#imagify-subscription-yearly").trigger("click.imagify"),l.find(".imagify-inline-options").find("input:radio:checked").trigger("change.imagify"));return!1});b("#imagify-modal-checkout-btn").on("click.imagify",function(){var a=b(".imagify-offer-monthly"),d=b(".imagify-offer-onetime"),c={},e=a.hasClass("imagify-year-selected")?"year":"month";a.hasClass("imagify-offer-selected")?(c.monthly=JSON.parse(a.attr("data-offer")),
20
+ b(".imagify-cart-list-my-choice").show(),prices=c.monthly[Object.keys(c.monthly)[0]].prices,save_price=Math.round(1200*(prices.monthly-prices.yearly))/100,b(".imagify-nb-save-per-year").text("$"+save_price)):b(".imagify-cart-list-my-choice").hide();d.hasClass("imagify-offer-selected")&&(c.onetime=JSON.parse(d.attr("data-offer")));w.hide().attr("aria-hidden","true");n.fadeIn(300).attr("aria-hidden","false");b(".imagify-cart-emptied-item").hide().attr("aria-hidden","true");b("#imagify-pricing-step-2").addClass("active");
21
+ n.find(".imagify-cart-item").hide().attr("data-offer","");b.each(c,function(a,c){var d=n.find(".imagify-cart-item-"+a),g=c[Object.keys(c)[0]],h=b(".imagify-cart");d.show();d.attr("data-offer",JSON.stringify(c));d.find(".imagify-the-product-name").text(g.name);d.find(".imagify-cart-offer-data").text(g.dataf);"onetime"===a?d.find(".imagify-number-block").html(q(g.price)):d.find(".imagify-number-block").find(".imagify-switch-my").html(q(g.prices,e+"ly"));h.removeClass("imagify-month-selected imagify-year-selected").addClass("imagify-"+
22
+ e+"-selected");"month"===e?h.find("#imagify-checkout-monthly").trigger("click.imagify"):h.find("#imagify-checkout-yearly").trigger("click.imagify");h.find(".imagify-inline-options").find("input:radio:checked").trigger("change.imagify")});c.period=A();g(c);return!1});b(".imagify-remove-from-cart").on("click.imagify",function(){var a=b(this).closest(".imagify-cart-item"),d=a.hasClass("imagify-cart-item-monthly"),c=d?b(".imagify-cart-item-onetime"):b(".imagify-cart-item-monthly"),e=c.hasClass("imagify-temporary-removed"),
23
+ f=a.attr("data-offer"),c=e?null:c.data("offer");a.hide().attr("aria-hidden","true").attr("data-offer","").addClass("imagify-temporary-removed");a.next(".imagify-cart-emptied-item").fadeIn(300).attr("aria-hidden","false").attr("data-offer",f).find(".imagify-removed-name").html(a.find(".imagify-cart-product-name").html());"function"===typeof g?null!==c?(a={},a[d?"onetime":"monthly"]=c,a.period=A(),g(a)):imagifyAdmin.labels.info("No offers selected"):imagifyAdmin.labels.info("imagify_iframe_set_src seems to be not declared");
24
+ return!1});b(".imagify-cancel-removing").on("click.imagify",function(){var a=b(this).closest(".imagify-cart-emptied-item"),d=a.prev(".imagify-cart-item").hasClass("imagify-cart-item-monthly"),c=d?b(".imagify-cart-item-onetime"):b(".imagify-cart-item-monthly"),e=c.hasClass("imagify-temporary-removed"),f=a.attr("data-offer"),c=e?null:c.data("offer");a.hide().attr("aria-hidden","true").attr("data-offer","").prev(".imagify-cart-item").fadeIn(300).attr("aria-hidden","true").attr("data-offer",f).removeClass("imagify-temporary-removed");
25
+ a={};a.monthly=d?JSON.parse(f):c;a.onetime=d?c:JSON.parse(f);a.period=A();"function"===typeof g?g(a):imagifyAdmin.labels.info("imagify_iframe_set_src seems to be not declared\u2026");return!1});b(".imagify-cart-list-my-choice").find('input[type="radio"]').on("change.imagify",function(){g(b(this).val())});b(".imagify-back-to-plans").on("click.imagify",function(){b(this).closest(".imagify-cart-item").hasClass("imagify-cart-item-onetime")?b(".imagify-offer-onetime").find(".imagify-choose-another-plan").trigger("click.imagify"):
26
+ b(".imagify-offer-monthly").find(".imagify-choose-another-plan").trigger("click.imagify");return!1})}if(b(".imagify-tabs").length)b(".imagify-tab").on("click.imagify",function(){var a=b(this);if(!a.hasClass("imagify-current")){var d=a.find("a").attr("href")||"#"+a.find("a").attr("aria-controls");a.closest(".imagify-tabs").next(".imagify-tabs-contents").find(".imagify-tab-content").hide().attr("aria-hidden","true");b(d).fadeIn(275).attr("aria-hidden","false");a.closest(".imagify-tabs").find(".imagify-tab").removeClass("imagify-current").attr("aria-selected",
27
+ "false");a.addClass("imagify-current").attr("aria-selected","true")}return!1})});
assets/js/bulk.js CHANGED
@@ -12,22 +12,22 @@ jQuery(function($){
12
  var overviewCanvas = document.getElementById("imagify-overview-chart"),
13
  overviewData = [
14
  {
15
- value: imagifyBulk.totalUnoptimizedAttachments,
16
  color:"#D9E4EB",
17
  highlight: "#D9E4EB",
18
- label: imagifyBulk.overviewChartLabels.unoptimized
19
  },
20
  {
21
- value: imagifyBulk.totalOptimizedAttachments,
22
  color: "#46B1CE",
23
  highlight: "#46B1CE",
24
- label: imagifyBulk.overviewChartLabels.optimized
25
  },
26
  {
27
- value: imagifyBulk.totalErrorsAttachments,
28
  color: "#2E3242",
29
  highlight: "#2E3242",
30
- label: imagifyBulk.overviewChartLabels.error
31
  }
32
  ];
33
 
@@ -61,7 +61,7 @@ jQuery(function($){
61
 
62
  // Heartbeat
63
  $(document).on('heartbeat-send', function(e, data) {
64
- data['imagify_heartbeat'] = 'update_bulk_data';
65
  });
66
 
67
  // Listen for the custom event "heartbeat-tick" on $(document).
@@ -74,6 +74,7 @@ jQuery(function($){
74
 
75
  // The overview chart percent
76
  $('#imagify-overview-chart-percent').html(data.optimized_attachments_percent + '<span>%</span>');
 
77
 
78
  // The comsuption bar
79
  $('.imagify-unconsumed-percent').html(data.unconsumed_quota + '%');
@@ -123,57 +124,60 @@ jQuery(function($){
123
 
124
 
125
  confirmMessage = function(){
126
- return imagifyBulk.processing;
127
  };
128
  $(window).on('beforeunload', confirmMessage);
129
 
130
  // Display an alert to wait
131
  swal({
132
- title:imagifyBulk.waitTitle,
133
- text: imagifyBulk.waitText,
134
  closeOnConfirm: false,
135
  showConfirmButton: false,
136
- imageUrl: imagifyBulk.waitImageUrl
137
  });
138
 
139
- $.get(ajaxurl+concat+"action=imagify_get_unoptimized_attachment_ids&optimization_level="+$optimization_level+"&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val())
140
  .done(function(response) {
141
  if( !response.success ) {
142
  $obj.removeAttr('disabled');
143
  $obj.find('.dashicons').removeClass('rotate');
144
-
 
 
 
145
  // remove confirm dialog before quit the page
146
  $(window).off('beforeunload', confirmMessage);
 
 
 
 
147
 
148
- imagify.log(response);
149
-
150
  if ( response.data.message == 'over-quota' ) {
151
- // Display an alert to warn that the monthly quota is consumed
152
- swal({
153
- title:imagifyBulk.overQuotaTitle,
154
- text: imagifyBulk.overQuotaText,
155
- type: "error",
156
- customClass: "imagify-sweet-alert",
157
- html: true
158
- });
159
  }
160
 
161
  if ( response.data.message == 'no-images' ) {
162
- // Display an alert to warn that all images has been optimized
163
- swal({
164
- title:imagifyBulk.noAttachmentToOptimizeTitle,
165
- text: imagifyBulk.noAttachmentToOptimizeText,
166
- type: "info",
167
- customClass: "imagify-sweet-alert"
168
- });
169
  }
 
 
 
 
 
 
 
 
170
 
171
  } else {
172
  swal.close();
173
-
174
  var config = {
175
  'lib': ajaxurl+concat+"action=imagify_bulk_upload&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val(),
176
- 'images': response.data
 
177
  }
178
 
179
  var table = $('.imagify-bulk-table table tbody'),
@@ -189,7 +193,7 @@ jQuery(function($){
189
 
190
  // before the attachment optimization
191
  Optimizer.before(function(data) {
192
- table.append('<tr id="attachment-'+data.id+'"><td class="imagify-cell-filename"><span class="imagiuploaded"><img src="'+data.thumbnail+'"/>"</span><span class="imagifilename">'+data.filename+'</span></td><td class="imagify-cell-status"><span class="imagistatus status-compressing"><span class="dashicons dashicons-admin-generic rotate"></span>Compressing<span></span></span></td><td class="imagify-cell-original"></td><td class="imagify-cell-optimized"></td><td class="imagify-cell-percentage"></td><td class="imagify-cell-thumbnails"></td><td class="imagify-cell-savings"></td></tr>');
193
  })
194
  // after the attachment optimization
195
  .each(function (data) {
@@ -225,8 +229,8 @@ jQuery(function($){
225
 
226
  if ( data.error.indexOf("You've consumed all your data") >= 0 ) {
227
  swal({
228
- title: imagifyBulk.overQuotaTitle,
229
- text: imagifyBulk.overQuotaText,
230
  type: "error",
231
  customClass: "imagify-sweet-alert",
232
  html: true,
@@ -273,12 +277,12 @@ jQuery(function($){
273
  $('.imagify-ac-rt-total-gain').html(data.global_gain_human);
274
  $('.imagify-ac-rt-total-original').html(data.global_original_size_human);
275
 
276
- text2share = imagifyBulk.textToShare;
277
  text2share = text2share.replace( '%1$s', data.global_gain_human );
278
  text2share = text2share.replace( '%2$s', data.global_original_size_human );
279
  text2share = encodeURIComponent(text2share);
280
 
281
- $('.imagify-sn-twitter').attr( 'href', 'https://twitter.com/intent/tweet?source=webclient&amp;original_referer=' + imagifyBulk.pluginURL + '&amp;text=' + text2share + '&amp;url=' + imagifyBulk.pluginURL + '&amp;related=imagify&amp;hastags=performance,web,wordpress' );
282
 
283
  $('.imagify-ac-chart').attr('data-percent', data.global_percent);
284
  draw_me_complete_chart( $('.imagify-ac-chart').find('canvas') );
@@ -292,8 +296,8 @@ jQuery(function($){
292
  })
293
  .fail(function () {
294
  swal({
295
- title: imagifyBulk.getUnoptimizedImagesErrorTitle,
296
- text: imagifyBulk.getUnoptimizedImagesErrorText,
297
  type: "error",
298
  customClass: "imagify-sweet-alert"
299
  },
12
  var overviewCanvas = document.getElementById("imagify-overview-chart"),
13
  overviewData = [
14
  {
15
+ value: imagifyBulk.labels.totalUnoptimizedAttachments,
16
  color:"#D9E4EB",
17
  highlight: "#D9E4EB",
18
+ label: imagifyBulk.labels.overviewChartLabels.unoptimized
19
  },
20
  {
21
+ value: imagifyBulk.labels.totalOptimizedAttachments,
22
  color: "#46B1CE",
23
  highlight: "#46B1CE",
24
+ label: imagifyBulk.labels.overviewChartLabels.optimized
25
  },
26
  {
27
+ value: imagifyBulk.labels.totalErrorsAttachments,
28
  color: "#2E3242",
29
  highlight: "#2E3242",
30
+ label: imagifyBulk.labels.overviewChartLabels.error
31
  }
32
  ];
33
 
61
 
62
  // Heartbeat
63
  $(document).on('heartbeat-send', function(e, data) {
64
+ data['imagify_heartbeat'] = imagifyBulk.heartbeat_id;
65
  });
66
 
67
  // Listen for the custom event "heartbeat-tick" on $(document).
74
 
75
  // The overview chart percent
76
  $('#imagify-overview-chart-percent').html(data.optimized_attachments_percent + '<span>%</span>');
77
+ $('.imagify-total-percent').html(data.optimized_attachments_percent + '%' );
78
 
79
  // The comsuption bar
80
  $('.imagify-unconsumed-percent').html(data.unconsumed_quota + '%');
124
 
125
 
126
  confirmMessage = function(){
127
+ return imagifyBulk.labels.processing;
128
  };
129
  $(window).on('beforeunload', confirmMessage);
130
 
131
  // Display an alert to wait
132
  swal({
133
+ title:imagifyBulk.labels.waitTitle,
134
+ text: imagifyBulk.labels.waitText,
135
  closeOnConfirm: false,
136
  showConfirmButton: false,
137
+ imageUrl: imagifyBulk.labels.waitImageUrl
138
  });
139
 
140
+ $.get(ajaxurl+concat+"action="+imagifyBulk.ajax_action+"&optimization_level="+$optimization_level+"&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val())
141
  .done(function(response) {
142
  if( !response.success ) {
143
  $obj.removeAttr('disabled');
144
  $obj.find('.dashicons').removeClass('rotate');
145
+
146
+ swal_title = '';
147
+ swal_text = '';
148
+
149
  // remove confirm dialog before quit the page
150
  $(window).off('beforeunload', confirmMessage);
151
+
152
+ if ( response.data.message == 'invalid-api-key' ) {
153
+ swal_title = imagifyBulk.labels.invalidAPIKeyTitle;
154
+ }
155
 
 
 
156
  if ( response.data.message == 'over-quota' ) {
157
+ swal_title = imagifyBulk.labels.overQuotaTitle;
158
+ text = imagifyBulk.labels.overQuotaText;
 
 
 
 
 
 
159
  }
160
 
161
  if ( response.data.message == 'no-images' ) {
162
+ swal_title = imagifyBulk.labels.noAttachmentToOptimizeTitle;
163
+ swal_text = imagifyBulk.labels.noAttachmentToOptimizeText;
 
 
 
 
 
164
  }
165
+
166
+ // Display an alert to warn that all images has been optimized
167
+ swal({
168
+ title : swal_title,
169
+ text : swal_text,
170
+ type : "info",
171
+ customClass : "imagify-sweet-alert"
172
+ });
173
 
174
  } else {
175
  swal.close();
176
+
177
  var config = {
178
  'lib': ajaxurl+concat+"action=imagify_bulk_upload&imagifybulkuploadnonce="+$('#imagifybulkuploadnonce').val(),
179
+ 'images': response.data,
180
+ 'context': imagifyBulk.ajax_context
181
  }
182
 
183
  var table = $('.imagify-bulk-table table tbody'),
193
 
194
  // before the attachment optimization
195
  Optimizer.before(function(data) {
196
+ table.find('.imagify-row-progress').after('<tr id="attachment-'+data.id+'"><td class="imagify-cell-filename"><span class="imagiuploaded"><img src="'+data.thumbnail+'"/>"</span><span class="imagifilename">'+data.filename+'</span></td><td class="imagify-cell-status"><span class="imagistatus status-compressing"><span class="dashicons dashicons-admin-generic rotate"></span>Compressing<span></span></span></td><td class="imagify-cell-original"></td><td class="imagify-cell-optimized"></td><td class="imagify-cell-percentage"></td><td class="imagify-cell-thumbnails"></td><td class="imagify-cell-savings"></td></tr>');
197
  })
198
  // after the attachment optimization
199
  .each(function (data) {
229
 
230
  if ( data.error.indexOf("You've consumed all your data") >= 0 ) {
231
  swal({
232
+ title: imagifyBulk.labels.overQuotaTitle,
233
+ text: imagifyBulk.labels.overQuotaText,
234
  type: "error",
235
  customClass: "imagify-sweet-alert",
236
  html: true,
277
  $('.imagify-ac-rt-total-gain').html(data.global_gain_human);
278
  $('.imagify-ac-rt-total-original').html(data.global_original_size_human);
279
 
280
+ text2share = imagifyBulk.labels.textToShare;
281
  text2share = text2share.replace( '%1$s', data.global_gain_human );
282
  text2share = text2share.replace( '%2$s', data.global_original_size_human );
283
  text2share = encodeURIComponent(text2share);
284
 
285
+ $('.imagify-sn-twitter').attr( 'href', 'https://twitter.com/intent/tweet?source=webclient&amp;original_referer=' + imagifyBulk.labels.pluginURL + '&amp;text=' + text2share + '&amp;url=' + imagifyBulk.labels.pluginURL + '&amp;related=imagify&amp;hastags=performance,web,wordpress' );
286
 
287
  $('.imagify-ac-chart').attr('data-percent', data.global_percent);
288
  draw_me_complete_chart( $('.imagify-ac-chart').find('canvas') );
296
  })
297
  .fail(function () {
298
  swal({
299
+ title: imagifyBulk.labels.getUnoptimizedImagesErrorTitle,
300
+ text: imagifyBulk.labels.getUnoptimizedImagesErrorText,
301
  type: "error",
302
  customClass: "imagify-sweet-alert"
303
  },
assets/js/bulk.min.js CHANGED
@@ -1,16 +1,18 @@
1
- jQuery(function(b){function m(c){c.each(function(){var a=parseInt(b(this).closest(".imagify-chart").next(".imagipercent").text()),a=[{value:a,color:"#00B3D3"},{value:100-a,color:"#D8D8D8"}];(new Chart(b(this)[0].getContext("2d"))).Doughnut(a,{segmentStrokeColor:"#FFF",segmentStrokeWidth:1,animateRotate:!0,tooltipEvents:[]})})}function n(c){c.each(function(){var a=parseInt(b(this).closest(".imagify-ac-chart").attr("data-percent")),a=[{value:a,color:"#40B1D0"},{value:100-a,color:"#FFFFFF"}];(new Chart(b(this)[0].getContext("2d"))).Doughnut(a,
2
- {segmentStrokeColor:"transparent",segmentStrokeWidth:0,animateRotate:!0,animation:!0,percentageInnerCutout:70,tooltipEvents:[]})})}var k=0<ajaxurl.indexOf("?")?"&":"?",l={log:function(b){"undefined"!==console&&console.log(b)}},f=document.getElementById("imagify-overview-chart"),e=[{value:imagifyBulk.totalUnoptimizedAttachments,color:"#D9E4EB",highlight:"#D9E4EB",label:imagifyBulk.overviewChartLabels.unoptimized},{value:imagifyBulk.totalOptimizedAttachments,color:"#46B1CE",highlight:"#46B1CE",label:imagifyBulk.overviewChartLabels.optimized},
3
- {value:imagifyBulk.totalErrorsAttachments,color:"#2E3242",highlight:"#2E3242",label:imagifyBulk.overviewChartLabels.error}];if(f){var d=(new Chart(f.getContext("2d"))).Doughnut(e,{segmentStrokeColor:"transparent",segmentStrokeWidth:0,animateRotate:!0,animation:!0,percentageInnerCutout:85,legendTemplate:'<ul class="imagify-<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>',
4
- tooltipTemplate:"<%= value %>"});overviewLegend='<ul class="imagify-doughnut-legend">';b(e).each(function(b){overviewLegend+='<li><span style="background-color:'+e[b].color+'"></span>'+e[b].label+"</li>"});overviewLegend+="</ul>";document.getElementById("imagify-overview-chart-legend").innerHTML=overviewLegend}b(document).on("heartbeat-send",function(b,a){a.imagify_heartbeat="update_bulk_data"});b(document).on("heartbeat-tick",function(c,a){a.imagify_bulk_data&&(a=a.imagify_bulk_data,b("#imagify-overview-chart-percent").html(a.optimized_attachments_percent+
5
- "<span>%</span>"),b(".imagify-unconsumed-percent").html(a.unconsumed_quota+"%"),b(".imagify-unconsumed-bar").animate({width:a.unconsumed_quota+"%"}),b("#imagify-total-optimized-attachments").html(a.already_optimized_attachments),b("#imagify-original-bar").find(".imagify-barnb").html(a.original_human),b("#imagify-optimized-bar").animate({width:a.optimized_percent+"%"}),b("#imagify-optimized-bar").find(".imagify-barnb").html(a.optimized_human),b("#imagify-total-optimized-attachments-pct").html(a.optimized_percent+
6
- "%"),d.segments[0].value=a.unoptimized_attachments,d.segments[1].value=a.optimized_attachments,d.segments[2].value=a.errors_attachments,d.update())});b("#imagify-simulate-bulk-action").click(function(c){c.preventDefault();b("#imagify-bulk-action").trigger("click")});b("#imagify-bulk-action").click(function(){var c=b(this),a=b('[name="optimization_level"]:checked').val();"undefined"===typeof a&&(a=-1);if(c.attr("disabled"))return!1;c.attr("disabled","disabled");c.find(".dashicons").addClass("rotate");
7
- confirmMessage=function(){return imagifyBulk.processing};b(window).on("beforeunload",confirmMessage);swal({title:imagifyBulk.waitTitle,text:imagifyBulk.waitText,closeOnConfirm:!1,showConfirmButton:!1,imageUrl:imagifyBulk.waitImageUrl});b.get(ajaxurl+k+"action=imagify_get_unoptimized_attachment_ids&optimization_level="+a+"&imagifybulkuploadnonce="+b("#imagifybulkuploadnonce").val()).done(function(a){if(a.success){swal.close();a={lib:ajaxurl+k+"action=imagify_bulk_upload&imagifybulkuploadnonce="+b("#imagifybulkuploadnonce").val(),
8
- images:a.data};var e=b(".imagify-bulk-table table tbody"),d=0,f=0,g=0,h=0;b(".imagify-row-progress").slideDown();b(".imagify-no-uploaded-yet, .imagify-row-complete").hide(200);Optimizer=new ImagifyGulp(a);Optimizer.before(function(b){e.append('<tr id="attachment-'+b.id+'"><td class="imagify-cell-filename"><span class="imagiuploaded"><img src="'+b.thumbnail+'"/>"</span><span class="imagifilename">'+b.filename+'</span></td><td class="imagify-cell-status"><span class="imagistatus status-compressing"><span class="dashicons dashicons-admin-generic rotate"></span>Compressing<span></span></span></td><td class="imagify-cell-original"></td><td class="imagify-cell-optimized"></td><td class="imagify-cell-percentage"></td><td class="imagify-cell-thumbnails"></td><td class="imagify-cell-savings"></td></tr>')}).each(function(a){var c=
9
- b("#imagify-progress-bar");c.css({width:a.progress+"%"});c.find(".percent").html(a.progress+"%");a.success?(b("#attachment-"+a.image+" .imagify-cell-status").html('<span class="imagistatus status-complete"><span class="dashicons dashicons-yes"></span>Complete</span>'),b("#attachment-"+a.image+" .imagify-cell-original").html(a.original_size_human),b("#attachment-"+a.image+" .imagify-cell-optimized").html(a.new_size_human),b("#attachment-"+a.image+" .imagify-cell-percentage").html('<span class="imagify-chart"><span class="imagify-chart-container"><canvas height="18" width="18" id="imagify-consumption-chart" style="width: 18px; height: 18px;"></canvas></span></span><span class="imagipercent">'+
10
- a.percent+"</span>%"),m(b("#attachment-"+a.image+" .imagify-cell-percentage").find("canvas")),b("#attachment-"+a.image+" .imagify-cell-thumbnails").html(a.thumbnails),b("#attachment-"+a.image+" .imagify-cell-savings").html(Optimizer.humanSize(a.overall_saving,1)),d=d+a.thumbnails+1,b(".imagify-cell-nb-files").html(d+" file(s)"),g+=a.original_overall_size,b(".imagify-total-original").html(Optimizer.humanSize(g,1)),h+=a.overall_saving,b(".imagify-total-gain").html(Optimizer.humanSize(h,1))):(error_class=
11
- "error",error_dashicon="dismiss",error_message="Error",0<=a.error.indexOf("You've consumed all your data")&&swal({title:imagifyBulk.overQuotaTitle,text:imagifyBulk.overQuotaText,type:"error",customClass:"imagify-sweet-alert",html:!0},function(){location.reload()}),0<=a.error.indexOf("This image is already compressed")?(error_dashicon=error_class="warning",error_message="Notice"):(f++,b(".imagify-cell-errors").html(f+" error(s)")),b("#attachment-"+a.image).after('<tr><td colspan="7"><span class="status-'+
 
12
  error_class+'">'+a.error+"</span></td></tr>"),b("#attachment-"+a.image+" .imagify-cell-status").html('<span class="imagistatus status-'+error_class+'"><span class="dashicons dashicons-'+error_dashicon+'"></span>'+error_message+"</span>"))}).done(function(a){c.removeAttr("disabled");c.find(".dashicons").removeClass("rotate");b(window).off("beforeunload",confirmMessage);b(".imagify-row-progress").slideUp();"NaN"!==a.global_percent&&(b(".imagify-row-complete").removeClass("hidden").addClass("done").attr("aria-hidden",
13
- "false"),b("html, body").animate({scrollTop:b(".imagify-row-complete").offset().top},200),b(".imagify-ac-rt-total-gain").html(a.global_gain_human),b(".imagify-ac-rt-total-original").html(a.global_original_size_human),text2share=imagifyBulk.textToShare,text2share=text2share.replace("%1$s",a.global_gain_human),text2share=text2share.replace("%2$s",a.global_original_size_human),text2share=encodeURIComponent(text2share),b(".imagify-sn-twitter").attr("href","https://twitter.com/intent/tweet?source=webclient&amp;original_referer="+
14
- imagifyBulk.pluginURL+"&amp;text="+text2share+"&amp;url="+imagifyBulk.pluginURL+"&amp;related=imagify&amp;hastags=performance,web,wordpress"),b(".imagify-ac-chart").attr("data-percent",a.global_percent),n(b(".imagify-ac-chart").find("canvas")))}).error(function(a){l.log("Can't optimize image with id "+a)}).run()}else c.removeAttr("disabled"),c.find(".dashicons").removeClass("rotate"),b(window).off("beforeunload",confirmMessage),l.log(a),"over-quota"==a.data.message&&swal({title:imagifyBulk.overQuotaTitle,
15
- text:imagifyBulk.overQuotaText,type:"error",customClass:"imagify-sweet-alert",html:!0}),"no-images"==a.data.message&&swal({title:imagifyBulk.noAttachmentToOptimizeTitle,text:imagifyBulk.noAttachmentToOptimizeText,type:"info",customClass:"imagify-sweet-alert"})}).fail(function(){swal({title:imagifyBulk.getUnoptimizedImagesErrorTitle,text:imagifyBulk.getUnoptimizedImagesErrorText,type:"error",customClass:"imagify-sweet-alert"},function(){location.reload()})})})});var width=700,height=290;
16
- if(window.innerWidth)var clientLeft=(window.innerWidth-width)/2,clientTop=(window.innerHeight-height)/2;else clientLeft=(document.body.clientWidth-width)/2,clientTop=(document.body.clientHeight-height)/2;[].forEach.call(document.querySelectorAll(".imagify-share-networks a"),function(b){b.addEventListener("click",function(b){window.open(this.href,"","status=no, scrollbars=no, menubar=no, top="+clientTop+", left="+clientLeft+", width="+width+", height="+height);b.preventDefault()},!1)});
 
1
+ jQuery(function(b){function l(c){c.each(function(){var a=parseInt(b(this).closest(".imagify-chart").next(".imagipercent").text()),a=[{value:a,color:"#00B3D3"},{value:100-a,color:"#D8D8D8"}];(new Chart(b(this)[0].getContext("2d"))).Doughnut(a,{segmentStrokeColor:"#FFF",segmentStrokeWidth:1,animateRotate:!0,tooltipEvents:[]})})}function m(c){c.each(function(){var a=parseInt(b(this).closest(".imagify-ac-chart").attr("data-percent")),a=[{value:a,color:"#40B1D0"},{value:100-a,color:"#FFFFFF"}];(new Chart(b(this)[0].getContext("2d"))).Doughnut(a,
2
+ {segmentStrokeColor:"transparent",segmentStrokeWidth:0,animateRotate:!0,animation:!0,percentageInnerCutout:70,tooltipEvents:[]})})}var k=0<ajaxurl.indexOf("?")?"&":"?",n={log:function(b){"undefined"!==console&&console.log(b)}},f=document.getElementById("imagify-overview-chart"),e=[{value:imagifyBulk.labels.totalUnoptimizedAttachments,color:"#D9E4EB",highlight:"#D9E4EB",label:imagifyBulk.labels.overviewChartLabels.unoptimized},{value:imagifyBulk.labels.totalOptimizedAttachments,color:"#46B1CE",highlight:"#46B1CE",
3
+ label:imagifyBulk.labels.overviewChartLabels.optimized},{value:imagifyBulk.labels.totalErrorsAttachments,color:"#2E3242",highlight:"#2E3242",label:imagifyBulk.labels.overviewChartLabels.error}];if(f){var d=(new Chart(f.getContext("2d"))).Doughnut(e,{segmentStrokeColor:"transparent",segmentStrokeWidth:0,animateRotate:!0,animation:!0,percentageInnerCutout:85,legendTemplate:'<ul class="imagify-<%=name.toLowerCase()%>-legend"><% for (var i=0; i<segments.length; i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>',
4
+ tooltipTemplate:"<%= value %>"});overviewLegend='<ul class="imagify-doughnut-legend">';b(e).each(function(b){overviewLegend+='<li><span style="background-color:'+e[b].color+'"></span>'+e[b].label+"</li>"});overviewLegend+="</ul>";document.getElementById("imagify-overview-chart-legend").innerHTML=overviewLegend}b(document).on("heartbeat-send",function(b,a){a.imagify_heartbeat=imagifyBulk.heartbeat_id});b(document).on("heartbeat-tick",function(c,a){a.imagify_bulk_data&&(a=a.imagify_bulk_data,b("#imagify-overview-chart-percent").html(a.optimized_attachments_percent+
5
+ "<span>%</span>"),b(".imagify-total-percent").html(a.optimized_attachments_percent+"%"),b(".imagify-unconsumed-percent").html(a.unconsumed_quota+"%"),b(".imagify-unconsumed-bar").animate({width:a.unconsumed_quota+"%"}),b("#imagify-total-optimized-attachments").html(a.already_optimized_attachments),b("#imagify-original-bar").find(".imagify-barnb").html(a.original_human),b("#imagify-optimized-bar").animate({width:a.optimized_percent+"%"}),b("#imagify-optimized-bar").find(".imagify-barnb").html(a.optimized_human),
6
+ b("#imagify-total-optimized-attachments-pct").html(a.optimized_percent+"%"),d.segments[0].value=a.unoptimized_attachments,d.segments[1].value=a.optimized_attachments,d.segments[2].value=a.errors_attachments,d.update())});b("#imagify-simulate-bulk-action").click(function(c){c.preventDefault();b("#imagify-bulk-action").trigger("click")});b("#imagify-bulk-action").click(function(){var c=b(this),a=b('[name="optimization_level"]:checked').val();"undefined"===typeof a&&(a=-1);if(c.attr("disabled"))return!1;
7
+ c.attr("disabled","disabled");c.find(".dashicons").addClass("rotate");confirmMessage=function(){return imagifyBulk.labels.processing};b(window).on("beforeunload",confirmMessage);swal({title:imagifyBulk.labels.waitTitle,text:imagifyBulk.labels.waitText,closeOnConfirm:!1,showConfirmButton:!1,imageUrl:imagifyBulk.labels.waitImageUrl});b.get(ajaxurl+k+"action="+imagifyBulk.ajax_action+"&optimization_level="+a+"&imagifybulkuploadnonce="+b("#imagifybulkuploadnonce").val()).done(function(a){if(a.success){swal.close();
8
+ a={lib:ajaxurl+k+"action=imagify_bulk_upload&imagifybulkuploadnonce="+b("#imagifybulkuploadnonce").val(),images:a.data,context:imagifyBulk.ajax_context};var e=b(".imagify-bulk-table table tbody"),d=0,f=0,g=0,h=0;b(".imagify-row-progress").slideDown();b(".imagify-no-uploaded-yet, .imagify-row-complete").hide(200);Optimizer=new ImagifyGulp(a);Optimizer.before(function(b){e.find(".imagify-row-progress").after('<tr id="attachment-'+b.id+'"><td class="imagify-cell-filename"><span class="imagiuploaded"><img src="'+
9
+ b.thumbnail+'"/>"</span><span class="imagifilename">'+b.filename+'</span></td><td class="imagify-cell-status"><span class="imagistatus status-compressing"><span class="dashicons dashicons-admin-generic rotate"></span>Compressing<span></span></span></td><td class="imagify-cell-original"></td><td class="imagify-cell-optimized"></td><td class="imagify-cell-percentage"></td><td class="imagify-cell-thumbnails"></td><td class="imagify-cell-savings"></td></tr>')}).each(function(a){var c=b("#imagify-progress-bar");
10
+ c.css({width:a.progress+"%"});c.find(".percent").html(a.progress+"%");a.success?(b("#attachment-"+a.image+" .imagify-cell-status").html('<span class="imagistatus status-complete"><span class="dashicons dashicons-yes"></span>Complete</span>'),b("#attachment-"+a.image+" .imagify-cell-original").html(a.original_size_human),b("#attachment-"+a.image+" .imagify-cell-optimized").html(a.new_size_human),b("#attachment-"+a.image+" .imagify-cell-percentage").html('<span class="imagify-chart"><span class="imagify-chart-container"><canvas height="18" width="18" id="imagify-consumption-chart" style="width: 18px; height: 18px;"></canvas></span></span><span class="imagipercent">'+
11
+ a.percent+"</span>%"),l(b("#attachment-"+a.image+" .imagify-cell-percentage").find("canvas")),b("#attachment-"+a.image+" .imagify-cell-thumbnails").html(a.thumbnails),b("#attachment-"+a.image+" .imagify-cell-savings").html(Optimizer.humanSize(a.overall_saving,1)),d=d+a.thumbnails+1,b(".imagify-cell-nb-files").html(d+" file(s)"),g+=a.original_overall_size,b(".imagify-total-original").html(Optimizer.humanSize(g,1)),h+=a.overall_saving,b(".imagify-total-gain").html(Optimizer.humanSize(h,1))):(error_class=
12
+ "error",error_dashicon="dismiss",error_message="Error",0<=a.error.indexOf("You've consumed all your data")&&swal({title:imagifyBulk.labels.overQuotaTitle,text:imagifyBulk.labels.overQuotaText,type:"error",customClass:"imagify-sweet-alert",html:!0},function(){location.reload()}),0<=a.error.indexOf("This image is already compressed")?(error_dashicon=error_class="warning",error_message="Notice"):(f++,b(".imagify-cell-errors").html(f+" error(s)")),b("#attachment-"+a.image).after('<tr><td colspan="7"><span class="status-'+
13
  error_class+'">'+a.error+"</span></td></tr>"),b("#attachment-"+a.image+" .imagify-cell-status").html('<span class="imagistatus status-'+error_class+'"><span class="dashicons dashicons-'+error_dashicon+'"></span>'+error_message+"</span>"))}).done(function(a){c.removeAttr("disabled");c.find(".dashicons").removeClass("rotate");b(window).off("beforeunload",confirmMessage);b(".imagify-row-progress").slideUp();"NaN"!==a.global_percent&&(b(".imagify-row-complete").removeClass("hidden").addClass("done").attr("aria-hidden",
14
+ "false"),b("html, body").animate({scrollTop:b(".imagify-row-complete").offset().top},200),b(".imagify-ac-rt-total-gain").html(a.global_gain_human),b(".imagify-ac-rt-total-original").html(a.global_original_size_human),text2share=imagifyBulk.labels.textToShare,text2share=text2share.replace("%1$s",a.global_gain_human),text2share=text2share.replace("%2$s",a.global_original_size_human),text2share=encodeURIComponent(text2share),b(".imagify-sn-twitter").attr("href","https://twitter.com/intent/tweet?source=webclient&amp;original_referer="+
15
+ imagifyBulk.labels.pluginURL+"&amp;text="+text2share+"&amp;url="+imagifyBulk.labels.pluginURL+"&amp;related=imagify&amp;hastags=performance,web,wordpress"),b(".imagify-ac-chart").attr("data-percent",a.global_percent),m(b(".imagify-ac-chart").find("canvas")))}).error(function(a){n.log("Can't optimize image with id "+a)}).run()}else c.removeAttr("disabled"),c.find(".dashicons").removeClass("rotate"),swal_text=swal_title="",b(window).off("beforeunload",confirmMessage),"invalid-api-key"==a.data.message&&
16
+ (swal_title=imagifyBulk.labels.invalidAPIKeyTitle),"over-quota"==a.data.message&&(swal_title=imagifyBulk.labels.overQuotaTitle,text=imagifyBulk.labels.overQuotaText),"no-images"==a.data.message&&(swal_title=imagifyBulk.labels.noAttachmentToOptimizeTitle,swal_text=imagifyBulk.labels.noAttachmentToOptimizeText),swal({title:swal_title,text:swal_text,type:"info",customClass:"imagify-sweet-alert"})}).fail(function(){swal({title:imagifyBulk.labels.getUnoptimizedImagesErrorTitle,text:imagifyBulk.labels.getUnoptimizedImagesErrorText,
17
+ type:"error",customClass:"imagify-sweet-alert"},function(){location.reload()})})})});var width=700,height=290;if(window.innerWidth)var clientLeft=(window.innerWidth-width)/2,clientTop=(window.innerHeight-height)/2;else clientLeft=(document.body.clientWidth-width)/2,clientTop=(document.body.clientHeight-height)/2;
18
+ [].forEach.call(document.querySelectorAll(".imagify-share-networks a"),function(b){b.addEventListener("click",function(b){window.open(this.href,"","status=no, scrollbars=no, menubar=no, top="+clientTop+", left="+clientLeft+", width="+width+", height="+height);b.preventDefault()},!1)});
assets/js/imagify.min.js CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- * imagify-gulpjs - version 0.0.1 - 2016-03-22
3
  * WP Media <contact@wp-media.me>
4
  */
5
- "use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),ImagifyGulp=function(){function a(b){_classCallCheck(this,a),this.buffer_size=1,this.lib_url=b.lib,this.default_thumb="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAIAAACRuyQOAAACy0lEQVRIx+1XS1PTUBTuT/MB1NGF3bhyhys3Pv+Ai8pCF6Bb3bsWq8xAh8441I2TSlKwPIKQJsI40IbSV0pJ6qe3OeZ1b9PaYViQyaJzc+757j3nO985TVx5v3o+b+IS6XyQUgtrj/NqWtJmZf3lavnpl53bC2vjRLqRUV4pxqbZcnrBx3F6G2ZzTjFg879IMwWtanV7g56K1Z2RtBGRpj7IWb0a8HhqOz9O2rjHfrOD34GvWcPEruGQkhmlcFgnF7bjABVJmvA4uj4vY2VJr545/yClw/okBywaadF/m63j1gT/sNO5DbXW8t4sLtJzSQtnAme/ys/BrU9FpdIgY2R3MBLidtQ+ZRt2T9qZvQrtf/N9X5BwbEQKmSVIFGZjEGlWNojB93KbCBolDNl49nVPAIYwUs5QGAOQwCtmuuyGG5ExGhZbtM7s+5+3BGC5nyazhB8RElSAePRwRaX1u9nScadfVYjtncV1HtKDlW0KQMqvID4kCAydHST2fgKhu24B7dTaSY4oYBf2MjN44yK9+FZmRnrdCnuhr3jyB7Vr89G8L9f7oU77VSPhp4POjNarzUgv77Z/ERh+R9oUXbqDXFyktFtJ5ag74cU9cBsCwy3DNoht5Fcf0pO8ysuTt27IFzKH/Hm/Qopi5ekP99zzgkU8goF7VN21ThfM9BKHylHEPbzoQ8wUlSGoG1QVnR3Vhppj66hCtgg/Ayr3tdLXCFQ7al4ABr2gAEBHoCbQFDu+RkCvqPVBx5LCZvq2dEDsgELuDqV7rM/SfvmocfNjkYcEdV8Kdcu4Wh6QLzzoPQKtQ9DQvQL9ZYhOiCYteXougo/9UEIv9YHxKK+iZ9qenouE8QIunCMMMzxHYIIomU2ksBOaI5ZHmCO8OavEnI0K2hjmvTnevPe3bjBlTvKvMsoMi4kVAgO/qBXMGvidGu8Me/lf4yIg/QYbLcmjDg4bKwAAAABJRU5ErkJggg==",this.images=b.images,this.images_ids=Object.keys(b.images),this.total_images=this.images_ids.length,this.processed_images=0,this.inprocess_images=0,this._before=new Function,this._each=new Function,this._done=new Function,this._error=new Function,this.total_original_size=0,this.total_optimized_size=0,this.total_gain=0,this.total_percent=0,this.global_original_size=0,this.global_optimized_size=0,this.global_gain=0,this.global_percent=0}return _createClass(a,[{key:"before",value:function(a){return this._before=a,this}},{key:"each",value:function(a){return this._each=a,this}},{key:"done",value:function(a){return this._done=a,this}},{key:"error",value:function(a){return this._error=a,this}},{key:"humanSize",value:function(a){if(0==a)return"0kb";var b=["b","kb","mb"],c=parseInt(Math.floor(Math.log(a)/Math.log(1024)));return(a/Math.pow(1024,c)).toFixed(2)+b[c]}},{key:"run",value:function(){for(var a=this.images_ids.length>this.buffer_size?this.buffer_size:this.images_ids.length,b=0;a>b;b++){var c=this.images_ids.shift();this.process(c)}return this}},{key:"process",value:function(a){this.inprocess_images++;var b={id:a,image_id:parseInt(a.toString().substr(1)),image_src:this.images[a],filename:this.images[a].split("/").pop(),thumbnail:this.default_thumb,error:""};this.createThumb(b)}},{key:"createThumb",value:function(a){var b=this,c=new Image;c.onerror=function(){var c=a;c.id=a.image_id,b._before(c),b.send(a)},c.onload=function(){var d=33,e=33,f=c.width,g=c.height,h=1,i=0,j=0,k=null,l=null;g>f?(h=d/f,j=d,i=g*h):(h=e/g,i=e,j=f*h),k=document.createElement("canvas"),k.width=j,k.height=i,c.width=j,c.height=i,l=k.getContext("2d"),l.drawImage(this,0,0,j,i);try{a.thumbnail=k.toDataURL("image/jpeg")}catch(m){a.thumbnail=b.default_thumb}var n=a;n.id=a.image_id,b._before(n),b.send(a),k=null},c.src=a.image_src}},{key:"send",value:function(a){var b=this,c=new XMLHttpRequest,d=!1,e={},f={filename:a.filename,image:a.image_id,error:""};c.onreadystatechange=function(){if(4===this.readyState){b.processed_images++;try{e=JSON.parse(this.responseText),d=!1}catch(a){f.success=!1,f.error="Unknown error occured",d=!0}if(f.progress=Math.floor(b.processed_images/b.total_images*100),!d){var c=e.data;f.success=e.success,e.success===!0?(b.total_original_size+=c.original_size,b.total_optimized_size+=c.new_size,b.total_gain+=c.original_size-c.new_size,b.total_percent=(b.total_optimized_size/b.total_original_size*100).toFixed(2),b.global_original_size+=c.original_overall_size,b.global_optimized_size+=c.new_overall_size,b.global_gain+=c.overall_saving,b.global_percent=(100-b.global_optimized_size/b.global_optimized_size*100).toFixed(2),f.original_size=c.original_size,f.original_size_human=b.humanSize(c.original_size),f.new_size=c.new_size,f.new_size_human=b.humanSize(c.new_size),f.percent=c.percent,f.thumbnails=c.thumbnails,f.overall_saving=c.overall_saving,f.overall_saving_human=b.humanSize(c.overall_saving),f.original_overall_size=c.original_overall_size,f.original_overall_size_human=b.humanSize(c.original_overall_size)):f.error=c.error}if(b._each(f),b.inprocess_images<b.total_images&&b.process(b.images_ids.shift()),b.processed_images==b.total_images){var g=0;0!=b.global_original_size&&(g=(100-100*(b.global_optimized_size/b.global_original_size)).toFixed(2)),b._done({global_original_size_human:b.humanSize(b.global_original_size),global_gain_human:b.humanSize(b.global_gain),global_percent:g})}}},c.open("POST",this.lib_url,!0),c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send("image="+a.image_id)}}]),a}();
1
  /*
2
+ * imagify-gulpjs - version 0.0.1 - 2016-04-07
3
  * WP Media <contact@wp-media.me>
4
  */
5
+ "use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),ImagifyGulp=function(){function a(b){_classCallCheck(this,a),this.buffer_size=3,this.lib_url=b.lib,this.default_thumb="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAIAAACRuyQOAAACy0lEQVRIx+1XS1PTUBTuT/MB1NGF3bhyhys3Pv+Ai8pCF6Bb3bsWq8xAh8441I2TSlKwPIKQJsI40IbSV0pJ6qe3OeZ1b9PaYViQyaJzc+757j3nO985TVx5v3o+b+IS6XyQUgtrj/NqWtJmZf3lavnpl53bC2vjRLqRUV4pxqbZcnrBx3F6G2ZzTjFg879IMwWtanV7g56K1Z2RtBGRpj7IWb0a8HhqOz9O2rjHfrOD34GvWcPEruGQkhmlcFgnF7bjABVJmvA4uj4vY2VJr545/yClw/okBywaadF/m63j1gT/sNO5DbXW8t4sLtJzSQtnAme/ys/BrU9FpdIgY2R3MBLidtQ+ZRt2T9qZvQrtf/N9X5BwbEQKmSVIFGZjEGlWNojB93KbCBolDNl49nVPAIYwUs5QGAOQwCtmuuyGG5ExGhZbtM7s+5+3BGC5nyazhB8RElSAePRwRaX1u9nScadfVYjtncV1HtKDlW0KQMqvID4kCAydHST2fgKhu24B7dTaSY4oYBf2MjN44yK9+FZmRnrdCnuhr3jyB7Vr89G8L9f7oU77VSPhp4POjNarzUgv77Z/ERh+R9oUXbqDXFyktFtJ5ag74cU9cBsCwy3DNoht5Fcf0pO8ysuTt27IFzKH/Hm/Qopi5ekP99zzgkU8goF7VN21ThfM9BKHylHEPbzoQ8wUlSGoG1QVnR3Vhppj66hCtgg/Ayr3tdLXCFQ7al4ABr2gAEBHoCbQFDu+RkCvqPVBx5LCZvq2dEDsgELuDqV7rM/SfvmocfNjkYcEdV8Kdcu4Wh6QLzzoPQKtQ9DQvQL9ZYhOiCYteXougo/9UEIv9YHxKK+iZ9qenouE8QIunCMMMzxHYIIomU2ksBOaI5ZHmCO8OavEnI0K2hjmvTnevPe3bjBlTvKvMsoMi4kVAgO/qBXMGvidGu8Me/lf4yIg/QYbLcmjDg4bKwAAAABJRU5ErkJggg==",this.images=b.images,this.images_ids=Object.keys(b.images),this.total_images=this.images_ids.length,this.processed_images=0,this.inprocess_images=0,this._before=new Function,this._each=new Function,this._done=new Function,this._error=new Function,this.total_original_size=0,this.total_optimized_size=0,this.total_gain=0,this.total_percent=0,this.global_original_size=0,this.global_optimized_size=0,this.global_gain=0,this.global_percent=0,this.context=b.context||"wp"}return _createClass(a,[{key:"before",value:function(a){return this._before=a,this}},{key:"each",value:function(a){return this._each=a,this}},{key:"done",value:function(a){return this._done=a,this}},{key:"error",value:function(a){return this._error=a,this}},{key:"humanSize",value:function(a){if(0==a)return"0kb";var b=["b","kb","mb"],c=parseInt(Math.floor(Math.log(a)/Math.log(1024)));return(a/Math.pow(1024,c)).toFixed(2)+b[c]}},{key:"run",value:function(){for(var a=this.images_ids.length>this.buffer_size?this.buffer_size:this.images_ids.length,b=0;a>b;b++){var c=this.images_ids.shift();this.process(c)}return this}},{key:"process",value:function(a){this.inprocess_images++;var b={id:a,image_id:parseInt(a.toString().substr(1)),image_src:this.images[a],filename:this.images[a].split("/").pop(),thumbnail:this.default_thumb,error:""};this.createThumb(b)}},{key:"createThumb",value:function(a){var b=this,c=new Image;c.onerror=function(){var c=a;c.id=a.image_id,b._before(c),b.send(a)},c.onload=function(){var d=33,e=33,f=c.width,g=c.height,h=1,i=0,j=0,k=null,l=null;g>f?(h=d/f,j=d,i=g*h):(h=e/g,i=e,j=f*h),k=document.createElement("canvas"),k.width=j,k.height=i,c.width=j,c.height=i,l=k.getContext("2d"),l.drawImage(this,0,0,j,i);try{a.thumbnail=k.toDataURL("image/jpeg")}catch(m){a.thumbnail=b.default_thumb}var n=a;n.id=a.image_id,b._before(n),b.send(a),k=null},c.src=a.image_src}},{key:"send",value:function(a){var b=this,c=new XMLHttpRequest,d=!1,e={},f={filename:a.filename,image:a.image_id,error:""};c.onreadystatechange=function(){if(4===this.readyState){b.processed_images++;try{e=JSON.parse(this.responseText),d=!1}catch(a){f.success=!1,f.error="Unknown error occured",d=!0}if(f.progress=Math.floor(b.processed_images/b.total_images*100),!d){var c=e.data;f.success=e.success,e.success===!0?(b.total_original_size+=c.original_size,b.total_optimized_size+=c.new_size,b.total_gain+=c.original_size-c.new_size,b.total_percent=(b.total_optimized_size/b.total_original_size*100).toFixed(2),b.global_original_size+=c.original_overall_size,b.global_optimized_size+=c.new_overall_size,b.global_gain+=c.overall_saving,b.global_percent=(100-b.global_optimized_size/b.global_optimized_size*100).toFixed(2),f.original_size=c.original_size,f.original_size_human=b.humanSize(c.original_size),f.new_size=c.new_size,f.new_size_human=b.humanSize(c.new_size),f.percent=c.percent,f.thumbnails=c.thumbnails,f.overall_saving=c.overall_saving,f.overall_saving_human=b.humanSize(c.overall_saving),f.original_overall_size=c.original_overall_size,f.original_overall_size_human=b.humanSize(c.original_overall_size)):f.error=c.error}if(b._each(f),b.inprocess_images<b.total_images&&b.process(b.images_ids.shift()),b.processed_images==b.total_images){var g=0;0!=b.global_original_size&&(g=(100-100*(b.global_optimized_size/b.global_original_size)).toFixed(2)),b._done({global_original_size_human:b.humanSize(b.global_original_size),global_gain_human:b.humanSize(b.global_gain),global_percent:g})}}},c.open("POST",this.lib_url,!0),c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send("image="+a.image_id+"&context="+this.context)}}]),a}();
assets/js/upload.js CHANGED
@@ -42,7 +42,7 @@ jQuery(function($){
42
  e.preventDefault();
43
 
44
  var $obj = $(this);
45
- var $parent = $obj.parents('.column-imagify_optimized_file, .compat-field-imagify .field');
46
  var href = $obj.attr('href');
47
 
48
  $parent.html('<div class="button"><span class="imagify-spinner"></span>' + $obj.data('waiting-label') + '</div>');
42
  e.preventDefault();
43
 
44
  var $obj = $(this);
45
+ var $parent = ( $obj.parents('.column-imagify_optimized_file, .compat-field-imagify .field').length ) ? $obj.parents('.column-imagify_optimized_file, .compat-field-imagify .field') : $obj.closest('.column');
46
  var href = $obj.attr('href');
47
 
48
  $parent.html('<div class="button"><span class="imagify-spinner"></span>' + $obj.data('waiting-label') + '</div>');
assets/js/upload.min.js CHANGED
@@ -1,6 +1,6 @@
1
  jQuery(function(a){function e(b){b.each(function(){var b=parseInt(a(this).closest(".imagify-chart").next(".imagify-chart-value").text()),b=[{value:b,color:"#00B3D3"},{value:100-b,color:"#D8D8D8"}];(new Chart(a(this)[0].getContext("2d"))).Doughnut(b,{segmentStrokeColor:"#FFF",segmentStrokeWidth:1,animateRotate:!0,tooltipEvents:[]})})}var c='<option value="imagify-bulk-upload">'+imagifyUpload.bulkActionsLabels.optimize+"</option>",c=c+('<option value="imagify-bulk-restore">'+imagifyUpload.bulkActionsLabels.restore+
2
  "</option>");a('.bulkactions select[name="action"]').find("option:last-child").before(c);a('.bulkactions select[name="action2"]').find("option:last-child").before(c);a("#doaction").add("#doaction2").on("click",function(b){value=a(this).prev("select").val();value=value.split("-");"imagify"===value[0]&&(b.preventDefault(),action=value[2],ids=a('input[name^="media"]:checked').map(function(){return this.value}).get(),ids.forEach(function(b,c){setTimeout(function(){a("#imagify-"+action+"-"+b).trigger("click")},
3
- 300*c)}))});a(document).on("click",".button-imagify-restore, .button-imagify-manual-upload, .button-imagify-manual-override-upload",function(b){b.preventDefault();b=a(this);var d=b.parents(".column-imagify_optimized_file, .compat-field-imagify .field"),c=b.attr("href");d.html('<div class="button"><span class="imagify-spinner"></span>'+b.data("waiting-label")+"</div>");a.get(c.replace("admin-post.php","admin-ajax.php")).done(function(a){d.html(a.data);d.find(".imagify-datas-more-action a").addClass("is-open").find(".the-text").text(d.find(".imagify-datas-more-action a").data("close"));
4
- d.find(".imagify-datas-details").addClass("is-open");e(d.find(".imagify-chart-container").find("canvas"))})});a(".imagify-datas-details").hide();a(document).on("click",".imagify-datas-more-action a",function(){a(this).hasClass("is-open")?(a(a(this).attr("href")).slideUp("300").removeClass("is-open"),a(this).removeClass("is-open").find(".the-text").text(a(this).data("open"))):(a(a(this).attr("href")).slideDown("300").addClass("is-open"),a(this).addClass("is-open").find(".the-text").text(a(this).data("close")));
5
- return!1});var c=function(a){var d={};window.location.href.replace(/[?&]+([^=&]+)=?([^&]*)?/gi,function(a,b,c){d[b]=void 0!==c?c:""});return a?d[a]?d[a]:null:d},f=function(){var b=setInterval(function(){a(".media-modal").find(".imagify-datas-details").length&&(a(".media-modal").find(".imagify-datas-details").hide(),e(a(".media-modal").find("#imagify-consumption-chart")),clearInterval(b),b=null)},20)};a(".upload-php").find(".media-frame.mode-grid").on("click",".attachment",function(){f()});0<a(".upload-php").length&&
6
- c("item")&&f();a("#insert-media-button").on("click.imagify",function(){var b=setInterval(function(){0<a(".media-frame-content").find(".attachments").length&&(a(".media-frame-content").find(".attachments").on("click.imagify",".attachment",function(){f()}),clearInterval(b))},100)});e(a(".imagify-chart-container").find("canvas"))});
1
  jQuery(function(a){function e(b){b.each(function(){var b=parseInt(a(this).closest(".imagify-chart").next(".imagify-chart-value").text()),b=[{value:b,color:"#00B3D3"},{value:100-b,color:"#D8D8D8"}];(new Chart(a(this)[0].getContext("2d"))).Doughnut(b,{segmentStrokeColor:"#FFF",segmentStrokeWidth:1,animateRotate:!0,tooltipEvents:[]})})}var c='<option value="imagify-bulk-upload">'+imagifyUpload.bulkActionsLabels.optimize+"</option>",c=c+('<option value="imagify-bulk-restore">'+imagifyUpload.bulkActionsLabels.restore+
2
  "</option>");a('.bulkactions select[name="action"]').find("option:last-child").before(c);a('.bulkactions select[name="action2"]').find("option:last-child").before(c);a("#doaction").add("#doaction2").on("click",function(b){value=a(this).prev("select").val();value=value.split("-");"imagify"===value[0]&&(b.preventDefault(),action=value[2],ids=a('input[name^="media"]:checked').map(function(){return this.value}).get(),ids.forEach(function(b,c){setTimeout(function(){a("#imagify-"+action+"-"+b).trigger("click")},
3
+ 300*c)}))});a(document).on("click",".button-imagify-restore, .button-imagify-manual-upload, .button-imagify-manual-override-upload",function(b){b.preventDefault();b=a(this);var d=b.parents(".column-imagify_optimized_file, .compat-field-imagify .field").length?b.parents(".column-imagify_optimized_file, .compat-field-imagify .field"):b.closest(".column"),c=b.attr("href");d.html('<div class="button"><span class="imagify-spinner"></span>'+b.data("waiting-label")+"</div>");a.get(c.replace("admin-post.php",
4
+ "admin-ajax.php")).done(function(a){d.html(a.data);d.find(".imagify-datas-more-action a").addClass("is-open").find(".the-text").text(d.find(".imagify-datas-more-action a").data("close"));d.find(".imagify-datas-details").addClass("is-open");e(d.find(".imagify-chart-container").find("canvas"))})});a(".imagify-datas-details").hide();a(document).on("click",".imagify-datas-more-action a",function(){a(this).hasClass("is-open")?(a(a(this).attr("href")).slideUp("300").removeClass("is-open"),a(this).removeClass("is-open").find(".the-text").text(a(this).data("open"))):
5
+ (a(a(this).attr("href")).slideDown("300").addClass("is-open"),a(this).addClass("is-open").find(".the-text").text(a(this).data("close")));return!1});var c=function(a){var d={};window.location.href.replace(/[?&]+([^=&]+)=?([^&]*)?/gi,function(a,b,c){d[b]=void 0!==c?c:""});return a?d[a]?d[a]:null:d},f=function(){var b=setInterval(function(){a(".media-modal").find(".imagify-datas-details").length&&(a(".media-modal").find(".imagify-datas-details").hide(),e(a(".media-modal").find("#imagify-consumption-chart")),
6
+ clearInterval(b),b=null)},20)};a(".upload-php").find(".media-frame.mode-grid").on("click",".attachment",function(){f()});0<a(".upload-php").length&&c("item")&&f();a("#insert-media-button").on("click.imagify",function(){var b=setInterval(function(){0<a(".media-frame-content").find(".attachments").length&&(a(".media-frame-content").find(".attachments").on("click.imagify",".attachment",function(){f()}),clearInterval(b))},100)});e(a(".imagify-chart-container").find("canvas"))});
contributors.txt CHANGED
@@ -2,9 +2,17 @@ This file contains a list of people who have made large contributions
2
  to the public version of Imagify.
3
 
4
  Developers:
5
- Jonathan Buttigieg <jonathan@imagify.io>
6
  Geoffrey Crofte <geoffrey@wp-media.me>
7
  Sébastien Decamme <sebastien@wp-media.me>
8
  Julio Potier <julio@wp-media.me>
9
  Caspar Huebinger <caspar@wp-rocket.me>
10
- Grégory Viguier <gregory@wp-rocket.me>
 
 
 
 
 
 
 
 
2
  to the public version of Imagify.
3
 
4
  Developers:
5
+ Jonathan Buttigieg <jonathan@wp-rocket.me>
6
  Geoffrey Crofte <geoffrey@wp-media.me>
7
  Sébastien Decamme <sebastien@wp-media.me>
8
  Julio Potier <julio@wp-media.me>
9
  Caspar Huebinger <caspar@wp-rocket.me>
10
+ Grégory Viguier <gregory@wp-rocket.me>
11
+
12
+ Interface Design:
13
+ Matthieu <matthieu@wp-media.me>
14
+
15
+ Translation:
16
+ Alice (Italian & Spanish) <alice@wp-rocket.me>
17
+ Caspar (German) <caspar@wp-rocket.me>
18
+ Lucy (English) <lucy@wp-rocket.me>
imagify.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Imagify
4
  Plugin URI: https://wordpress.org/plugins/imagify/
5
  Description: Dramaticaly reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwith using Imagify, the new most advanced image optimization tool.
6
- Version: 1.4.7
7
  Author: WP Media
8
  Author URI: http://wp-media.me
9
  Licence: GPLv2
@@ -17,29 +17,30 @@ Copyright 2015 WP Media
17
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
18
 
19
  // Imagify defines
20
- define( 'IMAGIFY_VERSION' , '1.4.7' );
21
- define( 'IMAGIFY_SLUG' , 'imagify' );
22
- define( 'IMAGIFY_SETTINGS_SLUG' , IMAGIFY_SLUG . '_settings' );
23
- define( 'IMAGIFY_WEB_MAIN' , 'https://imagify.io' );
24
- define( 'IMAGIFY_APP_MAIN' , 'https://app.imagify.io' );
25
- define( 'IMAGIFY_FILE' , __FILE__ );
26
- define( 'IMAGIFY_PATH' , realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
27
- define( 'IMAGIFY_INC_PATH' , realpath( IMAGIFY_PATH . 'inc/' ) . '/' );
28
- define( 'IMAGIFY_API_PATH' , realpath( IMAGIFY_INC_PATH . 'api/' ) . '/' );
29
- define( 'IMAGIFY_ADMIN_PATH' , realpath( IMAGIFY_INC_PATH . 'admin' ) . '/' );
30
- define( 'IMAGIFY_ADMIN_UI_PATH' , realpath( IMAGIFY_ADMIN_PATH . 'ui' ) . '/' );
31
- define( 'IMAGIFY_COMMON_PATH' , realpath( IMAGIFY_INC_PATH . 'common' ) . '/' );
32
- define( 'IMAGIFY_FUNCTIONS_PATH' , realpath( IMAGIFY_INC_PATH . 'functions' ) . '/' );
33
- define( 'IMAGIFY_CLASSES_PATH' , realpath( IMAGIFY_INC_PATH . 'classes' ) . '/' );
34
- define( 'IMAGIFY_3RD_PARTY_PATH' , realpath( IMAGIFY_INC_PATH . '3rd-party' ) . '/' );
35
- define( 'IMAGIFY_URL' , plugin_dir_url( IMAGIFY_FILE ) );
36
- define( 'IMAGIFY_INC_URL' , IMAGIFY_URL . 'inc/' );
37
- define( 'IMAGIFY_ADMIN_URL' , IMAGIFY_INC_URL . 'admin/' );
38
- define( 'IMAGIFY_ASSETS_URL' , IMAGIFY_URL . 'assets/' );
39
- define( 'IMAGIFY_ASSETS_JS_URL' , IMAGIFY_ASSETS_URL . 'js/' );
40
- define( 'IMAGIFY_ASSETS_CSS_URL' , IMAGIFY_ASSETS_URL . 'css/' );
41
- define( 'IMAGIFY_ASSETS_IMG_URL' , IMAGIFY_ASSETS_URL . 'images/' );
42
- define( 'IMAGIFY_MAX_BYTES' , 5242880 );
 
43
 
44
  /*
45
  * Tell WP what to do when plugin is loaded
@@ -56,23 +57,26 @@ function _imagify_init() {
56
  return;
57
  }
58
 
59
- require( IMAGIFY_INC_PATH . 'compat.php' );
60
- require( IMAGIFY_FUNCTIONS_PATH . 'options.php' );
61
- require( IMAGIFY_API_PATH . 'imagify.php' );
62
- require( IMAGIFY_FUNCTIONS_PATH . 'formatting.php' );
63
- require( IMAGIFY_FUNCTIONS_PATH . 'files.php' );
64
- require( IMAGIFY_FUNCTIONS_PATH . 'admin.php' );
65
- require( IMAGIFY_FUNCTIONS_PATH . 'api.php' );
66
- require( IMAGIFY_FUNCTIONS_PATH . 'attachments.php' );
67
- require( IMAGIFY_FUNCTIONS_PATH . 'process.php' );
68
- require( IMAGIFY_CLASSES_PATH . 'class-user.php' );
69
- require( IMAGIFY_CLASSES_PATH . 'class-attachment.php' );
70
- require( IMAGIFY_FUNCTIONS_PATH . 'admin-ui.php' );
71
- require( IMAGIFY_FUNCTIONS_PATH . 'admin-stats.php' );
72
- require( IMAGIFY_COMMON_PATH . 'attachments.php' );
73
- require( IMAGIFY_COMMON_PATH . 'admin-bar.php' );
74
- require( IMAGIFY_COMMON_PATH . 'cron.php' );
75
- require( IMAGIFY_3RD_PARTY_PATH . '3rd-party.php' );
 
 
 
76
 
77
  if ( is_admin() ) {
78
  require( IMAGIFY_ADMIN_PATH . 'upgrader.php' );
3
  Plugin Name: Imagify
4
  Plugin URI: https://wordpress.org/plugins/imagify/
5
  Description: Dramaticaly reduce image file sizes without losing quality, make your website load faster, boost your SEO and save money on your bandwith using Imagify, the new most advanced image optimization tool.
6
+ Version: 1.5
7
  Author: WP Media
8
  Author URI: http://wp-media.me
9
  Licence: GPLv2
17
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
18
 
19
  // Imagify defines
20
+ define( 'IMAGIFY_VERSION' , '1.5' );
21
+ define( 'IMAGIFY_SLUG' , 'imagify' );
22
+ define( 'IMAGIFY_SETTINGS_SLUG' , IMAGIFY_SLUG . '_settings' );
23
+ define( 'IMAGIFY_WEB_MAIN' , 'https://imagify.io' );
24
+ define( 'IMAGIFY_APP_MAIN' , 'https://app.imagify.io' );
25
+ define( 'IMAGIFY_FILE' , __FILE__ );
26
+ define( 'IMAGIFY_PATH' , realpath( plugin_dir_path( IMAGIFY_FILE ) ) . '/' );
27
+ define( 'IMAGIFY_INC_PATH' , realpath( IMAGIFY_PATH . 'inc/' ) . '/' );
28
+ define( 'IMAGIFY_API_PATH' , realpath( IMAGIFY_INC_PATH . 'api/' ) . '/' );
29
+ define( 'IMAGIFY_ADMIN_PATH' , realpath( IMAGIFY_INC_PATH . 'admin' ) . '/' );
30
+ define( 'IMAGIFY_ADMIN_UI_PATH' , realpath( IMAGIFY_ADMIN_PATH . 'ui' ) . '/' );
31
+ define( 'IMAGIFY_COMMON_PATH' , realpath( IMAGIFY_INC_PATH . 'common' ) . '/' );
32
+ define( 'IMAGIFY_FUNCTIONS_PATH' , realpath( IMAGIFY_INC_PATH . 'functions' ) . '/' );
33
+ define( 'IMAGIFY_CLASSES_PATH' , realpath( IMAGIFY_INC_PATH . 'classes' ) . '/' );
34
+ define( 'IMAGIFY_CLASSES_ABSTRACTS_PATH' , realpath( IMAGIFY_CLASSES_PATH . 'abstracts' ) . '/' );
35
+ define( 'IMAGIFY_3RD_PARTY_PATH' , realpath( IMAGIFY_INC_PATH . '3rd-party' ) . '/' );
36
+ define( 'IMAGIFY_URL' , plugin_dir_url( IMAGIFY_FILE ) );
37
+ define( 'IMAGIFY_INC_URL' , IMAGIFY_URL . 'inc/' );
38
+ define( 'IMAGIFY_ADMIN_URL' , IMAGIFY_INC_URL . 'admin/' );
39
+ define( 'IMAGIFY_ASSETS_URL' , IMAGIFY_URL . 'assets/' );
40
+ define( 'IMAGIFY_ASSETS_JS_URL' , IMAGIFY_ASSETS_URL . 'js/' );
41
+ define( 'IMAGIFY_ASSETS_CSS_URL' , IMAGIFY_ASSETS_URL . 'css/' );
42
+ define( 'IMAGIFY_ASSETS_IMG_URL' , IMAGIFY_ASSETS_URL . 'images/' );
43
+ define( 'IMAGIFY_MAX_BYTES' , 5242880 );
44
 
45
  /*
46
  * Tell WP what to do when plugin is loaded
57
  return;
58
  }
59
 
60
+ require( IMAGIFY_INC_PATH . 'compat.php' );
61
+ require( IMAGIFY_FUNCTIONS_PATH . 'options.php' );
62
+ require( IMAGIFY_API_PATH . 'imagify.php' );
63
+ require( IMAGIFY_FUNCTIONS_PATH . 'formatting.php' );
64
+ require( IMAGIFY_FUNCTIONS_PATH . 'files.php' );
65
+ require( IMAGIFY_FUNCTIONS_PATH . 'admin.php' );
66
+ require( IMAGIFY_FUNCTIONS_PATH . 'api.php' );
67
+ require( IMAGIFY_FUNCTIONS_PATH . 'attachments.php' );
68
+ require( IMAGIFY_FUNCTIONS_PATH . 'process.php' );
69
+ require( IMAGIFY_CLASSES_ABSTRACTS_PATH . 'abstract-db.php' );
70
+ require( IMAGIFY_CLASSES_ABSTRACTS_PATH . 'abstract-attachment.php' );
71
+ require( IMAGIFY_CLASSES_PATH . 'class-user.php' );
72
+ require( IMAGIFY_CLASSES_PATH . 'class-attachment.php' );
73
+ require( IMAGIFY_FUNCTIONS_PATH . 'admin-ui.php' );
74
+ require( IMAGIFY_FUNCTIONS_PATH . 'admin-stats.php' );
75
+ require( IMAGIFY_FUNCTIONS_PATH . 'i18n.php' );
76
+ require( IMAGIFY_COMMON_PATH . 'attachments.php' );
77
+ require( IMAGIFY_COMMON_PATH . 'admin-bar.php' );
78
+ require( IMAGIFY_COMMON_PATH . 'cron.php' );
79
+ require( IMAGIFY_3RD_PARTY_PATH . '3rd-party.php' );
80
 
81
  if ( is_admin() ) {
82
  require( IMAGIFY_ADMIN_PATH . 'upgrader.php' );
inc/3rd-party/3rd-party.php CHANGED
@@ -2,6 +2,7 @@
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
  require( IMAGIFY_3RD_PARTY_PATH . 'enable-media-replace.php' );
 
5
  require( IMAGIFY_3RD_PARTY_PATH . 'wp-retina-2x.php' );
6
 
7
  // Hosting
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
  require( IMAGIFY_3RD_PARTY_PATH . 'enable-media-replace.php' );
5
+ require( IMAGIFY_3RD_PARTY_PATH . 'nextgen-gallery/nextgen-gallery.php' );
6
  require( IMAGIFY_3RD_PARTY_PATH . 'wp-retina-2x.php' );
7
 
8
  // Hosting
inc/3rd-party/nextgen-gallery/inc/admin/ajax.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Get all unoptimized attachment ids.
6
+ *
7
+ * @since 1.0
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'wp_ajax_imagify_ngg_get_unoptimized_attachment_ids', '_do_wp_ajax_imagify_ngg_get_unoptimized_attachment_ids' );
11
+ function _do_wp_ajax_imagify_ngg_get_unoptimized_attachment_ids() {
12
+ check_ajax_referer( 'imagify-bulk-upload', 'imagifybulkuploadnonce' );
13
+
14
+ if ( ! current_user_can( 'upload_files' ) ) {
15
+ wp_send_json_error();
16
+ }
17
+
18
+ $user = new Imagify_User();
19
+
20
+ if ( $user->is_over_quota() ) {
21
+ wp_send_json_error( array( 'message' => 'over-quota' ) );
22
+ }
23
+
24
+ @set_time_limit( 0 );
25
+
26
+ $optimization_level = $_GET['optimization_level'];
27
+ $optimization_level = ( -1 != $optimization_level ) ? $optimization_level : get_imagify_option( 'optimization_level', 1 );
28
+ $optimization_level = (int) $optimization_level;
29
+
30
+ /**
31
+ * Filter the unoptimized attachments limit query
32
+ *
33
+ * @since 1.4.4
34
+ *
35
+ * @param int The limit (-1 for unlimited)
36
+ */
37
+ $unoptimized_attachment_limit = apply_filters( 'imagify_unoptimized_attachment_limit', 10000 );
38
+
39
+ global $wpdb;
40
+
41
+ $storage = C_Gallery_Storage::get_instance();
42
+ $ngg_table = $wpdb->prefix . 'ngg_pictures';
43
+ $data = array();
44
+ $images = $wpdb->get_results(
45
+ "SELECT picture.pid as id, picture.filename, idata.optimization_level, idata.status, idata.data
46
+ FROM $ngg_table as picture
47
+ LEFT JOIN $wpdb->ngg_imagify_data as idata
48
+ ON picture.pid = idata.pid
49
+ WHERE idata.pid IS NULL
50
+ OR idata.optimization_level != $optimization_level
51
+ OR idata.status = 'error'
52
+ LIMIT $unoptimized_attachment_limit"
53
+ , ARRAY_A
54
+ );
55
+
56
+ // Save the optimization level in a transient to retrieve it later during the process
57
+ set_transient( 'imagify_bulk_optimization_level', $optimization_level );
58
+
59
+ foreach( $images as $image ) {
60
+ $id = $image['id'];
61
+
62
+ /** This filter is documented in inc/functions/process.php */
63
+ $file_path = apply_filters( 'imagify_file_path', $storage->get_image_abspath( $id ) );
64
+
65
+ if ( file_exists( $file_path ) ) {
66
+ $attachment_data = maybe_unserialize( $image['data'] );
67
+ $attachment_error = '';
68
+
69
+ if ( isset( $attachment_data['sizes']['full']['error'] ) ) {
70
+ $attachment_error = $attachment_data['sizes']['full']['error'];
71
+ }
72
+
73
+ $attachment_error = trim( $attachment_error );
74
+ $attachment_status = $image['status'];
75
+ $attachment_optimization_level = $image['optimization_level'];
76
+ $attachment_backup_path = get_imagify_attachment_backup_path( $file_path );
77
+
78
+ // Don't try to re-optimize if the optimization level is still the same
79
+ if ( $optimization_level === $attachment_optimization_level && is_string( $attachment_error ) ) {
80
+ continue;
81
+ }
82
+
83
+ // Don't try to re-optimize if there is no backup file
84
+ if ( $optimization_level !== $attachment_optimization_level && ! file_exists( $attachment_backup_path ) && $attachment_status == 'success' ) {
85
+ continue;
86
+ }
87
+
88
+ // Don't try to re-optimize images already compressed
89
+ if ( $attachment_optimization_level >= $optimization_level && $attachment_status == 'already_optimized' ) {
90
+ continue;
91
+ }
92
+
93
+ // Don't try to re-optimize images with an empty error message
94
+ if ( $attachment_status == 'error' && empty( $attachment_error ) ) {
95
+ continue;
96
+ }
97
+
98
+ $data[ '_' . $id ] = $storage->get_image_url( $id );
99
+ }
100
+ }
101
+
102
+ if ( (bool) $data ) {
103
+ wp_send_json_success( $data );
104
+ }
105
+
106
+ wp_send_json_error( array( 'message' => 'no-images' ) );
107
+ }
inc/3rd-party/nextgen-gallery/inc/admin/bulk.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Update all Imagify stats for NGG Bulk Optimization
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'admin_init', '_imagify_ngg_update_bulk_stats' );
11
+ function _imagify_ngg_update_bulk_stats() {
12
+ if ( isset( $_GET['page'] ) && 'imagify-ngg-bulk-optimization' === $_GET['page'] ) {
13
+ add_filter( 'imagify_count_attachments' , 'imagify_ngg_count_attachments' );
14
+ add_filter( 'imagify_count_optimized_attachments' , 'imagify_ngg_count_optimized_attachments' );
15
+ add_filter( 'imagify_count_error_attachments' , 'imagify_ngg_count_error_attachments' );
16
+ add_filter( 'imagify_count_unoptimized_attachments' , 'imagify_ngg_count_unoptimized_attachments' );
17
+ add_filter( 'imagify_percent_optimized_attachments' , 'imagify_ngg_percent_optimized_attachments' );
18
+ add_filter( 'imagify_count_saving_data' , 'imagify_ngg_count_saving_data' );
19
+ }
20
+ }
inc/3rd-party/nextgen-gallery/inc/admin/db.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Create the Imagify table needed for NGG compatibility
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'admin_init' , '_imagify_create_ngg_table' );
11
+ function _imagify_create_ngg_table() {
12
+ global $wpdb;
13
+
14
+ if ( ! get_option( $wpdb->prefix . 'ngg_imagify_data_db_version' ) ) {
15
+ $db = new Imagify_NGG_DB();
16
+ $db->create_table();
17
+ }
18
+ }
inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Add some JS for NGG compatibility
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'admin_print_styles', '_imagify_ngg_admin_print_styles', PHP_INT_MAX );
11
+ function _imagify_ngg_admin_print_styles() {
12
+ $current_screen = get_current_screen();
13
+
14
+ /**
15
+ * Scripts loaded in /wp-admin/admin.php?page=nggallery-manage-gallery
16
+ */
17
+ if ( isset( $current_screen ) && ( 'nggallery-manage-images' === $current_screen->base || 'nggallery-manage-gallery' === $current_screen->base ) ) {
18
+ $upload_data = array(
19
+ 'bulkActionsLabels' => array(
20
+ 'optimize' => __( 'Optimize', 'imagify' ),
21
+ 'restore' => __( 'Restore Original', 'imagify' ),
22
+ ),
23
+ );
24
+ wp_localize_script( 'imagify-js-upload', 'imagifyUpload', $upload_data );
25
+
26
+ wp_enqueue_script( 'imagify-js-chart' );
27
+ wp_enqueue_script( 'imagify-js-upload' );
28
+ }
29
+
30
+ /**
31
+ * Scripts loaded in /wp-admin/admin.php?page=imagify-ngg-bulk-optimization
32
+ */
33
+ if ( isset( $current_screen ) && false !== strpos( $current_screen->base, '_page_imagify-ngg-bulk-optimization' ) ) {
34
+ wp_enqueue_script( 'heartbeat' );
35
+
36
+ $user = get_imagify_user();
37
+ $bulk_data = get_imagify_localize_script_translations( 'bulk' );
38
+ $bulk_data['heartbeat_id'] = 'update_ngg_bulk_data';
39
+ $bulk_data['ajax_action'] = 'imagify_ngg_get_unoptimized_attachment_ids';
40
+ $bulk_data['ajax_context'] = 'NGG';
41
+
42
+ wp_localize_script( 'imagify-js-bulk', 'imagifyBulk', $bulk_data );
43
+ wp_enqueue_script( 'imagify-js-chart' );
44
+ wp_enqueue_script( 'imagify-js-async' );
45
+ wp_enqueue_script( 'imagify-js-bulk' );
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Add Intercom on Options page an Bulk Optimization
51
+ *
52
+ * @since 1.5
53
+ * @author Jonathan Buttigieg
54
+ */
55
+ add_action( 'admin_footer', '_imagify_ngg_admin_print_intercom' );
56
+ function _imagify_ngg_admin_print_intercom() {
57
+ $current_screen = get_current_screen();
58
+
59
+ if ( isset( $current_screen ) && false !== strpos( $current_screen->base, '_page_imagify-ngg-bulk-optimization' ) ) {
60
+ _imagify_admin_print_intercom();
61
+ }
62
+ }
inc/3rd-party/nextgen-gallery/inc/admin/gallery.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /*
5
+ * Add "Imagify" column in admin.php?page=nggallery-manage-gallery
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_filter( 'ngg_manage_images_number_of_columns', '_imagify_ngg_manage_images_number_of_columns' );
11
+ function _imagify_ngg_manage_images_number_of_columns( $count ) {
12
+ $count++;
13
+ add_filter( 'ngg_manage_images_column_' . $count . '_header', '_imagify_ngg_manage_media_columns' );
14
+ add_filter( 'ngg_manage_images_column_' . $count . '_content', '_imagify_ngg_manage_media_custom_column', 10, 2 );
15
+
16
+ return $count;
17
+ }
18
+
19
+ function _imagify_ngg_manage_media_columns() {
20
+ return 'Imagify';
21
+ }
22
+
23
+ function _imagify_ngg_manage_media_custom_column( $output, $image ) {
24
+ $attachment = new Imagify_NGG_Attachment( $image );
25
+ echo get_imagify_media_column_content( $attachment, 'NGG' );
26
+ }
inc/3rd-party/nextgen-gallery/inc/admin/heartbeat.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ global $pagenow;
5
+
6
+ /**
7
+ * Prepare the data that goes back with the Heartbeat API.
8
+ *
9
+ * @since 1.5
10
+ */
11
+ add_filter( 'heartbeat_received', '_imagify_ngg_heartbeat_received', 10, 2 );
12
+ function _imagify_ngg_heartbeat_received( $response, $data ) {
13
+ if( isset( $data['imagify_heartbeat'] ) && 'update_ngg_bulk_data' === $data['imagify_heartbeat'] ) {
14
+ add_filter( 'imagify_count_saving_data', 'imagify_ngg_count_saving_data' );
15
+ $saving_data = imagify_count_saving_data();
16
+ $user = new Imagify_User();
17
+
18
+ $response['imagify_bulk_data'] = array(
19
+ 'already_optimized_attachments' => $saving_data['count'],
20
+ 'optimized_attachments' => imagify_ngg_count_optimized_attachments(),
21
+ 'unoptimized_attachments' => imagify_ngg_count_unoptimized_attachments(),
22
+ 'errors_attachments' => imagify_ngg_count_error_attachments(),
23
+ 'optimized_attachments_percent' => imagify_ngg_percent_optimized_attachments(),
24
+ 'optimized_percent' => $saving_data['percent'],
25
+ 'original_human' => size_format( $saving_data['original_size'], 1 ),
26
+ 'optimized_human' => size_format( $saving_data['optimized_size'], 1 ),
27
+ 'unconsumed_quota' => $user->get_percent_unconsumed_quota(),
28
+ );
29
+ }
30
+
31
+ return $response;
32
+ }
33
+
34
+ /**
35
+ * Update the Heartbeat API settings
36
+ *
37
+ * @since 1.5
38
+ */
39
+ if ( 'admin.php' === $pagenow && isset( $_GET['page'] ) && 'imagify-ngg-bulk-optimization' === $_GET['page'] ) {
40
+ add_filter( 'heartbeat_settings', '_imagify_heartbeat_settings', PHP_INT_MAX );
41
+ }
inc/3rd-party/nextgen-gallery/inc/admin/menu.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Add submenu in menu "Media"
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'admin_menu', '_imagify_ngg_bulk_optimization_menu' );
11
+ function _imagify_ngg_bulk_optimization_menu() {
12
+ if ( ! defined( 'NGGFOLDER' ) ) {
13
+ return;
14
+ }
15
+
16
+ add_submenu_page( NGGFOLDER, __( 'Bulk Optimization', 'imagify' ), __( 'Bulk Optimization', 'imagify' ), apply_filters( 'imagify_capacity', 'manage_options' ), IMAGIFY_SLUG . '-ngg-bulk-optimization', '_imagify_display_bulk_page' );
17
+ }
inc/3rd-party/nextgen-gallery/inc/classes/class-attachment.php ADDED
@@ -0,0 +1,449 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ class Imagify_NGG_Attachment extends Imagify_Abstract_Attachment {
5
+ /**
6
+ * The image object
7
+ *
8
+ * @since 1.5
9
+ *
10
+ * @var object
11
+ * @access public
12
+ */
13
+ public $image;
14
+
15
+ /**
16
+ * The constructor
17
+ *
18
+ * @since 1.5
19
+ * @author Jonathan Buttigieg
20
+ *
21
+ * @return void
22
+ **/
23
+ function __construct( $id ) {
24
+ if ( is_object( $id ) ) {
25
+ $this->image = $id;
26
+ $this->id = $id->pid;
27
+ } else {
28
+ $this->image = nggdb::find_image( (int) $id );
29
+ $this->id = $this->image->pid;
30
+ }
31
+
32
+ $this->row = $this->get_row();
33
+
34
+ // Load nggAdmin classe
35
+ $ngg_admin_functions_path = WP_PLUGIN_DIR . '/' . NGGFOLDER . '/products/photocrati_nextgen/modules/ngglegacy/admin/functions.php';
36
+
37
+ if ( ! class_exists( 'nggAdmin' ) && file_exists( $ngg_admin_functions_path ) ) {
38
+ require_once( $ngg_admin_functions_path );
39
+ }
40
+ }
41
+
42
+ /**
43
+ * Get the attachment backup filepath.
44
+ *
45
+ * @since 1.5
46
+ * @author Jonathan Buttigieg
47
+ *
48
+ * @access public
49
+ * @return string|false
50
+ */
51
+ public function get_backup_path() {
52
+ $backup_path = $this->get_original_path() . '_backup';
53
+
54
+ if( file_exists( $backup_path ) ) {
55
+ return $backup_path;
56
+ }
57
+
58
+ return false;
59
+ }
60
+
61
+ /**
62
+ * Get the attachment optimization data.
63
+ *
64
+ * @since 1.5
65
+ * @author Jonathan Buttigieg
66
+ *
67
+ * @access public
68
+ * @return array
69
+ */
70
+ public function get_data() {
71
+ $row = ( (bool) $this->row ) ? $this->row : $this->get_row();
72
+ return isset( $row['data'] ) ? unserialize( $row['data'] ) : false;
73
+ }
74
+
75
+ /**
76
+ * Get the attachment optimization level.
77
+ *
78
+ * @since 1.5
79
+ * @author Jonathan Buttigieg
80
+ *
81
+ * @access public
82
+ * @return int
83
+ */
84
+ public function get_optimization_level() {
85
+ $row = ( (bool) $this->row ) ? $this->row : $this->get_row();
86
+ return isset( $row['optimization_level'] ) ? $row['optimization_level'] : false;
87
+ }
88
+
89
+ /**
90
+ * Get the attachment SQL data row.
91
+ *
92
+ * @since 1.5
93
+ * @author Jonathan Buttigieg
94
+ *
95
+ * @access public
96
+ * @return array
97
+ */
98
+ public function get_row() {
99
+ $result = Imagify_NGG_DB()->get( $this->id );
100
+ return $result;
101
+ }
102
+
103
+ /**
104
+ * Get the attachment optimization status (success or error).
105
+ *
106
+ * @since 1.5
107
+ * @author Jonathan Buttigieg
108
+ *
109
+ * @access public
110
+ * @return string
111
+ */
112
+ public function get_status() {
113
+ $row = ( (bool) $this->row ) ? $this->row : $this->get_row();
114
+ return isset( $row['status'] ) ? $row['status'] : false;
115
+ }
116
+
117
+ /**
118
+ * Get the original attachment path.
119
+ *
120
+ * @since 1.5
121
+ * @author Jonathan Buttigieg
122
+ *
123
+ * @access public
124
+ * @return string
125
+ */
126
+ public function get_original_path() {
127
+ return $this->image->imagePath;
128
+ }
129
+
130
+ /**
131
+ * Get the original attachment URL.
132
+ *
133
+ * @since 1.5
134
+ * @author Jonathan Buttigieg
135
+ *
136
+ * @access public
137
+ * @return string
138
+ */
139
+ public function get_original_url() {
140
+ return $this->image->imageURL;
141
+ }
142
+
143
+ /**
144
+ * Update the metadata size of the attachment
145
+ *
146
+ * @since 1.5
147
+ *
148
+ * @access public
149
+ * @return void
150
+ */
151
+ public function update_metadata_size() {
152
+ $size = @getimagesize( $this->get_original_path() );
153
+
154
+ if ( isset( $size[0], $size[1] ) ) {
155
+ $metadata = $this->image->meta_data;
156
+ $metadata['width'] = $metadata['full']['width'] = $size[0];
157
+ $metadata['height'] = $metadata['full']['height'] = $size[1];
158
+
159
+ nggdb::update_image_meta( $this->id , $metadata );
160
+ }
161
+ }
162
+
163
+ /**
164
+ * Fills statistics data with values from $data array
165
+ *
166
+ * @since 1.5
167
+ * @author Jonathan Buttigieg
168
+ *
169
+ * @access public
170
+ * @static
171
+ * @param array $data The statistics data
172
+ * @param object $response The API response
173
+ * @param int $id The attachment ID
174
+ * @param int $url The attachment URL
175
+ * @param string $size The attachment size key
176
+ * @return bool|array False if the original size has an error or an array contains the data for other result
177
+ */
178
+ static public function fill_data( $data, $response, $id, $url, $size = 'full' ) {
179
+ if ( is_wp_error( $response ) ) {
180
+ $error = $response->get_error_message();
181
+ $error_status = 'error';
182
+
183
+ $data['sizes'][ $size ] = array(
184
+ 'success' => false,
185
+ 'error' => $error
186
+ );
187
+
188
+ // Update the error status for the original size
189
+ if ( 'full' === $size ) {
190
+ if ( false !== strpos( $error, 'This image is already compressed' ) ) {
191
+ $error_status = 'already_optimized';
192
+ }
193
+
194
+ IMAGIFY_NGG_DB()->update(
195
+ $id,
196
+ array(
197
+ 'pid' => $id,
198
+ 'status' => $error_status,
199
+ 'data' => serialize( $data )
200
+ )
201
+ );
202
+
203
+ return false;
204
+ }
205
+ } else {
206
+ $data['sizes'][ $size ] = array(
207
+ 'success' => true,
208
+ 'file_url' => $url,
209
+ 'original_size' => $response->original_size,
210
+ 'optimized_size' => $response->new_size,
211
+ 'percent' => $response->percent
212
+ );
213
+
214
+ $data['stats']['original_size'] += ( isset( $response->original_size ) ) ? $response->original_size : 0;
215
+ $data['stats']['optimized_size'] += ( isset( $response->new_size ) ) ? $response->new_size : 0;
216
+ $data['stats']['percent'] = round( ( ( $data['stats']['original_size'] - $data['stats']['optimized_size'] ) / $data['stats']['original_size'] ) * 100, 2 );
217
+ }
218
+
219
+ return $data;
220
+ }
221
+
222
+ /**
223
+ * Optimize all sizes with Imagify.
224
+ *
225
+ * @since 1.5
226
+ * @author Jonathan Buttigieg
227
+ *
228
+ * @access public
229
+ * @param int $optimization_level The optimization level (2=ultra, 1=aggressive, 0=normal)
230
+ * @param array $metadata The attachment meta data (not used here)
231
+ * @return array $data The optimization data
232
+ */
233
+ public function optimize( $optimization_level = null, $metadata = array() ) {
234
+ $optimization_level = ( is_null( $optimization_level ) ) ? (int) get_imagify_option( 'optimization_level', 1 ) : (int) $optimization_level;
235
+
236
+ $id = $this->id;
237
+ $data = array(
238
+ 'stats' => array(
239
+ 'original_size' => 0,
240
+ 'optimized_size' => 0,
241
+ 'percent' => 0,
242
+ )
243
+ );
244
+
245
+ // Get file path & URL for original image
246
+ $attachment_path = $this->get_original_path();
247
+ $attachment_url = $this->get_original_url();
248
+
249
+ // Check if the full size is already optimized
250
+ if ( $this->is_optimized() && ( $this->get_optimization_level() == $optimization_level ) ) {
251
+ return;
252
+ }
253
+
254
+ /**
255
+ * Fires before optimizing an attachment.
256
+ *
257
+ * @since 1.5
258
+ *
259
+ * @param int $id The attachment ID
260
+ */
261
+ do_action( 'before_imagify_ngg_optimize_attachment', $id );
262
+
263
+ set_transient( 'imagify-ngg-async-in-progress-' . $id, true, 10 * MINUTE_IN_SECONDS );
264
+
265
+ // Get the resize values for the original size
266
+ $resize = array();
267
+ $do_resize = get_imagify_option( 'resize_larger', false );
268
+ $resize_width = get_imagify_option( 'resize_larger_w' );
269
+ $attachment_size = @getimagesize( $attachment_path );
270
+
271
+ if ( $do_resize && isset( $attachment_size[0] ) && $resize_width < $attachment_size[0] ) {
272
+ $resize['width'] = $resize_width;
273
+ }
274
+
275
+ // Optimize the original size
276
+ $response = do_imagify( $attachment_path, array(
277
+ 'optimization_level' => $optimization_level,
278
+ 'resize' => $resize,
279
+ 'context' => 'ngg',
280
+ 'original_size' => $this->get_original_size( false )
281
+ ) );
282
+ $data = $this->fill_data( $data, $response, $id, $attachment_url );
283
+
284
+ // Save the optimization level
285
+ IMAGIFY_NGG_DB()->update(
286
+ $id,
287
+ array(
288
+ 'pid' => $id,
289
+ 'optimization_level' => $optimization_level
290
+ )
291
+ );
292
+
293
+ if ( (bool) ! $data ) {
294
+ delete_transient( 'imagify-ngg-async-in-progress-' . $id );
295
+ return;
296
+ }
297
+
298
+ // If we resized the original with success, we have to update the attachment metadata
299
+ // If not, WordPress keeps the old attachment size.
300
+ if ( $do_resize && isset( $resize['width'] ) ) {
301
+ $this->update_metadata_size();
302
+ }
303
+
304
+ // Optimize thumbnails
305
+ $data = $this->optimize_thumbnails( $optimization_level, $data );
306
+
307
+ // Save the status to success
308
+ IMAGIFY_NGG_DB()->update(
309
+ $id,
310
+ array(
311
+ 'pid' => $id,
312
+ 'status' => 'success',
313
+ )
314
+ );
315
+
316
+ /**
317
+ * Fires after optimizing an attachment.
318
+ *
319
+ * @since 1.5
320
+ *
321
+ * @param int $id The attachment ID
322
+ * @param array $data The optimization data
323
+ */
324
+ do_action( 'after_imagify_ngg_optimize_attachment', $id, $data );
325
+
326
+ delete_transient( 'imagify-ngg-async-in-progress-' . $id );
327
+
328
+ return $data;
329
+ }
330
+
331
+ /**
332
+ * Optimize all thumbnails of an image
333
+ *
334
+ * @since 1.5
335
+ * @author Jonathan Buttigieg
336
+ *
337
+ * @access public
338
+ * @param int $optimization_level The optimization level (2=ultra, 1=aggressive, 0=normal)
339
+ * @return array $data The optimization data
340
+ */
341
+ public function optimize_thumbnails( $optimization_level = null, $data = array() ) {
342
+ $id = $this->id;
343
+ $storage = C_Gallery_Storage::get_instance();
344
+ $sizes = $storage->get_image_sizes();
345
+ $data = ( (bool) $data ) ? $data : $this->get_data();
346
+
347
+ // Stop if the original image has an error
348
+ if ( $this->has_error() ) {
349
+ return $data;
350
+ }
351
+
352
+ $optimization_level = ( is_null( $optimization_level ) ) ? (int) get_imagify_option( 'optimization_level', 1 ) : (int) $optimization_level;
353
+
354
+ /**
355
+ * Fires before optimizing all thumbnails.
356
+ *
357
+ * @since 1.5
358
+ *
359
+ * @param int $id The image ID
360
+ */
361
+ do_action( 'before_imagify_ngg_optimize_thumbnails', $id );
362
+
363
+ if ( (bool) $sizes ) {
364
+ foreach ( $sizes as $size_key ) {
365
+ if ( 'full' == $size_key || isset( $data['sizes'][ $size_key ]['success'] ) ) {
366
+ continue;
367
+ }
368
+
369
+ $thumbnail_path = $storage->get_image_abspath( $this->image, $size_key );
370
+ $thumbnail_url = $storage->get_image_url( $this->image, $size_key );
371
+
372
+ // Optimize the thumbnail size
373
+ $response = do_imagify( $thumbnail_path, array(
374
+ 'backup' => false,
375
+ 'optimization_level' => $optimization_level,
376
+ 'context' => 'wp'
377
+ ) );
378
+ $data = $this->fill_data( $data, $response, $id, $thumbnail_url, $size_key );
379
+
380
+ /** This filter is documented in /inc/classes/class-attachment.php */
381
+ $data = apply_filters( 'imagify_fill_ngg_thumbnail_data', $data, $response, $id, $thumbnail_path, $thumbnail_url, $size_key, $optimization_level );
382
+ }
383
+
384
+ IMAGIFY_NGG_DB()->update(
385
+ $id,
386
+ array(
387
+ 'pid' => $id,
388
+ 'data' => serialize( $data )
389
+ )
390
+ );
391
+ }
392
+
393
+ /**
394
+ * Fires after optimizing all thumbnails.
395
+ *
396
+ * @since 1.5
397
+ *
398
+ * @param int $id The image ID
399
+ * @param array $data The optimization data
400
+ */
401
+ do_action( 'after_imagify_ngg_optimize_thumbnails', $id, $data );
402
+
403
+ return $data;
404
+ }
405
+
406
+ /**
407
+ * Process an attachment restoration from the backup file.
408
+ *
409
+ * @since 1.5
410
+ * @author Jonathan Buttigieg
411
+ *
412
+ * @access public
413
+ * @return void
414
+ */
415
+ public function restore() {
416
+ // Stop the process if there is no backup file to restore
417
+ if ( ! $this->has_backup() ) {
418
+ return;
419
+ }
420
+
421
+ $id = $this->id;
422
+ $backup_path = $this->get_backup_path();
423
+ $attachment_path = $this->get_original_path();
424
+
425
+ /**
426
+ * Fires before restoring an attachment.
427
+ *
428
+ * @since 1.5
429
+ *
430
+ * @param int $id The attachment ID
431
+ */
432
+ do_action( 'before_imagify_ngg_restore_attachment', $id );
433
+
434
+ // Create the original image from the backup
435
+ C_Gallery_Storage::get_instance()->recover_image( $id );
436
+
437
+ // Remove old optimization data
438
+ Imagify_NGG_DB()->delete( $id );
439
+
440
+ /**
441
+ * Fires after restoring an attachment.
442
+ *
443
+ * @since 1.5
444
+ *
445
+ * @param int $id The attachment ID
446
+ */
447
+ do_action( 'after_imagify_ngg_restore_attachment', $id );
448
+ }
449
+ }
inc/3rd-party/nextgen-gallery/inc/classes/class-db.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Imagify NextGen Gallery DB class
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ class Imagify_NGG_DB extends Imagify_Abstract_DB {
11
+ /**
12
+ * The single instance of the class
13
+ *
14
+ * @access protected
15
+ * @since 1.5
16
+ */
17
+ protected static $_instance = null;
18
+
19
+ /**
20
+ * Get things started
21
+ *
22
+ * @access public
23
+ * @since 1.5
24
+ * @author Jonathan Buttigieg
25
+ */
26
+ public function __construct() {
27
+ global $wpdb;
28
+
29
+ $this->table_name = $wpdb->prefix . 'ngg_imagify_data';
30
+ $this->primary_key = 'pid'; // instead of data_id
31
+ $this->version = '1.0';
32
+
33
+ // Database declaration
34
+ $wpdb->ngg_imagify_data = $this->table_name;
35
+
36
+ // Add table to the index of WordPress tables
37
+ $wpdb->tables[] = 'ngg_imagify_data';
38
+ }
39
+
40
+ /**
41
+ * Main Instance
42
+ *
43
+ * Ensures only one instance of class is loaded or can be loaded.
44
+ *
45
+ * @access public
46
+ * @since 1.5
47
+ * @author Jonathan Buttigieg
48
+ *
49
+ * @return Main instance
50
+ */
51
+ public static function instance() {
52
+ if ( is_null( self::$_instance ) ) {
53
+ self::$_instance = new self();
54
+ }
55
+
56
+ return self::$_instance;
57
+ }
58
+
59
+ /**
60
+ * Whitelist of columns
61
+ *
62
+ * @access public
63
+ * @since 1.5
64
+ * @author Jonathan Buttigieg
65
+ *
66
+ * @return array
67
+ */
68
+ public function get_columns() {
69
+ return array(
70
+ 'data_id' => '%d',
71
+ 'pid' => '%d',
72
+ 'optimization_level' => '%s',
73
+ 'status' => '%s',
74
+ 'data' => '%s',
75
+ );
76
+ }
77
+
78
+ /**
79
+ * Default column values
80
+ *
81
+ * @access public
82
+ * @since 1.5
83
+ * @author Jonathan Buttigieg
84
+ *
85
+ * @return array
86
+ */
87
+ public function get_column_defaults() {
88
+ return array(
89
+ 'pid' => 0,
90
+ 'optimization_level' => '',
91
+ 'status' => '',
92
+ 'data' => '',
93
+ );
94
+ }
95
+
96
+ /**
97
+ * Create the table
98
+ *
99
+ * @access public
100
+ * @since 1.5
101
+ * @author Jonathan Buttigieg
102
+ */
103
+ public function create_table() {
104
+ global $wpdb;
105
+
106
+ if ( ! empty( $wpdb->charset ) ) {
107
+ $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
108
+ }
109
+
110
+ if ( ! empty( $wpdb->collate ) ) {
111
+ $charset_collate .= " COLLATE $wpdb->collate";
112
+ }
113
+
114
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
115
+
116
+ $sql = "CREATE TABLE " . $this->table_name . " (
117
+ data_id int(11) NOT NULL AUTO_INCREMENT,
118
+ pid int(11) NOT NULL,
119
+ optimization_level varchar(1) NOT NULL,
120
+ status varchar(30) NOT NULL,
121
+ data longtext NOT NULL,
122
+ PRIMARY KEY (data_id)
123
+ ) $charset_collate;";
124
+
125
+ maybe_create_table( $this->table_name, $sql );
126
+
127
+ update_option( $this->table_name . '_db_version', $this->version );
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Returns the main instance of Imagify to prevent the need to use globals.
133
+ *
134
+ * @since 1.5
135
+ * @author Jonathan Buttigieg
136
+ */
137
+ function Imagify_NGG_DB() {
138
+ return Imagify_NGG_DB::instance();
139
+ }
140
+ $GLOBALS['imagify_ngg_db'] = Imagify_NGG_DB();
inc/3rd-party/nextgen-gallery/inc/classes/class-ngg-storage.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ class Imagify_NGG_Storage extends Mixin {
5
+ /**
6
+ * Delete a gallery AND all the pictures associated to this gallery!
7
+ *
8
+ * @since 1.5
9
+ * @author Jonathan Buttigieg
10
+ *
11
+ * @return parent
12
+ */
13
+ public function delete_gallery( $gallery ) {
14
+ $gallery_id = is_numeric( $gallery ) ? $gallery : $gallery->{$gallery->id_field};
15
+ $images_id = nggdb::get_ids_from_gallery( $gallery_id );
16
+
17
+ foreach( $images_id as $pid ) {
18
+ Imagify_NGG_DB()->delete( $pid );
19
+ }
20
+
21
+ return $this->call_parent( 'delete_gallery', $gallery );
22
+ }
23
+
24
+ /**
25
+ * Generates a specific size for an image
26
+ *
27
+ * @since 1.5
28
+ * @author Jonathan Buttigieg
29
+ *
30
+ * @return parent
31
+ */
32
+ public function generate_image_size( $image, $size, $params = null, $skip_defaults = false ) {
33
+ // $image could be an object or an (int) image ID
34
+ if ( is_numeric( $image ) ) {
35
+ $image = $this->object->_image_mapper->find( $image );
36
+ }
37
+
38
+ // If a user adds a watermark, rotates or resizes an image, we restore it
39
+ // TO DO - waiting for a hook to be able to re-optimize the original size after restoring
40
+ if ( isset( $image->pid ) && ( true === $params['watermark'] || ( isset( $params['rotation'] ) || isset( $params['flip'] ) ) || ( ! empty( $params['width'] ) || ! empty( $params['height'] ) ) ) ) {
41
+ $attachment = new Imagify_NGG_Attachment( $image->pid );
42
+
43
+ if ( $attachment->is_optimized() ) {
44
+ Imagify_NGG_DB()->delete( $image->pid );
45
+ }
46
+ }
47
+
48
+ return $this->call_parent( 'generate_image_size', $image, $size, $params, $skip_defaults );
49
+ }
50
+
51
+ /**
52
+ * Recover image from backup copy and reprocess it
53
+ *
54
+ * @since 1.5
55
+ * @author Jonathan Buttigieg
56
+ *
57
+ * @return parent
58
+ **/
59
+ function recover_image( $image ) {
60
+ // $image could be an object or an (int) image ID
61
+ if ( is_numeric( $image ) ) {
62
+ $image = $this->object->_image_mapper->find( $image );
63
+ }
64
+
65
+ // Remove Imagify data
66
+ if ( isset( $image->pid ) ) {
67
+ Imagify_NGG_DB()->delete( $image->pid );
68
+ }
69
+
70
+ return $this->call_parent( 'recover_image', $image );
71
+ }
72
+ }
inc/3rd-party/nextgen-gallery/inc/classes/class-ngg.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ class Imagify_NGG {
5
+ /**
6
+ * The constructor
7
+ *
8
+ * @since 1.5
9
+ * @author Jonathan Buttigieg
10
+ *
11
+ * @return void
12
+ **/
13
+ public function __construct() {
14
+ add_action( 'init', array( $this, 'add_mixin' ) );
15
+ }
16
+
17
+ /**
18
+ * Add custom NGG mixin to override its functions
19
+ *
20
+ * @since 1.5
21
+ * @author Jonathan Buttigieg
22
+ *
23
+ * @return void
24
+ **/
25
+ function add_mixin() {
26
+ include_once( 'class-ngg-storage.php' );
27
+ $storage = C_Gallery_Storage::get_instance();
28
+ $storage->get_wrapped_instance()->add_mixin( 'Imagify_NGG_Storage' );
29
+ }
30
+ }
31
+
32
+ $Imagify_NGG = new Imagify_NGG();
inc/3rd-party/nextgen-gallery/inc/common/attachments.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Auto-optimize when a new attachment is generated
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ */
10
+ add_action( 'ngg_after_new_images_added', '_imagify_ngg_optimize_attachment', PHP_INT_MAX, 2 );
11
+ function _imagify_ngg_optimize_attachment( $galleryID, $image_ids ) {
12
+ $api_key = get_imagify_option( 'api_key', false );
13
+
14
+ if ( ! empty( $api_key ) && get_imagify_option( 'auto_optimize', false ) ) {
15
+ foreach ( $image_ids as $id ) {
16
+ $body = array();
17
+ $body['metadata'] = 1;
18
+ $body['context'] = 'NGG';
19
+ $body['attachment_id'] = $id;
20
+ $body['action'] = 'imagify_async_optimize_upload_new_media';
21
+ $body['_ajax_nonce'] = wp_create_nonce( 'new_media-' . $id );
22
+
23
+ imagify_do_async_job( $body );
24
+ }
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Delete the Imagify data when an image is deleted.
30
+ *
31
+ * @since 1.5
32
+ * @author Jonathan Buttigieg
33
+ */
34
+ add_action( 'ngg_delete_picture', '_imagify_ngg_delete_picture' );
35
+ function _imagify_ngg_delete_picture( $image_id ) {
36
+ Imagify_NGG_DB()->delete( $image_id );
37
+ }
38
+
39
+ /**
40
+ * Import Imagify data from a WordPress image to a new NGG image
41
+ *
42
+ * @since 1.5
43
+ * @author Jonathan Buttigieg
44
+ */
45
+ add_filter( 'ngg_medialibrary_imported_image', '_imagify_ngg_media_library_imported_image_data', 10, 2 );
46
+ function _imagify_ngg_media_library_imported_image_data( $image, $attachment ) {
47
+ $attachment = new Imagify_Attachment( $attachment->ID );
48
+
49
+ if ( $attachment->is_optimized() ) {
50
+ $full_size = $attachment->get_size_data();
51
+ $data = array(
52
+ 'stats' => array(
53
+ 'original_size' => $full_size['original_size'],
54
+ 'optimized_size' => $full_size['optimized_size'],
55
+ 'percent' => $full_size['percent']
56
+ ),
57
+ 'sizes' => array( 'full' => $full_size )
58
+ );
59
+
60
+ Imagify_NGG_DB()->update(
61
+ $image->pid,
62
+ array(
63
+ 'pid' => $image->pid,
64
+ 'optimization_level' => $attachment->get_optimization_level(),
65
+ 'status' => $attachment->get_status(),
66
+ 'data' => maybe_serialize( $data )
67
+ )
68
+ );
69
+
70
+ $image = new Imagify_NGG_Attachment( $image->pid );
71
+ $image->optimize_thumbnails();
72
+ }
73
+ }
inc/3rd-party/nextgen-gallery/inc/functions/admin-stats.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /*
5
+ * Count number of attachments.
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ *
10
+ * @return int The number of attachments.
11
+ */
12
+ function imagify_ngg_count_attachments() {
13
+ global $wpdb;
14
+
15
+ static $count;
16
+
17
+ if ( ! $count ) {
18
+ $table_name = $wpdb->prefix . "ngg_pictures";
19
+ $count = $wpdb->get_var( "SELECT COUNT($table_name.pid) FROM $table_name" );
20
+ }
21
+
22
+ return (int) $count;
23
+ }
24
+
25
+ /*
26
+ * Count number of optimized attachments with an error.
27
+ *
28
+ * @since 1.5
29
+ * @author Jonathan Buttigieg
30
+ *
31
+ * @return int The number of attachments.
32
+ */
33
+ function imagify_ngg_count_error_attachments() {
34
+ static $count;
35
+
36
+ if ( ! $count ) {
37
+ $count = (int) Imagify_NGG_DB()->get_column_by( 'COUNT(*)', 'status', 'error' );
38
+ }
39
+
40
+ return $count;
41
+ }
42
+
43
+ /*
44
+ * Count number of optimized attachments (by Imagify or an other tool before).
45
+ *
46
+ * @since 1.5
47
+ * @author Jonathan Buttigieg
48
+ *
49
+ * @return int The number of attachments.
50
+ */
51
+ function imagify_ngg_count_optimized_attachments() {
52
+ static $count;
53
+
54
+ if ( ! $count ) {
55
+ $count = (int) Imagify_NGG_DB()->get_column_by( 'COUNT(*)', 'status', 'success' );
56
+ }
57
+
58
+ return $count;
59
+ }
60
+
61
+ /*
62
+ * Count number of unoptimized attachments.
63
+ *
64
+ * @since 1.0
65
+ * @author Jonathan Buttigieg
66
+ *
67
+ * @return int The number of attachments.
68
+ */
69
+ function imagify_ngg_count_unoptimized_attachments() {
70
+ static $count;
71
+
72
+ if ( ! $count ) {
73
+ $count = imagify_ngg_count_attachments() - imagify_ngg_count_optimized_attachments() - imagify_ngg_count_error_attachments();
74
+ }
75
+
76
+ return (int) $count;
77
+ }
78
+
79
+ /*
80
+ * Count percent of optimized attachments.
81
+ *
82
+ * @since 1.0
83
+ * @author Jonathan Buttigieg
84
+ *
85
+ * @return int The percent of optimized attachments.
86
+ */
87
+ function imagify_ngg_percent_optimized_attachments() {
88
+ $total_attachments = imagify_ngg_count_attachments();
89
+ $total_optimized_attachments = imagify_ngg_count_optimized_attachments();
90
+
91
+ $percent = ( 0 !== $total_attachments ) ? round( ( 100 - ( ( $total_attachments - ( $total_optimized_attachments ) ) / $total_attachments ) * 100 ) ) : 0;
92
+
93
+ return $percent;
94
+ }
95
+
96
+ /*
97
+ * Count percent, original & optimized size of all images optimized by Imagify.
98
+ *
99
+ * @since 1.5
100
+ * @author Jonathan Buttigieg
101
+ *
102
+ * @return array An array containing the optimization data.
103
+ */
104
+ function imagify_ngg_count_saving_data() {
105
+ global $wpdb;
106
+
107
+ $table_name = $wpdb->ngg_imagify_data;
108
+ $attachments = $wpdb->get_col( "SELECT $table_name.data FROM $table_name WHERE status = 'success'" );
109
+
110
+ return $attachments;
111
+ }
inc/3rd-party/nextgen-gallery/nextgen-gallery.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ if ( ! class_exists( 'C_NextGEN_Bootstrap' ) || ! get_site_option( 'ngg_options' ) ) {
5
+ return;
6
+ }
7
+
8
+ define( 'IMAGIFY_NGG_FILE' , __FILE__ );
9
+ define( 'IMAGIFY_NGG_PATH' , realpath( plugin_dir_path( IMAGIFY_NGG_FILE ) ) . '/' );
10
+ define( 'IMAGIFY_NGG_INC_PATH' , realpath( IMAGIFY_NGG_PATH . 'inc/' ) . '/' );
11
+ define( 'IMAGIFY_NGG_ADMIN_PATH' , realpath( IMAGIFY_NGG_INC_PATH . 'admin' ) . '/' );
12
+ define( 'IMAGIFY_NGG_COMMON_PATH' , realpath( IMAGIFY_NGG_INC_PATH . 'common' ) . '/' );
13
+ define( 'IMAGIFY_NGG_FUNCTIONS_PATH' , realpath( IMAGIFY_NGG_INC_PATH . 'functions' ) . '/' );
14
+ define( 'IMAGIFY_NGG_CLASSES_PATH' , realpath( IMAGIFY_NGG_INC_PATH . 'classes' ) . '/' );
15
+
16
+ require( IMAGIFY_NGG_CLASSES_PATH . 'class-ngg.php' );
17
+ require( IMAGIFY_NGG_CLASSES_PATH . 'class-db.php' );
18
+ require( IMAGIFY_NGG_CLASSES_PATH . 'class-attachment.php' );
19
+ require( IMAGIFY_NGG_FUNCTIONS_PATH . 'admin-stats.php' );
20
+ require( IMAGIFY_NGG_COMMON_PATH . 'attachments.php' );
21
+
22
+ if ( is_admin() ) {
23
+ require( IMAGIFY_NGG_ADMIN_PATH . 'enqueue.php' );
24
+ require( IMAGIFY_NGG_ADMIN_PATH . 'ajax.php' );
25
+ require( IMAGIFY_NGG_ADMIN_PATH . 'db.php' );
26
+ require( IMAGIFY_NGG_ADMIN_PATH . 'menu.php' );
27
+ require( IMAGIFY_NGG_ADMIN_PATH . 'gallery.php' );
28
+ require( IMAGIFY_NGG_ADMIN_PATH . 'bulk.php' );
29
+ require( IMAGIFY_NGG_ADMIN_PATH . 'heartbeat.php' );
30
+ }
inc/3rd-party/wp-retina-2x.php CHANGED
@@ -44,7 +44,11 @@ function _imagify_optimize_wr2x( $data, $response, $id, $path, $url, $size_key,
44
  $retina_path = wr2x_get_retina( $path );
45
 
46
  if ( ! empty( $retina_path ) && $do_retina ) {
47
- $response = do_imagify( $retina_path, false, $optimization_level );
 
 
 
 
48
  $data = Imagify_Attachment::fill_data( $data, $response, $id, $url, $size_key . '@2x' );
49
  }
50
 
44
  $retina_path = wr2x_get_retina( $path );
45
 
46
  if ( ! empty( $retina_path ) && $do_retina ) {
47
+ $response = do_imagify( $retina_path, array(
48
+ 'backup' => false,
49
+ 'optimization_level' => $optimization_level,
50
+ 'context' => 'wp-retina'
51
+ ) );
52
  $data = Imagify_Attachment::fill_data( $data, $response, $id, $url, $size_key . '@2x' );
53
  }
54
 
inc/admin/ajax.php CHANGED
@@ -5,6 +5,7 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * Process all thumbnails of a specific image with Imagify with the manual method.
6
  *
7
  * @since 1.0
 
8
  */
9
  add_action( 'wp_ajax_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
10
  add_action( 'admin_post_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
@@ -15,7 +16,7 @@ function _do_admin_post_imagify_manual_upload() {
15
  check_admin_referer( 'imagify-manual-upload' );
16
  }
17
 
18
- if ( ! isset( $_GET['attachment_id'] ) || ! current_user_can( 'upload_files' ) ) {
19
  if ( defined( 'DOING_AJAX' ) ) {
20
  wp_send_json_error();
21
  } else {
@@ -23,12 +24,11 @@ function _do_admin_post_imagify_manual_upload() {
23
  }
24
  }
25
 
 
26
  $attachment_id = $_GET['attachment_id'];
27
-
28
- set_transient( 'imagify-async-in-progress-' . $attachment_id, true, 10 * MINUTE_IN_SECONDS );
29
-
30
- $attachment = new Imagify_Attachment( $attachment_id );
31
-
32
  // Optimize it!!!!!
33
  $attachment->optimize();
34
 
@@ -38,7 +38,7 @@ function _do_admin_post_imagify_manual_upload() {
38
  }
39
 
40
  // Return the optimization statistics
41
- $output = get_imagify_attachment_optimization_text( $attachment_id );
42
  wp_send_json_success( $output );
43
  }
44
 
@@ -46,6 +46,7 @@ function _do_admin_post_imagify_manual_upload() {
46
  * Process a manual upload by overriding the optimization level.
47
  *
48
  * @since 1.0
 
49
  */
50
  add_action( 'wp_ajax_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
51
  add_action( 'admin_post_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
@@ -56,7 +57,7 @@ function _do_admin_post_imagify_manual_override_upload() {
56
  check_admin_referer( 'imagify-manual-override-upload' );
57
  }
58
 
59
- if ( ! isset( $_GET['attachment_id'] ) || ! current_user_can( 'upload_files' ) ) {
60
  if ( defined( 'DOING_AJAX' ) ) {
61
  wp_send_json_error();
62
  } else {
@@ -64,7 +65,9 @@ function _do_admin_post_imagify_manual_override_upload() {
64
  }
65
  }
66
 
67
- $attachment = new Imagify_Attachment( $_GET['attachment_id'] );
 
 
68
 
69
  // Restore the backup file
70
  $attachment->restore();
@@ -78,7 +81,7 @@ function _do_admin_post_imagify_manual_override_upload() {
78
  }
79
 
80
  // Return the optimization statistics
81
- $output = get_imagify_attachment_optimization_text( $attachment->id );
82
  wp_send_json_success( $output );
83
  }
84
 
@@ -86,6 +89,7 @@ function _do_admin_post_imagify_manual_override_upload() {
86
  * Process a restoration to the original attachment.
87
  *
88
  * @since 1.0
 
89
  */
90
  add_action( 'wp_ajax_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
91
  add_action( 'admin_post_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
@@ -96,7 +100,7 @@ function _do_admin_post_imagify_restore_upload() {
96
  check_admin_referer( 'imagify-restore-upload' );
97
  }
98
 
99
- if ( ! isset( $_GET['attachment_id'] ) || ! current_user_can( 'upload_files' ) ) {
100
  if ( defined( 'DOING_AJAX' ) ) {
101
  wp_send_json_error();
102
  } else {
@@ -104,7 +108,8 @@ function _do_admin_post_imagify_restore_upload() {
104
  }
105
  }
106
 
107
- $attachment = new Imagify_Attachment( $_GET['attachment_id'] );
 
108
 
109
  // Restore the backup file
110
  $attachment->restore();
@@ -115,7 +120,7 @@ function _do_admin_post_imagify_restore_upload() {
115
  }
116
 
117
  // Return the optimization button
118
- $output = '<a id="imagify-upload-' . $attachment->id . '" href="' . get_imagify_admin_url( 'manual-upload', $attachment->id ) . '" class="button-primary button-imagify-manual-upload" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Optimize', 'imagify' ) . '</a>';
119
  wp_send_json_success( $output );
120
  }
121
 
@@ -123,6 +128,7 @@ function _do_admin_post_imagify_restore_upload() {
123
  * Get all unoptimized attachment ids.
124
  *
125
  * @since 1.0
 
126
  */
127
  add_action( 'wp_ajax_imagify_get_unoptimized_attachment_ids', '_do_wp_ajax_imagify_get_unoptimized_attachment_ids' );
128
  function _do_wp_ajax_imagify_get_unoptimized_attachment_ids() {
@@ -132,6 +138,10 @@ function _do_wp_ajax_imagify_get_unoptimized_attachment_ids() {
132
  wp_send_json_error();
133
  }
134
 
 
 
 
 
135
  $user = new Imagify_User();
136
 
137
  if ( $user->is_over_quota() ) {
@@ -300,17 +310,18 @@ function _do_wp_ajax_imagify_get_unoptimized_attachment_ids() {
300
  * Process all thumbnails of a specific image with Imagify with the bulk method.
301
  *
302
  * @since 1.0
 
303
  */
304
  add_action( 'wp_ajax_imagify_bulk_upload', '_do_wp_ajax_imagify_bulk_upload' );
305
  function _do_wp_ajax_imagify_bulk_upload() {
306
  check_ajax_referer( 'imagify-bulk-upload', 'imagifybulkuploadnonce' );
307
 
308
- if ( ! isset( $_POST['image'] ) || ! current_user_can( 'upload_files' ) ) {
309
  wp_send_json_error();
310
  }
311
-
312
- $attachment_id = (int) $_POST['image'];
313
- $attachment = new Imagify_Attachment( $_POST['image'] );
314
  $optimization_level = get_transient( 'imagify_bulk_optimization_level' );
315
 
316
  // Restore it if the optimization level is updated
@@ -328,8 +339,8 @@ function _do_wp_ajax_imagify_bulk_upload() {
328
  $data = array();
329
 
330
  if ( ! $attachment->is_optimized() ) {
331
- $data['success'] = false;
332
- $data['error'] = $fullsize_data['error'];
333
 
334
  wp_send_json_error( $data );
335
  }
@@ -350,6 +361,7 @@ function _do_wp_ajax_imagify_bulk_upload() {
350
  * Create a new Imagify account.
351
  *
352
  * @since 1.0
 
353
  */
354
  add_action( 'wp_ajax_imagify_signup', '_do_wp_ajax_imagify_signup' );
355
  function _do_wp_ajax_imagify_signup() {
@@ -378,6 +390,7 @@ function _do_wp_ajax_imagify_signup() {
378
  * Process an API key check validity.
379
  *
380
  * @since 1.0
 
381
  */
382
  add_action( 'wp_ajax_imagify_check_api_key_validity', '_do_wp_ajax_imagify_check_api_key_validity' );
383
  function _do_wp_ajax_imagify_check_api_key_validity() {
@@ -405,6 +418,7 @@ function _do_wp_ajax_imagify_check_api_key_validity() {
405
  * Process a dismissed notice.
406
  *
407
  * @since 1.0
 
408
  */
409
  add_action( 'wp_ajax_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
410
  add_action( 'admin_post_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
@@ -448,6 +462,7 @@ function _do_admin_post_imagify_dismiss_notice() {
448
  * Disable a plugin which can be in conflict with Imagify
449
  *
450
  * @since 1.2
 
451
  */
452
  add_action( 'admin_post_imagify_deactivate_plugin', '_imagify_deactivate_plugin' );
453
  function _imagify_deactivate_plugin() {
@@ -465,6 +480,7 @@ function _imagify_deactivate_plugin() {
465
  * Get admin bar profile output
466
  *
467
  * @since 1.2.3
 
468
  */
469
  add_action( 'wp_ajax_imagify_get_admin_bar_profile', '_do_wp_ajax_imagify_get_admin_bar_profile' );
470
  function _do_wp_ajax_imagify_get_admin_bar_profile() {
@@ -549,10 +565,31 @@ function _do_wp_ajax_imagify_get_admin_bar_profile() {
549
  wp_send_json_success( $quota_section );
550
  }
551
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552
  /**
553
  * Optimize image on picture editing with async request
554
  *
555
  * @since 1.4
 
556
  **/
557
  add_action( 'wp_ajax_imagify_async_optimize_save_image_editor_file', '_do_admin_post_async_optimize_save_image_editor_file' );
558
  function _do_admin_post_async_optimize_save_image_editor_file() {
@@ -590,4 +627,25 @@ function _do_admin_post_async_optimize_save_image_editor_file() {
590
 
591
  die( 1 );
592
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593
  }
5
  * Process all thumbnails of a specific image with Imagify with the manual method.
6
  *
7
  * @since 1.0
8
+ * @author Jonathan Buttigieg
9
  */
10
  add_action( 'wp_ajax_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
11
  add_action( 'admin_post_imagify_manual_upload' , '_do_admin_post_imagify_manual_upload' );
16
  check_admin_referer( 'imagify-manual-upload' );
17
  }
18
 
19
+ if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
20
  if ( defined( 'DOING_AJAX' ) ) {
21
  wp_send_json_error();
22
  } else {
24
  }
25
  }
26
 
27
+ $context = $_GET['context'];
28
  $attachment_id = $_GET['attachment_id'];
29
+ $class_name = get_imagify_attachment_class_name( $_GET['context'] );
30
+ $attachment = new $class_name( $attachment_id );
31
+
 
 
32
  // Optimize it!!!!!
33
  $attachment->optimize();
34
 
38
  }
39
 
40
  // Return the optimization statistics
41
+ $output = get_imagify_attachment_optimization_text( $attachment, $context );
42
  wp_send_json_success( $output );
43
  }
44
 
46
  * Process a manual upload by overriding the optimization level.
47
  *
48
  * @since 1.0
49
+ * @author Jonathan Buttigieg
50
  */
51
  add_action( 'wp_ajax_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
52
  add_action( 'admin_post_imagify_manual_override_upload', '_do_admin_post_imagify_manual_override_upload' );
57
  check_admin_referer( 'imagify-manual-override-upload' );
58
  }
59
 
60
+ if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
61
  if ( defined( 'DOING_AJAX' ) ) {
62
  wp_send_json_error();
63
  } else {
65
  }
66
  }
67
 
68
+ $context = $_GET['context'];
69
+ $class_name = get_imagify_attachment_class_name( $context );
70
+ $attachment = new $class_name( $_GET['attachment_id'] );
71
 
72
  // Restore the backup file
73
  $attachment->restore();
81
  }
82
 
83
  // Return the optimization statistics
84
+ $output = get_imagify_attachment_optimization_text( $attachment, $context );
85
  wp_send_json_success( $output );
86
  }
87
 
89
  * Process a restoration to the original attachment.
90
  *
91
  * @since 1.0
92
+ * @author Jonathan Buttigieg
93
  */
94
  add_action( 'wp_ajax_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
95
  add_action( 'admin_post_imagify_restore_upload', '_do_admin_post_imagify_restore_upload' );
100
  check_admin_referer( 'imagify-restore-upload' );
101
  }
102
 
103
+ if ( ! isset( $_GET['attachment_id'], $_GET['context'] ) || ! current_user_can( 'upload_files' ) ) {
104
  if ( defined( 'DOING_AJAX' ) ) {
105
  wp_send_json_error();
106
  } else {
108
  }
109
  }
110
 
111
+ $class_name = get_imagify_attachment_class_name( $_GET['context'] );
112
+ $attachment = new $class_name( $_GET['attachment_id'] );
113
 
114
  // Restore the backup file
115
  $attachment->restore();
120
  }
121
 
122
  // Return the optimization button
123
+ $output = '<a id="imagify-upload-' . $attachment->id . '" href="' . get_imagify_admin_url( 'manual-upload', array( 'attachment_id' => $attachment->id ) ) . '" class="button-primary button-imagify-manual-upload" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Optimize', 'imagify' ) . '</a>';
124
  wp_send_json_success( $output );
125
  }
126
 
128
  * Get all unoptimized attachment ids.
129
  *
130
  * @since 1.0
131
+ * @author Jonathan Buttigieg
132
  */
133
  add_action( 'wp_ajax_imagify_get_unoptimized_attachment_ids', '_do_wp_ajax_imagify_get_unoptimized_attachment_ids' );
134
  function _do_wp_ajax_imagify_get_unoptimized_attachment_ids() {
138
  wp_send_json_error();
139
  }
140
 
141
+ if ( ! imagify_valid_key() ) {
142
+ wp_send_json_error( array( 'message' => 'invalid-api-key' ) );
143
+ }
144
+
145
  $user = new Imagify_User();
146
 
147
  if ( $user->is_over_quota() ) {
310
  * Process all thumbnails of a specific image with Imagify with the bulk method.
311
  *
312
  * @since 1.0
313
+ * @author Jonathan Buttigieg
314
  */
315
  add_action( 'wp_ajax_imagify_bulk_upload', '_do_wp_ajax_imagify_bulk_upload' );
316
  function _do_wp_ajax_imagify_bulk_upload() {
317
  check_ajax_referer( 'imagify-bulk-upload', 'imagifybulkuploadnonce' );
318
 
319
+ if ( ! isset( $_POST['image'], $_POST['context'] ) || ! current_user_can( 'upload_files' ) ) {
320
  wp_send_json_error();
321
  }
322
+
323
+ $class_name = get_imagify_attachment_class_name( $_POST['context'] );
324
+ $attachment = new $class_name( $_POST['image'] );
325
  $optimization_level = get_transient( 'imagify_bulk_optimization_level' );
326
 
327
  // Restore it if the optimization level is updated
339
  $data = array();
340
 
341
  if ( ! $attachment->is_optimized() ) {
342
+ $data['success'] = false;
343
+ $data['error'] = $fullsize_data['error'];
344
 
345
  wp_send_json_error( $data );
346
  }
361
  * Create a new Imagify account.
362
  *
363
  * @since 1.0
364
+ * @author Jonathan Buttigieg
365
  */
366
  add_action( 'wp_ajax_imagify_signup', '_do_wp_ajax_imagify_signup' );
367
  function _do_wp_ajax_imagify_signup() {
390
  * Process an API key check validity.
391
  *
392
  * @since 1.0
393
+ * @author Jonathan Buttigieg
394
  */
395
  add_action( 'wp_ajax_imagify_check_api_key_validity', '_do_wp_ajax_imagify_check_api_key_validity' );
396
  function _do_wp_ajax_imagify_check_api_key_validity() {
418
  * Process a dismissed notice.
419
  *
420
  * @since 1.0
421
+ * @author Jonathan Buttigieg
422
  */
423
  add_action( 'wp_ajax_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
424
  add_action( 'admin_post_imagify_dismiss_notice', '_do_admin_post_imagify_dismiss_notice' );
462
  * Disable a plugin which can be in conflict with Imagify
463
  *
464
  * @since 1.2
465
+ * @author Jonathan Buttigieg
466
  */
467
  add_action( 'admin_post_imagify_deactivate_plugin', '_imagify_deactivate_plugin' );
468
  function _imagify_deactivate_plugin() {
480
  * Get admin bar profile output
481
  *
482
  * @since 1.2.3
483
+ * @author Jonathan Buttigieg
484
  */
485
  add_action( 'wp_ajax_imagify_get_admin_bar_profile', '_do_wp_ajax_imagify_get_admin_bar_profile' );
486
  function _do_wp_ajax_imagify_get_admin_bar_profile() {
565
  wp_send_json_success( $quota_section );
566
  }
567
 
568
+ /**
569
+ * Optimize image on picture uploading with async request
570
+ *
571
+ * @since 1.5
572
+ * @author Julio Potier
573
+ **/
574
+ add_action( 'wp_ajax_imagify_async_optimize_upload_new_media', '_do_admin_post_async_optimize_upload_new_media' );
575
+ function _do_admin_post_async_optimize_upload_new_media() {
576
+ if ( isset( $_POST['_ajax_nonce'], $_POST['attachment_id'], $_POST['metadata'], $_POST['context'] )
577
+ && check_ajax_referer( 'new_media-' . $_POST['attachment_id'] )
578
+ ) {
579
+ $class_name = get_imagify_attachment_class_name( $_POST['context'] );
580
+ $attachment = new $class_name( $_POST['attachment_id'] );
581
+
582
+ // Optimize it!!!!!
583
+ $attachment->optimize( null, $_POST['metadata'] );
584
+
585
+ die( 1 );
586
+ }
587
+ }
588
  /**
589
  * Optimize image on picture editing with async request
590
  *
591
  * @since 1.4
592
+ * @author Julio Potier
593
  **/
594
  add_action( 'wp_ajax_imagify_async_optimize_save_image_editor_file', '_do_admin_post_async_optimize_save_image_editor_file' );
595
  function _do_admin_post_async_optimize_save_image_editor_file() {
627
 
628
  die( 1 );
629
  }
630
+ }
631
+
632
+ /**
633
+ * Get pricings from API for Onetime and Plans at the same time
634
+ *
635
+ * @since 1.5
636
+ * @author Geoffrey
637
+ */
638
+ add_action( 'wp_ajax_imagify_get_prices', '_imagify_get_prices_from_api' );
639
+ function _imagify_get_prices_from_api() {
640
+ if ( check_ajax_referer( 'imagify_get_pricing_' . get_current_user_id(), 'imagifynonce', false) ) {
641
+
642
+ $data = array();
643
+ $data['onetimes'] = get_imagify_packs_prices();
644
+ $data['monthlies'] = get_imagify_plans_prices();
645
+
646
+ wp_send_json_success( $data );
647
+ }
648
+ else {
649
+ wp_send_json_error( 'check_ajax_referer failed' );
650
+ }
651
  }
inc/admin/enqueue.php CHANGED
@@ -117,24 +117,8 @@ function _imagify_admin_print_styles() {
117
  wp_enqueue_script( 'imagify-js-sweetalert' );
118
  wp_enqueue_script( 'imagify-js-admin' );
119
 
120
- $admin_data = array(
121
- 'signupTitle' => __( 'Let\'s get you started!', 'imagify' ),
122
- 'signupText' => __( 'Enter your email to get an API key:', 'imagify' ),
123
- 'signupConfirmButtonText' => __( 'Sign Up', 'imagify' ),
124
- 'signupErrorEmptyEmail' => __( 'You need to specify an email!', 'imagify' ),
125
- 'signupSuccessTitle' => __( 'Congratulations!', 'imagify' ),
126
- 'signupSuccessText' => __( 'Your account has been succesfully created. Please check your mailbox, you are going to receive an email with API key.', 'imagify' ),
127
- 'saveApiKeyTitle' => __( 'Connect to Imagify!', 'imagify' ),
128
- 'saveApiKeyText' => __( 'Paste your API key below:', 'imagify' ),
129
- 'saveApiKeyConfirmButtonText' => __( 'Connect me', 'imagify' ),
130
- 'waitApiKeyCheckText' => __( 'Check in progress...', 'imagify' ),
131
- 'ApiKeyCheckSuccessTitle' => __( 'Congratulations!', 'imagify' ),
132
- 'ApiKeyCheckSuccessText' => __( 'Your API key is valid. You can now configure the Imagify settings to optimize your images.', 'imagify' ),
133
- 'ValidApiKeyText' => __( 'Your API key is valid.', 'imagify' ),
134
- 'swalCancel' => __( 'Cancel' )
135
-
136
- );
137
- wp_localize_script( 'imagify-js-admin', 'imagify', $admin_data );
138
  wp_enqueue_script( 'imagify-js-admin' );
139
 
140
  /*
@@ -147,11 +131,7 @@ function _imagify_admin_print_styles() {
147
  wp_enqueue_script( 'imagify-js-options' );
148
  wp_enqueue_style( 'imagify-css-twentytwenty' );
149
 
150
- $options_data = array(
151
- 'noBackupTitle' => __( 'Don\'t Need a Parachute?', 'imagify' ),
152
- 'noBackupText' => __( 'If you keep this option deactivated, you won\'t be able to re-optimize your images to another compression level and restore your original images in case of need.', 'imagify' )
153
- );
154
-
155
  wp_localize_script( 'imagify-js-options', 'imagifyOptions', $options_data );
156
  }
157
 
@@ -159,12 +139,7 @@ function _imagify_admin_print_styles() {
159
  * Scripts loaded in /wp-admin/upload.php and post.php
160
  */
161
  if ( isset( $current_screen ) && ( 'upload' === $current_screen->base || 'post' === $current_screen->base ) ) {
162
- $upload_data = array(
163
- 'bulkActionsLabels' => array(
164
- 'optimize' => __( 'Optimize', 'imagify' ),
165
- 'restore' => __( 'Restore Original', 'imagify' ),
166
- ),
167
- );
168
  wp_localize_script( 'imagify-js-upload', 'imagifyUpload', $upload_data );
169
  wp_enqueue_script( 'imagify-js-chart' );
170
  wp_enqueue_script( 'imagify-js-upload' );
@@ -176,18 +151,8 @@ function _imagify_admin_print_styles() {
176
  * /wp-admin/upload.php (for attachments list)
177
  *
178
  */
179
- if ( isset( $current_screen ) && ( ('post' === $current_screen -> base && 'attachment' === $current_screen -> post_type ) || 'upload' === $current_screen -> base ) ) {
180
- wp_localize_script( 'imagify-js-twentytwenty', 'imagifyTTT', array(
181
- 'labels' => array(
182
- 'original_l' => esc_html__( 'Original Image', 'imagify' ),
183
- 'optimized_l' => esc_html__( 'Optimized Image', 'imagify' ),
184
- 'compare' => esc_html__( 'Compare Original VS Optimized', 'imagify' ),
185
- 'close' => esc_html__( 'Close', 'imagify' ),
186
- 'filesize' => esc_html__( 'File Size:', 'imagify' ),
187
- 'saving' => esc_html__( 'Original Saving:', 'imagify' ),
188
- 'optimize' => esc_html__( 'Optimize', 'imagify' )
189
- )
190
- ));
191
  wp_enqueue_script( 'imagify-js-chart' );
192
  wp_enqueue_script( 'imagify-js-event-move' );
193
  wp_enqueue_script( 'imagify-js-twentytwenty' );
@@ -200,38 +165,11 @@ function _imagify_admin_print_styles() {
200
  if ( isset( $current_screen ) && 'media_page_imagify-bulk-optimization' === $current_screen->base ) {
201
  wp_enqueue_script( 'heartbeat' );
202
 
203
- $user = get_imagify_user();
204
- $bulk_data = array(
205
- 'waitTitle' => __( 'Please wait...', 'imagify' ),
206
- 'waitText' => __( 'We are trying to get your unoptimized images, it may take time depending on the number of images.', 'imagify' ),
207
- 'waitImageUrl' => IMAGIFY_ASSETS_IMG_URL . 'popin-loader.svg',
208
- 'getUnoptimizedImagesErrorTitle' => __( 'Oops, There is something wrong!', 'imagify' ),
209
- 'getUnoptimizedImagesErrorText' => __( 'An unknow error occurred when we tried to get all your unoptimized images. Try again and if the issue still persist, please contact us!', 'imagify' ),
210
- 'overviewChartLabels' => array(
211
- 'optimized' => __( 'Optimized', 'imagify' ),
212
- 'unoptimized' => __( 'Unoptimized', 'imagify' ),
213
- 'error' => __( 'Error', 'imagify' ),
214
- ),
215
- 'overQuotaTitle' => __( 'Oops, It\'s Over!', 'imagify' ),
216
- 'noAttachmentToOptimizeTitle' => __( 'Hold on!', 'imagify' ),
217
- 'noAttachmentToOptimizeText' => __( 'All your images have been optimized by Imagify. Congratulations!', 'imagify' ),
218
- 'pluginURL' => 'https://wordpress.org/plugins/imagify',
219
- 'textToShare' => __( 'Discover @imagify, the new compression tool to optimize your images for free. I saved %1$s out of %2$s!', 'imagify' ),
220
- 'totalOptimizedAttachments' => imagify_count_optimized_attachments(),
221
- 'totalUnoptimizedAttachments' => imagify_count_unoptimized_attachments(),
222
- 'totalErrorsAttachments' => imagify_count_error_attachments(),
223
- 'processing' => __( 'Imagify is still processing. Are you sure you want to leave this page?', 'imagify' ),
224
- );
225
-
226
- if ( imagify_valid_key() ) {
227
- if ( is_wp_error( $user ) ) {
228
- $bulk_data['overQuotaText'] = sprintf( __( 'To continue to optimize your images, log in to your Imagify account to %sbuy a pack or subscribe to a plan%s.', 'imagify' ), '<a href="' . IMAGIFY_APP_MAIN . '/#/subscription' . '">', '</a>' );
229
- }
230
- else {
231
- $bulk_data['overQuotaText'] = sprintf( __( 'You have consumed all your credit for this month. You will have <strong>%s back on %s</strong>.', 'imagify' ), size_format( $user->quota * 1048576 ), date_i18n( __( 'F j, Y' ), strtotime( $user->next_date_update ) ) ) . '<br/><br/>' . sprintf( __( 'To continue to optimize your images, log in to your Imagify account to %sbuy a pack or subscribe to a plan%s.', 'imagify' ), '<a href="' . IMAGIFY_APP_MAIN . '/#/subscription' . '">', '</a>' );
232
- }
233
- }
234
-
235
  wp_localize_script( 'imagify-js-bulk', 'imagifyBulk', $bulk_data );
236
  wp_enqueue_script( 'imagify-js-chart' );
237
  wp_enqueue_script( 'imagify-js-async' );
117
  wp_enqueue_script( 'imagify-js-sweetalert' );
118
  wp_enqueue_script( 'imagify-js-admin' );
119
 
120
+ $admin_data = get_imagify_localize_script_translations( 'admin' );
121
+ wp_localize_script( 'imagify-js-admin', 'imagifyAdmin', $admin_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  wp_enqueue_script( 'imagify-js-admin' );
123
 
124
  /*
131
  wp_enqueue_script( 'imagify-js-options' );
132
  wp_enqueue_style( 'imagify-css-twentytwenty' );
133
 
134
+ $options_data = get_imagify_localize_script_translations( 'options' );
 
 
 
 
135
  wp_localize_script( 'imagify-js-options', 'imagifyOptions', $options_data );
136
  }
137
 
139
  * Scripts loaded in /wp-admin/upload.php and post.php
140
  */
141
  if ( isset( $current_screen ) && ( 'upload' === $current_screen->base || 'post' === $current_screen->base ) ) {
142
+ $upload_data = get_imagify_localize_script_translations( 'upload' );
 
 
 
 
 
143
  wp_localize_script( 'imagify-js-upload', 'imagifyUpload', $upload_data );
144
  wp_enqueue_script( 'imagify-js-chart' );
145
  wp_enqueue_script( 'imagify-js-upload' );
151
  * /wp-admin/upload.php (for attachments list)
152
  *
153
  */
154
+ if ( isset( $current_screen ) && ( ('post' === $current_screen->base && 'attachment' === $current_screen->post_type ) || 'upload' === $current_screen->base ) ) {
155
+ wp_localize_script( 'imagify-js-twentytwenty', 'imagifyTTT', get_imagify_localize_script_translations( 'twentytwenty' ) );
 
 
 
 
 
 
 
 
 
 
156
  wp_enqueue_script( 'imagify-js-chart' );
157
  wp_enqueue_script( 'imagify-js-event-move' );
158
  wp_enqueue_script( 'imagify-js-twentytwenty' );
165
  if ( isset( $current_screen ) && 'media_page_imagify-bulk-optimization' === $current_screen->base ) {
166
  wp_enqueue_script( 'heartbeat' );
167
 
168
+ $bulk_data = get_imagify_localize_script_translations( 'bulk' );
169
+ $bulk_data['heartbeat_id'] = 'update_bulk_data';
170
+ $bulk_data['ajax_action'] = 'imagify_get_unoptimized_attachment_ids';
171
+ $bulk_data['ajax_context'] = 'wp';
172
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
173
  wp_localize_script( 'imagify-js-bulk', 'imagifyBulk', $bulk_data );
174
  wp_enqueue_script( 'imagify-js-chart' );
175
  wp_enqueue_script( 'imagify-js-async' );
inc/admin/heartbeat.php CHANGED
@@ -9,7 +9,7 @@ global $pagenow;
9
  * @since 1.4.5
10
  */
11
  add_filter( 'heartbeat_received', '_imagify_heartbeat_received', 10, 2 );
12
- function _imagify_heartbeat_received( $response, $data ) {
13
  if( isset( $data['imagify_heartbeat'] ) && 'update_bulk_data' === $data['imagify_heartbeat'] ) {
14
  $saving_data = imagify_count_saving_data();
15
  $user = new Imagify_User();
9
  * @since 1.4.5
10
  */
11
  add_filter( 'heartbeat_received', '_imagify_heartbeat_received', 10, 2 );
12
+ function _imagify_heartbeat_received( $response, $data ) {
13
  if( isset( $data['imagify_heartbeat'] ) && 'update_bulk_data' === $data['imagify_heartbeat'] ) {
14
  $saving_data = imagify_count_saving_data();
15
  $user = new Imagify_User();
inc/admin/media.php CHANGED
@@ -1,26 +1,29 @@
1
- <?php
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
  /*
5
  * Add "Imagify" column in the Media Uploader
6
  *
7
  * @since 1.2
 
8
  */
9
  add_filter( 'attachment_fields_to_edit', '_imagify_attachment_fields_to_edit', PHP_INT_MAX, 2 );
10
- function _imagify_attachment_fields_to_edit( $form_fields, $post ) {
11
  global $pagenow;
12
  if ( 'post.php' == $pagenow ) {
13
  return $form_fields;
14
  }
15
 
 
 
16
  $form_fields['imagify'] = array(
17
  'label' => 'Imagify',
18
  'input' => 'html',
19
- 'html' => get_imagify_media_column_content( $post->ID ),
20
  'show_in_edit' => true,
21
  'show_in_modal' => true,
22
  );
23
-
24
  return $form_fields;
25
  }
26
 
@@ -28,11 +31,10 @@ function _imagify_attachment_fields_to_edit( $form_fields, $post ) {
28
  * Add "Compare Original VS Optimized" link to the media row action
29
  *
30
  * @since 1.4.3
31
- * @author Geoffrey Crofte
32
  */
33
  add_filter( 'media_row_actions', '_imagify_add_actions_to_media_list_row', PHP_INT_MAX, 2 );
34
  function _imagify_add_actions_to_media_list_row( $actions, $post ) {
35
-
36
  // if this attachment is not an image, do nothing
37
  if ( ! wp_attachment_is_image( $post->ID ) ) {
38
  return $actions;
@@ -44,7 +46,7 @@ function _imagify_add_actions_to_media_list_row( $actions, $post ) {
44
  if ( ! imagify_valid_key() || ! $attachment->is_optimized() ) {
45
  return $actions;
46
  }
47
-
48
  // if was not activated for that image, do nothing
49
  if ( '' === $attachment->get_backup_url() ) {
50
  return $actions;
1
+ <?php
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
  /*
5
  * Add "Imagify" column in the Media Uploader
6
  *
7
  * @since 1.2
8
+ * @author Jonathan Buttigieg
9
  */
10
  add_filter( 'attachment_fields_to_edit', '_imagify_attachment_fields_to_edit', PHP_INT_MAX, 2 );
11
+ function _imagify_attachment_fields_to_edit( $form_fields, $post ) {
12
  global $pagenow;
13
  if ( 'post.php' == $pagenow ) {
14
  return $form_fields;
15
  }
16
 
17
+ $attachment = new Imagify_Attachment( $post->ID );
18
+
19
  $form_fields['imagify'] = array(
20
  'label' => 'Imagify',
21
  'input' => 'html',
22
+ 'html' => get_imagify_media_column_content( $attachment ),
23
  'show_in_edit' => true,
24
  'show_in_modal' => true,
25
  );
26
+
27
  return $form_fields;
28
  }
29
 
31
  * Add "Compare Original VS Optimized" link to the media row action
32
  *
33
  * @since 1.4.3
34
+ * @author Geoffrey Crofte
35
  */
36
  add_filter( 'media_row_actions', '_imagify_add_actions_to_media_list_row', PHP_INT_MAX, 2 );
37
  function _imagify_add_actions_to_media_list_row( $actions, $post ) {
 
38
  // if this attachment is not an image, do nothing
39
  if ( ! wp_attachment_is_image( $post->ID ) ) {
40
  return $actions;
46
  if ( ! imagify_valid_key() || ! $attachment->is_optimized() ) {
47
  return $actions;
48
  }
49
+
50
  // if was not activated for that image, do nothing
51
  if ( '' === $attachment->get_backup_url() ) {
52
  return $actions;
inc/admin/meta-boxes.php CHANGED
@@ -22,7 +22,7 @@ function _imagify_attachment_submitbox_misc_actions() {
22
  echo '</div>';
23
  } elseif ( $attachment->is_optimized() || $attachment->has_error() ) {
24
  echo '<div class="misc-pub-section misc-pub-imagify"><h4>' . __( 'Imagify', 'imagify' ) . '</h4></div>';
25
- echo get_imagify_attachment_optimization_text( $post->ID );
26
  } elseif ( false !== get_transient( 'imagify-async-in-progress-' . $post->ID ) ) {
27
  echo '<div class="misc-pub-section misc-pub-imagify">';
28
  echo '<div class="button"><span class="imagify-spinner"></span>';
@@ -30,7 +30,7 @@ function _imagify_attachment_submitbox_misc_actions() {
30
  echo '</div>';
31
  echo '</div>';
32
  } else {
33
- $url = get_imagify_admin_url( 'manual-upload', $post->ID );
34
  printf( '<div class="misc-pub-section misc-pub-imagify"><a class="button-primary" href="%s">%s</a></div>', $url, __( 'Optimize', 'imagify' ) );
35
  }
36
 
22
  echo '</div>';
23
  } elseif ( $attachment->is_optimized() || $attachment->has_error() ) {
24
  echo '<div class="misc-pub-section misc-pub-imagify"><h4>' . __( 'Imagify', 'imagify' ) . '</h4></div>';
25
+ echo get_imagify_attachment_optimization_text( $attachment );
26
  } elseif ( false !== get_transient( 'imagify-async-in-progress-' . $post->ID ) ) {
27
  echo '<div class="misc-pub-section misc-pub-imagify">';
28
  echo '<div class="button"><span class="imagify-spinner"></span>';
30
  echo '</div>';
31
  echo '</div>';
32
  } else {
33
+ $url = get_imagify_admin_url( 'manual-upload', array( 'attachment_id' => $post->ID ) );
34
  printf( '<div class="misc-pub-section misc-pub-imagify"><a class="button-primary" href="%s">%s</a></div>', $url, __( 'Optimize', 'imagify' ) );
35
  }
36
 
inc/admin/options.php CHANGED
@@ -3,7 +3,8 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
  /**
5
  * Fix the capability for our capacity filter hook
6
- *
 
7
  * @since 1.0
8
  */
9
  add_filter( 'option_page_capability_imagify', '_imagify_correct_capability_for_options_page' );
@@ -14,18 +15,19 @@ function _imagify_correct_capability_for_options_page( $capability ) {
14
 
15
  /**
16
  * Tell to WordPress to be confident with our setting, we are clean!
17
- *
 
18
  * @since 1.0
19
  */
20
  add_action( 'admin_init', '_imagify_register_setting' );
21
- function _imagify_register_setting()
22
- {
23
  register_setting( 'imagify', 'imagify_settings' );
24
  }
25
 
26
  /**
27
  * Filter specific options before its value is (maybe) serialized and updated.
28
  *
 
29
  * @since 1.0
30
  */
31
  add_filter( 'pre_update_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_pre_update_option', 10, 2 );
@@ -63,12 +65,14 @@ function _imagify_pre_update_option( $value, $old_value ) {
63
  /**
64
  * Used to launch some actions after saving the options
65
  *
 
66
  * @since 1.0
 
67
  */
68
  add_action( 'update_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_after_save_options', 10, 2 );
69
  add_action( 'update_site_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_after_save_options', 10, 2 );
70
- function _imagify_after_save_options( $oldvalue, $value )
71
- {
72
  if ( ! ( (bool) $oldvalue && (bool) $value ) ) {
73
  return;
74
  }
@@ -83,6 +87,15 @@ function _imagify_after_save_options( $oldvalue, $value )
83
  imagify_dismiss_notice( 'wrong-api-key' );
84
  }
85
  }
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
 
3
 
4
  /**
5
  * Fix the capability for our capacity filter hook
6
+ *
7
+ * @author Jonathan
8
  * @since 1.0
9
  */
10
  add_filter( 'option_page_capability_imagify', '_imagify_correct_capability_for_options_page' );
15
 
16
  /**
17
  * Tell to WordPress to be confident with our setting, we are clean!
18
+ *
19
+ * @author Jonathan
20
  * @since 1.0
21
  */
22
  add_action( 'admin_init', '_imagify_register_setting' );
23
+ function _imagify_register_setting() {
 
24
  register_setting( 'imagify', 'imagify_settings' );
25
  }
26
 
27
  /**
28
  * Filter specific options before its value is (maybe) serialized and updated.
29
  *
30
+ * @author Jonathan
31
  * @since 1.0
32
  */
33
  add_filter( 'pre_update_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_pre_update_option', 10, 2 );
65
  /**
66
  * Used to launch some actions after saving the options
67
  *
68
+ * @author Jonathan
69
  * @since 1.0
70
+ * @since 1.5 Used to redirect user to Bulk Optimizer (if requested)
71
  */
72
  add_action( 'update_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_after_save_options', 10, 2 );
73
  add_action( 'update_site_option_' . IMAGIFY_SETTINGS_SLUG, '_imagify_after_save_options', 10, 2 );
74
+ function _imagify_after_save_options( $oldvalue, $value ) {
75
+
76
  if ( ! ( (bool) $oldvalue && (bool) $value ) ) {
77
  return;
78
  }
87
  imagify_dismiss_notice( 'wrong-api-key' );
88
  }
89
  }
90
+
91
+ /**
92
+ * @author Geoffrey
93
+ * @since 1.5
94
+ */
95
+ if ( isset( $_POST['submit-goto-bulk'] ) ) {
96
+ wp_safe_redirect( get_admin_url( get_current_blog_id(), 'upload.php?page=imagify-bulk-optimization' ) );
97
+ exit;
98
+ }
99
  }
100
 
101
 
inc/admin/ui/bulk.php CHANGED
@@ -72,6 +72,8 @@ function _imagify_display_bulk_page() {
72
 
73
  <img width="225" height="26" alt="Imagify" src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>imagify-logo.png" class="imagify-logo" />
74
  </div>
 
 
75
 
76
  <div class="imagify-sub-title">
77
  <svg class="icon icon-bulk" viewBox="0 0 38 36" width="38" height="36" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m233.09 177.21l-5.52 10.248c-.08.145-.018.272-.023.388-.074.193-.033.4-.033.619v21.615c0 .952.601 1.429 1.552 1.429h33.897c.952 0 1.962-.478 1.962-1.429v-21.615c0-.487-.323-.925-.649-1.24l-5.623-9.976c-.405-.726-1.202-1.179-2.034-1.182l-21.486-.068c-.849 0-1.64.464-2.043 1.211m30.424 32.869c0 .173-.378.018-.551.018h-33.897c-.172 0-.14.155-.14-.018v-21.576l33.961-.281c.066.008.186.09.263.128.054.027.205.049.258.073.002.014.106.027.106.041v21.615m-6.153-32.11l4.91 8.835h-14.992v-9.354l9.306.045c.322.001.619.192.776.474m-11.494-.523v9.358h-16.306l4.773-8.892c.155-.289.456-.484.787-.484l10.746.018m7.06 17.12c0 .39-.316.706-.706.706h-12.706c-.39 0-.706-.316-.706-.706 0-.39.316-.706.706-.706h12.706c.39 0 .706.316.706.706" transform="translate(-227-176)" fill="#7a8996"/></g></svg>
@@ -84,93 +86,8 @@ function _imagify_display_bulk_page() {
84
  <div class="imagify-settings-section">
85
 
86
  <div class="imagify-columns">
87
-
88
- <div class="col-1-3 col-informations">
89
- <h3><?php _e( 'Information', 'imagify' ); ?></h3>
90
- <ul class="imagify-list-dash">
91
- <li><strong><?php _e( 'Please be aware that optimizing a large number of images can take a while depending on your server and network speed.', 'imagify' ); ?></strong>
92
- <?php
93
- if ( get_transient( IMAGIFY_SLUG . '_large_library' ) ) {
94
- printf( __( 'If you have more than %s images, you will need to launch the bulk optimization several times.' , 'imagify' ), number_format_i18n( apply_filters( 'imagify_unoptimized_attachment_limit', 10000 ) ) );
95
- }
96
- ?>
97
- </li>
98
- <li><?php _e( 'You must keep this page open while the bulk optimizaton is processing. If you leave you can come back to continue where it left off.', 'imagify' ); ?></li>
99
- </ul>
100
-
101
- <div class="imagify-bulk-submit">
102
-
103
- <?php if ( get_imagify_option( 'backup', 0 ) == "1" ) { ?>
104
-
105
- <p>
106
- <strong><?php _e( 'Select Your Compression Level', 'imagify' ); ?></strong>
107
- <br>
108
- <?php
109
- $default_set = __( 'Ultra', 'imagify' );
110
- switch( get_imagify_option( 'optimization_level' ) ) {
111
- case '1':
112
- $default_set = __( 'Aggressive', 'imagify' );
113
- break;
114
- case '0':
115
- $default_set = __( 'Normal', 'imagify' );
116
- break;
117
- }
118
-
119
- _e( 'Your default setting:', 'imagify' );
120
- echo '&nbsp;<strong class="imagify-primary">' . $default_set . '</strong>';
121
- ?>
122
- </p>
123
-
124
- <p class="imagify-inline-options">
125
- <input type="radio" id="imagify-optimization_level_normal" name="optimization_level" value="0" <?php checked( get_imagify_option( 'optimization_level' ), 0 ); ?>>
126
- <label for="imagify-optimization_level_normal">
127
- <?php _e( 'Normal', 'imagify' ); ?>
128
- </label>
129
-
130
- <input type="radio" id="imagify-optimization_level_aggro" name="optimization_level" value="1" <?php checked( get_imagify_option( 'optimization_level' ), 1 ); ?>>
131
- <label for="imagify-optimization_level_aggro">
132
- <?php _e( 'Aggressive', 'imagify' ); ?>
133
- </label>
134
-
135
- <input type="radio" id="imagify-optimization_level_ultra" name="optimization_level" value="2" <?php checked( get_imagify_option( 'optimization_level' ), 2 ); ?>>
136
- <label for="imagify-optimization_level_ultra">
137
- <?php _e( 'Ultra', 'imagify' ); ?>
138
- </label>
139
- </p>
140
-
141
- <?php
142
- }
143
- else {
144
- ?>
145
- <p>
146
- <strong><?php printf( __( 'Don\'t forget to check %syour settings%s before bulk optimization.', 'imagify' ), '<a href="' . get_imagify_admin_url() . '">', '</a>' ); ?></strong>
147
- </p>
148
- <?php
149
- }
150
- ?>
151
-
152
- <p>
153
- <?php wp_nonce_field( 'imagify-bulk-upload', 'imagifybulkuploadnonce' ); ?>
154
- <button id="imagify-bulk-action" type="button" class="button button-primary">
155
- <span class="dashicons dashicons-admin-generic"></span>
156
- <span class="button-text"><?php _e( 'Imagif\'em all', 'imagify'); ?></span>
157
- </button>
158
- <?php
159
- if ( $user->is_free() ) { ?>
160
- <span class="imagify-tooltips right">
161
- <span class="tooltip-content">
162
- <span class="icon icon-round" aria-hidden="true">i</span>
163
- <?php printf( __( 'All images which are over to %s could be optimized using the pro version.', 'imagify' ), size_format( IMAGIFY_MAX_BYTES , 0 ) ); ?>
164
- </span>
165
- </span>
166
- <?php
167
- }
168
- ?>
169
- </p>
170
- </div>
171
- </div>
172
 
173
- <div class="col-1-3">
174
  <h3><?php _e( 'Overview', 'imagify' ); ?></h3>
175
 
176
  <div class="imagify-chart-container">
@@ -178,6 +95,8 @@ function _imagify_display_bulk_page() {
178
  <div id="imagify-overview-chart-percent" class="imagify-chart-percent"><?php echo imagify_percent_optimized_attachments(); ?><span>%</span></div>
179
  </div>
180
  <div id="imagify-overview-chart-legend"></div>
 
 
181
  </div>
182
 
183
  <div class="col-1-3 col-statistics">
@@ -219,8 +138,91 @@ function _imagify_display_bulk_page() {
219
  </div>
220
  </div>
221
 
222
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  </div><!-- .imagify-settings-section -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
 
225
  <!-- The Success/Complete bar -->
226
  <div class="imagify-row-complete hidden" aria-hidden="true">
@@ -295,6 +297,9 @@ function _imagify_display_bulk_page() {
295
  </tbody>
296
  </table>
297
  </div>
 
 
 
298
  </div>
299
  <?php
300
  }
72
 
73
  <img width="225" height="26" alt="Imagify" src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>imagify-logo.png" class="imagify-logo" />
74
  </div>
75
+
76
+ <?php //echo get_imagify_new_to_imagify(); ?>
77
 
78
  <div class="imagify-sub-title">
79
  <svg class="icon icon-bulk" viewBox="0 0 38 36" width="38" height="36" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m233.09 177.21l-5.52 10.248c-.08.145-.018.272-.023.388-.074.193-.033.4-.033.619v21.615c0 .952.601 1.429 1.552 1.429h33.897c.952 0 1.962-.478 1.962-1.429v-21.615c0-.487-.323-.925-.649-1.24l-5.623-9.976c-.405-.726-1.202-1.179-2.034-1.182l-21.486-.068c-.849 0-1.64.464-2.043 1.211m30.424 32.869c0 .173-.378.018-.551.018h-33.897c-.172 0-.14.155-.14-.018v-21.576l33.961-.281c.066.008.186.09.263.128.054.027.205.049.258.073.002.014.106.027.106.041v21.615m-6.153-32.11l4.91 8.835h-14.992v-9.354l9.306.045c.322.001.619.192.776.474m-11.494-.523v9.358h-16.306l4.773-8.892c.155-.289.456-.484.787-.484l10.746.018m7.06 17.12c0 .39-.316.706-.706.706h-12.706c-.39 0-.706-.316-.706-.706 0-.39.316-.706.706-.706h12.706c.39 0 .706.316.706.706" transform="translate(-227-176)" fill="#7a8996"/></g></svg>
86
  <div class="imagify-settings-section">
87
 
88
  <div class="imagify-columns">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
+ <div class="col-1-3 col-overview">
91
  <h3><?php _e( 'Overview', 'imagify' ); ?></h3>
92
 
93
  <div class="imagify-chart-container">
95
  <div id="imagify-overview-chart-percent" class="imagify-chart-percent"><?php echo imagify_percent_optimized_attachments(); ?><span>%</span></div>
96
  </div>
97
  <div id="imagify-overview-chart-legend"></div>
98
+
99
+ <p class="imagify-global-optim-phrase imagify-clear"><?php printf( esc_html__( 'You optimized %s images of your website', 'imagify' ), '<span class="imagify-total-percent">' . imagify_percent_optimized_attachments() . '%</span>' ); ?></p>
100
  </div>
101
 
102
  <div class="col-1-3 col-statistics">
138
  </div>
139
  </div>
140
 
141
+ <div class="col-1-3 col-informations">
142
+ <h3><?php _e( 'Information', 'imagify' ); ?></h3>
143
+ <ul class="imagify-list-infos">
144
+ <li>
145
+ <?php
146
+ esc_html_e( 'Please be aware that optimizing a large number of images can take a while depending on your server and network speed.', 'imagify' );
147
+
148
+ if ( get_transient( IMAGIFY_SLUG . '_large_library' ) ) {
149
+ printf( __( 'If you have more than %s images, you will need to launch the bulk optimization several times.' , 'imagify' ), number_format_i18n( apply_filters( 'imagify_unoptimized_attachment_limit', 10000 ) ) );
150
+ }
151
+ ?>
152
+ </li>
153
+ <li><?php esc_html_e( 'You must keep this page open while the bulk optimizaton is processing. If you leave you can come back to continue where it left off.', 'imagify' ); ?></li>
154
+ </ul>
155
+ </div><!-- .col-1-2 -->
156
+ </div><!-- .imagify-columns -->
157
  </div><!-- .imagify-settings-section -->
158
+
159
+ <div class="imagify-section imagify-section-gray">
160
+ <div class="imagify-bulk-submit imagify-columns imagify-count">
161
+ <div class="col-1-2">
162
+ <?php if ( get_imagify_option( 'backup', 0 ) == "1" ) { ?>
163
+
164
+ <p class="imagify-count-title"><?php esc_html_e( 'Select Your Compression Level', 'imagify' ); ?>
165
+ <?php
166
+ $default_set = esc_html__( 'Ultra', 'imagify' );
167
+ switch( get_imagify_option( 'optimization_level' ) ) {
168
+ case '1':
169
+ $default_set = esc_html__( 'Aggressive', 'imagify' );
170
+ break;
171
+ case '0':
172
+ $default_set = esc_html__( 'Normal', 'imagify' );
173
+ break;
174
+ }
175
+
176
+ echo '<em class="imagify-default-settings">(' . sprintf( esc_html__( 'Your default setting: %s', 'imagify' ), '&nbsp;<strong class="imagify-primary">' . $default_set . '</strong>' ) . ')</em>';
177
+ ?>
178
+ </p>
179
+ <p class="imagify-inline-options">
180
+ <input type="radio" id="imagify-optimization_level_normal" name="optimization_level" value="0" <?php checked( get_imagify_option( 'optimization_level' ), 0 ); ?>>
181
+ <label for="imagify-optimization_level_normal">
182
+ <?php esc_html_e( 'Normal', 'imagify' ); ?>
183
+ </label>
184
+
185
+ <input type="radio" id="imagify-optimization_level_aggro" name="optimization_level" value="1" <?php checked( get_imagify_option( 'optimization_level' ), 1 ); ?>>
186
+ <label for="imagify-optimization_level_aggro">
187
+ <?php esc_html_e( 'Aggressive', 'imagify' ); ?>
188
+ </label>
189
+
190
+ <input type="radio" id="imagify-optimization_level_ultra" name="optimization_level" value="2" <?php checked( get_imagify_option( 'optimization_level' ), 2 ); ?>>
191
+ <label for="imagify-optimization_level_ultra">
192
+ <?php esc_html_e( 'Ultra', 'imagify' ); ?>
193
+ </label>
194
+ </p>
195
+
196
+ <?php
197
+ }
198
+ else {
199
+ ?>
200
+ <p>
201
+ <strong><?php printf( __( 'Don\'t forget to check %syour settings%s before bulk optimization.', 'imagify' ), '<a href="' . get_imagify_admin_url() . '">', '</a>' ); ?></strong>
202
+ </p>
203
+ <?php
204
+ }
205
+ ?>
206
+ </div>
207
+ <div class="col-1-2">
208
+ <p class="imagify-count-title"><?php esc_html_e( 'Let\'s go!', 'imagify' ); ?></p>
209
+ <div class="imagify-table">
210
+ <div class="imagify-cell imagify-pl0">
211
+ <p>
212
+ <?php wp_nonce_field( 'imagify-bulk-upload', 'imagifybulkuploadnonce' ); ?>
213
+ <button id="imagify-bulk-action" type="button" class="button button-primary">
214
+ <span class="dashicons dashicons-admin-generic"></span>
215
+ <span class="button-text"><?php _e( 'Imagif\'em all', 'imagify'); ?></span>
216
+ </button>
217
+ </p>
218
+ </div>
219
+ <div class="imagify-cell imagify-pl0">
220
+ <p class="imagify-info-block"><?php printf( __( 'All images greater than %s will be optimized when using a paying monthly plan.', 'imagify' ), size_format( 5000000 ) ); ?></p>
221
+ </div>
222
+ </div>
223
+ </div>
224
+ </div><!-- .imagify-bulk-submit -->
225
+ </div>
226
 
227
  <!-- The Success/Complete bar -->
228
  <div class="imagify-row-complete hidden" aria-hidden="true">
297
  </tbody>
298
  </table>
299
  </div>
300
+
301
+ <?php //imagify_payment_modal(); ?>
302
+
303
  </div>
304
  <?php
305
  }
inc/admin/ui/notices.php CHANGED
@@ -5,6 +5,7 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * This warning is displayed when the API key is empty
6
  *
7
  * @since 1.0
 
8
  */
9
  add_action( 'all_admin_notices', '_imagify_warning_empty_api_key_notice' );
10
  function _imagify_warning_empty_api_key_notice() {
@@ -64,6 +65,7 @@ function _imagify_warning_empty_api_key_notice() {
64
  * This warning is displayed when the API key is empty
65
  *
66
  * @since 1.0
 
67
  */
68
  add_action( 'all_admin_notices', '_imagify_warning_wrong_api_key_notice' );
69
  function _imagify_warning_wrong_api_key_notice() {
@@ -97,6 +99,7 @@ function _imagify_warning_wrong_api_key_notice() {
97
  * This warning is displayed when some plugins may conflict with Imagify
98
  *
99
  * @since 1.0
 
100
  */
101
  add_action( 'all_admin_notices', '_imagify_warning_plugins_to_deactivate_notice' );
102
  function _imagify_warning_plugins_to_deactivate_notice() {
@@ -106,6 +109,7 @@ function _imagify_warning_plugins_to_deactivate_notice() {
106
  // Deactivate all plugins who can cause conflicts with Imagify
107
  $plugins = array(
108
  'wp-smush' => 'wp-smushit/wp-smush.php', // WP Smush
 
109
  'kraken' => 'kraken-image-optimizer/kraken.php', // Kraken.io
110
  'tinypng' => 'tiny-compress-images/tiny-compress-images.php', // TinyPNG
111
  'shortpixel' => 'shortpixel-image-optimiser/wp-shortpixel.php', // Shortpixel
@@ -154,6 +158,7 @@ function _imagify_warning_plugins_to_deactivate_notice() {
154
  * This notice is displayed when external HTTP requests are blocked via the WP_HTTP_BLOCK_EXTERNAL constant
155
  *
156
  * @since 1.0
 
157
  */
158
  add_action( 'all_admin_notices', '_imagify_http_block_external_notice' );
159
  function _imagify_http_block_external_notice() {
@@ -187,6 +192,7 @@ function _imagify_http_block_external_notice() {
187
  * This warning is displayed when the grid view is active on the library
188
  *
189
  * @since 1.0.2
 
190
  */
191
  add_action( 'all_admin_notices', '_imagify_warning_grid_view_notice' );
192
  function _imagify_warning_grid_view_notice() {
@@ -223,6 +229,7 @@ function _imagify_warning_grid_view_notice() {
223
  * This warning is displayed to warn the user that its quota is consumed for the current month
224
  *
225
  * @since 1.1.1
 
226
  */
227
  add_action( 'all_admin_notices', '_imagify_warning_over_quota_notice' );
228
  function _imagify_warning_over_quota_notice() {
@@ -262,6 +269,7 @@ function _imagify_warning_over_quota_notice() {
262
  * Add a message about WP Rocket on the "Bulk Optimization" screen.
263
  *
264
  * @since 2.7
 
265
  */
266
  add_action( 'admin_notices', '_imagify_rocket_notice' );
267
  function _imagify_rocket_notice() {
@@ -326,6 +334,7 @@ function _imagify_rocket_notice() {
326
  * This notice is displayed to rate the plugin after 100 optimization & 7 days after the first installation
327
  *
328
  * @since 1.4.2
 
329
  */
330
  add_action( 'all_admin_notices', '_imagify_rating_notice' );
331
  function _imagify_rating_notice() {
5
  * This warning is displayed when the API key is empty
6
  *
7
  * @since 1.0
8
+ * @author Jonathan Buttigieg
9
  */
10
  add_action( 'all_admin_notices', '_imagify_warning_empty_api_key_notice' );
11
  function _imagify_warning_empty_api_key_notice() {
65
  * This warning is displayed when the API key is empty
66
  *
67
  * @since 1.0
68
+ * @author Jonathan Buttigieg
69
  */
70
  add_action( 'all_admin_notices', '_imagify_warning_wrong_api_key_notice' );
71
  function _imagify_warning_wrong_api_key_notice() {
99
  * This warning is displayed when some plugins may conflict with Imagify
100
  *
101
  * @since 1.0
102
+ * @author Jonathan Buttigieg
103
  */
104
  add_action( 'all_admin_notices', '_imagify_warning_plugins_to_deactivate_notice' );
105
  function _imagify_warning_plugins_to_deactivate_notice() {
109
  // Deactivate all plugins who can cause conflicts with Imagify
110
  $plugins = array(
111
  'wp-smush' => 'wp-smushit/wp-smush.php', // WP Smush
112
+ 'wp-smush-pro' => 'wp-smush-pro/wp-smush.php', // WP Smush Pro
113
  'kraken' => 'kraken-image-optimizer/kraken.php', // Kraken.io
114
  'tinypng' => 'tiny-compress-images/tiny-compress-images.php', // TinyPNG
115
  'shortpixel' => 'shortpixel-image-optimiser/wp-shortpixel.php', // Shortpixel
158
  * This notice is displayed when external HTTP requests are blocked via the WP_HTTP_BLOCK_EXTERNAL constant
159
  *
160
  * @since 1.0
161
+ * @author Jonathan Buttigieg
162
  */
163
  add_action( 'all_admin_notices', '_imagify_http_block_external_notice' );
164
  function _imagify_http_block_external_notice() {
192
  * This warning is displayed when the grid view is active on the library
193
  *
194
  * @since 1.0.2
195
+ * @author Jonathan Buttigieg
196
  */
197
  add_action( 'all_admin_notices', '_imagify_warning_grid_view_notice' );
198
  function _imagify_warning_grid_view_notice() {
229
  * This warning is displayed to warn the user that its quota is consumed for the current month
230
  *
231
  * @since 1.1.1
232
+ * @author Jonathan Buttigieg
233
  */
234
  add_action( 'all_admin_notices', '_imagify_warning_over_quota_notice' );
235
  function _imagify_warning_over_quota_notice() {
269
  * Add a message about WP Rocket on the "Bulk Optimization" screen.
270
  *
271
  * @since 2.7
272
+ * @author Jonathan Buttigieg
273
  */
274
  add_action( 'admin_notices', '_imagify_rocket_notice' );
275
  function _imagify_rocket_notice() {
334
  * This notice is displayed to rate the plugin after 100 optimization & 7 days after the first installation
335
  *
336
  * @since 1.4.2
337
+ * @author Jonathan Buttigieg
338
  */
339
  add_action( 'all_admin_notices', '_imagify_rating_notice' );
340
  function _imagify_rating_notice() {
inc/admin/ui/options.php CHANGED
@@ -8,6 +8,10 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
8
  */
9
  function _imagify_display_options_page() {
10
  global $_wp_additional_image_sizes, $wp_version;
 
 
 
 
11
  ?>
12
  <div class="wrap imagify-settings">
13
  <?php
@@ -45,7 +49,7 @@ function _imagify_display_options_page() {
45
  }
46
  ?>
47
 
48
- <div class="imagify-col">
49
  <?php $heading_tag = version_compare( $GLOBALS['wp_version'], '4.3' ) >= 0 ? 'h1' : 'h2'; ?>
50
  <div class="imagify-title">
51
  <img width="225" height="26" alt="Imagify" src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>imagify-logo.png" class="imagify-logo" /> <small><sup><?php echo IMAGIFY_VERSION; ?></sup></small>
@@ -69,6 +73,8 @@ function _imagify_display_options_page() {
69
 
70
  <h3 class="screen-reader-text"><?php _e( 'Settings' ); ?></h3>
71
 
 
 
72
  <?php
73
  if ( ! defined( 'IMAGIFY_API_KEY' ) || ! IMAGIFY_API_KEY ) { ?>
74
  <div class="imagify-sub-header">
@@ -108,6 +114,7 @@ function _imagify_display_options_page() {
108
  ?>
109
 
110
  <div class="imagify-settings-section <?php echo ( ! imagify_valid_key() ) ? 'hidden' : ''; ?>">
 
111
  <table class="form-table">
112
  <tbody>
113
  <tr class="imagify-middle">
@@ -303,7 +310,20 @@ function _imagify_display_options_page() {
303
 
304
  </div>
305
  <div class="submit">
306
- <?php submit_button(); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
307
  <div class="imagify-bulk-info">
308
  <p><?php printf( __( 'Once your settings saved, optimize all your images by using the %sImagify Bulk Optimization%s feature.', 'imagify' ), '<a href="' . get_admin_url() . 'upload.php?page=' . IMAGIFY_SLUG . '-bulk-optimization">', '</a>' ); ?></p>
309
  </div>
@@ -484,6 +504,8 @@ function _imagify_display_options_page() {
484
  </div>
485
  </div>
486
 
 
 
487
  </div>
488
  <?php
489
  }
8
  */
9
  function _imagify_display_options_page() {
10
  global $_wp_additional_image_sizes, $wp_version;
11
+
12
+ if ( isset( $_POST['submit-goto-bulk'] ) ) {
13
+ wp_safe_redirect( get_admin_url( get_current_blog_id(), 'upload.php?page=imagify-bulk-optimization' ) );
14
+ }
15
  ?>
16
  <div class="wrap imagify-settings">
17
  <?php
49
  }
50
  ?>
51
 
52
+ <div class="imagify-col imagify-main">
53
  <?php $heading_tag = version_compare( $GLOBALS['wp_version'], '4.3' ) >= 0 ? 'h1' : 'h2'; ?>
54
  <div class="imagify-title">
55
  <img width="225" height="26" alt="Imagify" src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>imagify-logo.png" class="imagify-logo" /> <small><sup><?php echo IMAGIFY_VERSION; ?></sup></small>
73
 
74
  <h3 class="screen-reader-text"><?php _e( 'Settings' ); ?></h3>
75
 
76
+ <?php //echo get_imagify_new_to_imagify(); ?>
77
+
78
  <?php
79
  if ( ! defined( 'IMAGIFY_API_KEY' ) || ! IMAGIFY_API_KEY ) { ?>
80
  <div class="imagify-sub-header">
114
  ?>
115
 
116
  <div class="imagify-settings-section <?php echo ( ! imagify_valid_key() ) ? 'hidden' : ''; ?>">
117
+
118
  <table class="form-table">
119
  <tbody>
120
  <tr class="imagify-middle">
310
 
311
  </div>
312
  <div class="submit">
313
+ <?php
314
+ // classical submit
315
+ submit_button();
316
+
317
+ // submit and go to bulk page
318
+ submit_button(
319
+ esc_html__( 'Save &amp; Go to Bulk Optimizer', 'imagify' ),
320
+ 'secondary imagify-button-secondary', // type/classes
321
+ 'submit-goto-bulk', // name (id)
322
+ true, // wrap
323
+ array() //other attributes
324
+ );
325
+ ?>
326
+
327
  <div class="imagify-bulk-info">
328
  <p><?php printf( __( 'Once your settings saved, optimize all your images by using the %sImagify Bulk Optimization%s feature.', 'imagify' ), '<a href="' . get_admin_url() . 'upload.php?page=' . IMAGIFY_SLUG . '-bulk-optimization">', '</a>' ); ?></p>
329
  </div>
504
  </div>
505
  </div>
506
 
507
+ <?php //imagify_payment_modal(); ?>
508
+
509
  </div>
510
  <?php
511
  }
inc/admin/upload.php CHANGED
@@ -5,6 +5,7 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * Add "Imagify" column in upload.php
6
  *
7
  * @since 1.0
 
8
  */
9
  add_filter( 'manage_media_columns', '_imagify_manage_media_columns' );
10
  function _imagify_manage_media_columns( $columns ) {
@@ -15,7 +16,8 @@ function _imagify_manage_media_columns( $columns ) {
15
  add_filter( 'manage_media_custom_column', '_imagify_manage_media_custom_column', 10, 2 );
16
  function _imagify_manage_media_custom_column( $column_name, $attachment_id ) {
17
  if ( 'imagify_optimized_file' == $column_name ) {
18
- echo get_imagify_media_column_content( $attachment_id );
 
19
  }
20
  }
21
 
@@ -23,6 +25,7 @@ function _imagify_manage_media_custom_column( $column_name, $attachment_id ) {
23
  * Adds a dropdown that allows filtering on the attachments Imagify status.
24
  *
25
  * @since 1.0
 
26
  */
27
  add_action( 'restrict_manage_posts', '_imagify_attachments_filter_dropdown' );
28
  function _imagify_attachments_filter_dropdown() {
@@ -58,6 +61,7 @@ function _imagify_attachments_filter_dropdown() {
58
  * Modify the query based on the imagify-status variable in $_GET
59
  *
60
  * @since 1.0
 
61
  */
62
  add_filter( 'request', '_imagify_sort_attachments_by_status' );
63
  function _imagify_sort_attachments_by_status( $vars ) {
5
  * Add "Imagify" column in upload.php
6
  *
7
  * @since 1.0
8
+ * @author Jonathan Buttigieg
9
  */
10
  add_filter( 'manage_media_columns', '_imagify_manage_media_columns' );
11
  function _imagify_manage_media_columns( $columns ) {
16
  add_filter( 'manage_media_custom_column', '_imagify_manage_media_custom_column', 10, 2 );
17
  function _imagify_manage_media_custom_column( $column_name, $attachment_id ) {
18
  if ( 'imagify_optimized_file' == $column_name ) {
19
+ $attachment = new Imagify_Attachment( $attachment_id );
20
+ echo get_imagify_media_column_content( $attachment );
21
  }
22
  }
23
 
25
  * Adds a dropdown that allows filtering on the attachments Imagify status.
26
  *
27
  * @since 1.0
28
+ * @author Jonathan Buttigieg
29
  */
30
  add_action( 'restrict_manage_posts', '_imagify_attachments_filter_dropdown' );
31
  function _imagify_attachments_filter_dropdown() {
61
  * Modify the query based on the imagify-status variable in $_GET
62
  *
63
  * @since 1.0
64
+ * @author Jonathan Buttigieg
65
  */
66
  add_filter( 'request', '_imagify_sort_attachments_by_status' );
67
  function _imagify_sort_attachments_by_status( $vars ) {
inc/api/imagify.php CHANGED
@@ -67,6 +67,28 @@ function upload_imagify_image( $data ) {
67
  return Imagify()->uploadImage( $data );
68
  }
69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  /**
71
  * Imagify.io API for WordPress
72
  */
@@ -247,6 +269,24 @@ class Imagify {
247
  return $this->httpCall( 'fetch/', $args );
248
  }
249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  /**
251
  * Make an HTTP call using curl.
252
  *
@@ -295,7 +335,9 @@ class Imagify {
295
  if ( 200 != $http_code && isset( $response->code, $response->detail ) ) {
296
  return new WP_Error( $http_code, $response->detail );
297
  } elseif ( 200 != $http_code ) {
298
- return new WP_Error( $http_code, 'Unknown error occurred' );
 
 
299
  } else {
300
  return $response;
301
  }
67
  return Imagify()->uploadImage( $data );
68
  }
69
 
70
+ /**
71
+ * Get Imagify Plans Prices
72
+ *
73
+ * @return object
74
+ * @since 1.5
75
+ * @author Geoffrey Crofte
76
+ **/
77
+ function get_imagify_plans_prices() {
78
+ return Imagify()->getPlansPrices();
79
+ }
80
+
81
+ /**
82
+ * Get Imagify Plans Prices
83
+ *
84
+ * @return object
85
+ * @since 1.5
86
+ * @author Geoffrey Crofte
87
+ **/
88
+ function get_imagify_packs_prices() {
89
+ return Imagify()->getPacksPrices();
90
+ }
91
+
92
  /**
93
  * Imagify.io API for WordPress
94
  */
269
  return $this->httpCall( 'fetch/', $args );
270
  }
271
 
272
+ /**
273
+ * Get prices for plans
274
+ *
275
+ * @return object
276
+ */
277
+ public function getPlansPrices() {
278
+ return $this->httpCall( 'pricing/plan/' );
279
+ }
280
+
281
+ /**
282
+ * Get prices for packs (one time)
283
+ *
284
+ * @return object
285
+ */
286
+ public function getPacksPrices() {
287
+ return $this->httpCall( 'pricing/pack/' );
288
+ }
289
+
290
  /**
291
  * Make an HTTP call using curl.
292
  *
335
  if ( 200 != $http_code && isset( $response->code, $response->detail ) ) {
336
  return new WP_Error( $http_code, $response->detail );
337
  } elseif ( 200 != $http_code ) {
338
+ $http_code = (int) $http_code;
339
+ $error = '' != $error ? ' - ' . htmlentities( $error ) : '';
340
+ return new WP_Error( $http_code, "Unknown error occurred ({$http_code}{$error}) " );
341
  } else {
342
  return $response;
343
  }
inc/classes/abstracts/abstract-attachment.php ADDED
@@ -0,0 +1,383 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ class Imagify_Abstract_Attachment {
5
+ /**
6
+ * The attachment ID
7
+ *
8
+ * @since 1.0
9
+ *
10
+ * @var int
11
+ * @access public
12
+ */
13
+ public $id;
14
+
15
+ /**
16
+ * The constructor
17
+ *
18
+ * @since 1.0
19
+ *
20
+ * @return void
21
+ **/
22
+ function __construct( $id = 0 ) {}
23
+
24
+ /**
25
+ * Get the attachment backup filepath.
26
+ *
27
+ * @since 1.0
28
+ *
29
+ * @access public
30
+ * @return string|false
31
+ */
32
+ public function get_backup_path() {}
33
+
34
+ /**
35
+ * Get the attachment backup URL.
36
+ *
37
+ * @since 1.4
38
+ *
39
+ * @access public
40
+ * @return string|false
41
+ */
42
+ public function get_backup_url() {
43
+ $backup_path = $this->get_backup_path();
44
+ $backup_url = str_replace( ABSPATH, site_url( '/' ), $backup_path );
45
+
46
+ return $backup_url;
47
+ }
48
+
49
+ /**
50
+ * Get the attachment optimization data.
51
+ *
52
+ * @since 1.0
53
+ *
54
+ * @access public
55
+ * @return array
56
+ */
57
+ public function get_data() {}
58
+
59
+ /**
60
+ * Get the attachment extension.
61
+ *
62
+ * @since 1.0
63
+ *
64
+ * @access public
65
+ * @return string
66
+ */
67
+ public function get_extension() {
68
+ $fullsize_path = $this->get_original_path();
69
+ return pathinfo( $fullsize_path, PATHINFO_EXTENSION );
70
+ }
71
+
72
+ /**
73
+ * Get the attachment error if there is one.
74
+ *
75
+ * @since 1.1.5
76
+ *
77
+ * @access public
78
+ * @return string The message error
79
+ */
80
+ public function get_optimized_error() {
81
+ $error = $this->get_size_data( 'full', 'error' );
82
+
83
+ if ( is_string( $error ) ) {
84
+ return $error;
85
+ }
86
+
87
+ return false;
88
+ }
89
+
90
+ /**
91
+ * Get the attachment optimization level.
92
+ *
93
+ * @since 1.0
94
+ *
95
+ * @access public
96
+ * @return int
97
+ */
98
+ public function get_optimization_level() {}
99
+
100
+ /**
101
+ * Get the attachment optimization level label.
102
+ *
103
+ * @since 1.2
104
+ *
105
+ * @access public
106
+ * @return string
107
+ */
108
+ public function get_optimization_level_label() {
109
+ $label = '';
110
+ $level = $this->get_optimization_level();
111
+
112
+ switch( $level ) {
113
+ case 2:
114
+ $label = __( 'Ultra', 'imagify' );
115
+ break;
116
+ case 1:
117
+ $label = __( 'Aggressive', 'imagify' );
118
+ break;
119
+ case 0:
120
+ $label = __( 'Normal', 'imagify' );
121
+ break;
122
+ }
123
+
124
+ return $label;
125
+ }
126
+
127
+ /**
128
+ * Count number of optimized sizes.
129
+ *
130
+ * @since 1.0
131
+ *
132
+ * @access public
133
+ * @return int
134
+ */
135
+ public function get_optimized_sizes_count() {
136
+ $data = $this->get_data();
137
+ $sizes = (array) $data['sizes'];
138
+ $count = 0;
139
+
140
+ if ( isset( $sizes['full'] ) ) {
141
+ unset( $sizes['full'] );
142
+ }
143
+
144
+ foreach ( $sizes as $size ) {
145
+ if ( $size['success'] ) {
146
+ $count++;
147
+ }
148
+ }
149
+
150
+ return (int) $count;
151
+ }
152
+
153
+ /**
154
+ * Get the attachment optimization status (success or error).
155
+ *
156
+ * @since 1.0
157
+ *
158
+ * @access public
159
+ * @return string
160
+ */
161
+ public function get_status() {}
162
+
163
+ /**
164
+ * Get the original attachment path.
165
+ *
166
+ * @since 1.0
167
+ *
168
+ * @access public
169
+ * @return string
170
+ */
171
+ public function get_original_path() {}
172
+
173
+ /**
174
+ * Get the original attachment size.
175
+ *
176
+ * @since 1.0
177
+ *
178
+ * @access public
179
+ * @param bool $human_format True to display the image human format size (1Mb).
180
+ * @return string
181
+ */
182
+ public function get_original_size( $human_format = true ) {
183
+ $original_size = $this->get_size_data( 'full', 'original_size' );
184
+ $original_size = ( empty( $original_size ) ) ? @filesize( $this->get_original_path() ) : 0;
185
+
186
+ if ( true === $human_format ) {
187
+ $original_size = @size_format( $original_size, 2 );
188
+ }
189
+
190
+ return $original_size;
191
+ }
192
+
193
+ /**
194
+ * Get the original attachment URL.
195
+ *
196
+ * @since 1.0
197
+ *
198
+ * @access public
199
+ * @return string
200
+ */
201
+ public function get_original_url() {}
202
+
203
+ /*
204
+ * Get the statistics of a specific size.
205
+ *
206
+ * @since 1.0
207
+ *
208
+ * @access public
209
+ * @param string $size The thumbnail slug.
210
+ * @param string $key The specific data slug.
211
+ * @return array|string
212
+ */
213
+ public function get_size_data( $size = 'full', $key = '' ) {
214
+ $data = $this->get_data();
215
+ $stats = array();
216
+
217
+ if ( isset( $data['sizes'][ $size ] ) ) {
218
+ $stats = $data['sizes'][ $size ];
219
+ }
220
+
221
+ if ( isset( $stats[ $key ] ) ) {
222
+ $stats = $stats[ $key ];
223
+ }
224
+
225
+ return $stats;
226
+ }
227
+
228
+ /**
229
+ * Get the global statistics data or a specific one.
230
+ *
231
+ * @since 1.0
232
+ *
233
+ * @access public
234
+ * @param string $key The specific data slug.
235
+ * @return array|string
236
+ */
237
+ public function get_stats_data( $key = '' ) {
238
+ $data = $this->get_data();
239
+ $stats = '';
240
+
241
+ if ( isset( $data['stats'] ) ) {
242
+ $stats = $data['stats'];
243
+ }
244
+
245
+ if ( isset( $stats[ $key ] ) ) {
246
+ $stats = $stats[ $key ];
247
+ }
248
+
249
+ return $stats;
250
+ }
251
+
252
+ /**
253
+ * Check if the attachment is already optimized (before Imagify).
254
+ *
255
+ * @since 1.1.6
256
+ *
257
+ * @access public
258
+ * @return bool True if the attachment is optimized.
259
+ */
260
+ public function is_already_optimized() {
261
+ return ( 'already_optimized' === $this->get_status() ) > 0;
262
+ }
263
+
264
+ /**
265
+ * Check if the attachment is optimized.
266
+ *
267
+ * @since 1.0
268
+ *
269
+ * @access public
270
+ * @return bool True if the attachment is optimized.
271
+ */
272
+ public function is_optimized() {
273
+ return ( 'success' === $this->get_status() ) > 0;
274
+ }
275
+
276
+ /**
277
+ * Check if the attachment exceeding the limit size (> 5mo).
278
+ *
279
+ * @since 1.0
280
+ *
281
+ * @access public
282
+ * @return bool True if the attachment is skipped.
283
+ */
284
+ public function is_exceeded() {
285
+ $filepath = $this->get_original_path();
286
+ $size = 0;
287
+
288
+ if ( file_exists( $filepath ) ) {
289
+ $size = filesize( $filepath );
290
+ }
291
+
292
+ return ( $size > IMAGIFY_MAX_BYTES ) > 0;
293
+ }
294
+
295
+ /**
296
+ * Check if the attachment has a backup of the original size.
297
+ *
298
+ * @since 1.0
299
+ *
300
+ * @access public
301
+ * @return bool True if the attachment has a backup.
302
+ */
303
+ public function has_backup() {
304
+ return (bool) $this->get_backup_path();
305
+ }
306
+
307
+ /**
308
+ * Check if the attachment has an error.
309
+ *
310
+ * @since 1.0
311
+ *
312
+ * @access public
313
+ * @return bool True if the attachment has an error.
314
+ */
315
+ public function has_error() {
316
+ $has_error = $this->get_size_data( 'full', 'error' );
317
+ return ( is_string( $has_error ) ) > 0;
318
+ }
319
+
320
+ /**
321
+ * Update the metadata size of the attachment
322
+ *
323
+ * @since 1.2
324
+ *
325
+ * @access public
326
+ * @return void
327
+ */
328
+ public function update_metadata_size() {}
329
+
330
+ /**
331
+ * Delete the backup file.
332
+ *
333
+ * @since 1.0
334
+ *
335
+ * @access public
336
+ * @return void
337
+ */
338
+ public function delete_backup() {
339
+ $backup_path = $this->get_backup_path();
340
+
341
+ if ( ! empty( $backup_path ) ) {
342
+ @unlink( $backup_path );
343
+ }
344
+ }
345
+
346
+ /**
347
+ * Fills statistics data with values from $data array
348
+ *
349
+ * @since 1.0
350
+ *
351
+ * @access public
352
+ * @static
353
+ * @param array $data The statistics data
354
+ * @param object $response The API response
355
+ * @param int $id The attachment ID
356
+ * @param int $url The attachment URL
357
+ * @param string $size The attachment size key
358
+ * @return bool|array False if the original size has an error or an array contains the data for other result
359
+ */
360
+ static public function fill_data( $data, $response, $id, $url, $size = 'full' ) {}
361
+
362
+ /**
363
+ * Optimize all sizes with Imagify.
364
+ *
365
+ * @since 1.0
366
+ *
367
+ * @access public
368
+ * @param int $optimization_level The optimization level (2=ultra, 1=aggressive, 0=normal)
369
+ * @param array $metadata The attachment meta data
370
+ * @return array $optimized_data The optimization data
371
+ */
372
+ public function optimize( $optimization_level = null, $metadata = array() ) {}
373
+
374
+ /**
375
+ * Process an attachment restoration from the backup file.
376
+ *
377
+ * @since 1.0
378
+ *
379
+ * @access public
380
+ * @return void
381
+ */
382
+ public function restore() {}
383
+ }
inc/classes/abstracts/abstract-db.php ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * DB base class
6
+ *
7
+ * @source https://gist.github.com/pippinsplugins/e220a7f0f0f2fbe64608
8
+ * @since 1.5
9
+ */
10
+ abstract class Imagify_Abstract_DB {
11
+
12
+ /**
13
+ * The name of our database table
14
+ *
15
+ * @access public
16
+ * @since 1.5
17
+ */
18
+ public $table_name;
19
+
20
+ /**
21
+ * The version of our database table
22
+ *
23
+ * @access public
24
+ * @since 1.5
25
+ */
26
+ public $version;
27
+
28
+ /**
29
+ * The name of the primary column
30
+ *
31
+ * @access public
32
+ * @since 1.5
33
+ */
34
+ public $primary_key;
35
+
36
+ /**
37
+ * Get things started
38
+ *
39
+ * @access public
40
+ * @since 1.5
41
+ */
42
+ public function __construct() {}
43
+
44
+ /**
45
+ * Whitelist of columns
46
+ *
47
+ * @access public
48
+ * @since 1.5
49
+ * @return array
50
+ */
51
+ public function get_columns() {
52
+ return array();
53
+ }
54
+
55
+ /**
56
+ * Default column values
57
+ *
58
+ * @access public
59
+ * @since 1.5
60
+ * @return array
61
+ */
62
+ public function get_column_defaults() {
63
+ return array();
64
+ }
65
+
66
+ /**
67
+ * Retrieve a row by the primary key
68
+ *
69
+ * @access public
70
+ * @since 1.5
71
+ * @return object
72
+ */
73
+ public function get( $row_id ) {
74
+ global $wpdb;
75
+ return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ), ARRAY_A );
76
+ }
77
+
78
+ /**
79
+ * Retrieve a row by a specific column / value
80
+ *
81
+ * @access public
82
+ * @since 1.5
83
+ * @return object
84
+ */
85
+ public function get_by( $column, $row_id ) {
86
+ global $wpdb;
87
+ $column = esc_sql( $column );
88
+ return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id ), ARRAY_A );
89
+ }
90
+
91
+ /**
92
+ * Retrieve a specific column's value by the primary key
93
+ *
94
+ * @access public
95
+ * @since 1.5
96
+ * @return string
97
+ */
98
+ public function get_column( $column, $row_id ) {
99
+ global $wpdb;
100
+ $column = esc_sql( $column );
101
+ return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
102
+ }
103
+
104
+ /**
105
+ * Retrieve a specific column's value by the the specified column / value
106
+ *
107
+ * @access public
108
+ * @since 1.5
109
+ * @return string
110
+ */
111
+ public function get_column_by( $column, $column_where, $column_value ) {
112
+ global $wpdb;
113
+ $column_where = esc_sql( $column_where );
114
+ $column = esc_sql( $column );
115
+ return $wpdb->get_var( $wpdb->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value ) );
116
+ }
117
+
118
+ /**
119
+ * Insert a new row
120
+ *
121
+ * @access public
122
+ * @since 1.5
123
+ * @return int
124
+ */
125
+ public function insert( $data ) {
126
+ global $wpdb;
127
+
128
+ // Set default values
129
+ $data = wp_parse_args( $data, $this->get_column_defaults() );
130
+
131
+ // Initialise column format array
132
+ $column_formats = $this->get_columns();
133
+
134
+ // Force fields to lower case
135
+ $data = array_change_key_case( $data );
136
+
137
+ // White list columns
138
+ $data = array_intersect_key( $data, $column_formats );
139
+
140
+ // Reorder $column_formats to match the order of columns given in $data
141
+ $data_keys = array_keys( $data );
142
+ $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
143
+
144
+ $wpdb->insert( $this->table_name, $data, $column_formats );
145
+
146
+ return $wpdb->insert_id;
147
+ }
148
+
149
+ /**
150
+ * Update a row
151
+ *
152
+ * @access public
153
+ * @since 1.5
154
+ * @return bool
155
+ */
156
+ public function update( $row_id, $data = array(), $where = '' ) {
157
+ global $wpdb;
158
+
159
+ // Row ID must be positive integer
160
+ $row_id = absint( $row_id );
161
+
162
+ if( empty( $row_id ) ) {
163
+ return false;
164
+ }
165
+
166
+ if( empty( $where ) ) {
167
+ $where = $this->primary_key;
168
+ }
169
+
170
+ // Initialise column format array
171
+ $column_formats = $this->get_columns();
172
+
173
+ // Force fields to lower case
174
+ $data = array_change_key_case( $data );
175
+
176
+ // White list columns
177
+ $data = array_intersect_key( $data, $column_formats );
178
+
179
+ // Reorder $column_formats to match the order of columns given in $data
180
+ $data_keys = array_keys( $data );
181
+ $column_formats = array_merge( array_flip( $data_keys ), $column_formats );
182
+
183
+ if ( false === (bool) $this->get_column( $this->primary_key, $row_id ) ) {
184
+ $this->insert( $data );
185
+ return true;
186
+ }
187
+
188
+ if ( false === $wpdb->update( $this->table_name, $data, array( $where => $row_id ), $column_formats ) ) {
189
+ return false;
190
+ }
191
+
192
+ return true;
193
+ }
194
+
195
+ /**
196
+ * Delete a row identified by the primary key
197
+ *
198
+ * @access public
199
+ * @since 1.5
200
+ * @return bool
201
+ */
202
+ public function delete( $row_id = 0 ) {
203
+ global $wpdb;
204
+
205
+ // Row ID must be positive integer
206
+ $row_id = absint( $row_id );
207
+
208
+ if( empty( $row_id ) ) {
209
+ return false;
210
+ }
211
+
212
+ if ( false === $wpdb->query( $wpdb->prepare( "DELETE FROM $this->table_name WHERE $this->primary_key = %d", $row_id ) ) ) {
213
+ return false;
214
+ }
215
+
216
+ return true;
217
+ }
218
+
219
+ /**
220
+ * Check if the given table exists
221
+ *
222
+ * @since 1.5
223
+ * @param string $table The table name
224
+ * @return bool If the table name exists
225
+ */
226
+ public function table_exists( $table ) {
227
+ global $wpdb;
228
+ $table = sanitize_text_field( $table );
229
+
230
+ return $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE '%s'", $table ) ) === $table;
231
+ }
232
+
233
+ }
inc/classes/class-attachment.php CHANGED
@@ -1,17 +1,7 @@
1
  <?php
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
- class Imagify_Attachment {
5
- /**
6
- * The attachment ID
7
- *
8
- * @since 1.0
9
- *
10
- * @var int
11
- * @access public
12
- */
13
- public $id;
14
-
15
  /**
16
  * The constructor
17
  *
@@ -28,7 +18,7 @@ class Imagify_Attachment {
28
  $this->id = (int) $id;
29
  }
30
  }
31
-
32
  /**
33
  * Get the attachment backup filepath.
34
  *
@@ -48,21 +38,6 @@ class Imagify_Attachment {
48
  return false;
49
  }
50
 
51
- /**
52
- * Get the attachment backup URL.
53
- *
54
- * @since 1.4
55
- *
56
- * @access public
57
- * @return string|false
58
- */
59
- public function get_backup_url() {
60
- $backup_path = $this->get_backup_path();
61
- $backup_url = str_replace( ABSPATH, site_url( '/' ), $backup_path );
62
-
63
- return $backup_url;
64
- }
65
-
66
  /**
67
  * Get the attachment optimization data.
68
  *
@@ -74,38 +49,7 @@ class Imagify_Attachment {
74
  public function get_data() {
75
  return get_post_meta( $this->id, '_imagify_data', true );
76
  }
77
-
78
- /**
79
- * Get the attachment extension.
80
- *
81
- * @since 1.0
82
- *
83
- * @access public
84
- * @return string
85
- */
86
- public function get_extension() {
87
- $fullsize_path = $this->get_original_path();
88
- return pathinfo( $fullsize_path, PATHINFO_EXTENSION );
89
- }
90
-
91
- /**
92
- * Get the attachment error if there is one.
93
- *
94
- * @since 1.1.5
95
- *
96
- * @access public
97
- * @return string The message error
98
- */
99
- public function get_optimized_error() {
100
- $error = $this->get_size_data( 'full', 'error' );
101
-
102
- if ( is_string( $error ) ) {
103
- return $error;
104
- }
105
 
106
- return false;
107
- }
108
-
109
  /**
110
  * Get the attachment optimization level.
111
  *
@@ -118,59 +62,6 @@ class Imagify_Attachment {
118
  return get_post_meta( $this->id, '_imagify_optimization_level', true );
119
  }
120
 
121
- /**
122
- * Get the attachment optimization level label.
123
- *
124
- * @since 1.2
125
- *
126
- * @access public
127
- * @return string
128
- */
129
- public function get_optimization_level_label() {
130
- $label = '';
131
- $level = $this->get_optimization_level();
132
-
133
- switch( $level ) {
134
- case 2:
135
- $label = __( 'Ultra', 'imagify' );
136
- break;
137
- case 1:
138
- $label = __( 'Aggressive', 'imagify' );
139
- break;
140
- case 0:
141
- $label = __( 'Normal', 'imagify' );
142
- break;
143
- }
144
-
145
- return $label;
146
- }
147
-
148
- /**
149
- * Count number of optimized sizes.
150
- *
151
- * @since 1.0
152
- *
153
- * @access public
154
- * @return int
155
- */
156
- public function get_optimized_sizes_count() {
157
- $data = $this->get_data();
158
- $sizes = (array) $data['sizes'];
159
- $count = 0;
160
-
161
- if ( isset( $sizes['full'] ) ) {
162
- unset( $sizes['full'] );
163
- }
164
-
165
- foreach ( $sizes as $size ) {
166
- if ( $size['success'] ) {
167
- $count++;
168
- }
169
- }
170
-
171
- return (int) $count;
172
- }
173
-
174
  /**
175
  * Get the attachment optimization status (success or error).
176
  *
@@ -195,22 +86,6 @@ class Imagify_Attachment {
195
  return get_attached_file( $this->id );
196
  }
197
 
198
- /**
199
- * Get the original attachment size.
200
- *
201
- * @since 1.0
202
- *
203
- * @access public
204
- * @return string
205
- */
206
- public function get_original_size() {
207
- $original_size = $this->get_size_data( 'full', 'original_size' );
208
- $original_size = ( empty( $original_size ) ) ? @filesize( $this->get_original_path() ) : $original_size;
209
- $original_size = size_format( $original_size, 2 );
210
-
211
- return $original_size;
212
- }
213
-
214
  /**
215
  * Get the original attachment URL.
216
  *
@@ -223,123 +98,6 @@ class Imagify_Attachment {
223
  return wp_get_attachment_url( $this->id );
224
  }
225
 
226
- /*
227
- * Get the statistics of a specific size.
228
- *
229
- * @since 1.0
230
- *
231
- * @access public
232
- * @param string $size The thumbnail slug.
233
- * @param string $key The specific data slug.
234
- * @return array|string
235
- */
236
- public function get_size_data( $size = 'full', $key = '' ) {
237
- $data = $this->get_data();
238
- $stats = array();
239
-
240
- if ( isset( $data['sizes'][ $size ] ) ) {
241
- $stats = $data['sizes'][ $size ];
242
- }
243
-
244
- if ( isset( $stats[ $key ] ) ) {
245
- $stats = $stats[ $key ];
246
- }
247
-
248
- return $stats;
249
- }
250
-
251
- /**
252
- * Get the global statistics data or a specific one.
253
- *
254
- * @since 1.0
255
- *
256
- * @access public
257
- * @param string $key The specific data slug.
258
- * @return array|string
259
- */
260
- public function get_stats_data( $key = '' ) {
261
- $data = $this->get_data();
262
- $stats = '';
263
-
264
- if ( isset( $data['stats'] ) ) {
265
- $stats = $data['stats'];
266
- }
267
-
268
- if ( isset( $stats[ $key ] ) ) {
269
- $stats = $stats[ $key ];
270
- }
271
-
272
- return $stats;
273
- }
274
-
275
- /**
276
- * Check if the attachment is already optimized (before Imagify).
277
- *
278
- * @since 1.1.6
279
- *
280
- * @access public
281
- * @return bool True if the attachment is optimized.
282
- */
283
- public function is_already_optimized() {
284
- return ( 'already_optimized' === $this->get_status() ) > 0;
285
- }
286
-
287
- /**
288
- * Check if the attachment is optimized.
289
- *
290
- * @since 1.0
291
- *
292
- * @access public
293
- * @return bool True if the attachment is optimized.
294
- */
295
- public function is_optimized() {
296
- return ( 'success' === $this->get_status() ) > 0;
297
- }
298
-
299
- /**
300
- * Check if the attachment exceeding the limit size (> 5mo).
301
- *
302
- * @since 1.0
303
- *
304
- * @access public
305
- * @return bool True if the attachment is skipped.
306
- */
307
- public function is_exceeded() {
308
- $filepath = $this->get_original_path();
309
- $size = 0;
310
-
311
- if ( file_exists( $filepath ) ) {
312
- $size = filesize( $filepath );
313
- }
314
-
315
- return ( $size > IMAGIFY_MAX_BYTES ) > 0;
316
- }
317
-
318
- /**
319
- * Check if the attachment has a backup of the original size.
320
- *
321
- * @since 1.0
322
- *
323
- * @access public
324
- * @return bool True if the attachment has a backup.
325
- */
326
- public function has_backup() {
327
- return (bool) $this->get_backup_path();
328
- }
329
-
330
- /**
331
- * Check if the attachment has an error.
332
- *
333
- * @since 1.0
334
- *
335
- * @access public
336
- * @return bool True if the attachment has an error.
337
- */
338
- public function has_error() {
339
- $has_error = $this->get_size_data( 'full', 'error' );
340
- return ( is_string( $has_error ) ) > 0;
341
- }
342
-
343
  /**
344
  * Update the metadata size of the attachment
345
  *
@@ -364,22 +122,6 @@ class Imagify_Attachment {
364
  }
365
  }
366
 
367
- /**
368
- * Delete the backup file.
369
- *
370
- * @since 1.0
371
- *
372
- * @access public
373
- * @return void
374
- */
375
- public function delete_backup() {
376
- $backup_path = $this->get_backup_path();
377
-
378
- if ( ! empty( $backup_path ) ) {
379
- @unlink( $backup_path );
380
- }
381
- }
382
-
383
  /**
384
  * Fills statistics data with values from $data array
385
  *
@@ -467,7 +209,6 @@ class Imagify_Attachment {
467
 
468
  // Check if the full size is already optimized
469
  if ( $this->is_optimized() && ( $this->get_optimization_level() == $optimization_level ) ) {
470
- delete_transient( 'imagify-async-in-progress-' . $id );
471
  return;
472
  }
473
 
@@ -480,6 +221,8 @@ class Imagify_Attachment {
480
  */
481
  do_action( 'before_imagify_optimize_attachment', $id );
482
 
 
 
483
  // Get the resize values for the original size
484
  $resize = array();
485
  $do_resize = get_imagify_option( 'resize_larger', false );
@@ -491,13 +234,18 @@ class Imagify_Attachment {
491
  }
492
 
493
  // Optimize the original size
494
- $response = do_imagify( $attachment_path, get_imagify_option( 'backup', false ), $optimization_level, $resize, get_imagify_option( 'exif', false ) );
 
 
 
 
 
495
  $data = $this->fill_data( $data, $response, $id, $attachment_url );
496
 
497
  // Save the optimization level
498
  update_post_meta( $id, '_imagify_optimization_level', $optimization_level );
499
 
500
- if( (bool) ! $data ) {
501
  delete_transient( 'imagify-async-in-progress-' . $id );
502
  return;
503
  }
@@ -522,9 +270,13 @@ class Imagify_Attachment {
522
 
523
  $thumbnail_path = trailingslashit( dirname( $attachment_path ) ) . $size_data['file'];
524
  $thumbnail_url = trailingslashit( dirname( $attachment_url ) ) . $size_data['file'];
525
-
526
  // Optimize the thumbnail size
527
- $response = do_imagify( $thumbnail_path, false, $optimization_level );
 
 
 
 
528
  $data = $this->fill_data( $data, $response, $id, $thumbnail_url, $size_key );
529
 
530
  /**
1
  <?php
2
  defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
 
4
+ class Imagify_Attachment extends Imagify_Abstract_Attachment {
 
 
 
 
 
 
 
 
 
 
5
  /**
6
  * The constructor
7
  *
18
  $this->id = (int) $id;
19
  }
20
  }
21
+
22
  /**
23
  * Get the attachment backup filepath.
24
  *
38
  return false;
39
  }
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  /**
42
  * Get the attachment optimization data.
43
  *
49
  public function get_data() {
50
  return get_post_meta( $this->id, '_imagify_data', true );
51
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
 
 
 
53
  /**
54
  * Get the attachment optimization level.
55
  *
62
  return get_post_meta( $this->id, '_imagify_optimization_level', true );
63
  }
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  * Get the attachment optimization status (success or error).
67
  *
86
  return get_attached_file( $this->id );
87
  }
88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * Get the original attachment URL.
91
  *
98
  return wp_get_attachment_url( $this->id );
99
  }
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  /**
102
  * Update the metadata size of the attachment
103
  *
122
  }
123
  }
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  /**
126
  * Fills statistics data with values from $data array
127
  *
209
 
210
  // Check if the full size is already optimized
211
  if ( $this->is_optimized() && ( $this->get_optimization_level() == $optimization_level ) ) {
 
212
  return;
213
  }
214
 
221
  */
222
  do_action( 'before_imagify_optimize_attachment', $id );
223
 
224
+ set_transient( 'imagify-async-in-progress-' . $id, true, 10 * MINUTE_IN_SECONDS );
225
+
226
  // Get the resize values for the original size
227
  $resize = array();
228
  $do_resize = get_imagify_option( 'resize_larger', false );
234
  }
235
 
236
  // Optimize the original size
237
+ $response = do_imagify( $attachment_path, array(
238
+ 'optimization_level' => $optimization_level,
239
+ 'resize' => $resize,
240
+ 'context' => 'wp',
241
+ 'original_size' => $this->get_original_size( false )
242
+ ) );
243
  $data = $this->fill_data( $data, $response, $id, $attachment_url );
244
 
245
  // Save the optimization level
246
  update_post_meta( $id, '_imagify_optimization_level', $optimization_level );
247
 
248
+ if ( (bool) ! $data ) {
249
  delete_transient( 'imagify-async-in-progress-' . $id );
250
  return;
251
  }
270
 
271
  $thumbnail_path = trailingslashit( dirname( $attachment_path ) ) . $size_data['file'];
272
  $thumbnail_url = trailingslashit( dirname( $attachment_url ) ) . $size_data['file'];
273
+
274
  // Optimize the thumbnail size
275
+ $response = do_imagify( $thumbnail_path, array(
276
+ 'backup' => false,
277
+ 'optimization_level' => $optimization_level,
278
+ 'context' => 'wp'
279
+ ) );
280
  $data = $this->fill_data( $data, $response, $id, $thumbnail_url, $size_key );
281
 
282
  /**
inc/common/attachments.php CHANGED
@@ -5,16 +5,18 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * Auto-optimize when a new attachment is generated
6
  *
7
  * @since 1.0
 
8
  */
9
  add_filter( 'wp_generate_attachment_metadata', '_imagify_optimize_attachment', PHP_INT_MAX, 2 );
10
  function _imagify_optimize_attachment( $metadata, $attachment_id ) {
11
  $api_key = get_imagify_option( 'api_key', false );
12
 
13
- if ( ! empty( $api_key ) && get_imagify_option( 'auto_optimize', false ) ) {
14
- $attachment = new Imagify_Attachment( $attachment_id );
15
-
16
- // Optimize it!!!!!
17
- $attachment->optimize( null, $metadata );
 
18
  }
19
 
20
  return $metadata;
@@ -46,9 +48,8 @@ function _imagify_optimize_save_image_editor_file() {
46
  && 'open' != $_POST['do']
47
  ) {
48
 
49
- $body = $_POST;
50
- $body['action'] = 'imagify_async_optimize_save_image_editor_file';
51
- $body['transient_id'] = $body['postid'];
52
 
53
  imagify_do_async_job( $body );
54
  }
5
  * Auto-optimize when a new attachment is generated
6
  *
7
  * @since 1.0
8
+ * @since 1.5 Async job
9
  */
10
  add_filter( 'wp_generate_attachment_metadata', '_imagify_optimize_attachment', PHP_INT_MAX, 2 );
11
  function _imagify_optimize_attachment( $metadata, $attachment_id ) {
12
  $api_key = get_imagify_option( 'api_key', false );
13
 
14
+ if ( ! empty( $api_key ) && get_imagify_option( 'auto_optimize', false ) ) {
15
+ $context = 'wp';
16
+ $action = 'imagify_async_optimize_upload_new_media';
17
+ $_ajax_nonce = wp_create_nonce( 'new_media-' . $attachment_id );
18
+
19
+ imagify_do_async_job( compact( 'action', '_ajax_nonce', 'metadata', 'attachment_id', 'context' ) );
20
  }
21
 
22
  return $metadata;
48
  && 'open' != $_POST['do']
49
  ) {
50
 
51
+ $body = $_POST;
52
+ $body['action'] = 'imagify_async_optimize_save_image_editor_file';
 
53
 
54
  imagify_do_async_job( $body );
55
  }
inc/functions/admin-stats.php CHANGED
@@ -5,24 +5,41 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * Count number of attachments.
6
  *
7
  * @since 1.0
 
8
  *
9
  * @return int The number of attachments.
10
  */
11
  function imagify_count_attachments() {
12
  global $wpdb;
13
 
14
- $count = $wpdb->get_var(
15
- "SELECT COUNT($wpdb->posts.ID)
16
- FROM $wpdb->posts
17
- WHERE post_type = 'attachment'
18
- AND post_status != 'trash'
19
- AND ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')"
20
- );
21
-
22
- if ( $count > apply_filters( 'imagify_unoptimized_attachment_limit', 10000 ) ) {
23
- set_transient( IMAGIFY_SLUG . '_large_library', 1 );
24
  }
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  return (int) $count;
27
  }
28
 
@@ -30,24 +47,41 @@ function imagify_count_attachments() {
30
  * Count number of optimized attachments with an error.
31
  *
32
  * @since 1.0
 
33
  *
34
  * @return int The number of attachments.
35
  */
36
- function imagify_count_error_attachments() {
37
  global $wpdb;
 
 
 
 
 
 
 
 
38
 
39
- $count = $wpdb->get_var(
40
- "SELECT COUNT($wpdb->posts.ID)
41
- FROM $wpdb->posts
42
- INNER JOIN $wpdb->postmeta
43
- ON $wpdb->posts.ID = $wpdb->postmeta.post_id
44
- WHERE ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')
45
- AND ( ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'error' )
46
- )
47
- AND $wpdb->posts.post_type = 'attachment'
48
- AND $wpdb->posts.post_status = 'inherit'"
49
- );
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  return (int) $count;
52
  }
53
 
@@ -55,23 +89,40 @@ function imagify_count_error_attachments() {
55
  * Count number of optimized attachments (by Imagify or an other tool before).
56
  *
57
  * @since 1.0
 
58
  *
59
  * @return int The number of attachments.
60
  */
61
- function imagify_count_optimized_attachments() {
62
  global $wpdb;
 
 
 
 
 
 
 
 
63
 
64
- $count = $wpdb->get_var(
65
- "SELECT COUNT($wpdb->posts.ID)
66
- FROM $wpdb->posts
67
- INNER JOIN $wpdb->postmeta
68
- ON $wpdb->posts.ID = $wpdb->postmeta.post_id
69
- WHERE ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')
70
- AND ( ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'success' ) OR ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'already_optimized' ) )
71
- AND $wpdb->posts.post_type = 'attachment'
72
- AND $wpdb->posts.post_status = 'inherit'"
73
- );
74
-
 
 
 
 
 
 
 
 
75
  return (int) $count;
76
  }
77
 
@@ -79,11 +130,29 @@ function imagify_count_optimized_attachments() {
79
  * Count number of unoptimized attachments.
80
  *
81
  * @since 1.0
 
82
  *
83
  * @return int The number of attachments.
84
  */
85
  function imagify_count_unoptimized_attachments() {
86
- $count = imagify_count_attachments() - imagify_count_optimized_attachments() - imagify_count_error_attachments();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  return (int) $count;
88
  }
89
 
@@ -91,14 +160,25 @@ function imagify_count_unoptimized_attachments() {
91
  * Count percent of optimized attachments.
92
  *
93
  * @since 1.0
 
94
  *
95
  * @return int The percent of optimized attachments.
96
  */
97
  function imagify_percent_optimized_attachments() {
98
- $total_attachments = imagify_count_attachments();
99
- $total_optimized_attachments = imagify_count_optimized_attachments();
 
 
 
 
 
 
 
 
 
100
 
101
- $percent = ( 0 !== $total_attachments ) ? round( ( 100 - ( ( $total_attachments - ( $total_optimized_attachments ) ) / $total_attachments ) * 100 ) ) : 0;
 
102
 
103
  return $percent;
104
  }
@@ -107,36 +187,48 @@ function imagify_percent_optimized_attachments() {
107
  * Count percent, original & optimized size of all images optimized by Imagify.
108
  *
109
  * @since 1.0
 
110
  *
111
  * @return array An array containing the optimization data.
112
  */
113
  function imagify_count_saving_data( $key = '' ) {
114
  global $wpdb;
115
-
116
- $attachments = $wpdb->get_col(
117
- "SELECT pm1.meta_value
118
- FROM $wpdb->postmeta as pm1
119
- INNER JOIN $wpdb->postmeta as pm2
120
- ON pm1.post_id = pm2.post_id
121
- WHERE pm1.meta_key= '_imagify_data'
122
- AND ( pm2.meta_key= '_imagify_status' AND pm2.meta_value= 'success' )"
123
- );
124
-
125
- $attachments = array_map( 'maybe_unserialize', (array) $attachments );
 
 
 
 
 
 
 
 
 
 
 
126
  $original_size = 0;
127
  $optimized_size = 0;
128
  $count = 0;
129
-
130
  foreach( $attachments as $attachment_data ) {
131
  $stats_data = $attachment_data['stats'];
132
  $original_data = $attachment_data['sizes']['full'];
133
-
134
  // Incremente the original sizes
135
  $original_size += ( $original_data['original_size'] ) ? $original_data['original_size'] : 0;
136
  $optimized_size += ( $original_data['optimized_size'] ) ? $original_data['optimized_size'] : 0;
137
-
138
  unset( $attachment_data['sizes']['full'] );
139
-
140
  // Incremente the thumbnails sizes
141
  foreach ( $attachment_data['sizes'] as $size_key => $size_data ) {
142
  if ( ! empty( $size_data['success'] ) ) {
@@ -145,14 +237,14 @@ function imagify_count_saving_data( $key = '' ) {
145
  }
146
  }
147
  }
148
-
149
  $data = array(
150
  'count' => count( $attachments ),
151
  'original_size' => (int) $original_size,
152
  'optimized_size' => (int) $optimized_size,
153
  'percent' => ( 0 !== $optimized_size ) ? ceil( ( ( $original_size - $optimized_size ) / $original_size ) * 100 ) : 0
154
  );
155
-
156
  if ( ! empty( $key ) ) {
157
  return $data[ $key ];
158
  }
5
  * Count number of attachments.
6
  *
7
  * @since 1.0
8
+ * @author Jonathan Buttigieg
9
  *
10
  * @return int The number of attachments.
11
  */
12
  function imagify_count_attachments() {
13
  global $wpdb;
14
 
15
+ /**
16
+ * Filter the number of attachments
17
+ * 3rd party will be able to override the result
18
+ *
19
+ * @since 1.5
20
+ */
21
+ $count = apply_filters( 'imagify_count_attachments', false );
22
+
23
+ if ( false !== $count ) {
24
+ return $count;
25
  }
26
 
27
+ static $count;
28
+
29
+ if ( ! $count ) {
30
+ $count = $wpdb->get_var(
31
+ "SELECT COUNT($wpdb->posts.ID)
32
+ FROM $wpdb->posts
33
+ WHERE post_type = 'attachment'
34
+ AND post_status != 'trash'
35
+ AND ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')"
36
+ );
37
+
38
+ if ( $count > apply_filters( 'imagify_unoptimized_attachment_limit', 10000 ) ) {
39
+ set_transient( 'imagify_large_library', 1 );
40
+ }
41
+ }
42
+
43
  return (int) $count;
44
  }
45
 
47
  * Count number of optimized attachments with an error.
48
  *
49
  * @since 1.0
50
+ * @author Jonathan Buttigieg
51
  *
52
  * @return int The number of attachments.
53
  */
54
+ function imagify_count_error_attachments() {
55
  global $wpdb;
56
+
57
+ /**
58
+ * Filter the number of optimized attachments with an error
59
+ * 3rd party will be able to override the result
60
+ *
61
+ * @since 1.5
62
+ */
63
+ $count = apply_filters( 'imagify_count_error_attachments', false );
64
 
65
+ if ( false !== $count ) {
66
+ return $count;
67
+ }
68
+
69
+ static $count;
 
 
 
 
 
 
70
 
71
+ if ( ! $count ) {
72
+ $count = $wpdb->get_var(
73
+ "SELECT COUNT($wpdb->posts.ID)
74
+ FROM $wpdb->posts
75
+ INNER JOIN $wpdb->postmeta
76
+ ON $wpdb->posts.ID = $wpdb->postmeta.post_id
77
+ WHERE ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')
78
+ AND ( ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'error' )
79
+ )
80
+ AND $wpdb->posts.post_type = 'attachment'
81
+ AND $wpdb->posts.post_status = 'inherit'"
82
+ );
83
+ }
84
+
85
  return (int) $count;
86
  }
87
 
89
  * Count number of optimized attachments (by Imagify or an other tool before).
90
  *
91
  * @since 1.0
92
+ * @author Jonathan Buttigieg
93
  *
94
  * @return int The number of attachments.
95
  */
96
+ function imagify_count_optimized_attachments() {
97
  global $wpdb;
98
+
99
+ /**
100
+ * Filter the number of optimized attachments
101
+ * 3rd party will be able to override the result
102
+ *
103
+ * @since 1.5
104
+ */
105
+ $count = apply_filters( 'imagify_count_optimized_attachments', false );
106
 
107
+ if ( false !== $count ) {
108
+ return $count;
109
+ }
110
+
111
+ static $count;
112
+
113
+ if ( ! $count ) {
114
+ $count = $wpdb->get_var(
115
+ "SELECT COUNT($wpdb->posts.ID)
116
+ FROM $wpdb->posts
117
+ INNER JOIN $wpdb->postmeta
118
+ ON $wpdb->posts.ID = $wpdb->postmeta.post_id
119
+ WHERE ($wpdb->posts.post_mime_type = 'image/jpeg' OR $wpdb->posts.post_mime_type = 'image/png' OR $wpdb->posts.post_mime_type = 'image/gif')
120
+ AND ( ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'success' ) OR ( $wpdb->postmeta.meta_key = '_imagify_status' AND CAST($wpdb->postmeta.meta_value AS CHAR) = 'already_optimized' ) )
121
+ AND $wpdb->posts.post_type = 'attachment'
122
+ AND $wpdb->posts.post_status = 'inherit'"
123
+ );
124
+ }
125
+
126
  return (int) $count;
127
  }
128
 
130
  * Count number of unoptimized attachments.
131
  *
132
  * @since 1.0
133
+ * @author Jonathan Buttigieg
134
  *
135
  * @return int The number of attachments.
136
  */
137
  function imagify_count_unoptimized_attachments() {
138
+ /**
139
+ * Filter the number of unoptimized attachments
140
+ * 3rd party will be able to override the result
141
+ *
142
+ * @since 1.5
143
+ */
144
+ $count = apply_filters( 'imagify_count_unoptimized_attachments', false );
145
+
146
+ if ( false !== $count ) {
147
+ return $count;
148
+ }
149
+
150
+ static $count;
151
+
152
+ if ( ! $count ) {
153
+ $count = imagify_count_attachments() - imagify_count_optimized_attachments() - imagify_count_error_attachments();
154
+ }
155
+
156
  return (int) $count;
157
  }
158
 
160
  * Count percent of optimized attachments.
161
  *
162
  * @since 1.0
163
+ * @author Jonathan Buttigieg
164
  *
165
  * @return int The percent of optimized attachments.
166
  */
167
  function imagify_percent_optimized_attachments() {
168
+ /**
169
+ * Filter the percent of optimized attachments
170
+ * 3rd party will be able to override the result
171
+ *
172
+ * @since 1.5
173
+ */
174
+ $percent = apply_filters( 'imagify_percent_optimized_attachments', false );
175
+
176
+ if ( false === $percent ) {
177
+ $total_attachments = imagify_count_attachments();
178
+ $total_optimized_attachments = imagify_count_optimized_attachments();
179
 
180
+ $percent = ( 0 !== $total_attachments ) ? round( ( 100 - ( ( $total_attachments - ( $total_optimized_attachments ) ) / $total_attachments ) * 100 ) ) : 0;
181
+ }
182
 
183
  return $percent;
184
  }
187
  * Count percent, original & optimized size of all images optimized by Imagify.
188
  *
189
  * @since 1.0
190
+ * @author Jonathan Buttigieg
191
  *
192
  * @return array An array containing the optimization data.
193
  */
194
  function imagify_count_saving_data( $key = '' ) {
195
  global $wpdb;
196
+
197
+ /**
198
+ * Filter the query to get all optimized attachments
199
+ * 3rd party will be able to override the result
200
+ *
201
+ * @since 1.5
202
+ */
203
+ $attachments = apply_filters( 'imagify_count_saving_data', false );
204
+
205
+ if ( false === $attachments ) {
206
+ $attachments = $wpdb->get_col(
207
+ "SELECT pm1.meta_value
208
+ FROM $wpdb->postmeta as pm1
209
+ INNER JOIN $wpdb->postmeta as pm2
210
+ ON pm1.post_id = pm2.post_id
211
+ WHERE pm1.meta_key= '_imagify_data'
212
+ AND ( pm2.meta_key= '_imagify_status' AND pm2.meta_value= 'success' )"
213
+ );
214
+ }
215
+
216
+ $attachments = array_map( 'maybe_unserialize', (array) $attachments );
217
+
218
  $original_size = 0;
219
  $optimized_size = 0;
220
  $count = 0;
221
+
222
  foreach( $attachments as $attachment_data ) {
223
  $stats_data = $attachment_data['stats'];
224
  $original_data = $attachment_data['sizes']['full'];
225
+
226
  // Incremente the original sizes
227
  $original_size += ( $original_data['original_size'] ) ? $original_data['original_size'] : 0;
228
  $optimized_size += ( $original_data['optimized_size'] ) ? $original_data['optimized_size'] : 0;
229
+
230
  unset( $attachment_data['sizes']['full'] );
231
+
232
  // Incremente the thumbnails sizes
233
  foreach ( $attachment_data['sizes'] as $size_key => $size_data ) {
234
  if ( ! empty( $size_data['success'] ) ) {
237
  }
238
  }
239
  }
240
+
241
  $data = array(
242
  'count' => count( $attachments ),
243
  'original_size' => (int) $original_size,
244
  'optimized_size' => (int) $optimized_size,
245
  'percent' => ( 0 !== $optimized_size ) ? ceil( ( ( $original_size - $optimized_size ) / $original_size ) * 100 ) : 0
246
  );
247
+
248
  if ( ! empty( $key ) ) {
249
  return $data[ $key ];
250
  }
inc/functions/admin-ui.php CHANGED
@@ -5,21 +5,22 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
5
  * Get the optimization data list for a specific attachment.
6
  *
7
  * @since 1.0
 
8
  *
9
- * @param int $attachment_id The attachment ID.
10
- * @return string The output to print.
11
  */
12
- function get_imagify_attachment_optimization_text( $attachment_id ) {
13
  global $pagenow;
14
 
15
- $attachment = new Imagify_Attachment( $attachment_id );
16
  $data = $attachment->get_data();
17
  $output = ( 'post.php' != $pagenow ) ? '<ul class="imagify-datas-list">' : '';
18
  $output_before = ( 'post.php' != $pagenow ) ? '<li class="imagify-data-item">' : '<div class="misc-pub-section misc-pub-imagify imagify-data-item">';
19
  $output_after = ( 'post.php' != $pagenow ) ? '</li>' : '</div>';
20
  $reoptimize_output = '';
21
-
22
- if ( $error = get_imagify_attachment_error_text( $attachment_id ) ) {
23
  $error = ( 'post.php' === $pagenow ) ? $output_before . $error . $output_after : $error;
24
  return $error;
25
  }
@@ -27,7 +28,7 @@ function get_imagify_attachment_optimization_text( $attachment_id ) {
27
  $optimization_level = $attachment->get_optimization_level_label();
28
 
29
  if ( imagify_valid_key() && $attachment->has_backup() ) {
30
- $reoptimize_link = get_imagify_attachment_reoptimize_link( $attachment_id );
31
  $reoptimize_output = ( $reoptimize_link ) ? $reoptimize_link : '';
32
  }
33
 
@@ -71,12 +72,16 @@ function get_imagify_attachment_optimization_text( $attachment_id ) {
71
  $output .= $reoptimize_output;
72
 
73
  if ( $attachment->has_backup() ) {
 
 
 
 
74
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-restore' : '';
75
- $output .= '<a id="imagify-restore-' . $attachment_id . '" href="' . get_imagify_admin_url( 'restore-upload', $attachment_id ) . '" class="' . $class . '" data-waiting-label="' . esc_attr__( 'Restoring...', 'imagify' ) . '"><span class="dashicons dashicons-image-rotate"></span>' . __( 'Restore Original', 'imagify' ) . '</a>';
76
-
77
  if ( 'upload.php' != $pagenow ) {
78
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
79
-
80
  $output .= '<input id="imagify-original-src" type="hidden" value="' . $attachment->get_backup_url() . '">';
81
  $output .= '<input id="imagify-original-size" type="hidden" value="' . $attachment->get_original_size() . '">';
82
  $output .= '<input id="imagify-full-src" type="hidden" value="' . $image[0] . '">';
@@ -95,18 +100,25 @@ function get_imagify_attachment_optimization_text( $attachment_id ) {
95
  * Get the error message for a specific attachment.
96
  *
97
  * @since 1.0
 
98
  *
99
- * @param int $attachment_id The attachement ID.
100
- * @return string The output to print.
101
  */
102
- function get_imagify_attachment_error_text( $attachment_id ) {
103
  global $pagenow;
104
- $data = get_post_meta( $attachment_id, '_imagify_data', true );
105
- $output = '';
 
 
 
 
 
 
106
 
107
  if ( isset( $data['sizes']['full']['success'] ) && ! $data['sizes']['full']['success'] ) {
108
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-manual-upload' : '';
109
- $output .= '<strong>' . $data['sizes']['full']['error'] . '</strong><br/><a id="imagify-upload-' . $attachment_id . '" class="button ' . $class . '" href="' . get_imagify_admin_url( 'manual-upload', $attachment_id ) . '" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Try again', 'imagify' ) . '</a>';
110
  }
111
 
112
  return $output;
@@ -116,17 +128,21 @@ function get_imagify_attachment_error_text( $attachment_id ) {
116
  * Get the re-optimize link for a specific attachment.
117
  *
118
  * @since 1.0
 
119
  *
120
- * @param int $attachment_id The attachement ID.
121
- * @return string The output to print.
122
  */
123
- function get_imagify_attachment_reoptimize_link( $attachment_id ) {
124
  global $pagenow;
125
 
126
- $attachment = new Imagify_Attachment( $attachment_id );
127
- $level = (int) $attachment->get_optimization_level();
128
- $args = array( 'attachment_id' => $attachment_id );
129
- $output = '';
 
 
 
130
 
131
  if ( $attachment->has_backup() ) {
132
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-manual-override-upload' : '';
@@ -158,21 +174,22 @@ function get_imagify_attachment_reoptimize_link( $attachment_id ) {
158
  * Get all data to diplay for a specific attachment.
159
  *
160
  * @since 1.2
 
161
  *
162
- * @param int $attachment_id The attachement ID.
163
  * @return string The output to print.
164
  */
165
- function get_imagify_media_column_content( $attachment_id ) {
166
- $output = '';
167
- $attachment = new Imagify_Attachment( $attachment_id );
168
  $attachment_ext = $attachment->get_extension();
169
-
 
170
  // Check if the attachment extension is allowed
171
- if ( ! wp_attachment_is_image( $attachment_id ) ) {
172
  $output = sprintf( __( '%s can\'t be optimized', 'imagify' ), strtoupper( $attachment_ext ) );
173
  return $output;
174
  }
175
-
176
  // Check if the API key is valid
177
  if ( ! imagify_valid_key() && ! $attachment->is_optimized() ) {
178
  $output .= __( 'Invalid API key', 'imagify' );
@@ -180,18 +197,516 @@ function get_imagify_media_column_content( $attachment_id ) {
180
  $output .= '<a href="' . get_imagify_admin_url( 'options-general' ) . '">' . __( 'Check your Settings', 'imagify' ) . '</a>';
181
  return $output;
182
  }
183
-
184
- if ( false !== get_transient( 'imagify-async-in-progress-' . $attachment_id ) ) {
 
 
 
185
  $output = '<div class="button"><span class="imagify-spinner"></span>' . __( 'Optimizing...', 'imagify' ) . '</div>';
186
  return $output;
187
  }
188
 
189
  // Check if the image was optimized
190
  if ( ! $attachment->is_optimized() && ! $attachment->has_error() ) {
191
- $output .= '<a id="imagify-upload-' . $attachment_id . '" href="' . get_imagify_admin_url( 'manual-upload', $attachment_id ) . '" class="button-primary button-imagify-manual-upload" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Optimize', 'imagify' ) . '</a>';
 
 
 
 
192
  return $output;
193
  }
194
 
195
- $output .= get_imagify_attachment_optimization_text( $attachment_id );
196
  return $output;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
  }
5
  * Get the optimization data list for a specific attachment.
6
  *
7
  * @since 1.0
8
+ * @author Jonathan Buttigieg
9
  *
10
+ * @param object $attachment The attachment object.
11
+ * @return string The output to print.
12
  */
13
+ function get_imagify_attachment_optimization_text( $attachment, $context = 'wp' ) {
14
  global $pagenow;
15
 
16
+ $attachment_id = $attachment->id;
17
  $data = $attachment->get_data();
18
  $output = ( 'post.php' != $pagenow ) ? '<ul class="imagify-datas-list">' : '';
19
  $output_before = ( 'post.php' != $pagenow ) ? '<li class="imagify-data-item">' : '<div class="misc-pub-section misc-pub-imagify imagify-data-item">';
20
  $output_after = ( 'post.php' != $pagenow ) ? '</li>' : '</div>';
21
  $reoptimize_output = '';
22
+
23
+ if ( $error = get_imagify_attachment_error_text( $attachment, $context ) ) {
24
  $error = ( 'post.php' === $pagenow ) ? $output_before . $error . $output_after : $error;
25
  return $error;
26
  }
28
  $optimization_level = $attachment->get_optimization_level_label();
29
 
30
  if ( imagify_valid_key() && $attachment->has_backup() ) {
31
+ $reoptimize_link = get_imagify_attachment_reoptimize_link( $attachment, $context );
32
  $reoptimize_output = ( $reoptimize_link ) ? $reoptimize_link : '';
33
  }
34
 
72
  $output .= $reoptimize_output;
73
 
74
  if ( $attachment->has_backup() ) {
75
+ $args = array(
76
+ 'attachment_id' => $attachment_id,
77
+ 'context' => $context
78
+ );
79
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-restore' : '';
80
+ $output .= '<a id="imagify-restore-' . $attachment_id . '" href="' . get_imagify_admin_url( 'restore-upload', $args ) . '" class="' . $class . '" data-waiting-label="' . esc_attr__( 'Restoring...', 'imagify' ) . '"><span class="dashicons dashicons-image-rotate"></span>' . __( 'Restore Original', 'imagify' ) . '</a>';
81
+
82
  if ( 'upload.php' != $pagenow ) {
83
  $image = wp_get_attachment_image_src( $attachment_id, 'full' );
84
+
85
  $output .= '<input id="imagify-original-src" type="hidden" value="' . $attachment->get_backup_url() . '">';
86
  $output .= '<input id="imagify-original-size" type="hidden" value="' . $attachment->get_original_size() . '">';
87
  $output .= '<input id="imagify-full-src" type="hidden" value="' . $image[0] . '">';
100
  * Get the error message for a specific attachment.
101
  *
102
  * @since 1.0
103
+ * @author Jonathan Buttigieg
104
  *
105
+ * @param object $attachment The attachement object.
106
+ * @return string The output to print.
107
  */
108
+ function get_imagify_attachment_error_text( $attachment, $context = 'wp' ) {
109
  global $pagenow;
110
+
111
+ $attachment_id = $attachment->id;
112
+ $data = $attachment->get_data();
113
+ $output = '';
114
+ $args = array(
115
+ 'attachment_id' => $attachment_id,
116
+ 'context' => $context
117
+ );
118
 
119
  if ( isset( $data['sizes']['full']['success'] ) && ! $data['sizes']['full']['success'] ) {
120
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-manual-upload' : '';
121
+ $output .= '<strong>' . $data['sizes']['full']['error'] . '</strong><br/><a id="imagify-upload-' . $attachment_id . '" class="button ' . $class . '" href="' . get_imagify_admin_url( 'manual-upload', $args ) . '" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Try again', 'imagify' ) . '</a>';
122
  }
123
 
124
  return $output;
128
  * Get the re-optimize link for a specific attachment.
129
  *
130
  * @since 1.0
131
+ * @author Jonathan Buttigieg
132
  *
133
+ * @param int $attachment_id The attachement ID.
134
+ * @return string The output to print.
135
  */
136
+ function get_imagify_attachment_reoptimize_link( $attachment, $context = 'wp' ) {
137
  global $pagenow;
138
 
139
+ $attachment_id = $attachment->id;
140
+ $level = (int) $attachment->get_optimization_level();
141
+ $args = array(
142
+ 'attachment_id' => $attachment_id,
143
+ 'context' => $context
144
+ );
145
+ $output = '';
146
 
147
  if ( $attachment->has_backup() ) {
148
  $class = ( 'post.php' !== $pagenow ) ? 'button-imagify-manual-override-upload' : '';
174
  * Get all data to diplay for a specific attachment.
175
  *
176
  * @since 1.2
177
+ * @author Jonathan Buttigieg
178
  *
179
+ * @param object $attachment The attachement object.
180
  * @return string The output to print.
181
  */
182
+ function get_imagify_media_column_content( $attachment, $context = 'wp' ) {
183
+ $attachment_id = $attachment->id;
 
184
  $attachment_ext = $attachment->get_extension();
185
+ $output = '';
186
+
187
  // Check if the attachment extension is allowed
188
+ if ( 'wp' === $context && ! wp_attachment_is_image( $attachment_id ) ) {
189
  $output = sprintf( __( '%s can\'t be optimized', 'imagify' ), strtoupper( $attachment_ext ) );
190
  return $output;
191
  }
192
+
193
  // Check if the API key is valid
194
  if ( ! imagify_valid_key() && ! $attachment->is_optimized() ) {
195
  $output .= __( 'Invalid API key', 'imagify' );
197
  $output .= '<a href="' . get_imagify_admin_url( 'options-general' ) . '">' . __( 'Check your Settings', 'imagify' ) . '</a>';
198
  return $output;
199
  }
200
+
201
+ $transient_context = ( 'wp' !== $context ) ? strtolower( $context ) . '-' : '';
202
+ $transient_name = 'imagify-' . $transient_context . 'async-in-progress-' . $attachment_id;
203
+
204
+ if ( false !== get_transient( $transient_name ) ) {
205
  $output = '<div class="button"><span class="imagify-spinner"></span>' . __( 'Optimizing...', 'imagify' ) . '</div>';
206
  return $output;
207
  }
208
 
209
  // Check if the image was optimized
210
  if ( ! $attachment->is_optimized() && ! $attachment->has_error() ) {
211
+ $args = array(
212
+ 'attachment_id' => $attachment_id,
213
+ 'context' => $context
214
+ );
215
+ $output .= '<a id="imagify-upload-' . $attachment_id . '" href="' . get_imagify_admin_url( 'manual-upload', $args ) . '" class="button-primary button-imagify-manual-upload" data-waiting-label="' . esc_attr__( 'Optimizing...', 'imagify' ) . '">' . __( 'Optimize', 'imagify' ) . '</a>';
216
  return $output;
217
  }
218
 
219
+ $output .= get_imagify_attachment_optimization_text( $attachment, $context );
220
  return $output;
221
+ }
222
+
223
+ /**
224
+ * Add a small section with button
225
+ *
226
+ * @return string HTML
227
+ *
228
+ * @since 1.5
229
+ * @author Geoffrey
230
+ *
231
+ * @todo add only for no-payable users?
232
+ */
233
+ function get_imagify_new_to_imagify() {
234
+ if ( apply_filters( 'imagify_show_new_to_imagify', true ) ) {
235
+ return '
236
+ <div class="imagify-section imagify-section-positive">
237
+ <div class="imagify-start imagify-mr2">
238
+ <button id="imagify-get-pricing-modal" data-nonce="' . wp_create_nonce('imagify_get_pricing_' . get_current_user_id() ) . '" data-target="#imagify-pricing-modal" type="button" class="imagify-modal-trigger imagify-button imagify-button-light imagify-button-big">
239
+ <i class="dashicons dashicons-dashboard" aria-hidden="true"></i>
240
+ <span class="button-text">' . esc_html__( 'What plan do I need?', 'imagify' ) . '</span>
241
+ </button>
242
+ </div>
243
+ <div class="imagify-oh">
244
+ <p class="imagify-section-title">' . esc_html__( 'You\'re new to Imagify?', 'imagify' ) . '</p>
245
+ <p>' . esc_html__( 'Let us help you by analyzing your existing images and determinate the best plan for you', 'imagify' ) . '</p>
246
+ </div>
247
+ </div>
248
+ ';
249
+ }
250
+ }
251
+
252
+ /**
253
+ * Return the formatted price present in pricing tables
254
+ *
255
+ * @param float $value the price value
256
+ * @return string the markuped price
257
+ *
258
+ * @since 1.5
259
+ * @author Geoffrey
260
+ */
261
+ function get_imagify_price_table_format( $value ) {
262
+ $v = explode( '.', (string) $value );
263
+
264
+ return '<span class="imagify-price-big">' . $v[0] . '</span> <span class="imagify-price-mini">.' . ( strlen( $v[1] ) === 1 ? $v[1] . '0' : $v[1] ) . '</span>';
265
+ }
266
+
267
+ /**
268
+ * Return the payment modal HTML
269
+ * @return string HTML code for payement modal
270
+ *
271
+ * @since 1.5
272
+ * @author Geoffrey
273
+ */
274
+ function imagify_payment_modal() {
275
+ ?>
276
+ <div id="imagify-pricing-modal" class="imagify-modal imagify-payment-modal" aria-hidden="false" role="dialog" aria-labelledby="imagify-pricing-step-1">
277
+ <div class="imagify-modal-content">
278
+ <div class="imagify-modal-main">
279
+ <ol class="imagify-payment-steps">
280
+ <li id="imagify-pricing-step-1" class="active"><?php esc_html_e( 'Choose Plan', 'imagify' ); ?></li>
281
+ <li id="imagify-pricing-step-2"><?php esc_html_e( 'Payment Info', 'imagify' ); ?></li>
282
+ </ol>
283
+
284
+ <div class="imagify-modal-views imagify-pre-checkout-view" id="imagify-pre-checkout-view" aria-hidden="false">
285
+ <div class="imagify-modal-section section-gray">
286
+ <p class="imagify-modal-title"><?php esc_html_e( 'We analysed your images', 'imagify' ); ?></p>
287
+
288
+ <div class="imagify-modal-cols">
289
+ <div class="imagify-col">
290
+ <p>
291
+ <span class="imagify-border-styled"><?php
292
+ printf( esc_html__( 'You have %s images', 'imagify' ), '</span><span class="imagify-big-number">58000</span><span class="imagify-border-styled">' ); ?></span>
293
+ </p>
294
+ </div>
295
+ <div class="imagify-col">
296
+ <p class="imagify-iconed">
297
+ <i class="dashicons dashicons-images-alt2" aria-hidden="true"></i>
298
+ <?php printf( esc_html__( 'You actually have %s of images in your library.', 'imagify' ), '<strong class="imagify-dark">3 GB</strong>' ); ?>
299
+ </p>
300
+ <p class="imagify-iconed">
301
+ <i class="dashicons dashicons-cloud" aria-hidden="true"></i>
302
+ <?php printf( esc_html__( 'You upload around %s of images per month.', 'imagify' ), '<strong class="imagify-dark">353 MB</strong>' ); ?>
303
+ </p>
304
+ </div>
305
+ </div>
306
+ </div>
307
+
308
+ <div class="imagify-modal-section">
309
+ <p class="imagify-modal-title"><?php esc_html_e( 'We recommend you this plan', 'imagify' ); ?></p>
310
+
311
+ <div class="imagify-offer-line imagify-offer-monthly imagify-offer-selected imagify-month-selected" data-offer='{"lite":{"id":3,"name":"Lite","data":1073741824,"dataf":"1 GB","imgs":5000,"prices":{"monthly":4.99,"yearly":4.16,"add":4}}}'>
312
+ <div class="imagify-offer-header">
313
+ <p class="imagify-offer-title imagify-switch-my">
314
+ <span aria-hidden="false" class="imagify-monthly"><?php esc_html_e( 'Subscribe a monthly plan', 'imagify' ); ?></span>
315
+ <span aria-hidden="true" class="imagify-yearly"><?php esc_html_e( 'Subscribe a yearly plan', 'imagify' ); ?></span>
316
+ </p>
317
+ <div class="imagify-inline-options imagify-radio-line">
318
+ <input id="imagify-subscription-monthly" type="radio" value="monthly" name="plan-subscription" checked="checked">
319
+ <label for="imagify-subscription-monthly"><?php esc_html_e( 'Monthly' , 'imagify' ); ?></label>
320
+
321
+ <input id="imagify-subscription-yearly" type="radio" value="yearly" name="plan-subscription">
322
+ <label for="imagify-subscription-yearly"><?php esc_html_e( 'Yearly' , 'imagify' ); ?><span class="imagify-2-free"><?php esc_html_e( '2 months free', 'imagify' ) ?></span></label>
323
+ </div><!-- .imagify-radio-line -->
324
+ </div><!-- .imagify-offer-header -->
325
+
326
+ <div class="imagify-offer-content imagify-flex-table">
327
+
328
+ <div class="imagify-col-checkbox">
329
+ <input type="checkbox" name="imagify-offer" id="imagify-offer-1gb" value="1Gb" checked="checked" class="imagify-checkbox medium">
330
+ <label for="imagify-offer-1gb">
331
+ <span class="imagify-the-offer">
332
+ <span class="imagify-offer-size">1 GB</span>
333
+ <span class="imagify-offer-by"><?php esc_html_e( '/month', 'imagify' ); ?></span>
334
+ </span>
335
+ <span class="imagify-approx"><?php printf( esc_html__( 'approx: %s images', 'imagify' ), '<span class="imagify-approx-nb">5&nbsp;000</span>' ); ?></span>
336
+ </label>
337
+ </div>
338
+ <div class="imagify-col-price imagify-flex-table">
339
+ <span class="imagify-price-block">
340
+ <span class="imagify-dollars">$</span>
341
+ <span class="imagify-number-block">
342
+ <span class="imagify-switch-my">
343
+ <span class="imagify-monthly" aria-hidden="false">
344
+ <span class="imagify-price-big">3</span>
345
+ <span class="imagify-price-mini">.99</span>
346
+ </span>
347
+ <span class="imagify-yearly" aria-hidden="true">
348
+ <span class="imagify-price-big">3</span>
349
+ <span class="imagify-price-mini">.16</span>
350
+ </span>
351
+ </span>
352
+ <span class="imagify-price-by"><?php esc_html_e( '/month', 'imagify' ); ?></span>
353
+ </span>
354
+ </span>
355
+
356
+ <p class="imagify-price-complement"><?php printf( __( '%s per<br>
357
+ additionnal Gb', 'imagify' ), '<span class="imagify-price-add-data"></span>' ); ?></p>
358
+
359
+ </div>
360
+ <div class="imagify-col-other-actions">
361
+ <a href="#imagify-plans-selection-view" class="imagify-choose-another-plan" data-imagify-choose="plan"><?php esc_html_e( 'Choose another plan', 'imagify' ); ?></a>
362
+ </div>
363
+
364
+ </div><!-- .imagify-offer-content -->
365
+
366
+ </div><!-- .imagify-offer-line -->
367
+
368
+ <div class="imagify-offer-line imagify-offer-onetime" data-offer='{"recommended":{"id":999,"name":"Customized","data":3000001337,"dataf":"3 GB","imgs":54634,"price":28.98}}'>
369
+ <div class="imagify-offer-header">
370
+ <p class="imagify-offer-title">
371
+ <?php esc_html_e( 'Optimize the images you already have, buy a one-time plan', 'imagify' ); ?>
372
+ </p>
373
+ </div><!-- .imagify-offer-header -->
374
+
375
+ <div class="imagify-offer-content imagify-flex-table">
376
+
377
+ <div class="imagify-col-checkbox">
378
+ <input type="checkbox" name="imagify-offer" id="imagify-offer-custom" value="1Gb" class="imagify-checkbox medium">
379
+ <label for="imagify-offer-custom">
380
+ <span class="imagify-the-offer">
381
+ <span class="imagify-offer-size">3 GB</span>
382
+ </span>
383
+ <span class="imagify-approx"><?php printf( esc_html__( 'approx: %s images', 'imagify' ), '<span class="imagify-approx-nb">54000</span>' ); ?></span>
384
+ </label>
385
+ </div>
386
+ <div class="imagify-col-price imagify-flex-table">
387
+ <span class="imagify-price-block">
388
+ <span class="imagify-dollars">$</span>
389
+ <span class="imagify-number-block">
390
+ <span class="imagify-price-big">60</span>
391
+ <span class="imagify-price-mini">.99</span>
392
+ </span>
393
+ </span>
394
+ </div>
395
+ <div class="imagify-col-other-actions">
396
+ <a href="#imagify-plans-selection-view" class="imagify-choose-another-plan" data-imagify-choose="onetime"><?php esc_html_e( 'Choose another plan', 'imagify' ); ?></a>
397
+ </div>
398
+
399
+ </div><!-- .imagify-offer-content -->
400
+
401
+ </div><!-- .imagify-offer-line -->
402
+
403
+
404
+ <p class="imagify-submit-line">
405
+ <button type="button" class="button button-secondary imagify-button-secondary" id="imagify-modal-checkout-btn">
406
+ <i class="dashicons dashicons-cart" aria-hidden="true"></i>
407
+ <?php esc_html_e( 'Checkout', 'imagify' ); ?>
408
+ </button>
409
+ </p>
410
+
411
+ <p class="imagify-footer-lines"><?php esc_html_e( 'Monthly plans comes with credits which is renewed every months. The billing happens automatically each month or year depending the billing period you choose.', 'imagify' ); ?></p>
412
+ </div>
413
+ </div><!-- .imagify-pre-checkout-view -->
414
+
415
+ <?php
416
+
417
+
418
+
419
+ /**
420
+ *
421
+ *
422
+ * SECOND MODAL VIEW
423
+ *
424
+ *
425
+ */
426
+
427
+
428
+
429
+ ?>
430
+
431
+ <div class="imagify-modal-views imagify-plans-selection-view" id="imagify-plans-selection-view" aria-hidden="true">
432
+ <ul class="imagify-tabs" role="tablist">
433
+ <li class="imagify-tab imagify-current">
434
+ <a href="#imagify-pricing-tab-monthly" role="tab" aria-controls="imagify-pricing-tab-monthly" aria-selected="true">
435
+ <?php esc_html_e( 'Monthly Plans', 'imagify' ); ?>
436
+ </a>
437
+ </li>
438
+ <li class="imagify-tab">
439
+ <a href="#imagify-pricing-tab-onetime" role="tab" aria-controls="imagify-pricing-tab-onetime" aria-selected="false">
440
+ <?php esc_html_e( 'One Time Plans', 'imagify' ); ?>
441
+ </a>
442
+ </li>
443
+ </ul><!-- .imagify-tabs -->
444
+
445
+ <div class="imagify-tabs-contents">
446
+
447
+ <div class="imagify-tab-content imagify-current" id="imagify-pricing-tab-monthly" role="tabpanel">
448
+
449
+ <div class="imagify-modal-section section-gray">
450
+ <p><?php esc_html_e( 'Monthly plans come with credits which is renewed every months. The billing happens automatically each month or year depending the billing period you choose.', 'imagify' ); ?></p>
451
+ </div>
452
+
453
+ <div class="imagify-inline-options imagify-small-options imagify-radio-line">
454
+ <input id="imagify-pricing-montly" type="radio" value="monthly" name="plan-pricing" checked="checked">
455
+ <label for="imagify-pricing-montly"><?php esc_html_e( 'Monthly' , 'imagify' ); ?></label>
456
+
457
+ <input id="imagify-pricing-yearly" type="radio" value="yearly" name="plan-pricing">
458
+ <label for="imagify-pricing-yearly"><?php esc_html_e( 'Yearly' , 'imagify' ); ?><span class="imagify-2-free imagify-b-right"><?php esc_html_e( '2 months free', 'imagify' ) ?></span></label>
459
+ </div><!-- .imagify-radio-line -->
460
+
461
+ <div class="imagify-pricing-table imagify-month-selected">
462
+
463
+ <script type="text/template" id="imagify-offer-monthly-template"><div class="imagify-offer-line imagify-offer-monthlies imagify-flex-table">
464
+ <div class="imagify-col-details">
465
+ <p class="imagify-label">
466
+ <span class="imagify-the-offer">
467
+ <span class="imagify-offer-size"></span>
468
+ <span class="imagify-offer-by"><?php esc_html_e( '/month', 'imagify' ); ?></span>
469
+ </span>
470
+ <span class="imagify-approx"><?php printf( __( 'approx: %s images', 'imagify' ), '<span class="imagify-approx-nb"></span>' ); ?></span>
471
+ </p>
472
+ </div>
473
+ <div class="imagify-col-price imagify-flex-table">
474
+ <span class="imagify-price-block">
475
+ <span class="imagify-dollars">$</span>
476
+ <span class="imagify-number-block">
477
+ <span class="imagify-switch-my"></span>
478
+ <span class="imagify-price-by"><?php esc_html_e( '/month', 'imagify' ); ?></span>
479
+ </span>
480
+ </span>
481
+
482
+ <span class="imagify-recommend" aria-hidden="true"><?php esc_html_e( 'we recommend for you', 'imagify' ); ?></span>
483
+
484
+ <p class="imagify-price-complement"><?php printf( __( '%s per<br>
485
+ additionnal Gb', 'imagify' ), '<span class="imagify-price-add-data"></span>' ); ?></p>
486
+
487
+ </div><!-- .imagify-col-price -->
488
+
489
+ <div class="imagify-col-other-actions">
490
+ <button type="button" class="button imagify-button-secondary mini imagify-payment-btn-select-plan"><?php esc_html_e( 'Choose plan', 'imagify' ); ?></button>
491
+ </div>
492
+ </div><!-- .imagify-offer-line --></script>
493
+ </div><!-- .imagify-pricing-table -->
494
+
495
+ <div class="imagify-cols">
496
+ <div class="imagify-col imagify-txt-start">
497
+ <p class="imagify-special-needs">
498
+ <strong><?php esc_html_e( 'Need more?', 'imagify' ); ?></strong>
499
+ <span><?php esc_html_e( 'for special needs', 'imagify' ); ?></span>
500
+ </p>
501
+ </div>
502
+ <div class="imagify-col imagify-txt-end">
503
+ <p><a class="button imagify-button-ghost imagify-button-medium imagify-mt1 imagify-mb1 imagify-mr1" href="https://imagify.io/<?php echo ( get_locale() === 'fr_FR' ? 'fr/' : '' ) ?>contact" target="_blank"><i class="dashicons dashicons-email" aria-hidden="true"></i>&nbsp;<?php esc_html_e( 'Contact Us', 'imagify' ); ?></a></p>
504
+ </div>
505
+ </div>
506
+
507
+ </div><!-- .imagify-tab-content -->
508
+ <div class="imagify-tab-content" id="imagify-pricing-tab-onetime" role="tabpanel">
509
+ <div class="imagify-modal-section section-gray">
510
+ <p><?php esc_html_e( 'One time plans are useful if you have a lots of existing images which need to be optimized. You can use it for bulk optimizing all your past images. You will pay only once.', 'imagify' ); ?></p>
511
+ </div>
512
+
513
+
514
+ <div class="imagify-pricing-table imagify-month-selected">
515
+ <script type="text/template" id="imagify-offer-onetime-template"><div class="imagify-offer-line imagify-flex-table imagify-offer-onetimes">
516
+ <div class="imagify-col-details">
517
+ <p class="imagify-label">
518
+ <span class="imagify-the-offer">
519
+ <span class="imagify-offer-size"></span>
520
+ </span>
521
+ <span class="imagify-approx"><?php printf( __( 'approx: %s images', 'imagify' ), '<span class="imagify-approx-nb"></span>' ); ?></span>
522
+ </p>
523
+ </div>
524
+ <div class="imagify-col-price">
525
+ <span class="imagify-price-block">
526
+ <span class="imagify-dollars">$</span>
527
+ <span class="imagify-number-block"></span>
528
+ </span>
529
+ <span class="imagify-recommend"><?php esc_html__( 'we recommend for you', 'imagify' ); ?></span>
530
+ </div><!-- .imagify-col-price -->
531
+
532
+ <div class="imagify-col-other-actions">
533
+ <button type="button" class="button imagify-button-secondary mini imagify-payment-btn-select-plan"><?php esc_html_e( 'Choose plan', 'imagify' ); ?></button>
534
+ </div>
535
+ </div><!-- .imagify-offer-line --></script>
536
+ </div><!-- .imagify-pricing-table -->
537
+
538
+ </div><!-- .imagify-tab-content -->
539
+
540
+ </div><!-- .imagify-tabs-contents -->
541
+ </div><!-- .imagify-plans-selection-view -->
542
+
543
+
544
+ <?php
545
+
546
+
547
+
548
+ /**
549
+ *
550
+ *
551
+ * THIRD MODAL VIEW
552
+ *
553
+ *
554
+ */
555
+
556
+
557
+
558
+ ?>
559
+
560
+ <div class="imagify-modal-views imagify-payment-process-view" id="imagify-payment-process-view" aria-hidden="true">
561
+ <div class="imagify-modal-section section-gray">
562
+ <div class="imagify-cart imagify-month-selected">
563
+ <p class="imagify-cart-label"><?php esc_html_e( 'Your order', 'imagify' ); ?></p>
564
+
565
+ <div class="imagify-cart-list">
566
+ <?php
567
+ $emptied_item = '<div class="imagify-cart-emptied-item">
568
+ <p>' . sprintf( esc_html__( '%scancel%sYou just removed %s', 'imagify' ), '<a href="#cancel" class="imagify-cancel-removing">', '</a>', '<span class="imagify-removed-name"></span>' ) . '</p>
569
+ </div>';
570
+ ?>
571
+
572
+ <!-- JS stuff will complete the datas of list item -->
573
+
574
+ <div class="imagify-cart-item imagify-cart-item-monthly imagify-flex-table imagify-align-top" data-offer="">
575
+ <div class="imagify-cl-remove">
576
+ <button type="button" class="imagify-remove-from-cart" title="<?php esc_html_e( 'Remove this item', 'imagify' ); ?>"><i class="dashicons dashicons-no-alt" aria-hidden="true"></i></button>
577
+ </div>
578
+ <div class="imagify-cl-name">
579
+ <p class="imagify-cart-product-name"><span class="imagify-the-product-name"></span> Monthly plan</p>
580
+ <p class="imagify-cart-suggestion"><a href="#step1" class="imagify-back-to-plans"><?php esc_html_e( 'Choose another plan', 'imagify' ); ?></a></p>
581
+ </div>
582
+ <div class="imagify-cl-description">
583
+ <p><?php printf( esc_html__( '%s per month', 'imagify' ), '<span class="imagify-cart-offer-data"></span>') ?></p>
584
+ </div>
585
+ <div class="imagify-cl-price imagify-price-block">
586
+ <span class="imagify-dollars">$</span>
587
+ <span class="imagify-number-block">
588
+ <span class="imagify-switch-my">
589
+ </span>
590
+ </span>
591
+ </div>
592
+ </div><!-- .imagify-cart-item -->
593
+ <?php echo $emptied_item; ?>
594
+
595
+ <div class="imagify-cart-item imagify-cart-item-onetime imagify-flex-table imagify-align-top" data-offer="">
596
+ <div class="imagify-cl-remove">
597
+ <button type="button" class="imagify-remove-from-cart" title="<?php esc_html_e( 'Remove this item', 'imagify' ); ?>"><i class="dashicons dashicons-no-alt" aria-hidden="true"></i></button>
598
+ </div>
599
+ <div class="imagify-cl-name">
600
+ <p class="imagify-cart-product-name"><span class="imagify-the-product-name"></span> One Time Plan</p>
601
+ <p class="imagify-cart-suggestion"><a href="#step1" class="imagify-back-to-plans"><?php esc_html_e( 'Choose another plan', 'imagify' ); ?></a></p>
602
+ </div>
603
+ <div class="imagify-cl-description">
604
+ <p><?php printf( esc_html__( 'one time %s', 'imagify' ), '<span class="imagify-cart-offer-data"></span>') ?></p>
605
+ </div>
606
+ <div class="imagify-cl-price imagify-price-block">
607
+ <span class="imagify-dollars">$</span>
608
+ <span class="imagify-number-block">
609
+ </span>
610
+ </div>
611
+ </div><!-- .imagify-cart-item -->
612
+ <?php echo $emptied_item; ?>
613
+ </div><!-- .imagify-cart-list -->
614
+
615
+ <div class="imagify-cols imagify-cart-list-my-choice">
616
+ <div class="imagify-col imagify-switch-my imagify-pr1">
617
+ <p class="imagify-monthly"><?php printf( __( 'Switch to yearly subscription and <br><strong class="imagify-dark">save %s per year!</strong>', 'imagify' ), '<span class="imagify-nb-save-per-year"></span>' ); ?></p>
618
+ <p class="imagify-yearly"><?php printf( __( 'Perfect!<br>You\'re <strong class="imagify-dark">saving %s per year!</strong>', 'imagify' ), '<span class="imagify-nb-save-per-year"></span>' ); ?></p>
619
+ </div>
620
+ <div class="imagify-col">
621
+ <div class="imagify-inline-options imagify-small-options imagify-radio-line imagify-cart-list-switcher">
622
+ <input type="radio" checked="checked" name="plan-checkout" value="monthly" id="imagify-checkout-monthly">
623
+ <label for="imagify-checkout-monthly"><?php esc_html_e('Monthly', 'imagify' ); ?></label>
624
+
625
+ <input type="radio" name="plan-checkout" value="yearly" id="imagify-checkout-yearly">
626
+ <label for="imagify-checkout-yearly"><?php esc_html_e('Yearly', 'imagify' ); ?><span class="imagify-2-free imagify-b-bottom"><?php esc_html_e('2 months free', 'imagify' ); ?></span></label>
627
+ </div>
628
+ </div>
629
+ </div>
630
+
631
+ </div><!-- .imagify-cart.imagify-month-selected -->
632
+ </div><!-- .imagify-section-gray -->
633
+
634
+ <?php $imagify_api_key = get_imagify_option( 'api_key', false ); ?>
635
+
636
+ <iframe data-imagify-api="<?php echo $imagify_api_key; ?>" id="imagify-payment-iframe" src="" frameborder="0"></iframe>
637
+
638
+ </div><!-- .imagify-modal-views -->
639
+
640
+
641
+ <?php
642
+
643
+
644
+ /**
645
+ *
646
+ *
647
+ * Succes view
648
+ *
649
+ *
650
+ */
651
+
652
+
653
+ ?>
654
+
655
+ <div class="imagify-modal-views imagify-success-view" id="imagify-success-view" aria-hidden="true">
656
+ <img src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>big-blue-check.png" width="113" height="109" alt="">
657
+ <p><?php esc_html_e( 'Thank you for being awesome!', 'imagify' ); ?></p>
658
+ </div><!-- .imagify-modal-views -->
659
+
660
+ <button class="close-btn" type="button">
661
+ <i aria-hidden="true" class="dashicons dashicons-no-alt"></i>
662
+ <span class="screen-reader-text"><?php esc_html_e( 'Close', 'imagify' ); ?></span>
663
+ </button>
664
+ </div><!-- .imagify-modal-main -->
665
+
666
+ <div class="imagify-modal-sidebar">
667
+ <div class="imagify-modal-sidebar-content imagify-txt-start">
668
+ <p class="imagify-modal-sidebar-title"><?php esc_html_e( 'What do our user think about Imagify', 'imagify' ) ?></p>
669
+
670
+ <div class="imagify-modal-testimony">
671
+ <div class="imagify-modal-testimony-person">
672
+ <span class="imagify-modal-avatar">
673
+ <img src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>pic-srhdesign.jpg" alt="">
674
+ </span>
675
+ <p class="imagify-modal-identity">
676
+ <a href="https://twitter.com/SRHDesign" target="_blank">@SRHDesign</a>
677
+ <a href="https://twitter.com/SRHDesign/status/686486119249260544" target="_blank"><time datetime="2016-01-11">11 jan. 2016 @ 17:40</time></a>
678
+ </p>
679
+ </div>
680
+ <div class="imagify-modal-testimony-content">
681
+ <p>@imagify is an awesome tool that is powerful &amp; easy to use. It's fast, rivals and surpasses other established plugins/software. Awesome!</p>
682
+ </div>
683
+ </div>
684
+
685
+ <div class="imagify-modal-testimony">
686
+ <div class="imagify-modal-testimony-person">
687
+ <span class="imagify-modal-avatar">
688
+ <img src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>pic-ericwaltr.jpg" alt="">
689
+ </span>
690
+ <p class="imagify-modal-identity">
691
+ <a href="https://twitter.com/EricWaltr" target="_blank">@EricWaltr</a>
692
+ <a href="https://twitter.com/EricWaltR/status/679053496382038016" target="_blank"><time datetime="2016-01-11">21 dec. 2015 @ 22:39</time></a>
693
+ </p>
694
+ </div>
695
+ <div class="imagify-modal-testimony-content">
696
+ <p>Clearly @imagify is the most awesome tool to compress images on your website! A must try</p>
697
+ </div>
698
+ </div>
699
+
700
+ <div class="imagify-modal-sidebar-trust imagify-txt-center">
701
+ <p class="imagify-secondary">
702
+ <img src="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>icon-lock.png" srcset="<?php echo IMAGIFY_ASSETS_IMG_URL; ?>icon-lock.svg 2x" width="16" height="19" alt="">&nbsp;<?php esc_html_e( 'Secure Credit Card Payment', 'imagify' ); ?></p>
703
+ <p><?php esc_html_e( 'This is secure 128-bits SSL encrypted payment', 'imagify' ); ?></p>
704
+ </div>
705
+ </div>
706
+ </div>
707
+
708
+ <div class="imagify-modal-loader"></div>
709
+ </div><!-- .imagify-modal-content-->
710
+ </div><!-- .imagify-payment-modal -->
711
+ <?php
712
  }
inc/functions/admin.php CHANGED
@@ -23,21 +23,22 @@ function imagify_is_active_for_network() {
23
  * @return string The URL of the specific admin page or action
24
  */
25
  function get_imagify_admin_url( $action = 'options-general', $arg = array() ) {
26
- $url = '';
 
 
27
 
28
  switch( $action ) {
29
  case 'manual-override-upload':
30
- $id = ( isset( $arg['attachment_id'] ) ) ? $arg['attachment_id'] : 0;
31
  $level = ( isset( $arg['optimization_level'] ) ) ? $arg['optimization_level'] : 0;
32
- $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_manual_override_upload&attachment_id=' . $id . '&optimization_level=' . $level ), 'imagify-manual-override-upload' );
33
  break;
34
 
35
  case 'manual-upload':
36
- $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_manual_upload&attachment_id=' . $arg ), 'imagify-manual-upload' );
37
  break;
38
 
39
  case 'restore-upload' :
40
- $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_restore_upload&attachment_id=' . $arg ), 'imagify-restore-upload' );
41
  break;
42
 
43
  case 'dismiss-notice':
23
  * @return string The URL of the specific admin page or action
24
  */
25
  function get_imagify_admin_url( $action = 'options-general', $arg = array() ) {
26
+ $url = '';
27
+ $id = ( isset( $arg['attachment_id'] ) ) ? $arg['attachment_id'] : 0;
28
+ $context = ( isset( $arg['context'] ) ) ? $arg['context'] : 'wp';
29
 
30
  switch( $action ) {
31
  case 'manual-override-upload':
 
32
  $level = ( isset( $arg['optimization_level'] ) ) ? $arg['optimization_level'] : 0;
33
+ $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_manual_override_upload&attachment_id=' . $id . '&optimization_level=' . $level . '&context=' . $context ), 'imagify-manual-override-upload' );
34
  break;
35
 
36
  case 'manual-upload':
37
+ $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_manual_upload&attachment_id=' . $id . '&context=' . $context ), 'imagify-manual-upload' );
38
  break;
39
 
40
  case 'restore-upload' :
41
+ $url = wp_nonce_url( admin_url( 'admin-post.php?action=imagify_restore_upload&attachment_id=' . $id . '&context=' . $context ), 'imagify-restore-upload' );
42
  break;
43
 
44
  case 'dismiss-notice':
inc/functions/formatting.php CHANGED
@@ -28,4 +28,20 @@ function imagify_round_half_five( $number ) {
28
  } else {
29
  return floatval( $number );
30
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
28
  } else {
29
  return floatval( $number );
30
  }
31
+ }
32
+
33
+ /**
34
+ * Get the Imagify attachment class name depending to a context
35
+ *
36
+ * @since 1.5
37
+ * @source Jonathan Buttigieg
38
+ *
39
+ * @param string $context The context to determine the class name
40
+ * @return string $class_name The Imagify attachment class name
41
+ */
42
+ function get_imagify_attachment_class_name( $context = 'wp' ) {
43
+ $class_name = 'Imagify_';
44
+ $class_name .= 'wp' !== $context ? $context . '_Attachment' : 'Attachment';
45
+
46
+ return $class_name;
47
  }
inc/functions/i18n.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
3
+
4
+ /**
5
+ * Get all translations we can use with wp_localize_script()
6
+ *
7
+ * @since 1.5
8
+ * @author Jonathan Buttigieg
9
+ *
10
+ * @param string $context The translation context
11
+ * @return array $translations The translations
12
+ */
13
+ function get_imagify_localize_script_translations( $context ) {
14
+ $translations = array();
15
+
16
+ switch( $context ) {
17
+ case 'admin':
18
+ $translations = array(
19
+ 'labels' => array(
20
+ 'signupTitle' => __( 'Let\'s get you started!', 'imagify' ),
21
+ 'signupText' => __( 'Enter your email to get an API key:', 'imagify' ),
22
+ 'signupConfirmButtonText' => __( 'Sign Up', 'imagify' ),
23
+ 'signupErrorEmptyEmail' => __( 'You need to specify an email!', 'imagify' ),
24
+ 'signupSuccessTitle' => __( 'Congratulations!', 'imagify' ),
25
+ 'signupSuccessText' => __( 'Your account has been succesfully created. Please check your mailbox, you are going to receive an email with API key.', 'imagify' ),
26
+ 'saveApiKeyTitle' => __( 'Connect to Imagify!', 'imagify' ),
27
+ 'saveApiKeyText' => __( 'Paste your API key below:', 'imagify' ),
28
+ 'saveApiKeyConfirmButtonText' => __( 'Connect me', 'imagify' ),
29
+ 'waitApiKeyCheckText' => __( 'Check in progress...', 'imagify' ),
30
+ 'ApiKeyCheckSuccessTitle' => __( 'Congratulations!', 'imagify' ),
31
+ 'ApiKeyCheckSuccessText' => __( 'Your API key is valid. You can now configure the Imagify settings to optimize your images.', 'imagify' ),
32
+ 'ValidApiKeyText' => __( 'Your API key is valid.', 'imagify' ),
33
+ 'swalCancel' => __( 'Cancel' )
34
+ )
35
+ );
36
+ break;
37
+
38
+ case 'options':
39
+ $translations = array(
40
+ 'noBackupTitle' => __( 'Don\'t Need a Parachute?', 'imagify' ),
41
+ 'noBackupText' => __( 'If you keep this option deactivated, you won\'t be able to re-optimize your images to another compression level and restore your original images in case of need.', 'imagify' )
42
+ );
43
+ break;
44
+
45
+ case 'upload':
46
+ $translations = array(
47
+ 'bulkActionsLabels' => array(
48
+ 'optimize' => __( 'Optimize', 'imagify' ),
49
+ 'restore' => __( 'Restore Original', 'imagify' ),
50
+ ),
51
+ );
52
+ break;
53
+
54
+ case 'twentytwenty':
55
+ $translations = array(
56
+ 'labels' => array(
57
+ 'original_l' => esc_html__( 'Original Image', 'imagify' ),
58
+ 'optimized_l' => esc_html__( 'Optimized Image', 'imagify' ),
59
+ 'compare' => esc_html__( 'Compare Original VS Optimized', 'imagify' ),
60
+ 'close' => esc_html__( 'Close', 'imagify' ),
61
+ 'filesize' => esc_html__( 'File Size:', 'imagify' ),
62
+ 'saving' => esc_html__( 'Original Saving:', 'imagify' ),
63
+ 'optimize' => esc_html__( 'Optimize', 'imagify' )
64
+ )
65
+ );
66
+ break;
67
+
68
+ case 'bulk':
69
+ $user = get_imagify_user();
70
+ $translations = array(
71
+ 'labels' => array(
72
+ 'waitTitle' => __( 'Please wait...', 'imagify' ),
73
+ 'waitText' => __( 'We are trying to get your unoptimized images, it may take time depending on the number of images.', 'imagify' ),
74
+ 'waitImageUrl' => IMAGIFY_ASSETS_IMG_URL . 'popin-loader.svg',
75
+ 'getUnoptimizedImagesErrorTitle' => __( 'Oops, There is something wrong!', 'imagify' ),
76
+ 'getUnoptimizedImagesErrorText' => __( 'An unknow error occurred when we tried to get all your unoptimized images. Try again and if the issue still persist, please contact us!', 'imagify' ),
77
+ 'invalidAPIKeyTitle' => __( 'Your API key isn\'t valid!', 'imagify' ),
78
+ 'overviewChartLabels' => array(
79
+ 'optimized' => __( 'Optimized', 'imagify' ),
80
+ 'unoptimized' => __( 'Unoptimized', 'imagify' ),
81
+ 'error' => __( 'Error', 'imagify' ),
82
+ ),
83
+ 'overQuotaTitle' => __( 'Oops, It\'s Over!', 'imagify' ),
84
+ 'noAttachmentToOptimizeTitle' => __( 'Hold on!', 'imagify' ),
85
+ 'noAttachmentToOptimizeText' => __( 'All your images have been optimized by Imagify. Congratulations!', 'imagify' ),
86
+ 'pluginURL' => 'https://wordpress.org/plugins/imagify',
87
+ 'textToShare' => __( 'Discover @imagify, the new compression tool to optimize your images for free. I saved %1$s out of %2$s!', 'imagify' ),
88
+ 'totalOptimizedAttachments' => imagify_count_optimized_attachments(),
89
+ 'totalUnoptimizedAttachments' => imagify_count_unoptimized_attachments(),
90
+ 'totalErrorsAttachments' => imagify_count_error_attachments(),
91
+ 'processing' => __( 'Imagify is still processing. Are you sure you want to leave this page?', 'imagify' )
92
+ )
93
+ );
94
+
95
+ if ( imagify_valid_key() ) {
96
+ if ( is_wp_error( $user ) ) {
97
+ $translations['overQuotaText'] = sprintf( __( 'To continue to optimize your images, log in to your Imagify account to %sbuy a pack or subscribe to a plan%s.', 'imagify' ), '<a href="' . IMAGIFY_APP_MAIN . '/#/subscription' . '">', '</a>' );
98
+ }
99
+ else {
100
+ $translations['overQuotaText'] = sprintf( __( 'You have consumed all your credit for this month. You will have <strong>%s back on %s</strong>.', 'imagify' ), size_format( $user->quota * 1048576 ), date_i18n( __( 'F j, Y' ), strtotime( $user->next_date_update ) ) ) . '<br/><br/>' . sprintf( __( 'To continue to optimize your images, log in to your Imagify account to %sbuy a pack or subscribe to a plan%s.', 'imagify' ), '<a href="' . IMAGIFY_APP_MAIN . '/#/subscription' . '">', '</a>' );
101
+ }
102
+ }
103
+ break;
104
+ }
105
+
106
+ return $translations;
107
+ }
inc/functions/process.php CHANGED
@@ -13,8 +13,19 @@ defined( 'ABSPATH' ) or die( 'Cheatin\' uh?' );
13
  * @param bool $keep_exif To keep exif data or not
14
  * @return obj|array Error message | Optimized image data
15
  */
16
- function do_imagify( $file_path, $backup, $optimization_level, $resize = array(), $keep_exif = false ) {
17
  $errors = new WP_Error();
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  /**
20
  * Filter the attachment path
@@ -71,7 +82,7 @@ function do_imagify( $file_path, $backup, $optimization_level, $resize = array()
71
  * @param string $file_path Absolute path to the image file.
72
  * @param bool $backup Force a backup of the original file.
73
  */
74
- do_action( 'before_do_imagify', $file_path, $backup );
75
 
76
  // Send image for optimization and fetch the response
77
  $response = upload_imagify_image(
@@ -79,10 +90,12 @@ function do_imagify( $file_path, $backup, $optimization_level, $resize = array()
79
  'image' => curl_file_create( $file_path ),
80
  'data' => json_encode(
81
  array(
82
- 'aggressive' => ( 1 === (int) $optimization_level ) ? true : false,
83
- 'ultra' => ( 2 === (int) $optimization_level ) ? true : false,
84
- 'resize' => $resize,
85
- 'keep_exif' => $keep_exif
 
 
86
  )
87
  )
88
  )
@@ -95,7 +108,7 @@ function do_imagify( $file_path, $backup, $optimization_level, $resize = array()
95
  }
96
 
97
  // Create a backup file
98
- if ( $backup ) {
99
  $backup_path = get_imagify_attachment_backup_path( $file_path );
100
  $backup_path_info = pathinfo( $backup_path );
101
 
@@ -133,7 +146,7 @@ function do_imagify( $file_path, $backup, $optimization_level, $resize = array()
133
  * @param string $file_path Absolute path to the image file.
134
  * @param bool $backup Force a backup of the original file.
135
  */
136
- do_action( 'after_do_imagify', $file_path, $backup );
137
 
138
  return $response;
139
  }
@@ -146,10 +159,6 @@ function do_imagify( $file_path, $backup, $optimization_level, $resize = array()
146
  * @since 1.4
147
  **/
148
  function imagify_do_async_job( $body ) {
149
- if ( isset( $body['transient_id'] ) ) {
150
- set_transient( 'imagify-async-in-progress-' . $body['transient_id'], true, 10 * MINUTE_IN_SECONDS );
151
- }
152
-
153
  $args = array(
154
  'timeout' => 0.01,
155
  'blocking' => false,
13
  * @param bool $keep_exif To keep exif data or not
14
  * @return obj|array Error message | Optimized image data
15
  */
16
+ function do_imagify( $file_path, $args = array() ) {
17
  $errors = new WP_Error();
18
+ $args = array_merge(
19
+ array(
20
+ 'backup' => get_imagify_option( 'backup', false ),
21
+ 'optimization_level' => get_imagify_option( 'optimization_level', 1 ),
22
+ 'resize' => array(),
23
+ 'keep_exif' => get_imagify_option( 'exif', false ),
24
+ 'context' => 'wp',
25
+ 'original_size' => 0
26
+ ),
27
+ $args
28
+ );
29
 
30
  /**
31
  * Filter the attachment path
82
  * @param string $file_path Absolute path to the image file.
83
  * @param bool $backup Force a backup of the original file.
84
  */
85
+ do_action( 'before_do_imagify', $file_path, $args['backup'] );
86
 
87
  // Send image for optimization and fetch the response
88
  $response = upload_imagify_image(
90
  'image' => curl_file_create( $file_path ),
91
  'data' => json_encode(
92
  array(
93
+ 'aggressive' => ( 1 === (int) $args['optimization_level'] ) ? true : false,
94
+ 'ultra' => ( 2 === (int) $args['optimization_level'] ) ? true : false,
95
+ 'resize' => $args['resize'],
96
+ 'keep_exif' => $args['keep_exif'],
97
+ 'context' => $args['context'],
98
+ 'original_size' => $args['original_size']
99
  )
100
  )
101
  )
108
  }
109
 
110
  // Create a backup file
111
+ if ( 'wp' === $args['context'] && $args['backup'] ) {
112
  $backup_path = get_imagify_attachment_backup_path( $file_path );
113
  $backup_path_info = pathinfo( $backup_path );
114
 
146
  * @param string $file_path Absolute path to the image file.
147
  * @param bool $backup Force a backup of the original file.
148
  */
149
+ do_action( 'after_do_imagify', $file_path, $args['backup'] );
150
 
151
  return $response;
152
  }
159
  * @since 1.4
160
  **/
161
  function imagify_do_async_job( $body ) {
 
 
 
 
162
  $args = array(
163
  'timeout' => 0.01,
164
  'blocking' => false,
languages/imagify-de_DE.mo CHANGED
Binary file
languages/imagify-de_DE.po CHANGED
@@ -1,938 +1,1212 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Imagify\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: Fri Feb 12 2016 15:00:09 GMT+0100 (CET)\n"
6
- "PO-Revision-Date: Mon Feb 22 2016 19:04:07 GMT+0100 (CET)\n"
7
- "Last-Translator: caspar <caspar@wp-rocket.me>\n"
8
- "Language-Team: \n"
9
- "Language: German\n"
10
- "Plural-Forms: nplurals=2; plural=n != 1\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-Basepath: .\n"
16
- "X-Poedit-SearchPath-0: ..\n"
17
- "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
- "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
- "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
- "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
- "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
- "X-Generator: Loco - https://localise.biz/\n"
23
- "X-Loco-Target-Locale: de_DE"
24
-
25
- #: ../inc/admin/ui/notices.php:85 ../inc/admin/ui/options.php:91
26
- msgid "Your API key isn't valid!"
27
- msgstr "Dein API-Schlüssel ist ungültig."
28
-
29
- #: ../inc/admin/ui/notices.php:88
30
- #, php-format
31
- msgid ""
32
- "Go to your Imagify account page to get your API Key and specify it on "
33
- "%1$syour settings%3$s or %2$screate an account for free%3$s if you don't "
34
- "have one yet."
35
- msgstr ""
36
- "Du findest deinen API-Schlüssel in deinem Imagify-Konto. Sobald du ihn dort "
37
- "geholt hast, %1$shinterlege ihn in deinen Einstellungen%3$s. Oder %2$slege "
38
- "kostenfrei ein Konto an%3$s, um deinen API-Schlüssel zu erhalten."
39
-
40
- #: ../inc/admin/ui/notices.php:138
41
- msgid ""
42
- "The following plugins are not compatible with this plugin and may cause "
43
- "unexpected results:"
44
- msgstr ""
45
- "Die folgenden Plugins sind nicht kompatibel mit diesem Plugin und können "
46
- "unerwartete Ergebnisse verursachen:"
47
-
48
- #: ../inc/admin/ui/notices.php:144
49
- msgid "Deactivate"
50
- msgstr "Deaktivieren"
51
-
52
- #: ../inc/admin/ui/notices.php:173
53
- msgid "The external HTTP requests are blocked!"
54
- msgstr "Externe HTTP-Anfragen werden blockiert."
55
-
56
- #: ../inc/admin/ui/notices.php:174
57
- msgid ""
58
- "You defined the <code>WP_HTTP_BLOCK_EXTERNAL</code> constant in the <code>wp-"
59
- "config.php</code> to block all external HTTP requests."
60
- msgstr ""
61
- "Alle externen HTTP-Anfragen werden blockiert, weil in der Datei <em>wp-"
62
- "config.php</em> die PHP-Konstante <code>WP_HTTP_BLOCK_EXTERNAL</code> "
63
- "gesetzt ist.\n"
64
-
65
- #: ../inc/admin/ui/notices.php:176
66
- msgid ""
67
- "To optimize your images, you have to put the following code in your <code>wp-"
68
- "config.php</code> file so that it works correctly."
69
- msgstr ""
70
- "Um deine Bilder optimieren zu können, füge den folgenden Code zu deiner "
71
- "<em>wp-config.php</em> hinzu."
72
-
73
- #: ../inc/admin/ui/notices.php:177
74
- msgid "Click on the field and press Ctrl-A to select all."
75
- msgstr "Klicke auf das Feld und drücke ctrl+A (cmd+A) für Alles auswählen."
76
-
77
- #: ../inc/admin/ui/notices.php:213
78
- msgid "You're missing out!"
79
- msgstr "Du verpasst etwas!"
80
-
81
- #: ../inc/admin/ui/notices.php:214
82
- msgid "Use the List view to optimize images with Imagify."
83
- msgstr "In der Listenansicht kannst du deine Bilder direkt zu optimieren."
84
-
85
- #: ../inc/admin/ui/notices.php:215
86
- msgid "Switch to the List View"
87
- msgstr "Zur Listenansicht wechseln"
88
-
89
- #: ../inc/admin/ui/options.php:18
90
- msgid "Is your website too slow?"
91
- msgstr "Ist deine Website zu langsam?"
92
-
93
- #: ../inc/admin/ui/options.php:24
94
- msgid "Discover the best caching plugin to speed up your website."
95
- msgstr "Entdecke das beste Caching-Plugin, um deine Website schneller zu machen."
96
-
97
- #: ../inc/admin/ui/options.php:32
98
- #, php-format
99
- msgid "%sGet %s off%s with this coupon code:%s"
100
- msgstr "%sErhalte %s Rabatt%s mit diesem Gutschein-Code:%s"
101
-
102
- #: ../inc/admin/ui/options.php:37
103
- msgid "Get WP Rocket now"
104
- msgstr "Hole dir WP Rocket jetzt"
105
-
106
- #: ../inc/admin/ui/options.php:55
107
- #, php-format
108
- msgid ""
109
- "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
110
- "WordPress.org%s!"
111
- msgstr ""
112
- "%sBist du zufrieden mit diesem Plugin?%s Bitte nimm dir einen Moment Zeit "
113
- "für eine %sBewertung auf WordPress.org%s!"
114
-
115
- #: ../inc/admin/ui/options.php:78
116
- msgid "API Key"
117
- msgstr "API-Schlüssel"
118
-
119
- #: ../inc/admin/ui/options.php:98
120
- #, php-format
121
- msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
122
- msgstr "Noch keinen API-Schlüssel erhalten? %sJetzt kostenfrei Konto anlegen%s"
123
-
124
- #: ../inc/admin/ui/options.php:114
125
- msgid "Optimization Level"
126
- msgstr "Optimierungsgrad"
127
-
128
- #: ../inc/admin/ui/options.php:134
129
- msgid "More info?"
130
- msgstr "Was ist das?"
131
-
132
- #: ../inc/admin/ui/options.php:141
133
- #, php-format
134
- msgid "Need help to choose? %sTry the Visual Comparison%s"
135
- msgstr "Nicht sicher? %sVisuellen Vergleich ausprobieren%s"
136
-
137
- #: ../inc/admin/ui/options.php:150 ../inc/admin/ui/options.php:154
138
- msgid "Auto-Optimize images on upload"
139
- msgstr "Bilder beim Hochladen automatisch optimieren"
140
-
141
- #: ../inc/admin/ui/options.php:158
142
- msgid "Automatically optimize every image you upload to WordPress."
143
- msgstr "Lasse automatisch jedes Bild optimieren, das du in WordPress hochlädst."
144
-
145
- #: ../inc/admin/ui/options.php:163 ../inc/admin/ui/options.php:166
146
- msgid "Backup original images"
147
- msgstr "Originalbilder sichern"
148
-
149
- #: ../inc/admin/ui/options.php:170
150
- msgid "Keep your original images in a separate folder before optimization process."
151
- msgstr ""
152
- "Speichere Sicherungskopien deiner Originalbilder in einem separaten Ordner, "
153
- "bevor die Optimierung beginnt."
154
-
155
- #: ../inc/admin/ui/options.php:175 ../inc/admin/ui/options.php:178
156
- msgid "Resize larger images"
157
- msgstr "Große Bilder verkleinern"
158
-
159
- #: ../inc/admin/ui/options.php:184
160
- #, php-format
161
- msgid "to maximum %s pixels width"
162
- msgstr "auf maximal %s Pixel Breite"
163
-
164
- #: ../inc/admin/ui/options.php:195
165
- #, php-format
166
- msgid ""
167
- "This option is recommended to reduce larger images. You can save up to 80%% "
168
- "after resizing. The new width should not be less than your largest thumbnail "
169
- "width, which is actually %spx."
170
- msgstr ""
171
- "Diese Option ist empfehlenswert, um das Speichervolumen für größere Bilder "
172
- "zu reduzieren. Du kannst so bis zu 80%% Speicherplatz sparen. Die neue "
173
- "Breite sollte nicht geringer als deine größte Vorschaubildbreite sein, die "
174
- "übrigens %s Pixel beträgt."
175
-
176
- #: ../inc/admin/ui/options.php:202 ../inc/admin/ui/options.php:205
177
- msgid "EXIF Data"
178
- msgstr "EXIF-Daten"
179
-
180
- #: ../inc/admin/ui/options.php:209
181
- msgid ""
182
- "Keep all EXIF data from your images. EXIF are informations stored in your "
183
- "pictures like shutter speed, exposure compensation, ISO, etc..."
184
- msgstr ""
185
- "Behalte alle EXIF-Daten deiner Bilder. In den EXIF-Daten werden "
186
- "Informationen wie Verschlusszeit, Belichtungskorrektur, ISO-Wert usw. "
187
- "gespeichert."
188
-
189
- #: ../inc/admin/ui/options.php:210
190
- msgid "Learn more"
191
- msgstr "Weitere Informationen"
192
-
193
- #: ../inc/admin/ui/options.php:212
194
- msgid ""
195
- "If you are a photographer, you may be interested in this option if you are "
196
- "displaying on your pages some info like the model of your camera."
197
- msgstr ""
198
- "Aktiviere diese Option, wenn du auf deiner Site fototechnische Informationen,"
199
- " wie z.B. das Model deiner Kamera, anzeigen möchtest."
200
-
201
- #: ../inc/admin/ui/options.php:221
202
- msgid "Files optimization"
203
- msgstr "Dateioptimierung"
204
-
205
- #: ../inc/admin/ui/options.php:224
206
- msgid "You can choose to compress different image sizes created by WordPress here."
207
- msgstr ""
208
- "Hier kannst du die Komprimierung für die verschiedenen Bildgrößen "
209
- "kontrollieren, die dein WordPress generiert."
210
-
211
- #: ../inc/admin/ui/options.php:226
212
- #, php-format
213
- msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
214
- msgstr "Die %sOriginalgröße%s wird von Imagify %sautomatisch optimiert%s."
215
-
216
- #: ../inc/admin/ui/options.php:229
217
- msgid "Remember each additional image size will affect your Imagify monthly usage!"
218
- msgstr ""
219
- "Bedenke, dass jede ausgewählte Bildgröße dein monatliches Nutzungsvolumen "
220
- "bei Imagify beeinflusst."
221
-
222
- #: ../inc/admin/ui/options.php:282
223
- msgid "Display options"
224
- msgstr "Optionen anzeigen"
225
-
226
- #: ../inc/admin/ui/options.php:287 ../inc/admin/ui/options.php:292
227
- msgid "Show Admin Bar menu"
228
- msgstr "Toolbar-Menü anzeigen"
229
-
230
- #: ../inc/admin/ui/options.php:293
231
- msgid "I want this awesome quick access menu on my admin bar."
232
- msgstr "Ich möchte dieses praktische Dropdown-Menü in meiner Toolbar."
233
-
234
- #: ../inc/admin/ui/options.php:308
235
- #, php-format
236
- msgid ""
237
- "Once your settings saved, optimize all your images by using the %sImagify "
238
- "Bulk Optimization%s feature."
239
- msgstr ""
240
- "Sobald du deine Einstellungen gespeichert hast, kannst du mit der "
241
- "%sStapelverarbeitung%s alle deine Bilder optimieren."
242
-
243
- #: ../inc/admin/ui/options.php:316
244
- msgid "You can choose three levels of compression"
245
- msgstr "Du kannst zwischen drei Komprimierungsstufen wählen."
246
-
247
- #: ../inc/admin/ui/options.php:321
248
- msgid ""
249
- "This mode will apply all available optimizations for maximum image "
250
- "compression."
251
- msgstr "Dieser Modus wendet alle verfügbaren Parameter für maximale Komprimierung an."
252
-
253
- #: ../inc/admin/ui/options.php:324
254
- msgid ""
255
- "This will provide a huge savings on the initial weight. Sometimes the image "
256
- "quality could be degraded a little."
257
- msgstr ""
258
- "Die Bildgröße wird erheblich verringert. In einigen Fällen kann es jedoch zu "
259
- "Verlusten bei der Qualität kommen."
260
-
261
- #: ../inc/admin/ui/options.php:327
262
- msgid ""
263
- "If you want the maximum weight reduction, and you agree to lose some quality "
264
- "on the images we recommend using this mode."
265
- msgstr ""
266
- "Wähle diese Einstellung, wenn du bereit bist, etwas Qualität zugunsten "
267
- "maximaler Reduktion der Dateigröße zu riskieren."
268
-
269
- #: ../inc/admin/ui/options.php:333
270
- msgid ""
271
- "This mode provides perfect optimization of your images without any "
272
- "significant quality loss."
273
- msgstr ""
274
- "Dieser Modus liefert hervorragende Optimierung ohne signifikante "
275
- "Qualitätsverluste."
276
-
277
- #: ../inc/admin/ui/options.php:336
278
- msgid ""
279
- "This will provide a drastic savings on the initial weight, with a small "
280
- "reduction in image quality. Most of the time it's not even noticeable."
281
- msgstr ""
282
- "Die drastische Verringerung der Dateigröße geht mit geringfügigen, meist "
283
- "kaum wahrnehmbaren Einbußen in der Qualität einher."
284
-
285
- #: ../inc/admin/ui/options.php:339
286
- msgid "If you want the maximum weight reduction, we recommend using this mode."
287
- msgstr "Wähle diese Einstellung, wenn du auf maximale Größenreduktion Wert legst."
288
-
289
- #: ../inc/admin/ui/options.php:345
290
- msgid ""
291
- "This mode provides lossless optimization, your images will be optimized "
292
- "without any visible change."
293
- msgstr ""
294
- "Dieser Modus sorgt für verlustfreie Bildoptimierung. Deine Bilder werden "
295
- "ohne sichtbare Veränderungen optimiert."
296
-
297
- #: ../inc/admin/ui/options.php:348
298
- msgid "If you want the perfect quality for your images, we recommend you that mode."
299
- msgstr ""
300
- "Wähle diese Einstellung, wenn dir die perfekte Qualität deiner Bilder "
301
- "wichtig ist."
302
-
303
- #: ../inc/admin/ui/options.php:351
304
- msgid "Note: the file size reduction will be less, compared to aggressive mode."
305
- msgstr ""
306
- "Hinweis: Die Verringerung der Dateigröße fällt hier geringer aus, als im "
307
- "aggressiven Modus."
308
-
309
- #: ../inc/admin/ui/options.php:370
310
- #, php-format
311
- msgid "I want to compare%s and%s"
312
- msgstr "Ich möchte %s und %s vergleichen."
313
-
314
- #: ../inc/admin/ui/options.php:387
315
- #, php-format
316
- msgid "Original photography about %s"
317
- msgstr "Originalbild ca. %s"
318
-
319
- #: ../inc/admin/ui/options.php:392 ../inc/admin/ui/options.php:397 ..
320
- #: inc/admin/ui/options.php:402
321
- #, php-format
322
- msgid "Optimized photography about %s"
323
- msgstr "Optimiertes Bild ca. %s"
324
-
325
- #: ../inc/classes/class-attachment.php:520
326
- msgid ""
327
- "This size isn't authorized to be optimized. Update your Imagify settings if "
328
- "you want to optimize it."
329
- msgstr ""
330
- "Diese Bildgröße ist für die Optimierung nicht zugelassen. Aktualisiere deine "
331
- "Imagify-Einstellungen, wenn du sie optimieren möchtest."
332
-
333
- #: ../inc/common/admin-bar.php:48
334
- #, php-format
335
- msgid "Rate Imagify on %s"
336
- msgstr "Bewerte Imagify auf %s"
337
-
338
- #: ../inc/common/admin-bar.php:57
339
- msgid "Loading..."
340
- msgstr "Laden&#160;…"
341
-
342
- #: ../inc/functions/admin-ui.php:75
343
- msgid "Restoring..."
344
- msgstr "Wiederherstellen&#160;…"
345
-
346
- #: ../inc/functions/admin-ui.php:162
347
- #, php-format
348
- msgid "%s can't be optimized"
349
- msgstr "%s kann nicht optimiert werden."
350
-
351
- #: ../inc/functions/process.php:30
352
- msgid ""
353
- "Sorry, our servers are temporarily unaccessible. Please, try again in a "
354
- "couple of minutes."
355
- msgstr ""
356
- "Unsere Server sind leider im Augenblick nicht erreichbar. Bitte versuche es "
357
- "in ein paar Minuten noch einmal."
358
-
359
- #: ../inc/functions/process.php:36
360
- msgid "External HTTP requests are blocked"
361
- msgstr "Externe HTTP-Anfragen werden blockiert"
362
-
363
- #: ../inc/functions/process.php:42
364
- msgid "File path is empty"
365
- msgstr "Datei-Pfad ist leer"
366
-
367
- #: ../inc/functions/process.php:48
368
- #, php-format
369
- msgid "Could not find %s"
370
- msgstr "%s wurde nicht gefunden"
371
-
372
- #: ../inc/functions/process.php:53
373
- #, php-format
374
- msgid "%s is not writable"
375
- msgstr "%s ist nicht beschreibbar."
376
-
377
- #: ../inc/functions/process.php:62
378
- #, php-format
379
- msgid "Skipped (%s), image not found."
380
- msgstr "Übersprungen (%s), Bild nicht gefunden."
381
-
382
- #. URI of the plugin
383
- msgid "https://wordpress.org/plugins/imagify"
384
- msgstr "https://de.wordpress.org/plugins/imagify"
385
-
386
- #. Description of the plugin
387
- msgid ""
388
- "Dramaticaly reduce image file sizes without loosing quality, make your "
389
- "website load faster, boost your SEO and save money on your bandwith using "
390
- "Imagify, the new most advanced image optimization tool."
391
- msgstr ""
392
- "Verlustfreie Bildoptimierung für WordPress. Imagify reduziert dramatisch die "
393
- "Dateigröße deiner Bilder, macht deine Website schneller, verbessert deine "
394
- "SEO und spart Bandbreite."
395
-
396
- #: ../inc/admin/ajax.php:118 ../inc/admin/meta-boxes.php:29 ..
397
- #: inc/functions/admin-ui.php:99 ../inc/functions/admin-ui.php:127 ..
398
- #: inc/functions/admin-ui.php:133 ../inc/functions/admin-ui.php:139 ..
399
- #: inc/functions/admin-ui.php:175 ../inc/functions/admin-ui.php:181
400
- msgid "Optimizing..."
401
- msgstr "Wird&#160;optimiert&#160;…"
402
-
403
- #: ../inc/admin/ajax.php:118 ../inc/admin/enqueue.php:163 ../inc/admin/meta-boxes.
404
- #: php:34 ../inc/functions/admin-ui.php:181
405
- msgid "Optimize"
406
- msgstr "Optimieren"
407
-
408
- #: ../inc/admin/ajax.php:416
409
- msgid "Oops, It's almost over!"
410
- msgstr "Hoppla, es wird langsam eng."
411
-
412
- #: ../inc/admin/ajax.php:417
413
- #, php-format
414
- msgid ""
415
- "You have almost used all your credit.%sDon't forget to upgrade your "
416
- "subscription to continue optimizing your images."
417
- msgstr ""
418
- "In Kürze wirst du dein Guthaben verbraucht haben.%sAktualisiere dein Abo, um "
419
- "deine Bilder auch in Zukunft zu optimieren."
420
-
421
- #: ../inc/admin/ajax.php:418 ../inc/admin/ui/bulk.php:22
422
- msgid "View My Subscription"
423
- msgstr "Mein Abo ansehen"
424
-
425
- #: ../inc/admin/ajax.php:426 ../inc/admin/enqueue.php:208 ../inc/admin/ui/notices.
426
- #: php:251
427
- msgid "Oops, It's Over!"
428
- msgstr "Alles hat ein Ende…"
429
-
430
- #: ../inc/admin/ajax.php:427 ../inc/admin/enqueue.php:224 ../inc/admin/ui/notices.
431
- #: php:253
432
- #, php-format
433
- msgid ""
434
- "You have consumed all your credit for this month. You will have <strong>%s "
435
- "back on %s</strong>."
436
- msgstr ""
437
- "Du hast dein Guthaben für diesen Monat aufgebraucht. <strong>%s</strong> "
438
- "werden dir am <strong>%s</strong> wieder zur Verfügung stehen."
439
-
440
- #: ../inc/admin/ajax.php:428
441
- msgid "Upgrade My Subscription"
442
- msgstr "Mein Abo aktualisieren"
443
-
444
- #: ../inc/admin/ajax.php:447 ../inc/admin/ui/bulk.php:16
445
- msgid "Account status"
446
- msgstr "Kontostatus"
447
-
448
- #: ../inc/admin/ajax.php:448 ../inc/admin/ui/bulk.php:17
449
- msgid "Your subscription:"
450
- msgstr "Dein Abo:"
451
-
452
- #: ../inc/admin/ajax.php:456 ../inc/admin/ui/bulk.php:47
453
- #, php-format
454
- msgid "You have %s space credit left"
455
- msgstr "Du hast noch %s Guthaben"
456
-
457
- #: ../inc/admin/ajax.php:468
458
- msgid "View my subscription"
459
- msgstr "Mein Abo ansehen"
460
-
461
- #: ../inc/admin/enqueue.php:121
462
- msgid "Let's get you started!"
463
- msgstr "Los geht’s!"
464
-
465
- #: ../inc/admin/enqueue.php:122
466
- msgid "Enter your email to get an API key:"
467
- msgstr "Gib deinen E-Mail-Adresse ein, um einen API-Schlüssel zu erhalten:"
468
-
469
- #: ../inc/admin/enqueue.php:123
470
- msgid "Sign Up"
471
- msgstr "Konto anlegen"
472
-
473
- #: ../inc/admin/enqueue.php:124
474
- msgid "You need to specify an email!"
475
- msgstr "Du musst eine E-Mail-Adresse angeben."
476
-
477
- #: ../inc/admin/enqueue.php:125 ../inc/admin/enqueue.php:131
478
- msgid "Congratulations!"
479
- msgstr "Glückwunsch!"
480
-
481
- #: ../inc/admin/enqueue.php:126
482
- msgid ""
483
- "Your account has been succesfully created. Please check your mailbox, you "
484
- "are going to receive an email with API key."
485
- msgstr ""
486
- "Dein Konto ist jetzt angelegt. Überprüfe dein E-Mail-Postfach, du erhältst "
487
- "eine E-Mail mit deinem API-Schlüssel."
488
-
489
- #: ../inc/admin/enqueue.php:127
490
- msgid "Connect to Imagify!"
491
- msgstr "Verbindung zu Imagify herstellen"
492
-
493
- #: ../inc/admin/enqueue.php:128
494
- msgid "Paste your API key below:"
495
- msgstr "Füge deinen API-Schlüssel hier ein:"
496
-
497
- #: ../inc/admin/enqueue.php:129
498
- msgid "Connect me"
499
- msgstr "Verbinden"
500
-
501
- #: ../inc/admin/enqueue.php:130
502
- msgid "Check in progress..."
503
- msgstr "API-Schlüssel wird geprüft…"
504
-
505
- #: ../inc/admin/enqueue.php:132
506
- msgid ""
507
- "Your API key is valid. You can now configure the Imagify settings to "
508
- "optimize your images."
509
- msgstr ""
510
- "Dein API-Schlüssel ist gültig. Du kannst jetzt deine Einstellungen für die "
511
- "Bildoptimierung mit Imagify wählen."
512
-
513
- #: ../inc/admin/enqueue.php:133 ../inc/admin/ui/options.php:85
514
- msgid "Your API key is valid."
515
- msgstr "Dein API-Schlüssel ist gültig."
516
-
517
- #: ../inc/admin/enqueue.php:150
518
- msgid "Don't Need a Parachute?"
519
- msgstr "Du brauchst keinen Fallschirm?"
520
-
521
- #: ../inc/admin/enqueue.php:151
522
- msgid ""
523
- "If you keep this option deactivated, you won't be able to re-optimize your "
524
- "images to another compression level and restore your original images in case "
525
- "of need."
526
- msgstr ""
527
- "Wenn du diese Option deaktiviert lässt, wirst du deine Bilder nicht erneut "
528
- "mit einem anderen Level komprimieren, oder deren Originale wiederherstellen "
529
- "können."
530
-
531
- #: ../inc/admin/enqueue.php:164 ../inc/functions/admin-ui.php:75
532
- msgid "Restore Original"
533
- msgstr "Original wiederherstellen"
534
-
535
- #: ../inc/admin/enqueue.php:178
536
- msgid "Original Image"
537
- msgstr "Originalbild"
538
-
539
- #: ../inc/admin/enqueue.php:179
540
- msgid "Optimized Image"
541
- msgstr "Optimiertes Bild"
542
-
543
- #: ../inc/admin/enqueue.php:180
544
- msgid "Compare Original VS Optimized"
545
- msgstr "Vergleiche Original mit optimiert"
546
-
547
- #: ../inc/admin/enqueue.php:181 ../inc/admin/ui/options.php:358 ..
548
- #: inc/admin/ui/options.php:480
549
- msgid "Close"
550
- msgstr "Schließen"
551
-
552
- #: ../inc/admin/enqueue.php:182 ../inc/admin/ui/options.php:411 ..
553
- #: inc/admin/ui/options.php:421 ../inc/admin/ui/options.php:441 ..
554
- #: inc/admin/ui/options.php:462
555
- msgid "File Size:"
556
- msgstr "Dateigröße:"
557
-
558
- #: ../inc/admin/enqueue.php:183 ../inc/admin/ui/options.php:425 ..
559
- #: inc/admin/ui/options.php:445 ../inc/admin/ui/options.php:466 ..
560
- #: inc/functions/admin-ui.php:44
561
- msgid "Original Saving:"
562
- msgstr "Optimiert um:"
563
-
564
- #: ../inc/admin/enqueue.php:198
565
- msgid "Please wait..."
566
- msgstr "Einen Moment bitte&#160;…"
567
-
568
- #: ../inc/admin/enqueue.php:199
569
- msgid ""
570
- "We are trying to get your unoptimized images, it may take time depending on "
571
- "the number of images."
572
- msgstr ""
573
- "Nicht optimierte Bilder werden gesammelt, dies kann einen Moment dauern&#160;"
574
- ""
575
-
576
- #: ../inc/admin/enqueue.php:201
577
- msgid "Oops, There is something wrong!"
578
- msgstr "Hm, etwas ist schief gelaufen."
579
-
580
- #: ../inc/admin/enqueue.php:202
581
- msgid ""
582
- "An unknow error occurred when we tried to get all your unoptimized images. "
583
- "Try again and if the issue still persist, please contact us!"
584
- msgstr ""
585
- "Ein unbekannter Fehler ist beim Sammeln der nicht optimierten Bilder "
586
- "aufgetreten. Versuche es noch einmal; falls der Fehler sich wiederholt, "
587
- "kontaktiere bitte den Imagify-Support."
588
-
589
- #: ../inc/admin/enqueue.php:204 ../inc/admin/upload.php:38 ../inc/admin/ui/bulk.
590
- #: php:257
591
- msgid "Optimized"
592
- msgstr "Optimiert"
593
-
594
- #: ../inc/admin/enqueue.php:205 ../inc/admin/upload.php:39
595
- msgid "Unoptimized"
596
- msgstr "Nicht Optimiert"
597
-
598
- #: ../inc/admin/enqueue.php:206
599
- msgid "Error"
600
- msgstr "Fehler"
601
-
602
- #: ../inc/admin/enqueue.php:209
603
- msgid "Hold on!"
604
- msgstr "Moment, bitte!"
605
-
606
- #: ../inc/admin/enqueue.php:210
607
- msgid "All your images have been optimized by Imagify. Congratulations!"
608
- msgstr "Imagify hat alle deine Bilder optimiert. Glückwunsch!"
609
-
610
- #: ../inc/admin/enqueue.php:212
611
- #, php-format
612
- msgid ""
613
- "Discover @imagify, the new compression tool to optimize your images for free."
614
- " I saved %1$s out of %2$s!"
615
- msgstr ""
616
- "Freies #WordPress #Plugin zur Bildoptimierung für bessere #Performance: "
617
- "Bilder mit @imagify komprimiert, %1$s von %2$s gespart!"
618
-
619
- #: ../inc/admin/enqueue.php:216
620
- msgid "Imagify is still processing. Are you sure you want to leave this page?"
621
- msgstr ""
622
- "Imagify arbeitet noch. Möchtest du diese Seite wirklich verlassen und den "
623
- "Prozess abbrechen?"
624
-
625
- #: ../inc/admin/enqueue.php:221 ../inc/admin/enqueue.php:224 ..
626
- #: inc/admin/ui/notices.php:253
627
- #, php-format
628
- msgid ""
629
- "To continue to optimize your images, log in to your Imagify account to %sbuy "
630
- "a pack or subscribe to a plan%s."
631
- msgstr ""
632
- "Um deine Bilder auch in Zukunft zu optimieren, logge dich bei Imagify.io ein "
633
- "und %skaufe ein einmaliges Guthaben oder ein Abo%s."
634
-
635
- #: ../inc/admin/enqueue.php:224
636
- msgid "F j, Y"
637
- msgstr "j. F Y"
638
-
639
- #: ../inc/admin/menu.php:24 ../inc/admin/menu.php:24 ../inc/admin/plugins.php:13 .
640
- #: ./inc/admin/ui/bulk.php:78 ../inc/common/admin-bar.php:39
641
- msgid "Bulk Optimization"
642
- msgstr "Stapelverarbeitung"
643
-
644
- #: ../inc/admin/meta-boxes.php:19 ../inc/functions/admin-ui.php:168
645
- msgid "Invalid API key"
646
- msgstr "Ungültiger API-Schlüssel"
647
-
648
- #: ../inc/admin/meta-boxes.php:21 ../inc/functions/admin-ui.php:170
649
- msgid "Check your Settings"
650
- msgstr "Überprüfe deine Einstellungen"
651
-
652
- #: ../inc/admin/options.php:107
653
- msgid "Cheatin&#8217; uh?"
654
- msgstr "Ts, ts, ts&#160;…"
655
-
656
- #: ../inc/admin/options.php:115
657
- msgid "<strong>ERROR</strong>: options page not found."
658
- msgstr "<strong>Fehler</strong>: Einstellungsseite nicht gefunden."
659
-
660
- #: ../inc/admin/plugins.php:14 ../inc/admin/ui/options.php:70 ../inc/common/admin-
661
- #: bar.php:30
662
- msgid "Settings"
663
- msgstr "Einstellungen"
664
-
665
- #: ../inc/admin/upload.php:40
666
- msgid "Errors"
667
- msgstr "Fehler"
668
-
669
- #: ../inc/admin/upload.php:43
670
- msgid "Filter by status"
671
- msgstr "Filtere nach Status"
672
-
673
- #: ../inc/admin/upload.php:46
674
- msgid "All images"
675
- msgstr "Alle Bilder"
676
-
677
- #: ../inc/admin/ui/bulk.php:59
678
- msgid "Upgrade your account to continue optimizing your images"
679
- msgstr "Aktualisiere dein Konto, um deine Bilder weiterhin zu optimieren"
680
-
681
- #: ../inc/admin/ui/bulk.php:63
682
- msgid "More info"
683
- msgstr "Weitere Informationen"
684
-
685
- #: ../inc/admin/ui/bulk.php:88
686
- msgid "Information"
687
- msgstr "Informationen"
688
-
689
- #: ../inc/admin/ui/bulk.php:90
690
- msgid ""
691
- "Please be aware that optimizing a large number of images can take a while "
692
- "depending on your server and network speed."
693
- msgstr ""
694
- "Bitte beachte: Das Optimieren einer hohen Anzahl Bilder kann eine Weile "
695
- "dauern, abhängig von deinem Server und der Netzwerkgeschwindigkeit."
696
-
697
- #: ../inc/admin/ui/bulk.php:91
698
- msgid ""
699
- "You must keep this page open while the bulk optimizaton is processing. If "
700
- "you leave you can come back to continue where it left off."
701
- msgstr ""
702
- "Du musst diese Seite während der Stapelverarbeitung geöffnet lassen. Falls "
703
- "du sie doch schließt, wird die Stapelverarbeitung unterbrochen und später "
704
- "fortgesetzt, sobald du diese Seite erneut aufrufst."
705
-
706
- #: ../inc/admin/ui/bulk.php:99
707
- msgid "Select Your Compression Level"
708
- msgstr "Wähle deinen Komprimierungsstufen"
709
-
710
- #: ../inc/admin/ui/bulk.php:102 ../inc/admin/ui/bulk.php:130 ..
711
- #: inc/admin/ui/options.php:129 ../inc/admin/ui/options.php:319 ..
712
- #: inc/admin/ui/options.php:382 ../inc/admin/ui/options.php:399 ..
713
- #: inc/admin/ui/options.php:459 ../inc/classes/class-attachment.php:135 ..
714
- #: inc/functions/admin-ui.php:127
715
- msgid "Ultra"
716
- msgstr "Ultra"
717
-
718
- #: ../inc/admin/ui/bulk.php:105 ../inc/admin/ui/bulk.php:125 ..
719
- #: inc/admin/ui/options.php:124 ../inc/admin/ui/options.php:331 ..
720
- #: inc/admin/ui/options.php:381 ../inc/admin/ui/options.php:394 ..
721
- #: inc/admin/ui/options.php:438 ../inc/classes/class-attachment.php:138 ..
722
- #: inc/functions/admin-ui.php:133
723
- msgid "Aggressive"
724
- msgstr "Aggressiv"
725
-
726
- #: ../inc/admin/ui/bulk.php:108 ../inc/admin/ui/bulk.php:120 ..
727
- #: inc/admin/ui/options.php:119 ../inc/admin/ui/options.php:343 ..
728
- #: inc/admin/ui/options.php:380 ../inc/admin/ui/options.php:389 ..
729
- #: inc/admin/ui/options.php:418 ../inc/classes/class-attachment.php:141 ..
730
- #: inc/functions/admin-ui.php:139
731
- msgid "Normal"
732
- msgstr "Normal"
733
-
734
- #: ../inc/admin/ui/bulk.php:112
735
- msgid "Your default setting:"
736
- msgstr "Deine Standard-Einstellung:"
737
-
738
- #: ../inc/admin/ui/bulk.php:139
739
- #, php-format
740
- msgid "Don't forget to check %syour settings%s before bulk optimization."
741
- msgstr "Überprüfe deine %sEinstellungen%s vor der Stapelverarbeitung."
742
-
743
- #: ../inc/admin/ui/bulk.php:149
744
- msgid "Imagif'em all"
745
- msgstr "Alle Bilder optimieren"
746
-
747
- #: ../inc/admin/ui/bulk.php:156
748
- #, php-format
749
- msgid "All images which are over to %s could be optimized using the pro version."
750
- msgstr "Bilder größer als %s können mit der Pro-version optimiert werden."
751
-
752
- #: ../inc/admin/ui/bulk.php:167
753
- msgid "Overview"
754
- msgstr "Übersicht"
755
-
756
- #: ../inc/admin/ui/bulk.php:177
757
- msgid "Statistics"
758
- msgstr "Statistik"
759
-
760
- #: ../inc/admin/ui/bulk.php:189
761
- msgid "that's the number of images you optimized with Imagify"
762
- msgstr "Bilder mit Imagify optimiert"
763
-
764
- #: ../inc/admin/ui/bulk.php:194
765
- msgid "Original size"
766
- msgstr "Originalgröße"
767
-
768
- #: ../inc/admin/ui/bulk.php:199
769
- msgid "Optimized size"
770
- msgstr "Optimierte Größe"
771
-
772
- #: ../inc/admin/ui/bulk.php:210
773
- #, php-format
774
- msgid "that's the size you saved %sby using Imagify"
775
- msgstr "geringere Dateigröße dank Imagify"
776
-
777
- #: ../inc/admin/ui/bulk.php:230
778
- msgid "Well done!"
779
- msgstr "Klasse!"
780
-
781
- #: ../inc/admin/ui/bulk.php:231
782
- #, php-format
783
- msgid "you saved %1$s out of %2$s"
784
- msgstr "du hast %1$s von %2$s gespart"
785
-
786
- #: ../inc/admin/ui/bulk.php:236
787
- msgid "Share your awesome result"
788
- msgstr "Teile dein hervorragendes Ergebnis"
789
-
790
- #: ../inc/admin/ui/bulk.php:251
791
- msgid "Compression process results"
792
- msgstr "Ergebnisse der Komprimierung"
793
-
794
- #: ../inc/admin/ui/bulk.php:254
795
- msgid "Filename"
796
- msgstr "Dateiname"
797
-
798
- #: ../inc/admin/ui/bulk.php:255
799
- msgid "Status"
800
- msgstr "Status"
801
-
802
- #: ../inc/admin/ui/bulk.php:256 ../inc/admin/ui/options.php:379 ..
803
- #: inc/admin/ui/options.php:384 ../inc/admin/ui/options.php:408
804
- msgid "Original"
805
- msgstr "Original"
806
-
807
- #: ../inc/admin/ui/bulk.php:258
808
- msgid "Percentage"
809
- msgstr "Prozent"
810
-
811
- #: ../inc/admin/ui/bulk.php:259
812
- msgid "Thumbnails optimized"
813
- msgstr "Vorschaubilder optimiert"
814
-
815
- #: ../inc/admin/ui/bulk.php:260
816
- msgid "Overall saving"
817
- msgstr "Gesamte Ersparnis"
818
-
819
- #: ../inc/admin/ui/bulk.php:265
820
- msgid "file"
821
- msgstr "Datei"
822
-
823
- #: ../inc/admin/ui/bulk.php:266
824
- msgid "error"
825
- msgstr "Fehler"
826
-
827
- #: ../inc/admin/ui/bulk.php:267
828
- msgid "Total:"
829
- msgstr "Gesamt:"
830
-
831
- #: ../inc/admin/ui/bulk.php:268
832
- msgid "Gain:"
833
- msgstr "Gewinn:"
834
-
835
- #: ../inc/admin/ui/bulk.php:285
836
- #, php-format
837
- msgid "%sStart the bulk optimization%s"
838
- msgstr "%sStapelverarbeitung starten%s"
839
-
840
- #: ../inc/admin/ui/notices.php:23
841
- msgid "Welcome to Imagify, the best way to easily optimize your images!"
842
- msgstr "Willkommen bei Imagify, der smarten Bildoptimierung!"
843
-
844
- #: ../inc/admin/ui/notices.php:25 ../inc/admin/ui/notices.php:25 ..
845
- #: inc/admin/ui/notices.php:90 ../inc/admin/ui/notices.php:90 ..
846
- #: inc/admin/ui/notices.php:181 ../inc/admin/ui/notices.php:181 ..
847
- #: inc/admin/ui/notices.php:217 ../inc/admin/ui/notices.php:217 ..
848
- #: inc/admin/ui/notices.php:256 ../inc/admin/ui/notices.php:256
849
- msgid "Dismiss this notice"
850
- msgstr "Diese Meldung verwerfen"
851
-
852
- #: ../inc/admin/ui/notices.php:32
853
- msgid "Create an Account"
854
- msgstr "Konto anlegen"
855
-
856
- #: ../inc/admin/ui/notices.php:33
857
- msgid ""
858
- "Don't have an Imagify account yet? Optimize your images by creating an "
859
- "account in a few seconds!"
860
- msgstr ""
861
- "Registriere dein Konto bei Imagify (kostenfrei, dauert nur ein paar "
862
- "Sekunden), um anschließend deine Bilder in WordPress zu optimieren."
863
-
864
- #: ../inc/admin/ui/notices.php:36
865
- msgid "Sign up, It's FREE!"
866
- msgstr "Mein Konto kostenfrei anlegen"
867
-
868
- #: ../inc/admin/ui/notices.php:42
869
- msgid "Enter your API Key"
870
- msgstr "API-Schlüssel eingeben"
871
-
872
- #: ../inc/admin/ui/notices.php:43
873
- #, php-format
874
- msgid ""
875
- "Save your API Key you have received by email or you can get it on your "
876
- "%sImagify account page%s."
877
- msgstr ""
878
- "Aktiviere Imagify mit deinem persönlichen API-Schlüssel, den du per E-Mail "
879
- "erhalten hast. Du kannst ihn auch jederzeit in deinen %sKontoeinstellungen%s "
880
- "abrufen."
881
-
882
- #: ../inc/admin/ui/notices.php:46
883
- msgid "I have my API key"
884
- msgstr "Meinen API-Schlüssel eingeben"
885
-
886
- #: ../inc/admin/ui/notices.php:52
887
- msgid "Configure it"
888
- msgstr "Einstellungen wählen"
889
-
890
- #: ../inc/admin/ui/notices.php:53
891
- msgid "It’s almost done! You have just to configure your optimization settings."
892
- msgstr ""
893
- "Fast fertig! Wähle nun deine Einstellungen für Imagify. Anschließend kannst "
894
- "du alle deine Bilder von Imagify automatisch optimieren lassen."
895
-
896
- #: ../inc/admin/ui/notices.php:54
897
- msgid "Go to Settings"
898
- msgstr "Meine Einstellungen wählen"
899
-
900
- #: ../inc/admin/ui/options.php:407 ../inc/admin/ui/options.php:417 ..
901
- #: inc/admin/ui/options.php:437 ../inc/admin/ui/options.php:458 ..
902
- #: inc/functions/admin-ui.php:58
903
- msgid "Level:"
904
- msgstr "Modus:"
905
-
906
- #: ../inc/functions/admin-ui.php:35
907
- msgid "New Filesize:"
908
- msgstr "Neue Dateigröße:"
909
-
910
- #: ../inc/functions/admin-ui.php:51
911
- msgid "Close details"
912
- msgstr "Details schließen"
913
-
914
- #: ../inc/functions/admin-ui.php:51 ../inc/functions/admin-ui.php:51
915
- msgid "View details"
916
- msgstr "Details anzeigen"
917
-
918
- #: ../inc/functions/admin-ui.php:55
919
- msgid "Original Filesize:"
920
- msgstr "Originale Dateigröße:"
921
-
922
- #: ../inc/functions/admin-ui.php:61
923
- msgid "Thumbnails Optimized:"
924
- msgstr "Optimierte Vorschaubilder:"
925
-
926
- #: ../inc/functions/admin-ui.php:62
927
- msgid "Overall Saving:"
928
- msgstr "Gesamte Ersparnis:"
929
-
930
- #: ../inc/functions/admin-ui.php:99
931
- msgid "Try again"
932
- msgstr "Erneut versuchen"
933
-
934
- #: ../inc/functions/admin-ui.php:127 ../inc/functions/admin-ui.php:133 ..
935
- #: inc/functions/admin-ui.php:139
936
- #, php-format
937
- msgid "Re-Optimize to %s"
938
- msgstr "Erneut optimieren als %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Imagify\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2016-04-19 16:34+0200\n"
6
+ "PO-Revision-Date: 2016-04-19 16:42+0200\n"
7
+ "Last-Translator: caspar <caspar@wp-rocket.me>\n"
8
+ "Language-Team: \n"
9
+ "Language: de\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
+ "X-Generator: Poedit 1.8.6\n"
22
+ "X-Loco-Target-Locale: de_DE\n"
23
+ "X-Poedit-SearchPath-0: ..\n"
24
+
25
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:20
26
+ #: ../inc/admin/ajax.php:123 ../inc/admin/meta-boxes.php:34
27
+ #: ../inc/functions/admin-ui.php:212 ../inc/functions/i18n.php:46
28
+ #: ../inc/functions/i18n.php:61
29
+ msgid "Optimize"
30
+ msgstr "Optimieren"
31
+
32
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:21
33
+ #: ../inc/functions/admin-ui.php:80 ../inc/functions/i18n.php:47
34
+ msgid "Restore Original"
35
+ msgstr "Original wiederherstellen"
36
+
37
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/menu.php:16
38
+ #: ../inc/admin/menu.php:24 ../inc/admin/plugins.php:13
39
+ #: ../inc/admin/ui/bulk.php:81 ../inc/common/admin-bar.php:39
40
+ msgid "Bulk Optimization"
41
+ msgstr "Stapelverarbeitung"
42
+
43
+ #: ../inc/admin/ajax.php:123 ../inc/admin/meta-boxes.php:29
44
+ #: ../inc/functions/admin-ui.php:121 ../inc/functions/admin-ui.php:153
45
+ #: ../inc/functions/admin-ui.php:159 ../inc/functions/admin-ui.php:165
46
+ #: ../inc/functions/admin-ui.php:202 ../inc/functions/admin-ui.php:212
47
+ msgid "Optimizing..."
48
+ msgstr "Wird&#160;optimiert&#160;…"
49
+
50
+ #: ../inc/admin/ajax.php:503
51
+ msgid "Oops, It's almost over!"
52
+ msgstr "Hoppla, es wird langsam eng."
53
+
54
+ #: ../inc/admin/ajax.php:504
55
+ #, php-format
56
+ msgid ""
57
+ "You have almost used all your credit.%sDon't forget to upgrade your "
58
+ "subscription to continue optimizing your images."
59
+ msgstr ""
60
+ "In Kürze wirst du dein Guthaben verbraucht haben.%sAktualisiere dein Abo, um "
61
+ "deine Bilder auch in Zukunft zu optimieren."
62
+
63
+ #: ../inc/admin/ajax.php:505 ../inc/admin/ui/bulk.php:23
64
+ msgid "View My Subscription"
65
+ msgstr "Mein Abo ansehen"
66
+
67
+ #: ../inc/admin/ajax.php:513 ../inc/admin/ui/notices.php:251
68
+ #: ../inc/functions/i18n.php:80
69
+ msgid "Oops, It's Over!"
70
+ msgstr "Alles hat ein Ende…"
71
+
72
+ #: ../inc/admin/ajax.php:514 ../inc/admin/ui/notices.php:253
73
+ #: ../inc/functions/i18n.php:97
74
+ #, php-format
75
+ msgid ""
76
+ "You have consumed all your credit for this month. You will have <strong>%s "
77
+ "back on %s</strong>."
78
+ msgstr ""
79
+ "Du hast dein Guthaben für diesen Monat aufgebraucht. <strong>%s</strong> "
80
+ "werden dir am <strong>%s</strong> wieder zur Verfügung stehen."
81
+
82
+ #: ../inc/admin/ajax.php:515
83
+ msgid "Upgrade My Subscription"
84
+ msgstr "Mein Abo aktualisieren"
85
+
86
+ #: ../inc/admin/ajax.php:534 ../inc/admin/ui/bulk.php:17
87
+ msgid "Account status"
88
+ msgstr "Kontostatus"
89
+
90
+ #: ../inc/admin/ajax.php:535 ../inc/admin/ui/bulk.php:18
91
+ msgid "Your subscription:"
92
+ msgstr "Dein Abo:"
93
+
94
+ #: ../inc/admin/ajax.php:543 ../inc/admin/ui/bulk.php:48
95
+ #, php-format
96
+ msgid "You have %s space credit left"
97
+ msgstr "Du hast noch %s Guthaben"
98
+
99
+ #: ../inc/admin/ajax.php:555
100
+ msgid "View my subscription"
101
+ msgstr "Mein Abo ansehen"
102
+
103
+ #: ../inc/admin/media.php:63 ../inc/functions/i18n.php:57
104
+ msgid "Compare Original VS Optimized"
105
+ msgstr "Vergleiche Original mit optimiert"
106
+
107
+ #: ../inc/admin/meta-boxes.php:17 ../inc/admin/meta-boxes.php:24
108
+ #: ../inc/admin/upload.php:12
109
+ msgid "Imagify"
110
+ msgstr ""
111
+
112
+ #: ../inc/admin/meta-boxes.php:19 ../inc/functions/admin-ui.php:195
113
+ msgid "Invalid API key"
114
+ msgstr "Ungültiger API-Schlüssel"
115
+
116
+ #: ../inc/admin/meta-boxes.php:21 ../inc/functions/admin-ui.php:197
117
+ msgid "Check your Settings"
118
+ msgstr "Überprüfe deine Einstellungen"
119
+
120
+ #: ../inc/admin/options.php:120
121
+ msgid "Cheatin&#8217; uh?"
122
+ msgstr "Ts, ts, ts&#160;…"
123
+
124
+ #: ../inc/admin/options.php:128
125
+ msgid "<strong>ERROR</strong>: options page not found."
126
+ msgstr "<strong>Fehler</strong>: Einstellungsseite nicht gefunden."
127
+
128
+ #: ../inc/admin/plugins.php:14 ../inc/admin/ui/options.php:74
129
+ #: ../inc/common/admin-bar.php:30
130
+ msgid "Settings"
131
+ msgstr "Einstellungen"
132
+
133
+ #: ../inc/admin/ui/bulk.php:60
134
+ msgid "Upgrade your account to continue optimizing your images"
135
+ msgstr "Aktualisiere dein Konto, um deine Bilder weiterhin zu optimieren"
136
+
137
+ #: ../inc/admin/ui/bulk.php:64
138
+ msgid "More info"
139
+ msgstr "Weitere Informationen"
140
+
141
+ #: ../inc/admin/ui/bulk.php:91
142
+ msgid "Overview"
143
+ msgstr "Übersicht"
144
+
145
+ #: ../inc/admin/ui/bulk.php:99
146
+ #, php-format
147
+ msgid "You optimized %s images of your website"
148
+ msgstr "Du hast %s Bilder deiner Website optimiert"
149
+
150
+ #: ../inc/admin/ui/bulk.php:103
151
+ msgid "Statistics"
152
+ msgstr "Statistik"
153
+
154
+ #: ../inc/admin/ui/bulk.php:115
155
+ msgid "that's the number of images you optimized with Imagify"
156
+ msgstr "Bilder mit Imagify optimiert"
157
+
158
+ #: ../inc/admin/ui/bulk.php:120
159
+ msgid "Original size"
160
+ msgstr "Originalgröße"
161
+
162
+ #: ../inc/admin/ui/bulk.php:125
163
+ msgid "Optimized size"
164
+ msgstr "Optimierte Größe"
165
+
166
+ #: ../inc/admin/ui/bulk.php:136
167
+ #, php-format
168
+ msgid "that's the size you saved %sby using Imagify"
169
+ msgstr "geringere Dateigröße dank Imagify"
170
+
171
+ #: ../inc/admin/ui/bulk.php:142
172
+ msgid "Information"
173
+ msgstr "Informationen"
174
+
175
+ #: ../inc/admin/ui/bulk.php:146
176
+ msgid ""
177
+ "Please be aware that optimizing a large number of images can take a while "
178
+ "depending on your server and network speed."
179
+ msgstr ""
180
+ "Bitte beachte: Das Optimieren einer hohen Anzahl Bilder kann eine Weile "
181
+ "dauern, abhängig von deinem Server und der Netzwerkgeschwindigkeit."
182
+
183
+ #: ../inc/admin/ui/bulk.php:149
184
+ #, php-format
185
+ msgid ""
186
+ "If you have more than %s images, you will need to launch the bulk "
187
+ "optimization several times."
188
+ msgstr ""
189
+
190
+ #: ../inc/admin/ui/bulk.php:153
191
+ msgid ""
192
+ "You must keep this page open while the bulk optimizaton is processing. If "
193
+ "you leave you can come back to continue where it left off."
194
+ msgstr ""
195
+ "Du musst diese Seite während der Stapelverarbeitung geöffnet lassen. Falls "
196
+ "du sie doch schließt, wird die Stapelverarbeitung unterbrochen und später "
197
+ "fortgesetzt, sobald du diese Seite erneut aufrufst."
198
+
199
+ #: ../inc/admin/ui/bulk.php:164
200
+ msgid "Select Your Compression Level"
201
+ msgstr "Wähle deinen Komprimierungsstufen"
202
+
203
+ #: ../inc/admin/ui/bulk.php:166 ../inc/admin/ui/bulk.php:192
204
+ #: ../inc/admin/ui/options.php:136 ../inc/admin/ui/options.php:365
205
+ #: ../inc/admin/ui/options.php:404 ../inc/admin/ui/options.php:421
206
+ #: ../inc/admin/ui/options.php:481
207
+ #: ../inc/classes/abstracts/abstract-attachment.php:114
208
+ #: ../inc/functions/admin-ui.php:153
209
+ msgid "Ultra"
210
+ msgstr "Ultra"
211
+
212
+ #: ../inc/admin/ui/bulk.php:169 ../inc/admin/ui/bulk.php:187
213
+ #: ../inc/admin/ui/options.php:131 ../inc/admin/ui/options.php:352
214
+ #: ../inc/admin/ui/options.php:403 ../inc/admin/ui/options.php:416
215
+ #: ../inc/admin/ui/options.php:460
216
+ #: ../inc/classes/abstracts/abstract-attachment.php:117
217
+ #: ../inc/functions/admin-ui.php:159
218
+ msgid "Aggressive"
219
+ msgstr "Aggressiv"
220
+
221
+ #: ../inc/admin/ui/bulk.php:172 ../inc/admin/ui/bulk.php:182
222
+ #: ../inc/admin/ui/options.php:126 ../inc/admin/ui/options.php:339
223
+ #: ../inc/admin/ui/options.php:402 ../inc/admin/ui/options.php:411
224
+ #: ../inc/admin/ui/options.php:440
225
+ #: ../inc/classes/abstracts/abstract-attachment.php:120
226
+ #: ../inc/functions/admin-ui.php:165
227
+ msgid "Normal"
228
+ msgstr "Normal"
229
+
230
+ #: ../inc/admin/ui/bulk.php:176
231
+ #, php-format
232
+ msgid "Your default setting: %s"
233
+ msgstr "Deine Standardeinstellung: %s"
234
+
235
+ #: ../inc/admin/ui/bulk.php:201
236
+ #, php-format
237
+ msgid "Don't forget to check %syour settings%s before bulk optimization."
238
+ msgstr "Überprüfe deine %sEinstellungen%s vor der Stapelverarbeitung."
239
+
240
+ #: ../inc/admin/ui/bulk.php:208
241
+ msgid "Let's go!"
242
+ msgstr "Los geht’s!"
243
+
244
+ #: ../inc/admin/ui/bulk.php:215
245
+ msgid "Imagif'em all"
246
+ msgstr "Alle Bilder optimieren"
247
+
248
+ #: ../inc/admin/ui/bulk.php:220
249
+ #, php-format
250
+ msgid ""
251
+ "All images greater than %s will be optimized when using a paying monthly "
252
+ "plan."
253
+ msgstr ""
254
+ "Alle Bilder, die größer sind als %s, werden optimiert, wenn du ein "
255
+ "monatliches Abo nutzt."
256
+
257
+ #: ../inc/admin/ui/bulk.php:239
258
+ msgid "Well done!"
259
+ msgstr "Klasse!"
260
+
261
+ #: ../inc/admin/ui/bulk.php:240
262
+ #, php-format
263
+ msgid "you saved %1$s out of %2$s"
264
+ msgstr "du hast %1$s von %2$s gespart"
265
+
266
+ #: ../inc/admin/ui/bulk.php:245
267
+ msgid "Share your awesome result"
268
+ msgstr "Teile dein hervorragendes Ergebnis"
269
+
270
+ #: ../inc/admin/ui/bulk.php:260
271
+ msgid "Compression process results"
272
+ msgstr "Ergebnisse der Komprimierung"
273
+
274
+ #: ../inc/admin/ui/bulk.php:263
275
+ msgid "Filename"
276
+ msgstr "Dateiname"
277
+
278
+ #: ../inc/admin/ui/bulk.php:264
279
+ msgid "Status"
280
+ msgstr "Status"
281
+
282
+ #: ../inc/admin/ui/bulk.php:265 ../inc/admin/ui/options.php:401
283
+ #: ../inc/admin/ui/options.php:406 ../inc/admin/ui/options.php:430
284
+ msgid "Original"
285
+ msgstr "Original"
286
+
287
+ #: ../inc/admin/ui/bulk.php:266 ../inc/admin/upload.php:41
288
+ #: ../inc/functions/i18n.php:76
289
+ msgid "Optimized"
290
+ msgstr "Optimiert"
291
+
292
+ #: ../inc/admin/ui/bulk.php:267
293
+ msgid "Percentage"
294
+ msgstr "Prozent"
295
+
296
+ #: ../inc/admin/ui/bulk.php:268
297
+ msgid "Thumbnails optimized"
298
+ msgstr "Vorschaubilder optimiert"
299
+
300
+ #: ../inc/admin/ui/bulk.php:269
301
+ msgid "Overall saving"
302
+ msgstr "Gesamte Ersparnis"
303
+
304
+ #: ../inc/admin/ui/bulk.php:274
305
+ msgid "file"
306
+ msgstr "Datei"
307
+
308
+ #: ../inc/admin/ui/bulk.php:275
309
+ msgid "error"
310
+ msgstr "Fehler"
311
+
312
+ #: ../inc/admin/ui/bulk.php:276
313
+ msgid "Total:"
314
+ msgstr "Gesamt:"
315
+
316
+ #: ../inc/admin/ui/bulk.php:277
317
+ msgid "Gain:"
318
+ msgstr "Gewinn:"
319
+
320
+ #: ../inc/admin/ui/bulk.php:294
321
+ #, php-format
322
+ msgid "%sStart the bulk optimization%s"
323
+ msgstr "%sStapelverarbeitung starten%s"
324
+
325
+ #: ../inc/admin/ui/notices.php:23
326
+ msgid "Welcome to Imagify, the best way to easily optimize your images!"
327
+ msgstr "Willkommen bei Imagify, der smarten Bildoptimierung!"
328
+
329
+ #: ../inc/admin/ui/notices.php:25 ../inc/admin/ui/notices.php:90
330
+ #: ../inc/admin/ui/notices.php:181 ../inc/admin/ui/notices.php:217
331
+ #: ../inc/admin/ui/notices.php:256 ../inc/admin/ui/notices.php:361
332
+ msgid "Dismiss this notice"
333
+ msgstr "Diese Meldung verwerfen"
334
+
335
+ #: ../inc/admin/ui/notices.php:32
336
+ msgid "Create an Account"
337
+ msgstr "Konto anlegen"
338
+
339
+ #: ../inc/admin/ui/notices.php:33
340
+ msgid ""
341
+ "Don't have an Imagify account yet? Optimize your images by creating an "
342
+ "account in a few seconds!"
343
+ msgstr ""
344
+ "Registriere dein Konto bei Imagify (kostenfrei, dauert nur ein paar "
345
+ "Sekunden), um anschließend deine Bilder in WordPress zu optimieren."
346
+
347
+ #: ../inc/admin/ui/notices.php:36
348
+ msgid "Sign up, It's FREE!"
349
+ msgstr "Mein Konto kostenfrei anlegen"
350
+
351
+ #: ../inc/admin/ui/notices.php:42
352
+ msgid "Enter your API Key"
353
+ msgstr "API-Schlüssel eingeben"
354
+
355
+ #: ../inc/admin/ui/notices.php:43
356
+ #, php-format
357
+ msgid ""
358
+ "Save your API Key you have received by email or you can get it on your "
359
+ "%sImagify account page%s."
360
+ msgstr ""
361
+ "Aktiviere Imagify mit deinem persönlichen API-Schlüssel, den du per E-Mail "
362
+ "erhalten hast. Du kannst ihn auch jederzeit in deinen %sKontoeinstellungen%s "
363
+ "abrufen."
364
+
365
+ #: ../inc/admin/ui/notices.php:46
366
+ msgid "I have my API key"
367
+ msgstr "Meinen API-Schlüssel eingeben"
368
+
369
+ #: ../inc/admin/ui/notices.php:52
370
+ msgid "Configure it"
371
+ msgstr "Einstellungen wählen"
372
+
373
+ #: ../inc/admin/ui/notices.php:53
374
+ msgid ""
375
+ "It’s almost done! You have just to configure your optimization settings."
376
+ msgstr ""
377
+ "Fast fertig! Wähle nun deine Einstellungen für Imagify. Anschließend kannst "
378
+ "du alle deine Bilder von Imagify automatisch optimieren lassen."
379
+
380
+ #: ../inc/admin/ui/notices.php:54
381
+ msgid "Go to Settings"
382
+ msgstr "Meine Einstellungen wählen"
383
+
384
+ #: ../inc/admin/ui/notices.php:85 ../inc/admin/ui/options.php:97
385
+ msgid "Your API key isn't valid!"
386
+ msgstr "Dein API-Schlüssel ist ungültig."
387
+
388
+ #: ../inc/admin/ui/notices.php:88
389
+ #, php-format
390
+ msgid ""
391
+ "Go to your Imagify account page to get your API Key and specify it on "
392
+ "%1$syour settings%3$s or %2$screate an account for free%3$s if you don't "
393
+ "have one yet."
394
+ msgstr ""
395
+ "Du findest deinen API-Schlüssel in deinem Imagify-Konto. Sobald du ihn dort "
396
+ "geholt hast, %1$shinterlege ihn in deinen Einstellungen%3$s. Oder %2$slege "
397
+ "kostenfrei ein Konto an%3$s, um deinen API-Schlüssel zu erhalten."
398
+
399
+ #: ../inc/admin/ui/notices.php:138
400
+ msgid ""
401
+ "The following plugins are not compatible with this plugin and may cause "
402
+ "unexpected results:"
403
+ msgstr ""
404
+ "Die folgenden Plugins sind nicht kompatibel mit diesem Plugin und können "
405
+ "unerwartete Ergebnisse verursachen:"
406
+
407
+ #: ../inc/admin/ui/notices.php:144
408
+ msgid "Deactivate"
409
+ msgstr "Deaktivieren"
410
+
411
+ #: ../inc/admin/ui/notices.php:173
412
+ msgid "The external HTTP requests are blocked!"
413
+ msgstr "Externe HTTP-Anfragen werden blockiert."
414
+
415
+ #: ../inc/admin/ui/notices.php:174
416
+ msgid ""
417
+ "You defined the <code>WP_HTTP_BLOCK_EXTERNAL</code> constant in the <code>wp-"
418
+ "config.php</code> to block all external HTTP requests."
419
+ msgstr ""
420
+ "Alle externen HTTP-Anfragen werden blockiert, weil in der Datei <em>wp-"
421
+ "config.php</em> die PHP-Konstante <code>WP_HTTP_BLOCK_EXTERNAL</code> "
422
+ "gesetzt ist.\n"
423
+
424
+ #: ../inc/admin/ui/notices.php:176
425
+ msgid ""
426
+ "To optimize your images, you have to put the following code in your <code>wp-"
427
+ "config.php</code> file so that it works correctly."
428
+ msgstr ""
429
+ "Um deine Bilder optimieren zu können, füge den folgenden Code zu deiner "
430
+ "<em>wp-config.php</em> hinzu."
431
+
432
+ #: ../inc/admin/ui/notices.php:177
433
+ msgid "Click on the field and press Ctrl-A to select all."
434
+ msgstr "Klicke auf das Feld und drücke ctrl+A (cmd+A) für Alles auswählen."
435
+
436
+ #: ../inc/admin/ui/notices.php:213
437
+ msgid "You're missing out!"
438
+ msgstr "Du verpasst etwas!"
439
+
440
+ #: ../inc/admin/ui/notices.php:214
441
+ msgid "Use the List view to optimize images with Imagify."
442
+ msgstr "In der Listenansicht kannst du deine Bilder direkt zu optimieren."
443
+
444
+ #: ../inc/admin/ui/notices.php:215
445
+ msgid "Switch to the List View"
446
+ msgstr "Zur Listenansicht wechseln"
447
+
448
+ #: ../inc/admin/ui/notices.php:253 ../inc/functions/i18n.php:94
449
+ #: ../inc/functions/i18n.php:97
450
+ #, php-format
451
+ msgid ""
452
+ "To continue to optimize your images, log in to your Imagify account to %sbuy "
453
+ "a pack or subscribe to a plan%s."
454
+ msgstr ""
455
+ "Um deine Bilder auch in Zukunft zu optimieren, logge dich bei Imagify.io ein "
456
+ "und %skaufe ein einmaliges Guthaben oder ein Abo%s."
457
+
458
+ #: ../inc/admin/ui/notices.php:306 ../inc/admin/ui/options.php:28
459
+ msgid "Discover the best caching plugin to speed up your website."
460
+ msgstr ""
461
+ "Entdecke das beste Caching-Plugin, um deine Website schneller zu machen."
462
+
463
+ #: ../inc/admin/ui/notices.php:309 ../inc/admin/ui/options.php:36
464
+ #, php-format
465
+ msgid "%sGet %s off%s with this coupon code:%s"
466
+ msgstr "%sErhalte %s Rabatt%s mit diesem Gutschein-Code:%s"
467
+
468
+ #: ../inc/admin/ui/notices.php:318 ../inc/admin/ui/options.php:41
469
+ msgid "Get WP Rocket now"
470
+ msgstr "Hole dir WP Rocket jetzt"
471
+
472
+ #: ../inc/admin/ui/notices.php:354
473
+ #, php-format
474
+ msgid ""
475
+ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and improved "
476
+ "your website's speed by reducing your images size."
477
+ msgstr ""
478
+
479
+ #: ../inc/admin/ui/notices.php:356 ../inc/admin/ui/options.php:59
480
+ #, php-format
481
+ msgid ""
482
+ "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
483
+ "WordPress.org%s!"
484
+ msgstr ""
485
+ "%sBist du zufrieden mit diesem Plugin?%s Bitte nimm dir einen Moment Zeit "
486
+ "für eine %sBewertung auf WordPress.org%s!"
487
+
488
+ #: ../inc/admin/ui/options.php:22
489
+ msgid "Is your website too slow?"
490
+ msgstr "Ist deine Website zu langsam?"
491
+
492
+ #: ../inc/admin/ui/options.php:84
493
+ msgid "API Key"
494
+ msgstr "API-Schlüssel"
495
+
496
+ #: ../inc/admin/ui/options.php:91 ../inc/functions/i18n.php:31
497
+ msgid "Your API key is valid."
498
+ msgstr "Dein API-Schlüssel ist gültig."
499
+
500
+ #: ../inc/admin/ui/options.php:104
501
+ #, php-format
502
+ msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
503
+ msgstr "Noch keinen API-Schlüssel erhalten? %sJetzt kostenfrei Konto anlegen%s"
504
+
505
+ #: ../inc/admin/ui/options.php:121
506
+ msgid "Optimization Level"
507
+ msgstr "Optimierungsgrad"
508
+
509
+ #: ../inc/admin/ui/options.php:141
510
+ msgid "More info?"
511
+ msgstr "Was ist das?"
512
+
513
+ #: ../inc/admin/ui/options.php:148
514
+ #, php-format
515
+ msgid "Need help to choose? %sTry the Visual Comparison%s"
516
+ msgstr "Nicht sicher? %sVisuellen Vergleich ausprobieren%s"
517
+
518
+ #: ../inc/admin/ui/options.php:157 ../inc/admin/ui/options.php:161
519
+ msgid "Auto-Optimize images on upload"
520
+ msgstr "Bilder beim Hochladen automatisch optimieren"
521
+
522
+ #: ../inc/admin/ui/options.php:165
523
+ msgid "Automatically optimize every image you upload to WordPress."
524
+ msgstr ""
525
+ "Lasse automatisch jedes Bild optimieren, das du in WordPress hochlädst."
526
+
527
+ #: ../inc/admin/ui/options.php:170 ../inc/admin/ui/options.php:173
528
+ msgid "Backup original images"
529
+ msgstr "Originalbilder sichern"
530
+
531
+ #: ../inc/admin/ui/options.php:177
532
+ msgid ""
533
+ "Keep your original images in a separate folder before optimization process."
534
+ msgstr ""
535
+ "Speichere Sicherungskopien deiner Originalbilder in einem separaten Ordner, "
536
+ "bevor die Optimierung beginnt."
537
+
538
+ #: ../inc/admin/ui/options.php:182 ../inc/admin/ui/options.php:185
539
+ msgid "Resize larger images"
540
+ msgstr "Große Bilder verkleinern"
541
+
542
+ #: ../inc/admin/ui/options.php:191
543
+ #, php-format
544
+ msgid "to maximum %s pixels width"
545
+ msgstr "auf maximal %s Pixel Breite"
546
+
547
+ #: ../inc/admin/ui/options.php:202
548
+ #, php-format
549
+ msgid ""
550
+ "This option is recommended to reduce larger images. You can save up to 80%% "
551
+ "after resizing. The new width should not be less than your largest thumbnail "
552
+ "width, which is actually %spx."
553
+ msgstr ""
554
+ "Diese Option ist empfehlenswert, um das Speichervolumen für größere Bilder "
555
+ "zu reduzieren. Du kannst so bis zu 80%% Speicherplatz sparen. Die neue "
556
+ "Breite sollte nicht geringer als deine größte Vorschaubildbreite sein, die "
557
+ "übrigens %s Pixel beträgt."
558
+
559
+ #: ../inc/admin/ui/options.php:209 ../inc/admin/ui/options.php:212
560
+ msgid "EXIF Data"
561
+ msgstr "EXIF-Daten"
562
+
563
+ #: ../inc/admin/ui/options.php:216
564
+ msgid ""
565
+ "Keep all EXIF data from your images. EXIF are informations stored in your "
566
+ "pictures like shutter speed, exposure compensation, ISO, etc..."
567
+ msgstr ""
568
+ "Behalte alle EXIF-Daten deiner Bilder. In den EXIF-Daten werden "
569
+ "Informationen wie Verschlusszeit, Belichtungskorrektur, ISO-Wert usw. "
570
+ "gespeichert."
571
+
572
+ #: ../inc/admin/ui/options.php:217
573
+ msgid "Learn more"
574
+ msgstr "Weitere Informationen"
575
+
576
+ #: ../inc/admin/ui/options.php:219
577
+ msgid ""
578
+ "If you are a photographer, you may be interested in this option if you are "
579
+ "displaying on your pages some info like the model of your camera."
580
+ msgstr ""
581
+ "Aktiviere diese Option, wenn du auf deiner Site fototechnische "
582
+ "Informationen, wie z.B. das Model deiner Kamera, anzeigen möchtest."
583
+
584
+ #: ../inc/admin/ui/options.php:228
585
+ msgid "Files optimization"
586
+ msgstr "Dateioptimierung"
587
+
588
+ #: ../inc/admin/ui/options.php:231
589
+ msgid ""
590
+ "You can choose to compress different image sizes created by WordPress here."
591
+ msgstr ""
592
+ "Hier kannst du die Komprimierung für die verschiedenen Bildgrößen "
593
+ "kontrollieren, die dein WordPress generiert."
594
+
595
+ #: ../inc/admin/ui/options.php:233
596
+ #, php-format
597
+ msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
598
+ msgstr "Die %sOriginalgröße%s wird von Imagify %sautomatisch optimiert%s."
599
+
600
+ #: ../inc/admin/ui/options.php:236
601
+ msgid ""
602
+ "Remember each additional image size will affect your Imagify monthly usage!"
603
+ msgstr ""
604
+ "Bedenke, dass jede ausgewählte Bildgröße dein monatliches Nutzungsvolumen "
605
+ "bei Imagify beeinflusst."
606
+
607
+ #: ../inc/admin/ui/options.php:289
608
+ msgid "Display options"
609
+ msgstr "Optionen anzeigen"
610
+
611
+ #: ../inc/admin/ui/options.php:294 ../inc/admin/ui/options.php:299
612
+ msgid "Show Admin Bar menu"
613
+ msgstr "Toolbar-Menü anzeigen"
614
+
615
+ #: ../inc/admin/ui/options.php:300
616
+ msgid "I want this awesome quick access menu on my admin bar."
617
+ msgstr "Ich möchte dieses praktische Dropdown-Menü in meiner Toolbar."
618
+
619
+ #: ../inc/admin/ui/options.php:319
620
+ msgid "Save &amp; Go to Bulk Optimizer"
621
+ msgstr "Speichern und zur Stapelverarbeitung gehen"
622
+
623
+ #: ../inc/admin/ui/options.php:328
624
+ #, php-format
625
+ msgid ""
626
+ "Once your settings saved, optimize all your images by using the %sImagify "
627
+ "Bulk Optimization%s feature."
628
+ msgstr ""
629
+ "Sobald du deine Einstellungen gespeichert hast, kannst du mit der "
630
+ "%sStapelverarbeitung%s alle deine Bilder optimieren."
631
+
632
+ #: ../inc/admin/ui/options.php:336
633
+ msgid "You can choose three levels of compression"
634
+ msgstr "Du kannst zwischen drei Komprimierungsstufen wählen."
635
+
636
+ #: ../inc/admin/ui/options.php:341
637
+ msgid ""
638
+ "This mode provides lossless optimization, your images will be optimized "
639
+ "without any visible change."
640
+ msgstr ""
641
+ "Dieser Modus sorgt für verlustfreie Bildoptimierung. Deine Bilder werden "
642
+ "ohne sichtbare Veränderungen optimiert."
643
+
644
+ #: ../inc/admin/ui/options.php:344
645
+ msgid ""
646
+ "If you want the perfect quality for your images, we recommend you that mode."
647
+ msgstr ""
648
+ "Wähle diese Einstellung, wenn dir die perfekte Qualität deiner Bilder "
649
+ "wichtig ist."
650
+
651
+ #: ../inc/admin/ui/options.php:347
652
+ msgid ""
653
+ "Note: the file size reduction will be less, compared to aggressive mode."
654
+ msgstr ""
655
+ "Hinweis: Die Verringerung der Dateigröße fällt hier geringer aus, als im "
656
+ "aggressiven Modus."
657
+
658
+ #: ../inc/admin/ui/options.php:354
659
+ msgid ""
660
+ "This mode provides perfect optimization of your images without any "
661
+ "significant quality loss."
662
+ msgstr ""
663
+ "Dieser Modus liefert hervorragende Optimierung ohne signifikante "
664
+ "Qualitätsverluste."
665
+
666
+ #: ../inc/admin/ui/options.php:357
667
+ msgid ""
668
+ "This will provide a drastic savings on the initial weight, with a small "
669
+ "reduction in image quality. Most of the time it's not even noticeable."
670
+ msgstr ""
671
+ "Die drastische Verringerung der Dateigröße geht mit geringfügigen, meist "
672
+ "kaum wahrnehmbaren Einbußen in der Qualität einher."
673
+
674
+ #: ../inc/admin/ui/options.php:360
675
+ msgid "If you want the maximum weight reduction, we recommend using this mode."
676
+ msgstr ""
677
+ "Wähle diese Einstellung, wenn du auf maximale Größenreduktion Wert legst."
678
+
679
+ #: ../inc/admin/ui/options.php:367
680
+ msgid ""
681
+ "This mode will apply all available optimizations for maximum image "
682
+ "compression."
683
+ msgstr ""
684
+ "Dieser Modus wendet alle verfügbaren Parameter für maximale Komprimierung an."
685
+
686
+ #: ../inc/admin/ui/options.php:370
687
+ msgid ""
688
+ "This will provide a huge savings on the initial weight. Sometimes the image "
689
+ "quality could be degraded a little."
690
+ msgstr ""
691
+ "Die Bildgröße wird erheblich verringert. In einigen Fällen kann es jedoch zu "
692
+ "Verlusten bei der Qualität kommen."
693
+
694
+ #: ../inc/admin/ui/options.php:373
695
+ msgid ""
696
+ "If you want the maximum weight reduction, and you agree to lose some quality "
697
+ "on the images we recommend using this mode."
698
+ msgstr ""
699
+ "Wähle diese Einstellung, wenn du bereit bist, etwas Qualität zugunsten "
700
+ "maximaler Reduktion der Dateigröße zu riskieren."
701
+
702
+ #: ../inc/admin/ui/options.php:380 ../inc/admin/ui/options.php:502
703
+ #: ../inc/functions/admin-ui.php:659 ../inc/functions/i18n.php:58
704
+ msgid "Close"
705
+ msgstr "Schließen"
706
+
707
+ #: ../inc/admin/ui/options.php:392
708
+ #, php-format
709
+ msgid "I want to compare%s and%s"
710
+ msgstr "Ich möchte %s und %s vergleichen."
711
+
712
+ #: ../inc/admin/ui/options.php:409
713
+ #, php-format
714
+ msgid "Original photography about %s"
715
+ msgstr "Originalbild ca. %s"
716
+
717
+ #: ../inc/admin/ui/options.php:414 ../inc/admin/ui/options.php:419
718
+ #: ../inc/admin/ui/options.php:424
719
+ #, php-format
720
+ msgid "Optimized photography about %s"
721
+ msgstr "Optimiertes Bild ca. %s"
722
+
723
+ #: ../inc/admin/ui/options.php:429 ../inc/admin/ui/options.php:439
724
+ #: ../inc/admin/ui/options.php:459 ../inc/admin/ui/options.php:480
725
+ #: ../inc/functions/admin-ui.php:59
726
+ msgid "Level:"
727
+ msgstr "Modus:"
728
+
729
+ #: ../inc/admin/ui/options.php:433 ../inc/admin/ui/options.php:443
730
+ #: ../inc/admin/ui/options.php:463 ../inc/admin/ui/options.php:484
731
+ #: ../inc/functions/i18n.php:59
732
+ msgid "File Size:"
733
+ msgstr "Dateigröße:"
734
+
735
+ #: ../inc/admin/ui/options.php:447 ../inc/admin/ui/options.php:467
736
+ #: ../inc/admin/ui/options.php:488 ../inc/functions/admin-ui.php:45
737
+ #: ../inc/functions/i18n.php:60
738
+ msgid "Original Saving:"
739
+ msgstr "Optimiert um:"
740
+
741
+ #: ../inc/admin/upload.php:42 ../inc/functions/i18n.php:77
742
+ msgid "Unoptimized"
743
+ msgstr "Nicht Optimiert"
744
+
745
+ #: ../inc/admin/upload.php:43
746
+ msgid "Errors"
747
+ msgstr "Fehler"
748
+
749
+ #: ../inc/admin/upload.php:46
750
+ msgid "Filter by status"
751
+ msgstr "Filtere nach Status"
752
+
753
+ #: ../inc/admin/upload.php:49
754
+ msgid "All images"
755
+ msgstr "Alle Bilder"
756
+
757
+ #: ../inc/classes/class-attachment.php:266
758
+ msgid ""
759
+ "This size isn't authorized to be optimized. Update your Imagify settings if "
760
+ "you want to optimize it."
761
+ msgstr ""
762
+ "Diese Bildgröße ist für die Optimierung nicht zugelassen. Aktualisiere deine "
763
+ "Imagify-Einstellungen, wenn du sie optimieren möchtest."
764
+
765
+ #: ../inc/common/admin-bar.php:48
766
+ #, php-format
767
+ msgid "Rate Imagify on %s"
768
+ msgstr "Bewerte Imagify auf %s"
769
+
770
+ #: ../inc/common/admin-bar.php:61
771
+ msgid "Loading..."
772
+ msgstr "Laden&#160;…"
773
+
774
+ #: ../inc/functions/admin-ui.php:36
775
+ msgid "New Filesize:"
776
+ msgstr "Neue Dateigröße:"
777
+
778
+ #: ../inc/functions/admin-ui.php:52
779
+ msgid "Close details"
780
+ msgstr "Details schließen"
781
+
782
+ #: ../inc/functions/admin-ui.php:52
783
+ msgid "View details"
784
+ msgstr "Details anzeigen"
785
+
786
+ #: ../inc/functions/admin-ui.php:56
787
+ msgid "Original Filesize:"
788
+ msgstr "Originale Dateigröße:"
789
+
790
+ #: ../inc/functions/admin-ui.php:62
791
+ msgid "Thumbnails Optimized:"
792
+ msgstr "Optimierte Vorschaubilder:"
793
+
794
+ #: ../inc/functions/admin-ui.php:63
795
+ msgid "Overall Saving:"
796
+ msgstr "Gesamte Ersparnis:"
797
+
798
+ #: ../inc/functions/admin-ui.php:80
799
+ msgid "Restoring..."
800
+ msgstr "Wiederherstellen&#160;…"
801
+
802
+ #: ../inc/functions/admin-ui.php:121
803
+ msgid "Try again"
804
+ msgstr "Erneut versuchen"
805
+
806
+ #: ../inc/functions/admin-ui.php:153 ../inc/functions/admin-ui.php:159
807
+ #: ../inc/functions/admin-ui.php:165
808
+ #, php-format
809
+ msgid "Re-Optimize to %s"
810
+ msgstr "Erneut optimieren als %s"
811
+
812
+ #: ../inc/functions/admin-ui.php:189
813
+ #, php-format
814
+ msgid "%s can't be optimized"
815
+ msgstr "%s kann nicht optimiert werden."
816
+
817
+ #: ../inc/functions/admin-ui.php:237
818
+ msgid "What plan do I need?"
819
+ msgstr ""
820
+
821
+ #: ../inc/functions/admin-ui.php:241
822
+ msgid "You're new to Imagify?"
823
+ msgstr ""
824
+
825
+ #: ../inc/functions/admin-ui.php:242
826
+ msgid ""
827
+ "Let us help you by analyzing your existing images and determinate the best "
828
+ "plan for you"
829
+ msgstr ""
830
+
831
+ #: ../inc/functions/admin-ui.php:277
832
+ msgid "Choose Plan"
833
+ msgstr ""
834
+
835
+ #: ../inc/functions/admin-ui.php:278
836
+ msgid "Payment Info"
837
+ msgstr ""
838
+
839
+ #: ../inc/functions/admin-ui.php:283
840
+ msgid "We analysed your images"
841
+ msgstr ""
842
+
843
+ #: ../inc/functions/admin-ui.php:289
844
+ #, php-format
845
+ msgid "You have %s images"
846
+ msgstr ""
847
+
848
+ #: ../inc/functions/admin-ui.php:295
849
+ #, php-format
850
+ msgid "You actually have %s of images in your library."
851
+ msgstr ""
852
+
853
+ #: ../inc/functions/admin-ui.php:299
854
+ #, php-format
855
+ msgid "You upload around %s of images per month."
856
+ msgstr ""
857
+
858
+ #: ../inc/functions/admin-ui.php:306
859
+ msgid "We recommend you this plan"
860
+ msgstr ""
861
+
862
+ #: ../inc/functions/admin-ui.php:311
863
+ msgid "Subscribe a monthly plan"
864
+ msgstr ""
865
+
866
+ #: ../inc/functions/admin-ui.php:312
867
+ msgid "Subscribe a yearly plan"
868
+ msgstr ""
869
+
870
+ #: ../inc/functions/admin-ui.php:316 ../inc/functions/admin-ui.php:452
871
+ #: ../inc/functions/admin-ui.php:620
872
+ msgid "Monthly"
873
+ msgstr ""
874
+
875
+ #: ../inc/functions/admin-ui.php:319 ../inc/functions/admin-ui.php:455
876
+ #: ../inc/functions/admin-ui.php:623
877
+ msgid "Yearly"
878
+ msgstr ""
879
+
880
+ #: ../inc/functions/admin-ui.php:319 ../inc/functions/admin-ui.php:455
881
+ #: ../inc/functions/admin-ui.php:623
882
+ msgid "2 months free"
883
+ msgstr ""
884
+
885
+ #: ../inc/functions/admin-ui.php:330 ../inc/functions/admin-ui.php:349
886
+ #: ../inc/functions/admin-ui.php:465 ../inc/functions/admin-ui.php:475
887
+ msgid "/month"
888
+ msgstr ""
889
+
890
+ #: ../inc/functions/admin-ui.php:332 ../inc/functions/admin-ui.php:380
891
+ #: ../inc/functions/admin-ui.php:467 ../inc/functions/admin-ui.php:518
892
+ #, php-format
893
+ msgid "approx: %s images"
894
+ msgstr ""
895
+
896
+ #: ../inc/functions/admin-ui.php:353 ../inc/functions/admin-ui.php:481
897
+ #, php-format
898
+ msgid ""
899
+ "%s per<br>\n"
900
+ "additionnal Gb"
901
+ msgstr ""
902
+
903
+ #: ../inc/functions/admin-ui.php:358 ../inc/functions/admin-ui.php:393
904
+ #: ../inc/functions/admin-ui.php:577 ../inc/functions/admin-ui.php:598
905
+ msgid "Choose another plan"
906
+ msgstr ""
907
+
908
+ #: ../inc/functions/admin-ui.php:368
909
+ msgid "Optimize the images you already have, buy a one-time plan"
910
+ msgstr ""
911
+
912
+ #: ../inc/functions/admin-ui.php:404
913
+ msgid "Checkout"
914
+ msgstr ""
915
+
916
+ #: ../inc/functions/admin-ui.php:408
917
+ msgid ""
918
+ "Monthly plans comes with credits which is renewed every months. The billing "
919
+ "happens automatically each month or year depending the billing period you "
920
+ "choose."
921
+ msgstr ""
922
+
923
+ #: ../inc/functions/admin-ui.php:432
924
+ msgid "Monthly Plans"
925
+ msgstr ""
926
+
927
+ #: ../inc/functions/admin-ui.php:437
928
+ msgid "One Time Plans"
929
+ msgstr ""
930
+
931
+ #: ../inc/functions/admin-ui.php:447
932
+ msgid ""
933
+ "Monthly plans come with credits which is renewed every months. The billing "
934
+ "happens automatically each month or year depending the billing period you "
935
+ "choose."
936
+ msgstr ""
937
+
938
+ #: ../inc/functions/admin-ui.php:479 ../inc/functions/admin-ui.php:526
939
+ msgid "we recommend for you"
940
+ msgstr ""
941
+
942
+ #: ../inc/functions/admin-ui.php:487 ../inc/functions/admin-ui.php:530
943
+ msgid "Choose plan"
944
+ msgstr ""
945
+
946
+ #: ../inc/functions/admin-ui.php:495
947
+ msgid "Need more?"
948
+ msgstr ""
949
+
950
+ #: ../inc/functions/admin-ui.php:496
951
+ msgid "for special needs"
952
+ msgstr ""
953
+
954
+ #: ../inc/functions/admin-ui.php:500
955
+ msgid "Contact Us"
956
+ msgstr ""
957
+
958
+ #: ../inc/functions/admin-ui.php:507
959
+ msgid ""
960
+ "One time plans are useful if you have a lots of existing images which need "
961
+ "to be optimized. You can use it for bulk optimizing all your past images. "
962
+ "You will pay only once."
963
+ msgstr ""
964
+
965
+ #: ../inc/functions/admin-ui.php:560
966
+ msgid "Your order"
967
+ msgstr ""
968
+
969
+ #: ../inc/functions/admin-ui.php:565
970
+ #, php-format
971
+ msgid "%scancel%sYou just removed %s"
972
+ msgstr ""
973
+
974
+ #: ../inc/functions/admin-ui.php:573 ../inc/functions/admin-ui.php:594
975
+ msgid "Remove this item"
976
+ msgstr ""
977
+
978
+ #: ../inc/functions/admin-ui.php:580
979
+ #, php-format
980
+ msgid "%s per month"
981
+ msgstr ""
982
+
983
+ #: ../inc/functions/admin-ui.php:601
984
+ #, php-format
985
+ msgid "one time %s"
986
+ msgstr ""
987
+
988
+ #: ../inc/functions/admin-ui.php:614
989
+ #, php-format
990
+ msgid ""
991
+ "Switch to yearly subscription and <br><strong class=\"imagify-dark\">save %s "
992
+ "per year!</strong>"
993
+ msgstr ""
994
+
995
+ #: ../inc/functions/admin-ui.php:615
996
+ #, php-format
997
+ msgid ""
998
+ "Perfect!<br>You're <strong class=\"imagify-dark\">saving %s per year!</"
999
+ "strong>"
1000
+ msgstr ""
1001
+
1002
+ #: ../inc/functions/admin-ui.php:654
1003
+ msgid "Thank you for being awesome!"
1004
+ msgstr ""
1005
+
1006
+ #: ../inc/functions/admin-ui.php:665
1007
+ msgid "What do our user think about Imagify"
1008
+ msgstr ""
1009
+
1010
+ #: ../inc/functions/admin-ui.php:699
1011
+ msgid "Secure Credit Card Payment"
1012
+ msgstr ""
1013
+
1014
+ #: ../inc/functions/admin-ui.php:700
1015
+ msgid "This is secure 128-bits SSL encrypted payment"
1016
+ msgstr ""
1017
+
1018
+ #: ../inc/functions/i18n.php:19
1019
+ msgid "Let's get you started!"
1020
+ msgstr "Los geht’s!"
1021
+
1022
+ #: ../inc/functions/i18n.php:20
1023
+ msgid "Enter your email to get an API key:"
1024
+ msgstr "Gib deinen E-Mail-Adresse ein, um einen API-Schlüssel zu erhalten:"
1025
+
1026
+ #: ../inc/functions/i18n.php:21
1027
+ msgid "Sign Up"
1028
+ msgstr "Konto anlegen"
1029
+
1030
+ #: ../inc/functions/i18n.php:22
1031
+ msgid "You need to specify an email!"
1032
+ msgstr "Du musst eine E-Mail-Adresse angeben."
1033
+
1034
+ #: ../inc/functions/i18n.php:23 ../inc/functions/i18n.php:29
1035
+ msgid "Congratulations!"
1036
+ msgstr "Glückwunsch!"
1037
+
1038
+ #: ../inc/functions/i18n.php:24
1039
+ msgid ""
1040
+ "Your account has been succesfully created. Please check your mailbox, you "
1041
+ "are going to receive an email with API key."
1042
+ msgstr ""
1043
+ "Dein Konto ist jetzt angelegt. Überprüfe dein E-Mail-Postfach, du erhältst "
1044
+ "eine E-Mail mit deinem API-Schlüssel."
1045
+
1046
+ #: ../inc/functions/i18n.php:25
1047
+ msgid "Connect to Imagify!"
1048
+ msgstr "Verbindung zu Imagify herstellen"
1049
+
1050
+ #: ../inc/functions/i18n.php:26
1051
+ msgid "Paste your API key below:"
1052
+ msgstr "Füge deinen API-Schlüssel hier ein:"
1053
+
1054
+ #: ../inc/functions/i18n.php:27
1055
+ msgid "Connect me"
1056
+ msgstr "Verbinden"
1057
+
1058
+ #: ../inc/functions/i18n.php:28
1059
+ msgid "Check in progress..."
1060
+ msgstr "API-Schlüssel wird geprüft…"
1061
+
1062
+ #: ../inc/functions/i18n.php:30
1063
+ msgid ""
1064
+ "Your API key is valid. You can now configure the Imagify settings to "
1065
+ "optimize your images."
1066
+ msgstr ""
1067
+ "Dein API-Schlüssel ist gültig. Du kannst jetzt deine Einstellungen für die "
1068
+ "Bildoptimierung mit Imagify wählen."
1069
+
1070
+ #: ../inc/functions/i18n.php:32
1071
+ msgid "Cancel"
1072
+ msgstr ""
1073
+
1074
+ #: ../inc/functions/i18n.php:38
1075
+ msgid "Don't Need a Parachute?"
1076
+ msgstr "Du brauchst keinen Fallschirm?"
1077
+
1078
+ #: ../inc/functions/i18n.php:39
1079
+ msgid ""
1080
+ "If you keep this option deactivated, you won't be able to re-optimize your "
1081
+ "images to another compression level and restore your original images in case "
1082
+ "of need."
1083
+ msgstr ""
1084
+ "Wenn du diese Option deaktiviert lässt, wirst du deine Bilder nicht erneut "
1085
+ "mit einem anderen Level komprimieren, oder deren Originale wiederherstellen "
1086
+ "können."
1087
+
1088
+ #: ../inc/functions/i18n.php:55
1089
+ msgid "Original Image"
1090
+ msgstr "Originalbild"
1091
+
1092
+ #: ../inc/functions/i18n.php:56
1093
+ msgid "Optimized Image"
1094
+ msgstr "Optimiertes Bild"
1095
+
1096
+ #: ../inc/functions/i18n.php:70
1097
+ msgid "Please wait..."
1098
+ msgstr "Einen Moment bitte&#160;…"
1099
+
1100
+ #: ../inc/functions/i18n.php:71
1101
+ msgid ""
1102
+ "We are trying to get your unoptimized images, it may take time depending on "
1103
+ "the number of images."
1104
+ msgstr ""
1105
+ "Nicht optimierte Bilder werden gesammelt, dies kann einen Moment dauern&#160;"
1106
+ "…"
1107
+
1108
+ #: ../inc/functions/i18n.php:73
1109
+ msgid "Oops, There is something wrong!"
1110
+ msgstr "Hm, etwas ist schief gelaufen."
1111
+
1112
+ #: ../inc/functions/i18n.php:74
1113
+ msgid ""
1114
+ "An unknow error occurred when we tried to get all your unoptimized images. "
1115
+ "Try again and if the issue still persist, please contact us!"
1116
+ msgstr ""
1117
+ "Ein unbekannter Fehler ist beim Sammeln der nicht optimierten Bilder "
1118
+ "aufgetreten. Versuche es noch einmal; falls der Fehler sich wiederholt, "
1119
+ "kontaktiere bitte den Imagify-Support."
1120
+
1121
+ #: ../inc/functions/i18n.php:78
1122
+ msgid "Error"
1123
+ msgstr "Fehler"
1124
+
1125
+ #: ../inc/functions/i18n.php:81
1126
+ msgid "Hold on!"
1127
+ msgstr "Moment, bitte!"
1128
+
1129
+ #: ../inc/functions/i18n.php:82
1130
+ msgid "All your images have been optimized by Imagify. Congratulations!"
1131
+ msgstr "Imagify hat alle deine Bilder optimiert. Glückwunsch!"
1132
+
1133
+ #: ../inc/functions/i18n.php:84
1134
+ #, php-format
1135
+ msgid ""
1136
+ "Discover @imagify, the new compression tool to optimize your images for "
1137
+ "free. I saved %1$s out of %2$s!"
1138
+ msgstr ""
1139
+ "Freies #WordPress #Plugin zur Bildoptimierung für bessere #Performance: "
1140
+ "Bilder mit @imagify komprimiert, %1$s von %2$s gespart!"
1141
+
1142
+ #: ../inc/functions/i18n.php:88
1143
+ msgid "Imagify is still processing. Are you sure you want to leave this page?"
1144
+ msgstr ""
1145
+ "Imagify arbeitet noch. Möchtest du diese Seite wirklich verlassen und den "
1146
+ "Prozess abbrechen?"
1147
+
1148
+ #: ../inc/functions/i18n.php:97
1149
+ msgid "F j, Y"
1150
+ msgstr "j. F Y"
1151
+
1152
+ #: ../inc/functions/process.php:41
1153
+ msgid ""
1154
+ "Sorry, our servers are temporarily unaccessible. Please, try again in a "
1155
+ "couple of minutes."
1156
+ msgstr ""
1157
+ "Unsere Server sind leider im Augenblick nicht erreichbar. Bitte versuche es "
1158
+ "in ein paar Minuten noch einmal."
1159
+
1160
+ #: ../inc/functions/process.php:47
1161
+ msgid "External HTTP requests are blocked"
1162
+ msgstr "Externe HTTP-Anfragen werden blockiert"
1163
+
1164
+ #: ../inc/functions/process.php:53
1165
+ msgid "File path is empty"
1166
+ msgstr "Datei-Pfad ist leer"
1167
+
1168
+ #: ../inc/functions/process.php:59
1169
+ #, php-format
1170
+ msgid "Could not find %s"
1171
+ msgstr "%s wurde nicht gefunden"
1172
+
1173
+ #: ../inc/functions/process.php:64
1174
+ #, php-format
1175
+ msgid "%s is not writable"
1176
+ msgstr "%s ist nicht beschreibbar."
1177
+
1178
+ #: ../inc/functions/process.php:73
1179
+ #, php-format
1180
+ msgid "Skipped (%s), image not found."
1181
+ msgstr "Übersprungen (%s), Bild nicht gefunden."
1182
+
1183
+ #: ../assets/js/sweetalert.min.js:1
1184
+ msgid "./utils"
1185
+ msgstr ""
1186
+
1187
+ #: ../assets/js/sweetalert.min.js:1
1188
+ msgid "./handle-swal-dom"
1189
+ msgstr ""
1190
+
1191
+ #: ../assets/js/sweetalert.min.js:1
1192
+ msgid "./handle-dom"
1193
+ msgstr ""
1194
+
1195
+ #~ msgid "https://wordpress.org/plugins/imagify"
1196
+ #~ msgstr "https://de.wordpress.org/plugins/imagify"
1197
+
1198
+ #~ msgid ""
1199
+ #~ "Dramaticaly reduce image file sizes without loosing quality, make your "
1200
+ #~ "website load faster, boost your SEO and save money on your bandwith using "
1201
+ #~ "Imagify, the new most advanced image optimization tool."
1202
+ #~ msgstr ""
1203
+ #~ "Verlustfreie Bildoptimierung für WordPress. Imagify reduziert dramatisch "
1204
+ #~ "die Dateigröße deiner Bilder, macht deine Website schneller, verbessert "
1205
+ #~ "deine SEO und spart Bandbreite."
1206
+
1207
+ #~ msgid "Your default setting:"
1208
+ #~ msgstr "Deine Standard-Einstellung:"
1209
+
1210
+ #~ msgid ""
1211
+ #~ "All images which are over to %s could be optimized using the pro version."
1212
+ #~ msgstr "Bilder größer als %s können mit der Pro-version optimiert werden."
languages/imagify-de_DE_formal.mo CHANGED
Binary file
languages/imagify-de_DE_formal.po CHANGED
@@ -1,941 +1,1215 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Imagify\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: Fri Feb 12 2016 15:00:09 GMT+0100 (CET)\n"
6
- "PO-Revision-Date: Mon Feb 22 2016 19:01:48 GMT+0100 (CET)\n"
7
- "Last-Translator: caspar <caspar@wp-rocket.me>\n"
8
- "Language-Team: \n"
9
- "Language: German\n"
10
- "Plural-Forms: nplurals=2; plural=n != 1\n"
11
- "MIME-Version: 1.0\n"
12
- "Content-Type: text/plain; charset=UTF-8\n"
13
- "Content-Transfer-Encoding: 8bit\n"
14
- "X-Poedit-SourceCharset: UTF-8\n"
15
- "X-Poedit-Basepath: .\n"
16
- "X-Poedit-SearchPath-0: ..\n"
17
- "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
- "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
- "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
- "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
- "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
- "X-Generator: Loco - https://localise.biz/\n"
23
- "X-Loco-Target-Locale: de_DE"
24
-
25
- #: ../inc/admin/ui/notices.php:85 ../inc/admin/ui/options.php:91
26
- msgid "Your API key isn't valid!"
27
- msgstr "Ihr API-Schlüssel ist ungültig."
28
-
29
- #: ../inc/admin/ui/notices.php:88
30
- #, php-format
31
- msgid ""
32
- "Go to your Imagify account page to get your API Key and specify it on "
33
- "%1$syour settings%3$s or %2$screate an account for free%3$s if you don't "
34
- "have one yet."
35
- msgstr ""
36
- "Sie finden Ihren API-Schlüssel in Ihrem Imagify-Konto. Sobald Sie ihn dort "
37
- "geholt haben, %1$shinterlegen Sie ihn in Ihren Einstellungen%3$s. Oder "
38
- "%2$slegen Sie kostenfrei ein Konto an%3$s, um einen API-Schlüssel zu "
39
- "erhalten."
40
-
41
- #: ../inc/admin/ui/notices.php:138
42
- msgid ""
43
- "The following plugins are not compatible with this plugin and may cause "
44
- "unexpected results:"
45
- msgstr ""
46
- "Die folgenden Plugins sind nicht kompatibel mit diesem Plugin und können "
47
- "unerwartete Ergebnisse verursachen:"
48
-
49
- #: ../inc/admin/ui/notices.php:144
50
- msgid "Deactivate"
51
- msgstr "Deaktivieren"
52
-
53
- #: ../inc/admin/ui/notices.php:173
54
- msgid "The external HTTP requests are blocked!"
55
- msgstr "Externe HTTP-Anfragen werden blockiert."
56
-
57
- #: ../inc/admin/ui/notices.php:174
58
- msgid ""
59
- "You defined the <code>WP_HTTP_BLOCK_EXTERNAL</code> constant in the <code>wp-"
60
- "config.php</code> to block all external HTTP requests."
61
- msgstr ""
62
- "Alle externen HTTP-Anfragen werden blockiert, weil in der Datei <em>wp-"
63
- "config.php</em> die PHP-Konstante <code>WP_HTTP_BLOCK_EXTERNAL</code> "
64
- "gesetzt ist.\n"
65
-
66
- #: ../inc/admin/ui/notices.php:176
67
- msgid ""
68
- "To optimize your images, you have to put the following code in your <code>wp-"
69
- "config.php</code> file so that it works correctly."
70
- msgstr ""
71
- "Um Ihre Bilder optimieren zu können, fügen Sie den folgenden Code zu Ihrer "
72
- "<em>wp-config.php</em> hinzu."
73
-
74
- #: ../inc/admin/ui/notices.php:177
75
- msgid "Click on the field and press Ctrl-A to select all."
76
- msgstr "Klicken Sie auf das Feld und drücken Sie ctrl+A (cmd+A) für Alles auswählen."
77
-
78
- #: ../inc/admin/ui/notices.php:213
79
- msgid "You're missing out!"
80
- msgstr "Sie verpassen etwas!"
81
-
82
- #: ../inc/admin/ui/notices.php:214
83
- msgid "Use the List view to optimize images with Imagify."
84
- msgstr "In der Listenansicht können Sie Ihre Bilder direkt zu optimieren."
85
-
86
- #: ../inc/admin/ui/notices.php:215
87
- msgid "Switch to the List View"
88
- msgstr "Zur Listenansicht wechseln"
89
-
90
- #: ../inc/admin/ui/options.php:18
91
- msgid "Is your website too slow?"
92
- msgstr "Ist Ihre Website zu langsam?"
93
-
94
- #: ../inc/admin/ui/options.php:24
95
- msgid "Discover the best caching plugin to speed up your website."
96
- msgstr "Entdecken Sie das beste Caching-Plugin, um Ihre Website schneller zu machen."
97
-
98
- #: ../inc/admin/ui/options.php:32
99
- #, php-format
100
- msgid "%sGet %s off%s with this coupon code:%s"
101
- msgstr "%sErhalten Sie %s Rabatt%s mit diesem Gutschein-Code:%s"
102
-
103
- #: ../inc/admin/ui/options.php:37
104
- msgid "Get WP Rocket now"
105
- msgstr "Holen Sie sich WP Rocket jetzt"
106
-
107
- #: ../inc/admin/ui/options.php:55
108
- #, php-format
109
- msgid ""
110
- "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
111
- "WordPress.org%s!"
112
- msgstr ""
113
- "%sSind Sie zufrieden mit diesem Plugin?%s Bitte nehmen Sie sich einen Moment "
114
- "Zeit für eine %sBewertung auf WordPress.org%s!"
115
-
116
- #: ../inc/admin/ui/options.php:78
117
- msgid "API Key"
118
- msgstr "API-Schlüssel"
119
-
120
- #: ../inc/admin/ui/options.php:98
121
- #, php-format
122
- msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
123
- msgstr "Noch keinen API-Schlüssel erhalten? %sJetzt kostenfrei Konto anlegen%s"
124
-
125
- #: ../inc/admin/ui/options.php:114
126
- msgid "Optimization Level"
127
- msgstr "Optimierungsgrad"
128
-
129
- #: ../inc/admin/ui/options.php:134
130
- msgid "More info?"
131
- msgstr "Was ist das?"
132
-
133
- #: ../inc/admin/ui/options.php:141
134
- #, php-format
135
- msgid "Need help to choose? %sTry the Visual Comparison%s"
136
- msgstr "Nicht sicher? %sVisuellen Vergleich ausprobieren%s"
137
-
138
- #: ../inc/admin/ui/options.php:150 ../inc/admin/ui/options.php:154
139
- msgid "Auto-Optimize images on upload"
140
- msgstr "Bilder beim Hochladen automatisch optimieren"
141
-
142
- #: ../inc/admin/ui/options.php:158
143
- msgid "Automatically optimize every image you upload to WordPress."
144
- msgstr "Lassen Sie jedes Bild automatisch optimieren, das Sie in WordPress hochladen."
145
-
146
- #: ../inc/admin/ui/options.php:163 ../inc/admin/ui/options.php:166
147
- msgid "Backup original images"
148
- msgstr "Originalbilder sichern"
149
-
150
- #: ../inc/admin/ui/options.php:170
151
- msgid "Keep your original images in a separate folder before optimization process."
152
- msgstr ""
153
- "Speichern Sie Sicherungskopien Ihrer Originalbilder in einem separaten "
154
- "Ordner, bevor die Optimierung beginnt."
155
-
156
- #: ../inc/admin/ui/options.php:175 ../inc/admin/ui/options.php:178
157
- msgid "Resize larger images"
158
- msgstr "Große Bilder verkleinern"
159
-
160
- #: ../inc/admin/ui/options.php:184
161
- #, php-format
162
- msgid "to maximum %s pixels width"
163
- msgstr "auf maximal %s Pixel Breite"
164
-
165
- #: ../inc/admin/ui/options.php:195
166
- #, php-format
167
- msgid ""
168
- "This option is recommended to reduce larger images. You can save up to 80%% "
169
- "after resizing. The new width should not be less than your largest thumbnail "
170
- "width, which is actually %spx."
171
- msgstr ""
172
- "Diese Option ist empfehlenswert, um das Speichervolumen für größere Bilder "
173
- "zu reduzieren. Sie könne so bis zu 80%% Speicherplatz sparen. Die neue "
174
- "Breite sollte nicht geringer als Ihre größte Vorschaubildbreite sein, die "
175
- "übrigens %s Pixel beträgt."
176
-
177
- #: ../inc/admin/ui/options.php:202 ../inc/admin/ui/options.php:205
178
- msgid "EXIF Data"
179
- msgstr "EXIF-Daten"
180
-
181
- #: ../inc/admin/ui/options.php:209
182
- msgid ""
183
- "Keep all EXIF data from your images. EXIF are informations stored in your "
184
- "pictures like shutter speed, exposure compensation, ISO, etc..."
185
- msgstr ""
186
- "Behalten Sie alle EXIF-Daten Ihrer Bilder. In den EXIF-Daten werden "
187
- "Informationen wie Verschlusszeit, Belichtungskorrektur, ISO-Wert usw. "
188
- "gespeichert."
189
-
190
- #: ../inc/admin/ui/options.php:210
191
- msgid "Learn more"
192
- msgstr "Weitere Informationen"
193
-
194
- #: ../inc/admin/ui/options.php:212
195
- msgid ""
196
- "If you are a photographer, you may be interested in this option if you are "
197
- "displaying on your pages some info like the model of your camera."
198
- msgstr ""
199
- "Aktiviere diese Option, wenn Sie auf Ihrer Site fototechnische Informationen,"
200
- " wie z.B. das Model Ihrer Kamera, anzeigen möchtest."
201
-
202
- #: ../inc/admin/ui/options.php:221
203
- msgid "Files optimization"
204
- msgstr "Dateioptimierung"
205
-
206
- #: ../inc/admin/ui/options.php:224
207
- msgid "You can choose to compress different image sizes created by WordPress here."
208
- msgstr ""
209
- "Hier können Sie die Komprimierung für die verschiedenen Bildgrößen "
210
- "kontrollieren, die Ihr WordPress generiert."
211
-
212
- #: ../inc/admin/ui/options.php:226
213
- #, php-format
214
- msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
215
- msgstr "Die %sOriginalgröße%s wird von Imagify %sautomatisch optimiert%s."
216
-
217
- #: ../inc/admin/ui/options.php:229
218
- msgid "Remember each additional image size will affect your Imagify monthly usage!"
219
- msgstr ""
220
- "Bedenken Sie, dass jede ausgewählte Bildgröße Ihr monatliches "
221
- "Nutzungsvolumen bei Imagify beeinflusst."
222
-
223
- #: ../inc/admin/ui/options.php:282
224
- msgid "Display options"
225
- msgstr "Optionen anzeigen"
226
-
227
- #: ../inc/admin/ui/options.php:287 ../inc/admin/ui/options.php:292
228
- msgid "Show Admin Bar menu"
229
- msgstr "Toolbar-Menü anzeigen"
230
-
231
- #: ../inc/admin/ui/options.php:293
232
- msgid "I want this awesome quick access menu on my admin bar."
233
- msgstr "Ich möchte dieses praktische Dropdown-Menü in meiner Toolbar."
234
-
235
- #: ../inc/admin/ui/options.php:308
236
- #, php-format
237
- msgid ""
238
- "Once your settings saved, optimize all your images by using the %sImagify "
239
- "Bulk Optimization%s feature."
240
- msgstr ""
241
- "Sobald Sie Ihre Einstellungen gespeichert haben, können Sie mit der "
242
- "%sStapelverarbeitung%s alle Ihre Bilder optimieren."
243
-
244
- #: ../inc/admin/ui/options.php:316
245
- msgid "You can choose three levels of compression"
246
- msgstr "Sie können zwischen drei Komprimierungsstufen wählen."
247
-
248
- #: ../inc/admin/ui/options.php:321
249
- msgid ""
250
- "This mode will apply all available optimizations for maximum image "
251
- "compression."
252
- msgstr "Dieser Modus wendet alle verfügbaren Parameter für maximale Komprimierung an."
253
-
254
- #: ../inc/admin/ui/options.php:324
255
- msgid ""
256
- "This will provide a huge savings on the initial weight. Sometimes the image "
257
- "quality could be degraded a little."
258
- msgstr ""
259
- "Die Bildgröße wird erheblich verringert. In einigen Fällen kann es jedoch zu "
260
- "Verlusten bei der Qualität kommen."
261
-
262
- #: ../inc/admin/ui/options.php:327
263
- msgid ""
264
- "If you want the maximum weight reduction, and you agree to lose some quality "
265
- "on the images we recommend using this mode."
266
- msgstr ""
267
- "Wählen Sie diese Einstellung, wenn Sie bereit sind, etwas Qualität zugunsten "
268
- "maximaler Reduktion der Dateigröße zu riskieren."
269
-
270
- #: ../inc/admin/ui/options.php:333
271
- msgid ""
272
- "This mode provides perfect optimization of your images without any "
273
- "significant quality loss."
274
- msgstr ""
275
- "Dieser Modus liefert hervorragende Optimierung ohne signifikante "
276
- "Qualitätsverluste."
277
-
278
- #: ../inc/admin/ui/options.php:336
279
- msgid ""
280
- "This will provide a drastic savings on the initial weight, with a small "
281
- "reduction in image quality. Most of the time it's not even noticeable."
282
- msgstr ""
283
- "Die drastische Verringerung der Dateigröße geht mit geringfügigen, meist "
284
- "kaum wahrnehmbaren Einbußen in der Qualität einher."
285
-
286
- #: ../inc/admin/ui/options.php:339
287
- msgid "If you want the maximum weight reduction, we recommend using this mode."
288
- msgstr ""
289
- "Wählen Sie diese Einstellung, wenn Sie auf maximale Größenreduktion Wert "
290
- "legen."
291
-
292
- #: ../inc/admin/ui/options.php:345
293
- msgid ""
294
- "This mode provides lossless optimization, your images will be optimized "
295
- "without any visible change."
296
- msgstr ""
297
- "Dieser Modus sorgt für verlustfreie Bildoptimierung. Ihre Bilder werden ohne "
298
- "sichtbare Veränderungen optimiert."
299
-
300
- #: ../inc/admin/ui/options.php:348
301
- msgid "If you want the perfect quality for your images, we recommend you that mode."
302
- msgstr ""
303
- "Wählen Sie diese Einstellung, wenn Ihnen die perfekte Qualität Ihrer Bilder "
304
- "wichtig ist."
305
-
306
- #: ../inc/admin/ui/options.php:351
307
- msgid "Note: the file size reduction will be less, compared to aggressive mode."
308
- msgstr ""
309
- "Hinweis: Die Verringerung der Dateigröße fällt hier geringer aus, als im "
310
- "aggressiven Modus."
311
-
312
- #: ../inc/admin/ui/options.php:370
313
- #, php-format
314
- msgid "I want to compare%s and%s"
315
- msgstr "Ich möchte %s und %s vergleichen."
316
-
317
- #: ../inc/admin/ui/options.php:387
318
- #, php-format
319
- msgid "Original photography about %s"
320
- msgstr "Originalbild ca. %s"
321
-
322
- #: ../inc/admin/ui/options.php:392 ../inc/admin/ui/options.php:397 ..
323
- #: inc/admin/ui/options.php:402
324
- #, php-format
325
- msgid "Optimized photography about %s"
326
- msgstr "Optimiertes Bild ca. %s"
327
-
328
- #: ../inc/classes/class-attachment.php:520
329
- msgid ""
330
- "This size isn't authorized to be optimized. Update your Imagify settings if "
331
- "you want to optimize it."
332
- msgstr ""
333
- "Diese Bildgröße ist für die Optimierung nicht zugelassen. Aktualisieren Sie "
334
- "Ihre Imagify-Einstellungen, wenn Sie sie optimieren möchten."
335
-
336
- #: ../inc/common/admin-bar.php:48
337
- #, php-format
338
- msgid "Rate Imagify on %s"
339
- msgstr "Bewerten Sie Imagify auf %s"
340
-
341
- #: ../inc/common/admin-bar.php:57
342
- msgid "Loading..."
343
- msgstr "Laden&#160;…"
344
-
345
- #: ../inc/functions/admin-ui.php:75
346
- msgid "Restoring..."
347
- msgstr "Wiederherstellen&#160;…"
348
-
349
- #: ../inc/functions/admin-ui.php:162
350
- #, php-format
351
- msgid "%s can't be optimized"
352
- msgstr "%s kann nicht optimiert werden."
353
-
354
- #: ../inc/functions/process.php:30
355
- msgid ""
356
- "Sorry, our servers are temporarily unaccessible. Please, try again in a "
357
- "couple of minutes."
358
- msgstr ""
359
- "Unsere Server sind leider im Augenblick nicht erreichbar. Bitte versuchen "
360
- "Sie es in ein paar Minuten noch einmal."
361
-
362
- #: ../inc/functions/process.php:36
363
- msgid "External HTTP requests are blocked"
364
- msgstr "Externe HTTP-Anfragen werden blockiert"
365
-
366
- #: ../inc/functions/process.php:42
367
- msgid "File path is empty"
368
- msgstr "Datei-Pfad ist leer"
369
-
370
- #: ../inc/functions/process.php:48
371
- #, php-format
372
- msgid "Could not find %s"
373
- msgstr "%s wurde nicht gefunden"
374
-
375
- #: ../inc/functions/process.php:53
376
- #, php-format
377
- msgid "%s is not writable"
378
- msgstr "%s ist nicht beschreibbar."
379
-
380
- #: ../inc/functions/process.php:62
381
- #, php-format
382
- msgid "Skipped (%s), image not found."
383
- msgstr "Übersprungen (%s), Bild nicht gefunden."
384
-
385
- #. URI of the plugin
386
- msgid "https://wordpress.org/plugins/imagify"
387
- msgstr "https://de.wordpress.org/plugins/imagify"
388
-
389
- #. Description of the plugin
390
- msgid ""
391
- "Dramaticaly reduce image file sizes without loosing quality, make your "
392
- "website load faster, boost your SEO and save money on your bandwith using "
393
- "Imagify, the new most advanced image optimization tool."
394
- msgstr ""
395
- "Verlustfreie Bildoptimierung für WordPress. Imagify reduziert dramatisch die "
396
- "Dateigröße deiner Bilder, macht Ihre Website schneller, verbessert Ihre SEO "
397
- "und spart Bandbreite."
398
-
399
- #: ../inc/admin/ajax.php:118 ../inc/admin/meta-boxes.php:29 ..
400
- #: inc/functions/admin-ui.php:99 ../inc/functions/admin-ui.php:127 ..
401
- #: inc/functions/admin-ui.php:133 ../inc/functions/admin-ui.php:139 ..
402
- #: inc/functions/admin-ui.php:175 ../inc/functions/admin-ui.php:181
403
- msgid "Optimizing..."
404
- msgstr "Wird&#160;optimiert&#160;…"
405
-
406
- #: ../inc/admin/ajax.php:118 ../inc/admin/enqueue.php:163 ../inc/admin/meta-boxes.
407
- #: php:34 ../inc/functions/admin-ui.php:181
408
- msgid "Optimize"
409
- msgstr "Optimieren"
410
-
411
- #: ../inc/admin/ajax.php:416
412
- msgid "Oops, It's almost over!"
413
- msgstr "Hoppla, es wird langsam eng."
414
-
415
- #: ../inc/admin/ajax.php:417
416
- #, php-format
417
- msgid ""
418
- "You have almost used all your credit.%sDon't forget to upgrade your "
419
- "subscription to continue optimizing your images."
420
- msgstr ""
421
- "In Kürze werden Sie Ihr Guthaben verbraucht haben.%sAktualisieren Sie Ihr "
422
- "Abo, um Ihre Bilder auch in Zukunft zu optimieren."
423
-
424
- #: ../inc/admin/ajax.php:418 ../inc/admin/ui/bulk.php:22
425
- msgid "View My Subscription"
426
- msgstr "Mein Abo ansehen"
427
-
428
- #: ../inc/admin/ajax.php:426 ../inc/admin/enqueue.php:208 ../inc/admin/ui/notices.
429
- #: php:251
430
- msgid "Oops, It's Over!"
431
- msgstr "Alles hat ein Ende…"
432
-
433
- #: ../inc/admin/ajax.php:427 ../inc/admin/enqueue.php:224 ../inc/admin/ui/notices.
434
- #: php:253
435
- #, php-format
436
- msgid ""
437
- "You have consumed all your credit for this month. You will have <strong>%s "
438
- "back on %s</strong>."
439
- msgstr ""
440
- "Sie haben Ihr Guthaben für diesen Monat aufgebraucht. <strong>%s</strong> "
441
- "werden Ihnen am <strong>%s</strong> wieder zur Verfügung stehen."
442
-
443
- #: ../inc/admin/ajax.php:428
444
- msgid "Upgrade My Subscription"
445
- msgstr "Mein Abo aktualisieren"
446
-
447
- #: ../inc/admin/ajax.php:447 ../inc/admin/ui/bulk.php:16
448
- msgid "Account status"
449
- msgstr "Kontostatus"
450
-
451
- #: ../inc/admin/ajax.php:448 ../inc/admin/ui/bulk.php:17
452
- msgid "Your subscription:"
453
- msgstr "Ihr Abo:"
454
-
455
- #: ../inc/admin/ajax.php:456 ../inc/admin/ui/bulk.php:47
456
- #, php-format
457
- msgid "You have %s space credit left"
458
- msgstr "Sie haben noch %s Guthaben"
459
-
460
- #: ../inc/admin/ajax.php:468
461
- msgid "View my subscription"
462
- msgstr "Mein Abo ansehen"
463
-
464
- #: ../inc/admin/enqueue.php:121
465
- msgid "Let's get you started!"
466
- msgstr "Los geht’s!"
467
-
468
- #: ../inc/admin/enqueue.php:122
469
- msgid "Enter your email to get an API key:"
470
- msgstr "Geben Sie Ihre E-Mail-Adresse ein, um einen API-Schlüssel zu erhalten:"
471
-
472
- #: ../inc/admin/enqueue.php:123
473
- msgid "Sign Up"
474
- msgstr "Konto anlegen"
475
-
476
- #: ../inc/admin/enqueue.php:124
477
- msgid "You need to specify an email!"
478
- msgstr "Sie müssen eine E-Mail-Adresse angeben."
479
-
480
- #: ../inc/admin/enqueue.php:125 ../inc/admin/enqueue.php:131
481
- msgid "Congratulations!"
482
- msgstr "Glückwunsch!"
483
-
484
- #: ../inc/admin/enqueue.php:126
485
- msgid ""
486
- "Your account has been succesfully created. Please check your mailbox, you "
487
- "are going to receive an email with API key."
488
- msgstr ""
489
- "Ihr Konto ist jetzt angelegt. Überprüfen Sie Ihr E-Mail-Postfach, Sie "
490
- "erhalten eine E-Mail mit Ihrem API-Schlüssel."
491
-
492
- #: ../inc/admin/enqueue.php:127
493
- msgid "Connect to Imagify!"
494
- msgstr "Verbindung zu Imagify herstellen"
495
-
496
- #: ../inc/admin/enqueue.php:128
497
- msgid "Paste your API key below:"
498
- msgstr "Fügen Sie Ihren API-Schlüssel hier ein:"
499
-
500
- #: ../inc/admin/enqueue.php:129
501
- msgid "Connect me"
502
- msgstr "Verbinden"
503
-
504
- #: ../inc/admin/enqueue.php:130
505
- msgid "Check in progress..."
506
- msgstr "API-Schlüssel wird geprüft…"
507
-
508
- #: ../inc/admin/enqueue.php:132
509
- msgid ""
510
- "Your API key is valid. You can now configure the Imagify settings to "
511
- "optimize your images."
512
- msgstr ""
513
- "Ihr API-Schlüssel ist gültig. Sie können jetzt Ihre Einstellungen für die "
514
- "Bildoptimierung mit Imagify wählen."
515
-
516
- #: ../inc/admin/enqueue.php:133 ../inc/admin/ui/options.php:85
517
- msgid "Your API key is valid."
518
- msgstr "Ihr API-Schlüssel ist gültig."
519
-
520
- #: ../inc/admin/enqueue.php:150
521
- msgid "Don't Need a Parachute?"
522
- msgstr "Sie brauchen keinen Fallschirm?"
523
-
524
- #: ../inc/admin/enqueue.php:151
525
- msgid ""
526
- "If you keep this option deactivated, you won't be able to re-optimize your "
527
- "images to another compression level and restore your original images in case "
528
- "of need."
529
- msgstr ""
530
- "Wenn Sie diese Option deaktiviert lassen, werden Sie Ihre Bilder nicht "
531
- "erneut mit einem anderen Level komprimieren, oder deren Originale "
532
- "wiederherstellen können."
533
-
534
- #: ../inc/admin/enqueue.php:164 ../inc/functions/admin-ui.php:75
535
- msgid "Restore Original"
536
- msgstr "Original wiederherstellen"
537
-
538
- #: ../inc/admin/enqueue.php:178
539
- msgid "Original Image"
540
- msgstr "Originalbild"
541
-
542
- #: ../inc/admin/enqueue.php:179
543
- msgid "Optimized Image"
544
- msgstr "Optimiertes Bild"
545
-
546
- #: ../inc/admin/enqueue.php:180
547
- msgid "Compare Original VS Optimized"
548
- msgstr "Vergleiche Original mit optimiert"
549
-
550
- #: ../inc/admin/enqueue.php:181 ../inc/admin/ui/options.php:358 ..
551
- #: inc/admin/ui/options.php:480
552
- msgid "Close"
553
- msgstr "Schließen"
554
-
555
- #: ../inc/admin/enqueue.php:182 ../inc/admin/ui/options.php:411 ..
556
- #: inc/admin/ui/options.php:421 ../inc/admin/ui/options.php:441 ..
557
- #: inc/admin/ui/options.php:462
558
- msgid "File Size:"
559
- msgstr "Dateigröße:"
560
-
561
- #: ../inc/admin/enqueue.php:183 ../inc/admin/ui/options.php:425 ..
562
- #: inc/admin/ui/options.php:445 ../inc/admin/ui/options.php:466 ..
563
- #: inc/functions/admin-ui.php:44
564
- msgid "Original Saving:"
565
- msgstr "Optimiert um:"
566
-
567
- #: ../inc/admin/enqueue.php:198
568
- msgid "Please wait..."
569
- msgstr "Einen Moment bitte&#160;…"
570
-
571
- #: ../inc/admin/enqueue.php:199
572
- msgid ""
573
- "We are trying to get your unoptimized images, it may take time depending on "
574
- "the number of images."
575
- msgstr ""
576
- "Nicht optimierte Bilder werden gesammelt, dies kann einen Moment dauern&#160;"
577
- "…"
578
-
579
- #: ../inc/admin/enqueue.php:201
580
- msgid "Oops, There is something wrong!"
581
- msgstr "Hm, etwas ist schief gelaufen."
582
-
583
- #: ../inc/admin/enqueue.php:202
584
- msgid ""
585
- "An unknow error occurred when we tried to get all your unoptimized images. "
586
- "Try again and if the issue still persist, please contact us!"
587
- msgstr ""
588
- "Ein unbekannter Fehler ist beim Sammeln der nicht optimierten Bilder "
589
- "aufgetreten. Versuchen Sie es noch einmal; falls der Fehler sich wiederholt, "
590
- "kontaktieren Sie bitte den Imagify-Support."
591
-
592
- #: ../inc/admin/enqueue.php:204 ../inc/admin/upload.php:38 ../inc/admin/ui/bulk.
593
- #: php:257
594
- msgid "Optimized"
595
- msgstr "Optimiert"
596
-
597
- #: ../inc/admin/enqueue.php:205 ../inc/admin/upload.php:39
598
- msgid "Unoptimized"
599
- msgstr "Nicht Optimiert"
600
-
601
- #: ../inc/admin/enqueue.php:206
602
- msgid "Error"
603
- msgstr "Fehler"
604
-
605
- #: ../inc/admin/enqueue.php:209
606
- msgid "Hold on!"
607
- msgstr "Moment, bitte!"
608
-
609
- #: ../inc/admin/enqueue.php:210
610
- msgid "All your images have been optimized by Imagify. Congratulations!"
611
- msgstr "Imagify hat alle Ihre Bilder optimiert. Glückwunsch!"
612
-
613
- #: ../inc/admin/enqueue.php:212
614
- #, php-format
615
- msgid ""
616
- "Discover @imagify, the new compression tool to optimize your images for free."
617
- " I saved %1$s out of %2$s!"
618
- msgstr ""
619
- "Freies #WordPress #Plugin zur Bildoptimierung für bessere #Performance: "
620
- "Bilder mit @imagify komprimiert, %1$s von %2$s gespart!"
621
-
622
- #: ../inc/admin/enqueue.php:216
623
- msgid "Imagify is still processing. Are you sure you want to leave this page?"
624
- msgstr ""
625
- "Imagify arbeitet noch. Möchten Sie diese Seite wirklich verlassen und den "
626
- "Prozess abbrechen?"
627
-
628
- #: ../inc/admin/enqueue.php:221 ../inc/admin/enqueue.php:224 ..
629
- #: inc/admin/ui/notices.php:253
630
- #, php-format
631
- msgid ""
632
- "To continue to optimize your images, log in to your Imagify account to %sbuy "
633
- "a pack or subscribe to a plan%s."
634
- msgstr ""
635
- "Um Ihre Bilder auch in Zukunft zu optimieren, loggen Sie sich bei Imagify.io "
636
- "ein und %skaufen Sie ein einmaliges Guthaben oder ein Abo%s."
637
-
638
- #: ../inc/admin/enqueue.php:224
639
- msgid "F j, Y"
640
- msgstr "j. F Y"
641
-
642
- #: ../inc/admin/menu.php:24 ../inc/admin/menu.php:24 ../inc/admin/plugins.php:13 .
643
- #: ./inc/admin/ui/bulk.php:78 ../inc/common/admin-bar.php:39
644
- msgid "Bulk Optimization"
645
- msgstr "Stapelverarbeitung"
646
-
647
- #: ../inc/admin/meta-boxes.php:19 ../inc/functions/admin-ui.php:168
648
- msgid "Invalid API key"
649
- msgstr "Ungültiger API-Schlüssel"
650
-
651
- #: ../inc/admin/meta-boxes.php:21 ../inc/functions/admin-ui.php:170
652
- msgid "Check your Settings"
653
- msgstr "Überprüfen Sie Ihre Einstellungen"
654
-
655
- #: ../inc/admin/options.php:107
656
- msgid "Cheatin&#8217; uh?"
657
- msgstr "Ts, ts, ts&#160;…"
658
-
659
- #: ../inc/admin/options.php:115
660
- msgid "<strong>ERROR</strong>: options page not found."
661
- msgstr "<strong>Fehler</strong>: Einstellungsseite nicht gefunden."
662
-
663
- #: ../inc/admin/plugins.php:14 ../inc/admin/ui/options.php:70 ../inc/common/admin-
664
- #: bar.php:30
665
- msgid "Settings"
666
- msgstr "Einstellungen"
667
-
668
- #: ../inc/admin/upload.php:40
669
- msgid "Errors"
670
- msgstr "Fehler"
671
-
672
- #: ../inc/admin/upload.php:43
673
- msgid "Filter by status"
674
- msgstr "Filtere nach Status"
675
-
676
- #: ../inc/admin/upload.php:46
677
- msgid "All images"
678
- msgstr "Alle Bilder"
679
-
680
- #: ../inc/admin/ui/bulk.php:59
681
- msgid "Upgrade your account to continue optimizing your images"
682
- msgstr "Aktualisiere dein Konto, um deine Bilder weiterhin zu optimieren"
683
-
684
- #: ../inc/admin/ui/bulk.php:63
685
- msgid "More info"
686
- msgstr "Weitere Informationen"
687
-
688
- #: ../inc/admin/ui/bulk.php:88
689
- msgid "Information"
690
- msgstr "Informationen"
691
-
692
- #: ../inc/admin/ui/bulk.php:90
693
- msgid ""
694
- "Please be aware that optimizing a large number of images can take a while "
695
- "depending on your server and network speed."
696
- msgstr ""
697
- "Bitte beachten: Das Optimieren einer hohen Anzahl Bilder kann eine Weile "
698
- "dauern, abhängig von Ihrem Server und der Netzwerkgeschwindigkeit."
699
-
700
- #: ../inc/admin/ui/bulk.php:91
701
- msgid ""
702
- "You must keep this page open while the bulk optimizaton is processing. If "
703
- "you leave you can come back to continue where it left off."
704
- msgstr ""
705
- "Sie müssen diese Seite während der Stapelverarbeitung geöffnet lassen. Falls "
706
- "Sie sie doch schließen, wird die Stapelverarbeitung unterbrochen und später "
707
- "fortgesetzt, sobald Sie diese Seite erneut aufrufen."
708
-
709
- #: ../inc/admin/ui/bulk.php:99
710
- msgid "Select Your Compression Level"
711
- msgstr "Wählen Sie Ihre Komprimierungsstufen"
712
-
713
- #: ../inc/admin/ui/bulk.php:102 ../inc/admin/ui/bulk.php:130 ..
714
- #: inc/admin/ui/options.php:129 ../inc/admin/ui/options.php:319 ..
715
- #: inc/admin/ui/options.php:382 ../inc/admin/ui/options.php:399 ..
716
- #: inc/admin/ui/options.php:459 ../inc/classes/class-attachment.php:135 ..
717
- #: inc/functions/admin-ui.php:127
718
- msgid "Ultra"
719
- msgstr "Ultra"
720
-
721
- #: ../inc/admin/ui/bulk.php:105 ../inc/admin/ui/bulk.php:125 ..
722
- #: inc/admin/ui/options.php:124 ../inc/admin/ui/options.php:331 ..
723
- #: inc/admin/ui/options.php:381 ../inc/admin/ui/options.php:394 ..
724
- #: inc/admin/ui/options.php:438 ../inc/classes/class-attachment.php:138 ..
725
- #: inc/functions/admin-ui.php:133
726
- msgid "Aggressive"
727
- msgstr "Aggressiv"
728
-
729
- #: ../inc/admin/ui/bulk.php:108 ../inc/admin/ui/bulk.php:120 ..
730
- #: inc/admin/ui/options.php:119 ../inc/admin/ui/options.php:343 ..
731
- #: inc/admin/ui/options.php:380 ../inc/admin/ui/options.php:389 ..
732
- #: inc/admin/ui/options.php:418 ../inc/classes/class-attachment.php:141 ..
733
- #: inc/functions/admin-ui.php:139
734
- msgid "Normal"
735
- msgstr "Normal"
736
-
737
- #: ../inc/admin/ui/bulk.php:112
738
- msgid "Your default setting:"
739
- msgstr "Ihre Standard-Einstellung:"
740
-
741
- #: ../inc/admin/ui/bulk.php:139
742
- #, php-format
743
- msgid "Don't forget to check %syour settings%s before bulk optimization."
744
- msgstr "Überprüfen Sie Ihre %sEinstellungen%s vor der Stapelverarbeitung."
745
-
746
- #: ../inc/admin/ui/bulk.php:149
747
- msgid "Imagif'em all"
748
- msgstr "Alle Bilder optimieren"
749
-
750
- #: ../inc/admin/ui/bulk.php:156
751
- #, php-format
752
- msgid "All images which are over to %s could be optimized using the pro version."
753
- msgstr "Bilder größer als %s können mit der Pro-version optimiert werden."
754
-
755
- #: ../inc/admin/ui/bulk.php:167
756
- msgid "Overview"
757
- msgstr "Übersicht"
758
-
759
- #: ../inc/admin/ui/bulk.php:177
760
- msgid "Statistics"
761
- msgstr "Statistik"
762
-
763
- #: ../inc/admin/ui/bulk.php:189
764
- msgid "that's the number of images you optimized with Imagify"
765
- msgstr "Bilder mit Imagify optimiert"
766
-
767
- #: ../inc/admin/ui/bulk.php:194
768
- msgid "Original size"
769
- msgstr "Originalgröße"
770
-
771
- #: ../inc/admin/ui/bulk.php:199
772
- msgid "Optimized size"
773
- msgstr "Optimierte Größe"
774
-
775
- #: ../inc/admin/ui/bulk.php:210
776
- #, php-format
777
- msgid "that's the size you saved %sby using Imagify"
778
- msgstr "geringere Dateigröße dank Imagify"
779
-
780
- #: ../inc/admin/ui/bulk.php:230
781
- msgid "Well done!"
782
- msgstr "Bravo!"
783
-
784
- #: ../inc/admin/ui/bulk.php:231
785
- #, php-format
786
- msgid "you saved %1$s out of %2$s"
787
- msgstr "Sie haben %1$s von %2$s gespart"
788
-
789
- #: ../inc/admin/ui/bulk.php:236
790
- msgid "Share your awesome result"
791
- msgstr "Teilen Sie Ihr hervorragendes Ergebnis"
792
-
793
- #: ../inc/admin/ui/bulk.php:251
794
- msgid "Compression process results"
795
- msgstr "Ergebnisse der Komprimierung"
796
-
797
- #: ../inc/admin/ui/bulk.php:254
798
- msgid "Filename"
799
- msgstr "Dateiname"
800
-
801
- #: ../inc/admin/ui/bulk.php:255
802
- msgid "Status"
803
- msgstr "Status"
804
-
805
- #: ../inc/admin/ui/bulk.php:256 ../inc/admin/ui/options.php:379 ..
806
- #: inc/admin/ui/options.php:384 ../inc/admin/ui/options.php:408
807
- msgid "Original"
808
- msgstr "Original"
809
-
810
- #: ../inc/admin/ui/bulk.php:258
811
- msgid "Percentage"
812
- msgstr "Prozent"
813
-
814
- #: ../inc/admin/ui/bulk.php:259
815
- msgid "Thumbnails optimized"
816
- msgstr "Vorschaubilder optimiert"
817
-
818
- #: ../inc/admin/ui/bulk.php:260
819
- msgid "Overall saving"
820
- msgstr "Gesamte Ersparnis"
821
-
822
- #: ../inc/admin/ui/bulk.php:265
823
- msgid "file"
824
- msgstr "Datei"
825
-
826
- #: ../inc/admin/ui/bulk.php:266
827
- msgid "error"
828
- msgstr "Fehler"
829
-
830
- #: ../inc/admin/ui/bulk.php:267
831
- msgid "Total:"
832
- msgstr "Gesamt:"
833
-
834
- #: ../inc/admin/ui/bulk.php:268
835
- msgid "Gain:"
836
- msgstr "Gewinn:"
837
-
838
- #: ../inc/admin/ui/bulk.php:285
839
- #, php-format
840
- msgid "%sStart the bulk optimization%s"
841
- msgstr "%sStapelverarbeitung starten%s"
842
-
843
- #: ../inc/admin/ui/notices.php:23
844
- msgid "Welcome to Imagify, the best way to easily optimize your images!"
845
- msgstr "Willkommen bei Imagify, der smarten Bildoptimierung!"
846
-
847
- #: ../inc/admin/ui/notices.php:25 ../inc/admin/ui/notices.php:25 ..
848
- #: inc/admin/ui/notices.php:90 ../inc/admin/ui/notices.php:90 ..
849
- #: inc/admin/ui/notices.php:181 ../inc/admin/ui/notices.php:181 ..
850
- #: inc/admin/ui/notices.php:217 ../inc/admin/ui/notices.php:217 ..
851
- #: inc/admin/ui/notices.php:256 ../inc/admin/ui/notices.php:256
852
- msgid "Dismiss this notice"
853
- msgstr "Diese Meldung verwerfen"
854
-
855
- #: ../inc/admin/ui/notices.php:32
856
- msgid "Create an Account"
857
- msgstr "Konto anlegen"
858
-
859
- #: ../inc/admin/ui/notices.php:33
860
- msgid ""
861
- "Don't have an Imagify account yet? Optimize your images by creating an "
862
- "account in a few seconds!"
863
- msgstr ""
864
- "Registrieren Sie Ihr Konto bei Imagify (kostenfrei, dauert nur ein paar "
865
- "Sekunden), um anschließend Ihre Bilder in WordPress zu optimieren."
866
-
867
- #: ../inc/admin/ui/notices.php:36
868
- msgid "Sign up, It's FREE!"
869
- msgstr "Mein Konto kostenfrei anlegen"
870
-
871
- #: ../inc/admin/ui/notices.php:42
872
- msgid "Enter your API Key"
873
- msgstr "API-Schlüssel eingeben"
874
-
875
- #: ../inc/admin/ui/notices.php:43
876
- #, php-format
877
- msgid ""
878
- "Save your API Key you have received by email or you can get it on your "
879
- "%sImagify account page%s."
880
- msgstr ""
881
- "Aktivieren Sie Imagify mit Ihrem persönlichen API-Schlüssel, den Sie per E-"
882
- "Mail erhalten haben. Sie können ihn auch jederzeit in Ihren "
883
- "%sKontoeinstellungen%s abrufen."
884
-
885
- #: ../inc/admin/ui/notices.php:46
886
- msgid "I have my API key"
887
- msgstr "Meinen API-Schlüssel eingeben"
888
-
889
- #: ../inc/admin/ui/notices.php:52
890
- msgid "Configure it"
891
- msgstr "Einstellungen wählen"
892
-
893
- #: ../inc/admin/ui/notices.php:53
894
- msgid "It’s almost done! You have just to configure your optimization settings."
895
- msgstr ""
896
- "Fast fertig! Wählen Sie nun Ihre Einstellungen für Imagify. Anschließend "
897
- "können Sie alle Ihre Bilder von Imagify automatisch optimieren lassen."
898
-
899
- #: ../inc/admin/ui/notices.php:54
900
- msgid "Go to Settings"
901
- msgstr "Meine Einstellungen wählen"
902
-
903
- #: ../inc/admin/ui/options.php:407 ../inc/admin/ui/options.php:417 ..
904
- #: inc/admin/ui/options.php:437 ../inc/admin/ui/options.php:458 ..
905
- #: inc/functions/admin-ui.php:58
906
- msgid "Level:"
907
- msgstr "Modus:"
908
-
909
- #: ../inc/functions/admin-ui.php:35
910
- msgid "New Filesize:"
911
- msgstr "Neue Dateigröße:"
912
-
913
- #: ../inc/functions/admin-ui.php:51
914
- msgid "Close details"
915
- msgstr "Details schließen"
916
-
917
- #: ../inc/functions/admin-ui.php:51 ../inc/functions/admin-ui.php:51
918
- msgid "View details"
919
- msgstr "Details anzeigen"
920
-
921
- #: ../inc/functions/admin-ui.php:55
922
- msgid "Original Filesize:"
923
- msgstr "Originale Dateigröße:"
924
-
925
- #: ../inc/functions/admin-ui.php:61
926
- msgid "Thumbnails Optimized:"
927
- msgstr "Optimierte Vorschaubilder:"
928
-
929
- #: ../inc/functions/admin-ui.php:62
930
- msgid "Overall Saving:"
931
- msgstr "Gesamte Ersparnis:"
932
-
933
- #: ../inc/functions/admin-ui.php:99
934
- msgid "Try again"
935
- msgstr "Erneut versuchen"
936
-
937
- #: ../inc/functions/admin-ui.php:127 ../inc/functions/admin-ui.php:133 ..
938
- #: inc/functions/admin-ui.php:139
939
- #, php-format
940
- msgid "Re-Optimize to %s"
941
- msgstr "Erneut optimieren als %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Imagify\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2016-04-19 16:42+0200\n"
6
+ "PO-Revision-Date: 2016-04-19 16:43+0200\n"
7
+ "Last-Translator: caspar <caspar@wp-rocket.me>\n"
8
+ "Language-Team: \n"
9
+ "Language: de\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
+ "X-Generator: Poedit 1.8.6\n"
22
+ "X-Loco-Target-Locale: de_DE\n"
23
+ "X-Poedit-SearchPath-0: ..\n"
24
+
25
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:20
26
+ #: ../inc/admin/ajax.php:123 ../inc/admin/meta-boxes.php:34
27
+ #: ../inc/functions/admin-ui.php:212 ../inc/functions/i18n.php:46
28
+ #: ../inc/functions/i18n.php:61
29
+ msgid "Optimize"
30
+ msgstr "Optimieren"
31
+
32
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:21
33
+ #: ../inc/functions/admin-ui.php:80 ../inc/functions/i18n.php:47
34
+ msgid "Restore Original"
35
+ msgstr "Original wiederherstellen"
36
+
37
+ #: ../inc/3rd-party/nextgen-gallery/inc/admin/menu.php:16
38
+ #: ../inc/admin/menu.php:24 ../inc/admin/plugins.php:13
39
+ #: ../inc/admin/ui/bulk.php:81 ../inc/common/admin-bar.php:39
40
+ msgid "Bulk Optimization"
41
+ msgstr "Stapelverarbeitung"
42
+
43
+ #: ../inc/admin/ajax.php:123 ../inc/admin/meta-boxes.php:29
44
+ #: ../inc/functions/admin-ui.php:121 ../inc/functions/admin-ui.php:153
45
+ #: ../inc/functions/admin-ui.php:159 ../inc/functions/admin-ui.php:165
46
+ #: ../inc/functions/admin-ui.php:202 ../inc/functions/admin-ui.php:212
47
+ msgid "Optimizing..."
48
+ msgstr "Wird&#160;optimiert&#160;…"
49
+
50
+ #: ../inc/admin/ajax.php:503
51
+ msgid "Oops, It's almost over!"
52
+ msgstr "Hoppla, es wird langsam eng."
53
+
54
+ #: ../inc/admin/ajax.php:504
55
+ #, php-format
56
+ msgid ""
57
+ "You have almost used all your credit.%sDon't forget to upgrade your "
58
+ "subscription to continue optimizing your images."
59
+ msgstr ""
60
+ "In Kürze werden Sie Ihr Guthaben verbraucht haben.%sAktualisieren Sie Ihr "
61
+ "Abo, um Ihre Bilder auch in Zukunft zu optimieren."
62
+
63
+ #: ../inc/admin/ajax.php:505 ../inc/admin/ui/bulk.php:23
64
+ msgid "View My Subscription"
65
+ msgstr "Mein Abo ansehen"
66
+
67
+ #: ../inc/admin/ajax.php:513 ../inc/admin/ui/notices.php:251
68
+ #: ../inc/functions/i18n.php:80
69
+ msgid "Oops, It's Over!"
70
+ msgstr "Alles hat ein Ende…"
71
+
72
+ #: ../inc/admin/ajax.php:514 ../inc/admin/ui/notices.php:253
73
+ #: ../inc/functions/i18n.php:97
74
+ #, php-format
75
+ msgid ""
76
+ "You have consumed all your credit for this month. You will have <strong>%s "
77
+ "back on %s</strong>."
78
+ msgstr ""
79
+ "Sie haben Ihr Guthaben für diesen Monat aufgebraucht. <strong>%s</strong> "
80
+ "werden Ihnen am <strong>%s</strong> wieder zur Verfügung stehen."
81
+
82
+ #: ../inc/admin/ajax.php:515
83
+ msgid "Upgrade My Subscription"
84
+ msgstr "Mein Abo aktualisieren"
85
+
86
+ #: ../inc/admin/ajax.php:534 ../inc/admin/ui/bulk.php:17
87
+ msgid "Account status"
88
+ msgstr "Kontostatus"
89
+
90
+ #: ../inc/admin/ajax.php:535 ../inc/admin/ui/bulk.php:18
91
+ msgid "Your subscription:"
92
+ msgstr "Ihr Abo:"
93
+
94
+ #: ../inc/admin/ajax.php:543 ../inc/admin/ui/bulk.php:48
95
+ #, php-format
96
+ msgid "You have %s space credit left"
97
+ msgstr "Sie haben noch %s Guthaben"
98
+
99
+ #: ../inc/admin/ajax.php:555
100
+ msgid "View my subscription"
101
+ msgstr "Mein Abo ansehen"
102
+
103
+ #: ../inc/admin/media.php:63 ../inc/functions/i18n.php:57
104
+ msgid "Compare Original VS Optimized"
105
+ msgstr "Vergleiche Original mit optimiert"
106
+
107
+ #: ../inc/admin/meta-boxes.php:17 ../inc/admin/meta-boxes.php:24
108
+ #: ../inc/admin/upload.php:12
109
+ msgid "Imagify"
110
+ msgstr ""
111
+
112
+ #: ../inc/admin/meta-boxes.php:19 ../inc/functions/admin-ui.php:195
113
+ msgid "Invalid API key"
114
+ msgstr "Ungültiger API-Schlüssel"
115
+
116
+ #: ../inc/admin/meta-boxes.php:21 ../inc/functions/admin-ui.php:197
117
+ msgid "Check your Settings"
118
+ msgstr "Überprüfen Sie Ihre Einstellungen"
119
+
120
+ #: ../inc/admin/options.php:120
121
+ msgid "Cheatin&#8217; uh?"
122
+ msgstr "Ts, ts, ts&#160;…"
123
+
124
+ #: ../inc/admin/options.php:128
125
+ msgid "<strong>ERROR</strong>: options page not found."
126
+ msgstr "<strong>Fehler</strong>: Einstellungsseite nicht gefunden."
127
+
128
+ #: ../inc/admin/plugins.php:14 ../inc/admin/ui/options.php:74
129
+ #: ../inc/common/admin-bar.php:30
130
+ msgid "Settings"
131
+ msgstr "Einstellungen"
132
+
133
+ #: ../inc/admin/ui/bulk.php:60
134
+ msgid "Upgrade your account to continue optimizing your images"
135
+ msgstr "Aktualisiere dein Konto, um deine Bilder weiterhin zu optimieren"
136
+
137
+ #: ../inc/admin/ui/bulk.php:64
138
+ msgid "More info"
139
+ msgstr "Weitere Informationen"
140
+
141
+ #: ../inc/admin/ui/bulk.php:91
142
+ msgid "Overview"
143
+ msgstr "Übersicht"
144
+
145
+ #: ../inc/admin/ui/bulk.php:99
146
+ #, php-format
147
+ msgid "You optimized %s images of your website"
148
+ msgstr "Sie haben %s Bilder Ihrer Website optimiert"
149
+
150
+ #: ../inc/admin/ui/bulk.php:103
151
+ msgid "Statistics"
152
+ msgstr "Statistik"
153
+
154
+ #: ../inc/admin/ui/bulk.php:115
155
+ msgid "that's the number of images you optimized with Imagify"
156
+ msgstr "Bilder mit Imagify optimiert"
157
+
158
+ #: ../inc/admin/ui/bulk.php:120
159
+ msgid "Original size"
160
+ msgstr "Originalgröße"
161
+
162
+ #: ../inc/admin/ui/bulk.php:125
163
+ msgid "Optimized size"
164
+ msgstr "Optimierte Größe"
165
+
166
+ #: ../inc/admin/ui/bulk.php:136
167
+ #, php-format
168
+ msgid "that's the size you saved %sby using Imagify"
169
+ msgstr "geringere Dateigröße dank Imagify"
170
+
171
+ #: ../inc/admin/ui/bulk.php:142
172
+ msgid "Information"
173
+ msgstr "Informationen"
174
+
175
+ #: ../inc/admin/ui/bulk.php:146
176
+ msgid ""
177
+ "Please be aware that optimizing a large number of images can take a while "
178
+ "depending on your server and network speed."
179
+ msgstr ""
180
+ "Bitte beachten: Das Optimieren einer hohen Anzahl Bilder kann eine Weile "
181
+ "dauern, abhängig von Ihrem Server und der Netzwerkgeschwindigkeit."
182
+
183
+ #: ../inc/admin/ui/bulk.php:149
184
+ #, php-format
185
+ msgid ""
186
+ "If you have more than %s images, you will need to launch the bulk "
187
+ "optimization several times."
188
+ msgstr ""
189
+
190
+ #: ../inc/admin/ui/bulk.php:153
191
+ msgid ""
192
+ "You must keep this page open while the bulk optimizaton is processing. If "
193
+ "you leave you can come back to continue where it left off."
194
+ msgstr ""
195
+ "Sie müssen diese Seite während der Stapelverarbeitung geöffnet lassen. Falls "
196
+ "Sie sie doch schließen, wird die Stapelverarbeitung unterbrochen und später "
197
+ "fortgesetzt, sobald Sie diese Seite erneut aufrufen."
198
+
199
+ #: ../inc/admin/ui/bulk.php:164
200
+ msgid "Select Your Compression Level"
201
+ msgstr "Wählen Sie Ihre Komprimierungsstufen"
202
+
203
+ #: ../inc/admin/ui/bulk.php:166 ../inc/admin/ui/bulk.php:192
204
+ #: ../inc/admin/ui/options.php:136 ../inc/admin/ui/options.php:365
205
+ #: ../inc/admin/ui/options.php:404 ../inc/admin/ui/options.php:421
206
+ #: ../inc/admin/ui/options.php:481
207
+ #: ../inc/classes/abstracts/abstract-attachment.php:114
208
+ #: ../inc/functions/admin-ui.php:153
209
+ msgid "Ultra"
210
+ msgstr "Ultra"
211
+
212
+ #: ../inc/admin/ui/bulk.php:169 ../inc/admin/ui/bulk.php:187
213
+ #: ../inc/admin/ui/options.php:131 ../inc/admin/ui/options.php:352
214
+ #: ../inc/admin/ui/options.php:403 ../inc/admin/ui/options.php:416
215
+ #: ../inc/admin/ui/options.php:460
216
+ #: ../inc/classes/abstracts/abstract-attachment.php:117
217
+ #: ../inc/functions/admin-ui.php:159
218
+ msgid "Aggressive"
219
+ msgstr "Aggressiv"
220
+
221
+ #: ../inc/admin/ui/bulk.php:172 ../inc/admin/ui/bulk.php:182
222
+ #: ../inc/admin/ui/options.php:126 ../inc/admin/ui/options.php:339
223
+ #: ../inc/admin/ui/options.php:402 ../inc/admin/ui/options.php:411
224
+ #: ../inc/admin/ui/options.php:440
225
+ #: ../inc/classes/abstracts/abstract-attachment.php:120
226
+ #: ../inc/functions/admin-ui.php:165
227
+ msgid "Normal"
228
+ msgstr "Normal"
229
+
230
+ #: ../inc/admin/ui/bulk.php:176
231
+ #, php-format
232
+ msgid "Your default setting: %s"
233
+ msgstr "Ihre Standardeinstellung: %s"
234
+
235
+ #: ../inc/admin/ui/bulk.php:201
236
+ #, php-format
237
+ msgid "Don't forget to check %syour settings%s before bulk optimization."
238
+ msgstr "Überprüfen Sie Ihre %sEinstellungen%s vor der Stapelverarbeitung."
239
+
240
+ #: ../inc/admin/ui/bulk.php:208
241
+ msgid "Let's go!"
242
+ msgstr "Los geht’s!"
243
+
244
+ #: ../inc/admin/ui/bulk.php:215
245
+ msgid "Imagif'em all"
246
+ msgstr "Alle Bilder optimieren"
247
+
248
+ #: ../inc/admin/ui/bulk.php:220
249
+ #, php-format
250
+ msgid ""
251
+ "All images greater than %s will be optimized when using a paying monthly "
252
+ "plan."
253
+ msgstr ""
254
+ "Alle Bilder, die größer sind als %s, werden optimiert, wenn Sie ein "
255
+ "monatliches Abo nutzen."
256
+
257
+ #: ../inc/admin/ui/bulk.php:239
258
+ msgid "Well done!"
259
+ msgstr "Bravo!"
260
+
261
+ #: ../inc/admin/ui/bulk.php:240
262
+ #, php-format
263
+ msgid "you saved %1$s out of %2$s"
264
+ msgstr "Sie haben %1$s von %2$s gespart"
265
+
266
+ #: ../inc/admin/ui/bulk.php:245
267
+ msgid "Share your awesome result"
268
+ msgstr "Teilen Sie Ihr hervorragendes Ergebnis"
269
+
270
+ #: ../inc/admin/ui/bulk.php:260
271
+ msgid "Compression process results"
272
+ msgstr "Ergebnisse der Komprimierung"
273
+
274
+ #: ../inc/admin/ui/bulk.php:263
275
+ msgid "Filename"
276
+ msgstr "Dateiname"
277
+
278
+ #: ../inc/admin/ui/bulk.php:264
279
+ msgid "Status"
280
+ msgstr "Status"
281
+
282
+ #: ../inc/admin/ui/bulk.php:265 ../inc/admin/ui/options.php:401
283
+ #: ../inc/admin/ui/options.php:406 ../inc/admin/ui/options.php:430
284
+ msgid "Original"
285
+ msgstr "Original"
286
+
287
+ #: ../inc/admin/ui/bulk.php:266 ../inc/admin/upload.php:41
288
+ #: ../inc/functions/i18n.php:76
289
+ msgid "Optimized"
290
+ msgstr "Optimiert"
291
+
292
+ #: ../inc/admin/ui/bulk.php:267
293
+ msgid "Percentage"
294
+ msgstr "Prozent"
295
+
296
+ #: ../inc/admin/ui/bulk.php:268
297
+ msgid "Thumbnails optimized"
298
+ msgstr "Vorschaubilder optimiert"
299
+
300
+ #: ../inc/admin/ui/bulk.php:269
301
+ msgid "Overall saving"
302
+ msgstr "Gesamte Ersparnis"
303
+
304
+ #: ../inc/admin/ui/bulk.php:274
305
+ msgid "file"
306
+ msgstr "Datei"
307
+
308
+ #: ../inc/admin/ui/bulk.php:275
309
+ msgid "error"
310
+ msgstr "Fehler"
311
+
312
+ #: ../inc/admin/ui/bulk.php:276
313
+ msgid "Total:"
314
+ msgstr "Gesamt:"
315
+
316
+ #: ../inc/admin/ui/bulk.php:277
317
+ msgid "Gain:"
318
+ msgstr "Gewinn:"
319
+
320
+ #: ../inc/admin/ui/bulk.php:294
321
+ #, php-format
322
+ msgid "%sStart the bulk optimization%s"
323
+ msgstr "%sStapelverarbeitung starten%s"
324
+
325
+ #: ../inc/admin/ui/notices.php:23
326
+ msgid "Welcome to Imagify, the best way to easily optimize your images!"
327
+ msgstr "Willkommen bei Imagify, der smarten Bildoptimierung!"
328
+
329
+ #: ../inc/admin/ui/notices.php:25 ../inc/admin/ui/notices.php:90
330
+ #: ../inc/admin/ui/notices.php:181 ../inc/admin/ui/notices.php:217
331
+ #: ../inc/admin/ui/notices.php:256 ../inc/admin/ui/notices.php:361
332
+ msgid "Dismiss this notice"
333
+ msgstr "Diese Meldung verwerfen"
334
+
335
+ #: ../inc/admin/ui/notices.php:32
336
+ msgid "Create an Account"
337
+ msgstr "Konto anlegen"
338
+
339
+ #: ../inc/admin/ui/notices.php:33
340
+ msgid ""
341
+ "Don't have an Imagify account yet? Optimize your images by creating an "
342
+ "account in a few seconds!"
343
+ msgstr ""
344
+ "Registrieren Sie Ihr Konto bei Imagify (kostenfrei, dauert nur ein paar "
345
+ "Sekunden), um anschließend Ihre Bilder in WordPress zu optimieren."
346
+
347
+ #: ../inc/admin/ui/notices.php:36
348
+ msgid "Sign up, It's FREE!"
349
+ msgstr "Mein Konto kostenfrei anlegen"
350
+
351
+ #: ../inc/admin/ui/notices.php:42
352
+ msgid "Enter your API Key"
353
+ msgstr "API-Schlüssel eingeben"
354
+
355
+ #: ../inc/admin/ui/notices.php:43
356
+ #, php-format
357
+ msgid ""
358
+ "Save your API Key you have received by email or you can get it on your "
359
+ "%sImagify account page%s."
360
+ msgstr ""
361
+ "Aktivieren Sie Imagify mit Ihrem persönlichen API-Schlüssel, den Sie per E-"
362
+ "Mail erhalten haben. Sie können ihn auch jederzeit in Ihren "
363
+ "%sKontoeinstellungen%s abrufen."
364
+
365
+ #: ../inc/admin/ui/notices.php:46
366
+ msgid "I have my API key"
367
+ msgstr "Meinen API-Schlüssel eingeben"
368
+
369
+ #: ../inc/admin/ui/notices.php:52
370
+ msgid "Configure it"
371
+ msgstr "Einstellungen wählen"
372
+
373
+ #: ../inc/admin/ui/notices.php:53
374
+ msgid ""
375
+ "It’s almost done! You have just to configure your optimization settings."
376
+ msgstr ""
377
+ "Fast fertig! Wählen Sie nun Ihre Einstellungen für Imagify. Anschließend "
378
+ "können Sie alle Ihre Bilder von Imagify automatisch optimieren lassen."
379
+
380
+ #: ../inc/admin/ui/notices.php:54
381
+ msgid "Go to Settings"
382
+ msgstr "Meine Einstellungen wählen"
383
+
384
+ #: ../inc/admin/ui/notices.php:85 ../inc/admin/ui/options.php:97
385
+ msgid "Your API key isn't valid!"
386
+ msgstr "Ihr API-Schlüssel ist ungültig."
387
+
388
+ #: ../inc/admin/ui/notices.php:88
389
+ #, php-format
390
+ msgid ""
391
+ "Go to your Imagify account page to get your API Key and specify it on "
392
+ "%1$syour settings%3$s or %2$screate an account for free%3$s if you don't "
393
+ "have one yet."
394
+ msgstr ""
395
+ "Sie finden Ihren API-Schlüssel in Ihrem Imagify-Konto. Sobald Sie ihn dort "
396
+ "geholt haben, %1$shinterlegen Sie ihn in Ihren Einstellungen%3$s. Oder "
397
+ "%2$slegen Sie kostenfrei ein Konto an%3$s, um einen API-Schlüssel zu "
398
+ "erhalten."
399
+
400
+ #: ../inc/admin/ui/notices.php:138
401
+ msgid ""
402
+ "The following plugins are not compatible with this plugin and may cause "
403
+ "unexpected results:"
404
+ msgstr ""
405
+ "Die folgenden Plugins sind nicht kompatibel mit diesem Plugin und können "
406
+ "unerwartete Ergebnisse verursachen:"
407
+
408
+ #: ../inc/admin/ui/notices.php:144
409
+ msgid "Deactivate"
410
+ msgstr "Deaktivieren"
411
+
412
+ #: ../inc/admin/ui/notices.php:173
413
+ msgid "The external HTTP requests are blocked!"
414
+ msgstr "Externe HTTP-Anfragen werden blockiert."
415
+
416
+ #: ../inc/admin/ui/notices.php:174
417
+ msgid ""
418
+ "You defined the <code>WP_HTTP_BLOCK_EXTERNAL</code> constant in the <code>wp-"
419
+ "config.php</code> to block all external HTTP requests."
420
+ msgstr ""
421
+ "Alle externen HTTP-Anfragen werden blockiert, weil in der Datei <em>wp-"
422
+ "config.php</em> die PHP-Konstante <code>WP_HTTP_BLOCK_EXTERNAL</code> "
423
+ "gesetzt ist.\n"
424
+
425
+ #: ../inc/admin/ui/notices.php:176
426
+ msgid ""
427
+ "To optimize your images, you have to put the following code in your <code>wp-"
428
+ "config.php</code> file so that it works correctly."
429
+ msgstr ""
430
+ "Um Ihre Bilder optimieren zu können, fügen Sie den folgenden Code zu Ihrer "
431
+ "<em>wp-config.php</em> hinzu."
432
+
433
+ #: ../inc/admin/ui/notices.php:177
434
+ msgid "Click on the field and press Ctrl-A to select all."
435
+ msgstr ""
436
+ "Klicken Sie auf das Feld und drücken Sie ctrl+A (cmd+A) für Alles auswählen."
437
+
438
+ #: ../inc/admin/ui/notices.php:213
439
+ msgid "You're missing out!"
440
+ msgstr "Sie verpassen etwas!"
441
+
442
+ #: ../inc/admin/ui/notices.php:214
443
+ msgid "Use the List view to optimize images with Imagify."
444
+ msgstr "In der Listenansicht können Sie Ihre Bilder direkt zu optimieren."
445
+
446
+ #: ../inc/admin/ui/notices.php:215
447
+ msgid "Switch to the List View"
448
+ msgstr "Zur Listenansicht wechseln"
449
+
450
+ #: ../inc/admin/ui/notices.php:253 ../inc/functions/i18n.php:94
451
+ #: ../inc/functions/i18n.php:97
452
+ #, php-format
453
+ msgid ""
454
+ "To continue to optimize your images, log in to your Imagify account to %sbuy "
455
+ "a pack or subscribe to a plan%s."
456
+ msgstr ""
457
+ "Um Ihre Bilder auch in Zukunft zu optimieren, loggen Sie sich bei Imagify.io "
458
+ "ein und %skaufen Sie ein einmaliges Guthaben oder ein Abo%s."
459
+
460
+ #: ../inc/admin/ui/notices.php:306 ../inc/admin/ui/options.php:28
461
+ msgid "Discover the best caching plugin to speed up your website."
462
+ msgstr ""
463
+ "Entdecken Sie das beste Caching-Plugin, um Ihre Website schneller zu machen."
464
+
465
+ #: ../inc/admin/ui/notices.php:309 ../inc/admin/ui/options.php:36
466
+ #, php-format
467
+ msgid "%sGet %s off%s with this coupon code:%s"
468
+ msgstr "%sErhalten Sie %s Rabatt%s mit diesem Gutschein-Code:%s"
469
+
470
+ #: ../inc/admin/ui/notices.php:318 ../inc/admin/ui/options.php:41
471
+ msgid "Get WP Rocket now"
472
+ msgstr "Holen Sie sich WP Rocket jetzt"
473
+
474
+ #: ../inc/admin/ui/notices.php:354
475
+ #, php-format
476
+ msgid ""
477
+ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and improved "
478
+ "your website's speed by reducing your images size."
479
+ msgstr ""
480
+
481
+ #: ../inc/admin/ui/notices.php:356 ../inc/admin/ui/options.php:59
482
+ #, php-format
483
+ msgid ""
484
+ "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
485
+ "WordPress.org%s!"
486
+ msgstr ""
487
+ "%sSind Sie zufrieden mit diesem Plugin?%s Bitte nehmen Sie sich einen Moment "
488
+ "Zeit für eine %sBewertung auf WordPress.org%s!"
489
+
490
+ #: ../inc/admin/ui/options.php:22
491
+ msgid "Is your website too slow?"
492
+ msgstr "Ist Ihre Website zu langsam?"
493
+
494
+ #: ../inc/admin/ui/options.php:84
495
+ msgid "API Key"
496
+ msgstr "API-Schlüssel"
497
+
498
+ #: ../inc/admin/ui/options.php:91 ../inc/functions/i18n.php:31
499
+ msgid "Your API key is valid."
500
+ msgstr "Ihr API-Schlüssel ist gültig."
501
+
502
+ #: ../inc/admin/ui/options.php:104
503
+ #, php-format
504
+ msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
505
+ msgstr "Noch keinen API-Schlüssel erhalten? %sJetzt kostenfrei Konto anlegen%s"
506
+
507
+ #: ../inc/admin/ui/options.php:121
508
+ msgid "Optimization Level"
509
+ msgstr "Optimierungsgrad"
510
+
511
+ #: ../inc/admin/ui/options.php:141
512
+ msgid "More info?"
513
+ msgstr "Was ist das?"
514
+
515
+ #: ../inc/admin/ui/options.php:148
516
+ #, php-format
517
+ msgid "Need help to choose? %sTry the Visual Comparison%s"
518
+ msgstr "Nicht sicher? %sVisuellen Vergleich ausprobieren%s"
519
+
520
+ #: ../inc/admin/ui/options.php:157 ../inc/admin/ui/options.php:161
521
+ msgid "Auto-Optimize images on upload"
522
+ msgstr "Bilder beim Hochladen automatisch optimieren"
523
+
524
+ #: ../inc/admin/ui/options.php:165
525
+ msgid "Automatically optimize every image you upload to WordPress."
526
+ msgstr ""
527
+ "Lassen Sie jedes Bild automatisch optimieren, das Sie in WordPress hochladen."
528
+
529
+ #: ../inc/admin/ui/options.php:170 ../inc/admin/ui/options.php:173
530
+ msgid "Backup original images"
531
+ msgstr "Originalbilder sichern"
532
+
533
+ #: ../inc/admin/ui/options.php:177
534
+ msgid ""
535
+ "Keep your original images in a separate folder before optimization process."
536
+ msgstr ""
537
+ "Speichern Sie Sicherungskopien Ihrer Originalbilder in einem separaten "
538
+ "Ordner, bevor die Optimierung beginnt."
539
+
540
+ #: ../inc/admin/ui/options.php:182 ../inc/admin/ui/options.php:185
541
+ msgid "Resize larger images"
542
+ msgstr "Große Bilder verkleinern"
543
+
544
+ #: ../inc/admin/ui/options.php:191
545
+ #, php-format
546
+ msgid "to maximum %s pixels width"
547
+ msgstr "auf maximal %s Pixel Breite"
548
+
549
+ #: ../inc/admin/ui/options.php:202
550
+ #, php-format
551
+ msgid ""
552
+ "This option is recommended to reduce larger images. You can save up to 80%% "
553
+ "after resizing. The new width should not be less than your largest thumbnail "
554
+ "width, which is actually %spx."
555
+ msgstr ""
556
+ "Diese Option ist empfehlenswert, um das Speichervolumen für größere Bilder "
557
+ "zu reduzieren. Sie könne so bis zu 80%% Speicherplatz sparen. Die neue "
558
+ "Breite sollte nicht geringer als Ihre größte Vorschaubildbreite sein, die "
559
+ "übrigens %s Pixel beträgt."
560
+
561
+ #: ../inc/admin/ui/options.php:209 ../inc/admin/ui/options.php:212
562
+ msgid "EXIF Data"
563
+ msgstr "EXIF-Daten"
564
+
565
+ #: ../inc/admin/ui/options.php:216
566
+ msgid ""
567
+ "Keep all EXIF data from your images. EXIF are informations stored in your "
568
+ "pictures like shutter speed, exposure compensation, ISO, etc..."
569
+ msgstr ""
570
+ "Behalten Sie alle EXIF-Daten Ihrer Bilder. In den EXIF-Daten werden "
571
+ "Informationen wie Verschlusszeit, Belichtungskorrektur, ISO-Wert usw. "
572
+ "gespeichert."
573
+
574
+ #: ../inc/admin/ui/options.php:217
575
+ msgid "Learn more"
576
+ msgstr "Weitere Informationen"
577
+
578
+ #: ../inc/admin/ui/options.php:219
579
+ msgid ""
580
+ "If you are a photographer, you may be interested in this option if you are "
581
+ "displaying on your pages some info like the model of your camera."
582
+ msgstr ""
583
+ "Aktiviere diese Option, wenn Sie auf Ihrer Site fototechnische "
584
+ "Informationen, wie z.B. das Model Ihrer Kamera, anzeigen möchtest."
585
+
586
+ #: ../inc/admin/ui/options.php:228
587
+ msgid "Files optimization"
588
+ msgstr "Dateioptimierung"
589
+
590
+ #: ../inc/admin/ui/options.php:231
591
+ msgid ""
592
+ "You can choose to compress different image sizes created by WordPress here."
593
+ msgstr ""
594
+ "Hier können Sie die Komprimierung für die verschiedenen Bildgrößen "
595
+ "kontrollieren, die Ihr WordPress generiert."
596
+
597
+ #: ../inc/admin/ui/options.php:233
598
+ #, php-format
599
+ msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
600
+ msgstr "Die %sOriginalgröße%s wird von Imagify %sautomatisch optimiert%s."
601
+
602
+ #: ../inc/admin/ui/options.php:236
603
+ msgid ""
604
+ "Remember each additional image size will affect your Imagify monthly usage!"
605
+ msgstr ""
606
+ "Bedenken Sie, dass jede ausgewählte Bildgröße Ihr monatliches "
607
+ "Nutzungsvolumen bei Imagify beeinflusst."
608
+
609
+ #: ../inc/admin/ui/options.php:289
610
+ msgid "Display options"
611
+ msgstr "Optionen anzeigen"
612
+
613
+ #: ../inc/admin/ui/options.php:294 ../inc/admin/ui/options.php:299
614
+ msgid "Show Admin Bar menu"
615
+ msgstr "Toolbar-Menü anzeigen"
616
+
617
+ #: ../inc/admin/ui/options.php:300
618
+ msgid "I want this awesome quick access menu on my admin bar."
619
+ msgstr "Ich möchte dieses praktische Dropdown-Menü in meiner Toolbar."
620
+
621
+ #: ../inc/admin/ui/options.php:319
622
+ msgid "Save &amp; Go to Bulk Optimizer"
623
+ msgstr "Speichern und zur Stapelverarbeitung gehen"
624
+
625
+ #: ../inc/admin/ui/options.php:328
626
+ #, php-format
627
+ msgid ""
628
+ "Once your settings saved, optimize all your images by using the %sImagify "
629
+ "Bulk Optimization%s feature."
630
+ msgstr ""
631
+ "Sobald Sie Ihre Einstellungen gespeichert haben, können Sie mit der "
632
+ "%sStapelverarbeitung%s alle Ihre Bilder optimieren."
633
+
634
+ #: ../inc/admin/ui/options.php:336
635
+ msgid "You can choose three levels of compression"
636
+ msgstr "Sie können zwischen drei Komprimierungsstufen wählen."
637
+
638
+ #: ../inc/admin/ui/options.php:341
639
+ msgid ""
640
+ "This mode provides lossless optimization, your images will be optimized "
641
+ "without any visible change."
642
+ msgstr ""
643
+ "Dieser Modus sorgt für verlustfreie Bildoptimierung. Ihre Bilder werden ohne "
644
+ "sichtbare Veränderungen optimiert."
645
+
646
+ #: ../inc/admin/ui/options.php:344
647
+ msgid ""
648
+ "If you want the perfect quality for your images, we recommend you that mode."
649
+ msgstr ""
650
+ "Wählen Sie diese Einstellung, wenn Ihnen die perfekte Qualität Ihrer Bilder "
651
+ "wichtig ist."
652
+
653
+ #: ../inc/admin/ui/options.php:347
654
+ msgid ""
655
+ "Note: the file size reduction will be less, compared to aggressive mode."
656
+ msgstr ""
657
+ "Hinweis: Die Verringerung der Dateigröße fällt hier geringer aus, als im "
658
+ "aggressiven Modus."
659
+
660
+ #: ../inc/admin/ui/options.php:354
661
+ msgid ""
662
+ "This mode provides perfect optimization of your images without any "
663
+ "significant quality loss."
664
+ msgstr ""
665
+ "Dieser Modus liefert hervorragende Optimierung ohne signifikante "
666
+ "Qualitätsverluste."
667
+
668
+ #: ../inc/admin/ui/options.php:357
669
+ msgid ""
670
+ "This will provide a drastic savings on the initial weight, with a small "
671
+ "reduction in image quality. Most of the time it's not even noticeable."
672
+ msgstr ""
673
+ "Die drastische Verringerung der Dateigröße geht mit geringfügigen, meist "
674
+ "kaum wahrnehmbaren Einbußen in der Qualität einher."
675
+
676
+ #: ../inc/admin/ui/options.php:360
677
+ msgid "If you want the maximum weight reduction, we recommend using this mode."
678
+ msgstr ""
679
+ "Wählen Sie diese Einstellung, wenn Sie auf maximale Größenreduktion Wert "
680
+ "legen."
681
+
682
+ #: ../inc/admin/ui/options.php:367
683
+ msgid ""
684
+ "This mode will apply all available optimizations for maximum image "
685
+ "compression."
686
+ msgstr ""
687
+ "Dieser Modus wendet alle verfügbaren Parameter für maximale Komprimierung an."
688
+
689
+ #: ../inc/admin/ui/options.php:370
690
+ msgid ""
691
+ "This will provide a huge savings on the initial weight. Sometimes the image "
692
+ "quality could be degraded a little."
693
+ msgstr ""
694
+ "Die Bildgröße wird erheblich verringert. In einigen Fällen kann es jedoch zu "
695
+ "Verlusten bei der Qualität kommen."
696
+
697
+ #: ../inc/admin/ui/options.php:373
698
+ msgid ""
699
+ "If you want the maximum weight reduction, and you agree to lose some quality "
700
+ "on the images we recommend using this mode."
701
+ msgstr ""
702
+ "Wählen Sie diese Einstellung, wenn Sie bereit sind, etwas Qualität zugunsten "
703
+ "maximaler Reduktion der Dateigröße zu riskieren."
704
+
705
+ #: ../inc/admin/ui/options.php:380 ../inc/admin/ui/options.php:502
706
+ #: ../inc/functions/admin-ui.php:659 ../inc/functions/i18n.php:58
707
+ msgid "Close"
708
+ msgstr "Schließen"
709
+
710
+ #: ../inc/admin/ui/options.php:392
711
+ #, php-format
712
+ msgid "I want to compare%s and%s"
713
+ msgstr "Ich möchte %s und %s vergleichen."
714
+
715
+ #: ../inc/admin/ui/options.php:409
716
+ #, php-format
717
+ msgid "Original photography about %s"
718
+ msgstr "Originalbild ca. %s"
719
+
720
+ #: ../inc/admin/ui/options.php:414 ../inc/admin/ui/options.php:419
721
+ #: ../inc/admin/ui/options.php:424
722
+ #, php-format
723
+ msgid "Optimized photography about %s"
724
+ msgstr "Optimiertes Bild ca. %s"
725
+
726
+ #: ../inc/admin/ui/options.php:429 ../inc/admin/ui/options.php:439
727
+ #: ../inc/admin/ui/options.php:459 ../inc/admin/ui/options.php:480
728
+ #: ../inc/functions/admin-ui.php:59
729
+ msgid "Level:"
730
+ msgstr "Modus:"
731
+
732
+ #: ../inc/admin/ui/options.php:433 ../inc/admin/ui/options.php:443
733
+ #: ../inc/admin/ui/options.php:463 ../inc/admin/ui/options.php:484
734
+ #: ../inc/functions/i18n.php:59
735
+ msgid "File Size:"
736
+ msgstr "Dateigröße:"
737
+
738
+ #: ../inc/admin/ui/options.php:447 ../inc/admin/ui/options.php:467
739
+ #: ../inc/admin/ui/options.php:488 ../inc/functions/admin-ui.php:45
740
+ #: ../inc/functions/i18n.php:60
741
+ msgid "Original Saving:"
742
+ msgstr "Optimiert um:"
743
+
744
+ #: ../inc/admin/upload.php:42 ../inc/functions/i18n.php:77
745
+ msgid "Unoptimized"
746
+ msgstr "Nicht Optimiert"
747
+
748
+ #: ../inc/admin/upload.php:43
749
+ msgid "Errors"
750
+ msgstr "Fehler"
751
+
752
+ #: ../inc/admin/upload.php:46
753
+ msgid "Filter by status"
754
+ msgstr "Filtere nach Status"
755
+
756
+ #: ../inc/admin/upload.php:49
757
+ msgid "All images"
758
+ msgstr "Alle Bilder"
759
+
760
+ #: ../inc/classes/class-attachment.php:266
761
+ msgid ""
762
+ "This size isn't authorized to be optimized. Update your Imagify settings if "
763
+ "you want to optimize it."
764
+ msgstr ""
765
+ "Diese Bildgröße ist für die Optimierung nicht zugelassen. Aktualisieren Sie "
766
+ "Ihre Imagify-Einstellungen, wenn Sie sie optimieren möchten."
767
+
768
+ #: ../inc/common/admin-bar.php:48
769
+ #, php-format
770
+ msgid "Rate Imagify on %s"
771
+ msgstr "Bewerten Sie Imagify auf %s"
772
+
773
+ #: ../inc/common/admin-bar.php:61
774
+ msgid "Loading..."
775
+ msgstr "Laden&#160;…"
776
+
777
+ #: ../inc/functions/admin-ui.php:36
778
+ msgid "New Filesize:"
779
+ msgstr "Neue Dateigröße:"
780
+
781
+ #: ../inc/functions/admin-ui.php:52
782
+ msgid "Close details"
783
+ msgstr "Details schließen"
784
+
785
+ #: ../inc/functions/admin-ui.php:52
786
+ msgid "View details"
787
+ msgstr "Details anzeigen"
788
+
789
+ #: ../inc/functions/admin-ui.php:56
790
+ msgid "Original Filesize:"
791
+ msgstr "Originale Dateigröße:"
792
+
793
+ #: ../inc/functions/admin-ui.php:62
794
+ msgid "Thumbnails Optimized:"
795
+ msgstr "Optimierte Vorschaubilder:"
796
+
797
+ #: ../inc/functions/admin-ui.php:63
798
+ msgid "Overall Saving:"
799
+ msgstr "Gesamte Ersparnis:"
800
+
801
+ #: ../inc/functions/admin-ui.php:80
802
+ msgid "Restoring..."
803
+ msgstr "Wiederherstellen&#160;…"
804
+
805
+ #: ../inc/functions/admin-ui.php:121
806
+ msgid "Try again"
807
+ msgstr "Erneut versuchen"
808
+
809
+ #: ../inc/functions/admin-ui.php:153 ../inc/functions/admin-ui.php:159
810
+ #: ../inc/functions/admin-ui.php:165
811
+ #, php-format
812
+ msgid "Re-Optimize to %s"
813
+ msgstr "Erneut optimieren als %s"
814
+
815
+ #: ../inc/functions/admin-ui.php:189
816
+ #, php-format
817
+ msgid "%s can't be optimized"
818
+ msgstr "%s kann nicht optimiert werden."
819
+
820
+ #: ../inc/functions/admin-ui.php:237
821
+ msgid "What plan do I need?"
822
+ msgstr ""
823
+
824
+ #: ../inc/functions/admin-ui.php:241
825
+ msgid "You're new to Imagify?"
826
+ msgstr ""
827
+
828
+ #: ../inc/functions/admin-ui.php:242
829
+ msgid ""
830
+ "Let us help you by analyzing your existing images and determinate the best "
831
+ "plan for you"
832
+ msgstr ""
833
+
834
+ #: ../inc/functions/admin-ui.php:277
835
+ msgid "Choose Plan"
836
+ msgstr ""
837
+
838
+ #: ../inc/functions/admin-ui.php:278
839
+ msgid "Payment Info"
840
+ msgstr ""
841
+
842
+ #: ../inc/functions/admin-ui.php:283
843
+ msgid "We analysed your images"
844
+ msgstr ""
845
+
846
+ #: ../inc/functions/admin-ui.php:289
847
+ #, php-format
848
+ msgid "You have %s images"
849
+ msgstr ""
850
+
851
+ #: ../inc/functions/admin-ui.php:295
852
+ #, php-format
853
+ msgid "You actually have %s of images in your library."
854
+ msgstr ""
855
+
856
+ #: ../inc/functions/admin-ui.php:299
857
+ #, php-format
858
+ msgid "You upload around %s of images per month."
859
+ msgstr ""
860
+
861
+ #: ../inc/functions/admin-ui.php:306
862
+ msgid "We recommend you this plan"
863
+ msgstr ""
864
+
865
+ #: ../inc/functions/admin-ui.php:311
866
+ msgid "Subscribe a monthly plan"
867
+ msgstr ""
868
+
869
+ #: ../inc/functions/admin-ui.php:312
870
+ msgid "Subscribe a yearly plan"
871
+ msgstr ""
872
+
873
+ #: ../inc/functions/admin-ui.php:316 ../inc/functions/admin-ui.php:452
874
+ #: ../inc/functions/admin-ui.php:620
875
+ msgid "Monthly"
876
+ msgstr ""
877
+
878
+ #: ../inc/functions/admin-ui.php:319 ../inc/functions/admin-ui.php:455
879
+ #: ../inc/functions/admin-ui.php:623
880
+ msgid "Yearly"
881
+ msgstr ""
882
+
883
+ #: ../inc/functions/admin-ui.php:319 ../inc/functions/admin-ui.php:455
884
+ #: ../inc/functions/admin-ui.php:623
885
+ msgid "2 months free"
886
+ msgstr ""
887
+
888
+ #: ../inc/functions/admin-ui.php:330 ../inc/functions/admin-ui.php:349
889
+ #: ../inc/functions/admin-ui.php:465 ../inc/functions/admin-ui.php:475
890
+ msgid "/month"
891
+ msgstr ""
892
+
893
+ #: ../inc/functions/admin-ui.php:332 ../inc/functions/admin-ui.php:380
894
+ #: ../inc/functions/admin-ui.php:467 ../inc/functions/admin-ui.php:518
895
+ #, php-format
896
+ msgid "approx: %s images"
897
+ msgstr ""
898
+
899
+ #: ../inc/functions/admin-ui.php:353 ../inc/functions/admin-ui.php:481
900
+ #, php-format
901
+ msgid ""
902
+ "%s per<br>\n"
903
+ "additionnal Gb"
904
+ msgstr ""
905
+
906
+ #: ../inc/functions/admin-ui.php:358 ../inc/functions/admin-ui.php:393
907
+ #: ../inc/functions/admin-ui.php:577 ../inc/functions/admin-ui.php:598
908
+ msgid "Choose another plan"
909
+ msgstr ""
910
+
911
+ #: ../inc/functions/admin-ui.php:368
912
+ msgid "Optimize the images you already have, buy a one-time plan"
913
+ msgstr ""
914
+
915
+ #: ../inc/functions/admin-ui.php:404
916
+ msgid "Checkout"
917
+ msgstr ""
918
+
919
+ #: ../inc/functions/admin-ui.php:408
920
+ msgid ""
921
+ "Monthly plans comes with credits which is renewed every months. The billing "
922
+ "happens automatically each month or year depending the billing period you "
923
+ "choose."
924
+ msgstr ""
925
+
926
+ #: ../inc/functions/admin-ui.php:432
927
+ msgid "Monthly Plans"
928
+ msgstr ""
929
+
930
+ #: ../inc/functions/admin-ui.php:437
931
+ msgid "One Time Plans"
932
+ msgstr ""
933
+
934
+ #: ../inc/functions/admin-ui.php:447
935
+ msgid ""
936
+ "Monthly plans come with credits which is renewed every months. The billing "
937
+ "happens automatically each month or year depending the billing period you "
938
+ "choose."
939
+ msgstr ""
940
+
941
+ #: ../inc/functions/admin-ui.php:479 ../inc/functions/admin-ui.php:526
942
+ msgid "we recommend for you"
943
+ msgstr ""
944
+
945
+ #: ../inc/functions/admin-ui.php:487 ../inc/functions/admin-ui.php:530
946
+ msgid "Choose plan"
947
+ msgstr ""
948
+
949
+ #: ../inc/functions/admin-ui.php:495
950
+ msgid "Need more?"
951
+ msgstr ""
952
+
953
+ #: ../inc/functions/admin-ui.php:496
954
+ msgid "for special needs"
955
+ msgstr ""
956
+
957
+ #: ../inc/functions/admin-ui.php:500
958
+ msgid "Contact Us"
959
+ msgstr ""
960
+
961
+ #: ../inc/functions/admin-ui.php:507
962
+ msgid ""
963
+ "One time plans are useful if you have a lots of existing images which need "
964
+ "to be optimized. You can use it for bulk optimizing all your past images. "
965
+ "You will pay only once."
966
+ msgstr ""
967
+
968
+ #: ../inc/functions/admin-ui.php:560
969
+ msgid "Your order"
970
+ msgstr ""
971
+
972
+ #: ../inc/functions/admin-ui.php:565
973
+ #, php-format
974
+ msgid "%scancel%sYou just removed %s"
975
+ msgstr ""
976
+
977
+ #: ../inc/functions/admin-ui.php:573 ../inc/functions/admin-ui.php:594
978
+ msgid "Remove this item"
979
+ msgstr ""
980
+
981
+ #: ../inc/functions/admin-ui.php:580
982
+ #, php-format
983
+ msgid "%s per month"
984
+ msgstr ""
985
+
986
+ #: ../inc/functions/admin-ui.php:601
987
+ #, php-format
988
+ msgid "one time %s"
989
+ msgstr ""
990
+
991
+ #: ../inc/functions/admin-ui.php:614
992
+ #, php-format
993
+ msgid ""
994
+ "Switch to yearly subscription and <br><strong class=\"imagify-dark\">save %s "
995
+ "per year!</strong>"
996
+ msgstr ""
997
+
998
+ #: ../inc/functions/admin-ui.php:615
999
+ #, php-format
1000
+ msgid ""
1001
+ "Perfect!<br>You're <strong class=\"imagify-dark\">saving %s per year!</"
1002
+ "strong>"
1003
+ msgstr ""
1004
+
1005
+ #: ../inc/functions/admin-ui.php:654
1006
+ msgid "Thank you for being awesome!"
1007
+ msgstr ""
1008
+
1009
+ #: ../inc/functions/admin-ui.php:665
1010
+ msgid "What do our user think about Imagify"
1011
+ msgstr ""
1012
+
1013
+ #: ../inc/functions/admin-ui.php:699
1014
+ msgid "Secure Credit Card Payment"
1015
+ msgstr ""
1016
+
1017
+ #: ../inc/functions/admin-ui.php:700
1018
+ msgid "This is secure 128-bits SSL encrypted payment"
1019
+ msgstr ""
1020
+
1021
+ #: ../inc/functions/i18n.php:19
1022
+ msgid "Let's get you started!"
1023
+ msgstr "Los geht’s!"
1024
+
1025
+ #: ../inc/functions/i18n.php:20
1026
+ msgid "Enter your email to get an API key:"
1027
+ msgstr "Geben Sie Ihre E-Mail-Adresse ein, um einen API-Schlüssel zu erhalten:"
1028
+
1029
+ #: ../inc/functions/i18n.php:21
1030
+ msgid "Sign Up"
1031
+ msgstr "Konto anlegen"
1032
+
1033
+ #: ../inc/functions/i18n.php:22
1034
+ msgid "You need to specify an email!"
1035
+ msgstr "Sie müssen eine E-Mail-Adresse angeben."
1036
+
1037
+ #: ../inc/functions/i18n.php:23 ../inc/functions/i18n.php:29
1038
+ msgid "Congratulations!"
1039
+ msgstr "Glückwunsch!"
1040
+
1041
+ #: ../inc/functions/i18n.php:24
1042
+ msgid ""
1043
+ "Your account has been succesfully created. Please check your mailbox, you "
1044
+ "are going to receive an email with API key."
1045
+ msgstr ""
1046
+ "Ihr Konto ist jetzt angelegt. Überprüfen Sie Ihr E-Mail-Postfach, Sie "
1047
+ "erhalten eine E-Mail mit Ihrem API-Schlüssel."
1048
+
1049
+ #: ../inc/functions/i18n.php:25
1050
+ msgid "Connect to Imagify!"
1051
+ msgstr "Verbindung zu Imagify herstellen"
1052
+
1053
+ #: ../inc/functions/i18n.php:26
1054
+ msgid "Paste your API key below:"
1055
+ msgstr "Fügen Sie Ihren API-Schlüssel hier ein:"
1056
+
1057
+ #: ../inc/functions/i18n.php:27
1058
+ msgid "Connect me"
1059
+ msgstr "Verbinden"
1060
+
1061
+ #: ../inc/functions/i18n.php:28
1062
+ msgid "Check in progress..."
1063
+ msgstr "API-Schlüssel wird geprüft…"
1064
+
1065
+ #: ../inc/functions/i18n.php:30
1066
+ msgid ""
1067
+ "Your API key is valid. You can now configure the Imagify settings to "
1068
+ "optimize your images."
1069
+ msgstr ""
1070
+ "Ihr API-Schlüssel ist gültig. Sie können jetzt Ihre Einstellungen für die "
1071
+ "Bildoptimierung mit Imagify wählen."
1072
+
1073
+ #: ../inc/functions/i18n.php:32
1074
+ msgid "Cancel"
1075
+ msgstr ""
1076
+
1077
+ #: ../inc/functions/i18n.php:38
1078
+ msgid "Don't Need a Parachute?"
1079
+ msgstr "Sie brauchen keinen Fallschirm?"
1080
+
1081
+ #: ../inc/functions/i18n.php:39
1082
+ msgid ""
1083
+ "If you keep this option deactivated, you won't be able to re-optimize your "
1084
+ "images to another compression level and restore your original images in case "
1085
+ "of need."
1086
+ msgstr ""
1087
+ "Wenn Sie diese Option deaktiviert lassen, werden Sie Ihre Bilder nicht "
1088
+ "erneut mit einem anderen Level komprimieren, oder deren Originale "
1089
+ "wiederherstellen können."
1090
+
1091
+ #: ../inc/functions/i18n.php:55
1092
+ msgid "Original Image"
1093
+ msgstr "Originalbild"
1094
+
1095
+ #: ../inc/functions/i18n.php:56
1096
+ msgid "Optimized Image"
1097
+ msgstr "Optimiertes Bild"
1098
+
1099
+ #: ../inc/functions/i18n.php:70
1100
+ msgid "Please wait..."
1101
+ msgstr "Einen Moment bitte&#160;…"
1102
+
1103
+ #: ../inc/functions/i18n.php:71
1104
+ msgid ""
1105
+ "We are trying to get your unoptimized images, it may take time depending on "
1106
+ "the number of images."
1107
+ msgstr ""
1108
+ "Nicht optimierte Bilder werden gesammelt, dies kann einen Moment dauern&#160;"
1109
+ "…"
1110
+
1111
+ #: ../inc/functions/i18n.php:73
1112
+ msgid "Oops, There is something wrong!"
1113
+ msgstr "Hm, etwas ist schief gelaufen."
1114
+
1115
+ #: ../inc/functions/i18n.php:74
1116
+ msgid ""
1117
+ "An unknow error occurred when we tried to get all your unoptimized images. "
1118
+ "Try again and if the issue still persist, please contact us!"
1119
+ msgstr ""
1120
+ "Ein unbekannter Fehler ist beim Sammeln der nicht optimierten Bilder "
1121
+ "aufgetreten. Versuchen Sie es noch einmal; falls der Fehler sich wiederholt, "
1122
+ "kontaktieren Sie bitte den Imagify-Support."
1123
+
1124
+ #: ../inc/functions/i18n.php:78
1125
+ msgid "Error"
1126
+ msgstr "Fehler"
1127
+
1128
+ #: ../inc/functions/i18n.php:81
1129
+ msgid "Hold on!"
1130
+ msgstr "Moment, bitte!"
1131
+
1132
+ #: ../inc/functions/i18n.php:82
1133
+ msgid "All your images have been optimized by Imagify. Congratulations!"
1134
+ msgstr "Imagify hat alle Ihre Bilder optimiert. Glückwunsch!"
1135
+
1136
+ #: ../inc/functions/i18n.php:84
1137
+ #, php-format
1138
+ msgid ""
1139
+ "Discover @imagify, the new compression tool to optimize your images for "
1140
+ "free. I saved %1$s out of %2$s!"
1141
+ msgstr ""
1142
+ "Freies #WordPress #Plugin zur Bildoptimierung für bessere #Performance: "
1143
+ "Bilder mit @imagify komprimiert, %1$s von %2$s gespart!"
1144
+
1145
+ #: ../inc/functions/i18n.php:88
1146
+ msgid "Imagify is still processing. Are you sure you want to leave this page?"
1147
+ msgstr ""
1148
+ "Imagify arbeitet noch. Möchten Sie diese Seite wirklich verlassen und den "
1149
+ "Prozess abbrechen?"
1150
+
1151
+ #: ../inc/functions/i18n.php:97
1152
+ msgid "F j, Y"
1153
+ msgstr "j. F Y"
1154
+
1155
+ #: ../inc/functions/process.php:41
1156
+ msgid ""
1157
+ "Sorry, our servers are temporarily unaccessible. Please, try again in a "
1158
+ "couple of minutes."
1159
+ msgstr ""
1160
+ "Unsere Server sind leider im Augenblick nicht erreichbar. Bitte versuchen "
1161
+ "Sie es in ein paar Minuten noch einmal."
1162
+
1163
+ #: ../inc/functions/process.php:47
1164
+ msgid "External HTTP requests are blocked"
1165
+ msgstr "Externe HTTP-Anfragen werden blockiert"
1166
+
1167
+ #: ../inc/functions/process.php:53
1168
+ msgid "File path is empty"
1169
+ msgstr "Datei-Pfad ist leer"
1170
+
1171
+ #: ../inc/functions/process.php:59
1172
+ #, php-format
1173
+ msgid "Could not find %s"
1174
+ msgstr "%s wurde nicht gefunden"
1175
+
1176
+ #: ../inc/functions/process.php:64
1177
+ #, php-format
1178
+ msgid "%s is not writable"
1179
+ msgstr "%s ist nicht beschreibbar."
1180
+
1181
+ #: ../inc/functions/process.php:73
1182
+ #, php-format
1183
+ msgid "Skipped (%s), image not found."
1184
+ msgstr "Übersprungen (%s), Bild nicht gefunden."
1185
+
1186
+ #: ../assets/js/sweetalert.min.js:1
1187
+ msgid "./utils"
1188
+ msgstr ""
1189
+
1190
+ #: ../assets/js/sweetalert.min.js:1
1191
+ msgid "./handle-swal-dom"
1192
+ msgstr ""
1193
+
1194
+ #: ../assets/js/sweetalert.min.js:1
1195
+ msgid "./handle-dom"
1196
+ msgstr ""
1197
+
1198
+ #~ msgid "https://wordpress.org/plugins/imagify"
1199
+ #~ msgstr "https://de.wordpress.org/plugins/imagify"
1200
+
1201
+ #~ msgid ""
1202
+ #~ "Dramaticaly reduce image file sizes without loosing quality, make your "
1203
+ #~ "website load faster, boost your SEO and save money on your bandwith using "
1204
+ #~ "Imagify, the new most advanced image optimization tool."
1205
+ #~ msgstr ""
1206
+ #~ "Verlustfreie Bildoptimierung für WordPress. Imagify reduziert dramatisch "
1207
+ #~ "die Dateigröße deiner Bilder, macht Ihre Website schneller, verbessert "
1208
+ #~ "Ihre SEO und spart Bandbreite."
1209
+
1210
+ #~ msgid "Your default setting:"
1211
+ #~ msgstr "Ihre Standard-Einstellung:"
1212
+
1213
+ #~ msgid ""
1214
+ #~ "All images which are over to %s could be optimized using the pro version."
1215
+ #~ msgstr "Bilder größer als %s können mit der Pro-version optimiert werden."
languages/imagify-es_ES.mo CHANGED
Binary file
languages/imagify-es_ES.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
- "POT-Creation-Date: 2016-03-10 16:09+0100\n"
5
- "PO-Revision-Date: 2016-03-10 16:14+0100\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: es\n"
@@ -20,23 +20,36 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
- #: inc/admin/ajax.php:118 inc/admin/meta-boxes.php:29
24
- #: inc/functions/admin-ui.php:99 inc/functions/admin-ui.php:127
25
- #: inc/functions/admin-ui.php:133 inc/functions/admin-ui.php:139
26
- #: inc/functions/admin-ui.php:175 inc/functions/admin-ui.php:181
27
- msgid "Optimizing..."
28
- msgstr "Optimizando…"
29
-
30
- #: inc/admin/ajax.php:118 inc/admin/enqueue.php:163 inc/admin/enqueue.php:187
31
- #: inc/admin/meta-boxes.php:34 inc/functions/admin-ui.php:181
32
  msgid "Optimize"
33
  msgstr "Optimizar"
34
 
35
- #: inc/admin/ajax.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  msgid "Oops, It's almost over!"
37
  msgstr "¡Ya casi está!"
38
 
39
- #: inc/admin/ajax.php:437
40
  #, php-format
41
  msgid ""
42
  "You have almost used all your credit.%sDon't forget to upgrade your "
@@ -45,17 +58,17 @@ msgstr ""
45
  "Ya has utilizado casi todo tu crédito.%sNo olvides ampliar tu suscripción "
46
  "para poder seguir optimizando tus imágenes."
47
 
48
- #: inc/admin/ajax.php:438 inc/admin/ui/bulk.php:23
49
  msgid "View My Subscription"
50
  msgstr "Ver mi suscripción"
51
 
52
- #: inc/admin/ajax.php:446 inc/admin/enqueue.php:212
53
- #: inc/admin/ui/notices.php:251
54
  msgid "Oops, It's Over!"
55
  msgstr "¡Ya está!"
56
 
57
- #: inc/admin/ajax.php:447 inc/admin/enqueue.php:228
58
- #: inc/admin/ui/notices.php:253
59
  #, php-format
60
  msgid ""
61
  "You have consumed all your credit for this month. You will have <strong>%s "
@@ -64,230 +77,54 @@ msgstr ""
64
  "Has consumido todo tu crédito para este mes. Volverás a tener <strong>%s el "
65
  "%s</strong>."
66
 
67
- #: inc/admin/ajax.php:448
68
  msgid "Upgrade My Subscription"
69
  msgstr "Actualizar mi suscripción"
70
 
71
- #: inc/admin/ajax.php:467 inc/admin/ui/bulk.php:17
72
  msgid "Account status"
73
  msgstr "Estado de mi cuenta"
74
 
75
- #: inc/admin/ajax.php:468 inc/admin/ui/bulk.php:18
76
  msgid "Your subscription:"
77
  msgstr "Tu suscripción:"
78
 
79
- #: inc/admin/ajax.php:476 inc/admin/ui/bulk.php:48
80
  #, php-format
81
  msgid "You have %s space credit left"
82
  msgstr "Te queda un saldo de %s"
83
 
84
- #: inc/admin/ajax.php:488
85
  msgid "View my subscription"
86
  msgstr "Ver mi suscripción"
87
 
88
- #: inc/admin/enqueue.php:121
89
- msgid "Let's get you started!"
90
- msgstr "¡Vamos a comenzar!"
91
-
92
- #: inc/admin/enqueue.php:122
93
- msgid "Enter your email to get an API key:"
94
- msgstr "Ingresa tu email para obtener un clave API:"
95
-
96
- #: inc/admin/enqueue.php:123
97
- msgid "Sign Up"
98
- msgstr "Registrate"
99
-
100
- #: inc/admin/enqueue.php:124
101
- msgid "You need to specify an email!"
102
- msgstr "¡Es necesario especificar una dirección email!"
103
-
104
- #: inc/admin/enqueue.php:125 inc/admin/enqueue.php:131
105
- msgid "Congratulations!"
106
- msgstr "¡Enhorabuena!"
107
-
108
- #: inc/admin/enqueue.php:126
109
- msgid ""
110
- "Your account has been succesfully created. Please check your mailbox, you "
111
- "are going to receive an email with API key."
112
- msgstr ""
113
- "Tu cuenta ha sido creada con éxito. Por favor, revisa tu buzón de correo, "
114
- "recibirás un email con la clave API."
115
-
116
- #: inc/admin/enqueue.php:127
117
- msgid "Connect to Imagify!"
118
- msgstr "¡Conéctate a Imagify!"
119
-
120
- #: inc/admin/enqueue.php:128
121
- msgid "Paste your API key below:"
122
- msgstr "Pega aquí abajo tu clave API:"
123
-
124
- #: inc/admin/enqueue.php:129
125
- msgid "Connect me"
126
- msgstr "Conéctame"
127
-
128
- #: inc/admin/enqueue.php:130
129
- msgid "Check in progress..."
130
- msgstr "Control en curso…"
131
-
132
- #: inc/admin/enqueue.php:132
133
- msgid ""
134
- "Your API key is valid. You can now configure the Imagify settings to "
135
- "optimize your images."
136
- msgstr ""
137
- "Tu clave API es válida. Ahora puedes configurar los parámetros de Imagify "
138
- "para optimizar tus imágenes."
139
-
140
- #: inc/admin/enqueue.php:133 inc/admin/ui/options.php:85
141
- msgid "Your API key is valid."
142
- msgstr "Tu clave API es válida."
143
-
144
- #: inc/admin/enqueue.php:150
145
- msgid "Don't Need a Parachute?"
146
- msgstr "¿No necesitas un paracaídas?"
147
-
148
- #: inc/admin/enqueue.php:151
149
- msgid ""
150
- "If you keep this option deactivated, you won't be able to re-optimize your "
151
- "images to another compression level and restore your original images in case "
152
- "of need."
153
- msgstr ""
154
- "Si mantienes esta opción desactivada, no podrás re-optimizar tus imágenes a "
155
- "otro nivel de compresión ni restablecer la imagen original en caso de "
156
- "necesidad."
157
-
158
- #: inc/admin/enqueue.php:164 inc/functions/admin-ui.php:75
159
- msgid "Restore Original"
160
- msgstr "Recuperar tamaño original"
161
-
162
- #: inc/admin/enqueue.php:181
163
- msgid "Original Image"
164
- msgstr "Imagen original"
165
-
166
- #: inc/admin/enqueue.php:182
167
- msgid "Optimized Image"
168
- msgstr "Imagen optimizada"
169
-
170
- #: inc/admin/enqueue.php:183 inc/admin/media.php:61
171
  msgid "Compare Original VS Optimized"
172
  msgstr "Compara original VS optimizada"
173
 
174
- #: inc/admin/enqueue.php:184 inc/admin/ui/options.php:360
175
- #: inc/admin/ui/options.php:482
176
- msgid "Close"
177
- msgstr "Cierra"
178
-
179
- #: inc/admin/enqueue.php:185 inc/admin/ui/options.php:413
180
- #: inc/admin/ui/options.php:423 inc/admin/ui/options.php:443
181
- #: inc/admin/ui/options.php:464
182
- msgid "File Size:"
183
- msgstr "Tamaño del archivo:"
184
-
185
- #: inc/admin/enqueue.php:186 inc/admin/ui/options.php:427
186
- #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:468
187
- #: inc/functions/admin-ui.php:44
188
- msgid "Original Saving:"
189
- msgstr "Ahorro inicial:"
190
-
191
- #: inc/admin/enqueue.php:202
192
- msgid "Please wait..."
193
- msgstr "Espera, por favor…"
194
-
195
- #: inc/admin/enqueue.php:203
196
- msgid ""
197
- "We are trying to get your unoptimized images, it may take time depending on "
198
- "the number of images."
199
- msgstr ""
200
- "Estamos tratando de obtener tus imágenes no optimizadas: esto puede tomar "
201
- "tiempo, dependiendo del número de imágenes."
202
-
203
- #: inc/admin/enqueue.php:205
204
- msgid "Oops, There is something wrong!"
205
- msgstr "Ups, algo no ha ido bien!"
206
-
207
- #: inc/admin/enqueue.php:206
208
- msgid ""
209
- "An unknow error occurred when we tried to get all your unoptimized images. "
210
- "Try again and if the issue still persist, please contact us!"
211
- msgstr ""
212
- "Un error inesperado ha ocurrido mientras tratábamos de obtener todas tus "
213
- "imágenes no optimizadas. Inténtalo otra vez y, si el problema persiste, "
214
- "contáctanos por favor!"
215
-
216
- #: inc/admin/enqueue.php:208 inc/admin/ui/bulk.php:264 inc/admin/upload.php:38
217
- msgid "Optimized"
218
- msgstr "Optimizado"
219
-
220
- #: inc/admin/enqueue.php:209 inc/admin/upload.php:39
221
- msgid "Unoptimized"
222
- msgstr "No optimizado"
223
-
224
- #: inc/admin/enqueue.php:210
225
- msgid "Error"
226
- msgstr "Error"
227
-
228
- #: inc/admin/enqueue.php:213
229
- msgid "Hold on!"
230
- msgstr "¡Espera!"
231
-
232
- #: inc/admin/enqueue.php:214
233
- msgid "All your images have been optimized by Imagify. Congratulations!"
234
- msgstr "Todas tus imágenes han sido optimizadas por Imagify. ¡Enhorabuena!"
235
-
236
- #: inc/admin/enqueue.php:216
237
- #, php-format
238
- msgid ""
239
- "Discover @imagify, the new compression tool to optimize your images for "
240
- "free. I saved %1$s out of %2$s!"
241
- msgstr ""
242
- "Descubre @imagify, la nueva herramienta de compresión para optimizar tus "
243
- "imágenes gratuitamente. Me ha ahorrado %1$s de %2$s!"
244
-
245
- #: inc/admin/enqueue.php:220
246
- msgid "Imagify is still processing. Are you sure you want to leave this page?"
247
- msgstr "Imagify sigue procesando. Estás seguro que quieres dejar la página?"
248
-
249
- #: inc/admin/enqueue.php:225 inc/admin/enqueue.php:228
250
- #: inc/admin/ui/notices.php:253
251
- #, php-format
252
- msgid ""
253
- "To continue to optimize your images, log in to your Imagify account to %sbuy "
254
- "a pack or subscribe to a plan%s."
255
- msgstr ""
256
- "Para seguir optimizando tus imágenes, inicia sesión en tu cuenta Imagify "
257
- "para %scomprar un paquete o subscribir un plan %s."
258
-
259
- #: inc/admin/enqueue.php:228
260
- msgid "F j, Y"
261
- msgstr "F j, Y"
262
-
263
- #: inc/admin/menu.php:24 inc/admin/plugins.php:13 inc/admin/ui/bulk.php:79
264
- #: inc/common/admin-bar.php:39
265
- msgid "Bulk Optimization"
266
- msgstr "Optimización masiva"
267
-
268
  #. Plugin Name of the plugin/theme
269
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
270
- #: inc/admin/upload.php:11
271
  msgid "Imagify"
272
  msgstr "Imagify"
273
 
274
- #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:168
275
  msgid "Invalid API key"
276
  msgstr "Clave API no válida"
277
 
278
- #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:170
279
  msgid "Check your Settings"
280
  msgstr "Comprueba tu configuración"
281
 
282
- #: inc/admin/options.php:107
283
  msgid "Cheatin&#8217; uh?"
284
  msgstr "Haciendo trampa ¿Uh?"
285
 
286
- #: inc/admin/options.php:115
287
  msgid "<strong>ERROR</strong>: options page not found."
288
  msgstr "<strong>ERROR</strong>: página de opciones no encontrada."
289
 
290
- #: inc/admin/plugins.php:14 inc/admin/ui/options.php:70
291
  #: inc/common/admin-bar.php:30
292
  msgid "Settings"
293
  msgstr "Configuración"
@@ -300,11 +137,41 @@ msgstr "Actualiza tu cuenta para seguir optimizando tus imágenes"
300
  msgid "More info"
301
  msgstr "Más info"
302
 
303
- #: inc/admin/ui/bulk.php:89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  msgid "Information"
305
  msgstr "Información"
306
 
307
- #: inc/admin/ui/bulk.php:91
308
  msgid ""
309
  "Please be aware that optimizing a large number of images can take a while "
310
  "depending on your server and network speed."
@@ -312,7 +179,7 @@ msgstr ""
312
  "Por favor ten en cuenta que la optimización de un gran número de imágenes "
313
  "puede demorar un poco según tu servidor y la velocidad de tu red."
314
 
315
- #: inc/admin/ui/bulk.php:94
316
  #, php-format
317
  msgid ""
318
  "If you have more than %s images, you will need to launch the bulk "
@@ -321,7 +188,7 @@ msgstr ""
321
  "Si tienes más de %s imágenes, necesitarás lanzar el proceso de optimización "
322
  "masiva varias veces."
323
 
324
- #: inc/admin/ui/bulk.php:98
325
  msgid ""
326
  "You must keep this page open while the bulk optimizaton is processing. If "
327
  "you leave you can come back to continue where it left off."
@@ -329,139 +196,127 @@ msgstr ""
329
  "Tienes que mantener esta página abierta durante la optimización masiva. Si "
330
  "la abandonas, siempre puedes volver y retomarla donde la hayas dejado."
331
 
332
- #: inc/admin/ui/bulk.php:106
333
  msgid "Select Your Compression Level"
334
  msgstr "Selecciona tu nivel de compresión"
335
 
336
- #: inc/admin/ui/bulk.php:109 inc/admin/ui/bulk.php:137
337
- #: inc/admin/ui/options.php:129 inc/admin/ui/options.php:345
338
- #: inc/admin/ui/options.php:384 inc/admin/ui/options.php:401
339
- #: inc/admin/ui/options.php:461 inc/classes/class-attachment.php:135
340
- #: inc/functions/admin-ui.php:127
 
341
  msgid "Ultra"
342
  msgstr "Ultra"
343
 
344
- #: inc/admin/ui/bulk.php:112 inc/admin/ui/bulk.php:132
345
- #: inc/admin/ui/options.php:124 inc/admin/ui/options.php:332
346
- #: inc/admin/ui/options.php:383 inc/admin/ui/options.php:396
347
- #: inc/admin/ui/options.php:440 inc/classes/class-attachment.php:138
348
- #: inc/functions/admin-ui.php:133
 
349
  msgid "Aggressive"
350
  msgstr "Agresivo"
351
 
352
- #: inc/admin/ui/bulk.php:115 inc/admin/ui/bulk.php:127
353
- #: inc/admin/ui/options.php:119 inc/admin/ui/options.php:319
354
- #: inc/admin/ui/options.php:382 inc/admin/ui/options.php:391
355
- #: inc/admin/ui/options.php:420 inc/classes/class-attachment.php:141
356
- #: inc/functions/admin-ui.php:139
 
357
  msgid "Normal"
358
  msgstr "Normal"
359
 
360
- #: inc/admin/ui/bulk.php:119
361
- msgid "Your default setting:"
362
- msgstr "Tu configuración por defecto:"
 
363
 
364
- #: inc/admin/ui/bulk.php:146
365
  #, php-format
366
  msgid "Don't forget to check %syour settings%s before bulk optimization."
367
  msgstr "No olvides revisar %stus ajustes%s antes de la optimización masiva."
368
 
369
- #: inc/admin/ui/bulk.php:156
 
 
 
 
370
  msgid "Imagif'em all"
371
  msgstr "Imagíficalo todo"
372
 
373
- #: inc/admin/ui/bulk.php:163
374
  #, php-format
375
  msgid ""
376
- "All images which are over to %s could be optimized using the pro version."
 
377
  msgstr ""
378
- "Todas las imágenes de tamaño superior a %s pueden optimizarse utilizando la "
379
- "versión pro."
380
-
381
- #: inc/admin/ui/bulk.php:174
382
- msgid "Overview"
383
- msgstr "Resumen"
384
-
385
- #: inc/admin/ui/bulk.php:184
386
- msgid "Statistics"
387
- msgstr "Estadísticas"
388
-
389
- #: inc/admin/ui/bulk.php:196
390
- msgid "that's the number of images you optimized with Imagify"
391
- msgstr "este es el número de imágenes que has optimizado con Imagify"
392
-
393
- #: inc/admin/ui/bulk.php:201
394
- msgid "Original size"
395
- msgstr "Tamaño original"
396
-
397
- #: inc/admin/ui/bulk.php:206
398
- msgid "Optimized size"
399
- msgstr "Tamaño optimizado"
400
 
401
- #: inc/admin/ui/bulk.php:217
402
- #, php-format
403
- msgid "that's the size you saved %sby using Imagify"
404
- msgstr "este es el tamaño que ahorraste %scon Imagify"
405
-
406
- #: inc/admin/ui/bulk.php:237
407
  msgid "Well done!"
408
  msgstr "¡Bien hecho!"
409
 
410
- #: inc/admin/ui/bulk.php:238
411
  #, php-format
412
  msgid "you saved %1$s out of %2$s"
413
  msgstr "has ahorrado %1$s de %2$s"
414
 
415
- #: inc/admin/ui/bulk.php:243
416
  msgid "Share your awesome result"
417
  msgstr "Comparte tus impresionantes resultados"
418
 
419
- #: inc/admin/ui/bulk.php:258
420
  msgid "Compression process results"
421
  msgstr "Resultados del proceso de compresión"
422
 
423
- #: inc/admin/ui/bulk.php:261
424
  msgid "Filename"
425
  msgstr "Nombre de archivo"
426
 
427
- #: inc/admin/ui/bulk.php:262
428
  msgid "Status"
429
  msgstr "Estado"
430
 
431
- #: inc/admin/ui/bulk.php:263 inc/admin/ui/options.php:381
432
- #: inc/admin/ui/options.php:386 inc/admin/ui/options.php:410
433
  msgid "Original"
434
  msgstr "Original"
435
 
436
- #: inc/admin/ui/bulk.php:265
 
 
 
 
437
  msgid "Percentage"
438
  msgstr "Porcentaje"
439
 
440
- #: inc/admin/ui/bulk.php:266
441
  msgid "Thumbnails optimized"
442
  msgstr "Miniaturas optimizadas:"
443
 
444
- #: inc/admin/ui/bulk.php:267
445
  msgid "Overall saving"
446
  msgstr "Ahorro total"
447
 
448
- #: inc/admin/ui/bulk.php:272
449
  msgid "file"
450
  msgstr "archivo"
451
 
452
- #: inc/admin/ui/bulk.php:273
453
  msgid "error"
454
  msgstr "error"
455
 
456
- #: inc/admin/ui/bulk.php:274
457
  msgid "Total:"
458
  msgstr "Total:"
459
 
460
- #: inc/admin/ui/bulk.php:275
461
  msgid "Gain:"
462
  msgstr "Ganancia:"
463
 
464
- #: inc/admin/ui/bulk.php:292
465
  #, php-format
466
  msgid "%sStart the bulk optimization%s"
467
  msgstr "%sEmpieza la optimización masiva%s"
@@ -524,7 +379,7 @@ msgstr ""
524
  msgid "Go to Settings"
525
  msgstr "Ve a la configuración"
526
 
527
- #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:91
528
  msgid "Your API key isn't valid!"
529
  msgstr "¡Tu clave API no es válida!"
530
 
@@ -587,16 +442,26 @@ msgstr "Utiliza la vista de lista para optimizar imágenes con Imagify."
587
  msgid "Switch to the List View"
588
  msgstr "Cambia a la vista de lista"
589
 
590
- #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:24
 
 
 
 
 
 
 
 
 
 
591
  msgid "Discover the best caching plugin to speed up your website."
592
  msgstr "Descubre el mejor plugin de caché para acelerar tu sitio Web."
593
 
594
- #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:32
595
  #, php-format
596
  msgid "%sGet %s off%s with this coupon code:%s"
597
  msgstr "Descuento del %s%s%s con este código de coupon:%s"
598
 
599
- #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:37
600
  msgid "Get WP Rocket now"
601
  msgstr "Obten WP Rocket, ¡ya!"
602
 
@@ -609,7 +474,7 @@ msgstr ""
609
  "%1$s¡En hora buena!%2$s Has optimizado %1$s%3$d imágenes%2$s y ahora tu "
610
  "sitio web es más rápido."
611
 
612
- #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:55
613
  #, php-format
614
  msgid ""
615
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
@@ -618,61 +483,65 @@ msgstr ""
618
  "%sTe gusta este plugin?%s Por favor tomate unos segundos para %svalorarlo en "
619
  "WordPress.org%s!"
620
 
621
- #: inc/admin/ui/options.php:18
622
  msgid "Is your website too slow?"
623
  msgstr "¿Tu sitio web es muy lento?"
624
 
625
- #: inc/admin/ui/options.php:78
626
  msgid "API Key"
627
  msgstr "Clave API"
628
 
629
- #: inc/admin/ui/options.php:98
 
 
 
 
630
  #, php-format
631
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
632
  msgstr "¿Todavía no tienes una clave API? %sCréate una, es GRATIS%s."
633
 
634
- #: inc/admin/ui/options.php:114
635
  msgid "Optimization Level"
636
  msgstr "Nivel de optimización"
637
 
638
- #: inc/admin/ui/options.php:134
639
  msgid "More info?"
640
  msgstr "Más Info?"
641
 
642
- #: inc/admin/ui/options.php:141
643
  #, php-format
644
  msgid "Need help to choose? %sTry the Visual Comparison%s"
645
  msgstr "¿Necesita ayuda para elegir? %sPrueba la comparación visual%s"
646
 
647
- #: inc/admin/ui/options.php:150 inc/admin/ui/options.php:154
648
  msgid "Auto-Optimize images on upload"
649
  msgstr "Optimización automática de imágenes en carga"
650
 
651
- #: inc/admin/ui/options.php:158
652
  msgid "Automatically optimize every image you upload to WordPress."
653
  msgstr "Optimiza automáticamente cada imagen que subas a Wordpress."
654
 
655
- #: inc/admin/ui/options.php:163 inc/admin/ui/options.php:166
656
  msgid "Backup original images"
657
  msgstr "Backup de las imágenes originales"
658
 
659
- #: inc/admin/ui/options.php:170
660
  msgid ""
661
  "Keep your original images in a separate folder before optimization process."
662
  msgstr ""
663
  "Mantén tus imágenes originales en una carpeta separada antes del proceso de "
664
  "optimización."
665
 
666
- #: inc/admin/ui/options.php:175 inc/admin/ui/options.php:178
667
  msgid "Resize larger images"
668
  msgstr "Reduce las imágenes más grandes"
669
 
670
- #: inc/admin/ui/options.php:184
671
  #, php-format
672
  msgid "to maximum %s pixels width"
673
  msgstr "a una anchura máxima de %s pixel"
674
 
675
- #: inc/admin/ui/options.php:195
676
  #, php-format
677
  msgid ""
678
  "This option is recommended to reduce larger images. You can save up to 80%% "
@@ -684,11 +553,11 @@ msgstr ""
684
  "debería ser menor que el ancho de tu miniatura más grande, que actualmente "
685
  "es de %spx."
686
 
687
- #: inc/admin/ui/options.php:202 inc/admin/ui/options.php:205
688
  msgid "EXIF Data"
689
  msgstr "Datos EXIF"
690
 
691
- #: inc/admin/ui/options.php:209
692
  msgid ""
693
  "Keep all EXIF data from your images. EXIF are informations stored in your "
694
  "pictures like shutter speed, exposure compensation, ISO, etc..."
@@ -697,11 +566,11 @@ msgstr ""
697
  "almacenada en tus imágenes, por ejemplo la velocidad de obturación, "
698
  "compensación de exposición, ISO, etc…."
699
 
700
- #: inc/admin/ui/options.php:210
701
  msgid "Learn more"
702
  msgstr "Descubre más"
703
 
704
- #: inc/admin/ui/options.php:212
705
  msgid ""
706
  "If you are a photographer, you may be interested in this option if you are "
707
  "displaying on your pages some info like the model of your camera."
@@ -709,43 +578,47 @@ msgstr ""
709
  "Si eres un fotógrafo, puedes estar interesado en esta opción si quieres "
710
  "enseñar en tus páginas alguna info, por ejemplo el modelo de tu cámara."
711
 
712
- #: inc/admin/ui/options.php:221
713
  msgid "Files optimization"
714
  msgstr "Optimización de archivos"
715
 
716
- #: inc/admin/ui/options.php:224
717
  msgid ""
718
  "You can choose to compress different image sizes created by WordPress here."
719
  msgstr ""
720
  "Aquí puedes elegir de comprimir los diferentes tamaños de imagen creados por "
721
  "WordPress."
722
 
723
- #: inc/admin/ui/options.php:226
724
  #, php-format
725
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
726
  msgstr "El %stamaño original%s es %soptimizado automáticamente%s por Imagify."
727
 
728
- #: inc/admin/ui/options.php:229
729
  msgid ""
730
  "Remember each additional image size will affect your Imagify monthly usage!"
731
  msgstr ""
732
  "Recuerda que cada tamaño adicional de imagen afectará tu consumo mensual de "
733
  "Imagify!"
734
 
735
- #: inc/admin/ui/options.php:282
736
  msgid "Display options"
737
  msgstr "Mostrar las opciones"
738
 
739
- #: inc/admin/ui/options.php:287 inc/admin/ui/options.php:292
740
  msgid "Show Admin Bar menu"
741
  msgstr "Mostrar la barra de administrador"
742
 
743
- #: inc/admin/ui/options.php:293
744
  msgid "I want this awesome quick access menu on my admin bar."
745
  msgstr ""
746
  "Quiero este fantástico menú de acceso rápido en mi barra de administrador."
747
 
748
- #: inc/admin/ui/options.php:308
 
 
 
 
749
  #, php-format
750
  msgid ""
751
  "Once your settings saved, optimize all your images by using the %sImagify "
@@ -754,11 +627,11 @@ msgstr ""
754
  "Una vez guardada la configuración, optimiza tus imágenes usando la función "
755
  "de %soptimización masiva de Imagify%s."
756
 
757
- #: inc/admin/ui/options.php:316
758
  msgid "You can choose three levels of compression"
759
  msgstr "Puedes elegir entre tres niveles de compresión"
760
 
761
- #: inc/admin/ui/options.php:321
762
  msgid ""
763
  "This mode provides lossless optimization, your images will be optimized "
764
  "without any visible change."
@@ -766,20 +639,20 @@ msgstr ""
766
  "Este modo proporciona una optimización sin pérdidas: tus imágenes serán "
767
  "optimizadas sin ningún cambio perceptible."
768
 
769
- #: inc/admin/ui/options.php:324
770
  msgid ""
771
  "If you want the perfect quality for your images, we recommend you that mode."
772
  msgstr ""
773
  "Si deseas calidad perfecta para tus imágenes, te recomendamos este modo."
774
 
775
- #: inc/admin/ui/options.php:327
776
  msgid ""
777
  "Note: the file size reduction will be less, compared to aggressive mode."
778
  msgstr ""
779
  "Nota: la reducción de tamaño del archivo será inferior, si comparado con el "
780
  "modo agresivo."
781
 
782
- #: inc/admin/ui/options.php:334
783
  msgid ""
784
  "This mode provides perfect optimization of your images without any "
785
  "significant quality loss."
@@ -787,7 +660,7 @@ msgstr ""
787
  "Este modo proporciona la perfecta optimización de tus imágenes sin pérdida "
788
  "significativa de calidad."
789
 
790
- #: inc/admin/ui/options.php:337
791
  msgid ""
792
  "This will provide a drastic savings on the initial weight, with a small "
793
  "reduction in image quality. Most of the time it's not even noticeable."
@@ -796,11 +669,11 @@ msgstr ""
796
  "reducción de la calidad de imagen. La mayoría de las veces no será ni "
797
  "perceptible."
798
 
799
- #: inc/admin/ui/options.php:340
800
  msgid "If you want the maximum weight reduction, we recommend using this mode."
801
  msgstr "Te recomendamos usar este modo si deseas la máxima reducción de peso."
802
 
803
- #: inc/admin/ui/options.php:347
804
  msgid ""
805
  "This mode will apply all available optimizations for maximum image "
806
  "compression."
@@ -808,7 +681,7 @@ msgstr ""
808
  "Este modo aplicará todas las optimizaciones disponibles, para una máxima "
809
  "compresión de imagen."
810
 
811
- #: inc/admin/ui/options.php:350
812
  msgid ""
813
  "This will provide a huge savings on the initial weight. Sometimes the image "
814
  "quality could be degraded a little."
@@ -816,7 +689,7 @@ msgstr ""
816
  "Esto proporcionará un gran ahorro en el peso inicial. A veces la calidad de "
817
  "la imagen podría disminuir un poco."
818
 
819
- #: inc/admin/ui/options.php:353
820
  msgid ""
821
  "If you want the maximum weight reduction, and you agree to lose some quality "
822
  "on the images we recommend using this mode."
@@ -824,41 +697,62 @@ msgstr ""
824
  "Te recomendamos usar este modo si deseas la máxima reducción de peso y "
825
  "aceptas perder algo de calidad en las imágenes."
826
 
827
- #: inc/admin/ui/options.php:372
 
 
 
 
 
828
  #, php-format
829
  msgid "I want to compare%s and%s"
830
  msgstr "Quiero comparar %s y %s"
831
 
832
- #: inc/admin/ui/options.php:389
833
  #, php-format
834
  msgid "Original photography about %s"
835
  msgstr "Fotografía original de %s"
836
 
837
- #: inc/admin/ui/options.php:394 inc/admin/ui/options.php:399
838
- #: inc/admin/ui/options.php:404
839
  #, php-format
840
  msgid "Optimized photography about %s"
841
  msgstr "Fotografía optimizada de %s"
842
 
843
- #: inc/admin/ui/options.php:409 inc/admin/ui/options.php:419
844
- #: inc/admin/ui/options.php:439 inc/admin/ui/options.php:460
845
- #: inc/functions/admin-ui.php:58
846
  msgid "Level:"
847
  msgstr "Nivel:"
848
 
849
- #: inc/admin/upload.php:40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
850
  msgid "Errors"
851
  msgstr "Errores"
852
 
853
- #: inc/admin/upload.php:43
854
  msgid "Filter by status"
855
  msgstr "Filtrar por estado"
856
 
857
- #: inc/admin/upload.php:46
858
  msgid "All images"
859
  msgstr "Todas las imágenes"
860
 
861
- #: inc/classes/class-attachment.php:518
862
  msgid ""
863
  "This size isn't authorized to be optimized. Update your Imagify settings if "
864
  "you want to optimize it."
@@ -875,50 +769,383 @@ msgstr "Valora Imagify en %s"
875
  msgid "Loading..."
876
  msgstr "Cargando…"
877
 
878
- #: inc/functions/admin-ui.php:35
879
  msgid "New Filesize:"
880
  msgstr "Nuevo tamaño del archivo:"
881
 
882
- #: inc/functions/admin-ui.php:51
883
  msgid "Close details"
884
  msgstr "Cerrar detalles"
885
 
886
- #: inc/functions/admin-ui.php:51
887
  msgid "View details"
888
  msgstr "Ver detalles"
889
 
890
- #: inc/functions/admin-ui.php:55
891
  msgid "Original Filesize:"
892
  msgstr "Tamaño inicial:"
893
 
894
- #: inc/functions/admin-ui.php:61
895
  msgid "Thumbnails Optimized:"
896
  msgstr "Miniaturas optimizadas:"
897
 
898
- #: inc/functions/admin-ui.php:62
899
  msgid "Overall Saving:"
900
  msgstr "Ahorro total:"
901
 
902
- #: inc/functions/admin-ui.php:75
903
  msgid "Restoring..."
904
  msgstr "Recuperando…"
905
 
906
- #: inc/functions/admin-ui.php:99
907
  msgid "Try again"
908
  msgstr "Intenta de nuevo"
909
 
910
- #: inc/functions/admin-ui.php:127 inc/functions/admin-ui.php:133
911
- #: inc/functions/admin-ui.php:139
912
  #, php-format
913
  msgid "Re-Optimize to %s"
914
  msgstr "Re-optimiza a %s"
915
 
916
- #: inc/functions/admin-ui.php:162
917
  #, php-format
918
  msgid "%s can't be optimized"
919
  msgstr "%s no puede ser optimizado"
920
 
921
- #: inc/functions/process.php:30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
922
  msgid ""
923
  "Sorry, our servers are temporarily unaccessible. Please, try again in a "
924
  "couple of minutes."
@@ -926,25 +1153,25 @@ msgstr ""
926
  "Lo sentimos, nuestros servidores están temporalmente inaccesibles. Por "
927
  "favor, inténtalo de nuevo en un par de minutos."
928
 
929
- #: inc/functions/process.php:36
930
  msgid "External HTTP requests are blocked"
931
  msgstr "Las peticiones HTTP externas están bloqueadas"
932
 
933
- #: inc/functions/process.php:42
934
  msgid "File path is empty"
935
  msgstr "La ruta del archivo está vacía"
936
 
937
- #: inc/functions/process.php:48
938
  #, php-format
939
  msgid "Could not find %s"
940
  msgstr "No se pudo encontrar %s"
941
 
942
- #: inc/functions/process.php:53
943
  #, php-format
944
  msgid "%s is not writable"
945
  msgstr "%s no tiene permisos de escritura"
946
 
947
- #: inc/functions/process.php:62
948
  #, php-format
949
  msgid "Skipped (%s), image not found."
950
  msgstr "Omitido (%s), imagen no encontrada."
@@ -955,7 +1182,7 @@ msgstr ""
955
 
956
  #. Description of the plugin/theme
957
  msgid ""
958
- "Dramaticaly reduce image file sizes without loosing quality, make your "
959
  "website load faster, boost your SEO and save money on your bandwith using "
960
  "Imagify, the new most advanced image optimization tool."
961
  msgstr ""
@@ -968,6 +1195,15 @@ msgstr ""
968
  msgid "http://wp-media.me"
969
  msgstr ""
970
 
 
 
 
 
 
 
 
 
 
971
  #~ msgid ""
972
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
973
  #~ "improved your website's by reducing your images size."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
+ "POT-Creation-Date: 2016-04-19 16:20+0200\n"
5
+ "PO-Revision-Date: 2016-04-19 16:27+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: es\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:20
24
+ #: inc/admin/ajax.php:123 inc/admin/meta-boxes.php:34
25
+ #: inc/functions/admin-ui.php:212 inc/functions/i18n.php:46
26
+ #: inc/functions/i18n.php:61
 
 
 
 
 
27
  msgid "Optimize"
28
  msgstr "Optimizar"
29
 
30
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:21
31
+ #: inc/functions/admin-ui.php:80 inc/functions/i18n.php:47
32
+ msgid "Restore Original"
33
+ msgstr "Recuperar tamaño original"
34
+
35
+ #: inc/3rd-party/nextgen-gallery/inc/admin/menu.php:16 inc/admin/menu.php:24
36
+ #: inc/admin/plugins.php:13 inc/admin/ui/bulk.php:81
37
+ #: inc/common/admin-bar.php:39
38
+ msgid "Bulk Optimization"
39
+ msgstr "Optimización masiva"
40
+
41
+ #: inc/admin/ajax.php:123 inc/admin/meta-boxes.php:29
42
+ #: inc/functions/admin-ui.php:121 inc/functions/admin-ui.php:153
43
+ #: inc/functions/admin-ui.php:159 inc/functions/admin-ui.php:165
44
+ #: inc/functions/admin-ui.php:202 inc/functions/admin-ui.php:212
45
+ msgid "Optimizing..."
46
+ msgstr "Optimizando…"
47
+
48
+ #: inc/admin/ajax.php:503
49
  msgid "Oops, It's almost over!"
50
  msgstr "¡Ya casi está!"
51
 
52
+ #: inc/admin/ajax.php:504
53
  #, php-format
54
  msgid ""
55
  "You have almost used all your credit.%sDon't forget to upgrade your "
58
  "Ya has utilizado casi todo tu crédito.%sNo olvides ampliar tu suscripción "
59
  "para poder seguir optimizando tus imágenes."
60
 
61
+ #: inc/admin/ajax.php:505 inc/admin/ui/bulk.php:23
62
  msgid "View My Subscription"
63
  msgstr "Ver mi suscripción"
64
 
65
+ #: inc/admin/ajax.php:513 inc/admin/ui/notices.php:251
66
+ #: inc/functions/i18n.php:80
67
  msgid "Oops, It's Over!"
68
  msgstr "¡Ya está!"
69
 
70
+ #: inc/admin/ajax.php:514 inc/admin/ui/notices.php:253
71
+ #: inc/functions/i18n.php:97
72
  #, php-format
73
  msgid ""
74
  "You have consumed all your credit for this month. You will have <strong>%s "
77
  "Has consumido todo tu crédito para este mes. Volverás a tener <strong>%s el "
78
  "%s</strong>."
79
 
80
+ #: inc/admin/ajax.php:515
81
  msgid "Upgrade My Subscription"
82
  msgstr "Actualizar mi suscripción"
83
 
84
+ #: inc/admin/ajax.php:534 inc/admin/ui/bulk.php:17
85
  msgid "Account status"
86
  msgstr "Estado de mi cuenta"
87
 
88
+ #: inc/admin/ajax.php:535 inc/admin/ui/bulk.php:18
89
  msgid "Your subscription:"
90
  msgstr "Tu suscripción:"
91
 
92
+ #: inc/admin/ajax.php:543 inc/admin/ui/bulk.php:48
93
  #, php-format
94
  msgid "You have %s space credit left"
95
  msgstr "Te queda un saldo de %s"
96
 
97
+ #: inc/admin/ajax.php:555
98
  msgid "View my subscription"
99
  msgstr "Ver mi suscripción"
100
 
101
+ #: inc/admin/media.php:63 inc/functions/i18n.php:57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  msgid "Compare Original VS Optimized"
103
  msgstr "Compara original VS optimizada"
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  #. Plugin Name of the plugin/theme
106
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
107
+ #: inc/admin/upload.php:12
108
  msgid "Imagify"
109
  msgstr "Imagify"
110
 
111
+ #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:195
112
  msgid "Invalid API key"
113
  msgstr "Clave API no válida"
114
 
115
+ #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:197
116
  msgid "Check your Settings"
117
  msgstr "Comprueba tu configuración"
118
 
119
+ #: inc/admin/options.php:120
120
  msgid "Cheatin&#8217; uh?"
121
  msgstr "Haciendo trampa ¿Uh?"
122
 
123
+ #: inc/admin/options.php:128
124
  msgid "<strong>ERROR</strong>: options page not found."
125
  msgstr "<strong>ERROR</strong>: página de opciones no encontrada."
126
 
127
+ #: inc/admin/plugins.php:14 inc/admin/ui/options.php:74
128
  #: inc/common/admin-bar.php:30
129
  msgid "Settings"
130
  msgstr "Configuración"
137
  msgid "More info"
138
  msgstr "Más info"
139
 
140
+ #: inc/admin/ui/bulk.php:91
141
+ msgid "Overview"
142
+ msgstr "Resumen"
143
+
144
+ #: inc/admin/ui/bulk.php:99
145
+ #, php-format
146
+ msgid "You optimized %s images of your website"
147
+ msgstr "Has optimizado el %s de imágenes de tu sitio"
148
+
149
+ #: inc/admin/ui/bulk.php:103
150
+ msgid "Statistics"
151
+ msgstr "Estadísticas"
152
+
153
+ #: inc/admin/ui/bulk.php:115
154
+ msgid "that's the number of images you optimized with Imagify"
155
+ msgstr "este es el número de imágenes que has optimizado con Imagify"
156
+
157
+ #: inc/admin/ui/bulk.php:120
158
+ msgid "Original size"
159
+ msgstr "Tamaño original"
160
+
161
+ #: inc/admin/ui/bulk.php:125
162
+ msgid "Optimized size"
163
+ msgstr "Tamaño optimizado"
164
+
165
+ #: inc/admin/ui/bulk.php:136
166
+ #, php-format
167
+ msgid "that's the size you saved %sby using Imagify"
168
+ msgstr "este es el tamaño que ahorraste %scon Imagify"
169
+
170
+ #: inc/admin/ui/bulk.php:142
171
  msgid "Information"
172
  msgstr "Información"
173
 
174
+ #: inc/admin/ui/bulk.php:146
175
  msgid ""
176
  "Please be aware that optimizing a large number of images can take a while "
177
  "depending on your server and network speed."
179
  "Por favor ten en cuenta que la optimización de un gran número de imágenes "
180
  "puede demorar un poco según tu servidor y la velocidad de tu red."
181
 
182
+ #: inc/admin/ui/bulk.php:149
183
  #, php-format
184
  msgid ""
185
  "If you have more than %s images, you will need to launch the bulk "
188
  "Si tienes más de %s imágenes, necesitarás lanzar el proceso de optimización "
189
  "masiva varias veces."
190
 
191
+ #: inc/admin/ui/bulk.php:153
192
  msgid ""
193
  "You must keep this page open while the bulk optimizaton is processing. If "
194
  "you leave you can come back to continue where it left off."
196
  "Tienes que mantener esta página abierta durante la optimización masiva. Si "
197
  "la abandonas, siempre puedes volver y retomarla donde la hayas dejado."
198
 
199
+ #: inc/admin/ui/bulk.php:164
200
  msgid "Select Your Compression Level"
201
  msgstr "Selecciona tu nivel de compresión"
202
 
203
+ #: inc/admin/ui/bulk.php:166 inc/admin/ui/bulk.php:192
204
+ #: inc/admin/ui/options.php:136 inc/admin/ui/options.php:365
205
+ #: inc/admin/ui/options.php:404 inc/admin/ui/options.php:421
206
+ #: inc/admin/ui/options.php:481
207
+ #: inc/classes/abstracts/abstract-attachment.php:114
208
+ #: inc/functions/admin-ui.php:153
209
  msgid "Ultra"
210
  msgstr "Ultra"
211
 
212
+ #: inc/admin/ui/bulk.php:169 inc/admin/ui/bulk.php:187
213
+ #: inc/admin/ui/options.php:131 inc/admin/ui/options.php:352
214
+ #: inc/admin/ui/options.php:403 inc/admin/ui/options.php:416
215
+ #: inc/admin/ui/options.php:460
216
+ #: inc/classes/abstracts/abstract-attachment.php:117
217
+ #: inc/functions/admin-ui.php:159
218
  msgid "Aggressive"
219
  msgstr "Agresivo"
220
 
221
+ #: inc/admin/ui/bulk.php:172 inc/admin/ui/bulk.php:182
222
+ #: inc/admin/ui/options.php:126 inc/admin/ui/options.php:339
223
+ #: inc/admin/ui/options.php:402 inc/admin/ui/options.php:411
224
+ #: inc/admin/ui/options.php:440
225
+ #: inc/classes/abstracts/abstract-attachment.php:120
226
+ #: inc/functions/admin-ui.php:165
227
  msgid "Normal"
228
  msgstr "Normal"
229
 
230
+ #: inc/admin/ui/bulk.php:176
231
+ #, php-format
232
+ msgid "Your default setting: %s"
233
+ msgstr "Tus ajustes por defecto: %s"
234
 
235
+ #: inc/admin/ui/bulk.php:201
236
  #, php-format
237
  msgid "Don't forget to check %syour settings%s before bulk optimization."
238
  msgstr "No olvides revisar %stus ajustes%s antes de la optimización masiva."
239
 
240
+ #: inc/admin/ui/bulk.php:208
241
+ msgid "Let's go!"
242
+ msgstr "¡Vamos!"
243
+
244
+ #: inc/admin/ui/bulk.php:215
245
  msgid "Imagif'em all"
246
  msgstr "Imagíficalo todo"
247
 
248
+ #: inc/admin/ui/bulk.php:220
249
  #, php-format
250
  msgid ""
251
+ "All images greater than %s will be optimized when using a paying monthly "
252
+ "plan."
253
  msgstr ""
254
+ "Todas las imágenes de tamaño superior a %s serán optimizadas utilizando el "
255
+ "plan de pago mensual."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
 
257
+ #: inc/admin/ui/bulk.php:239
 
 
 
 
 
258
  msgid "Well done!"
259
  msgstr "¡Bien hecho!"
260
 
261
+ #: inc/admin/ui/bulk.php:240
262
  #, php-format
263
  msgid "you saved %1$s out of %2$s"
264
  msgstr "has ahorrado %1$s de %2$s"
265
 
266
+ #: inc/admin/ui/bulk.php:245
267
  msgid "Share your awesome result"
268
  msgstr "Comparte tus impresionantes resultados"
269
 
270
+ #: inc/admin/ui/bulk.php:260
271
  msgid "Compression process results"
272
  msgstr "Resultados del proceso de compresión"
273
 
274
+ #: inc/admin/ui/bulk.php:263
275
  msgid "Filename"
276
  msgstr "Nombre de archivo"
277
 
278
+ #: inc/admin/ui/bulk.php:264
279
  msgid "Status"
280
  msgstr "Estado"
281
 
282
+ #: inc/admin/ui/bulk.php:265 inc/admin/ui/options.php:401
283
+ #: inc/admin/ui/options.php:406 inc/admin/ui/options.php:430
284
  msgid "Original"
285
  msgstr "Original"
286
 
287
+ #: inc/admin/ui/bulk.php:266 inc/admin/upload.php:41 inc/functions/i18n.php:76
288
+ msgid "Optimized"
289
+ msgstr "Optimizado"
290
+
291
+ #: inc/admin/ui/bulk.php:267
292
  msgid "Percentage"
293
  msgstr "Porcentaje"
294
 
295
+ #: inc/admin/ui/bulk.php:268
296
  msgid "Thumbnails optimized"
297
  msgstr "Miniaturas optimizadas:"
298
 
299
+ #: inc/admin/ui/bulk.php:269
300
  msgid "Overall saving"
301
  msgstr "Ahorro total"
302
 
303
+ #: inc/admin/ui/bulk.php:274
304
  msgid "file"
305
  msgstr "archivo"
306
 
307
+ #: inc/admin/ui/bulk.php:275
308
  msgid "error"
309
  msgstr "error"
310
 
311
+ #: inc/admin/ui/bulk.php:276
312
  msgid "Total:"
313
  msgstr "Total:"
314
 
315
+ #: inc/admin/ui/bulk.php:277
316
  msgid "Gain:"
317
  msgstr "Ganancia:"
318
 
319
+ #: inc/admin/ui/bulk.php:294
320
  #, php-format
321
  msgid "%sStart the bulk optimization%s"
322
  msgstr "%sEmpieza la optimización masiva%s"
379
  msgid "Go to Settings"
380
  msgstr "Ve a la configuración"
381
 
382
+ #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:97
383
  msgid "Your API key isn't valid!"
384
  msgstr "¡Tu clave API no es válida!"
385
 
442
  msgid "Switch to the List View"
443
  msgstr "Cambia a la vista de lista"
444
 
445
+ #: inc/admin/ui/notices.php:253 inc/functions/i18n.php:94
446
+ #: inc/functions/i18n.php:97
447
+ #, php-format
448
+ msgid ""
449
+ "To continue to optimize your images, log in to your Imagify account to %sbuy "
450
+ "a pack or subscribe to a plan%s."
451
+ msgstr ""
452
+ "Para seguir optimizando tus imágenes, inicia sesión en tu cuenta Imagify "
453
+ "para %scomprar un paquete o subscribir un plan %s."
454
+
455
+ #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:28
456
  msgid "Discover the best caching plugin to speed up your website."
457
  msgstr "Descubre el mejor plugin de caché para acelerar tu sitio Web."
458
 
459
+ #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:36
460
  #, php-format
461
  msgid "%sGet %s off%s with this coupon code:%s"
462
  msgstr "Descuento del %s%s%s con este código de coupon:%s"
463
 
464
+ #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:41
465
  msgid "Get WP Rocket now"
466
  msgstr "Obten WP Rocket, ¡ya!"
467
 
474
  "%1$s¡En hora buena!%2$s Has optimizado %1$s%3$d imágenes%2$s y ahora tu "
475
  "sitio web es más rápido."
476
 
477
+ #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:59
478
  #, php-format
479
  msgid ""
480
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
483
  "%sTe gusta este plugin?%s Por favor tomate unos segundos para %svalorarlo en "
484
  "WordPress.org%s!"
485
 
486
+ #: inc/admin/ui/options.php:22
487
  msgid "Is your website too slow?"
488
  msgstr "¿Tu sitio web es muy lento?"
489
 
490
+ #: inc/admin/ui/options.php:84
491
  msgid "API Key"
492
  msgstr "Clave API"
493
 
494
+ #: inc/admin/ui/options.php:91 inc/functions/i18n.php:31
495
+ msgid "Your API key is valid."
496
+ msgstr "Tu clave API es válida."
497
+
498
+ #: inc/admin/ui/options.php:104
499
  #, php-format
500
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
501
  msgstr "¿Todavía no tienes una clave API? %sCréate una, es GRATIS%s."
502
 
503
+ #: inc/admin/ui/options.php:121
504
  msgid "Optimization Level"
505
  msgstr "Nivel de optimización"
506
 
507
+ #: inc/admin/ui/options.php:141
508
  msgid "More info?"
509
  msgstr "Más Info?"
510
 
511
+ #: inc/admin/ui/options.php:148
512
  #, php-format
513
  msgid "Need help to choose? %sTry the Visual Comparison%s"
514
  msgstr "¿Necesita ayuda para elegir? %sPrueba la comparación visual%s"
515
 
516
+ #: inc/admin/ui/options.php:157 inc/admin/ui/options.php:161
517
  msgid "Auto-Optimize images on upload"
518
  msgstr "Optimización automática de imágenes en carga"
519
 
520
+ #: inc/admin/ui/options.php:165
521
  msgid "Automatically optimize every image you upload to WordPress."
522
  msgstr "Optimiza automáticamente cada imagen que subas a Wordpress."
523
 
524
+ #: inc/admin/ui/options.php:170 inc/admin/ui/options.php:173
525
  msgid "Backup original images"
526
  msgstr "Backup de las imágenes originales"
527
 
528
+ #: inc/admin/ui/options.php:177
529
  msgid ""
530
  "Keep your original images in a separate folder before optimization process."
531
  msgstr ""
532
  "Mantén tus imágenes originales en una carpeta separada antes del proceso de "
533
  "optimización."
534
 
535
+ #: inc/admin/ui/options.php:182 inc/admin/ui/options.php:185
536
  msgid "Resize larger images"
537
  msgstr "Reduce las imágenes más grandes"
538
 
539
+ #: inc/admin/ui/options.php:191
540
  #, php-format
541
  msgid "to maximum %s pixels width"
542
  msgstr "a una anchura máxima de %s pixel"
543
 
544
+ #: inc/admin/ui/options.php:202
545
  #, php-format
546
  msgid ""
547
  "This option is recommended to reduce larger images. You can save up to 80%% "
553
  "debería ser menor que el ancho de tu miniatura más grande, que actualmente "
554
  "es de %spx."
555
 
556
+ #: inc/admin/ui/options.php:209 inc/admin/ui/options.php:212
557
  msgid "EXIF Data"
558
  msgstr "Datos EXIF"
559
 
560
+ #: inc/admin/ui/options.php:216
561
  msgid ""
562
  "Keep all EXIF data from your images. EXIF are informations stored in your "
563
  "pictures like shutter speed, exposure compensation, ISO, etc..."
566
  "almacenada en tus imágenes, por ejemplo la velocidad de obturación, "
567
  "compensación de exposición, ISO, etc…."
568
 
569
+ #: inc/admin/ui/options.php:217
570
  msgid "Learn more"
571
  msgstr "Descubre más"
572
 
573
+ #: inc/admin/ui/options.php:219
574
  msgid ""
575
  "If you are a photographer, you may be interested in this option if you are "
576
  "displaying on your pages some info like the model of your camera."
578
  "Si eres un fotógrafo, puedes estar interesado en esta opción si quieres "
579
  "enseñar en tus páginas alguna info, por ejemplo el modelo de tu cámara."
580
 
581
+ #: inc/admin/ui/options.php:228
582
  msgid "Files optimization"
583
  msgstr "Optimización de archivos"
584
 
585
+ #: inc/admin/ui/options.php:231
586
  msgid ""
587
  "You can choose to compress different image sizes created by WordPress here."
588
  msgstr ""
589
  "Aquí puedes elegir de comprimir los diferentes tamaños de imagen creados por "
590
  "WordPress."
591
 
592
+ #: inc/admin/ui/options.php:233
593
  #, php-format
594
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
595
  msgstr "El %stamaño original%s es %soptimizado automáticamente%s por Imagify."
596
 
597
+ #: inc/admin/ui/options.php:236
598
  msgid ""
599
  "Remember each additional image size will affect your Imagify monthly usage!"
600
  msgstr ""
601
  "Recuerda que cada tamaño adicional de imagen afectará tu consumo mensual de "
602
  "Imagify!"
603
 
604
+ #: inc/admin/ui/options.php:289
605
  msgid "Display options"
606
  msgstr "Mostrar las opciones"
607
 
608
+ #: inc/admin/ui/options.php:294 inc/admin/ui/options.php:299
609
  msgid "Show Admin Bar menu"
610
  msgstr "Mostrar la barra de administrador"
611
 
612
+ #: inc/admin/ui/options.php:300
613
  msgid "I want this awesome quick access menu on my admin bar."
614
  msgstr ""
615
  "Quiero este fantástico menú de acceso rápido en mi barra de administrador."
616
 
617
+ #: inc/admin/ui/options.php:319
618
+ msgid "Save &amp; Go to Bulk Optimizer"
619
+ msgstr "Guarda &amp; Ve a la optimización masiva"
620
+
621
+ #: inc/admin/ui/options.php:328
622
  #, php-format
623
  msgid ""
624
  "Once your settings saved, optimize all your images by using the %sImagify "
627
  "Una vez guardada la configuración, optimiza tus imágenes usando la función "
628
  "de %soptimización masiva de Imagify%s."
629
 
630
+ #: inc/admin/ui/options.php:336
631
  msgid "You can choose three levels of compression"
632
  msgstr "Puedes elegir entre tres niveles de compresión"
633
 
634
+ #: inc/admin/ui/options.php:341
635
  msgid ""
636
  "This mode provides lossless optimization, your images will be optimized "
637
  "without any visible change."
639
  "Este modo proporciona una optimización sin pérdidas: tus imágenes serán "
640
  "optimizadas sin ningún cambio perceptible."
641
 
642
+ #: inc/admin/ui/options.php:344
643
  msgid ""
644
  "If you want the perfect quality for your images, we recommend you that mode."
645
  msgstr ""
646
  "Si deseas calidad perfecta para tus imágenes, te recomendamos este modo."
647
 
648
+ #: inc/admin/ui/options.php:347
649
  msgid ""
650
  "Note: the file size reduction will be less, compared to aggressive mode."
651
  msgstr ""
652
  "Nota: la reducción de tamaño del archivo será inferior, si comparado con el "
653
  "modo agresivo."
654
 
655
+ #: inc/admin/ui/options.php:354
656
  msgid ""
657
  "This mode provides perfect optimization of your images without any "
658
  "significant quality loss."
660
  "Este modo proporciona la perfecta optimización de tus imágenes sin pérdida "
661
  "significativa de calidad."
662
 
663
+ #: inc/admin/ui/options.php:357
664
  msgid ""
665
  "This will provide a drastic savings on the initial weight, with a small "
666
  "reduction in image quality. Most of the time it's not even noticeable."
669
  "reducción de la calidad de imagen. La mayoría de las veces no será ni "
670
  "perceptible."
671
 
672
+ #: inc/admin/ui/options.php:360
673
  msgid "If you want the maximum weight reduction, we recommend using this mode."
674
  msgstr "Te recomendamos usar este modo si deseas la máxima reducción de peso."
675
 
676
+ #: inc/admin/ui/options.php:367
677
  msgid ""
678
  "This mode will apply all available optimizations for maximum image "
679
  "compression."
681
  "Este modo aplicará todas las optimizaciones disponibles, para una máxima "
682
  "compresión de imagen."
683
 
684
+ #: inc/admin/ui/options.php:370
685
  msgid ""
686
  "This will provide a huge savings on the initial weight. Sometimes the image "
687
  "quality could be degraded a little."
689
  "Esto proporcionará un gran ahorro en el peso inicial. A veces la calidad de "
690
  "la imagen podría disminuir un poco."
691
 
692
+ #: inc/admin/ui/options.php:373
693
  msgid ""
694
  "If you want the maximum weight reduction, and you agree to lose some quality "
695
  "on the images we recommend using this mode."
697
  "Te recomendamos usar este modo si deseas la máxima reducción de peso y "
698
  "aceptas perder algo de calidad en las imágenes."
699
 
700
+ #: inc/admin/ui/options.php:380 inc/admin/ui/options.php:502
701
+ #: inc/functions/admin-ui.php:659 inc/functions/i18n.php:58
702
+ msgid "Close"
703
+ msgstr "Cierra"
704
+
705
+ #: inc/admin/ui/options.php:392
706
  #, php-format
707
  msgid "I want to compare%s and%s"
708
  msgstr "Quiero comparar %s y %s"
709
 
710
+ #: inc/admin/ui/options.php:409
711
  #, php-format
712
  msgid "Original photography about %s"
713
  msgstr "Fotografía original de %s"
714
 
715
+ #: inc/admin/ui/options.php:414 inc/admin/ui/options.php:419
716
+ #: inc/admin/ui/options.php:424
717
  #, php-format
718
  msgid "Optimized photography about %s"
719
  msgstr "Fotografía optimizada de %s"
720
 
721
+ #: inc/admin/ui/options.php:429 inc/admin/ui/options.php:439
722
+ #: inc/admin/ui/options.php:459 inc/admin/ui/options.php:480
723
+ #: inc/functions/admin-ui.php:59
724
  msgid "Level:"
725
  msgstr "Nivel:"
726
 
727
+ #: inc/admin/ui/options.php:433 inc/admin/ui/options.php:443
728
+ #: inc/admin/ui/options.php:463 inc/admin/ui/options.php:484
729
+ #: inc/functions/i18n.php:59
730
+ msgid "File Size:"
731
+ msgstr "Tamaño del archivo:"
732
+
733
+ #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:467
734
+ #: inc/admin/ui/options.php:488 inc/functions/admin-ui.php:45
735
+ #: inc/functions/i18n.php:60
736
+ msgid "Original Saving:"
737
+ msgstr "Ahorro inicial:"
738
+
739
+ #: inc/admin/upload.php:42 inc/functions/i18n.php:77
740
+ msgid "Unoptimized"
741
+ msgstr "No optimizado"
742
+
743
+ #: inc/admin/upload.php:43
744
  msgid "Errors"
745
  msgstr "Errores"
746
 
747
+ #: inc/admin/upload.php:46
748
  msgid "Filter by status"
749
  msgstr "Filtrar por estado"
750
 
751
+ #: inc/admin/upload.php:49
752
  msgid "All images"
753
  msgstr "Todas las imágenes"
754
 
755
+ #: inc/classes/class-attachment.php:266
756
  msgid ""
757
  "This size isn't authorized to be optimized. Update your Imagify settings if "
758
  "you want to optimize it."
769
  msgid "Loading..."
770
  msgstr "Cargando…"
771
 
772
+ #: inc/functions/admin-ui.php:36
773
  msgid "New Filesize:"
774
  msgstr "Nuevo tamaño del archivo:"
775
 
776
+ #: inc/functions/admin-ui.php:52
777
  msgid "Close details"
778
  msgstr "Cerrar detalles"
779
 
780
+ #: inc/functions/admin-ui.php:52
781
  msgid "View details"
782
  msgstr "Ver detalles"
783
 
784
+ #: inc/functions/admin-ui.php:56
785
  msgid "Original Filesize:"
786
  msgstr "Tamaño inicial:"
787
 
788
+ #: inc/functions/admin-ui.php:62
789
  msgid "Thumbnails Optimized:"
790
  msgstr "Miniaturas optimizadas:"
791
 
792
+ #: inc/functions/admin-ui.php:63
793
  msgid "Overall Saving:"
794
  msgstr "Ahorro total:"
795
 
796
+ #: inc/functions/admin-ui.php:80
797
  msgid "Restoring..."
798
  msgstr "Recuperando…"
799
 
800
+ #: inc/functions/admin-ui.php:121
801
  msgid "Try again"
802
  msgstr "Intenta de nuevo"
803
 
804
+ #: inc/functions/admin-ui.php:153 inc/functions/admin-ui.php:159
805
+ #: inc/functions/admin-ui.php:165
806
  #, php-format
807
  msgid "Re-Optimize to %s"
808
  msgstr "Re-optimiza a %s"
809
 
810
+ #: inc/functions/admin-ui.php:189
811
  #, php-format
812
  msgid "%s can't be optimized"
813
  msgstr "%s no puede ser optimizado"
814
 
815
+ #: inc/functions/admin-ui.php:237
816
+ msgid "What plan do I need?"
817
+ msgstr ""
818
+
819
+ #: inc/functions/admin-ui.php:241
820
+ msgid "You're new to Imagify?"
821
+ msgstr ""
822
+
823
+ #: inc/functions/admin-ui.php:242
824
+ msgid ""
825
+ "Let us help you by analyzing your existing images and determinate the best "
826
+ "plan for you"
827
+ msgstr ""
828
+
829
+ #: inc/functions/admin-ui.php:277
830
+ msgid "Choose Plan"
831
+ msgstr ""
832
+
833
+ #: inc/functions/admin-ui.php:278
834
+ msgid "Payment Info"
835
+ msgstr ""
836
+
837
+ #: inc/functions/admin-ui.php:283
838
+ msgid "We analysed your images"
839
+ msgstr ""
840
+
841
+ #: inc/functions/admin-ui.php:289
842
+ #, php-format
843
+ msgid "You have %s images"
844
+ msgstr ""
845
+
846
+ #: inc/functions/admin-ui.php:295
847
+ #, php-format
848
+ msgid "You actually have %s of images in your library."
849
+ msgstr ""
850
+
851
+ #: inc/functions/admin-ui.php:299
852
+ #, php-format
853
+ msgid "You upload around %s of images per month."
854
+ msgstr ""
855
+
856
+ #: inc/functions/admin-ui.php:306
857
+ msgid "We recommend you this plan"
858
+ msgstr ""
859
+
860
+ #: inc/functions/admin-ui.php:311
861
+ msgid "Subscribe a monthly plan"
862
+ msgstr ""
863
+
864
+ #: inc/functions/admin-ui.php:312
865
+ msgid "Subscribe a yearly plan"
866
+ msgstr ""
867
+
868
+ #: inc/functions/admin-ui.php:316 inc/functions/admin-ui.php:452
869
+ #: inc/functions/admin-ui.php:620
870
+ msgid "Monthly"
871
+ msgstr ""
872
+
873
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
874
+ #: inc/functions/admin-ui.php:623
875
+ msgid "Yearly"
876
+ msgstr ""
877
+
878
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
879
+ #: inc/functions/admin-ui.php:623
880
+ msgid "2 months free"
881
+ msgstr ""
882
+
883
+ #: inc/functions/admin-ui.php:330 inc/functions/admin-ui.php:349
884
+ #: inc/functions/admin-ui.php:465 inc/functions/admin-ui.php:475
885
+ msgid "/month"
886
+ msgstr ""
887
+
888
+ #: inc/functions/admin-ui.php:332 inc/functions/admin-ui.php:380
889
+ #: inc/functions/admin-ui.php:467 inc/functions/admin-ui.php:518
890
+ #, php-format
891
+ msgid "approx: %s images"
892
+ msgstr ""
893
+
894
+ #: inc/functions/admin-ui.php:353 inc/functions/admin-ui.php:481
895
+ #, php-format
896
+ msgid ""
897
+ "%s per<br>\n"
898
+ "additionnal Gb"
899
+ msgstr ""
900
+
901
+ #: inc/functions/admin-ui.php:358 inc/functions/admin-ui.php:393
902
+ #: inc/functions/admin-ui.php:577 inc/functions/admin-ui.php:598
903
+ msgid "Choose another plan"
904
+ msgstr ""
905
+
906
+ #: inc/functions/admin-ui.php:368
907
+ msgid "Optimize the images you already have, buy a one-time plan"
908
+ msgstr ""
909
+
910
+ #: inc/functions/admin-ui.php:404
911
+ msgid "Checkout"
912
+ msgstr ""
913
+
914
+ #: inc/functions/admin-ui.php:408
915
+ msgid ""
916
+ "Monthly plans comes with credits which is renewed every months. The billing "
917
+ "happens automatically each month or year depending the billing period you "
918
+ "choose."
919
+ msgstr ""
920
+
921
+ #: inc/functions/admin-ui.php:432
922
+ msgid "Monthly Plans"
923
+ msgstr ""
924
+
925
+ #: inc/functions/admin-ui.php:437
926
+ msgid "One Time Plans"
927
+ msgstr ""
928
+
929
+ #: inc/functions/admin-ui.php:447
930
+ msgid ""
931
+ "Monthly plans come with credits which is renewed every months. The billing "
932
+ "happens automatically each month or year depending the billing period you "
933
+ "choose."
934
+ msgstr ""
935
+
936
+ #: inc/functions/admin-ui.php:479 inc/functions/admin-ui.php:526
937
+ msgid "we recommend for you"
938
+ msgstr ""
939
+
940
+ #: inc/functions/admin-ui.php:487 inc/functions/admin-ui.php:530
941
+ msgid "Choose plan"
942
+ msgstr ""
943
+
944
+ #: inc/functions/admin-ui.php:495
945
+ msgid "Need more?"
946
+ msgstr ""
947
+
948
+ #: inc/functions/admin-ui.php:496
949
+ msgid "for special needs"
950
+ msgstr ""
951
+
952
+ #: inc/functions/admin-ui.php:500
953
+ msgid "Contact Us"
954
+ msgstr ""
955
+
956
+ #: inc/functions/admin-ui.php:507
957
+ msgid ""
958
+ "One time plans are useful if you have a lots of existing images which need "
959
+ "to be optimized. You can use it for bulk optimizing all your past images. "
960
+ "You will pay only once."
961
+ msgstr ""
962
+
963
+ #: inc/functions/admin-ui.php:560
964
+ msgid "Your order"
965
+ msgstr ""
966
+
967
+ #: inc/functions/admin-ui.php:565
968
+ #, php-format
969
+ msgid "%scancel%sYou just removed %s"
970
+ msgstr ""
971
+
972
+ #: inc/functions/admin-ui.php:573 inc/functions/admin-ui.php:594
973
+ msgid "Remove this item"
974
+ msgstr ""
975
+
976
+ #: inc/functions/admin-ui.php:580
977
+ #, php-format
978
+ msgid "%s per month"
979
+ msgstr ""
980
+
981
+ #: inc/functions/admin-ui.php:601
982
+ #, php-format
983
+ msgid "one time %s"
984
+ msgstr ""
985
+
986
+ #: inc/functions/admin-ui.php:614
987
+ #, php-format
988
+ msgid ""
989
+ "Switch to yearly subscription and <br><strong class=\"imagify-dark\">save %s "
990
+ "per year!</strong>"
991
+ msgstr ""
992
+
993
+ #: inc/functions/admin-ui.php:615
994
+ #, php-format
995
+ msgid ""
996
+ "Perfect!<br>You're <strong class=\"imagify-dark\">saving %s per year!</"
997
+ "strong>"
998
+ msgstr ""
999
+
1000
+ #: inc/functions/admin-ui.php:654
1001
+ msgid "Thank you for being awesome!"
1002
+ msgstr ""
1003
+
1004
+ #: inc/functions/admin-ui.php:665
1005
+ msgid "What do our user think about Imagify"
1006
+ msgstr ""
1007
+
1008
+ #: inc/functions/admin-ui.php:699
1009
+ msgid "Secure Credit Card Payment"
1010
+ msgstr ""
1011
+
1012
+ #: inc/functions/admin-ui.php:700
1013
+ msgid "This is secure 128-bits SSL encrypted payment"
1014
+ msgstr ""
1015
+
1016
+ #: inc/functions/i18n.php:19
1017
+ msgid "Let's get you started!"
1018
+ msgstr "¡Vamos a comenzar!"
1019
+
1020
+ #: inc/functions/i18n.php:20
1021
+ msgid "Enter your email to get an API key:"
1022
+ msgstr "Ingresa tu email para obtener un clave API:"
1023
+
1024
+ #: inc/functions/i18n.php:21
1025
+ msgid "Sign Up"
1026
+ msgstr "Registrate"
1027
+
1028
+ #: inc/functions/i18n.php:22
1029
+ msgid "You need to specify an email!"
1030
+ msgstr "¡Es necesario especificar una dirección email!"
1031
+
1032
+ #: inc/functions/i18n.php:23 inc/functions/i18n.php:29
1033
+ msgid "Congratulations!"
1034
+ msgstr "¡Enhorabuena!"
1035
+
1036
+ #: inc/functions/i18n.php:24
1037
+ msgid ""
1038
+ "Your account has been succesfully created. Please check your mailbox, you "
1039
+ "are going to receive an email with API key."
1040
+ msgstr ""
1041
+ "Tu cuenta ha sido creada con éxito. Por favor, revisa tu buzón de correo, "
1042
+ "recibirás un email con la clave API."
1043
+
1044
+ #: inc/functions/i18n.php:25
1045
+ msgid "Connect to Imagify!"
1046
+ msgstr "¡Conéctate a Imagify!"
1047
+
1048
+ #: inc/functions/i18n.php:26
1049
+ msgid "Paste your API key below:"
1050
+ msgstr "Pega aquí abajo tu clave API:"
1051
+
1052
+ #: inc/functions/i18n.php:27
1053
+ msgid "Connect me"
1054
+ msgstr "Conéctame"
1055
+
1056
+ #: inc/functions/i18n.php:28
1057
+ msgid "Check in progress..."
1058
+ msgstr "Control en curso…"
1059
+
1060
+ #: inc/functions/i18n.php:30
1061
+ msgid ""
1062
+ "Your API key is valid. You can now configure the Imagify settings to "
1063
+ "optimize your images."
1064
+ msgstr ""
1065
+ "Tu clave API es válida. Ahora puedes configurar los parámetros de Imagify "
1066
+ "para optimizar tus imágenes."
1067
+
1068
+ #: inc/functions/i18n.php:32
1069
+ msgid "Cancel"
1070
+ msgstr ""
1071
+
1072
+ #: inc/functions/i18n.php:38
1073
+ msgid "Don't Need a Parachute?"
1074
+ msgstr "¿No necesitas un paracaídas?"
1075
+
1076
+ #: inc/functions/i18n.php:39
1077
+ msgid ""
1078
+ "If you keep this option deactivated, you won't be able to re-optimize your "
1079
+ "images to another compression level and restore your original images in case "
1080
+ "of need."
1081
+ msgstr ""
1082
+ "Si mantienes esta opción desactivada, no podrás re-optimizar tus imágenes a "
1083
+ "otro nivel de compresión ni restablecer la imagen original en caso de "
1084
+ "necesidad."
1085
+
1086
+ #: inc/functions/i18n.php:55
1087
+ msgid "Original Image"
1088
+ msgstr "Imagen original"
1089
+
1090
+ #: inc/functions/i18n.php:56
1091
+ msgid "Optimized Image"
1092
+ msgstr "Imagen optimizada"
1093
+
1094
+ #: inc/functions/i18n.php:70
1095
+ msgid "Please wait..."
1096
+ msgstr "Espera, por favor…"
1097
+
1098
+ #: inc/functions/i18n.php:71
1099
+ msgid ""
1100
+ "We are trying to get your unoptimized images, it may take time depending on "
1101
+ "the number of images."
1102
+ msgstr ""
1103
+ "Estamos tratando de obtener tus imágenes no optimizadas: esto puede tomar "
1104
+ "tiempo, dependiendo del número de imágenes."
1105
+
1106
+ #: inc/functions/i18n.php:73
1107
+ msgid "Oops, There is something wrong!"
1108
+ msgstr "Ups, algo no ha ido bien!"
1109
+
1110
+ #: inc/functions/i18n.php:74
1111
+ msgid ""
1112
+ "An unknow error occurred when we tried to get all your unoptimized images. "
1113
+ "Try again and if the issue still persist, please contact us!"
1114
+ msgstr ""
1115
+ "Un error inesperado ha ocurrido mientras tratábamos de obtener todas tus "
1116
+ "imágenes no optimizadas. Inténtalo otra vez y, si el problema persiste, "
1117
+ "contáctanos por favor!"
1118
+
1119
+ #: inc/functions/i18n.php:78
1120
+ msgid "Error"
1121
+ msgstr "Error"
1122
+
1123
+ #: inc/functions/i18n.php:81
1124
+ msgid "Hold on!"
1125
+ msgstr "¡Espera!"
1126
+
1127
+ #: inc/functions/i18n.php:82
1128
+ msgid "All your images have been optimized by Imagify. Congratulations!"
1129
+ msgstr "Todas tus imágenes han sido optimizadas por Imagify. ¡Enhorabuena!"
1130
+
1131
+ #: inc/functions/i18n.php:84
1132
+ #, php-format
1133
+ msgid ""
1134
+ "Discover @imagify, the new compression tool to optimize your images for "
1135
+ "free. I saved %1$s out of %2$s!"
1136
+ msgstr ""
1137
+ "Descubre @imagify, la nueva herramienta de compresión para optimizar tus "
1138
+ "imágenes gratuitamente. Me ha ahorrado %1$s de %2$s!"
1139
+
1140
+ #: inc/functions/i18n.php:88
1141
+ msgid "Imagify is still processing. Are you sure you want to leave this page?"
1142
+ msgstr "Imagify sigue procesando. Estás seguro que quieres dejar la página?"
1143
+
1144
+ #: inc/functions/i18n.php:97
1145
+ msgid "F j, Y"
1146
+ msgstr "F j, Y"
1147
+
1148
+ #: inc/functions/process.php:41
1149
  msgid ""
1150
  "Sorry, our servers are temporarily unaccessible. Please, try again in a "
1151
  "couple of minutes."
1153
  "Lo sentimos, nuestros servidores están temporalmente inaccesibles. Por "
1154
  "favor, inténtalo de nuevo en un par de minutos."
1155
 
1156
+ #: inc/functions/process.php:47
1157
  msgid "External HTTP requests are blocked"
1158
  msgstr "Las peticiones HTTP externas están bloqueadas"
1159
 
1160
+ #: inc/functions/process.php:53
1161
  msgid "File path is empty"
1162
  msgstr "La ruta del archivo está vacía"
1163
 
1164
+ #: inc/functions/process.php:59
1165
  #, php-format
1166
  msgid "Could not find %s"
1167
  msgstr "No se pudo encontrar %s"
1168
 
1169
+ #: inc/functions/process.php:64
1170
  #, php-format
1171
  msgid "%s is not writable"
1172
  msgstr "%s no tiene permisos de escritura"
1173
 
1174
+ #: inc/functions/process.php:73
1175
  #, php-format
1176
  msgid "Skipped (%s), image not found."
1177
  msgstr "Omitido (%s), imagen no encontrada."
1182
 
1183
  #. Description of the plugin/theme
1184
  msgid ""
1185
+ "Dramaticaly reduce image file sizes without losing quality, make your "
1186
  "website load faster, boost your SEO and save money on your bandwith using "
1187
  "Imagify, the new most advanced image optimization tool."
1188
  msgstr ""
1195
  msgid "http://wp-media.me"
1196
  msgstr ""
1197
 
1198
+ #~ msgid "Your default setting:"
1199
+ #~ msgstr "Tu configuración por defecto:"
1200
+
1201
+ #~ msgid ""
1202
+ #~ "All images which are over to %s could be optimized using the pro version."
1203
+ #~ msgstr ""
1204
+ #~ "Todas las imágenes de tamaño superior a %s pueden optimizarse utilizando "
1205
+ #~ "la versión pro."
1206
+
1207
  #~ msgid ""
1208
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
1209
  #~ "improved your website's by reducing your images size."
languages/imagify-fr_FR.mo CHANGED
Binary file
languages/imagify-fr_FR.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
- "POT-Creation-Date: 2016-03-10 16:08+0100\n"
5
- "PO-Revision-Date: 2016-03-10 16:09+0100\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: fr_FR\n"
@@ -20,23 +20,34 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
- #: inc/admin/ajax.php:118 inc/admin/meta-boxes.php:29
24
- #: inc/functions/admin-ui.php:99 inc/functions/admin-ui.php:127
25
- #: inc/functions/admin-ui.php:133 inc/functions/admin-ui.php:139
26
- #: inc/functions/admin-ui.php:175 inc/functions/admin-ui.php:181
27
- msgid "Optimizing..."
28
- msgstr "En cours d’optimisation…"
29
-
30
- #: inc/admin/ajax.php:118 inc/admin/enqueue.php:163 inc/admin/enqueue.php:187
31
- #: inc/admin/meta-boxes.php:34 inc/functions/admin-ui.php:181
32
  msgid "Optimize"
33
  msgstr "Optimiser"
34
 
35
- #: inc/admin/ajax.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  msgid "Oops, It's almost over!"
37
  msgstr "Oups, c’est bientôt fini&nbsp;!"
38
 
39
- #: inc/admin/ajax.php:437
40
  #, php-format
41
  msgid ""
42
  "You have almost used all your credit.%sDon't forget to upgrade your "
@@ -45,15 +56,15 @@ msgstr ""
45
  "Vous avez bientôt utilisé tout votre crédit.%sN’oubliez pas de mettre à niveau "
46
  "votre abonnement pour continuer à optimiser vos images."
47
 
48
- #: inc/admin/ajax.php:438 inc/admin/ui/bulk.php:23
49
  msgid "View My Subscription"
50
  msgstr "Voir mon abonnement"
51
 
52
- #: inc/admin/ajax.php:446 inc/admin/enqueue.php:212 inc/admin/ui/notices.php:251
53
  msgid "Oops, It's Over!"
54
  msgstr "Oups, c’est fini !"
55
 
56
- #: inc/admin/ajax.php:447 inc/admin/enqueue.php:228 inc/admin/ui/notices.php:253
57
  #, php-format
58
  msgid ""
59
  "You have consumed all your credit for this month. You will have <strong>%s "
@@ -62,231 +73,54 @@ msgstr ""
62
  "Vous avez consommé tout votre crédit pour ce mois. Vous aurez à nouveau "
63
  "<strong>%s le %s</strong>."
64
 
65
- #: inc/admin/ajax.php:448
66
  msgid "Upgrade My Subscription"
67
  msgstr "Mettre à niveau mon abonnement"
68
 
69
- #: inc/admin/ajax.php:467 inc/admin/ui/bulk.php:17
70
  msgid "Account status"
71
  msgstr "Type de compte"
72
 
73
- #: inc/admin/ajax.php:468 inc/admin/ui/bulk.php:18
74
  msgid "Your subscription:"
75
  msgstr "Votre abonnement&nbsp;:"
76
 
77
- #: inc/admin/ajax.php:476 inc/admin/ui/bulk.php:48
78
  #, php-format
79
  msgid "You have %s space credit left"
80
  msgstr "Il vous reste %s de crédit"
81
 
82
- #: inc/admin/ajax.php:488
83
  msgid "View my subscription"
84
  msgstr "Voir mon abonnement"
85
 
86
- #: inc/admin/enqueue.php:121
87
- msgid "Let's get you started!"
88
- msgstr "C’est parti&nbsp;!"
89
-
90
- #: inc/admin/enqueue.php:122
91
- msgid "Enter your email to get an API key:"
92
- msgstr "Indiquez votre e-mail pour recevoir votre clé API&nbsp;:"
93
-
94
- #: inc/admin/enqueue.php:123
95
- msgid "Sign Up"
96
- msgstr "S’inscrire"
97
-
98
- #: inc/admin/enqueue.php:124
99
- msgid "You need to specify an email!"
100
- msgstr "Vous devez indiquer un e-mail&nbsp;!"
101
-
102
- #: inc/admin/enqueue.php:125 inc/admin/enqueue.php:131
103
- msgid "Congratulations!"
104
- msgstr "Félicitations&nbsp;!"
105
-
106
- #: inc/admin/enqueue.php:126
107
- msgid ""
108
- "Your account has been succesfully created. Please check your mailbox, you are "
109
- "going to receive an email with API key."
110
- msgstr ""
111
- "Votre compte a été créé avec succès. Vérifiez votre boîte de réception, vous "
112
- "allez recevoir un e-mail avec votre clé API."
113
-
114
- #: inc/admin/enqueue.php:127
115
- msgid "Connect to Imagify!"
116
- msgstr "Se connecter à Imagify&nbsp;!"
117
-
118
- #: inc/admin/enqueue.php:128
119
- msgid "Paste your API key below:"
120
- msgstr "Copiez votre clé API ci-dessous&nbsp;:"
121
-
122
- #: inc/admin/enqueue.php:129
123
- msgid "Connect me"
124
- msgstr "Connectez-moi"
125
-
126
- #: inc/admin/enqueue.php:130
127
- msgid "Check in progress..."
128
- msgstr "Vérification en cours…"
129
-
130
- #: inc/admin/enqueue.php:132
131
- msgid ""
132
- "Your API key is valid. You can now configure the Imagify settings to optimize "
133
- "your images."
134
- msgstr ""
135
- "Votre clé API est valide. Vous pouvez maintenant configurer les réglages "
136
- "d’Imagify pour optimiser vos images."
137
-
138
- #: inc/admin/enqueue.php:133 inc/admin/ui/options.php:85
139
- msgid "Your API key is valid."
140
- msgstr "Votre clé API est valide."
141
-
142
- #: inc/admin/enqueue.php:150
143
- msgid "Don't Need a Parachute?"
144
- msgstr "Pas besoin d’un parachute&nbsp;?"
145
-
146
- #: inc/admin/enqueue.php:151
147
- msgid ""
148
- "If you keep this option deactivated, you won't be able to re-optimize your "
149
- "images to another compression level and restore your original images in case "
150
- "of need."
151
- msgstr ""
152
- "Si vous gardez cette option désactivée, vous ne serez pas en mesure de "
153
- "réoptimiser vos images à un autre niveau de compression et de restaurer vos "
154
- "images originales en cas de besoin."
155
-
156
- #: inc/admin/enqueue.php:164 inc/functions/admin-ui.php:75
157
- msgid "Restore Original"
158
- msgstr "Restaurer l’original"
159
-
160
- #: inc/admin/enqueue.php:181
161
- msgid "Original Image"
162
- msgstr "Image d’origine"
163
-
164
- #: inc/admin/enqueue.php:182
165
- msgid "Optimized Image"
166
- msgstr "Image optimisée"
167
-
168
- #: inc/admin/enqueue.php:183 inc/admin/media.php:61
169
  msgid "Compare Original VS Optimized"
170
  msgstr "Comparer Originale VS Optimisée"
171
 
172
- #: inc/admin/enqueue.php:184 inc/admin/ui/options.php:360
173
- #: inc/admin/ui/options.php:482
174
- msgid "Close"
175
- msgstr "Fermer"
176
-
177
- #: inc/admin/enqueue.php:185 inc/admin/ui/options.php:413
178
- #: inc/admin/ui/options.php:423 inc/admin/ui/options.php:443
179
- #: inc/admin/ui/options.php:464
180
- msgid "File Size:"
181
- msgstr "Poids du fichier:"
182
-
183
- #: inc/admin/enqueue.php:186 inc/admin/ui/options.php:427
184
- #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:468
185
- #: inc/functions/admin-ui.php:44
186
- msgid "Original Saving:"
187
- msgstr "Gain sur l’original&nbsp;:"
188
-
189
- #: inc/admin/enqueue.php:202
190
- msgid "Please wait..."
191
- msgstr "Un peu d’attente…"
192
-
193
- #: inc/admin/enqueue.php:203
194
- msgid ""
195
- "We are trying to get your unoptimized images, it may take time depending on "
196
- "the number of images."
197
- msgstr ""
198
- "Nous sommes en train de récupérer vos images non-optimisées, cela peut prendre "
199
- "du temps en fonction du nombre d’images."
200
-
201
- #: inc/admin/enqueue.php:205
202
- msgid "Oops, There is something wrong!"
203
- msgstr "Oups, une erreur est survenue !"
204
-
205
- #: inc/admin/enqueue.php:206
206
- msgid ""
207
- "An unknow error occurred when we tried to get all your unoptimized images. Try "
208
- "again and if the issue still persist, please contact us!"
209
- msgstr ""
210
- "Une erreur inconnue est survenue lorsque nous avons essayé d’obtenir toutes "
211
- "vos images non optimisées. Essayez encore et si le problème persiste, "
212
- "contactez-nous !"
213
-
214
- #: inc/admin/enqueue.php:208 inc/admin/ui/bulk.php:264 inc/admin/upload.php:38
215
- msgid "Optimized"
216
- msgstr "Optimisées"
217
-
218
- #: inc/admin/enqueue.php:209 inc/admin/upload.php:39
219
- msgid "Unoptimized"
220
- msgstr "Non optimisées"
221
-
222
- #: inc/admin/enqueue.php:210
223
- msgid "Error"
224
- msgstr "Erreur"
225
-
226
- #: inc/admin/enqueue.php:213
227
- msgid "Hold on!"
228
- msgstr "Halte là&nbsp;!"
229
-
230
- #: inc/admin/enqueue.php:214
231
- msgid "All your images have been optimized by Imagify. Congratulations!"
232
- msgstr "Toutes vos images ont été optimisées par Imagify. Félicitations&nbsp;!"
233
-
234
- #: inc/admin/enqueue.php:216
235
- #, php-format
236
- msgid ""
237
- "Discover @imagify, the new compression tool to optimize your images for free. "
238
- "I saved %1$s out of %2$s!"
239
- msgstr ""
240
- "Découvrez @imagify, le nouvel outil de compression pour optimiser vos images. "
241
- "J’ai optimisé %1$s sur %2$s !"
242
-
243
- #: inc/admin/enqueue.php:220
244
- msgid "Imagify is still processing. Are you sure you want to leave this page?"
245
- msgstr ""
246
- "Imagify travaille encore. Êtes-vous sûr(e) de vouloir quitter cette page ?"
247
-
248
- #: inc/admin/enqueue.php:225 inc/admin/enqueue.php:228
249
- #: inc/admin/ui/notices.php:253
250
- #, php-format
251
- msgid ""
252
- "To continue to optimize your images, log in to your Imagify account to %sbuy a "
253
- "pack or subscribe to a plan%s."
254
- msgstr ""
255
- "Pour continuer à optimiser vos images, connectez-vous à votre compte Imagify "
256
- "pour %sacheter un pack ou souscrire à un plan%s."
257
-
258
- #: inc/admin/enqueue.php:228
259
- msgid "F j, Y"
260
- msgstr ""
261
-
262
- #: inc/admin/menu.php:24 inc/admin/plugins.php:13 inc/admin/ui/bulk.php:79
263
- #: inc/common/admin-bar.php:39
264
- msgid "Bulk Optimization"
265
- msgstr "Optimisation en masse"
266
-
267
  #. Plugin Name of the plugin/theme
268
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
269
- #: inc/admin/upload.php:11
270
  msgid "Imagify"
271
  msgstr "Imagify"
272
 
273
- #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:168
274
  msgid "Invalid API key"
275
  msgstr "Clé API invalide"
276
 
277
- #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:170
278
  msgid "Check your Settings"
279
  msgstr "Vérifiez vos réglages"
280
 
281
- #: inc/admin/options.php:107
282
  msgid "Cheatin&#8217; uh?"
283
  msgstr "Cheatin&#8217; uh?"
284
 
285
- #: inc/admin/options.php:115
286
  msgid "<strong>ERROR</strong>: options page not found."
287
  msgstr "<strong>Erreur</strong> : page d’options introuvable."
288
 
289
- #: inc/admin/plugins.php:14 inc/admin/ui/options.php:70
290
  #: inc/common/admin-bar.php:30
291
  msgid "Settings"
292
  msgstr "Réglages"
@@ -299,11 +133,41 @@ msgstr "Mettez à niveau votre compte pour continuer à optimiser vos images"
299
  msgid "More info"
300
  msgstr "Plus d’infos"
301
 
302
- #: inc/admin/ui/bulk.php:89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  msgid "Information"
304
  msgstr "Informations"
305
 
306
- #: inc/admin/ui/bulk.php:91
307
  msgid ""
308
  "Please be aware that optimizing a large number of images can take a while "
309
  "depending on your server and network speed."
@@ -311,7 +175,7 @@ msgstr ""
311
  "Prenez conscience que l’optimisation d’un grand nombre d’images peut prendre "
312
  "du temps en fonction de la rapidité de votre serveur et de votre connexion."
313
 
314
- #: inc/admin/ui/bulk.php:94
315
  #, php-format
316
  msgid ""
317
  "If you have more than %s images, you will need to launch the bulk optimization "
@@ -320,7 +184,7 @@ msgstr ""
320
  "Si vous avez plus de %s images, vous devrez lancer l’optimisation en masse "
321
  "plusieurs fois."
322
 
323
- #: inc/admin/ui/bulk.php:98
324
  msgid ""
325
  "You must keep this page open while the bulk optimizaton is processing. If you "
326
  "leave you can come back to continue where it left off."
@@ -329,139 +193,124 @@ msgstr ""
329
  "en cours. Si vous la quittez, vous pouvez revenir pour continuer là où vous en "
330
  "étiez."
331
 
332
- #: inc/admin/ui/bulk.php:106
333
  msgid "Select Your Compression Level"
334
  msgstr "Sélectionnez votre niveau de compression"
335
 
336
- #: inc/admin/ui/bulk.php:109 inc/admin/ui/bulk.php:137
337
- #: inc/admin/ui/options.php:129 inc/admin/ui/options.php:345
338
- #: inc/admin/ui/options.php:384 inc/admin/ui/options.php:401
339
- #: inc/admin/ui/options.php:461 inc/classes/class-attachment.php:135
340
- #: inc/functions/admin-ui.php:127
341
  msgid "Ultra"
342
  msgstr "Ultra"
343
 
344
- #: inc/admin/ui/bulk.php:112 inc/admin/ui/bulk.php:132
345
- #: inc/admin/ui/options.php:124 inc/admin/ui/options.php:332
346
- #: inc/admin/ui/options.php:383 inc/admin/ui/options.php:396
347
- #: inc/admin/ui/options.php:440 inc/classes/class-attachment.php:138
348
- #: inc/functions/admin-ui.php:133
349
  msgid "Aggressive"
350
  msgstr "Agressif"
351
 
352
- #: inc/admin/ui/bulk.php:115 inc/admin/ui/bulk.php:127
353
- #: inc/admin/ui/options.php:119 inc/admin/ui/options.php:319
354
- #: inc/admin/ui/options.php:382 inc/admin/ui/options.php:391
355
- #: inc/admin/ui/options.php:420 inc/classes/class-attachment.php:141
356
- #: inc/functions/admin-ui.php:139
357
  msgid "Normal"
358
  msgstr "Normal"
359
 
360
- #: inc/admin/ui/bulk.php:119
361
- msgid "Your default setting:"
362
- msgstr "Votre réglage par défaut :"
 
363
 
364
- #: inc/admin/ui/bulk.php:146
365
  #, php-format
366
  msgid "Don't forget to check %syour settings%s before bulk optimization."
367
  msgstr ""
368
  "N’oubliez pas de vérifier %svos réglages%s avant l’optimisation en masse."
369
 
370
- #: inc/admin/ui/bulk.php:156
 
 
 
 
371
  msgid "Imagif'em all"
372
  msgstr "Imagif'em all"
373
 
374
- #: inc/admin/ui/bulk.php:163
375
  #, php-format
376
- msgid "All images which are over to %s could be optimized using the pro version."
 
377
  msgstr ""
378
- "Toutes les images qui font plus de %s pourront être optimisées avec la version "
379
- "pro."
380
 
381
- #: inc/admin/ui/bulk.php:174
382
- msgid "Overview"
383
- msgstr "Vue d'ensemble"
384
-
385
- #: inc/admin/ui/bulk.php:184
386
- msgid "Statistics"
387
- msgstr "Statistiques"
388
-
389
- #: inc/admin/ui/bulk.php:196
390
- msgid "that's the number of images you optimized with Imagify"
391
- msgstr "c’est le nombre d’images que %svous avez optimisé avec Imagify"
392
-
393
- #: inc/admin/ui/bulk.php:201
394
- msgid "Original size"
395
- msgstr "Poids de l’original"
396
-
397
- #: inc/admin/ui/bulk.php:206
398
- msgid "Optimized size"
399
- msgstr "Poids optimisé"
400
-
401
- #: inc/admin/ui/bulk.php:217
402
- #, php-format
403
- msgid "that's the size you saved %sby using Imagify"
404
- msgstr "c’est le poids que vous avez économisé %sen utilisant Imagify"
405
-
406
- #: inc/admin/ui/bulk.php:237
407
  msgid "Well done!"
408
  msgstr "Bien joué&nbsp;!"
409
 
410
- #: inc/admin/ui/bulk.php:238
411
  #, php-format
412
  msgid "you saved %1$s out of %2$s"
413
  msgstr "vous avez économisé %1$s sur %2$s"
414
 
415
- #: inc/admin/ui/bulk.php:243
416
  msgid "Share your awesome result"
417
  msgstr "Partagez votre résultat"
418
 
419
- #: inc/admin/ui/bulk.php:258
420
  msgid "Compression process results"
421
  msgstr "Résultats du processus de compression"
422
 
423
- #: inc/admin/ui/bulk.php:261
424
  msgid "Filename"
425
  msgstr "Nom du fichier"
426
 
427
- #: inc/admin/ui/bulk.php:262
428
  msgid "Status"
429
  msgstr "Statut"
430
 
431
- #: inc/admin/ui/bulk.php:263 inc/admin/ui/options.php:381
432
- #: inc/admin/ui/options.php:386 inc/admin/ui/options.php:410
433
  msgid "Original"
434
  msgstr "Original"
435
 
436
- #: inc/admin/ui/bulk.php:265
 
 
 
 
437
  msgid "Percentage"
438
  msgstr "Pourcentage"
439
 
440
- #: inc/admin/ui/bulk.php:266
441
  msgid "Thumbnails optimized"
442
  msgstr "Miniatures optimisées"
443
 
444
- #: inc/admin/ui/bulk.php:267
445
  msgid "Overall saving"
446
  msgstr "Gain total"
447
 
448
- #: inc/admin/ui/bulk.php:272
449
  msgid "file"
450
  msgstr "fichier"
451
 
452
- #: inc/admin/ui/bulk.php:273
453
  msgid "error"
454
  msgstr "erreur"
455
 
456
- #: inc/admin/ui/bulk.php:274
457
  msgid "Total:"
458
  msgstr "Total&nbsp;:"
459
 
460
- #: inc/admin/ui/bulk.php:275
461
  msgid "Gain:"
462
  msgstr "Gain&nbsp;:"
463
 
464
- #: inc/admin/ui/bulk.php:292
465
  #, php-format
466
  msgid "%sStart the bulk optimization%s"
467
  msgstr "%sDémarrer l’optimisation en masse%s"
@@ -525,7 +374,7 @@ msgstr ""
525
  msgid "Go to Settings"
526
  msgstr "Aller aux réglages"
527
 
528
- #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:91
529
  msgid "Your API key isn't valid!"
530
  msgstr "Votre clé API n’est pas valide&nbsp;!"
531
 
@@ -588,16 +437,26 @@ msgstr "Utilisez la vue liste pour optimiser vos images avec Imagify."
588
  msgid "Switch to the List View"
589
  msgstr "Basculer en vue liste"
590
 
591
- #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:24
 
 
 
 
 
 
 
 
 
 
592
  msgid "Discover the best caching plugin to speed up your website."
593
  msgstr "Découvrez le meilleur plugin de cache pour accélérer votre site."
594
 
595
- #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:32
596
  #, php-format
597
  msgid "%sGet %s off%s with this coupon code:%s"
598
  msgstr "Obtenez %s%s%s de réduction avec le code promo&nbsp;:%s"
599
 
600
- #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:37
601
  msgid "Get WP Rocket now"
602
  msgstr "Je veux WP Rocket&nbsp;!"
603
 
@@ -610,7 +469,7 @@ msgstr ""
610
  "%1$sFélicitations%2$s ! Vous avez optimisé %1$s%3$d images%2$s et améliorez le "
611
  "temps de chargement de votre site en réduisant le poids de vos images."
612
 
613
- #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:55
614
  #, php-format
615
  msgid ""
616
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
@@ -619,61 +478,65 @@ msgstr ""
619
  "%sVous aimez ce plugin&nbsp;?%s Prenez quelques secondes pour le %snoter sur "
620
  "WordPress.org%s&nbsp;!"
621
 
622
- #: inc/admin/ui/options.php:18
623
  msgid "Is your website too slow?"
624
  msgstr "Votre site est trop lent ?"
625
 
626
- #: inc/admin/ui/options.php:78
627
  msgid "API Key"
628
  msgstr "Clé API"
629
 
630
- #: inc/admin/ui/options.php:98
 
 
 
 
631
  #, php-format
632
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
633
  msgstr "Vous n’avez pas encore de clé API ? %sCréez en une, c’est GRATUIT%s."
634
 
635
- #: inc/admin/ui/options.php:114
636
  msgid "Optimization Level"
637
  msgstr "Niveau d’optimisation"
638
 
639
- #: inc/admin/ui/options.php:134
640
  msgid "More info?"
641
  msgstr "Plus d’infos&nbsp;?"
642
 
643
- #: inc/admin/ui/options.php:141
644
  #, php-format
645
  msgid "Need help to choose? %sTry the Visual Comparison%s"
646
  msgstr "Besoin d’aide pour choisir? %sEssayer le comparateur visuel%s"
647
 
648
- #: inc/admin/ui/options.php:150 inc/admin/ui/options.php:154
649
  msgid "Auto-Optimize images on upload"
650
  msgstr "Optimiser automatiquement les images envoyées"
651
 
652
- #: inc/admin/ui/options.php:158
653
  msgid "Automatically optimize every image you upload to WordPress."
654
  msgstr "Optimiser automatiquement chaque image que vous enverrez à WordPress."
655
 
656
- #: inc/admin/ui/options.php:163 inc/admin/ui/options.php:166
657
  msgid "Backup original images"
658
  msgstr "​Conserver une copie des images d'origine"
659
 
660
- #: inc/admin/ui/options.php:170
661
  msgid ""
662
  "Keep your original images in a separate folder before optimization process."
663
  msgstr ""
664
  "Garder vos images d’origine dans un dossier séparé avant le processus "
665
  "d’optimisation."
666
 
667
- #: inc/admin/ui/options.php:175 inc/admin/ui/options.php:178
668
  msgid "Resize larger images"
669
  msgstr "Redimensionner les images trop grandes"
670
 
671
- #: inc/admin/ui/options.php:184
672
  #, php-format
673
  msgid "to maximum %s pixels width"
674
  msgstr "au maximum %s pixels de large"
675
 
676
- #: inc/admin/ui/options.php:195
677
  #, php-format
678
  msgid ""
679
  "This option is recommended to reduce larger images. You can save up to 80%% "
@@ -685,11 +548,11 @@ msgstr ""
685
  "largeur ne doit pas être inférieure à la plus grande largeur de vos miniatures "
686
  "qui est actuellement de %spx."
687
 
688
- #: inc/admin/ui/options.php:202 inc/admin/ui/options.php:205
689
  msgid "EXIF Data"
690
  msgstr "Données EXIF"
691
 
692
- #: inc/admin/ui/options.php:209
693
  msgid ""
694
  "Keep all EXIF data from your images. EXIF are informations stored in your "
695
  "pictures like shutter speed, exposure compensation, ISO, etc..."
@@ -698,11 +561,11 @@ msgstr ""
698
  "stockées dans vos photos comme l’ouverture de l’objectif, l’exposition, ISO, "
699
  "etc …"
700
 
701
- #: inc/admin/ui/options.php:210
702
  msgid "Learn more"
703
  msgstr "En savoir plus"
704
 
705
- #: inc/admin/ui/options.php:212
706
  msgid ""
707
  "If you are a photographer, you may be interested in this option if you are "
708
  "displaying on your pages some info like the model of your camera."
@@ -711,42 +574,46 @@ msgstr ""
711
  "vous affichez quelques infos comme votre le modèle de votre appareil photo sur "
712
  "vos pages."
713
 
714
- #: inc/admin/ui/options.php:221
715
  msgid "Files optimization"
716
  msgstr "Tailles à optimiser"
717
 
718
- #: inc/admin/ui/options.php:224
719
  msgid ""
720
  "You can choose to compress different image sizes created by WordPress here."
721
  msgstr ""
722
  "Vous pouvez choisir d’optimiser les différents formats générés par WordPress "
723
  "ici."
724
 
725
- #: inc/admin/ui/options.php:226
726
  #, php-format
727
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
728
  msgstr "La %staille d’origine%s est %sautomatiquement optimisée%s par Imagify."
729
 
730
- #: inc/admin/ui/options.php:229
731
  msgid ""
732
  "Remember each additional image size will affect your Imagify monthly usage!"
733
  msgstr ""
734
  "Pour rappel, chaque format d’image additionnel affectera votre quota d’usage "
735
  "mensuel d’Imagify."
736
 
737
- #: inc/admin/ui/options.php:282
738
  msgid "Display options"
739
  msgstr "Options d’affichage"
740
 
741
- #: inc/admin/ui/options.php:287 inc/admin/ui/options.php:292
742
  msgid "Show Admin Bar menu"
743
  msgstr "Afficher le menu dans la barre d'administration"
744
 
745
- #: inc/admin/ui/options.php:293
746
  msgid "I want this awesome quick access menu on my admin bar."
747
  msgstr "Je veux ce menu d'accès rapide génial sur ma barre d'administration."
748
 
749
- #: inc/admin/ui/options.php:308
 
 
 
 
750
  #, php-format
751
  msgid ""
752
  "Once your settings saved, optimize all your images by using the %sImagify Bulk "
@@ -755,11 +622,11 @@ msgstr ""
755
  "Une fois vos paramètres enregistrés, optimisez toutes vos images en utilisant "
756
  "la fonctionnalité d’%soptimisation en masse%s d’Imagify."
757
 
758
- #: inc/admin/ui/options.php:316
759
  msgid "You can choose three levels of compression"
760
  msgstr "Vous pouvez choisir entre trois niveaux de compression"
761
 
762
- #: inc/admin/ui/options.php:321
763
  msgid ""
764
  "This mode provides lossless optimization, your images will be optimized "
765
  "without any visible change."
@@ -767,20 +634,20 @@ msgstr ""
767
  "Ce niveau permet d'optimiser sans perte, vos images seront optimisées sans "
768
  "aucun changement visible."
769
 
770
- #: inc/admin/ui/options.php:324
771
  msgid ""
772
  "If you want the perfect quality for your images, we recommend you that mode."
773
  msgstr ""
774
  "Si vous souhaitez des images d’une qualité parfaite, nous vous recommandons ce "
775
  "niveau."
776
 
777
- #: inc/admin/ui/options.php:327
778
  msgid "Note: the file size reduction will be less, compared to aggressive mode."
779
  msgstr ""
780
  "Remarque: la réduction du poids des images sera moins importante par rapport "
781
  "au mode agressif."
782
 
783
- #: inc/admin/ui/options.php:334
784
  msgid ""
785
  "This mode provides perfect optimization of your images without any significant "
786
  "quality loss."
@@ -788,7 +655,7 @@ msgstr ""
788
  "Ce niveau permet une optimisation idéale de vos images sans perte de qualité "
789
  "notable."
790
 
791
- #: inc/admin/ui/options.php:337
792
  msgid ""
793
  "This will provide a drastic savings on the initial weight, with a small "
794
  "reduction in image quality. Most of the time it's not even noticeable."
@@ -796,20 +663,20 @@ msgstr ""
796
  "Cela permettra une réduction importante du poids initial avec une légère perte "
797
  "de la qualité d'image qui n’est pas perceptible à l’oeil humain."
798
 
799
- #: inc/admin/ui/options.php:340
800
  msgid "If you want the maximum weight reduction, we recommend using this mode."
801
  msgstr ""
802
  "Si vous souhaitez une réduction du poids plus performante, nous vous "
803
  "recommandons ce niveau."
804
 
805
- #: inc/admin/ui/options.php:347
806
  msgid ""
807
  "This mode will apply all available optimizations for maximum image compression."
808
  msgstr ""
809
  "Ce niveau appliquera toutes les optimisations disponibles pour une compression "
810
  "des images maximale."
811
 
812
- #: inc/admin/ui/options.php:350
813
  msgid ""
814
  "This will provide a huge savings on the initial weight. Sometimes the image "
815
  "quality could be degraded a little."
@@ -817,7 +684,7 @@ msgstr ""
817
  "Cela permettra de considérablement réduire le poids initial. Parfois, la "
818
  "qualité de l’image pourra être légèrement dégradée."
819
 
820
- #: inc/admin/ui/options.php:353
821
  msgid ""
822
  "If you want the maximum weight reduction, and you agree to lose some quality "
823
  "on the images we recommend using this mode."
@@ -825,41 +692,62 @@ msgstr ""
825
  "Si vous souhaitez une réduction du poids optimale et que vous tolérez une "
826
  "baisse de qualité sur vos images, nous vous recommandons ce niveau."
827
 
828
- #: inc/admin/ui/options.php:372
 
 
 
 
 
829
  #, php-format
830
  msgid "I want to compare%s and%s"
831
  msgstr "Je veux comparer%s et%s"
832
 
833
- #: inc/admin/ui/options.php:389
834
  #, php-format
835
  msgid "Original photography about %s"
836
  msgstr "Photographie originale, environ %s"
837
 
838
- #: inc/admin/ui/options.php:394 inc/admin/ui/options.php:399
839
- #: inc/admin/ui/options.php:404
840
  #, php-format
841
  msgid "Optimized photography about %s"
842
  msgstr "Photographie optimisée, environ %s"
843
 
844
- #: inc/admin/ui/options.php:409 inc/admin/ui/options.php:419
845
- #: inc/admin/ui/options.php:439 inc/admin/ui/options.php:460
846
- #: inc/functions/admin-ui.php:58
847
  msgid "Level:"
848
  msgstr "Niveau&nbsp;:"
849
 
850
- #: inc/admin/upload.php:40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
851
  msgid "Errors"
852
  msgstr "Erreurs"
853
 
854
- #: inc/admin/upload.php:43
855
  msgid "Filter by status"
856
  msgstr "Filtrer par statut"
857
 
858
- #: inc/admin/upload.php:46
859
  msgid "All images"
860
  msgstr "Toutes les images"
861
 
862
- #: inc/classes/class-attachment.php:518
863
  msgid ""
864
  "This size isn't authorized to be optimized. Update your Imagify settings if "
865
  "you want to optimize it."
@@ -876,50 +764,383 @@ msgstr "Notez Imagify sur %s"
876
  msgid "Loading..."
877
  msgstr "Chargement…"
878
 
879
- #: inc/functions/admin-ui.php:35
880
  msgid "New Filesize:"
881
  msgstr "Nouveau poids&nbsp;:"
882
 
883
- #: inc/functions/admin-ui.php:51
884
  msgid "Close details"
885
  msgstr "Fermer les détails"
886
 
887
- #: inc/functions/admin-ui.php:51
888
  msgid "View details"
889
  msgstr "Voir les détails"
890
 
891
- #: inc/functions/admin-ui.php:55
892
  msgid "Original Filesize:"
893
  msgstr "Poids de l’original&nbsp;:"
894
 
895
- #: inc/functions/admin-ui.php:61
896
  msgid "Thumbnails Optimized:"
897
  msgstr "Miniatures optimisées&nbsp;:"
898
 
899
- #: inc/functions/admin-ui.php:62
900
  msgid "Overall Saving:"
901
  msgstr "Gain total&nbsp;:"
902
 
903
- #: inc/functions/admin-ui.php:75
904
  msgid "Restoring..."
905
  msgstr "En restauration…"
906
 
907
- #: inc/functions/admin-ui.php:99
908
  msgid "Try again"
909
  msgstr "Réessayer"
910
 
911
- #: inc/functions/admin-ui.php:127 inc/functions/admin-ui.php:133
912
- #: inc/functions/admin-ui.php:139
913
  #, php-format
914
  msgid "Re-Optimize to %s"
915
  msgstr "Réoptimiser en %s"
916
 
917
- #: inc/functions/admin-ui.php:162
918
  #, php-format
919
  msgid "%s can't be optimized"
920
  msgstr "%s ne peut pas être optimisé"
921
 
922
- #: inc/functions/process.php:30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
923
  msgid ""
924
  "Sorry, our servers are temporarily unaccessible. Please, try again in a couple "
925
  "of minutes."
@@ -927,25 +1148,25 @@ msgstr ""
927
  "Désolé, nos serveurs sont temporairement inaccessibles. Nous vous recommandons "
928
  "de ré-essayer dans quelques minutes."
929
 
930
- #: inc/functions/process.php:36
931
  msgid "External HTTP requests are blocked"
932
  msgstr "Les requêtes HTTP externes sont bloquées"
933
 
934
- #: inc/functions/process.php:42
935
  msgid "File path is empty"
936
  msgstr "Le chemin du fichier est vide"
937
 
938
- #: inc/functions/process.php:48
939
  #, php-format
940
  msgid "Could not find %s"
941
  msgstr "Impossible de trouver %s"
942
 
943
- #: inc/functions/process.php:53
944
  #, php-format
945
  msgid "%s is not writable"
946
  msgstr "%s n’est pas accessible en écriture"
947
 
948
- #: inc/functions/process.php:62
949
  #, php-format
950
  msgid "Skipped (%s), image not found."
951
  msgstr "Ignoré (%s), image introuvable."
@@ -956,14 +1177,10 @@ msgstr "https://fr.wordpress.org/plugins/imagify/"
956
 
957
  #. Description of the plugin/theme
958
  msgid ""
959
- "Dramaticaly reduce image file sizes without loosing quality, make your website "
960
  "load faster, boost your SEO and save money on your bandwith using Imagify, the "
961
  "new most advanced image optimization tool."
962
  msgstr ""
963
- "Réduisez drastiquement le poids de vos images sans perte de qualité, accélérez "
964
- "la rapidité de votre site, boostez votre SEO et économisez de l’argent sur "
965
- "votre bande passante en utilisant Imagify, le nouvel outil le plus avancé "
966
- "d’optimisation des images."
967
 
968
  #. Author of the plugin/theme
969
  msgid "WP Media"
@@ -973,6 +1190,41 @@ msgstr ""
973
  msgid "http://wp-media.me"
974
  msgstr ""
975
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
976
  #~ msgid ""
977
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
978
  #~ "improved your website's by reducing your images size."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
+ "POT-Creation-Date: 2016-04-18 15:16+0200\n"
5
+ "PO-Revision-Date: 2016-04-18 15:17+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: fr_FR\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:20 inc/admin/ajax.php:123
24
+ #: inc/admin/meta-boxes.php:34 inc/functions/admin-ui.php:212
25
+ #: inc/functions/i18n.php:46 inc/functions/i18n.php:61
 
 
 
 
 
 
26
  msgid "Optimize"
27
  msgstr "Optimiser"
28
 
29
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:21
30
+ #: inc/functions/admin-ui.php:80 inc/functions/i18n.php:47
31
+ msgid "Restore Original"
32
+ msgstr "Restaurer l’original"
33
+
34
+ #: inc/3rd-party/nextgen-gallery/inc/admin/menu.php:16 inc/admin/menu.php:24
35
+ #: inc/admin/plugins.php:13 inc/admin/ui/bulk.php:81 inc/common/admin-bar.php:39
36
+ msgid "Bulk Optimization"
37
+ msgstr "Optimisation en masse"
38
+
39
+ #: inc/admin/ajax.php:123 inc/admin/meta-boxes.php:29
40
+ #: inc/functions/admin-ui.php:121 inc/functions/admin-ui.php:153
41
+ #: inc/functions/admin-ui.php:159 inc/functions/admin-ui.php:165
42
+ #: inc/functions/admin-ui.php:202 inc/functions/admin-ui.php:212
43
+ msgid "Optimizing..."
44
+ msgstr "En cours d’optimisation…"
45
+
46
+ #: inc/admin/ajax.php:503
47
  msgid "Oops, It's almost over!"
48
  msgstr "Oups, c’est bientôt fini&nbsp;!"
49
 
50
+ #: inc/admin/ajax.php:504
51
  #, php-format
52
  msgid ""
53
  "You have almost used all your credit.%sDon't forget to upgrade your "
56
  "Vous avez bientôt utilisé tout votre crédit.%sN’oubliez pas de mettre à niveau "
57
  "votre abonnement pour continuer à optimiser vos images."
58
 
59
+ #: inc/admin/ajax.php:505 inc/admin/ui/bulk.php:23
60
  msgid "View My Subscription"
61
  msgstr "Voir mon abonnement"
62
 
63
+ #: inc/admin/ajax.php:513 inc/admin/ui/notices.php:251 inc/functions/i18n.php:80
64
  msgid "Oops, It's Over!"
65
  msgstr "Oups, c’est fini !"
66
 
67
+ #: inc/admin/ajax.php:514 inc/admin/ui/notices.php:253 inc/functions/i18n.php:97
68
  #, php-format
69
  msgid ""
70
  "You have consumed all your credit for this month. You will have <strong>%s "
73
  "Vous avez consommé tout votre crédit pour ce mois. Vous aurez à nouveau "
74
  "<strong>%s le %s</strong>."
75
 
76
+ #: inc/admin/ajax.php:515
77
  msgid "Upgrade My Subscription"
78
  msgstr "Mettre à niveau mon abonnement"
79
 
80
+ #: inc/admin/ajax.php:534 inc/admin/ui/bulk.php:17
81
  msgid "Account status"
82
  msgstr "Type de compte"
83
 
84
+ #: inc/admin/ajax.php:535 inc/admin/ui/bulk.php:18
85
  msgid "Your subscription:"
86
  msgstr "Votre abonnement&nbsp;:"
87
 
88
+ #: inc/admin/ajax.php:543 inc/admin/ui/bulk.php:48
89
  #, php-format
90
  msgid "You have %s space credit left"
91
  msgstr "Il vous reste %s de crédit"
92
 
93
+ #: inc/admin/ajax.php:555
94
  msgid "View my subscription"
95
  msgstr "Voir mon abonnement"
96
 
97
+ #: inc/admin/media.php:63 inc/functions/i18n.php:57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  msgid "Compare Original VS Optimized"
99
  msgstr "Comparer Originale VS Optimisée"
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  #. Plugin Name of the plugin/theme
102
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
103
+ #: inc/admin/upload.php:12
104
  msgid "Imagify"
105
  msgstr "Imagify"
106
 
107
+ #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:195
108
  msgid "Invalid API key"
109
  msgstr "Clé API invalide"
110
 
111
+ #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:197
112
  msgid "Check your Settings"
113
  msgstr "Vérifiez vos réglages"
114
 
115
+ #: inc/admin/options.php:120
116
  msgid "Cheatin&#8217; uh?"
117
  msgstr "Cheatin&#8217; uh?"
118
 
119
+ #: inc/admin/options.php:128
120
  msgid "<strong>ERROR</strong>: options page not found."
121
  msgstr "<strong>Erreur</strong> : page d’options introuvable."
122
 
123
+ #: inc/admin/plugins.php:14 inc/admin/ui/options.php:74
124
  #: inc/common/admin-bar.php:30
125
  msgid "Settings"
126
  msgstr "Réglages"
133
  msgid "More info"
134
  msgstr "Plus d’infos"
135
 
136
+ #: inc/admin/ui/bulk.php:91
137
+ msgid "Overview"
138
+ msgstr "Vue d'ensemble"
139
+
140
+ #: inc/admin/ui/bulk.php:99
141
+ #, php-format
142
+ msgid "You optimized %s images of your website"
143
+ msgstr "Vous avez optimisé %s des images de votre site"
144
+
145
+ #: inc/admin/ui/bulk.php:103
146
+ msgid "Statistics"
147
+ msgstr "Statistiques"
148
+
149
+ #: inc/admin/ui/bulk.php:115
150
+ msgid "that's the number of images you optimized with Imagify"
151
+ msgstr "c’est le nombre d’images que %svous avez optimisé avec Imagify"
152
+
153
+ #: inc/admin/ui/bulk.php:120
154
+ msgid "Original size"
155
+ msgstr "Poids de l’original"
156
+
157
+ #: inc/admin/ui/bulk.php:125
158
+ msgid "Optimized size"
159
+ msgstr "Poids optimisé"
160
+
161
+ #: inc/admin/ui/bulk.php:136
162
+ #, php-format
163
+ msgid "that's the size you saved %sby using Imagify"
164
+ msgstr "c’est le poids que vous avez économisé %sen utilisant Imagify"
165
+
166
+ #: inc/admin/ui/bulk.php:142
167
  msgid "Information"
168
  msgstr "Informations"
169
 
170
+ #: inc/admin/ui/bulk.php:146
171
  msgid ""
172
  "Please be aware that optimizing a large number of images can take a while "
173
  "depending on your server and network speed."
175
  "Prenez conscience que l’optimisation d’un grand nombre d’images peut prendre "
176
  "du temps en fonction de la rapidité de votre serveur et de votre connexion."
177
 
178
+ #: inc/admin/ui/bulk.php:149
179
  #, php-format
180
  msgid ""
181
  "If you have more than %s images, you will need to launch the bulk optimization "
184
  "Si vous avez plus de %s images, vous devrez lancer l’optimisation en masse "
185
  "plusieurs fois."
186
 
187
+ #: inc/admin/ui/bulk.php:153
188
  msgid ""
189
  "You must keep this page open while the bulk optimizaton is processing. If you "
190
  "leave you can come back to continue where it left off."
193
  "en cours. Si vous la quittez, vous pouvez revenir pour continuer là où vous en "
194
  "étiez."
195
 
196
+ #: inc/admin/ui/bulk.php:164
197
  msgid "Select Your Compression Level"
198
  msgstr "Sélectionnez votre niveau de compression"
199
 
200
+ #: inc/admin/ui/bulk.php:166 inc/admin/ui/bulk.php:192
201
+ #: inc/admin/ui/options.php:136 inc/admin/ui/options.php:365
202
+ #: inc/admin/ui/options.php:404 inc/admin/ui/options.php:421
203
+ #: inc/admin/ui/options.php:481 inc/classes/abstracts/abstract-attachment.php:114
204
+ #: inc/functions/admin-ui.php:153
205
  msgid "Ultra"
206
  msgstr "Ultra"
207
 
208
+ #: inc/admin/ui/bulk.php:169 inc/admin/ui/bulk.php:187
209
+ #: inc/admin/ui/options.php:131 inc/admin/ui/options.php:352
210
+ #: inc/admin/ui/options.php:403 inc/admin/ui/options.php:416
211
+ #: inc/admin/ui/options.php:460 inc/classes/abstracts/abstract-attachment.php:117
212
+ #: inc/functions/admin-ui.php:159
213
  msgid "Aggressive"
214
  msgstr "Agressif"
215
 
216
+ #: inc/admin/ui/bulk.php:172 inc/admin/ui/bulk.php:182
217
+ #: inc/admin/ui/options.php:126 inc/admin/ui/options.php:339
218
+ #: inc/admin/ui/options.php:402 inc/admin/ui/options.php:411
219
+ #: inc/admin/ui/options.php:440 inc/classes/abstracts/abstract-attachment.php:120
220
+ #: inc/functions/admin-ui.php:165
221
  msgid "Normal"
222
  msgstr "Normal"
223
 
224
+ #: inc/admin/ui/bulk.php:176
225
+ #, php-format
226
+ msgid "Your default setting: %s"
227
+ msgstr "Votre réglage par défaut&nbsp;: %s"
228
 
229
+ #: inc/admin/ui/bulk.php:201
230
  #, php-format
231
  msgid "Don't forget to check %syour settings%s before bulk optimization."
232
  msgstr ""
233
  "N’oubliez pas de vérifier %svos réglages%s avant l’optimisation en masse."
234
 
235
+ #: inc/admin/ui/bulk.php:208
236
+ msgid "Let's go!"
237
+ msgstr "C’est parti&nbsp;!"
238
+
239
+ #: inc/admin/ui/bulk.php:215
240
  msgid "Imagif'em all"
241
  msgstr "Imagif'em all"
242
 
243
+ #: inc/admin/ui/bulk.php:220
244
  #, php-format
245
+ msgid ""
246
+ "All images greater than %s will be optimized when using a paying monthly plan."
247
  msgstr ""
248
+ "Toutes les images de plus de %s seront optimisées lors de l'utilisation d'un "
249
+ "abonnement mensuel payant."
250
 
251
+ #: inc/admin/ui/bulk.php:239
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  msgid "Well done!"
253
  msgstr "Bien joué&nbsp;!"
254
 
255
+ #: inc/admin/ui/bulk.php:240
256
  #, php-format
257
  msgid "you saved %1$s out of %2$s"
258
  msgstr "vous avez économisé %1$s sur %2$s"
259
 
260
+ #: inc/admin/ui/bulk.php:245
261
  msgid "Share your awesome result"
262
  msgstr "Partagez votre résultat"
263
 
264
+ #: inc/admin/ui/bulk.php:260
265
  msgid "Compression process results"
266
  msgstr "Résultats du processus de compression"
267
 
268
+ #: inc/admin/ui/bulk.php:263
269
  msgid "Filename"
270
  msgstr "Nom du fichier"
271
 
272
+ #: inc/admin/ui/bulk.php:264
273
  msgid "Status"
274
  msgstr "Statut"
275
 
276
+ #: inc/admin/ui/bulk.php:265 inc/admin/ui/options.php:401
277
+ #: inc/admin/ui/options.php:406 inc/admin/ui/options.php:430
278
  msgid "Original"
279
  msgstr "Original"
280
 
281
+ #: inc/admin/ui/bulk.php:266 inc/admin/upload.php:41 inc/functions/i18n.php:76
282
+ msgid "Optimized"
283
+ msgstr "Optimisées"
284
+
285
+ #: inc/admin/ui/bulk.php:267
286
  msgid "Percentage"
287
  msgstr "Pourcentage"
288
 
289
+ #: inc/admin/ui/bulk.php:268
290
  msgid "Thumbnails optimized"
291
  msgstr "Miniatures optimisées"
292
 
293
+ #: inc/admin/ui/bulk.php:269
294
  msgid "Overall saving"
295
  msgstr "Gain total"
296
 
297
+ #: inc/admin/ui/bulk.php:274
298
  msgid "file"
299
  msgstr "fichier"
300
 
301
+ #: inc/admin/ui/bulk.php:275
302
  msgid "error"
303
  msgstr "erreur"
304
 
305
+ #: inc/admin/ui/bulk.php:276
306
  msgid "Total:"
307
  msgstr "Total&nbsp;:"
308
 
309
+ #: inc/admin/ui/bulk.php:277
310
  msgid "Gain:"
311
  msgstr "Gain&nbsp;:"
312
 
313
+ #: inc/admin/ui/bulk.php:294
314
  #, php-format
315
  msgid "%sStart the bulk optimization%s"
316
  msgstr "%sDémarrer l’optimisation en masse%s"
374
  msgid "Go to Settings"
375
  msgstr "Aller aux réglages"
376
 
377
+ #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:97
378
  msgid "Your API key isn't valid!"
379
  msgstr "Votre clé API n’est pas valide&nbsp;!"
380
 
437
  msgid "Switch to the List View"
438
  msgstr "Basculer en vue liste"
439
 
440
+ #: inc/admin/ui/notices.php:253 inc/functions/i18n.php:94
441
+ #: inc/functions/i18n.php:97
442
+ #, php-format
443
+ msgid ""
444
+ "To continue to optimize your images, log in to your Imagify account to %sbuy a "
445
+ "pack or subscribe to a plan%s."
446
+ msgstr ""
447
+ "Pour continuer à optimiser vos images, connectez-vous à votre compte Imagify "
448
+ "pour %sacheter un pack ou souscrire à un plan%s."
449
+
450
+ #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:28
451
  msgid "Discover the best caching plugin to speed up your website."
452
  msgstr "Découvrez le meilleur plugin de cache pour accélérer votre site."
453
 
454
+ #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:36
455
  #, php-format
456
  msgid "%sGet %s off%s with this coupon code:%s"
457
  msgstr "Obtenez %s%s%s de réduction avec le code promo&nbsp;:%s"
458
 
459
+ #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:41
460
  msgid "Get WP Rocket now"
461
  msgstr "Je veux WP Rocket&nbsp;!"
462
 
469
  "%1$sFélicitations%2$s ! Vous avez optimisé %1$s%3$d images%2$s et améliorez le "
470
  "temps de chargement de votre site en réduisant le poids de vos images."
471
 
472
+ #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:59
473
  #, php-format
474
  msgid ""
475
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
478
  "%sVous aimez ce plugin&nbsp;?%s Prenez quelques secondes pour le %snoter sur "
479
  "WordPress.org%s&nbsp;!"
480
 
481
+ #: inc/admin/ui/options.php:22
482
  msgid "Is your website too slow?"
483
  msgstr "Votre site est trop lent ?"
484
 
485
+ #: inc/admin/ui/options.php:84
486
  msgid "API Key"
487
  msgstr "Clé API"
488
 
489
+ #: inc/admin/ui/options.php:91 inc/functions/i18n.php:31
490
+ msgid "Your API key is valid."
491
+ msgstr "Votre clé API est valide."
492
+
493
+ #: inc/admin/ui/options.php:104
494
  #, php-format
495
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
496
  msgstr "Vous n’avez pas encore de clé API ? %sCréez en une, c’est GRATUIT%s."
497
 
498
+ #: inc/admin/ui/options.php:121
499
  msgid "Optimization Level"
500
  msgstr "Niveau d’optimisation"
501
 
502
+ #: inc/admin/ui/options.php:141
503
  msgid "More info?"
504
  msgstr "Plus d’infos&nbsp;?"
505
 
506
+ #: inc/admin/ui/options.php:148
507
  #, php-format
508
  msgid "Need help to choose? %sTry the Visual Comparison%s"
509
  msgstr "Besoin d’aide pour choisir? %sEssayer le comparateur visuel%s"
510
 
511
+ #: inc/admin/ui/options.php:157 inc/admin/ui/options.php:161
512
  msgid "Auto-Optimize images on upload"
513
  msgstr "Optimiser automatiquement les images envoyées"
514
 
515
+ #: inc/admin/ui/options.php:165
516
  msgid "Automatically optimize every image you upload to WordPress."
517
  msgstr "Optimiser automatiquement chaque image que vous enverrez à WordPress."
518
 
519
+ #: inc/admin/ui/options.php:170 inc/admin/ui/options.php:173
520
  msgid "Backup original images"
521
  msgstr "​Conserver une copie des images d'origine"
522
 
523
+ #: inc/admin/ui/options.php:177
524
  msgid ""
525
  "Keep your original images in a separate folder before optimization process."
526
  msgstr ""
527
  "Garder vos images d’origine dans un dossier séparé avant le processus "
528
  "d’optimisation."
529
 
530
+ #: inc/admin/ui/options.php:182 inc/admin/ui/options.php:185
531
  msgid "Resize larger images"
532
  msgstr "Redimensionner les images trop grandes"
533
 
534
+ #: inc/admin/ui/options.php:191
535
  #, php-format
536
  msgid "to maximum %s pixels width"
537
  msgstr "au maximum %s pixels de large"
538
 
539
+ #: inc/admin/ui/options.php:202
540
  #, php-format
541
  msgid ""
542
  "This option is recommended to reduce larger images. You can save up to 80%% "
548
  "largeur ne doit pas être inférieure à la plus grande largeur de vos miniatures "
549
  "qui est actuellement de %spx."
550
 
551
+ #: inc/admin/ui/options.php:209 inc/admin/ui/options.php:212
552
  msgid "EXIF Data"
553
  msgstr "Données EXIF"
554
 
555
+ #: inc/admin/ui/options.php:216
556
  msgid ""
557
  "Keep all EXIF data from your images. EXIF are informations stored in your "
558
  "pictures like shutter speed, exposure compensation, ISO, etc..."
561
  "stockées dans vos photos comme l’ouverture de l’objectif, l’exposition, ISO, "
562
  "etc …"
563
 
564
+ #: inc/admin/ui/options.php:217
565
  msgid "Learn more"
566
  msgstr "En savoir plus"
567
 
568
+ #: inc/admin/ui/options.php:219
569
  msgid ""
570
  "If you are a photographer, you may be interested in this option if you are "
571
  "displaying on your pages some info like the model of your camera."
574
  "vous affichez quelques infos comme votre le modèle de votre appareil photo sur "
575
  "vos pages."
576
 
577
+ #: inc/admin/ui/options.php:228
578
  msgid "Files optimization"
579
  msgstr "Tailles à optimiser"
580
 
581
+ #: inc/admin/ui/options.php:231
582
  msgid ""
583
  "You can choose to compress different image sizes created by WordPress here."
584
  msgstr ""
585
  "Vous pouvez choisir d’optimiser les différents formats générés par WordPress "
586
  "ici."
587
 
588
+ #: inc/admin/ui/options.php:233
589
  #, php-format
590
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
591
  msgstr "La %staille d’origine%s est %sautomatiquement optimisée%s par Imagify."
592
 
593
+ #: inc/admin/ui/options.php:236
594
  msgid ""
595
  "Remember each additional image size will affect your Imagify monthly usage!"
596
  msgstr ""
597
  "Pour rappel, chaque format d’image additionnel affectera votre quota d’usage "
598
  "mensuel d’Imagify."
599
 
600
+ #: inc/admin/ui/options.php:289
601
  msgid "Display options"
602
  msgstr "Options d’affichage"
603
 
604
+ #: inc/admin/ui/options.php:294 inc/admin/ui/options.php:299
605
  msgid "Show Admin Bar menu"
606
  msgstr "Afficher le menu dans la barre d'administration"
607
 
608
+ #: inc/admin/ui/options.php:300
609
  msgid "I want this awesome quick access menu on my admin bar."
610
  msgstr "Je veux ce menu d'accès rapide génial sur ma barre d'administration."
611
 
612
+ #: inc/admin/ui/options.php:319
613
+ msgid "Save &amp; Go to Bulk Optimizer"
614
+ msgstr "Enregistrer &amp; Aller à l’optimisation en masse"
615
+
616
+ #: inc/admin/ui/options.php:328
617
  #, php-format
618
  msgid ""
619
  "Once your settings saved, optimize all your images by using the %sImagify Bulk "
622
  "Une fois vos paramètres enregistrés, optimisez toutes vos images en utilisant "
623
  "la fonctionnalité d’%soptimisation en masse%s d’Imagify."
624
 
625
+ #: inc/admin/ui/options.php:336
626
  msgid "You can choose three levels of compression"
627
  msgstr "Vous pouvez choisir entre trois niveaux de compression"
628
 
629
+ #: inc/admin/ui/options.php:341
630
  msgid ""
631
  "This mode provides lossless optimization, your images will be optimized "
632
  "without any visible change."
634
  "Ce niveau permet d'optimiser sans perte, vos images seront optimisées sans "
635
  "aucun changement visible."
636
 
637
+ #: inc/admin/ui/options.php:344
638
  msgid ""
639
  "If you want the perfect quality for your images, we recommend you that mode."
640
  msgstr ""
641
  "Si vous souhaitez des images d’une qualité parfaite, nous vous recommandons ce "
642
  "niveau."
643
 
644
+ #: inc/admin/ui/options.php:347
645
  msgid "Note: the file size reduction will be less, compared to aggressive mode."
646
  msgstr ""
647
  "Remarque: la réduction du poids des images sera moins importante par rapport "
648
  "au mode agressif."
649
 
650
+ #: inc/admin/ui/options.php:354
651
  msgid ""
652
  "This mode provides perfect optimization of your images without any significant "
653
  "quality loss."
655
  "Ce niveau permet une optimisation idéale de vos images sans perte de qualité "
656
  "notable."
657
 
658
+ #: inc/admin/ui/options.php:357
659
  msgid ""
660
  "This will provide a drastic savings on the initial weight, with a small "
661
  "reduction in image quality. Most of the time it's not even noticeable."
663
  "Cela permettra une réduction importante du poids initial avec une légère perte "
664
  "de la qualité d'image qui n’est pas perceptible à l’oeil humain."
665
 
666
+ #: inc/admin/ui/options.php:360
667
  msgid "If you want the maximum weight reduction, we recommend using this mode."
668
  msgstr ""
669
  "Si vous souhaitez une réduction du poids plus performante, nous vous "
670
  "recommandons ce niveau."
671
 
672
+ #: inc/admin/ui/options.php:367
673
  msgid ""
674
  "This mode will apply all available optimizations for maximum image compression."
675
  msgstr ""
676
  "Ce niveau appliquera toutes les optimisations disponibles pour une compression "
677
  "des images maximale."
678
 
679
+ #: inc/admin/ui/options.php:370
680
  msgid ""
681
  "This will provide a huge savings on the initial weight. Sometimes the image "
682
  "quality could be degraded a little."
684
  "Cela permettra de considérablement réduire le poids initial. Parfois, la "
685
  "qualité de l’image pourra être légèrement dégradée."
686
 
687
+ #: inc/admin/ui/options.php:373
688
  msgid ""
689
  "If you want the maximum weight reduction, and you agree to lose some quality "
690
  "on the images we recommend using this mode."
692
  "Si vous souhaitez une réduction du poids optimale et que vous tolérez une "
693
  "baisse de qualité sur vos images, nous vous recommandons ce niveau."
694
 
695
+ #: inc/admin/ui/options.php:380 inc/admin/ui/options.php:502
696
+ #: inc/functions/admin-ui.php:659 inc/functions/i18n.php:58
697
+ msgid "Close"
698
+ msgstr "Fermer"
699
+
700
+ #: inc/admin/ui/options.php:392
701
  #, php-format
702
  msgid "I want to compare%s and%s"
703
  msgstr "Je veux comparer%s et%s"
704
 
705
+ #: inc/admin/ui/options.php:409
706
  #, php-format
707
  msgid "Original photography about %s"
708
  msgstr "Photographie originale, environ %s"
709
 
710
+ #: inc/admin/ui/options.php:414 inc/admin/ui/options.php:419
711
+ #: inc/admin/ui/options.php:424
712
  #, php-format
713
  msgid "Optimized photography about %s"
714
  msgstr "Photographie optimisée, environ %s"
715
 
716
+ #: inc/admin/ui/options.php:429 inc/admin/ui/options.php:439
717
+ #: inc/admin/ui/options.php:459 inc/admin/ui/options.php:480
718
+ #: inc/functions/admin-ui.php:59
719
  msgid "Level:"
720
  msgstr "Niveau&nbsp;:"
721
 
722
+ #: inc/admin/ui/options.php:433 inc/admin/ui/options.php:443
723
+ #: inc/admin/ui/options.php:463 inc/admin/ui/options.php:484
724
+ #: inc/functions/i18n.php:59
725
+ msgid "File Size:"
726
+ msgstr "Poids du fichier:"
727
+
728
+ #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:467
729
+ #: inc/admin/ui/options.php:488 inc/functions/admin-ui.php:45
730
+ #: inc/functions/i18n.php:60
731
+ msgid "Original Saving:"
732
+ msgstr "Gain sur l’original&nbsp;:"
733
+
734
+ #: inc/admin/upload.php:42 inc/functions/i18n.php:77
735
+ msgid "Unoptimized"
736
+ msgstr "Non optimisées"
737
+
738
+ #: inc/admin/upload.php:43
739
  msgid "Errors"
740
  msgstr "Erreurs"
741
 
742
+ #: inc/admin/upload.php:46
743
  msgid "Filter by status"
744
  msgstr "Filtrer par statut"
745
 
746
+ #: inc/admin/upload.php:49
747
  msgid "All images"
748
  msgstr "Toutes les images"
749
 
750
+ #: inc/classes/class-attachment.php:266
751
  msgid ""
752
  "This size isn't authorized to be optimized. Update your Imagify settings if "
753
  "you want to optimize it."
764
  msgid "Loading..."
765
  msgstr "Chargement…"
766
 
767
+ #: inc/functions/admin-ui.php:36
768
  msgid "New Filesize:"
769
  msgstr "Nouveau poids&nbsp;:"
770
 
771
+ #: inc/functions/admin-ui.php:52
772
  msgid "Close details"
773
  msgstr "Fermer les détails"
774
 
775
+ #: inc/functions/admin-ui.php:52
776
  msgid "View details"
777
  msgstr "Voir les détails"
778
 
779
+ #: inc/functions/admin-ui.php:56
780
  msgid "Original Filesize:"
781
  msgstr "Poids de l’original&nbsp;:"
782
 
783
+ #: inc/functions/admin-ui.php:62
784
  msgid "Thumbnails Optimized:"
785
  msgstr "Miniatures optimisées&nbsp;:"
786
 
787
+ #: inc/functions/admin-ui.php:63
788
  msgid "Overall Saving:"
789
  msgstr "Gain total&nbsp;:"
790
 
791
+ #: inc/functions/admin-ui.php:80
792
  msgid "Restoring..."
793
  msgstr "En restauration…"
794
 
795
+ #: inc/functions/admin-ui.php:121
796
  msgid "Try again"
797
  msgstr "Réessayer"
798
 
799
+ #: inc/functions/admin-ui.php:153 inc/functions/admin-ui.php:159
800
+ #: inc/functions/admin-ui.php:165
801
  #, php-format
802
  msgid "Re-Optimize to %s"
803
  msgstr "Réoptimiser en %s"
804
 
805
+ #: inc/functions/admin-ui.php:189
806
  #, php-format
807
  msgid "%s can't be optimized"
808
  msgstr "%s ne peut pas être optimisé"
809
 
810
+ #: inc/functions/admin-ui.php:237
811
+ msgid "What plan do I need?"
812
+ msgstr ""
813
+
814
+ #: inc/functions/admin-ui.php:241
815
+ msgid "You're new to Imagify?"
816
+ msgstr ""
817
+
818
+ #: inc/functions/admin-ui.php:242
819
+ msgid ""
820
+ "Let us help you by analyzing your existing images and determinate the best "
821
+ "plan for you"
822
+ msgstr ""
823
+
824
+ #: inc/functions/admin-ui.php:277
825
+ msgid "Choose Plan"
826
+ msgstr ""
827
+
828
+ #: inc/functions/admin-ui.php:278
829
+ msgid "Payment Info"
830
+ msgstr ""
831
+
832
+ #: inc/functions/admin-ui.php:283
833
+ msgid "We analysed your images"
834
+ msgstr ""
835
+
836
+ #: inc/functions/admin-ui.php:289
837
+ #, php-format
838
+ msgid "You have %s images"
839
+ msgstr ""
840
+
841
+ #: inc/functions/admin-ui.php:295
842
+ #, php-format
843
+ msgid "You actually have %s of images in your library."
844
+ msgstr ""
845
+
846
+ #: inc/functions/admin-ui.php:299
847
+ #, php-format
848
+ msgid "You upload around %s of images per month."
849
+ msgstr ""
850
+
851
+ #: inc/functions/admin-ui.php:306
852
+ msgid "We recommend you this plan"
853
+ msgstr ""
854
+
855
+ #: inc/functions/admin-ui.php:311
856
+ msgid "Subscribe a monthly plan"
857
+ msgstr ""
858
+
859
+ #: inc/functions/admin-ui.php:312
860
+ msgid "Subscribe a yearly plan"
861
+ msgstr ""
862
+
863
+ #: inc/functions/admin-ui.php:316 inc/functions/admin-ui.php:452
864
+ #: inc/functions/admin-ui.php:620
865
+ msgid "Monthly"
866
+ msgstr ""
867
+
868
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
869
+ #: inc/functions/admin-ui.php:623
870
+ msgid "Yearly"
871
+ msgstr ""
872
+
873
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
874
+ #: inc/functions/admin-ui.php:623
875
+ msgid "2 months free"
876
+ msgstr ""
877
+
878
+ #: inc/functions/admin-ui.php:330 inc/functions/admin-ui.php:349
879
+ #: inc/functions/admin-ui.php:465 inc/functions/admin-ui.php:475
880
+ msgid "/month"
881
+ msgstr ""
882
+
883
+ #: inc/functions/admin-ui.php:332 inc/functions/admin-ui.php:380
884
+ #: inc/functions/admin-ui.php:467 inc/functions/admin-ui.php:518
885
+ #, php-format
886
+ msgid "approx: %s images"
887
+ msgstr ""
888
+
889
+ #: inc/functions/admin-ui.php:353 inc/functions/admin-ui.php:481
890
+ #, php-format
891
+ msgid ""
892
+ "%s per<br>\n"
893
+ "additionnal Gb"
894
+ msgstr ""
895
+
896
+ #: inc/functions/admin-ui.php:358 inc/functions/admin-ui.php:393
897
+ #: inc/functions/admin-ui.php:577 inc/functions/admin-ui.php:598
898
+ msgid "Choose another plan"
899
+ msgstr ""
900
+
901
+ #: inc/functions/admin-ui.php:368
902
+ msgid "Optimize the images you already have, buy a one-time plan"
903
+ msgstr ""
904
+
905
+ #: inc/functions/admin-ui.php:404
906
+ msgid "Checkout"
907
+ msgstr ""
908
+
909
+ #: inc/functions/admin-ui.php:408
910
+ msgid ""
911
+ "Monthly plans comes with credits which is renewed every months. The billing "
912
+ "happens automatically each month or year depending the billing period you "
913
+ "choose."
914
+ msgstr ""
915
+
916
+ #: inc/functions/admin-ui.php:432
917
+ msgid "Monthly Plans"
918
+ msgstr ""
919
+
920
+ #: inc/functions/admin-ui.php:437
921
+ msgid "One Time Plans"
922
+ msgstr ""
923
+
924
+ #: inc/functions/admin-ui.php:447
925
+ msgid ""
926
+ "Monthly plans come with credits which is renewed every months. The billing "
927
+ "happens automatically each month or year depending the billing period you "
928
+ "choose."
929
+ msgstr ""
930
+
931
+ #: inc/functions/admin-ui.php:479 inc/functions/admin-ui.php:526
932
+ msgid "we recommend for you"
933
+ msgstr ""
934
+
935
+ #: inc/functions/admin-ui.php:487 inc/functions/admin-ui.php:530
936
+ msgid "Choose plan"
937
+ msgstr ""
938
+
939
+ #: inc/functions/admin-ui.php:495
940
+ msgid "Need more?"
941
+ msgstr ""
942
+
943
+ #: inc/functions/admin-ui.php:496
944
+ msgid "for special needs"
945
+ msgstr ""
946
+
947
+ #: inc/functions/admin-ui.php:500
948
+ msgid "Contact Us"
949
+ msgstr ""
950
+
951
+ #: inc/functions/admin-ui.php:507
952
+ msgid ""
953
+ "One time plans are useful if you have a lots of existing images which need to "
954
+ "be optimized. You can use it for bulk optimizing all your past images. You "
955
+ "will pay only once."
956
+ msgstr ""
957
+
958
+ #: inc/functions/admin-ui.php:560
959
+ msgid "Your order"
960
+ msgstr ""
961
+
962
+ #: inc/functions/admin-ui.php:565
963
+ #, php-format
964
+ msgid "%scancel%sYou just removed %s"
965
+ msgstr ""
966
+
967
+ #: inc/functions/admin-ui.php:573 inc/functions/admin-ui.php:594
968
+ msgid "Remove this item"
969
+ msgstr ""
970
+
971
+ #: inc/functions/admin-ui.php:580
972
+ #, php-format
973
+ msgid "%s per month"
974
+ msgstr ""
975
+
976
+ #: inc/functions/admin-ui.php:601
977
+ #, php-format
978
+ msgid "one time %s"
979
+ msgstr ""
980
+
981
+ #: inc/functions/admin-ui.php:614
982
+ #, php-format
983
+ msgid ""
984
+ "Switch to yearly subscription and <br><strong class=\"imagify-dark\">save %s "
985
+ "per year!</strong>"
986
+ msgstr ""
987
+
988
+ #: inc/functions/admin-ui.php:615
989
+ #, php-format
990
+ msgid ""
991
+ "Perfect!<br>You're <strong class=\"imagify-dark\">saving %s per year!</strong>"
992
+ msgstr ""
993
+
994
+ #: inc/functions/admin-ui.php:654
995
+ msgid "Thank you for being awesome!"
996
+ msgstr ""
997
+
998
+ #: inc/functions/admin-ui.php:665
999
+ msgid "What do our user think about Imagify"
1000
+ msgstr ""
1001
+
1002
+ #: inc/functions/admin-ui.php:699
1003
+ msgid "Secure Credit Card Payment"
1004
+ msgstr ""
1005
+
1006
+ #: inc/functions/admin-ui.php:700
1007
+ msgid "This is secure 128-bits SSL encrypted payment"
1008
+ msgstr ""
1009
+
1010
+ #: inc/functions/i18n.php:19
1011
+ msgid "Let's get you started!"
1012
+ msgstr "C’est parti&nbsp;!"
1013
+
1014
+ #: inc/functions/i18n.php:20
1015
+ msgid "Enter your email to get an API key:"
1016
+ msgstr "Indiquez votre e-mail pour recevoir votre clé API&nbsp;:"
1017
+
1018
+ #: inc/functions/i18n.php:21
1019
+ msgid "Sign Up"
1020
+ msgstr "S’inscrire"
1021
+
1022
+ #: inc/functions/i18n.php:22
1023
+ msgid "You need to specify an email!"
1024
+ msgstr "Vous devez indiquer un e-mail&nbsp;!"
1025
+
1026
+ #: inc/functions/i18n.php:23 inc/functions/i18n.php:29
1027
+ msgid "Congratulations!"
1028
+ msgstr "Félicitations&nbsp;!"
1029
+
1030
+ #: inc/functions/i18n.php:24
1031
+ msgid ""
1032
+ "Your account has been succesfully created. Please check your mailbox, you are "
1033
+ "going to receive an email with API key."
1034
+ msgstr ""
1035
+ "Votre compte a été créé avec succès. Vérifiez votre boîte de réception, vous "
1036
+ "allez recevoir un e-mail avec votre clé API."
1037
+
1038
+ #: inc/functions/i18n.php:25
1039
+ msgid "Connect to Imagify!"
1040
+ msgstr "Se connecter à Imagify&nbsp;!"
1041
+
1042
+ #: inc/functions/i18n.php:26
1043
+ msgid "Paste your API key below:"
1044
+ msgstr "Copiez votre clé API ci-dessous&nbsp;:"
1045
+
1046
+ #: inc/functions/i18n.php:27
1047
+ msgid "Connect me"
1048
+ msgstr "Connectez-moi"
1049
+
1050
+ #: inc/functions/i18n.php:28
1051
+ msgid "Check in progress..."
1052
+ msgstr "Vérification en cours…"
1053
+
1054
+ #: inc/functions/i18n.php:30
1055
+ msgid ""
1056
+ "Your API key is valid. You can now configure the Imagify settings to optimize "
1057
+ "your images."
1058
+ msgstr ""
1059
+ "Votre clé API est valide. Vous pouvez maintenant configurer les réglages "
1060
+ "d’Imagify pour optimiser vos images."
1061
+
1062
+ #: inc/functions/i18n.php:32
1063
+ msgid "Cancel"
1064
+ msgstr ""
1065
+
1066
+ #: inc/functions/i18n.php:38
1067
+ msgid "Don't Need a Parachute?"
1068
+ msgstr "Pas besoin d’un parachute&nbsp;?"
1069
+
1070
+ #: inc/functions/i18n.php:39
1071
+ msgid ""
1072
+ "If you keep this option deactivated, you won't be able to re-optimize your "
1073
+ "images to another compression level and restore your original images in case "
1074
+ "of need."
1075
+ msgstr ""
1076
+ "Si vous gardez cette option désactivée, vous ne serez pas en mesure de "
1077
+ "réoptimiser vos images à un autre niveau de compression et de restaurer vos "
1078
+ "images originales en cas de besoin."
1079
+
1080
+ #: inc/functions/i18n.php:55
1081
+ msgid "Original Image"
1082
+ msgstr "Image d’origine"
1083
+
1084
+ #: inc/functions/i18n.php:56
1085
+ msgid "Optimized Image"
1086
+ msgstr "Image optimisée"
1087
+
1088
+ #: inc/functions/i18n.php:70
1089
+ msgid "Please wait..."
1090
+ msgstr "Un peu d’attente…"
1091
+
1092
+ #: inc/functions/i18n.php:71
1093
+ msgid ""
1094
+ "We are trying to get your unoptimized images, it may take time depending on "
1095
+ "the number of images."
1096
+ msgstr ""
1097
+ "Nous sommes en train de récupérer vos images non-optimisées, cela peut prendre "
1098
+ "du temps en fonction du nombre d’images."
1099
+
1100
+ #: inc/functions/i18n.php:73
1101
+ msgid "Oops, There is something wrong!"
1102
+ msgstr "Oups, une erreur est survenue !"
1103
+
1104
+ #: inc/functions/i18n.php:74
1105
+ msgid ""
1106
+ "An unknow error occurred when we tried to get all your unoptimized images. Try "
1107
+ "again and if the issue still persist, please contact us!"
1108
+ msgstr ""
1109
+ "Une erreur inconnue est survenue lorsque nous avons essayé d’obtenir toutes "
1110
+ "vos images non optimisées. Essayez encore et si le problème persiste, "
1111
+ "contactez-nous !"
1112
+
1113
+ #: inc/functions/i18n.php:78
1114
+ msgid "Error"
1115
+ msgstr "Erreur"
1116
+
1117
+ #: inc/functions/i18n.php:81
1118
+ msgid "Hold on!"
1119
+ msgstr "Halte là&nbsp;!"
1120
+
1121
+ #: inc/functions/i18n.php:82
1122
+ msgid "All your images have been optimized by Imagify. Congratulations!"
1123
+ msgstr "Toutes vos images ont été optimisées par Imagify. Félicitations&nbsp;!"
1124
+
1125
+ #: inc/functions/i18n.php:84
1126
+ #, php-format
1127
+ msgid ""
1128
+ "Discover @imagify, the new compression tool to optimize your images for free. "
1129
+ "I saved %1$s out of %2$s!"
1130
+ msgstr ""
1131
+ "Découvrez @imagify, le nouvel outil de compression pour optimiser vos images. "
1132
+ "J’ai optimisé %1$s sur %2$s !"
1133
+
1134
+ #: inc/functions/i18n.php:88
1135
+ msgid "Imagify is still processing. Are you sure you want to leave this page?"
1136
+ msgstr ""
1137
+ "Imagify travaille encore. Êtes-vous sûr(e) de vouloir quitter cette page ?"
1138
+
1139
+ #: inc/functions/i18n.php:97
1140
+ msgid "F j, Y"
1141
+ msgstr ""
1142
+
1143
+ #: inc/functions/process.php:41
1144
  msgid ""
1145
  "Sorry, our servers are temporarily unaccessible. Please, try again in a couple "
1146
  "of minutes."
1148
  "Désolé, nos serveurs sont temporairement inaccessibles. Nous vous recommandons "
1149
  "de ré-essayer dans quelques minutes."
1150
 
1151
+ #: inc/functions/process.php:47
1152
  msgid "External HTTP requests are blocked"
1153
  msgstr "Les requêtes HTTP externes sont bloquées"
1154
 
1155
+ #: inc/functions/process.php:53
1156
  msgid "File path is empty"
1157
  msgstr "Le chemin du fichier est vide"
1158
 
1159
+ #: inc/functions/process.php:59
1160
  #, php-format
1161
  msgid "Could not find %s"
1162
  msgstr "Impossible de trouver %s"
1163
 
1164
+ #: inc/functions/process.php:64
1165
  #, php-format
1166
  msgid "%s is not writable"
1167
  msgstr "%s n’est pas accessible en écriture"
1168
 
1169
+ #: inc/functions/process.php:73
1170
  #, php-format
1171
  msgid "Skipped (%s), image not found."
1172
  msgstr "Ignoré (%s), image introuvable."
1177
 
1178
  #. Description of the plugin/theme
1179
  msgid ""
1180
+ "Dramaticaly reduce image file sizes without losing quality, make your website "
1181
  "load faster, boost your SEO and save money on your bandwith using Imagify, the "
1182
  "new most advanced image optimization tool."
1183
  msgstr ""
 
 
 
 
1184
 
1185
  #. Author of the plugin/theme
1186
  msgid "WP Media"
1190
  msgid "http://wp-media.me"
1191
  msgstr ""
1192
 
1193
+ #~ msgid ""
1194
+ #~ "All images greater than %s%% will be optimized when using a paying monthly "
1195
+ #~ "plan."
1196
+ #~ msgstr ""
1197
+ #~ "Toutes les images de plus de %s %% seront optimisées lors de l'utilisation "
1198
+ #~ "d'un abonnement mensuel payant."
1199
+
1200
+ #~ msgid "You optimized %s of images on your website"
1201
+ #~ msgstr "Vous avez optimisé %s des images de votre site"
1202
+
1203
+ #~ msgid ""
1204
+ #~ "Images greater than 5 MB will be optimized when using a paying monthly plan."
1205
+ #~ msgstr ""
1206
+ #~ "Les images supérieures à 5 Mo seront optimisées lors de l'utilisation d'un "
1207
+ #~ "forfait mensuel payant."
1208
+
1209
+ #~ msgid "Your default setting:"
1210
+ #~ msgstr "Votre réglage par défaut :"
1211
+
1212
+ #~ msgid ""
1213
+ #~ "All images which are over to %s could be optimized using the pro version."
1214
+ #~ msgstr ""
1215
+ #~ "Toutes les images qui font plus de %s pourront être optimisées avec la "
1216
+ #~ "version pro."
1217
+
1218
+ #~ msgid ""
1219
+ #~ "Dramaticaly reduce image file sizes without loosing quality, make your "
1220
+ #~ "website load faster, boost your SEO and save money on your bandwith using "
1221
+ #~ "Imagify, the new most advanced image optimization tool."
1222
+ #~ msgstr ""
1223
+ #~ "Réduisez drastiquement le poids de vos images sans perte de qualité, "
1224
+ #~ "accélérez la rapidité de votre site, boostez votre SEO et économisez de "
1225
+ #~ "l’argent sur votre bande passante en utilisant Imagify, le nouvel outil le "
1226
+ #~ "plus avancé d’optimisation des images."
1227
+
1228
  #~ msgid ""
1229
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
1230
  #~ "improved your website's by reducing your images size."
languages/imagify-it_IT.mo CHANGED
Binary file
languages/imagify-it_IT.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
- "POT-Creation-Date: 2016-03-10 16:14+0100\n"
5
- "PO-Revision-Date: 2016-03-10 16:14+0100\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: it\n"
@@ -20,23 +20,36 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
- #: inc/admin/ajax.php:118 inc/admin/meta-boxes.php:29
24
- #: inc/functions/admin-ui.php:99 inc/functions/admin-ui.php:127
25
- #: inc/functions/admin-ui.php:133 inc/functions/admin-ui.php:139
26
- #: inc/functions/admin-ui.php:175 inc/functions/admin-ui.php:181
27
- msgid "Optimizing..."
28
- msgstr "Ottimizzando…"
29
-
30
- #: inc/admin/ajax.php:118 inc/admin/enqueue.php:163 inc/admin/enqueue.php:187
31
- #: inc/admin/meta-boxes.php:34 inc/functions/admin-ui.php:181
32
  msgid "Optimize"
33
  msgstr "Ottimizza"
34
 
35
- #: inc/admin/ajax.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  msgid "Oops, It's almost over!"
37
  msgstr "Ops, quasi finito!"
38
 
39
- #: inc/admin/ajax.php:437
40
  #, php-format
41
  msgid ""
42
  "You have almost used all your credit.%sDon't forget to upgrade your "
@@ -45,17 +58,17 @@ msgstr ""
45
  "Hai usato quasi tutto il tuo credito.%sNon dimenticare di aggiornare il tuo "
46
  "abbonamento per continuare a ottimizzare le tue immagini."
47
 
48
- #: inc/admin/ajax.php:438 inc/admin/ui/bulk.php:23
49
  msgid "View My Subscription"
50
  msgstr "Vedere il mio abbonamento"
51
 
52
- #: inc/admin/ajax.php:446 inc/admin/enqueue.php:212
53
- #: inc/admin/ui/notices.php:251
54
  msgid "Oops, It's Over!"
55
  msgstr "Ops, finito!"
56
 
57
- #: inc/admin/ajax.php:447 inc/admin/enqueue.php:228
58
- #: inc/admin/ui/notices.php:253
59
  #, php-format
60
  msgid ""
61
  "You have consumed all your credit for this month. You will have <strong>%s "
@@ -64,232 +77,54 @@ msgstr ""
64
  "Hai consumato tutto il tuo credito per questo mese. Avrai di nuovo <strong>"
65
  "%s il %s</strong>."
66
 
67
- #: inc/admin/ajax.php:448
68
  msgid "Upgrade My Subscription"
69
  msgstr "Aggiornare il mio abbonamento"
70
 
71
- #: inc/admin/ajax.php:467 inc/admin/ui/bulk.php:17
72
  msgid "Account status"
73
  msgstr "Stato del mio account"
74
 
75
- #: inc/admin/ajax.php:468 inc/admin/ui/bulk.php:18
76
  msgid "Your subscription:"
77
  msgstr "Il tuo abbonamento:"
78
 
79
- #: inc/admin/ajax.php:476 inc/admin/ui/bulk.php:48
80
  #, php-format
81
  msgid "You have %s space credit left"
82
  msgstr "Ti rimangono %s di spazio"
83
 
84
- #: inc/admin/ajax.php:488
85
  msgid "View my subscription"
86
  msgstr "Vedere il mio abbonamento"
87
 
88
- #: inc/admin/enqueue.php:121
89
- msgid "Let's get you started!"
90
- msgstr "Iniziamo!"
91
-
92
- #: inc/admin/enqueue.php:122
93
- msgid "Enter your email to get an API key:"
94
- msgstr "Inserisci la tua email per ottenere una chiave API:"
95
-
96
- #: inc/admin/enqueue.php:123
97
- msgid "Sign Up"
98
- msgstr "Registrati"
99
-
100
- #: inc/admin/enqueue.php:124
101
- msgid "You need to specify an email!"
102
- msgstr "È necessario specificare un indirizzo email!"
103
-
104
- #: inc/admin/enqueue.php:125 inc/admin/enqueue.php:131
105
- msgid "Congratulations!"
106
- msgstr "Congratulazioni!"
107
-
108
- #: inc/admin/enqueue.php:126
109
- msgid ""
110
- "Your account has been succesfully created. Please check your mailbox, you "
111
- "are going to receive an email with API key."
112
- msgstr ""
113
- "Il tuo account è stato creato con successo. Per favore controlla la tua "
114
- "casella email, stai per ricevere un messaggio con la chiave API."
115
-
116
- #: inc/admin/enqueue.php:127
117
- msgid "Connect to Imagify!"
118
- msgstr "Connettiti a Imagify!"
119
-
120
- #: inc/admin/enqueue.php:128
121
- msgid "Paste your API key below:"
122
- msgstr "Incolla qui sotto la chiave API:"
123
-
124
- #: inc/admin/enqueue.php:129
125
- msgid "Connect me"
126
- msgstr "Connettimi"
127
-
128
- #: inc/admin/enqueue.php:130
129
- msgid "Check in progress..."
130
- msgstr "Verifica in corso…"
131
-
132
- #: inc/admin/enqueue.php:132
133
- msgid ""
134
- "Your API key is valid. You can now configure the Imagify settings to "
135
- "optimize your images."
136
- msgstr ""
137
- "La tua chiave API è valida. Ora puoi configurare le impostazioni di Imagify "
138
- "per ottimizzare le tue immagini."
139
-
140
- #: inc/admin/enqueue.php:133 inc/admin/ui/options.php:85
141
- msgid "Your API key is valid."
142
- msgstr "La tua chiave API è valida."
143
-
144
- #: inc/admin/enqueue.php:150
145
- msgid "Don't Need a Parachute?"
146
- msgstr "Non hai bisogno di un paracadute?"
147
-
148
- #: inc/admin/enqueue.php:151
149
- msgid ""
150
- "If you keep this option deactivated, you won't be able to re-optimize your "
151
- "images to another compression level and restore your original images in case "
152
- "of need."
153
- msgstr ""
154
- "Se mantieni questa opzione disattivata, non potrai ri-ottimizzare le "
155
- "immagini a un altro livello di compressione o ripristinare le originali in "
156
- "caso di necessità."
157
-
158
- #: inc/admin/enqueue.php:164 inc/functions/admin-ui.php:75
159
- msgid "Restore Original"
160
- msgstr "Ripristina originale"
161
-
162
- #: inc/admin/enqueue.php:181
163
- msgid "Original Image"
164
- msgstr "Immagine originale"
165
-
166
- #: inc/admin/enqueue.php:182
167
- msgid "Optimized Image"
168
- msgstr "Immagine ottimizzata"
169
-
170
- #: inc/admin/enqueue.php:183 inc/admin/media.php:61
171
  msgid "Compare Original VS Optimized"
172
  msgstr "Confronta originale VS ottimizzata"
173
 
174
- #: inc/admin/enqueue.php:184 inc/admin/ui/options.php:360
175
- #: inc/admin/ui/options.php:482
176
- msgid "Close"
177
- msgstr "Chiudi"
178
-
179
- #: inc/admin/enqueue.php:185 inc/admin/ui/options.php:413
180
- #: inc/admin/ui/options.php:423 inc/admin/ui/options.php:443
181
- #: inc/admin/ui/options.php:464
182
- msgid "File Size:"
183
- msgstr "Dimensione del file:"
184
-
185
- #: inc/admin/enqueue.php:186 inc/admin/ui/options.php:427
186
- #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:468
187
- #: inc/functions/admin-ui.php:44
188
- msgid "Original Saving:"
189
- msgstr "Risparmio originale:"
190
-
191
- #: inc/admin/enqueue.php:202
192
- msgid "Please wait..."
193
- msgstr "Attendere per favore…"
194
-
195
- #: inc/admin/enqueue.php:203
196
- msgid ""
197
- "We are trying to get your unoptimized images, it may take time depending on "
198
- "the number of images."
199
- msgstr ""
200
- "Stiamo cercando di ottenere le immagini non ottimizzate, il che potrebbe "
201
- "richiedere del tempo in base al numero di immagini."
202
-
203
- #: inc/admin/enqueue.php:205
204
- msgid "Oops, There is something wrong!"
205
- msgstr "Ups, qualcosa è andato storto!"
206
-
207
- #: inc/admin/enqueue.php:206
208
- msgid ""
209
- "An unknow error occurred when we tried to get all your unoptimized images. "
210
- "Try again and if the issue still persist, please contact us!"
211
- msgstr ""
212
- "C’è stato un errore inaspettato mentre cercavamo di raccogliere tutte le tue "
213
- "immagini non ottimizzate. Prova di nuovo e, se il problema persiste, "
214
- "contattaci per favore!"
215
-
216
- #: inc/admin/enqueue.php:208 inc/admin/ui/bulk.php:264 inc/admin/upload.php:38
217
- msgid "Optimized"
218
- msgstr "Ottimizzato"
219
-
220
- #: inc/admin/enqueue.php:209 inc/admin/upload.php:39
221
- msgid "Unoptimized"
222
- msgstr "Non ottimizzato"
223
-
224
- #: inc/admin/enqueue.php:210
225
- msgid "Error"
226
- msgstr "Errore"
227
-
228
- #: inc/admin/enqueue.php:213
229
- msgid "Hold on!"
230
- msgstr "Resisti!"
231
-
232
- #: inc/admin/enqueue.php:214
233
- msgid "All your images have been optimized by Imagify. Congratulations!"
234
- msgstr ""
235
- "Tutte le tue immagini sono state ottimizzate da Imagify. Congratulazioni!"
236
-
237
- #: inc/admin/enqueue.php:216
238
- #, php-format
239
- msgid ""
240
- "Discover @imagify, the new compression tool to optimize your images for "
241
- "free. I saved %1$s out of %2$s!"
242
- msgstr ""
243
- "Scopri @imagify, il nuovo strumento di compressione per ottimizzare le tue "
244
- "immagini gratuitamente. Ho risparmiato %1$s di %2$s!"
245
-
246
- #: inc/admin/enqueue.php:220
247
- msgid "Imagify is still processing. Are you sure you want to leave this page?"
248
- msgstr ""
249
- "Imagify sta ancora lavorando. Sei sicuro di voler abbandonare la pagina?"
250
-
251
- #: inc/admin/enqueue.php:225 inc/admin/enqueue.php:228
252
- #: inc/admin/ui/notices.php:253
253
- #, php-format
254
- msgid ""
255
- "To continue to optimize your images, log in to your Imagify account to %sbuy "
256
- "a pack or subscribe to a plan%s."
257
- msgstr ""
258
- "Per continuare a ottimizzare le tue immagini, entra nel tuo account Imagify "
259
- "per %scomprare un pack o sottoscrivere un abbonamento %s."
260
-
261
- #: inc/admin/enqueue.php:228
262
- msgid "F j, Y"
263
- msgstr "F j, Y"
264
-
265
- #: inc/admin/menu.php:24 inc/admin/plugins.php:13 inc/admin/ui/bulk.php:79
266
- #: inc/common/admin-bar.php:39
267
- msgid "Bulk Optimization"
268
- msgstr "Ottimizzazione massiva"
269
-
270
  #. Plugin Name of the plugin/theme
271
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
272
- #: inc/admin/upload.php:11
273
  msgid "Imagify"
274
  msgstr "Imagify"
275
 
276
- #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:168
277
  msgid "Invalid API key"
278
  msgstr "Chiave API non valida"
279
 
280
- #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:170
281
  msgid "Check your Settings"
282
  msgstr "Verifica delle tue impostazioni"
283
 
284
- #: inc/admin/options.php:107
285
  msgid "Cheatin&#8217; uh?"
286
  msgstr "Stai imbrogliando, vero?"
287
 
288
- #: inc/admin/options.php:115
289
  msgid "<strong>ERROR</strong>: options page not found."
290
  msgstr "<strong>Errore</strong>: pagina delle opzioni non trovata."
291
 
292
- #: inc/admin/plugins.php:14 inc/admin/ui/options.php:70
293
  #: inc/common/admin-bar.php:30
294
  msgid "Settings"
295
  msgstr "Impostazioni"
@@ -302,11 +137,41 @@ msgstr "Aggiorna il tuo account per continuare a ottimizzare le immagini"
302
  msgid "More info"
303
  msgstr "Maggiori informazioni"
304
 
305
- #: inc/admin/ui/bulk.php:89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  msgid "Information"
307
  msgstr "Informazioni"
308
 
309
- #: inc/admin/ui/bulk.php:91
310
  msgid ""
311
  "Please be aware that optimizing a large number of images can take a while "
312
  "depending on your server and network speed."
@@ -315,7 +180,7 @@ msgstr ""
315
  "immagini può richiedere del tempo a seconda del tuo server e della velocità "
316
  "di rete."
317
 
318
- #: inc/admin/ui/bulk.php:94
319
  #, php-format
320
  msgid ""
321
  "If you have more than %s images, you will need to launch the bulk "
@@ -324,7 +189,7 @@ msgstr ""
324
  "Se hai più di %s immagini, dovrai lanciare il processo di ottimizzazione "
325
  "massivo varie volte."
326
 
327
- #: inc/admin/ui/bulk.php:98
328
  msgid ""
329
  "You must keep this page open while the bulk optimizaton is processing. If "
330
  "you leave you can come back to continue where it left off."
@@ -333,141 +198,129 @@ msgstr ""
333
  "massiva. Se la abbandoni, è possibile ritornarci e continuare da dove avevi "
334
  "interrotto."
335
 
336
- #: inc/admin/ui/bulk.php:106
337
  msgid "Select Your Compression Level"
338
  msgstr "Seleziona il livello di compressione"
339
 
340
- #: inc/admin/ui/bulk.php:109 inc/admin/ui/bulk.php:137
341
- #: inc/admin/ui/options.php:129 inc/admin/ui/options.php:345
342
- #: inc/admin/ui/options.php:384 inc/admin/ui/options.php:401
343
- #: inc/admin/ui/options.php:461 inc/classes/class-attachment.php:135
344
- #: inc/functions/admin-ui.php:127
 
345
  msgid "Ultra"
346
  msgstr "Ultra"
347
 
348
- #: inc/admin/ui/bulk.php:112 inc/admin/ui/bulk.php:132
349
- #: inc/admin/ui/options.php:124 inc/admin/ui/options.php:332
350
- #: inc/admin/ui/options.php:383 inc/admin/ui/options.php:396
351
- #: inc/admin/ui/options.php:440 inc/classes/class-attachment.php:138
352
- #: inc/functions/admin-ui.php:133
 
353
  msgid "Aggressive"
354
  msgstr "Aggressivo"
355
 
356
- #: inc/admin/ui/bulk.php:115 inc/admin/ui/bulk.php:127
357
- #: inc/admin/ui/options.php:119 inc/admin/ui/options.php:319
358
- #: inc/admin/ui/options.php:382 inc/admin/ui/options.php:391
359
- #: inc/admin/ui/options.php:420 inc/classes/class-attachment.php:141
360
- #: inc/functions/admin-ui.php:139
 
361
  msgid "Normal"
362
  msgstr "Normale"
363
 
364
- #: inc/admin/ui/bulk.php:119
365
- msgid "Your default setting:"
366
- msgstr "Impostazioni standard:"
 
367
 
368
- #: inc/admin/ui/bulk.php:146
369
  #, php-format
370
  msgid "Don't forget to check %syour settings%s before bulk optimization."
371
  msgstr ""
372
  "Non dimenticare di controllare %sle tue impostazioni%s prima "
373
  "dell’ottimizzazione massiva."
374
 
375
- #: inc/admin/ui/bulk.php:156
 
 
 
 
376
  msgid "Imagif'em all"
377
  msgstr "Imagifica tutto!"
378
 
379
- #: inc/admin/ui/bulk.php:163
380
  #, php-format
381
  msgid ""
382
- "All images which are over to %s could be optimized using the pro version."
 
383
  msgstr ""
384
- "Tutte le immagini superiori a %s potrebbero essere ottimizzate utilizzando "
385
- "la versione pro."
386
-
387
- #: inc/admin/ui/bulk.php:174
388
- msgid "Overview"
389
- msgstr "Sommario"
390
-
391
- #: inc/admin/ui/bulk.php:184
392
- msgid "Statistics"
393
- msgstr "Statistiche"
394
-
395
- #: inc/admin/ui/bulk.php:196
396
- msgid "that's the number of images you optimized with Imagify"
397
- msgstr "questo è il numero di immagini ottimizzate con Imagify"
398
 
399
- #: inc/admin/ui/bulk.php:201
400
- msgid "Original size"
401
- msgstr "Dimensione originale"
402
-
403
- #: inc/admin/ui/bulk.php:206
404
- msgid "Optimized size"
405
- msgstr "Dimensione ottimizzata"
406
-
407
- #: inc/admin/ui/bulk.php:217
408
- #, php-format
409
- msgid "that's the size you saved %sby using Imagify"
410
- msgstr "questa è la dimensione che hai risparmiato %sutilizzando Imagify"
411
-
412
- #: inc/admin/ui/bulk.php:237
413
  msgid "Well done!"
414
  msgstr "Ben fatto!"
415
 
416
- #: inc/admin/ui/bulk.php:238
417
  #, php-format
418
  msgid "you saved %1$s out of %2$s"
419
  msgstr "hai risparmiato %1$s su %2$s"
420
 
421
- #: inc/admin/ui/bulk.php:243
422
  msgid "Share your awesome result"
423
  msgstr "Condividi questo impressionante risultato"
424
 
425
- #: inc/admin/ui/bulk.php:258
426
  msgid "Compression process results"
427
  msgstr "Risultati del processo di compressione"
428
 
429
- #: inc/admin/ui/bulk.php:261
430
  msgid "Filename"
431
  msgstr "Nome del file"
432
 
433
- #: inc/admin/ui/bulk.php:262
434
  msgid "Status"
435
  msgstr "Stato"
436
 
437
- #: inc/admin/ui/bulk.php:263 inc/admin/ui/options.php:381
438
- #: inc/admin/ui/options.php:386 inc/admin/ui/options.php:410
439
  msgid "Original"
440
  msgstr "Originale"
441
 
442
- #: inc/admin/ui/bulk.php:265
 
 
 
 
443
  msgid "Percentage"
444
  msgstr "Percentuale"
445
 
446
- #: inc/admin/ui/bulk.php:266
447
  msgid "Thumbnails optimized"
448
  msgstr "Miniature ottimizzate"
449
 
450
- #: inc/admin/ui/bulk.php:267
451
  msgid "Overall saving"
452
  msgstr "Risparmio complessivo"
453
 
454
- #: inc/admin/ui/bulk.php:272
455
  msgid "file"
456
  msgstr "file"
457
 
458
- #: inc/admin/ui/bulk.php:273
459
  msgid "error"
460
  msgstr "errore"
461
 
462
- #: inc/admin/ui/bulk.php:274
463
  msgid "Total:"
464
  msgstr "Totale:"
465
 
466
- #: inc/admin/ui/bulk.php:275
467
  msgid "Gain:"
468
  msgstr "Guadagno:"
469
 
470
- #: inc/admin/ui/bulk.php:292
471
  #, php-format
472
  msgid "%sStart the bulk optimization%s"
473
  msgstr "%sInizia l’ottimizzazione massiva%s"
@@ -531,7 +384,7 @@ msgstr ""
531
  msgid "Go to Settings"
532
  msgstr "Vai alle impostazioni"
533
 
534
- #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:91
535
  msgid "Your API key isn't valid!"
536
  msgstr "La tua chiave API non è valida!"
537
 
@@ -596,16 +449,26 @@ msgstr ""
596
  msgid "Switch to the List View"
597
  msgstr "Passa a visualizzazione Lista"
598
 
599
- #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:24
 
 
 
 
 
 
 
 
 
 
600
  msgid "Discover the best caching plugin to speed up your website."
601
  msgstr "Scopri i migliori plugin di cache per velocizzare il tuo sito Web."
602
 
603
- #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:32
604
  #, php-format
605
  msgid "%sGet %s off%s with this coupon code:%s"
606
  msgstr "Ottieni il %s%s%s di sconto usando questo coupon:%s"
607
 
608
- #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:37
609
  msgid "Get WP Rocket now"
610
  msgstr "Acquista WP Rocket!"
611
 
@@ -618,7 +481,7 @@ msgstr ""
618
  "%1$sCongratulazioni!%2$s Hai ottimizzato %1$s%3$d immagini%2$s e velocizzato "
619
  "così il tuo sito web."
620
 
621
- #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:55
622
  #, php-format
623
  msgid ""
624
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
@@ -627,61 +490,65 @@ msgstr ""
627
  "%sTi piace questo plugin?%s Per favore, dedicaci pochi secondi per %sdargli "
628
  "un voto su WordPress.org%s!"
629
 
630
- #: inc/admin/ui/options.php:18
631
  msgid "Is your website too slow?"
632
  msgstr "Il tuo sito web è troppo lento?"
633
 
634
- #: inc/admin/ui/options.php:78
635
  msgid "API Key"
636
  msgstr "Chiave API"
637
 
638
- #: inc/admin/ui/options.php:98
 
 
 
 
639
  #, php-format
640
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
641
  msgstr "Non hai ancora una chiave API? %sCreane una, è GRATIS%s."
642
 
643
- #: inc/admin/ui/options.php:114
644
  msgid "Optimization Level"
645
  msgstr "Livello di ottimizzazione"
646
 
647
- #: inc/admin/ui/options.php:134
648
  msgid "More info?"
649
  msgstr "Vuoi più informazioni?"
650
 
651
- #: inc/admin/ui/options.php:141
652
  #, php-format
653
  msgid "Need help to choose? %sTry the Visual Comparison%s"
654
  msgstr "Hai bisogno di aiuto per scegliere? %sProva il confronto visivo%s"
655
 
656
- #: inc/admin/ui/options.php:150 inc/admin/ui/options.php:154
657
  msgid "Auto-Optimize images on upload"
658
  msgstr "Auto-ottimizza le immagini in fase di caricamento"
659
 
660
- #: inc/admin/ui/options.php:158
661
  msgid "Automatically optimize every image you upload to WordPress."
662
  msgstr "Ottimizza automaticamente ogni immagine che hai caricato in Wordpress."
663
 
664
- #: inc/admin/ui/options.php:163 inc/admin/ui/options.php:166
665
  msgid "Backup original images"
666
  msgstr "Backup delle immagini originali"
667
 
668
- #: inc/admin/ui/options.php:170
669
  msgid ""
670
  "Keep your original images in a separate folder before optimization process."
671
  msgstr ""
672
  "Mantieni le tue immagini originali in una cartella separata prima del "
673
  "processo di ottimizzazione."
674
 
675
- #: inc/admin/ui/options.php:175 inc/admin/ui/options.php:178
676
  msgid "Resize larger images"
677
  msgstr "Ridimensiona le immagini più grandi"
678
 
679
- #: inc/admin/ui/options.php:184
680
  #, php-format
681
  msgid "to maximum %s pixels width"
682
  msgstr "a un massimo di %s di larghezza"
683
 
684
- #: inc/admin/ui/options.php:195
685
  #, php-format
686
  msgid ""
687
  "This option is recommended to reduce larger images. You can save up to 80%% "
@@ -693,11 +560,11 @@ msgstr ""
693
  "dovrebbe essere inferiore a quella della tua miniatura più grande, che "
694
  "attualmente è di %spx."
695
 
696
- #: inc/admin/ui/options.php:202 inc/admin/ui/options.php:205
697
  msgid "EXIF Data"
698
  msgstr "Dati EXIF"
699
 
700
- #: inc/admin/ui/options.php:209
701
  msgid ""
702
  "Keep all EXIF data from your images. EXIF are informations stored in your "
703
  "pictures like shutter speed, exposure compensation, ISO, etc..."
@@ -706,11 +573,11 @@ msgstr ""
706
  "archiviate nelle tue immagini, come la velocità dell’otturatore, la "
707
  "compensazione dell’esposizione, gli ISO, etc…"
708
 
709
- #: inc/admin/ui/options.php:210
710
  msgid "Learn more"
711
  msgstr "Maggiori informazioni"
712
 
713
- #: inc/admin/ui/options.php:212
714
  msgid ""
715
  "If you are a photographer, you may be interested in this option if you are "
716
  "displaying on your pages some info like the model of your camera."
@@ -719,45 +586,49 @@ msgstr ""
719
  "in cui voglia pubblicare sulle tue pagine informazioni come il modello della "
720
  "tua macchina fotografica."
721
 
722
- #: inc/admin/ui/options.php:221
723
  msgid "Files optimization"
724
  msgstr "Ottimizzazione dei file"
725
 
726
- #: inc/admin/ui/options.php:224
727
  msgid ""
728
  "You can choose to compress different image sizes created by WordPress here."
729
  msgstr ""
730
  "Qui puoi scegliere di comprimere formati di immagine diversi creati con "
731
  "WordPress."
732
 
733
- #: inc/admin/ui/options.php:226
734
  #, php-format
735
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
736
  msgstr ""
737
  "La %sdimensione originale%s è %sautomaticamente ottimizzata%s da Imagify."
738
 
739
- #: inc/admin/ui/options.php:229
740
  msgid ""
741
  "Remember each additional image size will affect your Imagify monthly usage!"
742
  msgstr ""
743
  "Ricorda che ogni formato di immagine addizionale avrà un impatto sul tuo "
744
  "utilizzo mensile di Imagify!"
745
 
746
- #: inc/admin/ui/options.php:282
747
  msgid "Display options"
748
  msgstr "Visualizza le opzioni"
749
 
750
- #: inc/admin/ui/options.php:287 inc/admin/ui/options.php:292
751
  msgid "Show Admin Bar menu"
752
  msgstr "Mostra barra di amministrazione"
753
 
754
- #: inc/admin/ui/options.php:293
755
  msgid "I want this awesome quick access menu on my admin bar."
756
  msgstr ""
757
  "Voglio questo fantastico menu di accesso veloce alla mia barra "
758
  "amministrazione."
759
 
760
- #: inc/admin/ui/options.php:308
 
 
 
 
761
  #, php-format
762
  msgid ""
763
  "Once your settings saved, optimize all your images by using the %sImagify "
@@ -766,11 +637,11 @@ msgstr ""
766
  "Una volta che le tue impostazioni saranno salvate, ottimizza tutte le tue "
767
  "immagini usando l’opzione di %sottimizzazione massiva di Imagify%s."
768
 
769
- #: inc/admin/ui/options.php:316
770
  msgid "You can choose three levels of compression"
771
  msgstr "Puoi scegliere tre livelli di compressione"
772
 
773
- #: inc/admin/ui/options.php:321
774
  msgid ""
775
  "This mode provides lossless optimization, your images will be optimized "
776
  "without any visible change."
@@ -778,21 +649,21 @@ msgstr ""
778
  "Questa modalità permette un’ottimizzazione senza perdite: le tue immagini "
779
  "saranno ottimizzate senza alcun visibile cambiamento."
780
 
781
- #: inc/admin/ui/options.php:324
782
  msgid ""
783
  "If you want the perfect quality for your images, we recommend you that mode."
784
  msgstr ""
785
  "Se vuoi mantenere la perfetta qualità delle tue immagini, ti raccomandiamo "
786
  "questa modalità."
787
 
788
- #: inc/admin/ui/options.php:327
789
  msgid ""
790
  "Note: the file size reduction will be less, compared to aggressive mode."
791
  msgstr ""
792
  "Nota: la riduzione della dimensione dell’immagine sarà inferiore rispetto "
793
  "alla modalità aggressiva."
794
 
795
- #: inc/admin/ui/options.php:334
796
  msgid ""
797
  "This mode provides perfect optimization of your images without any "
798
  "significant quality loss."
@@ -800,7 +671,7 @@ msgstr ""
800
  "Questa modalità ottimizzerà perfettamente le tue immagini senza alcuna "
801
  "significativa perdita di qualità."
802
 
803
- #: inc/admin/ui/options.php:337
804
  msgid ""
805
  "This will provide a drastic savings on the initial weight, with a small "
806
  "reduction in image quality. Most of the time it's not even noticeable."
@@ -809,13 +680,13 @@ msgstr ""
809
  "una piccola riduzione della sua qualità. La maggior parte delle volte non "
810
  "sarà nemmeno percepibile."
811
 
812
- #: inc/admin/ui/options.php:340
813
  msgid "If you want the maximum weight reduction, we recommend using this mode."
814
  msgstr ""
815
  "Se vuoi la massima riduzione del peso, ti raccomandiamo di usare questa "
816
  "modalità."
817
 
818
- #: inc/admin/ui/options.php:347
819
  msgid ""
820
  "This mode will apply all available optimizations for maximum image "
821
  "compression."
@@ -823,7 +694,7 @@ msgstr ""
823
  "Questa modalità si applicherà a tutte le ottimizzazioni disponibili, per una "
824
  "massima compressione dell’immagine."
825
 
826
- #: inc/admin/ui/options.php:350
827
  msgid ""
828
  "This will provide a huge savings on the initial weight. Sometimes the image "
829
  "quality could be degraded a little."
@@ -831,7 +702,7 @@ msgstr ""
831
  "Questo permetterà un enorme risparmio sul peso iniziale dell’immagine. A "
832
  "volte la qualità dell’immagine potrebbe abbassarsi leggermente."
833
 
834
- #: inc/admin/ui/options.php:353
835
  msgid ""
836
  "If you want the maximum weight reduction, and you agree to lose some quality "
837
  "on the images we recommend using this mode."
@@ -839,41 +710,62 @@ msgstr ""
839
  "Se vuoi la massima riduzione del peso dell’immagine e accetti di abbassarne "
840
  "un po’ la qualità, ti raccomandiamo di usare questa modalità."
841
 
842
- #: inc/admin/ui/options.php:372
 
 
 
 
 
843
  #, php-format
844
  msgid "I want to compare%s and%s"
845
  msgstr "Voglio confrontare%s e %s"
846
 
847
- #: inc/admin/ui/options.php:389
848
  #, php-format
849
  msgid "Original photography about %s"
850
  msgstr "Fotografia originale di %s"
851
 
852
- #: inc/admin/ui/options.php:394 inc/admin/ui/options.php:399
853
- #: inc/admin/ui/options.php:404
854
  #, php-format
855
  msgid "Optimized photography about %s"
856
  msgstr "Fotografia ottimizzata di %s"
857
 
858
- #: inc/admin/ui/options.php:409 inc/admin/ui/options.php:419
859
- #: inc/admin/ui/options.php:439 inc/admin/ui/options.php:460
860
- #: inc/functions/admin-ui.php:58
861
  msgid "Level:"
862
  msgstr "Livello:"
863
 
864
- #: inc/admin/upload.php:40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  msgid "Errors"
866
  msgstr "Errori"
867
 
868
- #: inc/admin/upload.php:43
869
  msgid "Filter by status"
870
  msgstr "Filtra per stato"
871
 
872
- #: inc/admin/upload.php:46
873
  msgid "All images"
874
  msgstr "Tutte le immagini"
875
 
876
- #: inc/classes/class-attachment.php:518
877
  msgid ""
878
  "This size isn't authorized to be optimized. Update your Imagify settings if "
879
  "you want to optimize it."
@@ -890,50 +782,385 @@ msgstr "Dai un voto a Imagify su %s"
890
  msgid "Loading..."
891
  msgstr "In caricamento …"
892
 
893
- #: inc/functions/admin-ui.php:35
894
  msgid "New Filesize:"
895
  msgstr "Nuova dimensione del file:"
896
 
897
- #: inc/functions/admin-ui.php:51
898
  msgid "Close details"
899
  msgstr "Chiudi dettagli"
900
 
901
- #: inc/functions/admin-ui.php:51
902
  msgid "View details"
903
  msgstr "Visualizza dettagli"
904
 
905
- #: inc/functions/admin-ui.php:55
906
  msgid "Original Filesize:"
907
  msgstr "Dimensione originale del file:"
908
 
909
- #: inc/functions/admin-ui.php:61
910
  msgid "Thumbnails Optimized:"
911
  msgstr "Miniature ottimizzate:"
912
 
913
- #: inc/functions/admin-ui.php:62
914
  msgid "Overall Saving:"
915
  msgstr "Risparmio totale:"
916
 
917
- #: inc/functions/admin-ui.php:75
918
  msgid "Restoring..."
919
  msgstr "Ripristino…"
920
 
921
- #: inc/functions/admin-ui.php:99
922
  msgid "Try again"
923
  msgstr "Prova di nuovo"
924
 
925
- #: inc/functions/admin-ui.php:127 inc/functions/admin-ui.php:133
926
- #: inc/functions/admin-ui.php:139
927
  #, php-format
928
  msgid "Re-Optimize to %s"
929
  msgstr "Ri-ottimizza a %s"
930
 
931
- #: inc/functions/admin-ui.php:162
932
  #, php-format
933
  msgid "%s can't be optimized"
934
  msgstr "%s non ottimizzabile"
935
 
936
- #: inc/functions/process.php:30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
937
  msgid ""
938
  "Sorry, our servers are temporarily unaccessible. Please, try again in a "
939
  "couple of minutes."
@@ -941,25 +1168,25 @@ msgstr ""
941
  "Ci scusiamo, i nostri server sono temporalmente inaccessibili. Per favore, "
942
  "riprova fra qualche minuto."
943
 
944
- #: inc/functions/process.php:36
945
  msgid "External HTTP requests are blocked"
946
  msgstr "Le richieste HTTP esterne sono bloccate"
947
 
948
- #: inc/functions/process.php:42
949
  msgid "File path is empty"
950
  msgstr "Il percorso del file è vuoto"
951
 
952
- #: inc/functions/process.php:48
953
  #, php-format
954
  msgid "Could not find %s"
955
  msgstr "Impossibile trovare %s"
956
 
957
- #: inc/functions/process.php:53
958
  #, php-format
959
  msgid "%s is not writable"
960
  msgstr "%s non è riscrivibile"
961
 
962
- #: inc/functions/process.php:62
963
  #, php-format
964
  msgid "Skipped (%s), image not found."
965
  msgstr "Abbiamo saltato (%s), immagine non trovata."
@@ -970,14 +1197,10 @@ msgstr ""
970
 
971
  #. Description of the plugin/theme
972
  msgid ""
973
- "Dramaticaly reduce image file sizes without loosing quality, make your "
974
  "website load faster, boost your SEO and save money on your bandwith using "
975
  "Imagify, the new most advanced image optimization tool."
976
  msgstr ""
977
- "Riduci drasticamente la dimensione dei file immagine senza perdite di "
978
- "qualità, velocizza il caricamento del tuo sito web, dai una spinta al tuo "
979
- "SEO e risparmia sulla tua larghezza di banda…tutto grazie a Imagify, lo "
980
- "strumento più avanzato per l’ottimizzazione di immagini."
981
 
982
  #. Author of the plugin/theme
983
  msgid "WP Media"
@@ -987,6 +1210,25 @@ msgstr ""
987
  msgid "http://wp-media.me"
988
  msgstr ""
989
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
990
  #~ msgid ""
991
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
992
  #~ "improved your website's by reducing your images size."
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Imagify\n"
4
+ "POT-Creation-Date: 2016-04-19 16:27+0200\n"
5
+ "PO-Revision-Date: 2016-04-19 16:28+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: it\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:20
24
+ #: inc/admin/ajax.php:123 inc/admin/meta-boxes.php:34
25
+ #: inc/functions/admin-ui.php:212 inc/functions/i18n.php:46
26
+ #: inc/functions/i18n.php:61
 
 
 
 
 
27
  msgid "Optimize"
28
  msgstr "Ottimizza"
29
 
30
+ #: inc/3rd-party/nextgen-gallery/inc/admin/enqueue.php:21
31
+ #: inc/functions/admin-ui.php:80 inc/functions/i18n.php:47
32
+ msgid "Restore Original"
33
+ msgstr "Ripristina originale"
34
+
35
+ #: inc/3rd-party/nextgen-gallery/inc/admin/menu.php:16 inc/admin/menu.php:24
36
+ #: inc/admin/plugins.php:13 inc/admin/ui/bulk.php:81
37
+ #: inc/common/admin-bar.php:39
38
+ msgid "Bulk Optimization"
39
+ msgstr "Ottimizzazione massiva"
40
+
41
+ #: inc/admin/ajax.php:123 inc/admin/meta-boxes.php:29
42
+ #: inc/functions/admin-ui.php:121 inc/functions/admin-ui.php:153
43
+ #: inc/functions/admin-ui.php:159 inc/functions/admin-ui.php:165
44
+ #: inc/functions/admin-ui.php:202 inc/functions/admin-ui.php:212
45
+ msgid "Optimizing..."
46
+ msgstr "Ottimizzando…"
47
+
48
+ #: inc/admin/ajax.php:503
49
  msgid "Oops, It's almost over!"
50
  msgstr "Ops, quasi finito!"
51
 
52
+ #: inc/admin/ajax.php:504
53
  #, php-format
54
  msgid ""
55
  "You have almost used all your credit.%sDon't forget to upgrade your "
58
  "Hai usato quasi tutto il tuo credito.%sNon dimenticare di aggiornare il tuo "
59
  "abbonamento per continuare a ottimizzare le tue immagini."
60
 
61
+ #: inc/admin/ajax.php:505 inc/admin/ui/bulk.php:23
62
  msgid "View My Subscription"
63
  msgstr "Vedere il mio abbonamento"
64
 
65
+ #: inc/admin/ajax.php:513 inc/admin/ui/notices.php:251
66
+ #: inc/functions/i18n.php:80
67
  msgid "Oops, It's Over!"
68
  msgstr "Ops, finito!"
69
 
70
+ #: inc/admin/ajax.php:514 inc/admin/ui/notices.php:253
71
+ #: inc/functions/i18n.php:97
72
  #, php-format
73
  msgid ""
74
  "You have consumed all your credit for this month. You will have <strong>%s "
77
  "Hai consumato tutto il tuo credito per questo mese. Avrai di nuovo <strong>"
78
  "%s il %s</strong>."
79
 
80
+ #: inc/admin/ajax.php:515
81
  msgid "Upgrade My Subscription"
82
  msgstr "Aggiornare il mio abbonamento"
83
 
84
+ #: inc/admin/ajax.php:534 inc/admin/ui/bulk.php:17
85
  msgid "Account status"
86
  msgstr "Stato del mio account"
87
 
88
+ #: inc/admin/ajax.php:535 inc/admin/ui/bulk.php:18
89
  msgid "Your subscription:"
90
  msgstr "Il tuo abbonamento:"
91
 
92
+ #: inc/admin/ajax.php:543 inc/admin/ui/bulk.php:48
93
  #, php-format
94
  msgid "You have %s space credit left"
95
  msgstr "Ti rimangono %s di spazio"
96
 
97
+ #: inc/admin/ajax.php:555
98
  msgid "View my subscription"
99
  msgstr "Vedere il mio abbonamento"
100
 
101
+ #: inc/admin/media.php:63 inc/functions/i18n.php:57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  msgid "Compare Original VS Optimized"
103
  msgstr "Confronta originale VS ottimizzata"
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  #. Plugin Name of the plugin/theme
106
  #: inc/admin/meta-boxes.php:17 inc/admin/meta-boxes.php:24
107
+ #: inc/admin/upload.php:12
108
  msgid "Imagify"
109
  msgstr "Imagify"
110
 
111
+ #: inc/admin/meta-boxes.php:19 inc/functions/admin-ui.php:195
112
  msgid "Invalid API key"
113
  msgstr "Chiave API non valida"
114
 
115
+ #: inc/admin/meta-boxes.php:21 inc/functions/admin-ui.php:197
116
  msgid "Check your Settings"
117
  msgstr "Verifica delle tue impostazioni"
118
 
119
+ #: inc/admin/options.php:120
120
  msgid "Cheatin&#8217; uh?"
121
  msgstr "Stai imbrogliando, vero?"
122
 
123
+ #: inc/admin/options.php:128
124
  msgid "<strong>ERROR</strong>: options page not found."
125
  msgstr "<strong>Errore</strong>: pagina delle opzioni non trovata."
126
 
127
+ #: inc/admin/plugins.php:14 inc/admin/ui/options.php:74
128
  #: inc/common/admin-bar.php:30
129
  msgid "Settings"
130
  msgstr "Impostazioni"
137
  msgid "More info"
138
  msgstr "Maggiori informazioni"
139
 
140
+ #: inc/admin/ui/bulk.php:91
141
+ msgid "Overview"
142
+ msgstr "Sommario"
143
+
144
+ #: inc/admin/ui/bulk.php:99
145
+ #, php-format
146
+ msgid "You optimized %s images of your website"
147
+ msgstr "Hai ottimizzato il %s di immagini del tuo sito"
148
+
149
+ #: inc/admin/ui/bulk.php:103
150
+ msgid "Statistics"
151
+ msgstr "Statistiche"
152
+
153
+ #: inc/admin/ui/bulk.php:115
154
+ msgid "that's the number of images you optimized with Imagify"
155
+ msgstr "questo è il numero di immagini ottimizzate con Imagify"
156
+
157
+ #: inc/admin/ui/bulk.php:120
158
+ msgid "Original size"
159
+ msgstr "Dimensione originale"
160
+
161
+ #: inc/admin/ui/bulk.php:125
162
+ msgid "Optimized size"
163
+ msgstr "Dimensione ottimizzata"
164
+
165
+ #: inc/admin/ui/bulk.php:136
166
+ #, php-format
167
+ msgid "that's the size you saved %sby using Imagify"
168
+ msgstr "questa è la dimensione che hai risparmiato %sutilizzando Imagify"
169
+
170
+ #: inc/admin/ui/bulk.php:142
171
  msgid "Information"
172
  msgstr "Informazioni"
173
 
174
+ #: inc/admin/ui/bulk.php:146
175
  msgid ""
176
  "Please be aware that optimizing a large number of images can take a while "
177
  "depending on your server and network speed."
180
  "immagini può richiedere del tempo a seconda del tuo server e della velocità "
181
  "di rete."
182
 
183
+ #: inc/admin/ui/bulk.php:149
184
  #, php-format
185
  msgid ""
186
  "If you have more than %s images, you will need to launch the bulk "
189
  "Se hai più di %s immagini, dovrai lanciare il processo di ottimizzazione "
190
  "massivo varie volte."
191
 
192
+ #: inc/admin/ui/bulk.php:153
193
  msgid ""
194
  "You must keep this page open while the bulk optimizaton is processing. If "
195
  "you leave you can come back to continue where it left off."
198
  "massiva. Se la abbandoni, è possibile ritornarci e continuare da dove avevi "
199
  "interrotto."
200
 
201
+ #: inc/admin/ui/bulk.php:164
202
  msgid "Select Your Compression Level"
203
  msgstr "Seleziona il livello di compressione"
204
 
205
+ #: inc/admin/ui/bulk.php:166 inc/admin/ui/bulk.php:192
206
+ #: inc/admin/ui/options.php:136 inc/admin/ui/options.php:365
207
+ #: inc/admin/ui/options.php:404 inc/admin/ui/options.php:421
208
+ #: inc/admin/ui/options.php:481
209
+ #: inc/classes/abstracts/abstract-attachment.php:114
210
+ #: inc/functions/admin-ui.php:153
211
  msgid "Ultra"
212
  msgstr "Ultra"
213
 
214
+ #: inc/admin/ui/bulk.php:169 inc/admin/ui/bulk.php:187
215
+ #: inc/admin/ui/options.php:131 inc/admin/ui/options.php:352
216
+ #: inc/admin/ui/options.php:403 inc/admin/ui/options.php:416
217
+ #: inc/admin/ui/options.php:460
218
+ #: inc/classes/abstracts/abstract-attachment.php:117
219
+ #: inc/functions/admin-ui.php:159
220
  msgid "Aggressive"
221
  msgstr "Aggressivo"
222
 
223
+ #: inc/admin/ui/bulk.php:172 inc/admin/ui/bulk.php:182
224
+ #: inc/admin/ui/options.php:126 inc/admin/ui/options.php:339
225
+ #: inc/admin/ui/options.php:402 inc/admin/ui/options.php:411
226
+ #: inc/admin/ui/options.php:440
227
+ #: inc/classes/abstracts/abstract-attachment.php:120
228
+ #: inc/functions/admin-ui.php:165
229
  msgid "Normal"
230
  msgstr "Normale"
231
 
232
+ #: inc/admin/ui/bulk.php:176
233
+ #, php-format
234
+ msgid "Your default setting: %s"
235
+ msgstr "Le tue impostazioni di base: %s"
236
 
237
+ #: inc/admin/ui/bulk.php:201
238
  #, php-format
239
  msgid "Don't forget to check %syour settings%s before bulk optimization."
240
  msgstr ""
241
  "Non dimenticare di controllare %sle tue impostazioni%s prima "
242
  "dell’ottimizzazione massiva."
243
 
244
+ #: inc/admin/ui/bulk.php:208
245
+ msgid "Let's go!"
246
+ msgstr "Si parte!"
247
+
248
+ #: inc/admin/ui/bulk.php:215
249
  msgid "Imagif'em all"
250
  msgstr "Imagifica tutto!"
251
 
252
+ #: inc/admin/ui/bulk.php:220
253
  #, php-format
254
  msgid ""
255
+ "All images greater than %s will be optimized when using a paying monthly "
256
+ "plan."
257
  msgstr ""
258
+ "Tutte le immagini superiori a %s verranno ottimizzate usando il piano "
259
+ "mensile a pagamento."
 
 
 
 
 
 
 
 
 
 
 
 
260
 
261
+ #: inc/admin/ui/bulk.php:239
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  msgid "Well done!"
263
  msgstr "Ben fatto!"
264
 
265
+ #: inc/admin/ui/bulk.php:240
266
  #, php-format
267
  msgid "you saved %1$s out of %2$s"
268
  msgstr "hai risparmiato %1$s su %2$s"
269
 
270
+ #: inc/admin/ui/bulk.php:245
271
  msgid "Share your awesome result"
272
  msgstr "Condividi questo impressionante risultato"
273
 
274
+ #: inc/admin/ui/bulk.php:260
275
  msgid "Compression process results"
276
  msgstr "Risultati del processo di compressione"
277
 
278
+ #: inc/admin/ui/bulk.php:263
279
  msgid "Filename"
280
  msgstr "Nome del file"
281
 
282
+ #: inc/admin/ui/bulk.php:264
283
  msgid "Status"
284
  msgstr "Stato"
285
 
286
+ #: inc/admin/ui/bulk.php:265 inc/admin/ui/options.php:401
287
+ #: inc/admin/ui/options.php:406 inc/admin/ui/options.php:430
288
  msgid "Original"
289
  msgstr "Originale"
290
 
291
+ #: inc/admin/ui/bulk.php:266 inc/admin/upload.php:41 inc/functions/i18n.php:76
292
+ msgid "Optimized"
293
+ msgstr "Ottimizzato"
294
+
295
+ #: inc/admin/ui/bulk.php:267
296
  msgid "Percentage"
297
  msgstr "Percentuale"
298
 
299
+ #: inc/admin/ui/bulk.php:268
300
  msgid "Thumbnails optimized"
301
  msgstr "Miniature ottimizzate"
302
 
303
+ #: inc/admin/ui/bulk.php:269
304
  msgid "Overall saving"
305
  msgstr "Risparmio complessivo"
306
 
307
+ #: inc/admin/ui/bulk.php:274
308
  msgid "file"
309
  msgstr "file"
310
 
311
+ #: inc/admin/ui/bulk.php:275
312
  msgid "error"
313
  msgstr "errore"
314
 
315
+ #: inc/admin/ui/bulk.php:276
316
  msgid "Total:"
317
  msgstr "Totale:"
318
 
319
+ #: inc/admin/ui/bulk.php:277
320
  msgid "Gain:"
321
  msgstr "Guadagno:"
322
 
323
+ #: inc/admin/ui/bulk.php:294
324
  #, php-format
325
  msgid "%sStart the bulk optimization%s"
326
  msgstr "%sInizia l’ottimizzazione massiva%s"
384
  msgid "Go to Settings"
385
  msgstr "Vai alle impostazioni"
386
 
387
+ #: inc/admin/ui/notices.php:85 inc/admin/ui/options.php:97
388
  msgid "Your API key isn't valid!"
389
  msgstr "La tua chiave API non è valida!"
390
 
449
  msgid "Switch to the List View"
450
  msgstr "Passa a visualizzazione Lista"
451
 
452
+ #: inc/admin/ui/notices.php:253 inc/functions/i18n.php:94
453
+ #: inc/functions/i18n.php:97
454
+ #, php-format
455
+ msgid ""
456
+ "To continue to optimize your images, log in to your Imagify account to %sbuy "
457
+ "a pack or subscribe to a plan%s."
458
+ msgstr ""
459
+ "Per continuare a ottimizzare le tue immagini, entra nel tuo account Imagify "
460
+ "per %scomprare un pack o sottoscrivere un abbonamento %s."
461
+
462
+ #: inc/admin/ui/notices.php:306 inc/admin/ui/options.php:28
463
  msgid "Discover the best caching plugin to speed up your website."
464
  msgstr "Scopri i migliori plugin di cache per velocizzare il tuo sito Web."
465
 
466
+ #: inc/admin/ui/notices.php:309 inc/admin/ui/options.php:36
467
  #, php-format
468
  msgid "%sGet %s off%s with this coupon code:%s"
469
  msgstr "Ottieni il %s%s%s di sconto usando questo coupon:%s"
470
 
471
+ #: inc/admin/ui/notices.php:318 inc/admin/ui/options.php:41
472
  msgid "Get WP Rocket now"
473
  msgstr "Acquista WP Rocket!"
474
 
481
  "%1$sCongratulazioni!%2$s Hai ottimizzato %1$s%3$d immagini%2$s e velocizzato "
482
  "così il tuo sito web."
483
 
484
+ #: inc/admin/ui/notices.php:356 inc/admin/ui/options.php:59
485
  #, php-format
486
  msgid ""
487
  "%sDo you like this plugin?%s Please take a few seconds to %srate it on "
490
  "%sTi piace questo plugin?%s Per favore, dedicaci pochi secondi per %sdargli "
491
  "un voto su WordPress.org%s!"
492
 
493
+ #: inc/admin/ui/options.php:22
494
  msgid "Is your website too slow?"
495
  msgstr "Il tuo sito web è troppo lento?"
496
 
497
+ #: inc/admin/ui/options.php:84
498
  msgid "API Key"
499
  msgstr "Chiave API"
500
 
501
+ #: inc/admin/ui/options.php:91 inc/functions/i18n.php:31
502
+ msgid "Your API key is valid."
503
+ msgstr "La tua chiave API è valida."
504
+
505
+ #: inc/admin/ui/options.php:104
506
  #, php-format
507
  msgid "Don't have an API Key yet? %sCreate one, it's FREE%s."
508
  msgstr "Non hai ancora una chiave API? %sCreane una, è GRATIS%s."
509
 
510
+ #: inc/admin/ui/options.php:121
511
  msgid "Optimization Level"
512
  msgstr "Livello di ottimizzazione"
513
 
514
+ #: inc/admin/ui/options.php:141
515
  msgid "More info?"
516
  msgstr "Vuoi più informazioni?"
517
 
518
+ #: inc/admin/ui/options.php:148
519
  #, php-format
520
  msgid "Need help to choose? %sTry the Visual Comparison%s"
521
  msgstr "Hai bisogno di aiuto per scegliere? %sProva il confronto visivo%s"
522
 
523
+ #: inc/admin/ui/options.php:157 inc/admin/ui/options.php:161
524
  msgid "Auto-Optimize images on upload"
525
  msgstr "Auto-ottimizza le immagini in fase di caricamento"
526
 
527
+ #: inc/admin/ui/options.php:165
528
  msgid "Automatically optimize every image you upload to WordPress."
529
  msgstr "Ottimizza automaticamente ogni immagine che hai caricato in Wordpress."
530
 
531
+ #: inc/admin/ui/options.php:170 inc/admin/ui/options.php:173
532
  msgid "Backup original images"
533
  msgstr "Backup delle immagini originali"
534
 
535
+ #: inc/admin/ui/options.php:177
536
  msgid ""
537
  "Keep your original images in a separate folder before optimization process."
538
  msgstr ""
539
  "Mantieni le tue immagini originali in una cartella separata prima del "
540
  "processo di ottimizzazione."
541
 
542
+ #: inc/admin/ui/options.php:182 inc/admin/ui/options.php:185
543
  msgid "Resize larger images"
544
  msgstr "Ridimensiona le immagini più grandi"
545
 
546
+ #: inc/admin/ui/options.php:191
547
  #, php-format
548
  msgid "to maximum %s pixels width"
549
  msgstr "a un massimo di %s di larghezza"
550
 
551
+ #: inc/admin/ui/options.php:202
552
  #, php-format
553
  msgid ""
554
  "This option is recommended to reduce larger images. You can save up to 80%% "
560
  "dovrebbe essere inferiore a quella della tua miniatura più grande, che "
561
  "attualmente è di %spx."
562
 
563
+ #: inc/admin/ui/options.php:209 inc/admin/ui/options.php:212
564
  msgid "EXIF Data"
565
  msgstr "Dati EXIF"
566
 
567
+ #: inc/admin/ui/options.php:216
568
  msgid ""
569
  "Keep all EXIF data from your images. EXIF are informations stored in your "
570
  "pictures like shutter speed, exposure compensation, ISO, etc..."
573
  "archiviate nelle tue immagini, come la velocità dell’otturatore, la "
574
  "compensazione dell’esposizione, gli ISO, etc…"
575
 
576
+ #: inc/admin/ui/options.php:217
577
  msgid "Learn more"
578
  msgstr "Maggiori informazioni"
579
 
580
+ #: inc/admin/ui/options.php:219
581
  msgid ""
582
  "If you are a photographer, you may be interested in this option if you are "
583
  "displaying on your pages some info like the model of your camera."
586
  "in cui voglia pubblicare sulle tue pagine informazioni come il modello della "
587
  "tua macchina fotografica."
588
 
589
+ #: inc/admin/ui/options.php:228
590
  msgid "Files optimization"
591
  msgstr "Ottimizzazione dei file"
592
 
593
+ #: inc/admin/ui/options.php:231
594
  msgid ""
595
  "You can choose to compress different image sizes created by WordPress here."
596
  msgstr ""
597
  "Qui puoi scegliere di comprimere formati di immagine diversi creati con "
598
  "WordPress."
599
 
600
+ #: inc/admin/ui/options.php:233
601
  #, php-format
602
  msgid "The %soriginal size%s is %sautomatically optimized%s by Imagify."
603
  msgstr ""
604
  "La %sdimensione originale%s è %sautomaticamente ottimizzata%s da Imagify."
605
 
606
+ #: inc/admin/ui/options.php:236
607
  msgid ""
608
  "Remember each additional image size will affect your Imagify monthly usage!"
609
  msgstr ""
610
  "Ricorda che ogni formato di immagine addizionale avrà un impatto sul tuo "
611
  "utilizzo mensile di Imagify!"
612
 
613
+ #: inc/admin/ui/options.php:289
614
  msgid "Display options"
615
  msgstr "Visualizza le opzioni"
616
 
617
+ #: inc/admin/ui/options.php:294 inc/admin/ui/options.php:299
618
  msgid "Show Admin Bar menu"
619
  msgstr "Mostra barra di amministrazione"
620
 
621
+ #: inc/admin/ui/options.php:300
622
  msgid "I want this awesome quick access menu on my admin bar."
623
  msgstr ""
624
  "Voglio questo fantastico menu di accesso veloce alla mia barra "
625
  "amministrazione."
626
 
627
+ #: inc/admin/ui/options.php:319
628
+ msgid "Save &amp; Go to Bulk Optimizer"
629
+ msgstr "Salva &amp; Procedi con l'ottimizzazione massiva"
630
+
631
+ #: inc/admin/ui/options.php:328
632
  #, php-format
633
  msgid ""
634
  "Once your settings saved, optimize all your images by using the %sImagify "
637
  "Una volta che le tue impostazioni saranno salvate, ottimizza tutte le tue "
638
  "immagini usando l’opzione di %sottimizzazione massiva di Imagify%s."
639
 
640
+ #: inc/admin/ui/options.php:336
641
  msgid "You can choose three levels of compression"
642
  msgstr "Puoi scegliere tre livelli di compressione"
643
 
644
+ #: inc/admin/ui/options.php:341
645
  msgid ""
646
  "This mode provides lossless optimization, your images will be optimized "
647
  "without any visible change."
649
  "Questa modalità permette un’ottimizzazione senza perdite: le tue immagini "
650
  "saranno ottimizzate senza alcun visibile cambiamento."
651
 
652
+ #: inc/admin/ui/options.php:344
653
  msgid ""
654
  "If you want the perfect quality for your images, we recommend you that mode."
655
  msgstr ""
656
  "Se vuoi mantenere la perfetta qualità delle tue immagini, ti raccomandiamo "
657
  "questa modalità."
658
 
659
+ #: inc/admin/ui/options.php:347
660
  msgid ""
661
  "Note: the file size reduction will be less, compared to aggressive mode."
662
  msgstr ""
663
  "Nota: la riduzione della dimensione dell’immagine sarà inferiore rispetto "
664
  "alla modalità aggressiva."
665
 
666
+ #: inc/admin/ui/options.php:354
667
  msgid ""
668
  "This mode provides perfect optimization of your images without any "
669
  "significant quality loss."
671
  "Questa modalità ottimizzerà perfettamente le tue immagini senza alcuna "
672
  "significativa perdita di qualità."
673
 
674
+ #: inc/admin/ui/options.php:357
675
  msgid ""
676
  "This will provide a drastic savings on the initial weight, with a small "
677
  "reduction in image quality. Most of the time it's not even noticeable."
680
  "una piccola riduzione della sua qualità. La maggior parte delle volte non "
681
  "sarà nemmeno percepibile."
682
 
683
+ #: inc/admin/ui/options.php:360
684
  msgid "If you want the maximum weight reduction, we recommend using this mode."
685
  msgstr ""
686
  "Se vuoi la massima riduzione del peso, ti raccomandiamo di usare questa "
687
  "modalità."
688
 
689
+ #: inc/admin/ui/options.php:367
690
  msgid ""
691
  "This mode will apply all available optimizations for maximum image "
692
  "compression."
694
  "Questa modalità si applicherà a tutte le ottimizzazioni disponibili, per una "
695
  "massima compressione dell’immagine."
696
 
697
+ #: inc/admin/ui/options.php:370
698
  msgid ""
699
  "This will provide a huge savings on the initial weight. Sometimes the image "
700
  "quality could be degraded a little."
702
  "Questo permetterà un enorme risparmio sul peso iniziale dell’immagine. A "
703
  "volte la qualità dell’immagine potrebbe abbassarsi leggermente."
704
 
705
+ #: inc/admin/ui/options.php:373
706
  msgid ""
707
  "If you want the maximum weight reduction, and you agree to lose some quality "
708
  "on the images we recommend using this mode."
710
  "Se vuoi la massima riduzione del peso dell’immagine e accetti di abbassarne "
711
  "un po’ la qualità, ti raccomandiamo di usare questa modalità."
712
 
713
+ #: inc/admin/ui/options.php:380 inc/admin/ui/options.php:502
714
+ #: inc/functions/admin-ui.php:659 inc/functions/i18n.php:58
715
+ msgid "Close"
716
+ msgstr "Chiudi"
717
+
718
+ #: inc/admin/ui/options.php:392
719
  #, php-format
720
  msgid "I want to compare%s and%s"
721
  msgstr "Voglio confrontare%s e %s"
722
 
723
+ #: inc/admin/ui/options.php:409
724
  #, php-format
725
  msgid "Original photography about %s"
726
  msgstr "Fotografia originale di %s"
727
 
728
+ #: inc/admin/ui/options.php:414 inc/admin/ui/options.php:419
729
+ #: inc/admin/ui/options.php:424
730
  #, php-format
731
  msgid "Optimized photography about %s"
732
  msgstr "Fotografia ottimizzata di %s"
733
 
734
+ #: inc/admin/ui/options.php:429 inc/admin/ui/options.php:439
735
+ #: inc/admin/ui/options.php:459 inc/admin/ui/options.php:480
736
+ #: inc/functions/admin-ui.php:59
737
  msgid "Level:"
738
  msgstr "Livello:"
739
 
740
+ #: inc/admin/ui/options.php:433 inc/admin/ui/options.php:443
741
+ #: inc/admin/ui/options.php:463 inc/admin/ui/options.php:484
742
+ #: inc/functions/i18n.php:59
743
+ msgid "File Size:"
744
+ msgstr "Dimensione del file:"
745
+
746
+ #: inc/admin/ui/options.php:447 inc/admin/ui/options.php:467
747
+ #: inc/admin/ui/options.php:488 inc/functions/admin-ui.php:45
748
+ #: inc/functions/i18n.php:60
749
+ msgid "Original Saving:"
750
+ msgstr "Risparmio originale:"
751
+
752
+ #: inc/admin/upload.php:42 inc/functions/i18n.php:77
753
+ msgid "Unoptimized"
754
+ msgstr "Non ottimizzato"
755
+
756
+ #: inc/admin/upload.php:43
757
  msgid "Errors"
758
  msgstr "Errori"
759
 
760
+ #: inc/admin/upload.php:46
761
  msgid "Filter by status"
762
  msgstr "Filtra per stato"
763
 
764
+ #: inc/admin/upload.php:49
765
  msgid "All images"
766
  msgstr "Tutte le immagini"
767
 
768
+ #: inc/classes/class-attachment.php:266
769
  msgid ""
770
  "This size isn't authorized to be optimized. Update your Imagify settings if "
771
  "you want to optimize it."
782
  msgid "Loading..."
783
  msgstr "In caricamento …"
784
 
785
+ #: inc/functions/admin-ui.php:36
786
  msgid "New Filesize:"
787
  msgstr "Nuova dimensione del file:"
788
 
789
+ #: inc/functions/admin-ui.php:52
790
  msgid "Close details"
791
  msgstr "Chiudi dettagli"
792
 
793
+ #: inc/functions/admin-ui.php:52
794
  msgid "View details"
795
  msgstr "Visualizza dettagli"
796
 
797
+ #: inc/functions/admin-ui.php:56
798
  msgid "Original Filesize:"
799
  msgstr "Dimensione originale del file:"
800
 
801
+ #: inc/functions/admin-ui.php:62
802
  msgid "Thumbnails Optimized:"
803
  msgstr "Miniature ottimizzate:"
804
 
805
+ #: inc/functions/admin-ui.php:63
806
  msgid "Overall Saving:"
807
  msgstr "Risparmio totale:"
808
 
809
+ #: inc/functions/admin-ui.php:80
810
  msgid "Restoring..."
811
  msgstr "Ripristino…"
812
 
813
+ #: inc/functions/admin-ui.php:121
814
  msgid "Try again"
815
  msgstr "Prova di nuovo"
816
 
817
+ #: inc/functions/admin-ui.php:153 inc/functions/admin-ui.php:159
818
+ #: inc/functions/admin-ui.php:165
819
  #, php-format
820
  msgid "Re-Optimize to %s"
821
  msgstr "Ri-ottimizza a %s"
822
 
823
+ #: inc/functions/admin-ui.php:189
824
  #, php-format
825
  msgid "%s can't be optimized"
826
  msgstr "%s non ottimizzabile"
827
 
828
+ #: inc/functions/admin-ui.php:237
829
+ msgid "What plan do I need?"
830
+ msgstr ""
831
+
832
+ #: inc/functions/admin-ui.php:241
833
+ msgid "You're new to Imagify?"
834
+ msgstr ""
835
+
836
+ #: inc/functions/admin-ui.php:242
837
+ msgid ""
838
+ "Let us help you by analyzing your existing images and determinate the best "
839
+ "plan for you"
840
+ msgstr ""
841
+
842
+ #: inc/functions/admin-ui.php:277
843
+ msgid "Choose Plan"
844
+ msgstr ""
845
+
846
+ #: inc/functions/admin-ui.php:278
847
+ msgid "Payment Info"
848
+ msgstr ""
849
+
850
+ #: inc/functions/admin-ui.php:283
851
+ msgid "We analysed your images"
852
+ msgstr ""
853
+
854
+ #: inc/functions/admin-ui.php:289
855
+ #, php-format
856
+ msgid "You have %s images"
857
+ msgstr ""
858
+
859
+ #: inc/functions/admin-ui.php:295
860
+ #, php-format
861
+ msgid "You actually have %s of images in your library."
862
+ msgstr ""
863
+
864
+ #: inc/functions/admin-ui.php:299
865
+ #, php-format
866
+ msgid "You upload around %s of images per month."
867
+ msgstr ""
868
+
869
+ #: inc/functions/admin-ui.php:306
870
+ msgid "We recommend you this plan"
871
+ msgstr ""
872
+
873
+ #: inc/functions/admin-ui.php:311
874
+ msgid "Subscribe a monthly plan"
875
+ msgstr ""
876
+
877
+ #: inc/functions/admin-ui.php:312
878
+ msgid "Subscribe a yearly plan"
879
+ msgstr ""
880
+
881
+ #: inc/functions/admin-ui.php:316 inc/functions/admin-ui.php:452
882
+ #: inc/functions/admin-ui.php:620
883
+ msgid "Monthly"
884
+ msgstr ""
885
+
886
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
887
+ #: inc/functions/admin-ui.php:623
888
+ msgid "Yearly"
889
+ msgstr ""
890
+
891
+ #: inc/functions/admin-ui.php:319 inc/functions/admin-ui.php:455
892
+ #: inc/functions/admin-ui.php:623
893
+ msgid "2 months free"
894
+ msgstr ""
895
+
896
+ #: inc/functions/admin-ui.php:330 inc/functions/admin-ui.php:349
897
+ #: inc/functions/admin-ui.php:465 inc/functions/admin-ui.php:475
898
+ msgid "/month"
899
+ msgstr ""
900
+
901
+ #: inc/functions/admin-ui.php:332 inc/functions/admin-ui.php:380
902
+ #: inc/functions/admin-ui.php:467 inc/functions/admin-ui.php:518
903
+ #, php-format
904
+ msgid "approx: %s images"
905
+ msgstr ""
906
+
907
+ #: inc/functions/admin-ui.php:353 inc/functions/admin-ui.php:481
908
+ #, php-format
909
+ msgid ""
910
+ "%s per<br>\n"
911
+ "additionnal Gb"
912
+ msgstr ""
913
+
914
+ #: inc/functions/admin-ui.php:358 inc/functions/admin-ui.php:393
915
+ #: inc/functions/admin-ui.php:577 inc/functions/admin-ui.php:598
916
+ msgid "Choose another plan"
917
+ msgstr ""
918
+
919
+ #: inc/functions/admin-ui.php:368
920
+ msgid "Optimize the images you already have, buy a one-time plan"
921
+ msgstr ""
922
+
923
+ #: inc/functions/admin-ui.php:404
924
+ msgid "Checkout"
925
+ msgstr ""
926
+
927
+ #: inc/functions/admin-ui.php:408
928
+ msgid ""
929
+ "Monthly plans comes with credits which is renewed every months. The billing "
930
+ "happens automatically each month or year depending the billing period you "
931
+ "choose."
932
+ msgstr ""
933
+
934
+ #: inc/functions/admin-ui.php:432
935
+ msgid "Monthly Plans"
936
+ msgstr ""
937
+
938
+ #: inc/functions/admin-ui.php:437
939
+ msgid "One Time Plans"
940
+ msgstr ""
941
+
942
+ #: inc/functions/admin-ui.php:447
943
+ msgid ""
944
+ "Monthly plans come with credits which is renewed every months. The billing "
945
+ "happens automatically each month or year depending the billing period you "
946
+ "choose."
947
+ msgstr ""
948
+
949
+ #: inc/functions/admin-ui.php:479 inc/functions/admin-ui.php:526
950
+ msgid "we recommend for you"
951
+ msgstr ""
952
+
953
+ #: inc/functions/admin-ui.php:487 inc/functions/admin-ui.php:530
954
+ msgid "Choose plan"
955
+ msgstr ""
956
+
957
+ #: inc/functions/admin-ui.php:495
958
+ msgid "Need more?"
959
+ msgstr ""
960
+
961
+ #: inc/functions/admin-ui.php:496
962
+ msgid "for special needs"
963
+ msgstr ""
964
+
965
+ #: inc/functions/admin-ui.php:500
966
+ msgid "Contact Us"
967
+ msgstr ""
968
+
969
+ #: inc/functions/admin-ui.php:507
970
+ msgid ""
971
+ "One time plans are useful if you have a lots of existing images which need "
972
+ "to be optimized. You can use it for bulk optimizing all your past images. "
973
+ "You will pay only once."
974
+ msgstr ""
975
+
976
+ #: inc/functions/admin-ui.php:560
977
+ msgid "Your order"
978
+ msgstr ""
979
+
980
+ #: inc/functions/admin-ui.php:565
981
+ #, php-format
982
+ msgid "%scancel%sYou just removed %s"
983
+ msgstr ""
984
+
985
+ #: inc/functions/admin-ui.php:573 inc/functions/admin-ui.php:594
986
+ msgid "Remove this item"
987
+ msgstr ""
988
+
989
+ #: inc/functions/admin-ui.php:580
990
+ #, php-format
991
+ msgid "%s per month"
992
+ msgstr ""
993
+
994
+ #: inc/functions/admin-ui.php:601
995
+ #, php-format
996
+ msgid "one time %s"
997
+ msgstr ""
998
+
999
+ #: inc/functions/admin-ui.php:614
1000
+ #, php-format
1001
+ msgid ""
1002
+ "Switch to yearly subscription and <br><strong class=\"imagify-dark\">save %s "
1003
+ "per year!</strong>"
1004
+ msgstr ""
1005
+
1006
+ #: inc/functions/admin-ui.php:615
1007
+ #, php-format
1008
+ msgid ""
1009
+ "Perfect!<br>You're <strong class=\"imagify-dark\">saving %s per year!</"
1010
+ "strong>"
1011
+ msgstr ""
1012
+
1013
+ #: inc/functions/admin-ui.php:654
1014
+ msgid "Thank you for being awesome!"
1015
+ msgstr ""
1016
+
1017
+ #: inc/functions/admin-ui.php:665
1018
+ msgid "What do our user think about Imagify"
1019
+ msgstr ""
1020
+
1021
+ #: inc/functions/admin-ui.php:699
1022
+ msgid "Secure Credit Card Payment"
1023
+ msgstr ""
1024
+
1025
+ #: inc/functions/admin-ui.php:700
1026
+ msgid "This is secure 128-bits SSL encrypted payment"
1027
+ msgstr ""
1028
+
1029
+ #: inc/functions/i18n.php:19
1030
+ msgid "Let's get you started!"
1031
+ msgstr "Iniziamo!"
1032
+
1033
+ #: inc/functions/i18n.php:20
1034
+ msgid "Enter your email to get an API key:"
1035
+ msgstr "Inserisci la tua email per ottenere una chiave API:"
1036
+
1037
+ #: inc/functions/i18n.php:21
1038
+ msgid "Sign Up"
1039
+ msgstr "Registrati"
1040
+
1041
+ #: inc/functions/i18n.php:22
1042
+ msgid "You need to specify an email!"
1043
+ msgstr "È necessario specificare un indirizzo email!"
1044
+
1045
+ #: inc/functions/i18n.php:23 inc/functions/i18n.php:29
1046
+ msgid "Congratulations!"
1047
+ msgstr "Congratulazioni!"
1048
+
1049
+ #: inc/functions/i18n.php:24
1050
+ msgid ""
1051
+ "Your account has been succesfully created. Please check your mailbox, you "
1052
+ "are going to receive an email with API key."
1053
+ msgstr ""
1054
+ "Il tuo account è stato creato con successo. Per favore controlla la tua "
1055
+ "casella email, stai per ricevere un messaggio con la chiave API."
1056
+
1057
+ #: inc/functions/i18n.php:25
1058
+ msgid "Connect to Imagify!"
1059
+ msgstr "Connettiti a Imagify!"
1060
+
1061
+ #: inc/functions/i18n.php:26
1062
+ msgid "Paste your API key below:"
1063
+ msgstr "Incolla qui sotto la chiave API:"
1064
+
1065
+ #: inc/functions/i18n.php:27
1066
+ msgid "Connect me"
1067
+ msgstr "Connettimi"
1068
+
1069
+ #: inc/functions/i18n.php:28
1070
+ msgid "Check in progress..."
1071
+ msgstr "Verifica in corso…"
1072
+
1073
+ #: inc/functions/i18n.php:30
1074
+ msgid ""
1075
+ "Your API key is valid. You can now configure the Imagify settings to "
1076
+ "optimize your images."
1077
+ msgstr ""
1078
+ "La tua chiave API è valida. Ora puoi configurare le impostazioni di Imagify "
1079
+ "per ottimizzare le tue immagini."
1080
+
1081
+ #: inc/functions/i18n.php:32
1082
+ msgid "Cancel"
1083
+ msgstr ""
1084
+
1085
+ #: inc/functions/i18n.php:38
1086
+ msgid "Don't Need a Parachute?"
1087
+ msgstr "Non hai bisogno di un paracadute?"
1088
+
1089
+ #: inc/functions/i18n.php:39
1090
+ msgid ""
1091
+ "If you keep this option deactivated, you won't be able to re-optimize your "
1092
+ "images to another compression level and restore your original images in case "
1093
+ "of need."
1094
+ msgstr ""
1095
+ "Se mantieni questa opzione disattivata, non potrai ri-ottimizzare le "
1096
+ "immagini a un altro livello di compressione o ripristinare le originali in "
1097
+ "caso di necessità."
1098
+
1099
+ #: inc/functions/i18n.php:55
1100
+ msgid "Original Image"
1101
+ msgstr "Immagine originale"
1102
+
1103
+ #: inc/functions/i18n.php:56
1104
+ msgid "Optimized Image"
1105
+ msgstr "Immagine ottimizzata"
1106
+
1107
+ #: inc/functions/i18n.php:70
1108
+ msgid "Please wait..."
1109
+ msgstr "Attendere per favore…"
1110
+
1111
+ #: inc/functions/i18n.php:71
1112
+ msgid ""
1113
+ "We are trying to get your unoptimized images, it may take time depending on "
1114
+ "the number of images."
1115
+ msgstr ""
1116
+ "Stiamo cercando di ottenere le immagini non ottimizzate, il che potrebbe "
1117
+ "richiedere del tempo in base al numero di immagini."
1118
+
1119
+ #: inc/functions/i18n.php:73
1120
+ msgid "Oops, There is something wrong!"
1121
+ msgstr "Ups, qualcosa è andato storto!"
1122
+
1123
+ #: inc/functions/i18n.php:74
1124
+ msgid ""
1125
+ "An unknow error occurred when we tried to get all your unoptimized images. "
1126
+ "Try again and if the issue still persist, please contact us!"
1127
+ msgstr ""
1128
+ "C’è stato un errore inaspettato mentre cercavamo di raccogliere tutte le tue "
1129
+ "immagini non ottimizzate. Prova di nuovo e, se il problema persiste, "
1130
+ "contattaci per favore!"
1131
+
1132
+ #: inc/functions/i18n.php:78
1133
+ msgid "Error"
1134
+ msgstr "Errore"
1135
+
1136
+ #: inc/functions/i18n.php:81
1137
+ msgid "Hold on!"
1138
+ msgstr "Resisti!"
1139
+
1140
+ #: inc/functions/i18n.php:82
1141
+ msgid "All your images have been optimized by Imagify. Congratulations!"
1142
+ msgstr ""
1143
+ "Tutte le tue immagini sono state ottimizzate da Imagify. Congratulazioni!"
1144
+
1145
+ #: inc/functions/i18n.php:84
1146
+ #, php-format
1147
+ msgid ""
1148
+ "Discover @imagify, the new compression tool to optimize your images for "
1149
+ "free. I saved %1$s out of %2$s!"
1150
+ msgstr ""
1151
+ "Scopri @imagify, il nuovo strumento di compressione per ottimizzare le tue "
1152
+ "immagini gratuitamente. Ho risparmiato %1$s di %2$s!"
1153
+
1154
+ #: inc/functions/i18n.php:88
1155
+ msgid "Imagify is still processing. Are you sure you want to leave this page?"
1156
+ msgstr ""
1157
+ "Imagify sta ancora lavorando. Sei sicuro di voler abbandonare la pagina?"
1158
+
1159
+ #: inc/functions/i18n.php:97
1160
+ msgid "F j, Y"
1161
+ msgstr "F j, Y"
1162
+
1163
+ #: inc/functions/process.php:41
1164
  msgid ""
1165
  "Sorry, our servers are temporarily unaccessible. Please, try again in a "
1166
  "couple of minutes."
1168
  "Ci scusiamo, i nostri server sono temporalmente inaccessibili. Per favore, "
1169
  "riprova fra qualche minuto."
1170
 
1171
+ #: inc/functions/process.php:47
1172
  msgid "External HTTP requests are blocked"
1173
  msgstr "Le richieste HTTP esterne sono bloccate"
1174
 
1175
+ #: inc/functions/process.php:53
1176
  msgid "File path is empty"
1177
  msgstr "Il percorso del file è vuoto"
1178
 
1179
+ #: inc/functions/process.php:59
1180
  #, php-format
1181
  msgid "Could not find %s"
1182
  msgstr "Impossibile trovare %s"
1183
 
1184
+ #: inc/functions/process.php:64
1185
  #, php-format
1186
  msgid "%s is not writable"
1187
  msgstr "%s non è riscrivibile"
1188
 
1189
+ #: inc/functions/process.php:73
1190
  #, php-format
1191
  msgid "Skipped (%s), image not found."
1192
  msgstr "Abbiamo saltato (%s), immagine non trovata."
1197
 
1198
  #. Description of the plugin/theme
1199
  msgid ""
1200
+ "Dramaticaly reduce image file sizes without losing quality, make your "
1201
  "website load faster, boost your SEO and save money on your bandwith using "
1202
  "Imagify, the new most advanced image optimization tool."
1203
  msgstr ""
 
 
 
 
1204
 
1205
  #. Author of the plugin/theme
1206
  msgid "WP Media"
1210
  msgid "http://wp-media.me"
1211
  msgstr ""
1212
 
1213
+ #~ msgid "Your default setting:"
1214
+ #~ msgstr "Impostazioni standard:"
1215
+
1216
+ #~ msgid ""
1217
+ #~ "All images which are over to %s could be optimized using the pro version."
1218
+ #~ msgstr ""
1219
+ #~ "Tutte le immagini superiori a %s potrebbero essere ottimizzate "
1220
+ #~ "utilizzando la versione pro."
1221
+
1222
+ #~ msgid ""
1223
+ #~ "Dramaticaly reduce image file sizes without loosing quality, make your "
1224
+ #~ "website load faster, boost your SEO and save money on your bandwith using "
1225
+ #~ "Imagify, the new most advanced image optimization tool."
1226
+ #~ msgstr ""
1227
+ #~ "Riduci drasticamente la dimensione dei file immagine senza perdite di "
1228
+ #~ "qualità, velocizza il caricamento del tuo sito web, dai una spinta al tuo "
1229
+ #~ "SEO e risparmia sulla tua larghezza di banda…tutto grazie a Imagify, lo "
1230
+ #~ "strumento più avanzato per l’ottimizzazione di immagini."
1231
+
1232
  #~ msgid ""
1233
  #~ "%1$sCongratulations%2$s, you have optimized %1$s%3$d images%2$s and "
1234
  #~ "improved your website's by reducing your images size."
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: wp_media
3
  Tags: compress image, images, performance, optimization, photos, upload, resize, gif, png, jpg, reduce image size, retina
4
  Requires at least: 3.7.0
5
  Tested up to: 4.5
6
- Stable tag: 1.4.7
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -14,7 +14,9 @@ Dramatically reduce image file sizes without losing quality, make your website l
14
  Speed up your website with lighter images without losing quality.
15
 
16
  Imagify is the most advanced image compression tool, you can now use this power directly in WordPress.
17
- After enabling it all your images including thumbnails and retina images from WP Retina x2 will be automatically optimized on the fly when you will add in into WordPress.
 
 
18
 
19
  = What is Image Compression? =
20
 
@@ -134,6 +136,14 @@ When the plugin is disabled, your existing images remain optimized. Backups of t
134
 
135
  == Changelog ==
136
 
 
 
 
 
 
 
 
 
137
  = 1.4.7 =
138
  * Bug Fix
139
  * Fix issue between Bulk Optimization & WP Engine. The query to get unoptimized images is limited to 2500 images to be able to use the Bulk Optimization on this hosting.
3
  Tags: compress image, images, performance, optimization, photos, upload, resize, gif, png, jpg, reduce image size, retina
4
  Requires at least: 3.7.0
5
  Tested up to: 4.5
6
+ Stable tag: 1.5
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
14
  Speed up your website with lighter images without losing quality.
15
 
16
  Imagify is the most advanced image compression tool, you can now use this power directly in WordPress.
17
+ After enabling it all your images including thumbnails and retina images from WP Retina x2 will be automatically optimized on the fly when you will add in into WordPress.
18
+
19
+ WooCommerce and NextGen Gallery compatible.
20
 
21
  = What is Image Compression? =
22
 
136
 
137
  == Changelog ==
138
 
139
+ = 1.5 =
140
+
141
+ * NEW Features:
142
+ * NextGen Gallery compatibility - Optimize all your images uploaded with NextGen Gallery
143
+ * Asynchronous Optimization - No more latency when you upload new images, Imagify will optimize them in background!
144
+ * Interface:
145
+ * Bulk Optimization: Improvements for a better experience
146
+
147
  = 1.4.7 =
148
  * Bug Fix
149
  * Fix issue between Bulk Optimization & WP Engine. The query to get unoptimized images is limited to 2500 images to be able to use the Bulk Optimization on this hosting.
uninstall.php CHANGED
@@ -11,7 +11,14 @@ delete_site_transient( 'imagify_bulk_optimization_level' );
11
  delete_site_transient( 'imagify_large_library' );
12
 
13
  global $wpdb;
 
14
  $wpdb->query( 'DELETE from ' . $wpdb->options . ' WHERE option_name LIKE "_transient_imagify-async-in-progress-%"' );
15
 
 
 
 
16
  // Delete all user meta related to Imagify
17
  delete_metadata( 'user', '', '_imagify_ignore_notices', '', true );
 
 
 
11
  delete_site_transient( 'imagify_large_library' );
12
 
13
  global $wpdb;
14
+ // WP transients
15
  $wpdb->query( 'DELETE from ' . $wpdb->options . ' WHERE option_name LIKE "_transient_imagify-async-in-progress-%"' );
16
 
17
+ // NextGen Gallery transients
18
+ $wpdb->query( 'DELETE from ' . $wpdb->options . ' WHERE option_name LIKE "_transient_imagify-ngg-async-in-progress-%"' );
19
+
20
  // Delete all user meta related to Imagify
21
  delete_metadata( 'user', '', '_imagify_ignore_notices', '', true );
22
+
23
+ // Drop the tables
24
+ $wpdb->query( "DROP TABLE IF EXISTS $wpdb->ngg_imagify_data" );