Optimus – WordPress Image Optimizer - Version 1.3.8

Version Description

  • Bulk optimization feature
Download this release

Release Info

Developer keycdn
Plugin Icon 128x128 Optimus – WordPress Image Optimizer
Version 1.3.8
Comparing to
See all releases

Code changes from version 1.3.7 to 1.3.8

css/styles.css CHANGED
@@ -58,4 +58,45 @@
58
  border-color: #7ad03a;
59
  }
60
 
61
- /* @end group */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  border-color: #7ad03a;
59
  }
60
 
61
+ /* @end group */
62
+
63
+ /* @group Management */
64
+
65
+ #optimus-bulk-optimizer #media-items .bar.success {
66
+ background-color: #7ad03a;
67
+ }
68
+
69
+ #optimus-bulk-optimizer #media-items .bar.partial {
70
+ background-color: #3a91d0;
71
+ }
72
+
73
+ #optimus-bulk-optimizer #media-items .bar.info {
74
+ background-color: #999;
75
+ }
76
+
77
+ #optimus-bulk-optimizer #media-items .bar.err {
78
+ background-color: #d4352e;
79
+ }
80
+
81
+ #optimus-bulk-optimizer .media-item {
82
+ box-shadow: 0px 1px 0px #DFDFDF;
83
+ min-height: 36px;
84
+ margin-bottom: 1px;
85
+ position: relative;
86
+ width: 100%;
87
+ background: none repeat scroll 0% 0% #FFF;
88
+ }
89
+
90
+ #optimus-bulk-optimizer .progress~.percent {
91
+ float: right;
92
+ line-height: 36px;
93
+ margin-right: 20px;
94
+ }
95
+
96
+ #optimus-progress span, #optimus-status span {
97
+ background: #eaeaea;
98
+ background: rgba(0,0,0,.07);
99
+ padding: 5px;
100
+ }
101
+
102
+ /* @end group */
inc/optimus.class.php CHANGED
@@ -67,10 +67,10 @@ class Optimus
67
 
68
  /* Hooks */
69
  add_action(
70
- 'admin_print_styles-upload.php',
71
  array(
72
- 'Optimus_Media',
73
- 'add_css'
74
  )
75
  );
76
  add_filter(
@@ -89,7 +89,6 @@ class Optimus
89
  10,
90
  2
91
  );
92
-
93
  add_filter(
94
  'plugin_row_meta',
95
  array(
@@ -127,6 +126,7 @@ class Optimus
127
  'register_settings'
128
  )
129
  );
 
130
  add_action(
131
  'admin_menu',
132
  array(
@@ -134,6 +134,13 @@ class Optimus
134
  'add_page'
135
  )
136
  );
 
 
 
 
 
 
 
137
 
138
  /* Admin notices */
139
  add_action(
@@ -150,9 +157,11 @@ class Optimus
150
  'optimus_hq_notice'
151
  )
152
  );
 
153
  }
154
 
155
 
 
156
  /**
157
  * Hinzufügen der Action-Links
158
  *
@@ -181,7 +190,7 @@ class Optimus
181
  ),
182
  admin_url('options-general.php')
183
  ),
184
- __('Settings')
185
  )
186
  )
187
  );
@@ -223,7 +232,7 @@ class Optimus
223
  ),
224
  network_admin_url('plugins.php#_optimus_key')
225
  ),
226
- ( Optimus_HQ::get_key() ? 'Anderen Optimus HQ Key eingeben' : '<span style="color:#006505">Optimus HQ aktivieren</span>' )
227
  )
228
  )
229
  );
@@ -234,7 +243,7 @@ class Optimus
234
  $rows,
235
  array(
236
  sprintf(
237
- 'Optimus HQ Ablaufdatum: %s',
238
  date( 'd.m.Y', Optimus_HQ::best_before() )
239
  )
240
  )
@@ -290,7 +299,7 @@ class Optimus
290
  sprintf(
291
  '<div class="error"><p>%s</p></div>',
292
  sprintf(
293
- 'Optimus ist für WordPress %s optimiert. Bitte das Plugin deaktivieren oder WordPress aktualisieren (empfohlen).',
294
  OPTIMUS_MIN_WP
295
  )
296
  )
@@ -303,8 +312,8 @@ class Optimus
303
  sprintf(
304
  '<div class="error"><p>%s</p></div>',
305
  sprintf(
306
- 'Optimus setzt <a href="%s" target="_blank">cURL-Bibliothek</a> voraus (sollte auf keinem Server fehlen). Bitte beim Hoster anfragen.',
307
- 'https://php.net/manual/de/intro.curl.php'
308
  )
309
  )
310
  );
@@ -333,4 +342,37 @@ class Optimus
333
  )
334
  );
335
  }
336
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
  /* Hooks */
69
  add_action(
70
+ 'admin_enqueue_scripts',
71
  array(
72
+ __CLASS__,
73
+ 'add_js_css'
74
  )
75
  );
76
  add_filter(
89
  10,
90
  2
91
  );
 
92
  add_filter(
93
  'plugin_row_meta',
94
  array(
126
  'register_settings'
127
  )
128
  );
129
+
130
  add_action(
131
  'admin_menu',
132
  array(
134
  'add_page'
135
  )
136
  );
137
+ add_action(
138
+ 'admin_menu',
139
+ array(
140
+ 'Optimus_Management',
141
+ 'add_bulk_optimizer_page'
142
+ )
143
+ );
144
 
145
  /* Admin notices */
146
  add_action(
157
  'optimus_hq_notice'
158
  )
159
  );
160
+
161
  }
162
 
163
 
164
+
165
  /**
166
  * Hinzufügen der Action-Links
167
  *
190
  ),
191
  admin_url('options-general.php')
192
  ),
193
+ __("Settings")
194
  )
195
  )
196
  );
232
  ),
233
  network_admin_url('plugins.php#_optimus_key')
234
  ),
235
+ ( Optimus_HQ::get_key() ? __("Enter a different Optimus HQ license key", "optimus") : '<span style="color:#006505">'.__("Activate Optimus HQ", "optimus").'</span>' )
236
  )
237
  )
238
  );
243
  $rows,
244
  array(
245
  sprintf(
246
+ __("Optimus HQ expiry date: %s", "optimus"),
247
  date( 'd.m.Y', Optimus_HQ::best_before() )
248
  )
249
  )
299
  sprintf(
300
  '<div class="error"><p>%s</p></div>',
301
  sprintf(
302
+ __("Optimus is optimized for WordPress %s. Please disable the plugin or upgrade your WordPress installation (recommended).", "optimus"),
303
  OPTIMUS_MIN_WP
304
  )
305
  )
312
  sprintf(
313
  '<div class="error"><p>%s</p></div>',
314
  sprintf(
315
+ __("Optimus requires the <a href=\"%s\" target=\"_blank\">cURL-Library</a>. Please contact your hosting provider to get cURL installed.", "optimus"),
316
+ 'https://php.net/manual/en/intro.curl.php'
317
  )
318
  )
319
  );
342
  )
343
  );
344
  }
345
+
346
+
347
+ /**
348
+ * Hinzufügen von JavaScript und Styles
349
+ *
350
+ * @since 1.3.8
351
+ * @change 1.3.8
352
+ */
353
+ public static function add_js_css()
354
+ {
355
+ wp_register_style(
356
+ 'optimus-styles',
357
+ plugins_url(
358
+ 'css/styles.css',
359
+ OPTIMUS_FILE
360
+ )
361
+ );
362
+ wp_enqueue_style('optimus-styles');
363
+
364
+ $handle = 'optimus-scripts';
365
+
366
+ wp_register_script( $handle, plugins_url('js/scripts.js', OPTIMUS_FILE), array('jquery'), TRUE );
367
+ wp_localize_script($handle, 'optimusOptimize', array(
368
+ 'nonce' => wp_create_nonce('optimus-optimize'),
369
+ 'bulkDone' => __("All images have been optimized.", "optimus"),
370
+ 'bulkAction' => __("Optimize images", "optimus"),
371
+ 'optimizing' => __("Optimizing", "optimus"),
372
+ 'optimized' => __("optimized", "optimus"),
373
+ 'internalError' => __("Internal error", "optimus"),
374
+ 'waiting' => __("Waiting", "optimus"),
375
+ ));
376
+ wp_enqueue_script($handle);
377
+ }
378
+ }
inc/optimus_hq.class.php CHANGED
@@ -256,8 +256,8 @@ class Optimus_HQ
256
  <input type="text" name="_optimus_key" id="_optimus_key" maxlength="17" pattern="[A-Z0-9]{17}" />
257
  </label>
258
 
259
- <input type="submit" name="submit" value="Aktivieren" class="button button-primary regular" />
260
- <a href="<?php echo network_admin_url('plugins.php') ?>" class="button">Abbrechen</a>
261
  </form>
262
  </div>
263
  </td>
@@ -370,17 +370,17 @@ class Optimus_HQ
370
  /* Matching */
371
  switch( $type ) {
372
  case 'unlocked':
373
- $msg = '<p>Vielen Dank für die Nutzung von <strong>Optimus HQ</strong>. Wissenswertes und Aktualisierungen rund um das Plugin auf <a href="https://plus.google.com/b/114450218898660299759/114450218898660299759/posts" target="_blank">Google+</a> und <a href="https://twitter.com/optimusHQ" target="_blank">Twitter</a>.</p>';
374
  $class = 'updated';
375
  break;
376
 
377
  case 'locked':
378
- $msg = '<p><strong>Optimus</strong> ist kostenlos, der Funktionsumfang ist auf wesentliche Features reduziert.</p><p><strong>Optimus HQ</strong> (Premium) beherrscht dagegen mehrere Bildformate, komprimiert größere Dateien und verfügt über HTTPS-Verbindung. <span class="no-break">Weitere Details auf <a href="https://optimus.io" target="_blank">optimus.io</a></span><br /><br /><em>Dieser Hinweis hat eine Lebensdauer von 60 Sekunden und erscheint nicht erneut.</em></p>';
379
  $class = 'error';
380
  break;
381
 
382
  case 'expired':
383
- $msg = '<p><strong>Optimus HQ Key</strong> ist abgelaufen. Ein neuer Optimus HQ Key kann auf <a href="https://optimus.io" target="_blank">optimus.io</a> erworben werden. Vielen Dank!</p>';
384
  $class = 'error';
385
  break;
386
 
@@ -397,4 +397,4 @@ class Optimus_HQ
397
  )
398
  );
399
  }
400
- }
256
  <input type="text" name="_optimus_key" id="_optimus_key" maxlength="17" pattern="[A-Z0-9]{17}" />
257
  </label>
258
 
259
+ <input type="submit" name="submit" value="<?php _e("Activate", "optimus"); ?>" class="button button-primary regular" />
260
+ <a href="<?php echo network_admin_url('plugins.php') ?>" class="button"><?php _e("Cancel", "optimus"); ?></a>
261
  </form>
262
  </div>
263
  </td>
370
  /* Matching */
371
  switch( $type ) {
372
  case 'unlocked':
373
+ $msg = __("<p>Thank you for using <strong>Optimus HQ</strong>. Follow us on <a href=\"https://twitter.com/optimusHQ\" target=\"_blank\">Twitter</a> to get the latest news and updates.</p>", "optimus");
374
  $class = 'updated';
375
  break;
376
 
377
  case 'locked':
378
+ $msg = __("<p><strong>Optimus</strong> is free of charge, the functionality is limited to the essential features.</p><p><strong>Optimus HQ</strong> (Premium) on the other hand can handle several image formats, compress larger files and connects through HTTPS. <span class=\"no-break\">More details on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /><br /><em>This information is displayed for 60 seconds and will not appear again.</em></p>", "optimus");
379
  $class = 'error';
380
  break;
381
 
382
  case 'expired':
383
+ $msg = __("<p><strong>Optimus HQ license key</strong> has expired. Get a new Optimus HQ license key on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a>. Thank you!", "optimus");
384
  $class = 'error';
385
  break;
386
 
397
  )
398
  );
399
  }
400
+ }
inc/optimus_management.class.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ /* Quit */
5
+ defined('ABSPATH') OR exit;
6
+
7
+
8
+ /**
9
+ * Optimus_Management
10
+ *
11
+ * @since 1.3.8
12
+ */
13
+
14
+ class Optimus_Management
15
+ {
16
+
17
+
18
+ /**
19
+ * Bulk optimizer media
20
+ *
21
+ * @since 1.3.8
22
+ * @change 1.3.8
23
+ */
24
+
25
+ public function bulk_optimizer_media() {
26
+ check_admin_referer('bulk-media');
27
+
28
+ if (empty($_GET['media']) || !is_array( $_GET['media'])) {
29
+ return;
30
+ }
31
+
32
+ $ids = implode('-', array_map('intval', $_GET['media']));
33
+ wp_redirect(add_query_arg(
34
+ '_wpnonce',
35
+ wp_create_nonce('optimus-bulk-optimizer'),
36
+ admin_url("tools.php?page=optimus-bulk-optimizer&ids=$ids")
37
+ ));
38
+ exit();
39
+ }
40
+
41
+
42
+ /**
43
+ * Add bulk optimizer page
44
+ *
45
+ * @since 1.3.8
46
+ * @change 1.3.8
47
+ */
48
+
49
+ public static function add_bulk_optimizer_page()
50
+ {
51
+ /* Management page */
52
+ add_management_page(
53
+ __("Optimus Bulk Optimizer", "optimus"),
54
+ __("Optimize all images", "optimus"),
55
+ 'upload_files',
56
+ 'optimus-bulk-optimizer',
57
+ array(
58
+ __CLASS__,
59
+ 'bulk_optimizer_page'
60
+ )
61
+ );
62
+ }
63
+
64
+
65
+ /**
66
+ * Bulk optimizer page
67
+ *
68
+ * @since 1.3.8
69
+ * @change 1.3.8
70
+ *
71
+ */
72
+
73
+ public static function bulk_optimizer_page() {
74
+ global $wpdb;
75
+
76
+ if (!empty($_GET['ids'])) {
77
+ $ids = implode(',', array_map('intval', explode('-', $_GET['ids'])));
78
+ $condition = "AND ID IN($ids)";
79
+ } else {
80
+ $condition = "";
81
+ }
82
+
83
+ $query = "SELECT ID, post_title, post_mime_type FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%' $condition ORDER BY ID DESC";
84
+ $assets = $wpdb->get_results($query, ARRAY_A);
85
+ $count = count($assets);
86
+
87
+ echo '<div class="wrap" id="optimus-bulk-optimizer">';
88
+ echo '<h2>' . __("Optimus Bulk Optimizer", "optimus") . '</h2>';
89
+ if (empty($_POST['optimus-bulk-optimizer']) && empty($_GET['ids'])) {
90
+ echo '<p>' . __("The Optimus bulk optimizer compresses all images that have not yet been compressed in your WordPress media library.", "optimus") . '</p>';
91
+
92
+ if ( Optimus_HQ::is_locked() ) {
93
+ echo '<p>' . __("It is recommended to run the bulk image optimization with an Optimus HQ activated version due to the size limitation of the free version.", "optimus") . '</p>';
94
+ }
95
+
96
+ echo '<p><em>' . sprintf(__("Optimus found <strong>%d images</strong> in your WordPress media library.", "optimus"), $count) . '</em></p>';
97
+ echo '<form method="POST" action="?page=optimus-bulk-optimizer">';
98
+ echo '<input type="hidden" name="_wpnonce" value="' . wp_create_nonce('optimus-bulk-optimizer') . '">';
99
+ echo '<input type="hidden" name="optimus-bulk-optimizer" value="1">';
100
+ echo '<p><input type="submit" name="submit" id="submit" class="button button-primary" value="'.__("Optimize all images", "optimus").'"></p>';
101
+ echo '</form>';
102
+ } else {
103
+ check_admin_referer('optimus-bulk-optimizer');
104
+ echo '<p>' . __("It might take a while until all images are optimized. This depends on the amount and size of the images.", "optimus") . '</p>';
105
+ echo '<p><em>' . __("Note: Do not close this tab during the optimization process.", "optimus") . '</em></p>';
106
+
107
+ echo '<div id="optimus-progress"><p>' . __("Completed", "optimus") . ' <span>0</span> / ' . sprintf(' %d </p></div>', $count);
108
+ echo '<div id="media-items"></div>';
109
+
110
+ echo '<script type="text/javascript">jQuery(function() { optimusBulkOptimizer('. json_encode($assets) . ')})</script>';
111
+ }
112
+
113
+ echo '</div>';
114
+ }
115
+ }
inc/optimus_media.class.php CHANGED
@@ -15,27 +15,6 @@ class Optimus_Media
15
  {
16
 
17
 
18
- /**
19
- * Add media column css
20
- *
21
- * @since 0.0.2
22
- * @change 1.3.0
23
- */
24
-
25
- public static function add_css()
26
- {
27
- wp_register_style(
28
- 'optimus-media',
29
- plugins_url(
30
- 'css/styles.min.css',
31
- OPTIMUS_FILE
32
- )
33
- );
34
-
35
- wp_enqueue_style('optimus-media');
36
- }
37
-
38
-
39
  /**
40
  * Media column output
41
  *
@@ -148,4 +127,4 @@ class Optimus_Media
148
  return 'three';
149
  }
150
  }
151
- }
15
  {
16
 
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  /**
19
  * Media column output
20
  *
127
  return 'three';
128
  }
129
  }
130
+ }
inc/optimus_request.class.php CHANGED
@@ -9,6 +9,7 @@ defined('ABSPATH') OR exit;
9
  * Optimus_Request
10
  *
11
  * @since 1.1.7
 
12
  */
13
 
14
  class Optimus_Request
@@ -16,7 +17,7 @@ class Optimus_Request
16
 
17
 
18
  /**
19
- * Default remote scheme
20
  *
21
  * @var string
22
  */
@@ -24,6 +25,67 @@ class Optimus_Request
24
  private static $_remote_scheme = 'http';
25
 
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  /**
28
  * Build optimization for a upload image including previews
29
  *
9
  * Optimus_Request
10
  *
11
  * @since 1.1.7
12
+ * @change 1.3.8
13
  */
14
 
15
  class Optimus_Request
17
 
18
 
19
  /**
20
+ * Optimize image
21
  *
22
  * @var string
23
  */
25
  private static $_remote_scheme = 'http';
26
 
27
 
28
+ /**
29
+ * Image optimization post process (ajax)
30
+ *
31
+ * @since 1.3.8
32
+ * @change 1.3.8
33
+ *
34
+ * @return json $metadata Update metadata information
35
+ */
36
+
37
+ public static function optimize_image() {
38
+ if (!check_ajax_referer('optimus-optimize', '_nonce', false)) {
39
+ exit();
40
+ }
41
+
42
+ /* check if valid request */
43
+ if (empty($_POST['id'])) {
44
+ $message = __("Invalid request", "optimus");
45
+ echo json_encode(array('error' => $message));
46
+ exit();
47
+ }
48
+ $id = intval($_POST['id']);
49
+
50
+ /* check user permission */
51
+ if (!current_user_can('upload_files')) {
52
+ $message = __("Permission missing (upload_files)", "optimus");
53
+ echo json_encode(array('error' => $message));
54
+ exit();
55
+ }
56
+
57
+ /* get metadata */
58
+ $metadata = wp_get_attachment_metadata($id);
59
+ if (!is_array($metadata)) {
60
+ $message = __("Metadata missing", "optimus");
61
+ echo json_encode(array('error' => $message));
62
+ exit;
63
+ }
64
+
65
+ /* check if already optimized */
66
+ if (isset($metadata['optimus'])) {
67
+ $message = __("Already optimized", "optimus");
68
+ echo json_encode(array('info' => $message));
69
+ exit;
70
+ }
71
+
72
+ /* optimize image */
73
+ $optimus_metadata = self::optimize_upload_images($metadata, $id);
74
+
75
+ if (!isset($optimus_metadata['optimus'])) {
76
+ $message = __("Optimus HQ required", "optimus");
77
+ echo json_encode(array('error' => $message));
78
+ exit;
79
+ }
80
+
81
+ /* update metadata */
82
+ update_post_meta($id, '_wp_attachment_metadata', $optimus_metadata);
83
+
84
+ echo json_encode($optimus_metadata);
85
+ exit;
86
+ }
87
+
88
+
89
  /**
90
  * Build optimization for a upload image including previews
91
  *
inc/optimus_settings.class.php CHANGED
@@ -91,7 +91,7 @@ class Optimus_Settings
91
  { ?>
92
  <div class="wrap">
93
  <h2>
94
- Optimus Einstellungen
95
  </h2>
96
 
97
  <form method="post" action="options.php">
@@ -103,7 +103,7 @@ class Optimus_Settings
103
  <?php if ( $sizes = get_intermediate_image_sizes() ) { ?>
104
  <tr valign="top">
105
  <th scope="row">
106
- Bildgrößen
107
  </th>
108
  <td>
109
  <p>
@@ -111,11 +111,11 @@ class Optimus_Settings
111
  </p>
112
 
113
  <p class="description">
114
- Zusätzlich zum Originalbild verkleinert Optimus die in WordPress registrierten Bildgrößen. [<a href="https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/jZVfeac5eHW" target="_blank">Details</a>]
115
  </p>
116
  <br>
117
  <p class="description">
118
- Größenlimitierung der kostenlosen Version von Optimus ist <strong>100 KB</strong>. Sollen größere Bilder auch optimiert werden? <a href="https://optimus.io" target="_blank">Optimus HQ</a> ist die Lösung.
119
  </p>
120
  </td>
121
  </tr>
@@ -123,17 +123,17 @@ class Optimus_Settings
123
 
124
  <tr valign="top">
125
  <th scope="row">
126
- Originalbilder
127
  </th>
128
  <td>
129
  <fieldset>
130
  <label for="optimus_keep_original">
131
  <input type="checkbox" name="optimus[keep_original]" id="optimus_keep_original" value="1" <?php checked(1, $options['keep_original']) ?> />
132
- Keine Optimierung der Originalbilder
133
  </label>
134
 
135
  <p class="description">
136
- Optimus komprimiert ausschließlich Vorschaubilder (Thumbnails). In WordPress hochgeladene Originalbilder bleiben unangetastet. [<a href="https://plus.google.com/114450218898660299759/posts/eNQFbeh9wqk" target="_blank">Details</a>]
137
  </p>
138
  </fieldset>
139
  </td>
@@ -141,17 +141,17 @@ class Optimus_Settings
141
 
142
  <tr valign="top">
143
  <th scope="row">
144
- Bild-Metadaten
145
  </th>
146
  <td>
147
  <fieldset>
148
  <label for="optimus_copy_markers">
149
  <input type="checkbox" name="optimus[copy_markers]" id="optimus_copy_markers" value="1" <?php checked(1, $options['copy_markers']) ?> />
150
- Keine Löschung der Bild-Metadaten
151
  </label>
152
 
153
  <p class="description">
154
- Nur <a href="https://optimus.io" target="_blank">Optimus HQ</a>. Aktive Option behält EXIF-, Copyright- und Fotoaufnahme-Informationen in Bildern. Die Größenreduzierung fällt geringer aus. [<a href="https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/Wwz7uFHBzFF" target="_blank">Details</a>]
155
  </p>
156
  </fieldset>
157
  </td>
@@ -159,17 +159,17 @@ class Optimus_Settings
159
 
160
  <tr valign="top">
161
  <th scope="row">
162
- WebP-Dateien
163
  </th>
164
  <td>
165
  <fieldset>
166
  <label for="optimus_webp_convert">
167
- <input type="checkbox" name="optimus[webp_convert]" id="optimus_webp_convert" value="1" <?php checked(1, $options['webp_convert']) ?> onclick='if ( this.checked ) return confirm("Nur für erfahrene Nutzer, da Anpassung der Server-Konfigurationsdatei und Qualitätskontrolle notwendig.\n\nOption aktivieren?")' />
168
- Anfertigung der WebP-Dateien
169
  </label>
170
 
171
  <p class="description">
172
- Nur <a href="https://optimus.io" target="_blank">Optimus HQ</a>. Modifizierung der Server-Konfigurationsdatei und Überprüfung der Ausgabe erforderlich. Verlangsamt den Optimierungsprozess. [<a href="https://plus.google.com/114450218898660299759/posts/3emb7o4368X" target="_blank">Details</a>]
173
  </p>
174
  </fieldset>
175
  </td>
@@ -177,17 +177,17 @@ class Optimus_Settings
177
 
178
  <tr valign="top">
179
  <th scope="row">
180
- HTTPS-Verbindung
181
  </th>
182
  <td>
183
  <fieldset>
184
  <label for="optimus_secure_transport">
185
  <input type="checkbox" name="optimus[secure_transport]" id="optimus_secure_transport" value="1" <?php checked(1, $options['secure_transport']) ?> />
186
- Bilder TLS-verschlüsselt übertragen
187
  </label>
188
 
189
  <p class="description">
190
- Nur <a href="https://optimus.io" target="_blank">Optimus HQ</a>. Die Kommunikation zum Optimus-Server erfolgt über eine HTTPS-Verbindung. Verlangsamt den Optimierungsprozess. [<a href="https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/5f2f9XKXb4F" target="_blank">Details</a>]
191
  </p>
192
  </fieldset>
193
  </td>
91
  { ?>
92
  <div class="wrap">
93
  <h2>
94
+ <?php _e("Optimus Settings", "optimus"); ?>
95
  </h2>
96
 
97
  <form method="post" action="options.php">
103
  <?php if ( $sizes = get_intermediate_image_sizes() ) { ?>
104
  <tr valign="top">
105
  <th scope="row">
106
+ <?php _e("Image sizes", "optimus"); ?>
107
  </th>
108
  <td>
109
  <p>
111
  </p>
112
 
113
  <p class="description">
114
+ <?php _e("In addition to the original image, Optimus compresses the registered image sizes in WordPress. [<a href=\"https://optimus.io/support/compression-of-thumbnail-images-in-wordpress/\" target=\"_blank\">Details</a>]", "optimus"); ?>
115
  </p>
116
  <br>
117
  <p class="description">
118
+ <?php if ( Optimus_HQ::is_locked() ) { _e("The size limit of the free version of Optimus is <strong>100 KB</strong>. Do you want to compress larger images? Get a license for <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>.", "optimus"); } ?>
119
  </p>
120
  </td>
121
  </tr>
123
 
124
  <tr valign="top">
125
  <th scope="row">
126
+ <?php _e("Original images", "optimus"); ?>
127
  </th>
128
  <td>
129
  <fieldset>
130
  <label for="optimus_keep_original">
131
  <input type="checkbox" name="optimus[keep_original]" id="optimus_keep_original" value="1" <?php checked(1, $options['keep_original']) ?> />
132
+ <?php _e("No optimization of original images", "optimus"); ?>
133
  </label>
134
 
135
  <p class="description">
136
+ <?php _e("Optimus only compresses preview images (Thumbnails). Original images uploaded to WordPress are not affected. [<a href=\"https://optimus.io/support/optimization-of-original-images/\" target=\"_blank\">Details</a>]", "optimus"); ?>
137
  </p>
138
  </fieldset>
139
  </td>
141
 
142
  <tr valign="top">
143
  <th scope="row">
144
+ <?php _e("Image metadata", "optimus"); ?>
145
  </th>
146
  <td>
147
  <fieldset>
148
  <label for="optimus_copy_markers">
149
  <input type="checkbox" name="optimus[copy_markers]" id="optimus_copy_markers" value="1" <?php checked(1, $options['copy_markers']) ?> />
150
+ <?php _e("No deletion of image metadata", "optimus"); ?>
151
  </label>
152
 
153
  <p class="description">
154
+ <?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Active option keeps EXIF-, copyright and photo creation information in images. Size reduction is less significant. [<a href=\"https://optimus.io/support/remove-metadata-from-images/\" target=\"_blank\">Details</a>]", "optimus"); ?>
155
  </p>
156
  </fieldset>
157
  </td>
159
 
160
  <tr valign="top">
161
  <th scope="row">
162
+ <?php _e("WebP files", "optimus"); ?>
163
  </th>
164
  <td>
165
  <fieldset>
166
  <label for="optimus_webp_convert">
167
+ <input type="checkbox" name="optimus[webp_convert]" id="optimus_webp_convert" value="1" <?php checked(1, $options['webp_convert']) ?> onclick='if ( this.checked ) return confirm("<?php _e("Only for experienced users. Modification of your web server configuration required.\\n\\nActivate option?", "optimus"); ?>")' />
168
+ <?php _e("Creation of WebP files", "optimus"); ?>
169
  </label>
170
 
171
  <p class="description">
172
+ <?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Modification of the server configuration file and verification of output required. Slows down the optimization process. [<a href=\"https://optimus.io/support/convert-jpeg-and-png-to-webp-image-format/\" target=\"_blank\">Details</a>]", "optimus"); ?>
173
  </p>
174
  </fieldset>
175
  </td>
177
 
178
  <tr valign="top">
179
  <th scope="row">
180
+ <?php _e("HTTPS connection", "optimus"); ?>
181
  </th>
182
  <td>
183
  <fieldset>
184
  <label for="optimus_secure_transport">
185
  <input type="checkbox" name="optimus[secure_transport]" id="optimus_secure_transport" value="1" <?php checked(1, $options['secure_transport']) ?> />
186
+ <?php _e("Transfer images using TLS encryption", "optimus"); ?>
187
  </label>
188
 
189
  <p class="description">
190
+ <?php _e("Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Communication with the Optimus server is conducted through an HTTPS connection. Slightly slows down the optimization process.", "optimus"); ?>
191
  </p>
192
  </fieldset>
193
  </td>
js/scripts.js ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function() {
2
+
3
+ function bulk_optimize_callback(error, data, assets, i) {
4
+ var row = jQuery(jQuery('#media-items').children("div")[i])
5
+ var status
6
+
7
+ status = row.find('.bar')
8
+
9
+ if (error) {
10
+ status.addClass('err')
11
+ row.find('.bar').css('width', '100%')
12
+ row.find('.percent').html(optimusOptimize.internalError)
13
+ row.find('.progress').attr("title", error.toString())
14
+ } else if (data.error) {
15
+ status.addClass('err')
16
+ row.find('.bar').css('width', '100%')
17
+ row.find('.percent').html(data.error)
18
+ row.find('.progress').attr("title", data.error)
19
+ } else if (data.info) {
20
+ status.addClass('info')
21
+ row.find('.bar').css('width', '100%')
22
+ row.find('.percent').html(data.info)
23
+ row.find('.progress').attr("title", data.info)
24
+ } else if (data.optimus.quantity < 100) {
25
+ status.addClass('partial')
26
+ row.find('.bar').css('width', data.optimus.quantity + '%')
27
+ row.find('.percent').html(data.optimus.quantity + "% " + optimusOptimize.optimized)
28
+ row.find('.progress').attr("title", data.message)
29
+ } else {
30
+ status.addClass('success')
31
+ row.find('.bar').css('width', '100%')
32
+ row.find('.percent').html(data.optimus.quantity + "% " + optimusOptimize.optimized)
33
+ }
34
+
35
+ if (assets[++i]) {
36
+ bulk_optimize_asset(assets, i)
37
+ } else {
38
+ var message = jQuery('<div class="updated"><p></p></div>');
39
+ message.find('p').html(optimusOptimize.bulkDone)
40
+ message.insertAfter(jQuery("#optimus-bulk-optimizer h2"))
41
+ }
42
+ }
43
+
44
+ function bulk_optimize_asset(assets, i) {
45
+ var asset = assets[i]
46
+ var row = jQuery(jQuery('#media-items').children("div")[i])
47
+ row.find('.percent').html(optimusOptimize.optimizing)
48
+ jQuery.ajax({
49
+ url: ajaxurl,
50
+ type: "POST",
51
+ dataType: "json",
52
+ data: {
53
+ _nonce: optimusOptimize.nonce,
54
+ action: 'optimus_optimize_image',
55
+ id: assets[i].ID
56
+ },
57
+ success: function(data) {
58
+ bulk_optimize_callback(null, data, assets, i)
59
+ },
60
+ error: function(xhr, textStatus, errorThrown) {
61
+ bulk_optimize_callback(errorThrown, {}, assets, i)
62
+ }
63
+ })
64
+ jQuery('#optimus-progress span').html(i + 1)
65
+ }
66
+
67
+ function bulk_optimize(assets) {
68
+ var list = jQuery('#media-items')
69
+ var row
70
+ for (var i = 0; i < assets.length; i++) {
71
+ row = jQuery('<div class="media-item"><div class="progress"><div class="percent"></div><div class="bar"></div></div><div class="filename"></div></div>')
72
+
73
+ row.find('.percent').html(optimusOptimize.waiting)
74
+ row.find('.filename').html(assets[i].post_title + ' <small>' + assets[i].post_mime_type + '</small>')
75
+ list.append(row)
76
+ }
77
+ bulk_optimize_asset(assets, 0)
78
+ }
79
+ window.optimusBulkOptimizer = bulk_optimize
80
+ }).call()
81
+
82
+ jQuery(document).ready(function() {
83
+ if (adminpage === "upload-php") {
84
+ jQuery('<option>').val('optimus_bulk_optimizer').text(optimusOptimize.bulkAction).appendTo('select[name="action"]')
85
+ jQuery('<option>').val('optimus_bulk_optimizer').text(optimusOptimize.bulkAction).appendTo('select[name="action2"]')
86
+ }
87
+ });
lang/optimus-de_DE.mo ADDED
Binary file
lang/optimus-de_DE.po ADDED
@@ -0,0 +1,323 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Optimus\n"
4
+ "Report-Msgid-Bugs-To: KeyCDN\n"
5
+ "POT-Creation-Date: 2015-06-16 19:46+0100\n"
6
+ "PO-Revision-Date: 2015-06-29 14:23+0100\n"
7
+ "Last-Translator: KeyCDN <optimus@keycdn.com>\n"
8
+ "Language-Team: KeyCDN\n"
9
+ "Language: de_DE\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Poedit-KeywordsList: __;gettext;gettext_noop;_e\n"
14
+ "X-Generator: Poedit 1.6.4\n"
15
+
16
+ #: description
17
+ msgid ""
18
+ "Lossless compression and optimization of uploaded images in WordPress. "
19
+ "Automatic, reliable, effective."
20
+ msgstr ""
21
+ "Verlustfreie Komprimierung der Upload-Bilder in WordPress. Automatisch, "
22
+ "zuverlässig, wirkungsvoll."
23
+
24
+ #: branches/1.3.0/inc/optimus.class.php:183 inc/optimus.class.php:186
25
+ #: tags/1.3.1/inc/optimus.class.php:198 tags/1.3.3/inc/optimus.class.php:184
26
+ #: tags/1.3.5/inc/optimus.class.php:184 tags/1.3.6/inc/optimus.class.php:184
27
+ #: tags/1.3.7/inc/optimus.class.php:184 trunk/inc/optimus.class.php:184
28
+ msgid "Settings"
29
+ msgstr "Einstellungen"
30
+
31
+ #: branches/1.3.0/inc/optimus_settings.class.php:156
32
+ msgid "Save Changes"
33
+ msgstr "Änderungen speichern"
34
+
35
+ #: inc/optimus.class.php:228
36
+ msgid "Enter a different Optimus HQ license key"
37
+ msgstr "Anderen Optimus HQ Key eingeben"
38
+
39
+ #: inc/optimus.class.php:228
40
+ msgid "Activate Optimus HQ"
41
+ msgstr "Optimus HQ aktivieren"
42
+
43
+ #: inc/optimus.class.php:239
44
+ msgid "Optimus HQ expiry date: %s"
45
+ msgstr "Optimus HQ Ablaufdatum: %s"
46
+
47
+ #: inc/optimus.class.php:295
48
+ msgid ""
49
+ "Optimus is optimized for WordPress %s. Please disable the plugin or upgrade "
50
+ "your WordPress installation (recommended)."
51
+ msgstr ""
52
+ "Optimus ist für WordPress %s optimiert. Bitte das Plugin deaktivieren oder "
53
+ "WordPress aktualisieren (empfohlen)."
54
+
55
+ #: inc/optimus.class.php:308
56
+ msgid ""
57
+ "Optimus requires the <a href=\"%s\" target=\"_blank\">cURL-Library</a>. "
58
+ "Please contact your hosting provider to get cURL installed."
59
+ msgstr ""
60
+ "Optimus setzt <a href=\"%s\" target=\"_blank\">cURL-Bibliothek</a> voraus "
61
+ "(sollte auf keinem Server fehlen). Bitte beim Hoster anfragen."
62
+
63
+ #: inc/optimus_settings.class.php:94
64
+ msgid "Optimus Settings"
65
+ msgstr "Optimus Einstellungen"
66
+
67
+ #: inc/optimus_settings.class.php:xx
68
+ msgid "Image size"
69
+ msgstr "Bildgrößen"
70
+
71
+ #: inc/optimus_settings.class.php:xx
72
+ msgid "Image sizes"
73
+ msgstr "Bildgrößen"
74
+
75
+ #: inc/optimus_settings.class.php:xx
76
+ msgid ""
77
+ "In addition to the original image, Optimus compresses the registered image "
78
+ "sizes in WordPress. [<a href=\"https://optimus.io/support/compression-of-"
79
+ "thumbnail-images-in-wordpress/\" target=\"_blank\">Details</a>]"
80
+ msgstr ""
81
+ "Zusätzlich zum Originalbild verkleinert Optimus die in WordPress "
82
+ "registrierten Bildgrößen. [<a href=\"https://plus.google.com/"
83
+ "b/114450218898660299759/114450218898660299759/posts/jZVfeac5eHW\" target="
84
+ "\"_blank\">Details</a>]"
85
+
86
+ #: inc/optimus_settings.class.php:xx
87
+ msgid ""
88
+ "The size limit of the free version of Optimus is <strong>100 KB</strong>. Do "
89
+ "you want to compress larger images? Get a license for <a href=\"https://"
90
+ "optimus.io\" target=\"_blank\">Optimus HQ</a>."
91
+ msgstr ""
92
+ "Größenlimitierung der kostenlosen Version von Optimus ist <strong>100 KB</"
93
+ "strong>. Sollen größere Bilder auch optimiert werden? <a href=\"https://"
94
+ "optimus.io\" target=\"_blank\">Optimus HQ</a> ist die Lösung."
95
+
96
+ #: inc/optimus_settings.class.php:xx
97
+ msgid "Original images"
98
+ msgstr "Originalbilder"
99
+
100
+ #: inc/optimus_settings.class.php:xx
101
+ msgid "No optimization of original images"
102
+ msgstr "Keine Optimierung der Originalbilder"
103
+
104
+ #: inc/optimus_settings.class.php:xx
105
+ msgid ""
106
+ "Optimus only compresses preview images (Thumbnails). Original images "
107
+ "uploaded to WordPress are not affected. [<a href=\"https://optimus.io/"
108
+ "support/optimization-of-original-images/\" target=\"_blank\">Details</a>]"
109
+ msgstr ""
110
+ "Optimus komprimiert ausschließlich Vorschaubilder (Thumbnails). In WordPress "
111
+ "hochgeladene Originalbilder bleiben unangetastet. [<a href=\"https://plus."
112
+ "google.com/114450218898660299759/posts/eNQFbeh9wqk\" target=\"_blank"
113
+ "\">Details</a>]"
114
+
115
+ #: inc/optimus_settings.class.php:xx
116
+ msgid "Image metadata"
117
+ msgstr "Bild-Metadaten"
118
+
119
+ #: inc/optimus_settings.class.php:xx
120
+ msgid "No deletion of image metadata"
121
+ msgstr "Keine Löschung der Bild-Metadaten"
122
+
123
+ #: inc/optimus_settings.class.php:xx
124
+ msgid ""
125
+ "Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Active "
126
+ "option keeps EXIF-, copyright and photo creation information in images. Size "
127
+ "reduction is less significant. [<a href=\"https://optimus.io/support/remove-"
128
+ "metadata-from-images/\" target=\"_blank\">Details</a>]"
129
+ msgstr ""
130
+ "Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Aktive "
131
+ "Option behält EXIF-, Copyright- und Fotoaufnahme-Informationen in Bildern. "
132
+ "Die Größenreduzierung fällt geringer aus. [<a href=\"https://plus.google.com/"
133
+ "b/114450218898660299759/114450218898660299759/posts/Wwz7uFHBzFF\" target="
134
+ "\"_blank\">Details</a>]"
135
+
136
+ #: inc/optimus_settings.class.php:xx
137
+ msgid "WebP files"
138
+ msgstr "WebP-Dateien"
139
+
140
+ #: inc/optimus_settings.class.php:xx
141
+ msgid ""
142
+ "Only for experienced users. Modification of your web server configuration "
143
+ "required.\\n\\nActivate option?"
144
+ msgstr ""
145
+ "Nur für erfahrene Nutzer, da Anpassung der Server-Konfigurationsdatei und "
146
+ "Qualitätskontrolle notwendig.\\n\\nOption aktivieren?"
147
+
148
+ #: inc/optimus_settings.class.php:xx
149
+ msgid "Creation of WebP files"
150
+ msgstr "Anfertigung der WebP-Dateien"
151
+
152
+ #: inc/optimus_settings.class.php:xx
153
+ msgid ""
154
+ "Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
155
+ "Modification of the server configuration file and verification of output "
156
+ "required. Slows down the optimization process. [<a href=\"https://optimus.io/"
157
+ "support/convert-jpeg-and-png-to-webp-image-format/\" target=\"_blank"
158
+ "\">Details</a>]"
159
+ msgstr ""
160
+ "Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
161
+ "Modifizierung der Server-Konfigurationsdatei und Überprüfung der Ausgabe "
162
+ "erforderlich. Verlangsamt den Optimierungsprozess. [<a href=\"https://plus."
163
+ "google.com/114450218898660299759/posts/3emb7o4368X\" target=\"_blank"
164
+ "\">Details</a>]"
165
+
166
+ #: inc/optimus_settings.class.php:xx
167
+ msgid "HTTPS connection"
168
+ msgstr "HTTPS-Verbindung"
169
+
170
+ #: inc/optimus_settings.class.php:xx
171
+ msgid "Transfer images using TLS encryption"
172
+ msgstr "Bilder TLS-verschlüsselt übertragen"
173
+
174
+ #: inc/optimus_settings.class.php:xx
175
+ msgid ""
176
+ "Only <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. "
177
+ "Communication with the Optimus server is conducted through an HTTPS "
178
+ "connection. Slightly slows down the optimization process."
179
+ msgstr ""
180
+ "Nur <a href=\"https://optimus.io\" target=\"_blank\">Optimus HQ</a>. Die "
181
+ "Kommunikation zum Optimus-Server erfolgt über eine HTTPS-Verbindung. "
182
+ "Verlangsamt den Optimierungsprozess. [<a href=\"https://plus.google.com/"
183
+ "b/114450218898660299759/114450218898660299759/posts/5f2f9XKXb4F\" target="
184
+ "\"_blank\">Details</a>]"
185
+
186
+ #: inc/optimus_hq.class.php:xx
187
+ msgid "Activate"
188
+ msgstr "Aktivieren"
189
+
190
+ #: inc/optimus_hq.class.php:xx
191
+ msgid "Cancel"
192
+ msgstr "Abbrechen"
193
+
194
+ #: inc/optimus_hq.class.php:xx
195
+ msgid ""
196
+ "<p>Thank you for using <strong>Optimus HQ</strong>. Follow us on <a href="
197
+ "\"https://twitter.com/optimusHQ\" target=\"_blank\">Twitter</a> to get the "
198
+ "latest news and updates.</p>"
199
+ msgstr ""
200
+ "<p>Vielen Dank für die Nutzung von <strong>Optimus HQ</strong>. "
201
+ "Wissenswertes und Aktualisierungen rund um das Plugin auf <a href=\"https://"
202
+ "plus.google.com/b/114450218898660299759/114450218898660299759/posts\" target="
203
+ "\"_blank\">Google+</a> und <a href=\"https://twitter.com/optimusHQ\" target="
204
+ "\"_blank\">Twitter</a>.</p>"
205
+
206
+ #: inc/optimus_hq.class.php:xx
207
+ msgid ""
208
+ "<p><strong>Optimus</strong> is free of charge, the functionality is limited "
209
+ "to the essential features.</p><p><strong>Optimus HQ</strong> (Premium) on "
210
+ "the other hand can handle several image formats, compress larger files and "
211
+ "connects through HTTPS. <span class=\"no-break\">More details on <a href="
212
+ "\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /><br /"
213
+ "><em>This information is displayed for 60 seconds and will not appear again."
214
+ "</em></p>"
215
+ msgstr ""
216
+ "<p><strong>Optimus</strong> ist kostenlos, der Funktionsumfang ist auf "
217
+ "wesentliche Features reduziert.</p><p><strong>Optimus HQ</strong> (Premium) "
218
+ "beherrscht dagegen mehrere Bildformate, komprimiert größere Dateien und "
219
+ "verfügt über HTTPS-Verbindung. <span class=\"no-break\">Weitere Details auf "
220
+ "<a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a></span><br /"
221
+ "><br /><em>Dieser Hinweis hat eine Lebensdauer von 60 Sekunden und erscheint "
222
+ "nicht erneut.</em></p>"
223
+
224
+ #: inc/optimus_hq.class.php:xx
225
+ msgid ""
226
+ "<p><strong>Optimus HQ license key</strong> has expired. Get a new Optimus HQ "
227
+ "license key on <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</"
228
+ "a>. Thank you!</p>"
229
+ msgstr ""
230
+ "<p><strong>Optimus HQ Key</strong> ist abgelaufen. Ein neuer Optimus HQ Key "
231
+ "kann auf <a href=\"https://optimus.io\" target=\"_blank\">optimus.io</a> "
232
+ "erworben werden. Vielen Dank!</p>"
233
+
234
+ #: inc/optimus_management.class.php:xx
235
+ msgid "Optimus Bulk Optimizer"
236
+ msgstr "Alle Bilder mit Optimus optimieren"
237
+
238
+ #: inc/optimus_management.class.php:xx
239
+ msgid "Optimize all images"
240
+ msgstr "Bilder optimieren"
241
+
242
+ #: inc/optimus_management.class.php:xx
243
+ msgid ""
244
+ "The Optimus bulk optimizer compresses all images that have not yet been "
245
+ "compressed in your WordPress media library."
246
+ msgstr ""
247
+ "Mit diesem Werkzeug können alle Bilder in der WordPress Mediathek optimiert "
248
+ "werden. Bereits optimierte Bilder werden ignoriert."
249
+
250
+ #: inc/optimus_management.class.php:xx
251
+ msgid ""
252
+ "It is recommended to run the bulk image optimization with an Optimus HQ "
253
+ "activated version due to the size limitation of the free version."
254
+ msgstr ""
255
+ "Es ist empfohlen zuerst die Optimus HQ Version zu aktivieren wegen der "
256
+ "Grösseneinschränkung der kostenlosen Version."
257
+
258
+ #: inc/optimus_management.class.php:xx
259
+ msgid ""
260
+ "Optimus found <strong>%d images</strong> in your WordPress media library."
261
+ msgstr "Optimus hat <strong>%d Bilder</strong> in der Mediathek gefunden."
262
+
263
+ #: inc/optimus_management.class.php:xx
264
+ msgid ""
265
+ "It might take a while until all images are optimized. This depends on the "
266
+ "amount and size of the images."
267
+ msgstr ""
268
+ "Die Optimierung aller Bilder kann einige Zeit in Anspruch nehmen. Dies hängt "
269
+ "von der Anzahl und der Grösse der Bilder ab."
270
+
271
+ #: inc/optimus_management.class.php:xx
272
+ msgid "Note: Do not close this tab during the optimization process."
273
+ msgstr ""
274
+ "Achtung: Während des Optimierungsprozesses darf dieses Fenster nicht "
275
+ "geschlossen werden."
276
+
277
+ #: inc/optimus_management.class.php:xx
278
+ msgid "Completed"
279
+ msgstr "Erledigt"
280
+
281
+ #: inc/optimus.class.php:xx
282
+ msgid "All images have been optimized."
283
+ msgstr "Alle Bilder wurden optimiert."
284
+
285
+ #: inc/optimus.class.php:xx
286
+ msgid "Optimize images"
287
+ msgstr "Bilder optimieren"
288
+
289
+ #: inc/optimus.class.php:xx
290
+ msgid "Optimizing"
291
+ msgstr "Optimierung läuft"
292
+
293
+ #: inc/optimus.class.php:xx
294
+ msgid "optimized"
295
+ msgstr "optimiert"
296
+
297
+ #: inc/optimus.class.php:xx
298
+ msgid "Internal error"
299
+ msgstr "Interner Fehler"
300
+
301
+ #: inc/optimus.class.php:xx
302
+ msgid "Waiting"
303
+ msgstr "Ausstehend"
304
+
305
+ #: inc/optimus_request.class.php:xx
306
+ msgid "Invalid request"
307
+ msgstr "Ungültige Anfrage"
308
+
309
+ #: inc/optimus_request.class.php:xx
310
+ msgid "Permission missing (upload_files)"
311
+ msgstr "Berechtigung fehlt (upload_files)"
312
+
313
+ #: inc/optimus_request.class.php:xx
314
+ msgid "Metadata missing"
315
+ msgstr "Metadata nicht gefunden"
316
+
317
+ #: inc/optimus_request.class.php:xx
318
+ msgid "Already optimized"
319
+ msgstr "Bereits optimiert"
320
+
321
+ #: inc/optimus_request.class.php:xx
322
+ msgid "Optimus HQ required"
323
+ msgstr "Optimus HQ benötigt"
optimus.php CHANGED
@@ -1,12 +1,13 @@
1
  <?php
2
  /*
3
  Plugin Name: Optimus
4
- Description: Verlustfreie Komprimierung der Upload-Bilder in WordPress. Automatisch, zuverlässig, wirkungsvoll.
 
5
  Author: KeyCDN
6
  Author URI: https://www.keycdn.com
7
  Plugin URI: https://optimus.io
8
  License: GPLv2 or later
9
- Version: 1.3.6
10
  */
11
 
12
  /*
@@ -39,6 +40,31 @@ define('OPTIMUS_BASE', plugin_basename(__FILE__));
39
  define('OPTIMUS_MIN_WP', '3.8');
40
 
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  /* Admin & XMLRPC only */
43
  if ( is_admin() OR (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
44
  add_action(
@@ -76,7 +102,7 @@ spl_autoload_register('optimus_autoload');
76
 
77
  /* Autoload Funktion */
78
  function optimus_autoload($class) {
79
- if ( in_array($class, array('Optimus', 'Optimus_HQ', 'Optimus_Settings', 'Optimus_Media', 'Optimus_Request')) ) {
80
  require_once(
81
  sprintf(
82
  '%s/inc/%s.class.php',
1
  <?php
2
  /*
3
  Plugin Name: Optimus
4
+ Text Domain: optimus
5
+ Description: Lossless compression and optimization of uploaded images in WordPress. Automatic, reliable, effective.
6
  Author: KeyCDN
7
  Author URI: https://www.keycdn.com
8
  Plugin URI: https://optimus.io
9
  License: GPLv2 or later
10
+ Version: 1.3.8
11
  */
12
 
13
  /*
40
  define('OPTIMUS_MIN_WP', '3.8');
41
 
42
 
43
+ /* Hook admin init */
44
+ add_action('init', 'admin_init');
45
+ function admin_init()
46
+ {
47
+ if (is_admin()) {
48
+ load_plugin_textdomain( 'optimus', false, dirname( plugin_basename(__FILE__) ) . '/lang/' );
49
+
50
+ add_action(
51
+ 'wp_ajax_optimus_optimize_image',
52
+ array(
53
+ 'Optimus_Request',
54
+ 'optimize_image'
55
+ )
56
+ );
57
+ add_action(
58
+ 'admin_action_optimus_bulk_optimizer',
59
+ array(
60
+ 'Optimus_Management',
61
+ 'bulk_optimizer_media'
62
+ )
63
+ );
64
+ }
65
+ }
66
+
67
+
68
  /* Admin & XMLRPC only */
69
  if ( is_admin() OR (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) ) {
70
  add_action(
102
 
103
  /* Autoload Funktion */
104
  function optimus_autoload($class) {
105
+ if ( in_array($class, array('Optimus', 'Optimus_HQ', 'Optimus_Management', 'Optimus_Settings', 'Optimus_Media', 'Optimus_Request')) ) {
106
  require_once(
107
  sprintf(
108
  '%s/inc/%s.class.php',
readme.txt CHANGED
@@ -1,5 +1,5 @@
1
- === Optimus ===
2
- Contributors: sergej.mueller, keycdn
3
  Tags: images, optimize, compress, progressive, performance, png, jpeg, webp
4
  Requires at least: 3.8
5
  Tested up to: 4.2.2
@@ -9,75 +9,87 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
 
11
 
12
- Effektive Komprimierung der Bilder während des Upload-Vorgangs. Automatisch und ohne Qualitätsverlust.
13
 
14
 
15
 
16
  == Description ==
17
 
18
  = (Fast) Magie =
19
- *Optimus* verkleinert die Dateigröße hochgeladener Medien. Abhängig vom Bild und Format ist eine Reduzierung der Größe um bis zu 70 Prozent möglich. Pro Bild lassen sich mehrere Kilobytes einsparen – diese Sparmaßnahme trägt der Blogseiten-Performance positiv bei. Das Beeindruckende an der Kompressionstechnologie: Die Qualität der Bilder bleibt garantiert erhalten.
20
 
21
 
22
- > #### Optimus existiert in drei Varianten:
23
- > 1. **Optimus** *(Free)* als Grundversion mit Einschränkungen (z.B. max. 100 KB für JPEGs)
24
- > 2. **Optimus HQ** *(Premium)* mit erweitertem Funktionsumgang für Eigenprojekte
25
- > 3. **Optimus HQ PRO** *(Premium)* als professionelle Lösung in Kunden-Websites
 
 
 
 
26
  >
27
- > Alle Details zum Funktionsumfang und den einzelnen Preismodellen auf [optimus.io](https://optimus.io)
28
 
29
 
30
- = Das Prinzip =
31
- Während der Übertragung der Bilder in die Mediathek schickt das *Optimus*-Plugin die jeweiligen Bilder parallel an den *Optimus*-Server, der das eingegangene Material bearbeitet und in optimierter Form zurückgibt. Daraufhin speichert das *Optimus*-Plugin die in der Größe reduzierte Version eines Bildes in der Mediathek ab.
32
 
33
- Die Optimierung der Bilder (samt Thumbnails) erfolgt im Hintergrund und ist für Nutzer optisch nahezu nicht wahrzunehmen. Den Kompressionsgewinn pro Datei stellt *Optimus* innerhalb der Mediathek in Form eines Prozentwertes dar, siehe [Screenshot](https://wordpress.org/plugins/optimus/screenshots/).
34
 
35
- Anders als gängige Optimierungstools rührt *Optimus* die Qualität der Fotos niemals an. Stattdessen werden aus Bilddateien überflüssige Informationen extrahiert, die von Bildprogrammen (mit)gespeichert werden und zur Darstellung überhaupt nicht notwendig sind. Auf diese Art bleibt die Qualität der Grafiken erhalten, die Dateigröße kann um ein Vielfaches verkleinert werden. Auf Wunsch behält *Optimus* alle Autor-, EXIF- und Copyright-Informationen innerhalb der Fotos - der Kompressionsgewinn fällt entsprechend kleiner aus.
36
 
37
- NEU für Optimus HQ: Optionale [Konvertierung](https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/3emb7o4368X) der Bilder ins sparsame [WebP-Bildformat](http://cup.wpcoder.de/webp-jpeg-alternative/).
38
 
39
 
40
  = Features =
41
- * [Progressive JPEGs](https://plus.google.com/114450218898660299759/posts/RPW48vHbwoM)
42
- * Verkleinerung der Dateigröße ohne Verlust der Qualität
43
- * Optimierung aller Vorschauvarianten eines Bildes
44
- * Keine Code-Anpassungen notwendig
45
- * Option: Keine Entfernung von EXIF- und IPTC-Metadaten
46
- * Option: HTTPS-Verbindung für die Bildübertragung (Optimus HQ)
47
- * Option: Konvertierung ins WebP-Bildformat (Optimus HQ)
48
- * Optimiert für WordPress Mobile Apps und Windows Live Writer
49
- * Vorteilhafterer PageSpeed als Ranking-Faktor
50
- * Geringere Ladezeit der Blogseiten
51
- * Unterstützung für WooCommerce
52
- * WordPress Multisite-fähig
 
 
 
 
 
 
53
 
54
 
55
- = Datenschutz =
56
- * Nach der Optimierung und Auslieferung der Bilder löscht der *Optimus*-Server die temporär angelegten Dateien unverzüglich. Keine Aufbewahrung!
57
- * Der Server-Standort ist Deutschland.
58
 
59
 
60
- = Tipps =
61
- * Fotos stets als JPEGs statt PNGs speichern. Das PNG-Format ist sinnvoll für Illustrationen, JPEG ist dagegen genau das Richtige für Fotoaufnahmen. Weiterer Grund: Die Größenreduzierung geht bei JPEGs flotter vonstatten.
62
- * Bilder vor dem Upload mit Desktop-Tools wie [ImageOptim](https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/A15GfjcFgR9) (Mac) oder [PNGGauntlet](https://plus.google.com/b/114450218898660299759/114450218898660299759/posts/AEwkCSMMoTk) (Win) optimiert? *Optimus* hat den gravierenden Vorteil, dass die von WordPress erstellten Thumbnails (= Vorschaubilder) ebenfalls minimiert werden. Schließlich sind im Theme fast immer Thumbnails und keine Originalbilder eingebunden.
63
 
 
64
 
65
- = Systemanforderungen =
66
- * PHP ab 5.2.4
67
- * WordPress ab 3.8
68
- * Ausgehende Serververbindung
69
 
 
 
 
 
70
 
71
- = Speicherbelegung =
72
- * Im Backend: ~ 0,19 MB
73
- * Im Frontend: ~ 0,01 MB
 
74
 
75
 
76
  = Website =
77
  * [optimus.io](https://optimus.io)
78
 
79
 
80
- = Autor =
81
  * [Twitter](https://twitter.com/keycdn)
82
  * [Google+](https://plus.google.com/+Keycdn "Google+")
83
  * [KeyCDN](https://www.keycdn.com "KeyCDN")
@@ -86,6 +98,9 @@ NEU für Optimus HQ: Optionale [Konvertierung](https://plus.google.com/b/1144502
86
 
87
  == Changelog ==
88
 
 
 
 
89
  = 1.3.7 =
90
  * Erhöhung der Limits für alle Formate
91
  * [Limits auf optimus.io](https://optimus.io)
@@ -207,8 +222,7 @@ NEU für Optimus HQ: Optionale [Konvertierung](https://plus.google.com/b/1144502
207
  * Init release
208
 
209
 
210
-
211
  == Screenshots ==
212
 
213
- 1. Anzeige der Komprimierung und der Bildmenge als Kreis
214
- 2. Bild samt Thumbnails ohne (oben) und mit Optimus Optimierung
1
+ === Optimus Image Optimizer ===
2
+ Contributors: keycdn
3
  Tags: images, optimize, compress, progressive, performance, png, jpeg, webp
4
  Requires at least: 3.8
5
  Tested up to: 4.2.2
9
 
10
 
11
 
12
+ Effective image compression and optimization during the upload process. Automatic and without loss of quality.
13
 
14
 
15
 
16
  == Description ==
17
 
18
  = (Fast) Magie =
19
+ *Optimus* verkleinert die Dateigröße hochgeladener Medien. Abhängig vom Bild und Format ist eine Reduzierung der Größe um bis zu 70 Prozent möglich. Pro Bild lassen sich mehrere Kilobytes einsparen – diese Sparmaßnahme trägt der Blogseiten-Performance positiv bei. Das Beeindruckende an der Kompressionstechnologie: Die Qualität der Bilder bleibt garantiert erhalten. Alle Details zum Funktionsumfang und den einzelnen Preismodellen auf [optimus.io](https://optimus.io)
20
 
21
 
22
+ = (Almost) Magic =
23
+ Optimus reduces the file size of uploaded media files. Depending on the image and format, reductions in size of up to 70% are possible. Several kilobytes can be saved per image—these savings contribute positively to the performance of the blog website. What’s most impressive about the compression technology: the quality of the images is maintained—guaranteed.
24
+
25
+
26
+ > #### There are three different versions of Optimus:
27
+ > 1. **Optimus** *(Free)* as base version with limitations (e.g. max of 100kb for JPEGs)
28
+ > 2. **Optimus HQ** *(Premium)* with expanded functionality for personal projects
29
+ > 3. **Optimus HQ PRO** *(Premium)* as professional solution for customer websites
30
  >
31
+ > More details about the features and the pricing model on [optimus.io](https://optimus.io/en/)
32
 
33
 
34
+ = How does it work? =
35
+ During the uploading process of images to the media library, the *Optimus* plugin simultaneously sends the images to the *Optimus* server, where the incoming material is processed and sent back in optimized form. Afterwards, the *Optimus* plugin saves the image version with a reduced file size in the media library.
36
 
37
+ The optimization of images - *including thumbnails* - is conducted in the background and outside of the view of the user. The compression gains per file are displayed by Optimus within the media library in form of a percentage value, see [screenshot](https://wordpress.org/plugins/optimus/screenshots/).
38
 
39
+ Differently from common optimization tools, Optimus never alters the quality of images. Instead, superfluous information that is saved by image processing programs and is not even necessary for displaying the image is extracted from image files. This way, the quality of the graphics remains intact while the image size can be reduced significantly. If you wish, Optimus keeps all author, EXIF and copyright information contained within the photos the compressional gains will be correspondingly lower.
40
 
41
+ Optimus optional support the conversion of images to the thrifty [*WebP* image format](https://www.keycdn.com/blog/convert-to-webp-the-successor-of-jpeg/).
42
 
43
 
44
  = Features =
45
+ * [Progressive JPEGs](https://optimus.io/support/progressive-jpegs/)
46
+ * Reduction of file size *without loss in quality*
47
+ * Optimization of all preview images of a photo
48
+ * No adjustments to code necessary
49
+ * Optional: no removal of EXIF and IPTC metadata
50
+ * Optional: HTTPS connection for the image transfer (Optimus HQ)
51
+ * Optional: [conversion to the WebP](https://optimus.io/support/convert-jpeg-and-png-to-webp-image-format/) image format (Optimus HQ)
52
+ * Optimized for WordPress Mobile Apps and Windows Live Writer
53
+ * More advantageous PageSpeed, influencing the Ranking Factor
54
+ * Faster load times for blog pages
55
+ * Support for WooCommerce
56
+ * WordPress multisite-support
57
+ * Bulk optimization
58
+
59
+
60
+ = Privacy =
61
+ * After the optimization and transfer process, the *Optimus* server immediately deletes all the temporarily stored files. No files are stored!
62
+ * The Optimus servers are located in Germany.
63
 
64
 
65
+ = Tips =
66
+ * Photos should always be saved as JPEGs rather than PNGs. The PNG format works well for illustrations, JPEG on the other hand is the right choice for photographs. Another reason: the size reduction always works more quickly for JPEGs.
67
+ * Your images have been optimized using Desktop tools such as ImageOptim (Mac) or PNGGauntlet (Win) before you upload them? Optimus has the significant benefit of also minimizing the thumbnails (=preview images) created by WordPress. After all, themes almost always integrate thumbnails rather than original images.
68
 
69
 
70
+ = Translations =
71
+ * English (default)
72
+ * German
73
 
74
+ *Note:* Optimus is localized. Please contribute your language to the plugin to make it even more awesome.
75
 
 
 
 
 
76
 
77
+ = System Requirements =
78
+ * PHP >=5.2.4
79
+ * WordPress >=3.8
80
+ * Allow outbound connections
81
 
82
+
83
+ = Storage Utilization =
84
+ * Backend: ~ 0,19 MB
85
+ * Frontend: ~ 0,01 MB
86
 
87
 
88
  = Website =
89
  * [optimus.io](https://optimus.io)
90
 
91
 
92
+ = Author =
93
  * [Twitter](https://twitter.com/keycdn)
94
  * [Google+](https://plus.google.com/+Keycdn "Google+")
95
  * [KeyCDN](https://www.keycdn.com "KeyCDN")
98
 
99
  == Changelog ==
100
 
101
+ = 1.3.8 =
102
+ * Bulk optimization feature
103
+
104
  = 1.3.7 =
105
  * Erhöhung der Limits für alle Formate
106
  * [Limits auf optimus.io](https://optimus.io)
222
  * Init release
223
 
224
 
 
225
  == Screenshots ==
226
 
227
+ 1. Display of the compression rate and how many images have been optimized (circle)
228
+ 2. Before and after: Original image incl. thumbnails without compression (above) and below with Optimus compressed/optimized