Version Description
Download this release
Release Info
Developer | phbernard |
Plugin | Favicon by RealFaviconGenerator |
Version | 1.3.21 |
Comparing to | |
See all releases |
Code changes from version 1.1.0 to 1.3.21
- README.txt +190 -7
- admin/assets/css/admin.css +1 -1
- admin/class-favicon-by-realfavicongenerator-admin.php +282 -40
- admin/class-favicon-by-realfavicongenerator-api-response.php +164 -79
- admin/views/appearance.php +317 -0
- admin/views/keep_active_notice.php +10 -0
- admin/views/settings.php +18 -217
- favicon-by-realfavicongenerator.php +8 -4
- languages/favicon-by-realfavicongenerator-cs_CZ.mo +0 -0
- languages/favicon-by-realfavicongenerator-cs_CZ.po +239 -0
- languages/favicon-by-realfavicongenerator-da_DK.mo +0 -0
- languages/favicon-by-realfavicongenerator-da_DK.po +244 -0
- languages/favicon-by-realfavicongenerator-fr_FR.mo +0 -0
- languages/favicon-by-realfavicongenerator-fr_FR.po +171 -48
- languages/favicon-by-realfavicongenerator-id_ID.mo +0 -0
- languages/favicon-by-realfavicongenerator-id_ID.po +200 -0
- languages/favicon-by-realfavicongenerator-nl_NL.mo +0 -0
- languages/favicon-by-realfavicongenerator-nl_NL.po +188 -0
- languages/favicon-by-realfavicongenerator-pl_PL.mo +0 -0
- languages/favicon-by-realfavicongenerator-pl_PL.po +246 -0
- languages/favicon-by-realfavicongenerator-pt_BR.mo +0 -0
- languages/favicon-by-realfavicongenerator-pt_BR.po +188 -0
- languages/favicon-by-realfavicongenerator-ru_RU.mo +0 -0
- languages/favicon-by-realfavicongenerator-ru_RU.po +242 -0
- languages/favicon-by-realfavicongenerator-sv_SE.mo +0 -0
- languages/favicon-by-realfavicongenerator-sv_SE.po +186 -124
- languages/favicon-by-realfavicongenerator.pot +220 -0
- public/class-favicon-by-realfavicongenerator-common.php +351 -17
- public/class-favicon-by-realfavicongenerator.php +6 -60
- trunk/LICENSE.txt +339 -0
- trunk/README.txt +295 -0
- trunk/admin/assets/css/admin.css +5 -0
- trunk/admin/class-favicon-by-realfavicongenerator-admin.php +520 -0
- trunk/admin/class-favicon-by-realfavicongenerator-api-response.php +307 -0
- trunk/admin/views/appearance.php +317 -0
- trunk/admin/views/keep_active_notice.php +10 -0
- trunk/admin/views/settings.php +36 -0
- trunk/favicon-by-realfavicongenerator.php +51 -0
- trunk/languages/favicon-by-realfavicongenerator-cs_CZ.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-cs_CZ.po +239 -0
- trunk/languages/favicon-by-realfavicongenerator-da_DK.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-da_DK.po +244 -0
- trunk/languages/favicon-by-realfavicongenerator-fr_FR.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-fr_FR.po +245 -0
- trunk/languages/favicon-by-realfavicongenerator-id_ID.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-id_ID.po +200 -0
- trunk/languages/favicon-by-realfavicongenerator-nl_NL.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-nl_NL.po +188 -0
- trunk/languages/favicon-by-realfavicongenerator-pl_PL.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-pl_PL.po +246 -0
- trunk/languages/favicon-by-realfavicongenerator-pt_BR.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-pt_BR.po +188 -0
- trunk/languages/favicon-by-realfavicongenerator-ru_RU.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-ru_RU.po +242 -0
- trunk/languages/favicon-by-realfavicongenerator-sv_SE.mo +0 -0
- trunk/languages/favicon-by-realfavicongenerator-sv_SE.po +186 -0
- trunk/languages/favicon-by-realfavicongenerator.pot +220 -0
- trunk/public/class-favicon-by-realfavicongenerator-common.php +475 -0
- trunk/public/class-favicon-by-realfavicongenerator.php +38 -0
- trunk/uninstall.php +39 -0
- uninstall.php +7 -3
README.txt
CHANGED
@@ -1,13 +1,14 @@
|
|
1 |
-
=== Favicon by RealFaviconGenerator ===
|
2 |
Contributors: phbernard
|
3 |
-
|
|
|
4 |
Requires at least: 3.5
|
5 |
-
Tested up to:
|
6 |
-
Stable tag: 1.
|
7 |
License: GPLv2
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
10 |
-
Create and install your favicon for all platforms: PC/Mac
|
11 |
|
12 |
== Description ==
|
13 |
|
@@ -35,6 +36,15 @@ We take compatibility very seriously. See http://realfavicongenerator.net/favico
|
|
35 |
* English (`en_EN`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
36 |
* French (`fr_FR`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
37 |
* Swedish (`sv_SE`) by [Linus Wileryd](https://twitter.com/wileryd)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
== Installation ==
|
40 |
|
@@ -62,13 +72,185 @@ We take compatibility very seriously. See http://realfavicongenerator.net/favico
|
|
62 |
|
63 |
1. Initial favicon setup screen. You are invited to setup your favicon.
|
64 |
2. Select a master picture from the Media Library (optional)
|
65 |
-
3. Once you hit the Generate Favicon button, you are redirected to <a href="http://realfavicongenerator.net/">RealFaviconGenerator</a>,
|
66 |
where you can design your favicon: adding a background to your iOS picture, using a saturated version of your master picture for Windows 8...
|
67 |
4. When you are done with the favicon editor, you are redirected to the WordPress Dashboard. The favicon is installed automatically.
|
68 |
This screen presents you a preview of the favicon you various platforms, so you know how your blog looks like on various platforms.
|
|
|
69 |
|
70 |
== Changelog ==
|
71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
= 1.1.0 =
|
73 |
|
74 |
- Run RealFaviconGenerator's favicon checker from the admin interface.
|
@@ -101,7 +283,8 @@ This screen presents you a preview of the favicon you various platforms, so you
|
|
101 |
|
102 |
- Favicon admin settings are now in the Appearance menu.
|
103 |
- Fix in favicon package download.
|
104 |
-
- Fix in error management during favicon installation.
|
105 |
|
106 |
= 1.0 =
|
|
|
107 |
Initial version.
|
1 |
+
=== Favicon by RealFaviconGenerator ===
|
2 |
Contributors: phbernard
|
3 |
+
Donate link: http://realfavicongenerator.net/donate
|
4 |
+
Tags: favicon, favicon icon, favicon image, favicon code, favicon change, favicon manager, short icon, addressbar logo, apple touch icon, icon, iphone, admin, wordpress, realfavicongenerator, real favicon generator
|
5 |
Requires at least: 3.5
|
6 |
+
Tested up to: 5.6
|
7 |
+
Stable tag: 1.3.20
|
8 |
License: GPLv2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
Create and install your favicon for all platforms: PC/Mac, iPhone/iPad, Android devices, Windows 8 tablets...
|
12 |
|
13 |
== Description ==
|
14 |
|
36 |
* English (`en_EN`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
37 |
* French (`fr_FR`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
38 |
* Swedish (`sv_SE`) by [Linus Wileryd](https://twitter.com/wileryd)
|
39 |
+
* Brazilian Portuguese (`pt_BR`) by Marcelo Volgarini, [Criação de Sites](http://www.techload.com.br/criacao-de-sites-ribeirao-preto)
|
40 |
+
* Dutch (`nl_NL`) by [Axel Vanderhaeghen](https://eco13.eu)
|
41 |
+
* Danish (`da_DK`) by [Alexander Leo-Hansen](http://alexanderleohansen.dk/)
|
42 |
+
* Czech (`cs_CZ`) by an anonymous translator
|
43 |
+
* Polish (`pl_PL`) by [Maciej Gryniuk](http://maciej-gryniuk.tk/)
|
44 |
+
* Russian (`ru_RU`) by Natasha Diatko, [UStarCash](https://www.ustarcash.com)
|
45 |
+
* Indonesian (`id_ID`) by [Jordan Silaen](https://www.chameleonjohn.com/)
|
46 |
+
|
47 |
+
[](http://coderisk.com/wp/plugin/favicon-by-realfavicongenerator/RIPS-TVYsdQTMAr)
|
48 |
|
49 |
== Installation ==
|
50 |
|
72 |
|
73 |
1. Initial favicon setup screen. You are invited to setup your favicon.
|
74 |
2. Select a master picture from the Media Library (optional)
|
75 |
+
3. Once you hit the Generate Favicon button, you are redirected to <a href="http://realfavicongenerator.net/">RealFaviconGenerator</a>,
|
76 |
where you can design your favicon: adding a background to your iOS picture, using a saturated version of your master picture for Windows 8...
|
77 |
4. When you are done with the favicon editor, you are redirected to the WordPress Dashboard. The favicon is installed automatically.
|
78 |
This screen presents you a preview of the favicon you various platforms, so you know how your blog looks like on various platforms.
|
79 |
+
5. You can also trigger RealFaviconGenerator's favicon checker, to make sure your favicon is correctly setup.
|
80 |
|
81 |
== Changelog ==
|
82 |
|
83 |
+
= 1.3.20 =
|
84 |
+
|
85 |
+
- Fix: media selection works again
|
86 |
+
- Plugin was tested up to WordPress 5.6
|
87 |
+
|
88 |
+
= 1.3.19 =
|
89 |
+
|
90 |
+
- Plugin was tested up to WordPress 5.5.3
|
91 |
+
|
92 |
+
= 1.3.18 =
|
93 |
+
|
94 |
+
- Remove reference to deprecated function screen_icon
|
95 |
+
- Plugin was tested up to WordPress 5.4
|
96 |
+
|
97 |
+
= 1.3.17 =
|
98 |
+
|
99 |
+
- Changes to clear security warnings from CodeRisk
|
100 |
+
|
101 |
+
= 1.3.16 =
|
102 |
+
|
103 |
+
- Plugin was tested up to WordPress 5.3.2
|
104 |
+
|
105 |
+
= 1.3.15 =
|
106 |
+
|
107 |
+
- Plugin was tested up to WordPress 5.1
|
108 |
+
|
109 |
+
= 1.3.14 =
|
110 |
+
|
111 |
+
- Plugin was tested up to WordPress 5.0-beta5
|
112 |
+
|
113 |
+
= 1.3.13 =
|
114 |
+
|
115 |
+
- Plugin was tested up to WordPress 4.9.7
|
116 |
+
|
117 |
+
= 1.3.12 =
|
118 |
+
|
119 |
+
Never published, no change
|
120 |
+
|
121 |
+
= 1.3.11 =
|
122 |
+
|
123 |
+
- id/ID translation added, thanks to Jordan Silaen
|
124 |
+
- Plugin was tested up to WordPress 4.8.1
|
125 |
+
|
126 |
+
= 1.3.10 =
|
127 |
+
|
128 |
+
- Always access RealFaviconGenerator via HTTPS
|
129 |
+
- Clarification in local path separators for Windows
|
130 |
+
- Plugin was tested up to WordPress 4.7.1
|
131 |
+
- Notice to ask administrator to not deactivate the plugin
|
132 |
+
|
133 |
+
= 1.3.9 =
|
134 |
+
|
135 |
+
- Plugin was tested up to WordPress 4.7
|
136 |
+
|
137 |
+
= 1.3.8 =
|
138 |
+
|
139 |
+
- Plugin was tested up to WordPress 4.6
|
140 |
+
|
141 |
+
= 1.3.7 =
|
142 |
+
|
143 |
+
- Fix: Plugin keywords rephrased (some were not taken into account).
|
144 |
+
|
145 |
+
= 1.3.6 =
|
146 |
+
|
147 |
+
- Fix: the icons path was sometimes wrong when the upload directory was the root directory
|
148 |
+
|
149 |
+
= 1.3.5 =
|
150 |
+
|
151 |
+
- pl/PL translation added, thanks to Maciej Gryniuk
|
152 |
+
- ru/RU translation added, thanks to Natasha Diatko
|
153 |
+
|
154 |
+
= 1.3.4 =
|
155 |
+
|
156 |
+
- Plugin was tested up to WordPress 4.5
|
157 |
+
|
158 |
+
= 1.3.3 =
|
159 |
+
|
160 |
+
- Deactivate debug logs
|
161 |
+
|
162 |
+
= 1.3.2 =
|
163 |
+
|
164 |
+
- Typos in French translations
|
165 |
+
- Warning fix for PHP7
|
166 |
+
- Tested up to WordPress 4.4.1
|
167 |
+
- cs/CZ translation added, thanks to an anonymous translator
|
168 |
+
|
169 |
+
= 1.3.1 =
|
170 |
+
|
171 |
+
- Hotfix in previous version.
|
172 |
+
|
173 |
+
= 1.3.0 =
|
174 |
+
|
175 |
+
- The plugin takes advantage of RealFaviconGenerator's non-interactive API to upgrade the favicon automatically whenever a new version is available.
|
176 |
+
|
177 |
+
= 1.2.15 =
|
178 |
+
|
179 |
+
- Donation link added.
|
180 |
+
- Plugin now works when access to file system is via FTP (not direct). See https://wordpress.org/support/topic/no-images-created
|
181 |
+
|
182 |
+
= 1.2.14 =
|
183 |
+
|
184 |
+
- Security improvement.
|
185 |
+
- Warning fix regarding NONCE_ACTION_NAME.
|
186 |
+
- Useless PHP closing tags removed.
|
187 |
+
- Error checking added to favicon package unzipping.
|
188 |
+
|
189 |
+
= 1.2.13 =
|
190 |
+
|
191 |
+
- XSS vulnerability fixed, reported by [Kacper Szurek](http://security.szurek.pl/)
|
192 |
+
|
193 |
+
= 1.2.12 =
|
194 |
+
|
195 |
+
- Performance improvements: favicon update checking is now done in the Admin section (not the Public section), locales are not loaded in the Public section anymore.
|
196 |
+
- Take advantage of the Rewrite API (when available) to make the files appear to be in the root directory. So http://example.com/favicon.ico works (eg. when requested by Yandex).
|
197 |
+
- nl/NL translation added, thanks to Axel Vanderhaeghen.
|
198 |
+
|
199 |
+
= 1.2.11 =
|
200 |
+
|
201 |
+
- When the admin's browser cannot get the picture selected from the Media Library, the UI fails gracefully.
|
202 |
+
- Favicon package unzipping is more robust.
|
203 |
+
- Notice to ask users to rank the plugin on WordPress.org.
|
204 |
+
|
205 |
+
= 1.2.10 =
|
206 |
+
|
207 |
+
- Warning fix when used with BuddyPress (bp_setup_current_user). See https://wordpress.org/support/topic/wp_debug-notice-for-bp_setup_current_user.
|
208 |
+
|
209 |
+
= 1.2.9 =
|
210 |
+
|
211 |
+
- When selected from the Media Library, the master picture is now retrieved by WP administrator's browser to prevent several issues (locally hosted blogs, blogs protected in a way or another, etc.).
|
212 |
+
|
213 |
+
= 1.2.8 =
|
214 |
+
|
215 |
+
- Plugin successfully tested against WordPress 4.1.
|
216 |
+
|
217 |
+
= 1.2.7 =
|
218 |
+
|
219 |
+
- Fix for WordPress sites hosted on Windows.
|
220 |
+
|
221 |
+
= 1.2.6 =
|
222 |
+
|
223 |
+
- The plugin is now compatible with multisite.
|
224 |
+
|
225 |
+
= 1.2.5 =
|
226 |
+
|
227 |
+
- Fix for login page: favicon code was not injected in this particular page.
|
228 |
+
|
229 |
+
= 1.2.4 =
|
230 |
+
|
231 |
+
- Remove debug messages to avoid false positives in error log.
|
232 |
+
|
233 |
+
= 1.2.3 =
|
234 |
+
|
235 |
+
- Update notifications can be dismissed once for all.
|
236 |
+
- New Settings page to enable/disable update notifications.
|
237 |
+
|
238 |
+
= 1.2.2 =
|
239 |
+
|
240 |
+
- Fix for the 403 issue with HostGator hosting service (http://wordpress.org/support/topic/403-error-when-generating-favicon).
|
241 |
+
|
242 |
+
= 1.2.1 =
|
243 |
+
|
244 |
+
- Fix in plugin removal and update checking.
|
245 |
+
|
246 |
+
= 1.2.0 =
|
247 |
+
|
248 |
+
- The plugin now warns the user when RealFaviconGenerator was updated and the favicon should be generated again.
|
249 |
+
|
250 |
+
= 1.1.1 =
|
251 |
+
|
252 |
+
- Rewrite API usage disabled. Favicon files do not appear to be in the root directory of the blog anymore.
|
253 |
+
|
254 |
= 1.1.0 =
|
255 |
|
256 |
- Run RealFaviconGenerator's favicon checker from the admin interface.
|
283 |
|
284 |
- Favicon admin settings are now in the Appearance menu.
|
285 |
- Fix in favicon package download.
|
286 |
+
- Fix in error management during favicon installation.
|
287 |
|
288 |
= 1.0 =
|
289 |
+
|
290 |
Initial version.
|
admin/assets/css/admin.css
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Copyright 2014 RealFaviconGenerator */
|
2 |
|
3 |
.wrap img {
|
4 |
border: 2px solid #aaa;
|
1 |
+
/* Copyright 2014-2016 RealFaviconGenerator */
|
2 |
|
3 |
.wrap img {
|
4 |
border: 2px solid #aaa;
|
admin/class-favicon-by-realfavicongenerator-admin.php
CHANGED
@@ -1,11 +1,18 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
|
4 |
-
require_once plugin_dir_path( __FILE__ ) . '
|
|
|
5 |
require_once plugin_dir_path( __FILE__ ) . 'class-favicon-by-realfavicongenerator-api-response.php';
|
6 |
|
7 |
class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenerator_Common {
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
protected static $instance = null;
|
10 |
|
11 |
private function __construct() {
|
@@ -15,19 +22,15 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
15 |
|
16 |
// Deactivate Genesis default favicon
|
17 |
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
18 |
-
|
19 |
-
// Except for the headers, everything is accessible only to the admin
|
20 |
-
if ( ! is_super_admin() ) {
|
21 |
-
return;
|
22 |
-
}
|
23 |
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
add_action('wp_ajax_nopriv_' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon',
|
30 |
-
array( $this, 'install_new_favicon' ) );
|
31 |
}
|
32 |
|
33 |
/**
|
@@ -47,19 +50,65 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
47 |
return self::$instance;
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
public function create_favicon_settings_menu() {
|
51 |
-
add_theme_page( __( 'Favicon
|
52 |
-
__( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), 'manage_options', __FILE__ . '
|
|
|
|
|
|
|
|
|
53 |
array( $this, 'create_favicon_settings_page' ) );
|
54 |
}
|
55 |
|
56 |
public function create_favicon_settings_page() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
$result = NULL;
|
58 |
|
59 |
// Prepare settings page
|
60 |
|
61 |
// Option to allow user to not use the Rewrite API: display it only when the Rewrite API is available
|
62 |
-
|
|
|
|
|
|
|
63 |
$pic_path = $this->get_full_picture_path();
|
64 |
|
65 |
$favicon_configured = $this->is_favicon_configured();
|
@@ -79,14 +128,21 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
79 |
$new_favicon_params_url = NULL;
|
80 |
}
|
81 |
|
|
|
|
|
|
|
82 |
// External files
|
83 |
wp_enqueue_script( 'jquery' );
|
84 |
wp_enqueue_script( 'jquery-ui' );
|
|
|
85 |
wp_enqueue_media();
|
86 |
-
wp_enqueue_style( 'fbrfg_admin_style', plugins_url(
|
|
|
|
|
87 |
|
88 |
// Template time!
|
89 |
-
include_once( plugin_dir_path(__FILE__) . 'views
|
|
|
90 |
}
|
91 |
|
92 |
private function download_result_json( $url ) {
|
@@ -108,27 +164,39 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
108 |
|
109 |
try {
|
110 |
// URL is explicitely decoded to compensate the extra encoding performed while generating the settings page
|
111 |
-
$url = $_REQUEST['json_result_url'];
|
112 |
|
113 |
$result = $this->download_result_json( $url );
|
114 |
|
115 |
$response = new Favicon_By_RealFaviconGenerator_Api_Response( $result );
|
116 |
|
117 |
-
|
118 |
-
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
|
123 |
-
|
124 |
|
125 |
-
|
126 |
|
127 |
-
|
128 |
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
?>
|
133 |
{
|
134 |
"status": "success",
|
@@ -136,6 +204,7 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
136 |
"favicon_in_root": <?php echo json_encode( $this->is_favicon_in_root() ) ?>
|
137 |
}
|
138 |
<?php
|
|
|
139 |
}
|
140 |
catch(Exception $e) {
|
141 |
?>
|
@@ -178,7 +247,8 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
178 |
if ( ! $preview_file_name ) {
|
179 |
$preview_file_name = $this->get_preview_file_name();
|
180 |
}
|
181 |
-
return $this->get_picture_dir() . 'preview' . DIRECTORY_SEPARATOR .
|
|
|
182 |
}
|
183 |
|
184 |
public function get_preview_url( $preview_file_name = NULL ) {
|
@@ -201,14 +271,14 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
201 |
return NULL;
|
202 |
}
|
203 |
else {
|
204 |
-
$preview_file_name = 'preview_' .
|
205 |
}
|
206 |
|
207 |
if ( ! file_exists( dirname( $this->get_preview_path( $preview_file_name ) ) ) ) {
|
208 |
-
mkdir( dirname( $this->get_preview_path( $preview_file_name ) ) );
|
209 |
}
|
210 |
|
211 |
-
|
212 |
|
213 |
$this->set_preview_file_name( $preview_file_name );
|
214 |
}
|
@@ -223,24 +293,27 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
223 |
unlink( $file );
|
224 |
}
|
225 |
}
|
226 |
-
$files = glob( $rfg_response->getProductionPackagePath() .
|
227 |
foreach( $files as $file ) {
|
228 |
if ( is_file( $file ) ) {
|
229 |
-
|
230 |
}
|
231 |
}
|
232 |
|
233 |
-
if
|
|
|
|
|
|
|
234 |
$this->rewrite_pictures_url( $working_dir );
|
235 |
flush_rewrite_rules();
|
236 |
}
|
237 |
}
|
238 |
|
239 |
public function rewrite_pictures_url( $pic_dir ) {
|
240 |
-
foreach ( scandir($pic_dir) as $file ) {
|
241 |
if ( ! is_dir( $pic_dir . DIRECTORY_SEPARATOR . $file ) ) {
|
242 |
-
add_rewrite_rule( str_replace( '.', '\.', $file ),
|
243 |
-
trim( $this->get_picture_path(), '/') . '/' . $file );
|
244 |
}
|
245 |
}
|
246 |
}
|
@@ -274,5 +347,174 @@ class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenera
|
|
274 |
$path = parse_url( home_url(), PHP_URL_PATH );
|
275 |
return ( ($path == NULL) || (strlen( $path ) == 0) );
|
276 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
277 |
}
|
278 |
-
?>
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
|
4 |
+
require_once plugin_dir_path( __FILE__ ) . '..' . DIRECTORY_SEPARATOR .
|
5 |
+
'public' . DIRECTORY_SEPARATOR . 'class-favicon-by-realfavicongenerator-common.php';
|
6 |
require_once plugin_dir_path( __FILE__ ) . 'class-favicon-by-realfavicongenerator-api-response.php';
|
7 |
|
8 |
class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenerator_Common {
|
9 |
|
10 |
+
const DISMISS_UPDATE_NOTIICATION = 'fbrfg_dismiss_update_notification';
|
11 |
+
const DISMISS_AUTOMATIC_UPDATE_NOTIICATION = 'fbrfg_dismiss_autmatic_update_notification';
|
12 |
+
const DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS = 'fbrfg_dismiss_all_update_notifications';
|
13 |
+
const SETTINGS_FORM = 'fbrfg_settings_form';
|
14 |
+
const NONCE_ACTION_NAME = 'favicon_generation';
|
15 |
+
|
16 |
protected static $instance = null;
|
17 |
|
18 |
private function __construct() {
|
22 |
|
23 |
// Deactivate Genesis default favicon
|
24 |
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
+
// See
|
27 |
+
// - https://wordpress.org/support/topic/wp_debug-notice-for-bp_setup_current_user
|
28 |
+
// - https://buddypress.org/support/topic/wp_debug-notice-for-bp_setup_current_user
|
29 |
+
// The idea: is_super_admin must not be called too soon.
|
30 |
+
add_action( 'init', array( $this, 'register_admin_actions' ) );
|
31 |
|
32 |
+
// Check for updates
|
33 |
+
add_action( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE, array( $this, 'check_for_updates' ) );
|
|
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
50 |
return self::$instance;
|
51 |
}
|
52 |
|
53 |
+
public function register_admin_actions() {
|
54 |
+
// Except for the headers, everything is accessible only to the admin
|
55 |
+
if ( ! is_super_admin() ) {
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
add_action( 'admin_menu',
|
60 |
+
array( $this, 'create_favicon_settings_menu' ) );
|
61 |
+
|
62 |
+
add_action('wp_ajax_' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon',
|
63 |
+
array( $this, 'install_new_favicon' ) );
|
64 |
+
add_action('wp_ajax_nopriv_' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon',
|
65 |
+
array( $this, 'install_new_favicon' ) );
|
66 |
+
|
67 |
+
// Update notice
|
68 |
+
add_action('admin_notices', array( $this, 'display_update_notice' ) );
|
69 |
+
add_action('admin_init', array( $this, 'process_ignored_notice' ) );
|
70 |
+
|
71 |
+
// Schedule update check
|
72 |
+
if ( ! wp_next_scheduled( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE ) ) {
|
73 |
+
wp_schedule_event( time(), 'daily', Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE );
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
public function create_favicon_settings_menu() {
|
78 |
+
add_theme_page( __( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
79 |
+
__( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), 'manage_options', __FILE__ . 'favicon_appearance_menu',
|
80 |
+
array( $this, 'create_favicon_appearance_page' ) );
|
81 |
+
|
82 |
+
add_options_page( __( 'Favicon Settings', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
83 |
+
__( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), 'manage_options', __FILE__ . 'favicon_settings_menu',
|
84 |
array( $this, 'create_favicon_settings_page' ) );
|
85 |
}
|
86 |
|
87 |
public function create_favicon_settings_page() {
|
88 |
+
global $current_user;
|
89 |
+
|
90 |
+
$user_id = $current_user->ID;
|
91 |
+
|
92 |
+
// Prepare variables
|
93 |
+
$favicon_appearance_url = admin_url( 'themes.php?page=' . __FILE__ . 'favicon_appearance_menu' );
|
94 |
+
$favicon_admin_url = admin_url( 'options-general.php?page=' . __FILE__ . 'favicon_settings_menu' );
|
95 |
+
$display_update_notifications = ! $this->get_boolean_user_option(
|
96 |
+
Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE );
|
97 |
+
|
98 |
+
// Template time!
|
99 |
+
include_once( plugin_dir_path(__FILE__) . 'views' . DIRECTORY_SEPARATOR . 'settings.php' );
|
100 |
+
}
|
101 |
+
|
102 |
+
public function create_favicon_appearance_page() {
|
103 |
$result = NULL;
|
104 |
|
105 |
// Prepare settings page
|
106 |
|
107 |
// Option to allow user to not use the Rewrite API: display it only when the Rewrite API is available
|
108 |
+
// Due to too many problems with the rewrite API (for example, http://wordpress.org/support/topic/do-not-work-8),
|
109 |
+
// it was deciced to turn the feature off once for all
|
110 |
+
$can_rewrite = false;
|
111 |
+
|
112 |
$pic_path = $this->get_full_picture_path();
|
113 |
|
114 |
$favicon_configured = $this->is_favicon_configured();
|
128 |
$new_favicon_params_url = NULL;
|
129 |
}
|
130 |
|
131 |
+
// Nonce
|
132 |
+
$nonce = wp_create_nonce( Favicon_By_RealFaviconGenerator_Admin::NONCE_ACTION_NAME );
|
133 |
+
|
134 |
// External files
|
135 |
wp_enqueue_script( 'jquery' );
|
136 |
wp_enqueue_script( 'jquery-ui' );
|
137 |
+
wp_enqueue_script( 'jquery-effects-pulsate' );
|
138 |
wp_enqueue_media();
|
139 |
+
wp_enqueue_style( 'fbrfg_admin_style', plugins_url(
|
140 |
+
'assets' . DIRECTORY_SEPARATOR . 'css' . DIRECTORY_SEPARATOR . 'admin.css',
|
141 |
+
__FILE__ ) );
|
142 |
|
143 |
// Template time!
|
144 |
+
include_once( plugin_dir_path(__FILE__) . 'views' . DIRECTORY_SEPARATOR .
|
145 |
+
'appearance.php' );
|
146 |
}
|
147 |
|
148 |
private function download_result_json( $url ) {
|
164 |
|
165 |
try {
|
166 |
// URL is explicitely decoded to compensate the extra encoding performed while generating the settings page
|
167 |
+
$url = 'https://realfavicongenerator.net' . $_REQUEST['json_result_url'];
|
168 |
|
169 |
$result = $this->download_result_json( $url );
|
170 |
|
171 |
$response = new Favicon_By_RealFaviconGenerator_Api_Response( $result );
|
172 |
|
173 |
+
if ( ! wp_verify_nonce( $response->getCustomParameter(), Favicon_By_RealFaviconGenerator_Admin::NONCE_ACTION_NAME ) ) {
|
174 |
+
// Attack in progress?
|
175 |
+
?>
|
176 |
+
{
|
177 |
+
"status": "error",
|
178 |
+
"message": "<?php _e( 'Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you feel like something is wrong, please <a href=\"mailto:contact@realfavicongenerator.net\">contact us</a>.', FBRFG_PLUGIN_SLUG ) ?>"
|
179 |
+
}
|
180 |
+
<?php
|
181 |
}
|
182 |
+
else {
|
183 |
+
$zip_path = Favicon_By_RealFaviconGenerator_Common::get_tmp_dir();
|
184 |
+
if ( ! file_exists( $zip_path ) ) {
|
185 |
+
if ( mkdir( $zip_path, 0755, true ) !== true ) {
|
186 |
+
throw new InvalidArgumentException( sprintf( __( 'Cannot create directory %s to store the favicon package', FBRFG_PLUGIN_SLUG), $zip_path ) );
|
187 |
+
}
|
188 |
+
}
|
189 |
+
$response->downloadAndUnpack( $zip_path );
|
190 |
|
191 |
+
$this->store_pictures( $response );
|
192 |
|
193 |
+
$this->store_preview( $response->getPreviewPath() );
|
194 |
|
195 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $zip_path );
|
196 |
|
197 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE, $response->getHtmlCode() );
|
198 |
+
|
199 |
+
$this->set_favicon_configured( true, $response->isFilesInRoot(), $response->getVersion(), $response->getNonInteractiveAPIRequest() );
|
200 |
?>
|
201 |
{
|
202 |
"status": "success",
|
204 |
"favicon_in_root": <?php echo json_encode( $this->is_favicon_in_root() ) ?>
|
205 |
}
|
206 |
<?php
|
207 |
+
}
|
208 |
}
|
209 |
catch(Exception $e) {
|
210 |
?>
|
247 |
if ( ! $preview_file_name ) {
|
248 |
$preview_file_name = $this->get_preview_file_name();
|
249 |
}
|
250 |
+
return $this->get_picture_dir() . 'preview' . DIRECTORY_SEPARATOR .
|
251 |
+
$preview_file_name;
|
252 |
}
|
253 |
|
254 |
public function get_preview_url( $preview_file_name = NULL ) {
|
271 |
return NULL;
|
272 |
}
|
273 |
else {
|
274 |
+
$preview_file_name = 'preview_' . hash( 'sha256', 'RFB stuff here ' . rand() . microtime() ) . '.png';
|
275 |
}
|
276 |
|
277 |
if ( ! file_exists( dirname( $this->get_preview_path( $preview_file_name ) ) ) ) {
|
278 |
+
mkdir( dirname( $this->get_preview_path( $preview_file_name ) ), 0755 );
|
279 |
}
|
280 |
|
281 |
+
$this->portable_rename( $preview_path, $this->get_preview_path( $preview_file_name ) );
|
282 |
|
283 |
$this->set_preview_file_name( $preview_file_name );
|
284 |
}
|
293 |
unlink( $file );
|
294 |
}
|
295 |
}
|
296 |
+
$files = glob( $rfg_response->getProductionPackagePath() . '/*' );
|
297 |
foreach( $files as $file ) {
|
298 |
if ( is_file( $file ) ) {
|
299 |
+
$this->portable_rename( $file, $working_dir . basename( $file ) );
|
300 |
}
|
301 |
}
|
302 |
|
303 |
+
// Even if the package was not supposed to be put in root, make the files (also) appear at the root of the site
|
304 |
+
// So /favicon.ico works, for example.
|
305 |
+
// See https://wordpress.org/support/topic/choose-between-rewrite-api-and-dedicated-directory
|
306 |
+
if ( $this->can_access_pics_with_url_rewrite() ) {
|
307 |
$this->rewrite_pictures_url( $working_dir );
|
308 |
flush_rewrite_rules();
|
309 |
}
|
310 |
}
|
311 |
|
312 |
public function rewrite_pictures_url( $pic_dir ) {
|
313 |
+
foreach ( scandir( $pic_dir ) as $file ) {
|
314 |
if ( ! is_dir( $pic_dir . DIRECTORY_SEPARATOR . $file ) ) {
|
315 |
+
add_rewrite_rule( str_replace( '.', '\.', $file ),
|
316 |
+
trim( $this->get_picture_path(), '/' ) . '/' . $file );
|
317 |
}
|
318 |
}
|
319 |
}
|
347 |
$path = parse_url( home_url(), PHP_URL_PATH );
|
348 |
return ( ($path == NULL) || (strlen( $path ) == 0) );
|
349 |
}
|
350 |
+
|
351 |
+
public function set_boolean_user_option( $option_name, $option_value ) {
|
352 |
+
global $current_user;
|
353 |
+
$user_id = $current_user->ID;
|
354 |
+
|
355 |
+
update_user_option( $user_id, $option_name, $option_value );
|
356 |
+
}
|
357 |
+
|
358 |
+
public function get_boolean_user_option( $option_name ) {
|
359 |
+
global $current_user;
|
360 |
+
$user_id = $current_user->ID;
|
361 |
+
|
362 |
+
return get_user_option( $option_name );
|
363 |
+
}
|
364 |
+
|
365 |
+
public function is_manual_update_notice_to_be_displayed() {
|
366 |
+
$this->log_info( 'Check if manual update notice should be displayed' );
|
367 |
+
|
368 |
+
if ( isset($_REQUEST['json_result_url'] ) ) {
|
369 |
+
$this->log_info( 'Favicon installation in progress, disable notice' );
|
370 |
+
return false;
|
371 |
+
}
|
372 |
+
|
373 |
+
// Did the user prevent all notices?
|
374 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE ) ) {
|
375 |
+
$this->log_info( 'User disabled all update notices' );
|
376 |
+
return false;
|
377 |
+
}
|
378 |
+
|
379 |
+
// No update
|
380 |
+
if ( $this->get_latest_manual_available_update() == NULL ) {
|
381 |
+
$this->log_info( 'There is no pending manual update' );
|
382 |
+
return false;
|
383 |
+
}
|
384 |
+
|
385 |
+
// Did the user prevent the notice for this particular version?
|
386 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE_FOR_VERSION . $this->get_latest_manual_available_update() ) ) {
|
387 |
+
$this->log_info( 'User disabled update notices for ' . $this->get_latest_manual_available_update() );
|
388 |
+
return false;
|
389 |
+
}
|
390 |
+
|
391 |
+
// If, for some reasons, the current version matches the "latest update",
|
392 |
+
// then the updated was already done.
|
393 |
+
$result = ( $this->get_latest_manual_available_update() != $this->get_favicon_current_version() );
|
394 |
+
$this->log_info( 'Compare current version (' . $this->get_favicon_current_version() . ') and latest update (' .
|
395 |
+
$this->get_latest_manual_available_update() . '): ' . ( $result ? 'true' : 'false' ) );
|
396 |
+
|
397 |
+
return $result;
|
398 |
+
}
|
399 |
+
|
400 |
+
public function is_automatic_update_notice_to_be_displayed() {
|
401 |
+
$this->log_info( 'Check if automatic update notice should be displayed' );
|
402 |
+
|
403 |
+
if ( isset($_REQUEST['json_result_url'] ) ) {
|
404 |
+
$this->log_info( 'Favicon installation in progress, disable notice' );
|
405 |
+
return false;
|
406 |
+
}
|
407 |
+
|
408 |
+
// Did the user prevent all notices?
|
409 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE ) ) {
|
410 |
+
$this->log_info( 'User disabled all update notices' );
|
411 |
+
return false;
|
412 |
+
}
|
413 |
+
|
414 |
+
$versions = $this->get_most_recent_automatic_update();
|
415 |
+
// Was there an update?
|
416 |
+
if ( $versions == NULL ) {
|
417 |
+
$this->log_info( 'There was no automatic update' );
|
418 |
+
return false;
|
419 |
+
}
|
420 |
+
|
421 |
+
// Did the user prevent the notice for this particular version?
|
422 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION . $versions[0] . '_' . $versions[1] ) ) {
|
423 |
+
$this->log_info( 'User disabled update notice for update from ' . $versions[0] . ' to ' . $versions[1] );
|
424 |
+
return false;
|
425 |
+
}
|
426 |
+
|
427 |
+
$this->log_info( 'Automatic update notice should be displayed' );
|
428 |
+
return true;
|
429 |
+
}
|
430 |
+
|
431 |
+
public function display_update_notice() {
|
432 |
+
if ( $this->is_manual_update_notice_to_be_displayed() ) {
|
433 |
+
$this->log_info( 'Display manual update notice' );
|
434 |
+
|
435 |
+
$description = $this->get_updates_description( $this->get_favicon_current_version(), $this->get_latest_manual_available_update() );
|
436 |
+
?>
|
437 |
+
<div class="update-nag">
|
438 |
+
<p>
|
439 |
+
<strong><?php _e( 'An update is available on RealFaviconGenerator:', FBRFG_PLUGIN_SLUG ) ?></strong>
|
440 |
+
</p>
|
441 |
+
|
442 |
+
<?php echo $description ?>
|
443 |
+
|
444 |
+
<p>
|
445 |
+
<?php printf( __( 'You might want to <a href="%s">generate your favicon again</a>',
|
446 |
+
FBRFG_PLUGIN_SLUG ), admin_url( 'themes.php?page=' . __FILE__ . 'favicon_appearance_menu') ) ?>
|
447 |
+
</p>
|
448 |
+
|
449 |
+
<p>
|
450 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION . '=0' ) ?>">
|
451 |
+
<?php _e( 'Hide this notice', FBRFG_PLUGIN_SLUG) ?>
|
452 |
+
</a>
|
453 |
+
|
|
454 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS . '=0' ) ?>">
|
455 |
+
<?php _e( 'Do not warn me again in case of update', FBRFG_PLUGIN_SLUG) ?>
|
456 |
+
</a>
|
457 |
+
</p>
|
458 |
+
</div>
|
459 |
+
<?php
|
460 |
+
}
|
461 |
+
else if ( $this->is_automatic_update_notice_to_be_displayed() ) {
|
462 |
+
$this->log_info( 'Display automatic update notice' );
|
463 |
+
|
464 |
+
$auto_versions = $this->get_most_recent_automatic_update();
|
465 |
+
$description = $this->get_updates_description( $auto_versions[0], $auto_versions[1] );
|
466 |
+
?>
|
467 |
+
<div class="update-nag">
|
468 |
+
<p><strong><?php _e( 'Your favicon was updated automatically:', FBRFG_PLUGIN_SLUG ) ?></strong></p>
|
469 |
+
|
470 |
+
<?php echo $description ?>
|
471 |
+
|
472 |
+
<p>
|
473 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION . '=0' ) ?>">
|
474 |
+
<?php _e( 'Hide this notice', FBRFG_PLUGIN_SLUG) ?>
|
475 |
+
</a>
|
476 |
+
|
|
477 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS . '=0' ) ?>">
|
478 |
+
<?php _e( 'Do not warn me again in case of update', FBRFG_PLUGIN_SLUG) ?>
|
479 |
+
</a>
|
480 |
+
</p>
|
481 |
+
</div>
|
482 |
+
<?php
|
483 |
+
}
|
484 |
+
}
|
485 |
+
|
486 |
+
public function process_ignored_notice() {
|
487 |
+
global $current_user;
|
488 |
+
$user_id = $current_user->ID;
|
489 |
+
|
490 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION] ) &&
|
491 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION] ) {
|
492 |
+
$this->log_info( 'Disable manual update notice for ' . $this->get_latest_manual_available_update() );
|
493 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE_FOR_VERSION . $this->get_latest_manual_available_update(), true );
|
494 |
+
}
|
495 |
+
|
496 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION] ) &&
|
497 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION] ) {
|
498 |
+
$versions = $this->get_most_recent_automatic_update();
|
499 |
+
$this->log_info( 'Disable automatic update notice for ' . $versions[0] . '-' . $versions[1] );
|
500 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION .
|
501 |
+
$versions[0] . '_' . $versions[1], true );
|
502 |
+
}
|
503 |
+
|
504 |
+
$no_notices = NULL;
|
505 |
+
if ( ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) &&
|
506 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) ) {
|
507 |
+
// The "no more notifications" link was clicked in the notification itself
|
508 |
+
$no_notices = true;
|
509 |
+
}
|
510 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM] ) &&
|
511 |
+
'1' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM] ) {
|
512 |
+
// The settings form was validated
|
513 |
+
$no_notices = ( ! isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) ||
|
514 |
+
( '0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) );
|
515 |
+
}
|
516 |
+
if ( $no_notices !== NULL ) {
|
517 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE, $no_notices );
|
518 |
+
}
|
519 |
+
}
|
520 |
}
|
|
admin/class-favicon-by-realfavicongenerator-api-response.php
CHANGED
@@ -1,13 +1,16 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
|
4 |
-
define( 'RFG_PACKAGE_URL',
|
5 |
-
define( 'RFG_COMPRESSION',
|
6 |
-
define( 'RFG_HTML_CODE',
|
7 |
-
define( '
|
8 |
-
define( '
|
9 |
-
define( '
|
10 |
-
define( '
|
|
|
|
|
|
|
11 |
|
12 |
define( 'RFG_FAVICON_PRODUCTION_PACKAGE_PATH', 'favicon_production_package_path' );
|
13 |
define( 'RFG_FAVICON_COMPRESSED_PACKAGE_PATH', 'favicon_compressed_package_path' );
|
@@ -15,42 +18,46 @@ define( 'RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH', 'favicon_uncompressed_package_p
|
|
15 |
define( 'RFG_PREVIEW_PATH', 'preview_path' );
|
16 |
|
17 |
class Favicon_By_RealFaviconGenerator_Api_Response {
|
18 |
-
|
19 |
private $params = array();
|
20 |
-
|
21 |
-
public function
|
22 |
if ( $json == NULL ) {
|
23 |
throw new InvalidArgumentException( "No response from RealFaviconGenerator" );
|
24 |
}
|
25 |
-
|
26 |
$response = json_decode( $json, true );
|
27 |
-
|
28 |
if ( $response == NULL ) {
|
29 |
throw new InvalidArgumentException( "JSON could not be parsed" );
|
30 |
}
|
31 |
-
|
32 |
$response = $this->getParam( $response, 'favicon_generation_result' );
|
33 |
$result = $this->getParam( $response, 'result' );
|
34 |
$status = $this->getParam( $result, 'status' );
|
35 |
-
|
36 |
if ( $status != 'success' ) {
|
37 |
$msg = $this->getParam( $result, 'error_message', false );
|
38 |
$msg = $msg != NULL ? $msg : 'An error occured';
|
39 |
throw new InvalidArgumentException( $msg );
|
40 |
}
|
41 |
-
|
42 |
$favicon = $this->getParam( $response, 'favicon' );
|
43 |
$this->params[RFG_PACKAGE_URL] = $this->getParam( $favicon, 'package_url' );
|
44 |
$this->params[RFG_COMPRESSION] = $this->getParam( $favicon, 'compression' ) == 'true';
|
45 |
$this->params[RFG_HTML_CODE] = $this->getParam( $favicon, 'html_code' );
|
46 |
-
|
|
|
47 |
$filesLoc = $this->getParam( $response, 'files_location' );
|
48 |
$this->params[RFG_FILES_IN_ROOT] = $this->getParam( $filesLoc, 'type' ) == 'root';
|
49 |
$this->params[RFG_FILES_PATH] = $this->params[RFG_FILES_IN_ROOT] ? '/' : $this->getParam( $filesLoc, 'path' );
|
50 |
-
|
51 |
$this->params[RFG_PREVIEW_PICTURE_URL] = $this->getParam( $response, 'preview_picture_url', false );
|
52 |
-
|
53 |
$this->params[RFG_CUSTOM_PARAMETER] = $this->getParam( $response, 'custom_parameter', false );
|
|
|
|
|
|
|
54 |
}
|
55 |
|
56 |
/**
|
@@ -59,7 +66,14 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
59 |
public function getPackageUrl() {
|
60 |
return $this->params[RFG_PACKAGE_URL];
|
61 |
}
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* For example: <code>"<link ..."</code>
|
65 |
*/
|
@@ -69,7 +83,7 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
69 |
|
70 |
/**
|
71 |
* <code>true</code> if the user chose to compress the pictures, <code>false</code> otherwise.
|
72 |
-
*/
|
73 |
public function isCompressed() {
|
74 |
return $this->params[RFG_COMPRESSION];
|
75 |
}
|
@@ -83,25 +97,39 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
83 |
|
84 |
/**
|
85 |
* Indicate where the favicon files should be stored in the target web site. For example: <code>"/"</code>, <code>"/path/to/icons"</code>.
|
86 |
-
*/
|
87 |
public function getFilesLocation() {
|
88 |
return $this->params[RFG_FILES_PATH];
|
89 |
}
|
90 |
|
91 |
/**
|
92 |
* For example: <code>"http://realfavicongenerator.net/files/1234f5d2s34f3ds2/preview.png"</code>
|
93 |
-
*/
|
94 |
public function getPreviewUrl() {
|
95 |
return $this->params[RFG_PREVIEW_PICTURE_URL];
|
96 |
}
|
97 |
-
|
98 |
/**
|
99 |
* Return the customer parameter, as it was transmitted during the invocation of the API.
|
100 |
*/
|
101 |
public function getCustomParameter() {
|
102 |
return $this->params[RFG_CUSTOM_PARAMETER];
|
103 |
}
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
private function getParam( $params, $paramName, $throwIfNotFound = true ) {
|
106 |
if ( isset( $params[$paramName] ) ) {
|
107 |
return $params[$paramName];
|
@@ -112,70 +140,112 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
112 |
}
|
113 |
|
114 |
/**
|
115 |
-
* Download and extract the files referenced by the response sent back by RealFaviconGenerator.
|
116 |
-
*
|
117 |
* Warning: as this method does HTTP accesses, calling it can take a few seconds. Better invoke it
|
118 |
* in an Ajax call, to not slow down the user experience.
|
119 |
*/
|
120 |
public function downloadAndUnpack( $outputDirectory = NULL ) {
|
|
|
121 |
if ( $outputDirectory == NULL ) {
|
122 |
-
$outputDirectory =
|
123 |
}
|
124 |
-
|
|
|
|
|
125 |
if ( $this->getPackageUrl() != NULL ) {
|
126 |
-
$
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
if ($r === TRUE) {
|
132 |
-
$extractedPath = $outputDirectory . DIRECTORY_SEPARATOR . 'favicon_package';
|
133 |
-
if ( ! file_exists( $extractedPath ) ) {
|
134 |
-
mkdir( $extractedPath );
|
135 |
-
}
|
136 |
-
|
137 |
-
$zip->extractTo( $extractedPath );
|
138 |
-
$zip->close();
|
139 |
-
|
140 |
-
if ( $this->isCompressed() ) {
|
141 |
-
// As of today, when the user chooses the compress the picture,
|
142 |
-
// the package is provided in two flavors, in two distinct directories.
|
143 |
-
// Later, only the compressed version will be provided. Thus, the following code
|
144 |
-
// handles both scenarios.
|
145 |
-
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'compressed' ) ) {
|
146 |
-
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath . DIRECTORY_SEPARATOR . 'compressed';
|
147 |
-
} else {
|
148 |
-
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath;
|
149 |
-
}
|
150 |
-
|
151 |
-
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'uncompressed' ) ) {
|
152 |
-
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath . DIRECTORY_SEPARATOR . 'uncompressed';
|
153 |
-
} else {
|
154 |
-
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
155 |
-
}
|
156 |
-
|
157 |
-
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH];
|
158 |
-
}
|
159 |
-
else {
|
160 |
-
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = NULL;
|
161 |
-
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
162 |
-
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH];
|
163 |
}
|
164 |
}
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
167 |
}
|
168 |
}
|
169 |
-
|
170 |
if ( $this->getPreviewUrl() != NULL ) {
|
171 |
-
$previewPath = $outputDirectory .
|
172 |
$this->downloadFile( $previewPath, $this->getPreviewUrl() );
|
173 |
$this->params[RFG_PREVIEW_PATH] = $previewPath;
|
174 |
}
|
175 |
}
|
176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
/**
|
178 |
-
* Directory where the compressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
179 |
* Can be <code>NULL</code>.
|
180 |
*/
|
181 |
public function getCompressedPackagePath() {
|
@@ -183,7 +253,7 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
183 |
}
|
184 |
|
185 |
/**
|
186 |
-
* Directory where the uncompressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
187 |
* Can be <code>NULL</code>.
|
188 |
*/
|
189 |
public function getUncompressedPackagePath() {
|
@@ -199,24 +269,39 @@ class Favicon_By_RealFaviconGenerator_Api_Response {
|
|
199 |
public function getProductionPackagePath() {
|
200 |
return $this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH];
|
201 |
}
|
202 |
-
|
203 |
/**
|
204 |
* Path to the preview picture.
|
205 |
*/
|
206 |
public function getPreviewPath() {
|
207 |
return $this->params[RFG_PREVIEW_PATH];
|
208 |
}
|
209 |
-
|
210 |
private function downloadFile( $localPath, $url ) {
|
211 |
$resp = wp_remote_get( $url, array( 'filename' => $localPath, 'stream' => true ) );
|
212 |
-
if ( ( $resp == NULL ) || ( $resp == false ) || ( $resp['response'] == NULL ) ||
|
213 |
( $resp['response']['code'] == NULL ) || ( $resp['response']['code'] != 200 ) ) {
|
214 |
-
|
|
|
|
|
215 |
}
|
216 |
if ( ( ! file_exists( $localPath ) ) || ( filesize( $localPath ) <= 0 ) ) {
|
217 |
-
throw new InvalidArgumentException(
|
218 |
}
|
219 |
}
|
220 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
}
|
222 |
-
?>
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
|
4 |
+
define( 'RFG_PACKAGE_URL', 'package_url' );
|
5 |
+
define( 'RFG_COMPRESSION', 'compression' );
|
6 |
+
define( 'RFG_HTML_CODE', 'html_code' );
|
7 |
+
define( 'RFG_FILES_URLS', 'files_url' );
|
8 |
+
define( 'RFG_FILES_IN_ROOT', 'files_in_root' );
|
9 |
+
define( 'RFG_FILES_PATH', 'files_path' );
|
10 |
+
define( 'RFG_PREVIEW_PICTURE_URL', 'preview_picture_url' );
|
11 |
+
define( 'RFG_CUSTOM_PARAMETER', 'custom_parameter' );
|
12 |
+
define( 'RFG_VERSION', 'version' );
|
13 |
+
define( 'RFG_NON_INTERACTIVE_API_REQUEST', 'non_interactive_api_request' );
|
14 |
|
15 |
define( 'RFG_FAVICON_PRODUCTION_PACKAGE_PATH', 'favicon_production_package_path' );
|
16 |
define( 'RFG_FAVICON_COMPRESSED_PACKAGE_PATH', 'favicon_compressed_package_path' );
|
18 |
define( 'RFG_PREVIEW_PATH', 'preview_path' );
|
19 |
|
20 |
class Favicon_By_RealFaviconGenerator_Api_Response {
|
21 |
+
|
22 |
private $params = array();
|
23 |
+
|
24 |
+
public function __construct( $json ) {
|
25 |
if ( $json == NULL ) {
|
26 |
throw new InvalidArgumentException( "No response from RealFaviconGenerator" );
|
27 |
}
|
28 |
+
|
29 |
$response = json_decode( $json, true );
|
30 |
+
|
31 |
if ( $response == NULL ) {
|
32 |
throw new InvalidArgumentException( "JSON could not be parsed" );
|
33 |
}
|
34 |
+
|
35 |
$response = $this->getParam( $response, 'favicon_generation_result' );
|
36 |
$result = $this->getParam( $response, 'result' );
|
37 |
$status = $this->getParam( $result, 'status' );
|
38 |
+
|
39 |
if ( $status != 'success' ) {
|
40 |
$msg = $this->getParam( $result, 'error_message', false );
|
41 |
$msg = $msg != NULL ? $msg : 'An error occured';
|
42 |
throw new InvalidArgumentException( $msg );
|
43 |
}
|
44 |
+
|
45 |
$favicon = $this->getParam( $response, 'favicon' );
|
46 |
$this->params[RFG_PACKAGE_URL] = $this->getParam( $favicon, 'package_url' );
|
47 |
$this->params[RFG_COMPRESSION] = $this->getParam( $favicon, 'compression' ) == 'true';
|
48 |
$this->params[RFG_HTML_CODE] = $this->getParam( $favicon, 'html_code' );
|
49 |
+
$this->params[RFG_FILES_URLS] = $this->getParam( $favicon, 'files_urls' );
|
50 |
+
|
51 |
$filesLoc = $this->getParam( $response, 'files_location' );
|
52 |
$this->params[RFG_FILES_IN_ROOT] = $this->getParam( $filesLoc, 'type' ) == 'root';
|
53 |
$this->params[RFG_FILES_PATH] = $this->params[RFG_FILES_IN_ROOT] ? '/' : $this->getParam( $filesLoc, 'path' );
|
54 |
+
|
55 |
$this->params[RFG_PREVIEW_PICTURE_URL] = $this->getParam( $response, 'preview_picture_url', false );
|
56 |
+
|
57 |
$this->params[RFG_CUSTOM_PARAMETER] = $this->getParam( $response, 'custom_parameter', false );
|
58 |
+
$this->params[RFG_VERSION] = $this->getParam($response, 'version', false );
|
59 |
+
|
60 |
+
$this->params[RFG_NON_INTERACTIVE_API_REQUEST] = $this->getParam($response, 'non_interactive_request', false );
|
61 |
}
|
62 |
|
63 |
/**
|
66 |
public function getPackageUrl() {
|
67 |
return $this->params[RFG_PACKAGE_URL];
|
68 |
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* For example: <code>array( "http://realfavicongenerator.net/files/1234f5d2s34f3ds2/apple-touch-icon.png", ... )</code>
|
72 |
+
*/
|
73 |
+
public function getFilesURLs() {
|
74 |
+
return $this->params[RFG_FILES_URLS];
|
75 |
+
}
|
76 |
+
|
77 |
/**
|
78 |
* For example: <code>"<link ..."</code>
|
79 |
*/
|
83 |
|
84 |
/**
|
85 |
* <code>true</code> if the user chose to compress the pictures, <code>false</code> otherwise.
|
86 |
+
*/
|
87 |
public function isCompressed() {
|
88 |
return $this->params[RFG_COMPRESSION];
|
89 |
}
|
97 |
|
98 |
/**
|
99 |
* Indicate where the favicon files should be stored in the target web site. For example: <code>"/"</code>, <code>"/path/to/icons"</code>.
|
100 |
+
*/
|
101 |
public function getFilesLocation() {
|
102 |
return $this->params[RFG_FILES_PATH];
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
* For example: <code>"http://realfavicongenerator.net/files/1234f5d2s34f3ds2/preview.png"</code>
|
107 |
+
*/
|
108 |
public function getPreviewUrl() {
|
109 |
return $this->params[RFG_PREVIEW_PICTURE_URL];
|
110 |
}
|
111 |
+
|
112 |
/**
|
113 |
* Return the customer parameter, as it was transmitted during the invocation of the API.
|
114 |
*/
|
115 |
public function getCustomParameter() {
|
116 |
return $this->params[RFG_CUSTOM_PARAMETER];
|
117 |
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Return version of RealFaviconGenerator used to generate the favicon. Save this value to later check for updates.
|
121 |
+
*/
|
122 |
+
public function getVersion() {
|
123 |
+
return $this->params[RFG_VERSION];
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Return the non-interactive API request that matches the current interactive request.
|
128 |
+
*/
|
129 |
+
public function getNonInteractiveAPIRequest() {
|
130 |
+
return $this->params[RFG_NON_INTERACTIVE_API_REQUEST];
|
131 |
+
}
|
132 |
+
|
133 |
private function getParam( $params, $paramName, $throwIfNotFound = true ) {
|
134 |
if ( isset( $params[$paramName] ) ) {
|
135 |
return $params[$paramName];
|
140 |
}
|
141 |
|
142 |
/**
|
143 |
+
* Download and extract the files referenced by the response sent back by RealFaviconGenerator.
|
144 |
+
*
|
145 |
* Warning: as this method does HTTP accesses, calling it can take a few seconds. Better invoke it
|
146 |
* in an Ajax call, to not slow down the user experience.
|
147 |
*/
|
148 |
public function downloadAndUnpack( $outputDirectory = NULL ) {
|
149 |
+
global $wp_filesystem;
|
150 |
if ( $outputDirectory == NULL ) {
|
151 |
+
$outputDirectory = get_temp_dir();
|
152 |
}
|
153 |
+
|
154 |
+
$outputDirectory = $this->append_directory_separator( $outputDirectory );
|
155 |
+
|
156 |
if ( $this->getPackageUrl() != NULL ) {
|
157 |
+
$extractedPath = $outputDirectory . 'favicon_package';
|
158 |
+
if ( ! file_exists( $extractedPath ) ) {
|
159 |
+
if ( mkdir( $extractedPath, 0755, true ) !== true ) {
|
160 |
+
throw new InvalidArgumentException(
|
161 |
+
sprintf( __( 'Cannot create directory %s to store the favicon package content', FBRFG_PLUGIN_SLUG), $extractedPath ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
}
|
164 |
+
|
165 |
+
try {
|
166 |
+
$this->downloadZipFile( $outputDirectory, $extractedPath, $this->getPackageUrl() );
|
167 |
+
}
|
168 |
+
catch(Exception $e) {
|
169 |
+
// Zip file download failed, try getting files directly
|
170 |
+
$this->downloadFilesDirectly( $extractedPath, array() );
|
171 |
}
|
172 |
}
|
173 |
+
|
174 |
if ( $this->getPreviewUrl() != NULL ) {
|
175 |
+
$previewPath = $outputDirectory . 'favicon_preview.png';
|
176 |
$this->downloadFile( $previewPath, $this->getPreviewUrl() );
|
177 |
$this->params[RFG_PREVIEW_PATH] = $previewPath;
|
178 |
}
|
179 |
}
|
180 |
|
181 |
+
public function downloadFilesDirectly( $outputDirectory, $filesURLs ) {
|
182 |
+
foreach($this->getFilesURLs() as $fileURL ) {
|
183 |
+
$parts = parse_url( $fileURL );
|
184 |
+
$filePath = $outputDirectory . DIRECTORY_SEPARATOR .
|
185 |
+
basename( $parts['path'] );
|
186 |
+
$this->downloadFile( $filePath, $fileURL );
|
187 |
+
}
|
188 |
+
|
189 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $outputDirectory;
|
190 |
+
if ( $this->isCompressed() ) {
|
191 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath;
|
192 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = NULL;
|
193 |
+
}
|
194 |
+
else {
|
195 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = NULL;
|
196 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
public function downloadZipFile( $packageDirectory, $extractedPath, $packageUrl ) {
|
201 |
+
$packagePath = $packageDirectory . 'favicon_package.zip';
|
202 |
+
$this->downloadFile( $packagePath, $packageUrl );
|
203 |
+
|
204 |
+
$ret = WP_Filesystem();
|
205 |
+
$result = unzip_file( $packagePath, $extractedPath );
|
206 |
+
if ( $result !== true ) {
|
207 |
+
$explanation = ( is_wp_error( $result ) )
|
208 |
+
? $result->get_error_message()
|
209 |
+
: __( 'Unknown reason', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG );
|
210 |
+
if ( get_class($wp_filesystem) != 'WP_Filesystem_Direct' ) {
|
211 |
+
$explanation .= ' ' . __( "Apparently WordPress has no direct access to the file system (it uses another mean such as FTP). " .
|
212 |
+
"This may be the root cause of this issue.", Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG );
|
213 |
+
}
|
214 |
+
throw new InvalidArgumentException(
|
215 |
+
sprintf( __( 'Error while unziping the favicon package %s to directory %s', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
216 |
+
$packagePath, $extractedPath ) . ': ' . $explanation );
|
217 |
+
}
|
218 |
+
|
219 |
+
if ( $this->isCompressed() ) {
|
220 |
+
// As of today, when the user chooses the compress the picture,
|
221 |
+
// the package is provided in two flavors, in two distinct directories.
|
222 |
+
// Later, only the compressed version will be provided. Thus, the following code
|
223 |
+
// handles both scenarios.
|
224 |
+
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'compressed' ) ) {
|
225 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath .
|
226 |
+
DIRECTORY_SEPARATOR . 'compressed';
|
227 |
+
} else {
|
228 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath;
|
229 |
+
}
|
230 |
+
|
231 |
+
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'uncompressed' ) ) {
|
232 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath .
|
233 |
+
DIRECTORY_SEPARATOR . 'uncompressed';
|
234 |
+
} else {
|
235 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
236 |
+
}
|
237 |
+
|
238 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH];
|
239 |
+
}
|
240 |
+
else {
|
241 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = NULL;
|
242 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
243 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH];
|
244 |
+
}
|
245 |
+
}
|
246 |
+
|
247 |
/**
|
248 |
+
* Directory where the compressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
249 |
* Can be <code>NULL</code>.
|
250 |
*/
|
251 |
public function getCompressedPackagePath() {
|
253 |
}
|
254 |
|
255 |
/**
|
256 |
+
* Directory where the uncompressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
257 |
* Can be <code>NULL</code>.
|
258 |
*/
|
259 |
public function getUncompressedPackagePath() {
|
269 |
public function getProductionPackagePath() {
|
270 |
return $this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH];
|
271 |
}
|
272 |
+
|
273 |
/**
|
274 |
* Path to the preview picture.
|
275 |
*/
|
276 |
public function getPreviewPath() {
|
277 |
return $this->params[RFG_PREVIEW_PATH];
|
278 |
}
|
279 |
+
|
280 |
private function downloadFile( $localPath, $url ) {
|
281 |
$resp = wp_remote_get( $url, array( 'filename' => $localPath, 'stream' => true ) );
|
282 |
+
if ( ( $resp == NULL ) || ( $resp == false ) || ( is_wp_error( $resp ) ) || ( $resp['response'] == NULL ) ||
|
283 |
( $resp['response']['code'] == NULL ) || ( $resp['response']['code'] != 200 ) ) {
|
284 |
+
$explanation = is_wp_error( $resp ) ? ( ': ' . $resp->get_error_message() ) : '' ;
|
285 |
+
throw new InvalidArgumentException(
|
286 |
+
sprintf( __( 'Cannot download file at %s', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), $url ) . $explanation );
|
287 |
}
|
288 |
if ( ( ! file_exists( $localPath ) ) || ( filesize( $localPath ) <= 0 ) ) {
|
289 |
+
throw new InvalidArgumentException( __( 'Cannot store downloaded file locally', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ) );
|
290 |
}
|
291 |
}
|
292 |
+
|
293 |
+
public function append_directory_separator( $filename ) {
|
294 |
+
return $filename .
|
295 |
+
( ( $this->ends_with( $filename, DIRECTORY_SEPARATOR ))
|
296 |
+
? ''
|
297 |
+
: DIRECTORY_SEPARATOR );
|
298 |
+
}
|
299 |
+
|
300 |
+
// See http://stackoverflow.com/questions/834303/startswith-and-endswith-functions-in-php#answer-10473026
|
301 |
+
public function ends_with( $haystack, $needle ) {
|
302 |
+
return $needle === "" ||
|
303 |
+
( ( $temp = strlen( $haystack ) - strlen( $needle ) ) >= 0
|
304 |
+
&& strpos( $haystack, $needle, $temp ) !== false );
|
305 |
+
}
|
306 |
+
|
307 |
}
|
|
admin/views/appearance.php
ADDED
@@ -0,0 +1,317 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
?>
|
4 |
+
|
5 |
+
<div class="wrap">
|
6 |
+
|
7 |
+
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
8 |
+
|
9 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
10 |
+
<div id="install_in_progress_message" class="updated">
|
11 |
+
<p><?php _e( 'Favicon installation in progress. Please wait...', FBRFG_PLUGIN_SLUG ) ?></p>
|
12 |
+
</div>
|
13 |
+
|
14 |
+
<div id="install_completed_message" class="updated" style="display:none">
|
15 |
+
<p>
|
16 |
+
<?php _e( 'Favicon installed!', FBRFG_PLUGIN_SLUG ) ?>
|
17 |
+
<span id="rank_notice" style="display:none">
|
18 |
+
<?php printf( __( 'Do you like the result? If so, would you like to <a %s>rate the plugin</a>?', FBRFG_PLUGIN_SLUG ),
|
19 |
+
'target="_blank" href="https://wordpress.org/support/view/plugin-reviews/favicon-by-realfavicongenerator"' ) ?>
|
20 |
+
</span>
|
21 |
+
</p>
|
22 |
+
</div>
|
23 |
+
<div id="install_error_message" class="error" style="display:none"><p></p></div>
|
24 |
+
|
25 |
+
<div id="install_completed_container" style="display:none">
|
26 |
+
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
27 |
+
|
28 |
+
<?php include_once( plugin_dir_path(__FILE__) . DIRECTORY_SEPARATOR .
|
29 |
+
'keep_active_notice.php' ); ?>
|
30 |
+
|
31 |
+
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
32 |
+
<img id="preview_image">
|
33 |
+
|
34 |
+
<p>
|
35 |
+
<?php printf( __( '<a %s>Check your favicon</a> with RealFaviconGenerator\'s favicon checker.', FBRFG_PLUGIN_SLUG ),
|
36 |
+
'id="checker_link" class="button-primary" href="#"' ) ?>
|
37 |
+
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
38 |
+
</p>
|
39 |
+
</div>
|
40 |
+
<?php } else { ?>
|
41 |
+
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
42 |
+
|
43 |
+
<?php if ( $favicon_configured) { ?>
|
44 |
+
<?php include_once( plugin_dir_path(__FILE__) . DIRECTORY_SEPARATOR .
|
45 |
+
'keep_active_notice.php' ); ?>
|
46 |
+
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
47 |
+
<?php } else { ?>
|
48 |
+
<p><?php _e( 'No favicon has been configured yet.', FBRFG_PLUGIN_SLUG ) ?></p>
|
49 |
+
<?php } ?>
|
50 |
+
|
51 |
+
<?php if ( $favicon_configured ) {
|
52 |
+
if ( $preview_url ) { ?>
|
53 |
+
|
54 |
+
<img src="<?php echo $preview_url ?>">
|
55 |
+
|
56 |
+
<?php } ?>
|
57 |
+
<p>
|
58 |
+
<?php printf( __( '<a %s>Check your favicon</a> with RealFaviconGenerator\'s favicon checker.', FBRFG_PLUGIN_SLUG ),
|
59 |
+
'class="button-primary" ' .
|
60 |
+
'href="https://realfavicongenerator.net/favicon_checker?site=' . urlencode( home_url() ) . ($favicon_in_root ? '' : '&ignore_root_issues=on') . '"' ) ?>
|
61 |
+
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
62 |
+
</p>
|
63 |
+
<?php
|
64 |
+
}
|
65 |
+
} ?>
|
66 |
+
|
67 |
+
<div id="favicon_form_container" <?php echo $new_favicon_params_url ? 'style="display:none"' : '' ?>>
|
68 |
+
<h3><?php _e( 'Favicon generation', FBRFG_PLUGIN_SLUG ) ?></h3>
|
69 |
+
<?php if ( $favicon_configured || $new_favicon_params_url ) { ?>
|
70 |
+
<p><?php _e( 'You can replace the existing favicon.', FBRFG_PLUGIN_SLUG ) ?></p>
|
71 |
+
<?php } ?>
|
72 |
+
<form role="form" method="post" action="https://realfavicongenerator.net/api/favicon_generator" id="favicon_form">
|
73 |
+
<input type="hidden" name="json_params" id="json_params"/>
|
74 |
+
<table class="form-table"><tbody>
|
75 |
+
<tr valign="top">
|
76 |
+
<th scope="row">
|
77 |
+
<label for="master_picture_url"><?php _e( 'Master picture URL', FBRFG_PLUGIN_SLUG ) ?></label>
|
78 |
+
</th>
|
79 |
+
<td>
|
80 |
+
<input id="master_picture_url" name="master_picture_url" size="55">
|
81 |
+
<button id="upload_image_button" value="<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>">
|
82 |
+
<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>
|
83 |
+
</button>
|
84 |
+
<p class="description">
|
85 |
+
<?php _e( 'Submit a square picture, at least 70x70 (recommended: 260x260 or more)', FBRFG_PLUGIN_SLUG ) ?>
|
86 |
+
<br>
|
87 |
+
<?php _e( 'If the picture is on your hard drive, you can leave this field blank and upload the picture from RealFaviconGenerator.', FBRFG_PLUGIN_SLUG ) ?>
|
88 |
+
</p>
|
89 |
+
</td>
|
90 |
+
</tr>
|
91 |
+
|
92 |
+
<?php if ( $can_rewrite ) { ?>
|
93 |
+
<tr valign="top">
|
94 |
+
<th scope="row">
|
95 |
+
<label for="rewrite"><?php _e( 'Favicon files in root directory', FBRFG_PLUGIN_SLUG ) ?></label>
|
96 |
+
</th>
|
97 |
+
<td>
|
98 |
+
<input type="checkbox" name="rewrite" id="rewrite" checked="true">
|
99 |
+
<p class="description">
|
100 |
+
<?php _e( 'The plugin always stores the favicon files in a dedicated directory.', FBRFG_PLUGIN_SLUG ) ?>
|
101 |
+
<br>
|
102 |
+
<?php _e( 'However, if this option is enabled, the plugin takes advantage of the permalink feature and the favicon files appear to be in the root directory', FBRFG_PLUGIN_SLUG ) ?>
|
103 |
+
(<a href="https://realfavicongenerator.net/faq#why_icons_in_root"><?php _e( 'recommended', FBRFG_PLUGIN_SLUG ) ?></a>)
|
104 |
+
</p>
|
105 |
+
</td>
|
106 |
+
</tr>
|
107 |
+
<?php } ?>
|
108 |
+
</tbody></table>
|
109 |
+
|
110 |
+
<p class="submit">
|
111 |
+
<input type="submit" name="Generate favicon" id="generate_favicon_button" class="button-primary"
|
112 |
+
value="<?php _e( 'Generate favicon', FBRFG_PLUGIN_SLUG ) ?>">
|
113 |
+
</p>
|
114 |
+
</form>
|
115 |
+
</div>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<script type="text/javascript">
|
119 |
+
var picData = null;
|
120 |
+
|
121 |
+
function urlToBase64(url, callback) {
|
122 |
+
var img = new Image();
|
123 |
+
img.onload = function() {
|
124 |
+
callback(getBase64Image(img));
|
125 |
+
}
|
126 |
+
img.onerror = function() {
|
127 |
+
callback(null);
|
128 |
+
}
|
129 |
+
img.src = url;
|
130 |
+
}
|
131 |
+
|
132 |
+
// See http://stackoverflow.com/questions/934012/get-image-data-in-javascript
|
133 |
+
// Credits: Matthew Crumley
|
134 |
+
function getBase64Image(img) {
|
135 |
+
try {
|
136 |
+
var canvas = document.createElement("canvas");
|
137 |
+
canvas.width = img.width;
|
138 |
+
canvas.height = img.height;
|
139 |
+
|
140 |
+
var ctx = canvas.getContext("2d");
|
141 |
+
ctx.drawImage(img, 0, 0);
|
142 |
+
|
143 |
+
var dataURL = canvas.toDataURL("image/png");
|
144 |
+
|
145 |
+
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
|
146 |
+
}
|
147 |
+
catch(err) {
|
148 |
+
console.log("Cannot get the picture from the Media Library: " + err);
|
149 |
+
return null;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
function computeJson() {
|
154 |
+
var params = { favicon_generation: {
|
155 |
+
callback: {},
|
156 |
+
master_picture: {},
|
157 |
+
files_location: {},
|
158 |
+
api_key: "87d5cd739b05c00416c4a19cd14a8bb5632ea563"
|
159 |
+
}};
|
160 |
+
|
161 |
+
if (jQuery('#master_picture_url').val().length <= 0) {
|
162 |
+
params.favicon_generation.master_picture.type = "no_picture";
|
163 |
+
params.favicon_generation.master_picture.demo = true;
|
164 |
+
}
|
165 |
+
else if (pictureContent != null) {
|
166 |
+
params.favicon_generation.master_picture.type = "inline";
|
167 |
+
params.favicon_generation.master_picture.content = pictureContent;
|
168 |
+
}
|
169 |
+
else {
|
170 |
+
params.favicon_generation.master_picture.type = "url";
|
171 |
+
params.favicon_generation.master_picture.url = jQuery('#master_picture_url').val();
|
172 |
+
}
|
173 |
+
|
174 |
+
<?php if ( $can_rewrite ) { ?>
|
175 |
+
if ( jQuery("#rewrite").is(':checked') ) {
|
176 |
+
params.favicon_generation.files_location.type = 'root';
|
177 |
+
}
|
178 |
+
else {
|
179 |
+
params.favicon_generation.files_location.type = 'path';
|
180 |
+
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
181 |
+
}
|
182 |
+
<?php } else { ?>
|
183 |
+
params.favicon_generation.files_location.type = 'path';
|
184 |
+
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
185 |
+
<?php } ?>
|
186 |
+
|
187 |
+
params.favicon_generation.callback.type = 'url';
|
188 |
+
params.favicon_generation.callback.url = "<?php echo admin_url('themes.php?page=' . ( ( isset( $_REQUEST['page'] ) )
|
189 |
+
? $_REQUEST['page']
|
190 |
+
: 'favicon-by-realfavicongenerator/admin/class-favicon-by-realfavicongenerator-admin.phpfavicon_appearance_menu' ) ) ?>";
|
191 |
+
params.favicon_generation.callback.short_url = 'true';
|
192 |
+
params.favicon_generation.callback.path_only = 'true';
|
193 |
+
params.favicon_generation.callback.custom_parameter = "<?php echo $nonce ?>";
|
194 |
+
|
195 |
+
return params;
|
196 |
+
}
|
197 |
+
|
198 |
+
var pictureContent = null;
|
199 |
+
var pictureContentTimestamp = null;
|
200 |
+
|
201 |
+
function prepareInlinePicture(pictureUrl) {
|
202 |
+
var timestamp = new Date().getTime();
|
203 |
+
pictureContentTimestamp = timestamp;
|
204 |
+
|
205 |
+
jQuery('#generate_favicon_button').attr('disabled', 'disabled');
|
206 |
+
jQuery('#generate_favicon_button').val("<?php _e( 'Preparing master picture...', FBRFG_PLUGIN_SLUG ) ?>");
|
207 |
+
|
208 |
+
pictureContent = null;
|
209 |
+
|
210 |
+
urlToBase64(pictureUrl, function(content) {
|
211 |
+
if (content != null) {
|
212 |
+
pictureContent = content;
|
213 |
+
}
|
214 |
+
restoreGenerateFaviconButton();
|
215 |
+
});
|
216 |
+
|
217 |
+
setTimeout(function() {
|
218 |
+
if (pictureContentTimestamp == timestamp) {
|
219 |
+
restoreGenerateFaviconButton();
|
220 |
+
}
|
221 |
+
}, 3000);
|
222 |
+
}
|
223 |
+
|
224 |
+
function restoreGenerateFaviconButton() {
|
225 |
+
jQuery('#generate_favicon_button').removeAttr('disabled');
|
226 |
+
jQuery('#generate_favicon_button').val("<?php _e( 'Generate favicon', FBRFG_PLUGIN_SLUG ) ?>");
|
227 |
+
}
|
228 |
+
|
229 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
230 |
+
var data = {
|
231 |
+
action: '<?php echo Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon' ?>',
|
232 |
+
json_result_url: '<?php echo $new_favicon_params_url ?>'
|
233 |
+
};
|
234 |
+
<?php } ?>
|
235 |
+
|
236 |
+
jQuery(document).ready(function() {
|
237 |
+
jQuery('#favicon_form').submit(function(e) {
|
238 |
+
jQuery('#json_params').val(JSON.stringify(computeJson()));
|
239 |
+
});
|
240 |
+
|
241 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
242 |
+
jQuery.get('<?php echo $ajax_url ?>', data)
|
243 |
+
.done(function(response) {
|
244 |
+
if (response.status == 'success') {
|
245 |
+
jQuery('#preview_image').attr('src', response.preview_url);
|
246 |
+
var checkerUrl = "https://realfavicongenerator.net/favicon_checker?site=<?php echo urlencode( home_url() ) ?>" +
|
247 |
+
(response.favicon_in_root ? '' : '&ignore_root_issues=on');
|
248 |
+
jQuery('#checker_link').attr('href', checkerUrl);
|
249 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
250 |
+
jQuery('#install_completed_message').fadeIn(function() {
|
251 |
+
jQuery('#rank_notice').fadeIn(function() {
|
252 |
+
jQuery('#rank_notice').effect('pulsate', {
|
253 |
+
times: 3,
|
254 |
+
duration: 2000
|
255 |
+
});
|
256 |
+
});
|
257 |
+
});
|
258 |
+
jQuery('#install_completed_container').fadeIn();
|
259 |
+
jQuery('#favicon_form_container').fadeIn();
|
260 |
+
});
|
261 |
+
}
|
262 |
+
else {
|
263 |
+
var msg = "<?php _e( "An error occured", FBRFG_PLUGIN_SLUG ) ?>";
|
264 |
+
if (response.message != null) {
|
265 |
+
msg += ": " + response.message;
|
266 |
+
}
|
267 |
+
jQuery('#install_error_message p').html(msg);
|
268 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
269 |
+
jQuery('#install_error_message').fadeIn();
|
270 |
+
});
|
271 |
+
}
|
272 |
+
})
|
273 |
+
.fail(function() {
|
274 |
+
var msg = "<?php _e( "An internal error occurred", FBRFG_PLUGIN_SLUG ) ?>";
|
275 |
+
jQuery('#install_error_message p').html(msg);
|
276 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
277 |
+
jQuery('#install_error_message').fadeIn();
|
278 |
+
});
|
279 |
+
});
|
280 |
+
<?php } ?>
|
281 |
+
|
282 |
+
var fileFrame;
|
283 |
+
|
284 |
+
jQuery('#upload_image_button').on('click', function(event) {
|
285 |
+
event.preventDefault();
|
286 |
+
|
287 |
+
if (fileFrame) {
|
288 |
+
fileFrame.open();
|
289 |
+
return;
|
290 |
+
}
|
291 |
+
|
292 |
+
// Create the media frame.
|
293 |
+
fileFrame = wp.media.frames.file_frame = wp.media({
|
294 |
+
title: jQuery(this).data('uploader_title'),
|
295 |
+
button: {
|
296 |
+
text: jQuery(this).data('uploader_button_text'),
|
297 |
+
},
|
298 |
+
multiple: false
|
299 |
+
});
|
300 |
+
|
301 |
+
fileFrame.on('select', function() {
|
302 |
+
attachment = fileFrame.state().get('selection').first().toJSON();
|
303 |
+
jQuery('#master_picture_url').val(attachment.url);
|
304 |
+
prepareInlinePicture(attachment.url);
|
305 |
+
});
|
306 |
+
|
307 |
+
fileFrame.open();
|
308 |
+
});
|
309 |
+
|
310 |
+
|
311 |
+
jQuery('#master_picture_url').change(function() {
|
312 |
+
// Whatever the previous content of the field, forget its cached data
|
313 |
+
pictureContent = null;
|
314 |
+
restoreGenerateFaviconButton();
|
315 |
+
});
|
316 |
+
});
|
317 |
+
</script>
|
admin/views/keep_active_notice.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="keep_active_notice" class="notice notice-info">
|
2 |
+
<p>
|
3 |
+
<?php _e( "You should keep this plugin active. As soon as you deactive it, your favicon is disabled, too.",
|
4 |
+
FBRFG_PLUGIN_SLUG ) ?>
|
5 |
+
<?php printf( __( 'You may wonder <a %s>why it works that way</a>.',
|
6 |
+
FBRFG_PLUGIN_SLUG ), 'target="_blank" href="https://realfavicongenerator.net/blog/why-does-the-favicon-by-realfavicongenerator-wordpress-plugin-need-to-be-activated-all-the-time/"') ?>
|
7 |
+
<?php printf( __( 'In any case, <a %s>the plugin is super lightweight</a> and will not affect the performance of your site.',
|
8 |
+
FBRFG_PLUGIN_SLUG ), 'target="_blank" href="https://realfavicongenerator.net/blog/rfgs-wordpress-plugin-and-performance/"') ?>
|
9 |
+
</p>
|
10 |
+
</div>
|
admin/views/settings.php
CHANGED
@@ -1,235 +1,36 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
?>
|
4 |
|
5 |
<div class="wrap">
|
6 |
-
|
7 |
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
8 |
|
9 |
-
<?php if ( $new_favicon_params_url ) { ?>
|
10 |
-
<div id="install_in_progress_message" class="updated">
|
11 |
-
<p><?php _e( 'Favicon installation in progress. Please wait...', FBRFG_PLUGIN_SLUG ) ?></p>
|
12 |
-
</div>
|
13 |
-
|
14 |
-
<div id="install_completed_message" class="updated" style="display:none">
|
15 |
-
<p><?php _e( 'Favicon installed!', FBRFG_PLUGIN_SLUG ) ?></p>
|
16 |
-
</div>
|
17 |
-
<div id="install_error_message" class="error" style="display:none"><p></p></div>
|
18 |
-
|
19 |
-
<div id="install_completed_container" style="display:none">
|
20 |
-
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
21 |
-
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
22 |
-
<img id="preview_image">
|
23 |
-
|
24 |
-
<p>
|
25 |
-
<?php printf( __( '<a %s>Check your favicon</a> with RealFaviconGenerator\'s favicon checker.', FBRFG_PLUGIN_SLUG ),
|
26 |
-
'id="checker_link" class="button-primary" href="#"' ) ?>
|
27 |
-
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
28 |
-
</p>
|
29 |
-
</div>
|
30 |
-
<?php } else { ?>
|
31 |
-
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
32 |
-
|
33 |
-
<?php if ( $favicon_configured) { ?>
|
34 |
-
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
35 |
-
<?php } else { ?>
|
36 |
-
<p><?php _e( 'No favicon has been configured yet.', FBRFG_PLUGIN_SLUG ) ?></p>
|
37 |
-
<?php } ?>
|
38 |
-
|
39 |
-
<?php if ( $favicon_configured ) {
|
40 |
-
if ( $preview_url ) { ?>
|
41 |
-
|
42 |
-
<img src="<?php echo $preview_url ?>">
|
43 |
-
|
44 |
-
<?php } ?>
|
45 |
<p>
|
46 |
-
<?php printf(
|
47 |
-
'
|
48 |
-
|
49 |
-
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
50 |
</p>
|
51 |
-
<?php
|
52 |
-
}
|
53 |
-
} ?>
|
54 |
|
55 |
-
<
|
56 |
-
<h3><?php _e( 'Favicon generation', FBRFG_PLUGIN_SLUG ) ?></h3>
|
57 |
-
<?php if ( $favicon_configured || $new_favicon_params_url ) { ?>
|
58 |
-
<p><?php _e( 'You can replace the existing favicon.', FBRFG_PLUGIN_SLUG ) ?></p>
|
59 |
-
<?php } ?>
|
60 |
-
<form role="form" method="post" action="http://realfavicongenerator.net/api/favicon_generator" id="favicon_form">
|
61 |
-
<input type="hidden" name="json_params" id="json_params"/>
|
62 |
-
<table class="form-table"><tbody>
|
63 |
-
<tr valign="top">
|
64 |
-
<th scope="row">
|
65 |
-
<label for="master_picture_url"><?php _e( 'Master picture URL', FBRFG_PLUGIN_SLUG ) ?></label>
|
66 |
-
</th>
|
67 |
-
<td>
|
68 |
-
<input id="master_picture_url" name="master_picture_url" size="55">
|
69 |
-
<button id="upload_image_button" value="<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>">
|
70 |
-
<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>
|
71 |
-
</button>
|
72 |
-
<p class="description">
|
73 |
-
<?php _e( 'Submit a square picture, at least 70x70 (recommended: 260x260 or more)', FBRFG_PLUGIN_SLUG ) ?>
|
74 |
-
<br>
|
75 |
-
<?php _e( 'If the picture is on your hard drive, you can leave this field blank and upload the picture from RealFaviconGenerator.', FBRFG_PLUGIN_SLUG ) ?>
|
76 |
-
</p>
|
77 |
-
</td>
|
78 |
-
</tr>
|
79 |
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
</th>
|
85 |
<td>
|
86 |
-
<input type="checkbox" name="
|
|
|
87 |
<p class="description">
|
88 |
-
<?php _e(
|
89 |
-
<br>
|
90 |
-
<?php _e( 'However, if this option is enabled, the plugin takes advantage of the permalink feature and the favicon files appear to be in the root directory', FBRFG_PLUGIN_SLUG ) ?>
|
91 |
-
(<a href="http://realfavicongenerator.net/faq#why_icons_in_root"><?php _e( 'recommended', FBRFG_PLUGIN_SLUG ) ?></a>)
|
92 |
</p>
|
93 |
</td>
|
94 |
</tr>
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
<p class="submit">
|
99 |
-
<input type="submit" name="Generate favicon" id="generate_favicon_button" class="button-primary"
|
100 |
-
value="<?php _e( 'Generate favicon', FBRFG_PLUGIN_SLUG ) ?>">
|
101 |
-
</p>
|
102 |
-
</form>
|
103 |
-
</div>
|
104 |
-
</div>
|
105 |
-
|
106 |
-
<script type="text/javascript">
|
107 |
-
var picData = null;
|
108 |
-
|
109 |
-
// See http://stackoverflow.com/questions/934012/get-image-data-in-javascript
|
110 |
-
// Credits: Matthew Crumley
|
111 |
-
function getBase64Image(img) {
|
112 |
-
var canvas = document.createElement("canvas");
|
113 |
-
canvas.width = img.width;
|
114 |
-
canvas.height = img.height;
|
115 |
-
|
116 |
-
var ctx = canvas.getContext("2d");
|
117 |
-
ctx.drawImage(img, 0, 0);
|
118 |
-
|
119 |
-
var dataURL = canvas.toDataURL("image/png");
|
120 |
-
|
121 |
-
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
|
122 |
-
}
|
123 |
-
|
124 |
-
function computeJson() {
|
125 |
-
var params = { favicon_generation: {
|
126 |
-
callback: {},
|
127 |
-
master_picture: {},
|
128 |
-
files_location: {},
|
129 |
-
api_key: "87d5cd739b05c00416c4a19cd14a8bb5632ea563"
|
130 |
-
}};
|
131 |
-
|
132 |
-
if (jQuery('#master_picture_url').val().length <= 0) {
|
133 |
-
params.favicon_generation.master_picture.type = "no_picture";
|
134 |
-
params.favicon_generation.master_picture.demo = true;
|
135 |
-
}
|
136 |
-
else {
|
137 |
-
params.favicon_generation.master_picture.type = "url";
|
138 |
-
params.favicon_generation.master_picture.url = jQuery('#master_picture_url').val();
|
139 |
-
}
|
140 |
|
141 |
-
<?php
|
142 |
-
if ( jQuery("#rewrite").is(':checked') ) {
|
143 |
-
params.favicon_generation.files_location.type = 'root';
|
144 |
-
}
|
145 |
-
else {
|
146 |
-
params.favicon_generation.files_location.type = 'path';
|
147 |
-
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
148 |
-
}
|
149 |
-
<?php } else { ?>
|
150 |
-
params.favicon_generation.files_location.type = 'path';
|
151 |
-
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
152 |
-
<?php } ?>
|
153 |
|
154 |
-
|
155 |
-
|
156 |
-
params.favicon_generation.callback.short_url = 'true';
|
157 |
|
158 |
-
|
159 |
-
}
|
160 |
-
|
161 |
-
<?php if ( $new_favicon_params_url ) { ?>
|
162 |
-
var data = {
|
163 |
-
action: '<?php echo Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon' ?>',
|
164 |
-
json_result_url: '<?php echo $new_favicon_params_url ?>'
|
165 |
-
};
|
166 |
-
<?php } ?>
|
167 |
-
|
168 |
-
jQuery(document).ready(function() {
|
169 |
-
jQuery('#favicon_form').submit(function(e) {
|
170 |
-
jQuery('#json_params').val(JSON.stringify(computeJson()));
|
171 |
-
});
|
172 |
-
|
173 |
-
<?php if ( $new_favicon_params_url ) { ?>
|
174 |
-
jQuery.get('<?php echo $ajax_url ?>', data)
|
175 |
-
.done(function(response) {
|
176 |
-
if (response.status == 'success') {
|
177 |
-
jQuery('#preview_image').attr('src', response.preview_url);
|
178 |
-
var checkerUrl = "http://realfavicongenerator.net/favicon_checker?site=<?php echo urlencode( home_url() ) ?>" +
|
179 |
-
(response.favicon_in_root ? '' : '&ignore_root_issues=on');
|
180 |
-
jQuery('#checker_link').attr('href', checkerUrl);
|
181 |
-
jQuery('#install_in_progress_message').fadeOut(function() {
|
182 |
-
jQuery('#install_completed_message').fadeIn();
|
183 |
-
jQuery('#install_completed_container').fadeIn();
|
184 |
-
jQuery('#favicon_form_container').fadeIn();
|
185 |
-
});
|
186 |
-
}
|
187 |
-
else {
|
188 |
-
var msg = "<?php _e( "An error occured", FBRFG_PLUGIN_SLUG ) ?>";
|
189 |
-
if (response.message != null) {
|
190 |
-
msg += ": " + response.message;
|
191 |
-
}
|
192 |
-
jQuery('#install_error_message p').html(msg);
|
193 |
-
jQuery('#install_in_progress_message').fadeOut(function() {
|
194 |
-
jQuery('#install_error_message').fadeIn();
|
195 |
-
});
|
196 |
-
}
|
197 |
-
})
|
198 |
-
.fail(function() {
|
199 |
-
var msg = "<?php _e( "An internal error occurred", FBRFG_PLUGIN_SLUG ) ?>";
|
200 |
-
jQuery('#install_error_message p').html(msg);
|
201 |
-
jQuery('#install_in_progress_message').fadeOut(function() {
|
202 |
-
jQuery('#install_error_message').fadeIn();
|
203 |
-
});
|
204 |
-
});
|
205 |
-
<?php } ?>
|
206 |
-
|
207 |
-
var fileFrame;
|
208 |
-
|
209 |
-
jQuery('#upload_image_button').live('click', function(event) {
|
210 |
-
event.preventDefault();
|
211 |
-
|
212 |
-
if (fileFrame) {
|
213 |
-
fileFrame.open();
|
214 |
-
return;
|
215 |
-
}
|
216 |
-
|
217 |
-
// Create the media frame.
|
218 |
-
fileFrame = wp.media.frames.file_frame = wp.media({
|
219 |
-
title: jQuery(this).data('uploader_title'),
|
220 |
-
button: {
|
221 |
-
text: jQuery(this).data('uploader_button_text'),
|
222 |
-
},
|
223 |
-
multiple: false
|
224 |
-
});
|
225 |
-
|
226 |
-
fileFrame.on('select', function() {
|
227 |
-
attachment = fileFrame.state().get('selection').first().toJSON();
|
228 |
-
jQuery('#master_picture_url').val(attachment.url);
|
229 |
-
});
|
230 |
-
|
231 |
-
fileFrame.open();
|
232 |
-
});
|
233 |
-
|
234 |
-
});
|
235 |
-
</script>
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
?>
|
4 |
|
5 |
<div class="wrap">
|
|
|
6 |
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
<p>
|
9 |
+
<?php printf(
|
10 |
+
__( 'Do you want to setup your favicon? Go to <a href="%s">Appearance > Favicon</a>', FBRFG_PLUGIN_SLUG ),
|
11 |
+
$favicon_appearance_url ) ?>
|
|
|
12 |
</p>
|
|
|
|
|
|
|
13 |
|
14 |
+
<form action="<?php echo $favicon_admin_url ?>" method="post">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
+
<table class="form-table">
|
17 |
+
<tbody>
|
18 |
+
<tr>
|
19 |
+
<th scope="row"><?php _e('Display update notifications', FBRFG_PLUGIN_SLUG ) ?></th>
|
|
|
20 |
<td>
|
21 |
+
<input type="checkbox" name="<?php echo Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS ?>"
|
22 |
+
value="1" <?php echo( $display_update_notifications ? 'checked="checked"' : '' ) ?>>
|
23 |
<p class="description">
|
24 |
+
<?php _e('Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new version of iOS or a new platform is supported.', FBRFG_PLUGIN_SLUG ) ?>
|
|
|
|
|
|
|
25 |
</p>
|
26 |
</td>
|
27 |
</tr>
|
28 |
+
</tbody>
|
29 |
+
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
<input type="hidden" name="<?php echo Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM ?>" value="1">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
<input name="Submit" type="submit" class="button-primary" value="<?php _e( 'Save changes', FBRFG_PLUGIN_SLUG ) ?>">
|
34 |
+
</form>
|
|
|
35 |
|
36 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
favicon-by-realfavicongenerator.php
CHANGED
@@ -11,12 +11,14 @@
|
|
11 |
* @wordpress-plugin
|
12 |
* Plugin Name: Favicon by RealFaviconGenerator
|
13 |
* Plugin URI: http://realfavicongenerator.net/extensions/wordpress
|
14 |
-
* Description: Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, Android devices, Windows 8 tablets, etc.
|
15 |
-
* Version: 1.
|
16 |
* Author: Philippe Bernard
|
17 |
* Author URI: http://realfavicongenerator.net/
|
18 |
* License: GPLv2
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
|
|
|
|
20 |
*/
|
21 |
|
22 |
// If this file is called directly, abort.
|
@@ -28,7 +30,8 @@ if ( ! defined( 'WPINC' ) ) {
|
|
28 |
* Public-Facing Functionality
|
29 |
*----------------------------------------------------------------------------*/
|
30 |
|
31 |
-
require_once( plugin_dir_path( __FILE__ ) . 'public
|
|
|
32 |
|
33 |
register_activation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'activate' ) );
|
34 |
register_deactivation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'deactivate' ) );
|
@@ -41,7 +44,8 @@ add_action( 'plugins_loaded', array( 'Favicon_By_RealFaviconGenerator', 'get_ins
|
|
41 |
|
42 |
if ( is_admin() ) {
|
43 |
|
44 |
-
require_once( plugin_dir_path( __FILE__ ) . 'admin
|
|
|
45 |
add_action( 'plugins_loaded', array( 'Favicon_By_RealFaviconGenerator_Admin', 'get_instance' ) );
|
46 |
|
47 |
}
|
11 |
* @wordpress-plugin
|
12 |
* Plugin Name: Favicon by RealFaviconGenerator
|
13 |
* Plugin URI: http://realfavicongenerator.net/extensions/wordpress
|
14 |
+
* Description: Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, Android devices, Windows 8 tablets, etc.
|
15 |
+
* Version: 1.3.20
|
16 |
* Author: Philippe Bernard
|
17 |
* Author URI: http://realfavicongenerator.net/
|
18 |
* License: GPLv2
|
19 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
20 |
+
* Text Domain: favicon-by-realfavicongenerator
|
21 |
+
* Domain Path: /languages/
|
22 |
*/
|
23 |
|
24 |
// If this file is called directly, abort.
|
30 |
* Public-Facing Functionality
|
31 |
*----------------------------------------------------------------------------*/
|
32 |
|
33 |
+
require_once( plugin_dir_path( __FILE__ ) . 'public' . DIRECTORY_SEPARATOR .
|
34 |
+
'class-favicon-by-realfavicongenerator.php' );
|
35 |
|
36 |
register_activation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'activate' ) );
|
37 |
register_deactivation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'deactivate' ) );
|
44 |
|
45 |
if ( is_admin() ) {
|
46 |
|
47 |
+
require_once( plugin_dir_path( __FILE__ ) . 'admin' . DIRECTORY_SEPARATOR .
|
48 |
+
'class-favicon-by-realfavicongenerator-admin.php' );
|
49 |
add_action( 'plugins_loaded', array( 'Favicon_By_RealFaviconGenerator_Admin', 'get_instance' ) );
|
50 |
|
51 |
}
|
languages/favicon-by-realfavicongenerator-cs_CZ.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-cs_CZ.po
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-11-22 17:39+0100\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-11-22 18:18+0100\n"
|
13 |
+
"Language-Team: \n"
|
14 |
+
"X-Generator: Poedit 1.8.6\n"
|
15 |
+
"Last-Translator: nothing <nothing@nothing.com>\n"
|
16 |
+
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
17 |
+
"Language: cs_CZ\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
22 |
+
msgid "Favicon"
|
23 |
+
msgstr "Favikona"
|
24 |
+
|
25 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
26 |
+
msgid "Favicon Settings"
|
27 |
+
msgstr "Nastavení favikony"
|
28 |
+
|
29 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
30 |
+
msgid ""
|
31 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
32 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
33 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
34 |
+
msgstr ""
|
35 |
+
"Nonce nebyl rozpoznán. Tento stav se stává pouze v případě XSS útoku. Pokud "
|
36 |
+
"je něco v nepořádku, prosím neprodleně <a href=\\\"mailto:"
|
37 |
+
"contact@realfavicongenerator.net\\\">nás kontaktujte</a>."
|
38 |
+
|
39 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
40 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
41 |
+
msgid "Cannot create directory %s to store the favicon package"
|
42 |
+
msgstr "Nelze vytvořit adresář %s pro uložení balíčku favikon"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
45 |
+
msgid "An update is available on RealFaviconGenerator:"
|
46 |
+
msgstr "Aktualizace RealFaviconGenerator je dostupná:"
|
47 |
+
|
48 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
49 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
50 |
+
msgstr "Možná je potřeba <a href=\"%s\">znovu vytvořit favikon</a>"
|
51 |
+
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
53 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
54 |
+
msgid "Hide this notice"
|
55 |
+
msgstr "Skrýt toto oznámení"
|
56 |
+
|
57 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
58 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
59 |
+
msgid "Do not warn me again in case of update"
|
60 |
+
msgstr "Nikdy již neupozornit na novou verzi"
|
61 |
+
|
62 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
63 |
+
msgid "Your favicon was updated automatically:"
|
64 |
+
msgstr "Vaše favikona byla automaticky aktualizována:"
|
65 |
+
|
66 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
67 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
68 |
+
msgstr "Nelze vytvořit adresář %s pro uložení obsah balíčku favikon"
|
69 |
+
|
70 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
71 |
+
msgid "Unknown reason"
|
72 |
+
msgstr "Neznámý důvod selhání."
|
73 |
+
|
74 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
75 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
76 |
+
msgstr "Nastala chyba při rozbalování balíčku favikon %s ve složce %s"
|
77 |
+
|
78 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
79 |
+
msgid "Cannot download file at %s"
|
80 |
+
msgstr "Soubor %s nelze stáhnout"
|
81 |
+
|
82 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
83 |
+
msgid "Cannot store downloaded file locally"
|
84 |
+
msgstr "Soubor nelze uložit"
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:11
|
87 |
+
msgid "Favicon installation in progress. Please wait..."
|
88 |
+
msgstr "Instalace favikony probíhá. Prosím, čekejte..."
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:16
|
91 |
+
msgid "Favicon installed!"
|
92 |
+
msgstr "Favikona nainstalována!"
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:18
|
95 |
+
msgid ""
|
96 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
97 |
+
msgstr ""
|
98 |
+
"Líbí se Vám výsledek? Pokud ano, můžete prosím <a %s>ohodnotit plugin</a>?"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
101 |
+
msgid "Current favicon"
|
102 |
+
msgstr "Stávající favikona"
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
105 |
+
msgid "The favicon is up and ready."
|
106 |
+
msgstr "Favikona je připravená."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
109 |
+
msgid ""
|
110 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
111 |
+
msgstr "<a %s>Zkontrolovat favikony</a> přes službu RealFaviconGenerator."
|
112 |
+
|
113 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
114 |
+
msgid "This option works only if your site is accessible from the outside."
|
115 |
+
msgstr "Funguje pouze v případě webu dostupného z internetu."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:42
|
118 |
+
msgid "No favicon has been configured yet."
|
119 |
+
msgstr "Favikona není vytvořena."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:62
|
122 |
+
msgid "Favicon generation"
|
123 |
+
msgstr "Vygenerovat favikonu"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:64
|
126 |
+
msgid "You can replace the existing favicon."
|
127 |
+
msgstr "Můžete nahradit stávající favikon."
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:71
|
130 |
+
msgid "Master picture URL"
|
131 |
+
msgstr "Obrázek"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
134 |
+
msgid "Select from the Media Library"
|
135 |
+
msgstr "Vybrat z knihovny médií"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:79
|
138 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
139 |
+
msgstr ""
|
140 |
+
"Obrázek musí být čtverec, alespoň 70x70px (doporučeno je však 260x260 a "
|
141 |
+
"více)"
|
142 |
+
|
143 |
+
#: admin/views/appearance.php:81
|
144 |
+
msgid ""
|
145 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
146 |
+
"upload the picture from RealFaviconGenerator."
|
147 |
+
msgstr ""
|
148 |
+
"Pokud je obrázek uložen na Vašem pevném disku, můžete nechat pole prázdné a "
|
149 |
+
"nahrát obrázek přímo přes službu RealFaviconGenerator."
|
150 |
+
|
151 |
+
#: admin/views/appearance.php:89
|
152 |
+
msgid "Favicon files in root directory"
|
153 |
+
msgstr "Soubory favikony v kořenovém adresáři"
|
154 |
+
|
155 |
+
#: admin/views/appearance.php:94
|
156 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
157 |
+
msgstr "Plugin vždy ukládá soubory favikon do vyhrazeného adresáře."
|
158 |
+
|
159 |
+
#: admin/views/appearance.php:96
|
160 |
+
msgid ""
|
161 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
162 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
163 |
+
msgstr ""
|
164 |
+
"Pokud je však tato možnost povolena, plugin využije funkce permalink a "
|
165 |
+
"soubory favikon umístí do kořenového adresáře webu."
|
166 |
+
|
167 |
+
#: admin/views/appearance.php:97
|
168 |
+
msgid "recommended"
|
169 |
+
msgstr "doporučeno"
|
170 |
+
|
171 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
172 |
+
msgid "Generate favicon"
|
173 |
+
msgstr "Vygenerovat favikonu"
|
174 |
+
|
175 |
+
#: admin/views/appearance.php:200
|
176 |
+
msgid "Preparing master picture..."
|
177 |
+
msgstr "Připravuje se obrázek..."
|
178 |
+
|
179 |
+
#: admin/views/appearance.php:257
|
180 |
+
msgid "An error occured"
|
181 |
+
msgstr "Nastala chyba"
|
182 |
+
|
183 |
+
#: admin/views/appearance.php:268
|
184 |
+
msgid "An internal error occurred"
|
185 |
+
msgstr "Nastala vnitřní chyba"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:13
|
188 |
+
msgid ""
|
189 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
190 |
+
"Favicon</a>"
|
191 |
+
msgstr ""
|
192 |
+
"Chcete nastavit favikonu? Přejděte na <a href=\"%s\">Vzhled > Favikona</"
|
193 |
+
"a>"
|
194 |
+
|
195 |
+
#: admin/views/settings.php:22
|
196 |
+
msgid "Display update notifications"
|
197 |
+
msgstr "Zobrazit oznámení o aktualizaci"
|
198 |
+
|
199 |
+
#: admin/views/settings.php:27
|
200 |
+
msgid ""
|
201 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
202 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
203 |
+
msgstr ""
|
204 |
+
"Zobrazí upozornění, jakmile je favikona upravena na nejnovější verzi "
|
205 |
+
"RealFaviconGenerator. Například, když Apple vydá nový iOS."
|
206 |
+
|
207 |
+
#: admin/views/settings.php:36
|
208 |
+
msgid "Save changes"
|
209 |
+
msgstr "Uložit změny"
|
210 |
+
|
211 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
212 |
+
msgid ""
|
213 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
214 |
+
"update"
|
215 |
+
msgstr "Navštivte <a href=\"%s\">RFG's historii změn</a>"
|
216 |
+
|
217 |
+
#. Plugin Name of the plugin/theme
|
218 |
+
msgid "Favicon by RealFaviconGenerator"
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#. Plugin URI of the plugin/theme
|
222 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#. Description of the plugin/theme
|
226 |
+
msgid ""
|
227 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
228 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
229 |
+
msgstr ""
|
230 |
+
"Vytvořit a nainstalovat favikony nejen pro známé platformy PC/Mac, ale také "
|
231 |
+
"iPhone/iPad, zařízení Android, tablety Windows 8, a další."
|
232 |
+
|
233 |
+
#. Author of the plugin/theme
|
234 |
+
msgid "Philippe Bernard"
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
#. Author URI of the plugin/theme
|
238 |
+
msgid "http://realfavicongenerator.net/"
|
239 |
+
msgstr ""
|
languages/favicon-by-realfavicongenerator-da_DK.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-da_DK.po
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-06-24 10:34+0100\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-06-24 10:48+0100\n"
|
13 |
+
"Last-Translator: Alexander Leo-Hansen <alexanderleoh@gmail.com>\n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"X-Generator: Poedit 1.8.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
+
"Language: da_DK\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
22 |
+
#, fuzzy
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon indstillinger"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
31 |
+
msgid ""
|
32 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
33 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
34 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
35 |
+
msgstr ""
|
36 |
+
"Nonce blev ikke genkendt. Det er kun mening at dette skal skal ske i "
|
37 |
+
"tilfælde af et XSS angreb. Hvis du tror noget er galt, kan du <a href=\\"
|
38 |
+
"\"mailto:contact@realfavicongenerator.net\\\">kontakte os</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
41 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
42 |
+
msgid "Cannot create directory %s to store the favicon package"
|
43 |
+
msgstr "Kan ikke oprette mappen %s til opbevaring af favicon."
|
44 |
+
|
45 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
46 |
+
msgid "An update is available on RealFaviconGenerator:"
|
47 |
+
msgstr "En opdatering er tilgængelig på RealFaviconGenerator:"
|
48 |
+
|
49 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
50 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
51 |
+
msgstr "Du kan <a href=\"%s\">generere</a> dit favicon igen"
|
52 |
+
|
53 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
55 |
+
#, fuzzy
|
56 |
+
msgid "Hide this notice"
|
57 |
+
msgstr "Skjul denne meddelse"
|
58 |
+
|
59 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
61 |
+
msgid "Do not warn me again in case of update"
|
62 |
+
msgstr "Advar mig ikke om fremtidige opdateringer"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
65 |
+
msgid "Your favicon was updated automatically:"
|
66 |
+
msgstr "Dit favicon blev automatisk opdateret:"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
69 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
70 |
+
msgstr "Kan ikke oprette mappen %s til opbevaring af favicon"
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
73 |
+
msgid "Unknown reason"
|
74 |
+
msgstr "Ukendte årsag"
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
77 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
78 |
+
msgstr "Der skete en fejl under udpakningen af favicon %s til mappen %s"
|
79 |
+
|
80 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
81 |
+
msgid "Cannot download file at %s"
|
82 |
+
msgstr "Kan ikke downloade filen på %s"
|
83 |
+
|
84 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
85 |
+
msgid "Cannot store downloaded file locally"
|
86 |
+
msgstr "Kan ikke opbevare den downloadede fil"
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:11
|
89 |
+
msgid "Favicon installation in progress. Please wait..."
|
90 |
+
msgstr "Favicon er ved at blive installeret. Vent venligst…"
|
91 |
+
|
92 |
+
#: admin/views/appearance.php:16
|
93 |
+
msgid "Favicon installed!"
|
94 |
+
msgstr "Favicon blev installeret!"
|
95 |
+
|
96 |
+
#: admin/views/appearance.php:18
|
97 |
+
msgid ""
|
98 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
99 |
+
msgstr ""
|
100 |
+
"Kan du lidt resultatet? I så fald, må du gerne <a %s>bedømme vores plugin</"
|
101 |
+
"a>"
|
102 |
+
|
103 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
104 |
+
msgid "Current favicon"
|
105 |
+
msgstr "Nuværende favicon"
|
106 |
+
|
107 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
108 |
+
msgid "The favicon is up and ready."
|
109 |
+
msgstr "Dit favicon er klar."
|
110 |
+
|
111 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
112 |
+
msgid ""
|
113 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
114 |
+
msgstr ""
|
115 |
+
"<a %s>Tje kdit favicon</a> med RealFaviconGenerator's favicon tjekker."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
118 |
+
msgid "This option works only if your site is accessible from the outside."
|
119 |
+
msgstr "Denne indstillinger virker kun, hvis du kan connecte til dit website."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:42
|
122 |
+
msgid "No favicon has been configured yet."
|
123 |
+
msgstr "Der er endnu ikke blevet konfigureret et favicon."
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:62
|
126 |
+
msgid "Favicon generation"
|
127 |
+
msgstr "Generering af favicon"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:64
|
130 |
+
msgid "You can replace the existing favicon."
|
131 |
+
msgstr "Du kan erstatte det eksisterende favicon."
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:71
|
134 |
+
msgid "Master picture URL"
|
135 |
+
msgstr "Master billede URL"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
138 |
+
msgid "Select from the Media Library"
|
139 |
+
msgstr "Vælg fra Medie biblioteket"
|
140 |
+
|
141 |
+
#: admin/views/appearance.php:79
|
142 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
143 |
+
msgstr ""
|
144 |
+
"Indsend et firkantet billede, mindst 70x70 (anbefalet: 260x260 eller mere)"
|
145 |
+
|
146 |
+
#: admin/views/appearance.php:81
|
147 |
+
msgid ""
|
148 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
149 |
+
"upload the picture from RealFaviconGenerator."
|
150 |
+
msgstr ""
|
151 |
+
"Hvis billedet er på din harddisk, kan du lade dette felt være tomt og "
|
152 |
+
"uploade billedet fra RealFaviconGenerator."
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:89
|
155 |
+
msgid "Favicon files in root directory"
|
156 |
+
msgstr "Favicon filerne er i roden"
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:94
|
159 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
160 |
+
msgstr "Dette plugin opbevare altid favicon filerne i en dedikeret mappe."
|
161 |
+
|
162 |
+
#: admin/views/appearance.php:96
|
163 |
+
msgid ""
|
164 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
165 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
166 |
+
msgstr ""
|
167 |
+
"Hvis denne indstilling er aktiveret, vil pluginnet drage fordel af "
|
168 |
+
"permalink og favicon filerne vil være i rodmappen"
|
169 |
+
|
170 |
+
#: admin/views/appearance.php:97
|
171 |
+
msgid "recommended"
|
172 |
+
msgstr "anbefalet"
|
173 |
+
|
174 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
175 |
+
msgid "Generate favicon"
|
176 |
+
msgstr "Generere favicon"
|
177 |
+
|
178 |
+
#: admin/views/appearance.php:200
|
179 |
+
msgid "Preparing master picture..."
|
180 |
+
msgstr "Forbereder master billede…"
|
181 |
+
|
182 |
+
#: admin/views/appearance.php:257
|
183 |
+
msgid "An error occured"
|
184 |
+
msgstr "En uventet fejl opstod"
|
185 |
+
|
186 |
+
#: admin/views/appearance.php:268
|
187 |
+
msgid "An internal error occurred"
|
188 |
+
msgstr "En intern fejl opstod"
|
189 |
+
|
190 |
+
#: admin/views/settings.php:13
|
191 |
+
msgid ""
|
192 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
193 |
+
"Favicon</a>"
|
194 |
+
msgstr ""
|
195 |
+
"Vil du opsætte dit favicon? Gå til <a href=\"%s\">Appearance > Favicon</"
|
196 |
+
"a>"
|
197 |
+
|
198 |
+
#: admin/views/settings.php:22
|
199 |
+
msgid "Display update notifications"
|
200 |
+
msgstr "Vis opdateringsnotifikationer"
|
201 |
+
|
202 |
+
#: admin/views/settings.php:27
|
203 |
+
msgid ""
|
204 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
205 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
206 |
+
msgstr ""
|
207 |
+
"Få besked når RealFaviconGenerator opdateres. For eksempel når Apple "
|
208 |
+
"frigiver en ny version af iOS eller en ny platform er understøttet."
|
209 |
+
|
210 |
+
#: admin/views/settings.php:36
|
211 |
+
msgid "Save changes"
|
212 |
+
msgstr "Gem indstillinger"
|
213 |
+
|
214 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
215 |
+
msgid ""
|
216 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
217 |
+
"update"
|
218 |
+
msgstr ""
|
219 |
+
"Besøg <a href=\"%s\">RFG's changelog</a> for at se indholdet for "
|
220 |
+
"opdateringen"
|
221 |
+
|
222 |
+
#. Plugin Name of the plugin/theme
|
223 |
+
msgid "Favicon by RealFaviconGenerator"
|
224 |
+
msgstr "Favicon by RealFaviconGenerator"
|
225 |
+
|
226 |
+
#. Plugin URI of the plugin/theme
|
227 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
228 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
229 |
+
|
230 |
+
#. Description of the plugin/theme
|
231 |
+
msgid ""
|
232 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
233 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
234 |
+
msgstr ""
|
235 |
+
"Opret og installer dit favicon på alle platforme: PC / Mac, men også "
|
236 |
+
"iPhone / iPad, Android-enheder, Windows 8 tabletter, etc."
|
237 |
+
|
238 |
+
#. Author of the plugin/theme
|
239 |
+
msgid "Philippe Bernard"
|
240 |
+
msgstr "Philippe Bernard"
|
241 |
+
|
242 |
+
#. Author URI of the plugin/theme
|
243 |
+
msgid "http://realfavicongenerator.net/"
|
244 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-fr_FR.mo
CHANGED
Binary file
|
languages/favicon-by-realfavicongenerator-fr_FR.po
CHANGED
@@ -1,101 +1,211 @@
|
|
1 |
-
# Copyright (C) 2014 Favicon by RealFaviconGenerator
|
2 |
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Favicon by RealFaviconGenerator 1.0
|
6 |
-
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
-
"
|
8 |
-
"
|
|
|
|
|
|
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"
|
13 |
-
"Last-Translator: Philippe Bernard <philippe@realfavicongenerator.net>\n"
|
14 |
-
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
-
"Language: fr_FR\n"
|
16 |
|
17 |
-
#: admin/class-favicon-by-realfavicongenerator-admin.php:
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
#: admin/class-favicon-by-realfavicongenerator-admin.php:49
|
22 |
msgid "Favicon"
|
23 |
msgstr "Favicon"
|
24 |
|
25 |
-
#: admin/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
msgid "Favicon installation in progress. Please wait..."
|
27 |
msgstr "Installation du favicon en cours. Veuillez patienter..."
|
28 |
-
|
29 |
-
#: admin/views/
|
30 |
msgid "Favicon installed!"
|
31 |
msgstr "Favicon installé !"
|
32 |
-
|
33 |
-
#: admin/views/
|
|
|
|
|
|
|
|
|
34 |
msgid "Current favicon"
|
35 |
msgstr "Favicon actuel"
|
36 |
|
37 |
-
#: admin/views/
|
38 |
msgid "The favicon is up and ready."
|
39 |
msgstr "Le favicon est installé."
|
40 |
|
41 |
-
#: admin/views/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
msgid "No favicon has been configured yet."
|
43 |
msgstr "Aucun favicon n'a été configuré pour le moment."
|
44 |
|
45 |
-
#: admin/views/
|
46 |
msgid "Favicon generation"
|
47 |
msgstr "Génération du favicon"
|
48 |
|
49 |
-
#: admin/views/
|
50 |
msgid "You can replace the existing favicon."
|
51 |
msgstr "Vous pouvez remplacer le favicon existant."
|
52 |
|
53 |
-
#: admin/views/
|
54 |
msgid "Master picture URL"
|
55 |
msgstr "URL de l'image de base"
|
56 |
|
57 |
-
#: admin/views/
|
58 |
msgid "Select from the Media Library"
|
59 |
msgstr "Sélectionner dans la Bibliothèque de médias"
|
60 |
|
61 |
-
#: admin/views/
|
62 |
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
63 |
-
msgstr ""
|
64 |
-
"Utilisez une image carrée en 70x70 minimum (recommandé: 260x260 ou plus)"
|
65 |
|
66 |
-
#: admin/views/
|
67 |
msgid ""
|
68 |
-
"If the picture is on your hard drive, you can leave this field blank and "
|
69 |
-
"
|
70 |
msgstr ""
|
71 |
-
"Si l'image est sur votre disque dur, vous pouvez laisser ce champ vide et "
|
72 |
-
"
|
73 |
|
74 |
-
#: admin/views/
|
75 |
msgid "Favicon files in root directory"
|
76 |
msgstr "Fichiers du favicon dans le répertoire racine"
|
77 |
|
78 |
-
#: admin/views/
|
79 |
msgid "The plugin always stores the favicon files in a dedicated directory."
|
80 |
msgstr "Le plugin conserve toujours les fichiers du favicon dans un répertoire dédié."
|
81 |
|
82 |
-
#: admin/views/
|
83 |
msgid ""
|
84 |
-
"However, if this option is enabled, the plugin takes advantage of the "
|
85 |
-
"
|
86 |
msgstr ""
|
87 |
-
"Cependant, si cette option est activée, "
|
88 |
-
"
|
89 |
-
"pour faire apparaitre les fichiers du favicon dans le répertoire racine"
|
90 |
|
91 |
-
#: admin/views/
|
92 |
msgid "recommended"
|
93 |
msgstr "recommandé"
|
94 |
|
95 |
-
#: admin/views/
|
96 |
msgid "Generate favicon"
|
97 |
msgstr "Générer le favicon"
|
98 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
#. Plugin Name of the plugin/theme
|
100 |
msgid "Favicon by RealFaviconGenerator"
|
101 |
msgstr "Favicon par RealFaviconGenerator"
|
@@ -106,12 +216,11 @@ msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
|
106 |
|
107 |
#. Description of the plugin/theme
|
108 |
msgid ""
|
109 |
-
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
110 |
-
"
|
111 |
msgstr ""
|
112 |
-
"Créez et installez votre favicon pour toutes les plateformes : PC/Mac "
|
113 |
-
"
|
114 |
-
"etc."
|
115 |
|
116 |
#. Author of the plugin/theme
|
117 |
msgid "Philippe Bernard"
|
@@ -120,3 +229,17 @@ msgstr "Philippe Bernard"
|
|
120 |
#. Author URI of the plugin/theme
|
121 |
msgid "http://realfavicongenerator.net/"
|
122 |
msgstr "http://realfavicongenerator.net/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.1.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-realfavicongenerator\n"
|
7 |
+
"POT-Creation-Date: 2015-06-24 10:16+0100\n"
|
8 |
+
"PO-Revision-Date: 2015-07-15 11:46+0200\n"
|
9 |
+
"Last-Translator: Philippe Bernard <philippe@realfavicongenerator.net>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: fr_FR\n"
|
12 |
"MIME-Version: 1.0\n"
|
13 |
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Generator: Poedit 1.8.2\n"
|
|
|
|
|
|
|
16 |
|
17 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
|
|
|
|
20 |
msgid "Favicon"
|
21 |
msgstr "Favicon"
|
22 |
|
23 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
24 |
+
msgid "Favicon Settings"
|
25 |
+
msgstr "Réglages du favicon"
|
26 |
+
|
27 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
28 |
+
msgid ""
|
29 |
+
"Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you "
|
30 |
+
"feel like something is wrong, please <a href=\\\"mailto:contact@realfavicongenerator.net\\"
|
31 |
+
"\">contact us</a>."
|
32 |
+
msgstr ""
|
33 |
+
"Le nonce n'a pas été reconnu. Cela n'est censé arriver qu'en cas d'attaque XSS. Si vous pensez "
|
34 |
+
"que quelque chose ne va pas, veuillez <a href=\\\"mailto:contact@realfavicongenerator.net\\"
|
35 |
+
"\">nous contacter</a>."
|
36 |
+
|
37 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
38 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
39 |
+
msgid "Cannot create directory %s to store the favicon package"
|
40 |
+
msgstr "Impossible de créer le répertoire %s afin d'y stocker le package du favicon"
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
43 |
+
msgid "An update is available on RealFaviconGenerator:"
|
44 |
+
msgstr "Une mise à jour est disponible sur RealFaviconGenerator"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
47 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
48 |
+
msgstr "Vous voulez peut-être <a href=\"%s\">générer votre favicon</a> à nouveau"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
52 |
+
msgid "Hide this notice"
|
53 |
+
msgstr "Masquer cette notice"
|
54 |
+
|
55 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
57 |
+
msgid "Do not warn me again in case of update"
|
58 |
+
msgstr "Ne plus m'avertir en cas de mise à jour"
|
59 |
+
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
61 |
+
msgid "Your favicon was updated automatically:"
|
62 |
+
msgstr "Votre favicon a été mis à jour automatiquement :"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
65 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
66 |
+
msgstr "Impossible de créer le répertoire %s afin d'y stocker le contenu du package du favicon"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
69 |
+
msgid "Unknown reason"
|
70 |
+
msgstr "Raison inconnu"
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
73 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
74 |
+
msgstr "Erreur lors de la décompression du package du favicon %s dans le répertoire %s"
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
77 |
+
msgid "Cannot download file at %s"
|
78 |
+
msgstr "Impossible de télécharger le fichier à l'adresse %s"
|
79 |
+
|
80 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
81 |
+
msgid "Cannot store downloaded file locally"
|
82 |
+
msgstr "Impossible de stocker localement le fichier téléchargé"
|
83 |
+
|
84 |
+
#: admin/views/appearance.php:11
|
85 |
msgid "Favicon installation in progress. Please wait..."
|
86 |
msgstr "Installation du favicon en cours. Veuillez patienter..."
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:16
|
89 |
msgid "Favicon installed!"
|
90 |
msgstr "Favicon installé !"
|
91 |
+
|
92 |
+
#: admin/views/appearance.php:18
|
93 |
+
msgid "Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
94 |
+
msgstr "Satisfait du résultat ? Voudriez-vous <a %s>évaluer le plugin</a> ?"
|
95 |
+
|
96 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
97 |
msgid "Current favicon"
|
98 |
msgstr "Favicon actuel"
|
99 |
|
100 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
101 |
msgid "The favicon is up and ready."
|
102 |
msgstr "Le favicon est installé."
|
103 |
|
104 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
105 |
+
msgid "<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
106 |
+
msgstr ""
|
107 |
+
"<a %s>Vérifiez votre favicon</a> avec l'outil de vérification de favicon de "
|
108 |
+
"RealFaviconGenerator."
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
111 |
+
msgid "This option works only if your site is accessible from the outside."
|
112 |
+
msgstr "Cette option ne fonctionne que si votre site est accessible depuis l'extérieur."
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:42
|
115 |
msgid "No favicon has been configured yet."
|
116 |
msgstr "Aucun favicon n'a été configuré pour le moment."
|
117 |
|
118 |
+
#: admin/views/appearance.php:62
|
119 |
msgid "Favicon generation"
|
120 |
msgstr "Génération du favicon"
|
121 |
|
122 |
+
#: admin/views/appearance.php:64
|
123 |
msgid "You can replace the existing favicon."
|
124 |
msgstr "Vous pouvez remplacer le favicon existant."
|
125 |
|
126 |
+
#: admin/views/appearance.php:71
|
127 |
msgid "Master picture URL"
|
128 |
msgstr "URL de l'image de base"
|
129 |
|
130 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
131 |
msgid "Select from the Media Library"
|
132 |
msgstr "Sélectionner dans la Bibliothèque de médias"
|
133 |
|
134 |
+
#: admin/views/appearance.php:79
|
135 |
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
136 |
+
msgstr "Utilisez une image carrée en 70x70 minimum (recommandé: 260x260 ou plus)"
|
|
|
137 |
|
138 |
+
#: admin/views/appearance.php:81
|
139 |
msgid ""
|
140 |
+
"If the picture is on your hard drive, you can leave this field blank and upload the picture "
|
141 |
+
"from RealFaviconGenerator."
|
142 |
msgstr ""
|
143 |
+
"Si l'image est sur votre disque dur, vous pouvez laisser ce champ vide et envoyer une image "
|
144 |
+
"depuis l'interface de RealFaviconGenerator"
|
145 |
|
146 |
+
#: admin/views/appearance.php:89
|
147 |
msgid "Favicon files in root directory"
|
148 |
msgstr "Fichiers du favicon dans le répertoire racine"
|
149 |
|
150 |
+
#: admin/views/appearance.php:94
|
151 |
msgid "The plugin always stores the favicon files in a dedicated directory."
|
152 |
msgstr "Le plugin conserve toujours les fichiers du favicon dans un répertoire dédié."
|
153 |
|
154 |
+
#: admin/views/appearance.php:96
|
155 |
msgid ""
|
156 |
+
"However, if this option is enabled, the plugin takes advantage of the permalink feature and "
|
157 |
+
"the favicon files appear to be in the root directory"
|
158 |
msgstr ""
|
159 |
+
"Cependant, si cette option est activée, le plugin tire parti des permaliens pour faire "
|
160 |
+
"apparaitre les fichiers du favicon dans le répertoire racine"
|
|
|
161 |
|
162 |
+
#: admin/views/appearance.php:97
|
163 |
msgid "recommended"
|
164 |
msgstr "recommandé"
|
165 |
|
166 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
167 |
msgid "Generate favicon"
|
168 |
msgstr "Générer le favicon"
|
169 |
|
170 |
+
#: admin/views/appearance.php:200
|
171 |
+
msgid "Preparing master picture..."
|
172 |
+
msgstr "Nous préparons l'image..."
|
173 |
+
|
174 |
+
#: admin/views/appearance.php:257
|
175 |
+
msgid "An error occured"
|
176 |
+
msgstr "Une erreur est survenue"
|
177 |
+
|
178 |
+
#: admin/views/appearance.php:268
|
179 |
+
msgid "An internal error occurred"
|
180 |
+
msgstr "Une erreur interne est survenue"
|
181 |
+
|
182 |
+
#: admin/views/settings.php:13
|
183 |
+
msgid "Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > Favicon</a>"
|
184 |
+
msgstr ""
|
185 |
+
"Voulez-vous mettre en place votre favicon? Allez dans <a href=\"%s\">Apparance > Favicon</a>"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:22
|
188 |
+
msgid "Display update notifications"
|
189 |
+
msgstr "Afficher les notifications de mise à jour"
|
190 |
+
|
191 |
+
#: admin/views/settings.php:27
|
192 |
+
msgid ""
|
193 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new "
|
194 |
+
"version of iOS or a new platform is supported."
|
195 |
+
msgstr ""
|
196 |
+
"Afficher des notifications lorsque RealFaviconGenerator est mis à jour. Par exemple, "
|
197 |
+
"lorsqu'Apple sort une nouvelle version d'iOS ou lorsqu'une nouvelle plateforme est supportée."
|
198 |
+
|
199 |
+
#: admin/views/settings.php:36
|
200 |
+
msgid "Save changes"
|
201 |
+
msgstr "Enregistrer les modifications"
|
202 |
+
|
203 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
204 |
+
msgid "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update"
|
205 |
+
msgstr ""
|
206 |
+
"Afficher le <a href=\"%s\">journal des modifications</a> pour voir le contenu de cette mise à "
|
207 |
+
"jour"
|
208 |
+
|
209 |
#. Plugin Name of the plugin/theme
|
210 |
msgid "Favicon by RealFaviconGenerator"
|
211 |
msgstr "Favicon par RealFaviconGenerator"
|
216 |
|
217 |
#. Description of the plugin/theme
|
218 |
msgid ""
|
219 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, "
|
220 |
+
"Android devices, Windows 8 tablets, etc."
|
221 |
msgstr ""
|
222 |
+
"Créez et installez votre favicon pour toutes les plateformes : PC/Mac évidemment, mais aussi "
|
223 |
+
"iPhone/iPad, appareils Android, tablettes Windows 8, etc."
|
|
|
224 |
|
225 |
#. Author of the plugin/theme
|
226 |
msgid "Philippe Bernard"
|
229 |
#. Author URI of the plugin/theme
|
230 |
msgid "http://realfavicongenerator.net/"
|
231 |
msgstr "http://realfavicongenerator.net/"
|
232 |
+
|
233 |
+
#~ msgid ""
|
234 |
+
#~ "<a href=\"%s\" target=\"_blank\">An update is available</a> on RealFaviconGenerator. You "
|
235 |
+
#~ "might want to <a href=\"%s\">generate your favicon again</a>."
|
236 |
+
#~ msgstr ""
|
237 |
+
#~ "<a href=\"%s\" target=\"_blank\">Une mise à jour est disponible</a> à partir de "
|
238 |
+
#~ "RealFaviconGenerator. Vous souhaitez peut-être <a href=\"%s\">générer votre favicon à "
|
239 |
+
#~ "nouveau</a>."
|
240 |
+
|
241 |
+
#~ msgid " | <a href=\"%s\">Hide this notice</a>"
|
242 |
+
#~ msgstr " | <a href=\"%s\">Masquer cette notification</a>"
|
243 |
+
|
244 |
+
#~ msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
245 |
+
#~ msgstr " | <a href=\"%s\">Ne plus me prévenir en cas de mise à jour</a>"
|
languages/favicon-by-realfavicongenerator-id_ID.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-id_ID.po
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-realfavicongenerator\n"
|
7 |
+
"POT-Creation-Date: 2015-11-22 17:39+0100\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2017-04-19 16:01+0200\n"
|
12 |
+
"Language-Team: ChameleonJohn.com\n"
|
13 |
+
"X-Generator: Poedit 2.0.1\n"
|
14 |
+
"Last-Translator: Jordan Silaen <jordan.silaen@chameleonjohn.com>\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
16 |
+
"Language: id_ID\n"
|
17 |
+
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77 admin/class-favicon-by-realfavicongenerator-admin.php:78 admin/class-favicon-by-realfavicongenerator-admin.php:82
|
19 |
+
msgid "Favicon"
|
20 |
+
msgstr "Favicon"
|
21 |
+
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
23 |
+
msgid "Favicon Settings"
|
24 |
+
msgstr "Pengaturan Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
27 |
+
msgid "Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:contact@realfavicongenerator.net\\\">contact us</a>."
|
28 |
+
msgstr "Nonce tidak diakui. Kasus ini seharusnya terjadi hanya dalam kasus serangan XSS. Jika Anda merasa seperti ada sesuatu yang salah, <a href=\\\"mailto:contact@realfavicongenerator.net\\\"> hubungi kami </a>."
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190 public/class-favicon-by-realfavicongenerator-common.php:414
|
31 |
+
msgid "Cannot create directory %s to store the favicon package"
|
32 |
+
msgstr "Tidak bisa membuat direktori %s untuk menyimpan paket favicon"
|
33 |
+
|
34 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
35 |
+
msgid "An update is available on RealFaviconGenerator:"
|
36 |
+
msgstr "Pembaruan tersedia pada RealFaviconGenerator:"
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
39 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
40 |
+
msgstr "Anda mungkin ingin <a href=\"%s\"> menghasilkan favicon Anda lagi </a>"
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454 admin/class-favicon-by-realfavicongenerator-admin.php:477
|
43 |
+
msgid "Hide this notice"
|
44 |
+
msgstr "Sembunyikan pemberitahuan ini"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458 admin/class-favicon-by-realfavicongenerator-admin.php:481
|
47 |
+
msgid "Do not warn me again in case of update"
|
48 |
+
msgstr "Tidak memperingatkan saya lagi dalam kasus pembaruan"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
51 |
+
msgid "Your favicon was updated automatically:"
|
52 |
+
msgstr "favicon Anda telah diperbarui secara otomatis:"
|
53 |
+
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
55 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
56 |
+
msgstr "Tidak bisa membuat direktori %s untuk menyimpan konten paket favicon"
|
57 |
+
|
58 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
59 |
+
msgid "Unknown reason"
|
60 |
+
msgstr "Alasan yang tidak diketahui"
|
61 |
+
|
62 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
63 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
64 |
+
msgstr "Kesalahan saat unziping paket favicon %s ke direktori %s"
|
65 |
+
|
66 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
67 |
+
msgid "Cannot download file at %s"
|
68 |
+
msgstr "Tidak dapat men-download file pada %s"
|
69 |
+
|
70 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
71 |
+
msgid "Cannot store downloaded file locally"
|
72 |
+
msgstr "tidak bisa menyimpan file yang didownload secara lokal"
|
73 |
+
|
74 |
+
#: admin/views/appearance.php:11
|
75 |
+
msgid "Favicon installation in progress. Please wait..."
|
76 |
+
msgstr "instalasi favicon berlangsung. Mohon tunggu..."
|
77 |
+
|
78 |
+
#: admin/views/appearance.php:16
|
79 |
+
msgid "Favicon installed!"
|
80 |
+
msgstr "Favicon diinstal!"
|
81 |
+
|
82 |
+
#: admin/views/appearance.php:18
|
83 |
+
msgid "Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
84 |
+
msgstr "Apakah Anda suka hasilnya? Jika demikian, apakah Anda ingin <a %s> menilai plugin </a>?"
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
87 |
+
msgid "Current favicon"
|
88 |
+
msgstr "favicon saat ini"
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
91 |
+
msgid "The favicon is up and ready."
|
92 |
+
msgstr "favicon adalah dan siap."
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
95 |
+
msgid "<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
96 |
+
msgstr "<a %s> Periksa favicon Anda </a> dengan RealFaviconGenerator ini favicon checker."
|
97 |
+
|
98 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
99 |
+
msgid "This option works only if your site is accessible from the outside."
|
100 |
+
msgstr "Opsi ini hanya bekerja jika situs Anda dapat diakses dari luar."
|
101 |
+
|
102 |
+
#: admin/views/appearance.php:42
|
103 |
+
msgid "No favicon has been configured yet."
|
104 |
+
msgstr "Tidak ada favicon telah dikonfigurasi belum."
|
105 |
+
|
106 |
+
#: admin/views/appearance.php:62
|
107 |
+
msgid "Favicon generation"
|
108 |
+
msgstr "generasi favicon"
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:64
|
111 |
+
msgid "You can replace the existing favicon."
|
112 |
+
msgstr "Anda dapat mengganti favicon yang ada."
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:71
|
115 |
+
msgid "Master picture URL"
|
116 |
+
msgstr "URL gambar Guru"
|
117 |
+
|
118 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
119 |
+
msgid "Select from the Media Library"
|
120 |
+
msgstr "Pilih dari Perpustakaan Media"
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:79
|
123 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
124 |
+
msgstr "Mengirimkan gambar persegi, setidaknya 70x70 (disarankan: 260x260 atau lebih)"
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:81
|
127 |
+
msgid "If the picture is on your hard drive, you can leave this field blank and upload the picture from RealFaviconGenerator."
|
128 |
+
msgstr "Jika gambar pada hard drive Anda, Anda dapat meninggalkan bidang ini kosong dan meng-upload gambar dari RealFaviconGenerator."
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:89
|
131 |
+
msgid "Favicon files in root directory"
|
132 |
+
msgstr "file favicon di direktori root"
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:94
|
135 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
136 |
+
msgstr "Plugin selalu menyimpan file favicon di direktori khusus."
|
137 |
+
|
138 |
+
#: admin/views/appearance.php:96
|
139 |
+
msgid "However, if this option is enabled, the plugin takes advantage of the permalink feature and the favicon files appear to be in the root directory"
|
140 |
+
msgstr "Namun, jika opsi ini diaktifkan, plugin mengambil keuntungan dari fitur permalink dan file favicon tampak di direktori root"
|
141 |
+
|
142 |
+
#: admin/views/appearance.php:97
|
143 |
+
msgid "recommended"
|
144 |
+
msgstr "direkomendasikan"
|
145 |
+
|
146 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
147 |
+
msgid "Generate favicon"
|
148 |
+
msgstr "menghasilkan favicon"
|
149 |
+
|
150 |
+
#: admin/views/appearance.php:200
|
151 |
+
msgid "Preparing master picture..."
|
152 |
+
msgstr "Mempersiapkan gambar Master ..."
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:257
|
155 |
+
msgid "An error occured"
|
156 |
+
msgstr "Kesalahan terjadi"
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:268
|
159 |
+
msgid "An internal error occurred"
|
160 |
+
msgstr "Terjadi kesalahan internal"
|
161 |
+
|
162 |
+
#: admin/views/settings.php:13
|
163 |
+
msgid "Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > Favicon</a>"
|
164 |
+
msgstr "Apakah Anda ingin setup favicon Anda? Pergi ke <a href=\" %s \"> Penampilan & gt; favicon </a>"
|
165 |
+
|
166 |
+
#: admin/views/settings.php:22
|
167 |
+
msgid "Display update notifications"
|
168 |
+
msgstr "pemberitahuan update tampilan"
|
169 |
+
|
170 |
+
#: admin/views/settings.php:27
|
171 |
+
msgid "Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new version of iOS or a new platform is supported."
|
172 |
+
msgstr "Dapatkan pemberitahuan bila RealFaviconGenerator diperbarui. Sebagai contoh, ketika Apple merilis versi baru dari iOS atau platform baru didukung."
|
173 |
+
|
174 |
+
#: admin/views/settings.php:36
|
175 |
+
msgid "Save changes"
|
176 |
+
msgstr "Simpan perubahan"
|
177 |
+
|
178 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
179 |
+
msgid "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update"
|
180 |
+
msgstr "Kunjungi <a href=\" %s \"> perubahan log RFG </a> untuk melihat isi update"
|
181 |
+
|
182 |
+
#. Plugin Name of the plugin/theme
|
183 |
+
msgid "Favicon by RealFaviconGenerator"
|
184 |
+
msgstr "Favicon oleh RealFaviconGenerator"
|
185 |
+
|
186 |
+
#. Plugin URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
188 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
189 |
+
|
190 |
+
#. Description of the plugin/theme
|
191 |
+
msgid "Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
192 |
+
msgstr "Membuat dan memasang favicon Anda untuk semua platform: PC / Mac tentu saja, tetapi juga iPhone / iPad, perangkat Android, Windows 8 tablet, dll"
|
193 |
+
|
194 |
+
#. Author of the plugin/theme
|
195 |
+
msgid "Philippe Bernard"
|
196 |
+
msgstr "Philippe Bernard"
|
197 |
+
|
198 |
+
#. Author URI of the plugin/theme
|
199 |
+
msgid "http://realfavicongenerator.net/"
|
200 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-nl_NL.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-nl_NL.po
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon door RealFaviconGenerator 1.2.2\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-03-02 15:00+0100\n"
|
13 |
+
"Last-Translator: Axel <axel@eco13.eu>\n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"X-Generator: Poedit 1.7.3\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
+
"Language: nl_NL\n"
|
18 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon Instellingen"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
31 |
+
msgid ""
|
32 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
33 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
34 |
+
"again</a>."
|
35 |
+
msgstr ""
|
36 |
+
"<a href=\"%s\" target=\"_blank\">Een update is beschikbaar</a> op "
|
37 |
+
"RealFaviconGenerator. Misschien wil je <a href=\"%s\">je favicon opnieuw "
|
38 |
+
"genereren</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
41 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
42 |
+
msgstr " | <a href=\"%s\">Verberg dit bericht</a>"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
45 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
46 |
+
msgstr " | <a href=\"%s\">Hou me niet langer op de hoogte van updates</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Favicon wordt geïnstalleerd. Graag even geduld..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon werd geïnstalleerd!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Huidige favicon"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "De favicon is klaar voor gebruik."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Controleer je favicon</a> met de RealFaviconGenerator's favicon "
|
69 |
+
"checker."
|
70 |
+
|
71 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
72 |
+
msgid "This option works only if your site is accessible from the outside."
|
73 |
+
msgstr "Deze optie werkt enkel indien je site van buitenaf toegankelijk is."
|
74 |
+
|
75 |
+
#: admin/views/appearance.php:36
|
76 |
+
msgid "No favicon has been configured yet."
|
77 |
+
msgstr "Er werd nog geen favicon geconfigureerd."
|
78 |
+
|
79 |
+
#: admin/views/appearance.php:56
|
80 |
+
msgid "Favicon generation"
|
81 |
+
msgstr "Faviconcreatie"
|
82 |
+
|
83 |
+
#: admin/views/appearance.php:58
|
84 |
+
msgid "You can replace the existing favicon."
|
85 |
+
msgstr "Je kunt de bestaande favicon vervangen."
|
86 |
+
|
87 |
+
#: admin/views/appearance.php:65
|
88 |
+
msgid "Master picture URL"
|
89 |
+
msgstr "URL bronafbeelding"
|
90 |
+
|
91 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
92 |
+
msgid "Select from the Media Library"
|
93 |
+
msgstr "Selecteer uit de mediabibliotheek"
|
94 |
+
|
95 |
+
#: admin/views/appearance.php:73
|
96 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
97 |
+
msgstr ""
|
98 |
+
"Gebruik een vierkant beeld van min. 70x70px (aanbevolen: 260x260 of meer)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Staat de afbeelding op je harde schijf, dan kun je dit veld leeg laten en "
|
106 |
+
"het beeld vanaf RealFaviconGenerator uploaden."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Faviconbestanden in de root"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr "De plugin slaat de faviconbestanden steeds op in specifieke map."
|
115 |
+
|
116 |
+
#: admin/views/appearance.php:90
|
117 |
+
msgid ""
|
118 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
119 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
120 |
+
msgstr ""
|
121 |
+
"Indien deze optie is ingeschakeld, maakt de plugin evenwel gebruik van de "
|
122 |
+
"permalink feature, waardoor het lijkt alsof de faviconbestanden in de root "
|
123 |
+
"te vinden zijn"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:91
|
126 |
+
msgid "recommended"
|
127 |
+
msgstr "aanbevolen"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:100
|
130 |
+
msgid "Generate favicon"
|
131 |
+
msgstr "Genereer favicon"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:189
|
134 |
+
msgid "An error occured"
|
135 |
+
msgstr "Er trad een fout op"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:200
|
138 |
+
msgid "An internal error occurred"
|
139 |
+
msgstr "Er trad een interne fout op"
|
140 |
+
|
141 |
+
#: admin/views/settings.php:13
|
142 |
+
msgid ""
|
143 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
144 |
+
"Favicon</a>"
|
145 |
+
msgstr ""
|
146 |
+
"Wil je je favicon installeren? Ga naar <a href=\"%s\">Weergave > Favicon</"
|
147 |
+
"a>"
|
148 |
+
|
149 |
+
#: admin/views/settings.php:22
|
150 |
+
msgid "Display update notifications"
|
151 |
+
msgstr "Toon updatemeldingen"
|
152 |
+
|
153 |
+
#: admin/views/settings.php:27
|
154 |
+
msgid ""
|
155 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
156 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
157 |
+
msgstr ""
|
158 |
+
"Ontvang een melding als RealFaviconGenerator wordt bijgewerkt, bijvoorbeeld "
|
159 |
+
"als Apple een nieuwe iOS versie lanceert, of als een nieuw platform wordt "
|
160 |
+
"ondersteund."
|
161 |
+
|
162 |
+
#: admin/views/settings.php:36
|
163 |
+
msgid "Save changes"
|
164 |
+
msgstr "Wijzigingen opslaan"
|
165 |
+
|
166 |
+
#. Plugin Name of the plugin/theme
|
167 |
+
msgid "Favicon by RealFaviconGenerator"
|
168 |
+
msgstr "Favicon door RealFaviconGenerator"
|
169 |
+
|
170 |
+
#. Plugin URI of the plugin/theme
|
171 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
172 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
173 |
+
|
174 |
+
#. Description of the plugin/theme
|
175 |
+
msgid ""
|
176 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
177 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
178 |
+
msgstr ""
|
179 |
+
"Maak en installeer je favicon voor alle platformen: PC en Mac natuurlijk, "
|
180 |
+
"maar ook iPhone en iPad, Androidapparaten, Windows 8 tablets, etc."
|
181 |
+
|
182 |
+
#. Author of the plugin/theme
|
183 |
+
msgid "Philippe Bernard"
|
184 |
+
msgstr "Philippe Bernard"
|
185 |
+
|
186 |
+
#. Author URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/"
|
188 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-pl_PL.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-pl_PL.po
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2016-04-10 20:35+0200\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2016-04-10 21:09+0200\n"
|
13 |
+
"Language-Team: \n"
|
14 |
+
"X-Generator: Poedit 1.8.7\n"
|
15 |
+
"Last-Translator: Maciej Gryniuk <maciejka45@gmail.com>\n"
|
16 |
+
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n"
|
17 |
+
"%100<10 || n%100>=20) ? 1 : 2);\n"
|
18 |
+
"Language: pl\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Ustawienia favicon"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
31 |
+
msgid ""
|
32 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
33 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
34 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
35 |
+
msgstr ""
|
36 |
+
"Identyfikator jednorazowy nie został rozpoznany. Prawdopodobnie jedyną tego "
|
37 |
+
"przyczyną może być atak XSS. Jeżeli sądzisz, że coś działa nieprawidłowo, "
|
38 |
+
"prosimy o <a href=\\\"mailto:contact@realfavicongenerator.net\\\">kontakt</"
|
39 |
+
"a>."
|
40 |
+
|
41 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
42 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
43 |
+
msgid "Cannot create directory %s to store the favicon package"
|
44 |
+
msgstr "Nie można utworzyć katalogu %s do przechowania paczki favicon"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
47 |
+
msgid "An update is available on RealFaviconGenerator:"
|
48 |
+
msgstr "Dostępna aktualizacja na RealFaviconGenerator:"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
51 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
52 |
+
msgstr "Być może zechcesz <a href=\"%s\">ponownie wygenerować favicon</a>"
|
53 |
+
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
55 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
56 |
+
msgid "Hide this notice"
|
57 |
+
msgstr "Ukryj to powiadomienie"
|
58 |
+
|
59 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
61 |
+
msgid "Do not warn me again in case of update"
|
62 |
+
msgstr "Nie powiadamiaj mnie ponownie"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
65 |
+
msgid "Your favicon was updated automatically:"
|
66 |
+
msgstr "Twój favicon został automatycznie zaktualizowany:"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
69 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
70 |
+
msgstr ""
|
71 |
+
"Nie można utworzyć katalogu %s do przechowania zawartości paczki favicon"
|
72 |
+
|
73 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
74 |
+
msgid "Unknown reason"
|
75 |
+
msgstr "Nieznany powód"
|
76 |
+
|
77 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
78 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
79 |
+
msgstr "Błąd podczas rozpakowywania paczki favicon %s do katalogu %s"
|
80 |
+
|
81 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
82 |
+
msgid "Cannot download file at %s"
|
83 |
+
msgstr "Nie można pobrać pliku z %s"
|
84 |
+
|
85 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
86 |
+
msgid "Cannot store downloaded file locally"
|
87 |
+
msgstr "Nie można przechować pobranego pliku lokalnie"
|
88 |
+
|
89 |
+
#: admin/views/appearance.php:11
|
90 |
+
msgid "Favicon installation in progress. Please wait..."
|
91 |
+
msgstr "Instalacja favicon w toku. Proszę czekać..."
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:16
|
94 |
+
msgid "Favicon installed!"
|
95 |
+
msgstr "Favicon zainstalowany!"
|
96 |
+
|
97 |
+
#: admin/views/appearance.php:18
|
98 |
+
msgid ""
|
99 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
100 |
+
msgstr ""
|
101 |
+
"Podoba Ci się osiągnięty rezultat? Jeżeli tak, będziemy wdzięczni za <a "
|
102 |
+
"%s>ocenę wtyczki</a>."
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
105 |
+
msgid "Current favicon"
|
106 |
+
msgstr "Bieżący favicon"
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
109 |
+
msgid "The favicon is up and ready."
|
110 |
+
msgstr "Favicon jest zainstalowany."
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
113 |
+
msgid ""
|
114 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
115 |
+
msgstr "<a %s>Sprawdź swój favicon</a> poprzez system RealFaviconGenerator."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
118 |
+
msgid "This option works only if your site is accessible from the outside."
|
119 |
+
msgstr ""
|
120 |
+
"Ta opcja zadziała, tylko jeżeli Twoja strona jest publicznie dostępna."
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:42
|
123 |
+
msgid "No favicon has been configured yet."
|
124 |
+
msgstr "Jeszcze nie skonfigurowano favicon."
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:62
|
127 |
+
msgid "Favicon generation"
|
128 |
+
msgstr "Tworzenie favicon'a"
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:64
|
131 |
+
msgid "You can replace the existing favicon."
|
132 |
+
msgstr "Możesz zastąpić bieżącego favicon'a."
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:71
|
135 |
+
msgid "Master picture URL"
|
136 |
+
msgstr "Adres URL głównej grafiki"
|
137 |
+
|
138 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
139 |
+
msgid "Select from the Media Library"
|
140 |
+
msgstr "Wybierz z Biblioteki mediów"
|
141 |
+
|
142 |
+
#: admin/views/appearance.php:79
|
143 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
144 |
+
msgstr ""
|
145 |
+
"Prześlij kwadratową grafikę, wymiarów przynajmniej 70x70 (zalecane: 260x260 "
|
146 |
+
"lub więcej)"
|
147 |
+
|
148 |
+
#: admin/views/appearance.php:81
|
149 |
+
msgid ""
|
150 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
151 |
+
"upload the picture from RealFaviconGenerator."
|
152 |
+
msgstr ""
|
153 |
+
"Jeżeli grafika znajduje się na Twoim dysku twardym, możesz zostawić to pole "
|
154 |
+
"puste i przesłać ją poprzez RealFaviconGenerator."
|
155 |
+
|
156 |
+
#: admin/views/appearance.php:89
|
157 |
+
msgid "Favicon files in root directory"
|
158 |
+
msgstr "Pliki favicon w katalogu głównym"
|
159 |
+
|
160 |
+
#: admin/views/appearance.php:94
|
161 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
162 |
+
msgstr "Wtyczka zawsze przechowuje pliki favicon w wydzielonym katalogu."
|
163 |
+
|
164 |
+
#: admin/views/appearance.php:96
|
165 |
+
msgid ""
|
166 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
167 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
168 |
+
msgstr ""
|
169 |
+
"Jednakże, jeżeli aktywujesz tę opcję, wtyczka skorzysta ze struktury "
|
170 |
+
"bezpośrednich odnośników i pliki favicon pojawią się w katalogu głównym"
|
171 |
+
|
172 |
+
#: admin/views/appearance.php:97
|
173 |
+
msgid "recommended"
|
174 |
+
msgstr "zalecane"
|
175 |
+
|
176 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
177 |
+
msgid "Generate favicon"
|
178 |
+
msgstr "Stwórz favicon"
|
179 |
+
|
180 |
+
#: admin/views/appearance.php:200
|
181 |
+
msgid "Preparing master picture..."
|
182 |
+
msgstr "Przygotowywanie głównej grafiki..."
|
183 |
+
|
184 |
+
#: admin/views/appearance.php:257
|
185 |
+
msgid "An error occured"
|
186 |
+
msgstr "Wystąpił błąd"
|
187 |
+
|
188 |
+
#: admin/views/appearance.php:268
|
189 |
+
msgid "An internal error occurred"
|
190 |
+
msgstr "Wystąpił błąd wewnętrzny"
|
191 |
+
|
192 |
+
#: admin/views/settings.php:13
|
193 |
+
msgid ""
|
194 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
195 |
+
"Favicon</a>"
|
196 |
+
msgstr ""
|
197 |
+
"Chcesz zainstalować swój favicon? Przejdź do <a href=\"%s\">Wygląd > "
|
198 |
+
"Favicon</a>"
|
199 |
+
|
200 |
+
#: admin/views/settings.php:22
|
201 |
+
msgid "Display update notifications"
|
202 |
+
msgstr "Wyświetlaj powiadomienia o aktualizacji"
|
203 |
+
|
204 |
+
#: admin/views/settings.php:27
|
205 |
+
msgid ""
|
206 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
207 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
208 |
+
msgstr ""
|
209 |
+
"Otrzymuj powiadomienia o aktualizacjach RealFaviconGenerator. Przykładowo - "
|
210 |
+
"Apple wydało nową wersję iOS lub wspieramy nową platformę."
|
211 |
+
|
212 |
+
#: admin/views/settings.php:36
|
213 |
+
msgid "Save changes"
|
214 |
+
msgstr "Zapisz zmiany"
|
215 |
+
|
216 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
217 |
+
msgid ""
|
218 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
219 |
+
"update"
|
220 |
+
msgstr ""
|
221 |
+
"Przejdź do <a href=\"%s\">dziennika zmian RFG</a>, aby przejrzeć treść "
|
222 |
+
"aktualizacji"
|
223 |
+
|
224 |
+
#. Plugin Name of the plugin/theme
|
225 |
+
msgid "Favicon by RealFaviconGenerator"
|
226 |
+
msgstr "Favicon od RealFaviconGenerator"
|
227 |
+
|
228 |
+
#. Plugin URI of the plugin/theme
|
229 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
230 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
231 |
+
|
232 |
+
#. Description of the plugin/theme
|
233 |
+
msgid ""
|
234 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
235 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
236 |
+
msgstr ""
|
237 |
+
"Twórz i instaluj favicon'a dla wszystkich platform: PC/Mac, iPhone/iPad, "
|
238 |
+
"Android, Windows 8, tablety itp."
|
239 |
+
|
240 |
+
#. Author of the plugin/theme
|
241 |
+
msgid "Philippe Bernard"
|
242 |
+
msgstr "Philippe Bernard"
|
243 |
+
|
244 |
+
#. Author URI of the plugin/theme
|
245 |
+
msgid "http://realfavicongenerator.net/"
|
246 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-pt_BR.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-pt_BR.po
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator\n"
|
4 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
5 |
+
"realfavicongenerator\n"
|
6 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
7 |
+
"PO-Revision-Date: \n"
|
8 |
+
"Last-Translator: Techload <contato@techload.com.br>\n"
|
9 |
+
"Language-Team: Techload\n"
|
10 |
+
"Language: pt_BR\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"X-Generator: Poedit 1.6.9\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
16 |
+
"X-Poedit-KeywordsList: _;__e\n"
|
17 |
+
"X-Poedit-Basepath: .\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
22 |
+
msgid "Favicon"
|
23 |
+
msgstr "Favicon"
|
24 |
+
|
25 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
26 |
+
msgid "Favicon Settings"
|
27 |
+
msgstr "Configurações do Favicon"
|
28 |
+
|
29 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
30 |
+
msgid ""
|
31 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
32 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
33 |
+
"again</a>."
|
34 |
+
msgstr ""
|
35 |
+
"<a href=\"%s\" target=\"_blank\">Uma atualização está disponível</a> em "
|
36 |
+
"RealFaviconGenerator. Você pode querer <a href=\"%s\">gerar seu favicon "
|
37 |
+
"novamente</a>."
|
38 |
+
|
39 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
40 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
41 |
+
msgstr " | <a href=\"%s\">Ocultar este aviso</a>"
|
42 |
+
|
43 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
44 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
45 |
+
msgstr ""
|
46 |
+
" | <a href=\"%s\">Não me avisar novamente quando houver atualizações</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Instalação do Favicon em andamento. Por favor, aguarde..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon instalado!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Favicon atual"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "O favicon está pronto."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Verifique o seu favicon</a> com o verificador de favicon do "
|
69 |
+
"RealFaviconGenerator."
|
70 |
+
|
71 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
72 |
+
msgid "This option works only if your site is accessible from the outside."
|
73 |
+
msgstr "Esta opção só funciona se o site está acessível publicamente."
|
74 |
+
|
75 |
+
#: admin/views/appearance.php:36
|
76 |
+
msgid "No favicon has been configured yet."
|
77 |
+
msgstr "Nenhum favicon foi configurado ainda."
|
78 |
+
|
79 |
+
#: admin/views/appearance.php:56
|
80 |
+
msgid "Favicon generation"
|
81 |
+
msgstr "Geração do Favicon"
|
82 |
+
|
83 |
+
#: admin/views/appearance.php:58
|
84 |
+
msgid "You can replace the existing favicon."
|
85 |
+
msgstr "Você pode substituir o favicon existente."
|
86 |
+
|
87 |
+
#: admin/views/appearance.php:65
|
88 |
+
msgid "Master picture URL"
|
89 |
+
msgstr "URL da imagem"
|
90 |
+
|
91 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
92 |
+
msgid "Select from the Media Library"
|
93 |
+
msgstr "Selecione a partir da Biblioteca de Mídia"
|
94 |
+
|
95 |
+
#: admin/views/appearance.php:73
|
96 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
97 |
+
msgstr ""
|
98 |
+
"Enviar uma imagem quadrada, pelo menos 70x70 (recomendado: 260x260 ou mais)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Se a imagem estiver em seu disco rígido, você pode deixar este campo em "
|
106 |
+
"branco e fazer o upload da imagem a partir do RealFaviconGenerator."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Arquivos do favicon no diretório raiz"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr ""
|
115 |
+
"O plugin sempre armazena os arquivos favicon em um diretório específico."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:90
|
118 |
+
msgid ""
|
119 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
120 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
121 |
+
msgstr ""
|
122 |
+
"No entanto, se esta opção estiver habilitada, o plugin aproveita os recursos "
|
123 |
+
"do permalink e os arquivos favicon parecem estar no diretório raiz"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:91
|
126 |
+
msgid "recommended"
|
127 |
+
msgstr "recomendado"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:100
|
130 |
+
msgid "Generate favicon"
|
131 |
+
msgstr "Gerar o favicon"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:189
|
134 |
+
msgid "An error occured"
|
135 |
+
msgstr "Ocorreu um erro"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:200
|
138 |
+
msgid "An internal error occurred"
|
139 |
+
msgstr "Ocorreu um erro interno"
|
140 |
+
|
141 |
+
#: admin/views/settings.php:13
|
142 |
+
msgid ""
|
143 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
144 |
+
"Favicon</a>"
|
145 |
+
msgstr ""
|
146 |
+
"Deseja configurar seu favicon? Vá até <a href=\"%s\">Aparência > Favicon</"
|
147 |
+
"a>"
|
148 |
+
|
149 |
+
#: admin/views/settings.php:22
|
150 |
+
msgid "Display update notifications"
|
151 |
+
msgstr "Exibir notificações de atualizações"
|
152 |
+
|
153 |
+
#: admin/views/settings.php:27
|
154 |
+
msgid ""
|
155 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
156 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
157 |
+
msgstr ""
|
158 |
+
"Receber notificações quando o RealFaviconGenerator for atualizado. Por "
|
159 |
+
"exemplo, quando a Apple lançar uma nova versão do iOS ou quando uma nova "
|
160 |
+
"plataforma for suportada."
|
161 |
+
|
162 |
+
#: admin/views/settings.php:36
|
163 |
+
msgid "Save changes"
|
164 |
+
msgstr "Salvar mudanças"
|
165 |
+
|
166 |
+
#. Plugin Name of the plugin/theme
|
167 |
+
msgid "Favicon by RealFaviconGenerator"
|
168 |
+
msgstr "Favicon por RealFaviconGenerator"
|
169 |
+
|
170 |
+
#. Plugin URI of the plugin/theme
|
171 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
172 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
173 |
+
|
174 |
+
#. Description of the plugin/theme
|
175 |
+
msgid ""
|
176 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
177 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
178 |
+
msgstr ""
|
179 |
+
"Crie e instale o seu favicon para todas as plataformas: PC/Mac, é claro, mas "
|
180 |
+
"também para o iPhone/iPad, dispositivos Android, tablets com Windows 8, etc."
|
181 |
+
|
182 |
+
#. Author of the plugin/theme
|
183 |
+
msgid "Philippe Bernard"
|
184 |
+
msgstr "Philippe Bernard"
|
185 |
+
|
186 |
+
#. Author URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/"
|
188 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-ru_RU.mo
ADDED
Binary file
|
languages/favicon-by-realfavicongenerator-ru_RU.po
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Development (trunk) in Russian
|
2 |
+
# This file is distributed under the same license as the Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2016-05-17 16:05+0300\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
10 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
11 |
+
"X-Generator: Poedit 1.8.7\n"
|
12 |
+
"Project-Id-Version: Development (trunk)\n"
|
13 |
+
"POT-Creation-Date: \n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"Last-Translator: \n"
|
16 |
+
"Language: ru_RU\n"
|
17 |
+
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
21 |
+
msgid "Favicon"
|
22 |
+
msgstr "Favicon"
|
23 |
+
|
24 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
25 |
+
msgid "Favicon Settings"
|
26 |
+
msgstr "Настройки Favicon"
|
27 |
+
|
28 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:174
|
29 |
+
msgid ""
|
30 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
31 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
32 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
33 |
+
msgstr ""
|
34 |
+
"Специальное слово не распознается. Такое происхоит только в случае атак "
|
35 |
+
"XSS. Если Вам кажется, что что-то не так, пожалуйста, <a href=\"\\\"mailto:"
|
36 |
+
"contact@realfavicongenerator.net\\\"\">свяжитесь с нами</a>."
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
39 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:415
|
40 |
+
msgid "Cannot create directory %s to store the favicon package"
|
41 |
+
msgstr "Не удается создать каталог %s для хранения пакета значков"
|
42 |
+
|
43 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:434
|
44 |
+
msgid "An update is available on RealFaviconGenerator:"
|
45 |
+
msgstr "Обновление доступно на RealFaviconGenerator:"
|
46 |
+
|
47 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:440
|
48 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
49 |
+
msgstr "Может потребоваться <a href=\"%s\">создать свой значок снова</a>"
|
50 |
+
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:446
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:469
|
53 |
+
msgid "Hide this notice"
|
54 |
+
msgstr "Скрыть это уведомление"
|
55 |
+
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:450
|
57 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:473
|
58 |
+
msgid "Do not warn me again in case of update"
|
59 |
+
msgstr "Не предупреждать в случае обновления"
|
60 |
+
|
61 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:463
|
62 |
+
msgid "Your favicon was updated automatically:"
|
63 |
+
msgstr "Ваш значок был обновлен автоматически:"
|
64 |
+
|
65 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
66 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
67 |
+
msgstr "Не удается создать каталог %s для хранения содержимого пакета значков"
|
68 |
+
|
69 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
70 |
+
msgid "Unknown reason"
|
71 |
+
msgstr "Неизвестная причина"
|
72 |
+
|
73 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
74 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
75 |
+
msgstr "Ошибка при распаковке favicon пакета в директорию % S"
|
76 |
+
|
77 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
78 |
+
msgid "Cannot download file at %s"
|
79 |
+
msgstr "Не удается загрузить файл на %s"
|
80 |
+
|
81 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
82 |
+
msgid "Cannot store downloaded file locally"
|
83 |
+
msgstr "Не удается сохранить загруженный файл локально"
|
84 |
+
|
85 |
+
#: admin/views/appearance.php:11
|
86 |
+
msgid "Favicon installation in progress. Please wait..."
|
87 |
+
msgstr "Идет установка Favicon. Пожалуйста, подождите..."
|
88 |
+
|
89 |
+
#: admin/views/appearance.php:16
|
90 |
+
msgid "Favicon installed!"
|
91 |
+
msgstr "Favicon установлен!"
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:18
|
94 |
+
msgid ""
|
95 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
96 |
+
msgstr ""
|
97 |
+
"Вам нравится реультат? Если да, то вам хотелось бы <a %s> оценить плагин </"
|
98 |
+
"a>?"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
101 |
+
msgid "Current favicon"
|
102 |
+
msgstr "Текущий значок"
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
105 |
+
msgid "The favicon is up and ready."
|
106 |
+
msgstr "Favicon установлен и готов к работе."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
109 |
+
msgid ""
|
110 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
111 |
+
msgstr "<a %s> Проверьте favicon</a> через RealFaviconGenerator favicon."
|
112 |
+
|
113 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
114 |
+
msgid "This option works only if your site is accessible from the outside."
|
115 |
+
msgstr "Эта опция работает только для сайтов, которые доступны извне."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:42
|
118 |
+
msgid "No favicon has been configured yet."
|
119 |
+
msgstr "Ни один значок пока не настроен."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:62
|
122 |
+
msgid "Favicon generation"
|
123 |
+
msgstr "Favicon генерация "
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:64
|
126 |
+
msgid "You can replace the existing favicon."
|
127 |
+
msgstr "Вы можете заменить существующий фавикон."
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:71
|
130 |
+
msgid "Master picture URL"
|
131 |
+
msgstr "URL главного изображения"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
134 |
+
msgid "Select from the Media Library"
|
135 |
+
msgstr "Выберите из библиотеки мультимедиа"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:79
|
138 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
139 |
+
msgstr ""
|
140 |
+
"Добавьте квадратную картину размером не менее 70 х 70 (рекомендованный "
|
141 |
+
"размер: 260x260 или более)"
|
142 |
+
|
143 |
+
#: admin/views/appearance.php:81
|
144 |
+
msgid ""
|
145 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
146 |
+
"upload the picture from RealFaviconGenerator."
|
147 |
+
msgstr ""
|
148 |
+
"Если изображение находится на вашем жестком диске, вы можете оставить это "
|
149 |
+
"поле пустым и загрузить изображение из RealFaviconGenerator."
|
150 |
+
|
151 |
+
#: admin/views/appearance.php:89
|
152 |
+
msgid "Favicon files in root directory"
|
153 |
+
msgstr "Favicon файлы в корневой директории"
|
154 |
+
|
155 |
+
#: admin/views/appearance.php:94
|
156 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
157 |
+
msgstr "Плагин всегда сохраняет favicon файлы в отдельную директорию."
|
158 |
+
|
159 |
+
#: admin/views/appearance.php:96
|
160 |
+
msgid ""
|
161 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
162 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
163 |
+
msgstr ""
|
164 |
+
"Однако, если эта опция включена, плагин использует преимущества функции "
|
165 |
+
"постоянной ссылки и фавикон файлы появятся в корневом каталоге"
|
166 |
+
|
167 |
+
#: admin/views/appearance.php:97
|
168 |
+
msgid "recommended"
|
169 |
+
msgstr "рекомендуется"
|
170 |
+
|
171 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
172 |
+
msgid "Generate favicon"
|
173 |
+
msgstr "Генерировать favicon"
|
174 |
+
|
175 |
+
#: admin/views/appearance.php:200
|
176 |
+
msgid "Preparing master picture..."
|
177 |
+
msgstr "Подготовка главного изображения ..."
|
178 |
+
|
179 |
+
#: admin/views/appearance.php:257
|
180 |
+
msgid "An error occured"
|
181 |
+
msgstr "Произошла ошибка"
|
182 |
+
|
183 |
+
#: admin/views/appearance.php:268
|
184 |
+
msgid "An internal error occurred"
|
185 |
+
msgstr "Произошла внутренняя ошибка"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:13
|
188 |
+
msgid ""
|
189 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
190 |
+
"Favicon</a>"
|
191 |
+
msgstr ""
|
192 |
+
"Вы хотите настроить свой favicon? Перейти к <a href=\"%s\"> Appearance > "
|
193 |
+
"Favicon </a>"
|
194 |
+
|
195 |
+
#: admin/views/settings.php:22
|
196 |
+
msgid "Display update notifications"
|
197 |
+
msgstr "Отображать уведомления об обновлениях"
|
198 |
+
|
199 |
+
#: admin/views/settings.php:27
|
200 |
+
msgid ""
|
201 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
202 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
203 |
+
msgstr ""
|
204 |
+
"Получать уведомления, когда RealFaviconGenerator обновляется. Например, "
|
205 |
+
"когда компания Apple выпускает новую версию iOS или поддержку новой "
|
206 |
+
"платформы."
|
207 |
+
|
208 |
+
#: admin/views/settings.php:36
|
209 |
+
msgid "Save changes"
|
210 |
+
msgstr "Сохранить изменения"
|
211 |
+
|
212 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
213 |
+
msgid ""
|
214 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
215 |
+
"update"
|
216 |
+
msgstr ""
|
217 |
+
"Посетите <a href=\"%s\">журнал изменений RFG</a> чтобы просмотреть "
|
218 |
+
"содержимое обновления"
|
219 |
+
|
220 |
+
#. Plugin Name of the plugin/theme
|
221 |
+
msgid "Favicon by RealFaviconGenerator"
|
222 |
+
msgstr "Favicon от RealFaviconGenerator"
|
223 |
+
|
224 |
+
#. Plugin URI of the plugin/theme
|
225 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
226 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
227 |
+
|
228 |
+
#. Description of the plugin/theme
|
229 |
+
msgid ""
|
230 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
231 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
232 |
+
msgstr ""
|
233 |
+
"Создайте и установите фавикон на всех платформах: конечно, PC / Mac, но так "
|
234 |
+
"же и на iPhone / Ipad, Android устройствах, Windows 8 планшетах и т.д."
|
235 |
+
|
236 |
+
#. Author of the plugin/theme
|
237 |
+
msgid "Philippe Bernard"
|
238 |
+
msgstr "Филиппе Бернар"
|
239 |
+
|
240 |
+
#. Author URI of the plugin/theme
|
241 |
+
msgid "http://realfavicongenerator.net/"
|
242 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator-sv_SE.mo
CHANGED
Binary file
|
languages/favicon-by-realfavicongenerator-sv_SE.po
CHANGED
@@ -1,124 +1,186 @@
|
|
1 |
-
# Copyright (C) 2014 Favicon by RealFaviconGenerator
|
2 |
-
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"Project-Id-Version: Favicon by RealFaviconGenerator 1.0.4\n"
|
6 |
-
"Report-Msgid-Bugs-To: http://wordpress.org/
|
7 |
-
"realfavicongenerator\n"
|
8 |
-
"POT-Creation-Date: 2014-
|
9 |
-
"
|
10 |
-
"
|
11 |
-
"
|
12 |
-
"
|
13 |
-
"
|
14 |
-
"
|
15 |
-
"
|
16 |
-
"X-Generator: Poedit 1.6.
|
17 |
-
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
-
"X-Poedit-SourceCharset: UTF-8\n"
|
19 |
-
|
20 |
-
#: admin/class-favicon-by-realfavicongenerator-admin.php:
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
#: admin/
|
41 |
-
msgid "
|
42 |
-
msgstr "
|
43 |
-
|
44 |
-
#: admin/
|
45 |
-
msgid "
|
46 |
-
msgstr "
|
47 |
-
|
48 |
-
#: admin/views/
|
49 |
-
msgid "Favicon
|
50 |
-
msgstr "
|
51 |
-
|
52 |
-
#: admin/views/
|
53 |
-
msgid "
|
54 |
-
msgstr "
|
55 |
-
|
56 |
-
#: admin/views/
|
57 |
-
msgid "
|
58 |
-
msgstr "
|
59 |
-
|
60 |
-
#: admin/views/
|
61 |
-
msgid "
|
62 |
-
msgstr "
|
63 |
-
|
64 |
-
#: admin/views/
|
65 |
-
msgid "
|
66 |
-
|
67 |
-
|
68 |
-
"
|
69 |
-
|
70 |
-
#: admin/views/
|
71 |
-
msgid ""
|
72 |
-
"
|
73 |
-
|
74 |
-
|
75 |
-
"
|
76 |
-
"
|
77 |
-
|
78 |
-
#: admin/views/
|
79 |
-
msgid "Favicon
|
80 |
-
msgstr "
|
81 |
-
|
82 |
-
#: admin/views/
|
83 |
-
msgid "
|
84 |
-
msgstr "
|
85 |
-
|
86 |
-
#: admin/views/
|
87 |
-
msgid ""
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
"
|
92 |
-
"
|
93 |
-
|
94 |
-
#: admin/views/
|
95 |
-
msgid "recommended"
|
96 |
-
msgstr "
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
msgstr "
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
"
|
114 |
-
msgstr ""
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
msgstr "
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.0.4\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
9 |
+
"PO-Revision-Date: 2014-11-15 09:54+0100\n"
|
10 |
+
"Last-Translator: Linus Wileryd <linus@cutup.se>\n"
|
11 |
+
"Language-Team: Linus <linus@cutup.se>\n"
|
12 |
+
"Language: sv_SE\n"
|
13 |
+
"MIME-Version: 1.0\n"
|
14 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
15 |
+
"Content-Transfer-Encoding: 8bit\n"
|
16 |
+
"X-Generator: Poedit 1.6.10\n"
|
17 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon-inställningar"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
31 |
+
msgid ""
|
32 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
33 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
34 |
+
"again</a>."
|
35 |
+
msgstr ""
|
36 |
+
"<a href=\"%s\" target=\"_blank\">En uppdatering finns tillgänglig</a> hos "
|
37 |
+
"RealFaviconGenerator. Du vill förmodligen <a href=\"%s\">generera din "
|
38 |
+
"favicon på nytt</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
41 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
42 |
+
msgstr " | <a href=\"%s\">Dölj denna notis</a>"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
45 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
46 |
+
msgstr " | <a href=\"%s\">Varna mig inte igen om ev. uppdateringar</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Favicon installeras just nu. Var vänlig vänta..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon installerad!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Aktuell favicon"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "Favicon är uppladdad och redo."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Granska din favicon</a> med RealFaviconGenerators favicon-granskare."
|
69 |
+
|
70 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
71 |
+
msgid "This option works only if your site is accessible from the outside."
|
72 |
+
msgstr "Detta tillval fungerar endast om din sajt är åtkomlig utifrån."
|
73 |
+
|
74 |
+
#: admin/views/appearance.php:36
|
75 |
+
msgid "No favicon has been configured yet."
|
76 |
+
msgstr "Ingen favicon har konfigurerats ännu."
|
77 |
+
|
78 |
+
#: admin/views/appearance.php:56
|
79 |
+
msgid "Favicon generation"
|
80 |
+
msgstr "Genererande av favicon"
|
81 |
+
|
82 |
+
#: admin/views/appearance.php:58
|
83 |
+
msgid "You can replace the existing favicon."
|
84 |
+
msgstr "Du kan ersätta den favicon som existerar."
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:65
|
87 |
+
msgid "Master picture URL"
|
88 |
+
msgstr "Originalbildlänk"
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
91 |
+
msgid "Select from the Media Library"
|
92 |
+
msgstr "Välj från Mediabiblioteket"
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:73
|
95 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
96 |
+
msgstr ""
|
97 |
+
"Skicka in en kvadratisk bild, minst 70x70 (rekommenderat: 260x260 eller "
|
98 |
+
"högre)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Om bilden finns på din hårddisk kan du lämna fältet blankt och ladda upp "
|
106 |
+
"bilden från RealFaviconGenerator."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Favicon-filer i rotmappen"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr "Tillägget sparar alltid favicon-filerna i en dedikerad mapp."
|
115 |
+
|
116 |
+
#: admin/views/appearance.php:90
|
117 |
+
msgid ""
|
118 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
119 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
120 |
+
msgstr ""
|
121 |
+
"Hursomhelst, om detta tillval är aktiverat använder tillägget sig av "
|
122 |
+
"permalänk-funktionen och favicon-filerna ser ut att finnas i rotmappen"
|
123 |
+
|
124 |
+
#: admin/views/appearance.php:91
|
125 |
+
msgid "recommended"
|
126 |
+
msgstr "rekommenderat"
|
127 |
+
|
128 |
+
#: admin/views/appearance.php:100
|
129 |
+
msgid "Generate favicon"
|
130 |
+
msgstr "Generera favicon"
|
131 |
+
|
132 |
+
#: admin/views/appearance.php:189
|
133 |
+
msgid "An error occured"
|
134 |
+
msgstr "Ett fel uppstod"
|
135 |
+
|
136 |
+
#: admin/views/appearance.php:200
|
137 |
+
msgid "An internal error occurred"
|
138 |
+
msgstr "Ett internt fel uppstod"
|
139 |
+
|
140 |
+
#: admin/views/settings.php:13
|
141 |
+
msgid ""
|
142 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
143 |
+
"Favicon</a>"
|
144 |
+
msgstr ""
|
145 |
+
"Vill du ställa in din favicon? Gå till <a href=\"%s\">Utseende > Favicon</"
|
146 |
+
"a>"
|
147 |
+
|
148 |
+
#: admin/views/settings.php:22
|
149 |
+
msgid "Display update notifications"
|
150 |
+
msgstr "Visa uppdateringsnotiser"
|
151 |
+
|
152 |
+
#: admin/views/settings.php:27
|
153 |
+
msgid ""
|
154 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
155 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
156 |
+
msgstr ""
|
157 |
+
"Få notifieringar när RealFaviconGenerator uppdateras t.ex. när Apple släpper "
|
158 |
+
"en ny version av iOS eller att det införs stöd för en ny plattform."
|
159 |
+
|
160 |
+
#: admin/views/settings.php:36
|
161 |
+
msgid "Save changes"
|
162 |
+
msgstr "Spara ändringar"
|
163 |
+
|
164 |
+
#. Plugin Name of the plugin/theme
|
165 |
+
msgid "Favicon by RealFaviconGenerator"
|
166 |
+
msgstr "Favicon av RealFaviconGenerator"
|
167 |
+
|
168 |
+
#. Plugin URI of the plugin/theme
|
169 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
170 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
171 |
+
|
172 |
+
#. Description of the plugin/theme
|
173 |
+
msgid ""
|
174 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
175 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
176 |
+
msgstr ""
|
177 |
+
"Skapa och installera din favicon för alla plattformar: PC/Mac såklart, men "
|
178 |
+
"också iPhone/iPad, Android-enheter, Windows 8-surfplattor etc."
|
179 |
+
|
180 |
+
#. Author of the plugin/theme
|
181 |
+
msgid "Philippe Bernard"
|
182 |
+
msgstr "Philippe Bernard"
|
183 |
+
|
184 |
+
#. Author URI of the plugin/theme
|
185 |
+
msgid "http://realfavicongenerator.net/"
|
186 |
+
msgstr "http://realfavicongenerator.net/"
|
languages/favicon-by-realfavicongenerator.pot
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-06-24 08:06:10+00:00\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
|
13 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
+
|
16 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
17 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
19 |
+
msgid "Favicon"
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
23 |
+
msgid "Favicon Settings"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
27 |
+
msgid ""
|
28 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
29 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
30 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
34 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
35 |
+
msgid "Cannot create directory %s to store the favicon package"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
39 |
+
msgid "An update is available on RealFaviconGenerator:"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
43 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
47 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
48 |
+
msgid "Hide this notice"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
53 |
+
msgid "Do not warn me again in case of update"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
57 |
+
msgid "Your favicon was updated automatically:"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
61 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
65 |
+
msgid "Unknown reason"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
69 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
73 |
+
msgid "Cannot download file at %s"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
77 |
+
msgid "Cannot store downloaded file locally"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin/views/appearance.php:11
|
81 |
+
msgid "Favicon installation in progress. Please wait..."
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin/views/appearance.php:16
|
85 |
+
msgid "Favicon installed!"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:18
|
89 |
+
msgid ""
|
90 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
91 |
+
msgstr ""
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
94 |
+
msgid "Current favicon"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
98 |
+
msgid "The favicon is up and ready."
|
99 |
+
msgstr ""
|
100 |
+
|
101 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
102 |
+
msgid ""
|
103 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
107 |
+
msgid "This option works only if your site is accessible from the outside."
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:42
|
111 |
+
msgid "No favicon has been configured yet."
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:62
|
115 |
+
msgid "Favicon generation"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: admin/views/appearance.php:64
|
119 |
+
msgid "You can replace the existing favicon."
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:71
|
123 |
+
msgid "Master picture URL"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
127 |
+
msgid "Select from the Media Library"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:79
|
131 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:81
|
135 |
+
msgid ""
|
136 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
137 |
+
"upload the picture from RealFaviconGenerator."
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: admin/views/appearance.php:89
|
141 |
+
msgid "Favicon files in root directory"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: admin/views/appearance.php:94
|
145 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: admin/views/appearance.php:96
|
149 |
+
msgid ""
|
150 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
151 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:97
|
155 |
+
msgid "recommended"
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
159 |
+
msgid "Generate favicon"
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: admin/views/appearance.php:200
|
163 |
+
msgid "Preparing master picture..."
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
#: admin/views/appearance.php:257
|
167 |
+
msgid "An error occured"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
#: admin/views/appearance.php:268
|
171 |
+
msgid "An internal error occurred"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: admin/views/settings.php:13
|
175 |
+
msgid ""
|
176 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
177 |
+
"Favicon</a>"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: admin/views/settings.php:22
|
181 |
+
msgid "Display update notifications"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: admin/views/settings.php:27
|
185 |
+
msgid ""
|
186 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
187 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: admin/views/settings.php:36
|
191 |
+
msgid "Save changes"
|
192 |
+
msgstr ""
|
193 |
+
|
194 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
195 |
+
msgid ""
|
196 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
197 |
+
"update"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#. Plugin Name of the plugin/theme
|
201 |
+
msgid "Favicon by RealFaviconGenerator"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#. Plugin URI of the plugin/theme
|
205 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#. Description of the plugin/theme
|
209 |
+
msgid ""
|
210 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
211 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#. Author of the plugin/theme
|
215 |
+
msgid "Philippe Bernard"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#. Author URI of the plugin/theme
|
219 |
+
msgid "http://realfavicongenerator.net/"
|
220 |
+
msgstr ""
|
public/class-favicon-by-realfavicongenerator-common.php
CHANGED
@@ -1,25 +1,57 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
|
4 |
class Favicon_By_RealFaviconGenerator_Common {
|
5 |
-
|
6 |
const PLUGIN_PREFIX = 'fbrfg';
|
7 |
|
8 |
-
const OPTION_FAVICON_CONFIGURED
|
9 |
-
const OPTION_FAVICON_IN_ROOT
|
10 |
-
const OPTION_PREVIEW_FILE_NAME
|
11 |
-
const OPTION_HTML_CODE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
public static function get_options_list() {
|
14 |
return array(
|
15 |
-
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
16 |
-
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
17 |
Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
18 |
-
Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
}
|
20 |
|
21 |
const PLUGIN_SLUG = 'favicon-by-realfavicongenerator';
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
/**
|
24 |
* Indicate if a favicon was configured.
|
25 |
*/
|
@@ -36,11 +68,154 @@ class Favicon_By_RealFaviconGenerator_Common {
|
|
36 |
return ( $opt == 1 ) && $this->is_favicon_configured();
|
37 |
}
|
38 |
|
39 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
41 |
$configured ? 1 : 0 );
|
42 |
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
43 |
$favicon_in_root ? 1 : 0 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
}
|
45 |
|
46 |
public function is_preview_available() {
|
@@ -53,7 +228,7 @@ class Favicon_By_RealFaviconGenerator_Common {
|
|
53 |
}
|
54 |
|
55 |
public function set_preview_file_name($preview_file_name) {
|
56 |
-
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
57 |
$preview_file_name);
|
58 |
}
|
59 |
|
@@ -92,7 +267,7 @@ class Favicon_By_RealFaviconGenerator_Common {
|
|
92 |
*/
|
93 |
public static function get_files_dir() {
|
94 |
$up_dir = wp_upload_dir();
|
95 |
-
return $up_dir['basedir'] .
|
96 |
}
|
97 |
|
98 |
/**
|
@@ -100,18 +275,26 @@ class Favicon_By_RealFaviconGenerator_Common {
|
|
100 |
*/
|
101 |
public static function get_files_url() {
|
102 |
$up_dir = wp_upload_dir();
|
103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
}
|
105 |
|
106 |
public static function get_tmp_dir() {
|
107 |
-
return Favicon_By_RealFaviconGenerator_Common::get_files_dir() .
|
108 |
}
|
109 |
|
110 |
public static function remove_directory($directory) {
|
111 |
foreach( scandir( $directory ) as $v ) {
|
112 |
if ( is_dir( $directory . DIRECTORY_SEPARATOR . $v ) ) {
|
113 |
if ( $v != '.' && $v != '..' ) {
|
114 |
-
Favicon_By_RealFaviconGenerator_Common::remove_directory(
|
|
|
115 |
}
|
116 |
}
|
117 |
else {
|
@@ -130,9 +313,160 @@ class Favicon_By_RealFaviconGenerator_Common {
|
|
130 |
$domain = Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG;
|
131 |
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
|
132 |
|
133 |
-
load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain .
|
134 |
-
load_plugin_textdomain( $domain, FALSE,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
|
138 |
}
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
|
4 |
class Favicon_By_RealFaviconGenerator_Common {
|
5 |
+
|
6 |
const PLUGIN_PREFIX = 'fbrfg';
|
7 |
|
8 |
+
const OPTION_FAVICON_CONFIGURED = 'fbrfg_favicon_configured';
|
9 |
+
const OPTION_FAVICON_IN_ROOT = 'fbrfg_favicon_in_root';
|
10 |
+
const OPTION_PREVIEW_FILE_NAME = 'fbrfg_preview_file_name';
|
11 |
+
const OPTION_HTML_CODE = 'fbrfg_html_code';
|
12 |
+
const OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST = 'fbrfg_favicon_non_interactive_api_request';
|
13 |
+
|
14 |
+
const OPTION_FAVICON_CURRENT_VERSION = 'fbrfg_favicon_current_version';
|
15 |
+
const OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM = 'fbrfg_most_recent_automatic_update_from';
|
16 |
+
const OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO = 'fbrfg_most_recent_automatic_update_to';
|
17 |
+
const OPTION_LATEST_MANUAL_AVAILABLE_UPDATE = 'fbrfg_latest_manual_available_update';
|
18 |
+
const OPTION_UPDATES_DATA = 'fbrfg_updates_data';
|
19 |
+
const OPTION_UPDATES_LIST = 'fbrfg_updates_list';
|
20 |
+
|
21 |
+
const META_NO_UPDATE_NOTICE_FOR_VERSION = 'fbrfg_ignore_update_notice_';
|
22 |
+
const META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION = 'fbrfg_ignore_automatic_update_notice_';
|
23 |
+
const META_NO_UPDATE_NOTICE = 'fbrfg_no_update_notice';
|
24 |
|
25 |
public static function get_options_list() {
|
26 |
return array(
|
27 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
28 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
29 |
Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
30 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE,
|
31 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST,
|
32 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION,
|
33 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM,
|
34 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO,
|
35 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE,
|
36 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA,
|
37 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST,
|
38 |
+
Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE );
|
39 |
}
|
40 |
|
41 |
const PLUGIN_SLUG = 'favicon-by-realfavicongenerator';
|
42 |
|
43 |
+
const ACTION_CHECK_FOR_UPDATE = 'fbrfg_check_for_updates';
|
44 |
+
|
45 |
+
const RFG_DEBUG = 'false';
|
46 |
+
|
47 |
+
public function log_info( $message ) {
|
48 |
+
if ( ( ( constant( 'WP_DEBUG') == 'true' ) || ( constant( 'WP_DEBUG') == 1 ) ) &&
|
49 |
+
( ( constant( 'Favicon_By_RealFaviconGenerator_Common::RFG_DEBUG') == 'true' ) ||
|
50 |
+
( constant( 'Favicon_By_RealFaviconGenerator_Common::RFG_DEBUG') == 1 ) ) ) {
|
51 |
+
error_log( 'RealFaviconGenerator - ' . $message );
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
/**
|
56 |
* Indicate if a favicon was configured.
|
57 |
*/
|
68 |
return ( $opt == 1 ) && $this->is_favicon_configured();
|
69 |
}
|
70 |
|
71 |
+
public function get_favicon_current_version() {
|
72 |
+
// Before the "version" feature was implemented, all favicons generated by the plugin
|
73 |
+
// were generated with RFG v0.7
|
74 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION, "0.7" );
|
75 |
+
}
|
76 |
+
|
77 |
+
public function set_favicon_current_version( $version ) {
|
78 |
+
return update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION, $version );
|
79 |
+
}
|
80 |
+
|
81 |
+
public function set_most_recent_automatic_update( $from_version, $to_version ) {
|
82 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM,
|
83 |
+
$from_version );
|
84 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO,
|
85 |
+
$to_version );
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Return the last automatic update that *has been* run.
|
90 |
+
* If favicon was automatically updated from version 0.6 to 0.8, this function returns array('0.6', '0.8').
|
91 |
+
*/
|
92 |
+
public function get_most_recent_automatic_update() {
|
93 |
+
$from = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM );
|
94 |
+
$to = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO );
|
95 |
+
return ( ( $from == NULL ) || ( $to == NULL ) ) ? NULL : array( $from, $to );
|
96 |
+
}
|
97 |
+
|
98 |
+
public function set_latest_manual_available_update( $version ) {
|
99 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE,
|
100 |
+
$version );
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Return the lastest available update (to be proposed to the user).
|
105 |
+
*/
|
106 |
+
public function get_latest_manual_available_update() {
|
107 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE );
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Save the versions data, as returned by https://realfavicongenerator.net/api/versions
|
112 |
+
*/
|
113 |
+
public function set_updates_data( $versions_data ) {
|
114 |
+
$this->log_info( 'Set updates data' );
|
115 |
+
|
116 |
+
$data = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA );
|
117 |
+
if ( ! $data ) {
|
118 |
+
$data = array();
|
119 |
+
}
|
120 |
+
$list = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST );
|
121 |
+
if ( ! $list ) {
|
122 |
+
$list = array();
|
123 |
+
}
|
124 |
+
foreach($versions_data as $version ) {
|
125 |
+
$this->log_info( 'Store data of ' . $version['version']);
|
126 |
+
$data[$version['version']] = $version;
|
127 |
+
if ( ! in_array($version['version'], $list ) ) {
|
128 |
+
array_push( $list, $version['version'] );
|
129 |
+
}
|
130 |
+
}
|
131 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA, $data );
|
132 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST, $list );
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Returns the data of a particular update. Format is similar to what is returned by
|
137 |
+
* https://realfavicongenerator.net/api/versions
|
138 |
+
*/
|
139 |
+
public function get_update_data( $version ) {
|
140 |
+
$data = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA );
|
141 |
+
if ( ! $data ) {
|
142 |
+
return NULL;
|
143 |
+
}
|
144 |
+
else {
|
145 |
+
return $data[$version];
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Return the list of versions. For example, if versions are know from 0.3 to 0.11 and $from = '0.6' and $to = '0.10',
|
151 |
+
* then this function returns array('0.7', '0.8', '0.9', '0.10'). Yes, '0.6' is not included while '0.10' is.
|
152 |
+
*/
|
153 |
+
public function get_updates_list( $from, $to ) {
|
154 |
+
$this->log_info( 'Getting versions list from ' . $from . ' to ' . $to );
|
155 |
+
|
156 |
+
$list = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST );
|
157 |
+
if ( ! $list ) {
|
158 |
+
return NULL;
|
159 |
+
}
|
160 |
+
|
161 |
+
$listing = ! in_array( $from, $list );
|
162 |
+
$sub_list = array();
|
163 |
+
|
164 |
+
foreach( $list as $version ) {
|
165 |
+
if ( $listing ) {
|
166 |
+
array_push( $sub_list, $version );
|
167 |
+
}
|
168 |
+
if ( $version == $from ) {
|
169 |
+
$listing = true;
|
170 |
+
}
|
171 |
+
if ( $version == $to ) {
|
172 |
+
return $sub_list;
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
return $sub_list;
|
177 |
+
}
|
178 |
+
|
179 |
+
public function get_updates_description( $from, $to ) {
|
180 |
+
$this->log_info( 'Getting description from ' . $from . ' to ' . $to );
|
181 |
+
|
182 |
+
$versions = $this->get_updates_list( $from, $to );
|
183 |
+
if ( $versions == NULL ) {
|
184 |
+
$this->log_info( 'No versions, return a link to the change log description' );
|
185 |
+
return sprintf( __( "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update" ),
|
186 |
+
'https://realfavicongenerator.net/change_log?since=' . $from );
|
187 |
+
}
|
188 |
+
|
189 |
+
$this->log_info( 'Versions to describe: ' . implode( ', ', $versions ) );
|
190 |
+
|
191 |
+
$descriptions = array();
|
192 |
+
foreach( $versions as $version ) {
|
193 |
+
$update = $this->get_update_data( $version );
|
194 |
+
array_push( $descriptions,
|
195 |
+
'<p>' . $update['description'] . '</p>' );
|
196 |
+
}
|
197 |
+
return implode($descriptions);
|
198 |
+
}
|
199 |
+
|
200 |
+
public function get_non_interactive_api_request() {
|
201 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST );
|
202 |
+
}
|
203 |
+
|
204 |
+
public function set_favicon_configured( $configured, $favicon_in_root, $version, $non_interactive_api_request = NULL ) {
|
205 |
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
206 |
$configured ? 1 : 0 );
|
207 |
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
208 |
$favicon_in_root ? 1 : 0 );
|
209 |
+
|
210 |
+
$this->set_favicon_current_version( $version );
|
211 |
+
|
212 |
+
// Reset the update stuff
|
213 |
+
$this->set_latest_manual_available_update( NULL );
|
214 |
+
|
215 |
+
if ( $non_interactive_api_request != NULL ) {
|
216 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST,
|
217 |
+
$non_interactive_api_request );
|
218 |
+
}
|
219 |
}
|
220 |
|
221 |
public function is_preview_available() {
|
228 |
}
|
229 |
|
230 |
public function set_preview_file_name($preview_file_name) {
|
231 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
232 |
$preview_file_name);
|
233 |
}
|
234 |
|
267 |
*/
|
268 |
public static function get_files_dir() {
|
269 |
$up_dir = wp_upload_dir();
|
270 |
+
return $up_dir['basedir'] . '/' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '/';
|
271 |
}
|
272 |
|
273 |
/**
|
275 |
*/
|
276 |
public static function get_files_url() {
|
277 |
$up_dir = wp_upload_dir();
|
278 |
+
$baseUrl = $up_dir['baseurl'];
|
279 |
+
// Make sure to no duplicate the '/'
|
280 |
+
// This is especially important when the base URL is the root directory:
|
281 |
+
// When this happens, the generated URL would be
|
282 |
+
// "http//somesite.com//fbrfg/" and then "//fbrfg/" when the host name is
|
283 |
+
// stripped. But this path is wrong, as it looks like a "same protocol" URL.
|
284 |
+
$separator = (substr($baseUrl, -1) == '/') ? '' : '/';
|
285 |
+
return $baseUrl . $separator . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '/';
|
286 |
}
|
287 |
|
288 |
public static function get_tmp_dir() {
|
289 |
+
return Favicon_By_RealFaviconGenerator_Common::get_files_dir() . 'tmp' . DIRECTORY_SEPARATOR;
|
290 |
}
|
291 |
|
292 |
public static function remove_directory($directory) {
|
293 |
foreach( scandir( $directory ) as $v ) {
|
294 |
if ( is_dir( $directory . DIRECTORY_SEPARATOR . $v ) ) {
|
295 |
if ( $v != '.' && $v != '..' ) {
|
296 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory(
|
297 |
+
$directory . DIRECTORY_SEPARATOR . $v );
|
298 |
}
|
299 |
}
|
300 |
else {
|
313 |
$domain = Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG;
|
314 |
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
|
315 |
|
316 |
+
load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain . DIRECTORY_SEPARATOR . $domain . '-' . $locale . '.mo' );
|
317 |
+
load_plugin_textdomain( $domain, FALSE,
|
318 |
+
basename( plugin_dir_path( dirname( __FILE__ ) ) ) . DIRECTORY_SEPARATOR .
|
319 |
+
'languages' . DIRECTORY_SEPARATOR );
|
320 |
+
}
|
321 |
+
|
322 |
+
// See http://webcheatsheet.com/php/get_current_page_url.php
|
323 |
+
public function current_page_url() {
|
324 |
+
// See https://mekshq.com/get-current-page-url-wordpress/
|
325 |
+
global $wp;
|
326 |
+
$current_url = home_url( add_query_arg( array(), $wp->request ) );
|
327 |
+
return $current_url;
|
328 |
+
}
|
329 |
+
|
330 |
+
public function add_parameter_to_current_url( $param_and_value ) {
|
331 |
+
$url = $this->current_page_url();
|
332 |
+
if ( strpos( $url, '?') !== false) {
|
333 |
+
return $url . '&' . $param_and_value;
|
334 |
+
}
|
335 |
+
else {
|
336 |
+
return $url . '?' . $param_and_value;
|
337 |
+
}
|
338 |
+
}
|
339 |
+
|
340 |
+
public function check_for_updates() {
|
341 |
+
$this->log_info( 'Checking for updates...' );
|
342 |
+
|
343 |
+
if ( ! $this->is_favicon_configured() ) {
|
344 |
+
// No favicon so nothing to update
|
345 |
+
$this->log_info( 'No favicon configured so nothing to update' );
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
|
349 |
+
$version = $this->get_favicon_current_version();
|
350 |
+
$this->log_info( 'Current version is ' . $version );
|
351 |
+
|
352 |
+
if ( $version == NULL ) {
|
353 |
+
// No version for some reason. Let's leave.
|
354 |
+
$this->log_info( 'Current favicon version not available' );
|
355 |
+
return;
|
356 |
+
}
|
357 |
+
|
358 |
+
$checkUrl = 'https://realfavicongenerator.net/api/versions?since=' . $version;
|
359 |
+
$resp = wp_remote_get( $checkUrl );
|
360 |
+
if ( ( $resp == NULL ) || ( $resp == false ) || ( is_wp_error( $resp ) ) ||
|
361 |
+
( $resp['response'] == NULL ) || ( $resp['response']['code'] == NULL ) || ( $resp['response']['code'] != 200 ) ) {
|
362 |
+
// Error of some kind? Return
|
363 |
+
$this->log_info( 'Cannot get latest version from RealFaviconGenerator ' .
|
364 |
+
( is_wp_error( $resp ) ? ': ' . $resp->get_error_message() : '' ) . ' (URL was ' . $checkUrl . ')' );
|
365 |
+
return;
|
366 |
+
}
|
367 |
+
|
368 |
+
$json = json_decode( $resp['body'], true );
|
369 |
+
if ( empty( $json ) ) {
|
370 |
+
$this->log_info( 'No change since version ' . $version . ' or cannot parse JSON (JSON parsing error code is ' . json_last_error() . ')' );
|
371 |
+
return;
|
372 |
+
}
|
373 |
+
|
374 |
+
$this->log_info( 'Update versions database' );
|
375 |
+
$this->set_updates_data( $json );
|
376 |
+
|
377 |
+
// Check update relevancy
|
378 |
+
$manual = false;
|
379 |
+
$automatic = false;
|
380 |
+
foreach($json as $version) {
|
381 |
+
if ( $version['relevance']['manual_update'] ) {
|
382 |
+
$manual = true;
|
383 |
+
}
|
384 |
+
if ( $version['relevance']['automated_update'] ) {
|
385 |
+
$automatic = true;
|
386 |
+
}
|
387 |
+
}
|
388 |
+
|
389 |
+
$this->log_info( "Automated updates to run: " . ( $automatic ? 'true' : 'false') );
|
390 |
+
$this->log_info( "Manual updates to run: " . ( $manual ? 'true' : 'false' ) );
|
391 |
+
|
392 |
+
if ( $manual || ( $automatic && ( ! $this->get_non_interactive_api_request() ) ) ) {
|
393 |
+
$this->log_info( 'Manual update, or automatic update but we have no non-interactive request to do it automatically' );
|
394 |
+
|
395 |
+
// We only note the latest available version.
|
396 |
+
// For example, if we receive version 0.8, 0.9 and 0.10 (in this order), we only note 0.10
|
397 |
+
$last = $json[count( $json ) - 1];
|
398 |
+
$latest_version = $last['version'];
|
399 |
+
|
400 |
+
// Save the fact that we should update
|
401 |
+
$this->log_info( 'There is a manual update to go to ' . $latest_version );
|
402 |
+
$this->set_latest_manual_available_update( $latest_version );
|
403 |
+
}
|
404 |
+
else if ( $automatic && $this->get_non_interactive_api_request() ) {
|
405 |
+
// Automatic update
|
406 |
+
|
407 |
+
$this->log_info( 'Automatic update to be performed' );
|
408 |
+
|
409 |
+
// Do not run it when the update is also manual, because we are going to ask the user to
|
410 |
+
// update anyway.
|
411 |
+
|
412 |
+
try {
|
413 |
+
$result = $this->run_non_interactive_api_request( $this->get_non_interactive_api_request() );
|
414 |
+
|
415 |
+
$response = new Favicon_By_RealFaviconGenerator_Api_Response( $result );
|
416 |
+
|
417 |
+
$zip_path = Favicon_By_RealFaviconGenerator_Common::get_tmp_dir();
|
418 |
+
if ( ! file_exists( $zip_path ) ) {
|
419 |
+
if ( mkdir( $zip_path, 0755, true ) !== true ) {
|
420 |
+
throw new InvalidArgumentException( sprintf( __( 'Cannot create directory %s to store the favicon package', FBRFG_PLUGIN_SLUG), $zip_path ) );
|
421 |
+
}
|
422 |
+
}
|
423 |
+
$response->downloadAndUnpack( $zip_path );
|
424 |
+
|
425 |
+
$this->store_pictures( $response );
|
426 |
+
|
427 |
+
$this->store_preview( $response->getPreviewPath() );
|
428 |
+
|
429 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $zip_path );
|
430 |
+
|
431 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE, $response->getHtmlCode() );
|
432 |
+
|
433 |
+
$version_before_update = $this->get_favicon_current_version();
|
434 |
+
|
435 |
+
$this->set_favicon_configured( true, $response->isFilesInRoot(), $response->getVersion() );
|
436 |
+
|
437 |
+
// Remember about this update
|
438 |
+
$this->log_info( 'Save the fact that we updated from ' . $version_before_update . ' to ' . $response->getVersion() );
|
439 |
+
$this->set_most_recent_automatic_update( $version_before_update, $response->getVersion() );
|
440 |
+
}
|
441 |
+
catch( Exception $e ) {
|
442 |
+
$this->log_info( 'Cannot update favicon automatically: ' . $e->getMessage() );
|
443 |
+
}
|
444 |
+
}
|
445 |
+
}
|
446 |
+
|
447 |
+
public function run_non_interactive_api_request( $request ) {
|
448 |
+
$resp = wp_remote_post( 'https://realfavicongenerator.net/api/favicon',
|
449 |
+
array( 'body' => $request, 'timeout' => 45 ) );
|
450 |
+
if ( is_wp_error( $resp )) {
|
451 |
+
throw new InvalidArgumentException( "Cannot run the non-interactive API request for update: " . $resp->get_error_message() );
|
452 |
+
}
|
453 |
+
|
454 |
+
$json = wp_remote_retrieve_body( $resp );
|
455 |
+
if ( empty( $json ) ) {
|
456 |
+
throw new InvalidArgumentException( "Empty JSON document while running the non-interactive API request" );
|
457 |
+
}
|
458 |
+
|
459 |
+
return $json;
|
460 |
+
}
|
461 |
+
|
462 |
+
public function portable_filename( $filename ) {
|
463 |
+
return str_replace( '/', DIRECTORY_SEPARATOR, $filename );
|
464 |
+
}
|
465 |
|
466 |
+
public function portable_rename( $from, $to ) {
|
467 |
+
$from = $this->portable_filename( $from );
|
468 |
+
$to = $this->portable_filename( $to );
|
469 |
+
rename( $from, $to );
|
470 |
}
|
471 |
|
472 |
}
|
public/class-favicon-by-realfavicongenerator.php
CHANGED
@@ -1,15 +1,16 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
|
4 |
-
require_once plugin_dir_path( __FILE__ ) . '
|
|
|
5 |
|
6 |
class Favicon_By_RealFaviconGenerator extends Favicon_By_RealFaviconGenerator_Common {
|
7 |
|
8 |
protected static $instance = null;
|
9 |
|
10 |
private function __construct() {
|
11 |
-
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
|
12 |
add_action( 'wp_head', array( $this, 'add_favicon_markups' ) );
|
|
|
13 |
|
14 |
// Deactivate Genesis default favicon
|
15 |
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
@@ -27,66 +28,11 @@ class Favicon_By_RealFaviconGenerator extends Favicon_By_RealFaviconGenerator_Co
|
|
27 |
|
28 |
|
29 |
public static function activate( $network_wide ) {
|
30 |
-
|
31 |
-
if ( function_exists( 'is_multisite' ) && is_multisite() ) {
|
32 |
-
|
33 |
-
if ( $network_wide ) {
|
34 |
-
|
35 |
-
// Get all blog ids
|
36 |
-
$blog_ids = self::get_blog_ids();
|
37 |
-
|
38 |
-
foreach ( $blog_ids as $blog_id ) {
|
39 |
-
|
40 |
-
switch_to_blog( $blog_id );
|
41 |
-
self::single_activate();
|
42 |
-
}
|
43 |
-
|
44 |
-
restore_current_blog();
|
45 |
-
|
46 |
-
} else {
|
47 |
-
self::single_activate();
|
48 |
-
}
|
49 |
-
|
50 |
-
} else {
|
51 |
-
self::single_activate();
|
52 |
-
}
|
53 |
-
|
54 |
-
}
|
55 |
-
|
56 |
-
public static function deactivate( $network_wide ) {
|
57 |
-
|
58 |
-
if ( function_exists( 'is_multisite' ) && is_multisite() ) {
|
59 |
-
|
60 |
-
if ( $network_wide ) {
|
61 |
-
|
62 |
-
// Get all blog ids
|
63 |
-
$blog_ids = self::get_blog_ids();
|
64 |
-
|
65 |
-
foreach ( $blog_ids as $blog_id ) {
|
66 |
-
|
67 |
-
switch_to_blog( $blog_id );
|
68 |
-
self::single_deactivate();
|
69 |
-
|
70 |
-
}
|
71 |
-
|
72 |
-
restore_current_blog();
|
73 |
-
|
74 |
-
} else {
|
75 |
-
self::single_deactivate();
|
76 |
-
}
|
77 |
-
|
78 |
-
} else {
|
79 |
-
self::single_deactivate();
|
80 |
-
}
|
81 |
-
|
82 |
-
}
|
83 |
-
|
84 |
-
private static function single_activate() {
|
85 |
// Nothing to do
|
86 |
}
|
87 |
|
88 |
-
|
89 |
-
|
90 |
}
|
91 |
|
92 |
}
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
|
4 |
+
require_once plugin_dir_path( __FILE__ ) . '..' . DIRECTORY_SEPARATOR .
|
5 |
+
'public' . DIRECTORY_SEPARATOR . 'class-favicon-by-realfavicongenerator-common.php';
|
6 |
|
7 |
class Favicon_By_RealFaviconGenerator extends Favicon_By_RealFaviconGenerator_Common {
|
8 |
|
9 |
protected static $instance = null;
|
10 |
|
11 |
private function __construct() {
|
|
|
12 |
add_action( 'wp_head', array( $this, 'add_favicon_markups' ) );
|
13 |
+
add_action( 'login_head', array( $this, 'add_favicon_markups' ) );
|
14 |
|
15 |
// Deactivate Genesis default favicon
|
16 |
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
28 |
|
29 |
|
30 |
public static function activate( $network_wide ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
// Nothing to do
|
32 |
}
|
33 |
|
34 |
+
public static function deactivate( $network_wide ) {
|
35 |
+
wp_clear_scheduled_hook( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE );
|
36 |
}
|
37 |
|
38 |
}
|
trunk/LICENSE.txt
ADDED
@@ -0,0 +1,339 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
GNU GENERAL PUBLIC LICENSE
|
2 |
+
Version 2, June 1991
|
3 |
+
|
4 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
7 |
+
of this license document, but changing it is not allowed.
|
8 |
+
|
9 |
+
Preamble
|
10 |
+
|
11 |
+
The licenses for most software are designed to take away your
|
12 |
+
freedom to share and change it. By contrast, the GNU General Public
|
13 |
+
License is intended to guarantee your freedom to share and change free
|
14 |
+
software--to make sure the software is free for all its users. This
|
15 |
+
General Public License applies to most of the Free Software
|
16 |
+
Foundation's software and to any other program whose authors commit to
|
17 |
+
using it. (Some other Free Software Foundation software is covered by
|
18 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
+
your programs, too.
|
20 |
+
|
21 |
+
When we speak of free software, we are referring to freedom, not
|
22 |
+
price. Our General Public Licenses are designed to make sure that you
|
23 |
+
have the freedom to distribute copies of free software (and charge for
|
24 |
+
this service if you wish), that you receive source code or can get it
|
25 |
+
if you want it, that you can change the software or use pieces of it
|
26 |
+
in new free programs; and that you know you can do these things.
|
27 |
+
|
28 |
+
To protect your rights, we need to make restrictions that forbid
|
29 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
+
These restrictions translate to certain responsibilities for you if you
|
31 |
+
distribute copies of the software, or if you modify it.
|
32 |
+
|
33 |
+
For example, if you distribute copies of such a program, whether
|
34 |
+
gratis or for a fee, you must give the recipients all the rights that
|
35 |
+
you have. You must make sure that they, too, receive or can get the
|
36 |
+
source code. And you must show them these terms so they know their
|
37 |
+
rights.
|
38 |
+
|
39 |
+
We protect your rights with two steps: (1) copyright the software, and
|
40 |
+
(2) offer you this license which gives you legal permission to copy,
|
41 |
+
distribute and/or modify the software.
|
42 |
+
|
43 |
+
Also, for each author's protection and ours, we want to make certain
|
44 |
+
that everyone understands that there is no warranty for this free
|
45 |
+
software. If the software is modified by someone else and passed on, we
|
46 |
+
want its recipients to know that what they have is not the original, so
|
47 |
+
that any problems introduced by others will not reflect on the original
|
48 |
+
authors' reputations.
|
49 |
+
|
50 |
+
Finally, any free program is threatened constantly by software
|
51 |
+
patents. We wish to avoid the danger that redistributors of a free
|
52 |
+
program will individually obtain patent licenses, in effect making the
|
53 |
+
program proprietary. To prevent this, we have made it clear that any
|
54 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
+
|
56 |
+
The precise terms and conditions for copying, distribution and
|
57 |
+
modification follow.
|
58 |
+
|
59 |
+
GNU GENERAL PUBLIC LICENSE
|
60 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
+
|
62 |
+
0. This License applies to any program or other work which contains
|
63 |
+
a notice placed by the copyright holder saying it may be distributed
|
64 |
+
under the terms of this General Public License. The "Program", below,
|
65 |
+
refers to any such program or work, and a "work based on the Program"
|
66 |
+
means either the Program or any derivative work under copyright law:
|
67 |
+
that is to say, a work containing the Program or a portion of it,
|
68 |
+
either verbatim or with modifications and/or translated into another
|
69 |
+
language. (Hereinafter, translation is included without limitation in
|
70 |
+
the term "modification".) Each licensee is addressed as "you".
|
71 |
+
|
72 |
+
Activities other than copying, distribution and modification are not
|
73 |
+
covered by this License; they are outside its scope. The act of
|
74 |
+
running the Program is not restricted, and the output from the Program
|
75 |
+
is covered only if its contents constitute a work based on the
|
76 |
+
Program (independent of having been made by running the Program).
|
77 |
+
Whether that is true depends on what the Program does.
|
78 |
+
|
79 |
+
1. You may copy and distribute verbatim copies of the Program's
|
80 |
+
source code as you receive it, in any medium, provided that you
|
81 |
+
conspicuously and appropriately publish on each copy an appropriate
|
82 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
+
notices that refer to this License and to the absence of any warranty;
|
84 |
+
and give any other recipients of the Program a copy of this License
|
85 |
+
along with the Program.
|
86 |
+
|
87 |
+
You may charge a fee for the physical act of transferring a copy, and
|
88 |
+
you may at your option offer warranty protection in exchange for a fee.
|
89 |
+
|
90 |
+
2. You may modify your copy or copies of the Program or any portion
|
91 |
+
of it, thus forming a work based on the Program, and copy and
|
92 |
+
distribute such modifications or work under the terms of Section 1
|
93 |
+
above, provided that you also meet all of these conditions:
|
94 |
+
|
95 |
+
a) You must cause the modified files to carry prominent notices
|
96 |
+
stating that you changed the files and the date of any change.
|
97 |
+
|
98 |
+
b) You must cause any work that you distribute or publish, that in
|
99 |
+
whole or in part contains or is derived from the Program or any
|
100 |
+
part thereof, to be licensed as a whole at no charge to all third
|
101 |
+
parties under the terms of this License.
|
102 |
+
|
103 |
+
c) If the modified program normally reads commands interactively
|
104 |
+
when run, you must cause it, when started running for such
|
105 |
+
interactive use in the most ordinary way, to print or display an
|
106 |
+
announcement including an appropriate copyright notice and a
|
107 |
+
notice that there is no warranty (or else, saying that you provide
|
108 |
+
a warranty) and that users may redistribute the program under
|
109 |
+
these conditions, and telling the user how to view a copy of this
|
110 |
+
License. (Exception: if the Program itself is interactive but
|
111 |
+
does not normally print such an announcement, your work based on
|
112 |
+
the Program is not required to print an announcement.)
|
113 |
+
|
114 |
+
These requirements apply to the modified work as a whole. If
|
115 |
+
identifiable sections of that work are not derived from the Program,
|
116 |
+
and can be reasonably considered independent and separate works in
|
117 |
+
themselves, then this License, and its terms, do not apply to those
|
118 |
+
sections when you distribute them as separate works. But when you
|
119 |
+
distribute the same sections as part of a whole which is a work based
|
120 |
+
on the Program, the distribution of the whole must be on the terms of
|
121 |
+
this License, whose permissions for other licensees extend to the
|
122 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
+
|
124 |
+
Thus, it is not the intent of this section to claim rights or contest
|
125 |
+
your rights to work written entirely by you; rather, the intent is to
|
126 |
+
exercise the right to control the distribution of derivative or
|
127 |
+
collective works based on the Program.
|
128 |
+
|
129 |
+
In addition, mere aggregation of another work not based on the Program
|
130 |
+
with the Program (or with a work based on the Program) on a volume of
|
131 |
+
a storage or distribution medium does not bring the other work under
|
132 |
+
the scope of this License.
|
133 |
+
|
134 |
+
3. You may copy and distribute the Program (or a work based on it,
|
135 |
+
under Section 2) in object code or executable form under the terms of
|
136 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
+
|
138 |
+
a) Accompany it with the complete corresponding machine-readable
|
139 |
+
source code, which must be distributed under the terms of Sections
|
140 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
+
|
142 |
+
b) Accompany it with a written offer, valid for at least three
|
143 |
+
years, to give any third party, for a charge no more than your
|
144 |
+
cost of physically performing source distribution, a complete
|
145 |
+
machine-readable copy of the corresponding source code, to be
|
146 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
+
customarily used for software interchange; or,
|
148 |
+
|
149 |
+
c) Accompany it with the information you received as to the offer
|
150 |
+
to distribute corresponding source code. (This alternative is
|
151 |
+
allowed only for noncommercial distribution and only if you
|
152 |
+
received the program in object code or executable form with such
|
153 |
+
an offer, in accord with Subsection b above.)
|
154 |
+
|
155 |
+
The source code for a work means the preferred form of the work for
|
156 |
+
making modifications to it. For an executable work, complete source
|
157 |
+
code means all the source code for all modules it contains, plus any
|
158 |
+
associated interface definition files, plus the scripts used to
|
159 |
+
control compilation and installation of the executable. However, as a
|
160 |
+
special exception, the source code distributed need not include
|
161 |
+
anything that is normally distributed (in either source or binary
|
162 |
+
form) with the major components (compiler, kernel, and so on) of the
|
163 |
+
operating system on which the executable runs, unless that component
|
164 |
+
itself accompanies the executable.
|
165 |
+
|
166 |
+
If distribution of executable or object code is made by offering
|
167 |
+
access to copy from a designated place, then offering equivalent
|
168 |
+
access to copy the source code from the same place counts as
|
169 |
+
distribution of the source code, even though third parties are not
|
170 |
+
compelled to copy the source along with the object code.
|
171 |
+
|
172 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
+
except as expressly provided under this License. Any attempt
|
174 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
+
void, and will automatically terminate your rights under this License.
|
176 |
+
However, parties who have received copies, or rights, from you under
|
177 |
+
this License will not have their licenses terminated so long as such
|
178 |
+
parties remain in full compliance.
|
179 |
+
|
180 |
+
5. You are not required to accept this License, since you have not
|
181 |
+
signed it. However, nothing else grants you permission to modify or
|
182 |
+
distribute the Program or its derivative works. These actions are
|
183 |
+
prohibited by law if you do not accept this License. Therefore, by
|
184 |
+
modifying or distributing the Program (or any work based on the
|
185 |
+
Program), you indicate your acceptance of this License to do so, and
|
186 |
+
all its terms and conditions for copying, distributing or modifying
|
187 |
+
the Program or works based on it.
|
188 |
+
|
189 |
+
6. Each time you redistribute the Program (or any work based on the
|
190 |
+
Program), the recipient automatically receives a license from the
|
191 |
+
original licensor to copy, distribute or modify the Program subject to
|
192 |
+
these terms and conditions. You may not impose any further
|
193 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
+
You are not responsible for enforcing compliance by third parties to
|
195 |
+
this License.
|
196 |
+
|
197 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
+
infringement or for any other reason (not limited to patent issues),
|
199 |
+
conditions are imposed on you (whether by court order, agreement or
|
200 |
+
otherwise) that contradict the conditions of this License, they do not
|
201 |
+
excuse you from the conditions of this License. If you cannot
|
202 |
+
distribute so as to satisfy simultaneously your obligations under this
|
203 |
+
License and any other pertinent obligations, then as a consequence you
|
204 |
+
may not distribute the Program at all. For example, if a patent
|
205 |
+
license would not permit royalty-free redistribution of the Program by
|
206 |
+
all those who receive copies directly or indirectly through you, then
|
207 |
+
the only way you could satisfy both it and this License would be to
|
208 |
+
refrain entirely from distribution of the Program.
|
209 |
+
|
210 |
+
If any portion of this section is held invalid or unenforceable under
|
211 |
+
any particular circumstance, the balance of the section is intended to
|
212 |
+
apply and the section as a whole is intended to apply in other
|
213 |
+
circumstances.
|
214 |
+
|
215 |
+
It is not the purpose of this section to induce you to infringe any
|
216 |
+
patents or other property right claims or to contest validity of any
|
217 |
+
such claims; this section has the sole purpose of protecting the
|
218 |
+
integrity of the free software distribution system, which is
|
219 |
+
implemented by public license practices. Many people have made
|
220 |
+
generous contributions to the wide range of software distributed
|
221 |
+
through that system in reliance on consistent application of that
|
222 |
+
system; it is up to the author/donor to decide if he or she is willing
|
223 |
+
to distribute software through any other system and a licensee cannot
|
224 |
+
impose that choice.
|
225 |
+
|
226 |
+
This section is intended to make thoroughly clear what is believed to
|
227 |
+
be a consequence of the rest of this License.
|
228 |
+
|
229 |
+
8. If the distribution and/or use of the Program is restricted in
|
230 |
+
certain countries either by patents or by copyrighted interfaces, the
|
231 |
+
original copyright holder who places the Program under this License
|
232 |
+
may add an explicit geographical distribution limitation excluding
|
233 |
+
those countries, so that distribution is permitted only in or among
|
234 |
+
countries not thus excluded. In such case, this License incorporates
|
235 |
+
the limitation as if written in the body of this License.
|
236 |
+
|
237 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
+
of the General Public License from time to time. Such new versions will
|
239 |
+
be similar in spirit to the present version, but may differ in detail to
|
240 |
+
address new problems or concerns.
|
241 |
+
|
242 |
+
Each version is given a distinguishing version number. If the Program
|
243 |
+
specifies a version number of this License which applies to it and "any
|
244 |
+
later version", you have the option of following the terms and conditions
|
245 |
+
either of that version or of any later version published by the Free
|
246 |
+
Software Foundation. If the Program does not specify a version number of
|
247 |
+
this License, you may choose any version ever published by the Free Software
|
248 |
+
Foundation.
|
249 |
+
|
250 |
+
10. If you wish to incorporate parts of the Program into other free
|
251 |
+
programs whose distribution conditions are different, write to the author
|
252 |
+
to ask for permission. For software which is copyrighted by the Free
|
253 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
+
make exceptions for this. Our decision will be guided by the two goals
|
255 |
+
of preserving the free status of all derivatives of our free software and
|
256 |
+
of promoting the sharing and reuse of software generally.
|
257 |
+
|
258 |
+
NO WARRANTY
|
259 |
+
|
260 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
+
REPAIR OR CORRECTION.
|
269 |
+
|
270 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
+
POSSIBILITY OF SUCH DAMAGES.
|
279 |
+
|
280 |
+
END OF TERMS AND CONDITIONS
|
281 |
+
|
282 |
+
How to Apply These Terms to Your New Programs
|
283 |
+
|
284 |
+
If you develop a new program, and you want it to be of the greatest
|
285 |
+
possible use to the public, the best way to achieve this is to make it
|
286 |
+
free software which everyone can redistribute and change under these terms.
|
287 |
+
|
288 |
+
To do so, attach the following notices to the program. It is safest
|
289 |
+
to attach them to the start of each source file to most effectively
|
290 |
+
convey the exclusion of warranty; and each file should have at least
|
291 |
+
the "copyright" line and a pointer to where the full notice is found.
|
292 |
+
|
293 |
+
<one line to give the program's name and a brief idea of what it does.>
|
294 |
+
Copyright (C) <year> <name of author>
|
295 |
+
|
296 |
+
This program is free software; you can redistribute it and/or modify
|
297 |
+
it under the terms of the GNU General Public License as published by
|
298 |
+
the Free Software Foundation; either version 2 of the License, or
|
299 |
+
(at your option) any later version.
|
300 |
+
|
301 |
+
This program is distributed in the hope that it will be useful,
|
302 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
+
GNU General Public License for more details.
|
305 |
+
|
306 |
+
You should have received a copy of the GNU General Public License along
|
307 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
+
|
310 |
+
Also add information on how to contact you by electronic and paper mail.
|
311 |
+
|
312 |
+
If the program is interactive, make it output a short notice like this
|
313 |
+
when it starts in an interactive mode:
|
314 |
+
|
315 |
+
Gnomovision version 69, Copyright (C) year name of author
|
316 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
+
This is free software, and you are welcome to redistribute it
|
318 |
+
under certain conditions; type `show c' for details.
|
319 |
+
|
320 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
+
parts of the General Public License. Of course, the commands you use may
|
322 |
+
be called something other than `show w' and `show c'; they could even be
|
323 |
+
mouse-clicks or menu items--whatever suits your program.
|
324 |
+
|
325 |
+
You should also get your employer (if you work as a programmer) or your
|
326 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
+
necessary. Here is a sample; alter the names:
|
328 |
+
|
329 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
+
|
332 |
+
<signature of Ty Coon>, 1 April 1989
|
333 |
+
Ty Coon, President of Vice
|
334 |
+
|
335 |
+
This General Public License does not permit incorporating your program into
|
336 |
+
proprietary programs. If your program is a subroutine library, you may
|
337 |
+
consider it more useful to permit linking proprietary applications with the
|
338 |
+
library. If this is what you want to do, use the GNU Lesser General
|
339 |
+
Public License instead of this License.
|
trunk/README.txt
ADDED
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Favicon by RealFaviconGenerator ===
|
2 |
+
Contributors: phbernard
|
3 |
+
Donate link: http://realfavicongenerator.net/donate
|
4 |
+
Tags: favicon, favicon icon, favicon image, favicon code, favicon change, favicon manager, short icon, addressbar logo, apple touch icon, icon, iphone, admin, wordpress, realfavicongenerator, real favicon generator
|
5 |
+
Requires at least: 3.5
|
6 |
+
Tested up to: 5.8
|
7 |
+
Stable tag: 1.3.21
|
8 |
+
License: GPLv2
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
Create and install your favicon for all platforms: PC/Mac, iPhone/iPad, Android devices, Windows 8 tablets...
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
Generate and setup a favicon for desktop browsers, iPhone/iPad, Android devices, Windows 8 tablets and more. In a matter of seconds, design an icon that looks great on all major platforms.
|
16 |
+
|
17 |
+
Favicon is not just a single `favicon.ico` file dropped in the middle of your site. Nowadays, with so many different platforms and devices, you need a bunch of pictures to get the job done. With RealFaviconGenerator, generate all the icons you need for desktop browsers, iPhone/iPad, Android devices, Windows 8 devices, and more.
|
18 |
+
|
19 |
+
iOS devices use a high resolution Apple touch icon to illustrate bookmarks and home screen shortcuts. A first generation iPhone needs a 57x57 picture, whereas a brand new iPad with Retina screen looks for a 152x152 picture. Android Chrome also use these pictures if it finds them. Windows 8 takes another route with a dedicated set of icons and HTML declarations.
|
20 |
+
|
21 |
+
Favicon is not only a matter of pictures with different resolutions. The various platforms coms with different UI guidelines. For example, the classic desktop favicons often use transparency. But iOS requires opaque icons. And Windows 8 has its own recommendations.
|
22 |
+
|
23 |
+
Save hours of research and image edition with RealFaviconGenerator and its companion plugin. In a matter of seconds, you setup a favicon compatible with:
|
24 |
+
|
25 |
+
- Windows (IE, Chrome, Firefox, Opera, Safari)
|
26 |
+
- Mac (Safari, Chrome, Firefox, Opera, Camino)
|
27 |
+
- iOS (Safari, Chrome, Coast)
|
28 |
+
- Android (Chrome, Firefox)
|
29 |
+
- Surface (IE)
|
30 |
+
- And more
|
31 |
+
|
32 |
+
We take compatibility very seriously. See http://realfavicongenerator.net/favicon_compatibility for the full list.
|
33 |
+
|
34 |
+
** Localization **
|
35 |
+
|
36 |
+
* English (`en_EN`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
37 |
+
* French (`fr_FR`) by [Philippe Bernard](http://realfavicongenerator.net/)
|
38 |
+
* Swedish (`sv_SE`) by [Linus Wileryd](https://twitter.com/wileryd)
|
39 |
+
* Brazilian Portuguese (`pt_BR`) by Marcelo Volgarini, [Criação de Sites](http://www.techload.com.br/criacao-de-sites-ribeirao-preto)
|
40 |
+
* Dutch (`nl_NL`) by [Axel Vanderhaeghen](https://eco13.eu)
|
41 |
+
* Danish (`da_DK`) by [Alexander Leo-Hansen](http://alexanderleohansen.dk/)
|
42 |
+
* Czech (`cs_CZ`) by an anonymous translator
|
43 |
+
* Polish (`pl_PL`) by [Maciej Gryniuk](http://maciej-gryniuk.tk/)
|
44 |
+
* Russian (`ru_RU`) by Natasha Diatko, [UStarCash](https://www.ustarcash.com)
|
45 |
+
* Indonesian (`id_ID`) by [Jordan Silaen](https://www.chameleonjohn.com/)
|
46 |
+
|
47 |
+
[](http://coderisk.com/wp/plugin/favicon-by-realfavicongenerator/RIPS-TVYsdQTMAr)
|
48 |
+
|
49 |
+
== Installation ==
|
50 |
+
|
51 |
+
= Using The WordPress Dashboard =
|
52 |
+
|
53 |
+
1. Navigate to the 'Add New' in the plugins dashboard
|
54 |
+
2. Search for 'Favicon by RealFaviconGenerator'
|
55 |
+
3. Click 'Install Now'
|
56 |
+
4. Activate the plugin on the Plugin dashboard
|
57 |
+
5. Navigate to the 'Favicon' entry in the Appearance menu
|
58 |
+
6. Select a master picture from the Media Library (optional)
|
59 |
+
7. Click the 'Generate Favicon' button and follow the instructions.
|
60 |
+
|
61 |
+
= Using FTP =
|
62 |
+
|
63 |
+
1. Download `favicon-by-realfavicongenerator.zip`
|
64 |
+
2. Extract the `favicon-by-realfavicongenerator` directory to your computer
|
65 |
+
3. Upload the `favicon-by-realfavicongenerator` directory to the `/wp-content/plugins/` directory
|
66 |
+
4. Activate the plugin on the Plugin dashboard
|
67 |
+
5. Navigate to the 'Favicon' entry in the Appearance menu
|
68 |
+
6. Select a master picture from the Media Library (optional)
|
69 |
+
7. Click the 'Generate Favicon' button and follow the instructions.
|
70 |
+
|
71 |
+
== Screenshots ==
|
72 |
+
|
73 |
+
1. Initial favicon setup screen. You are invited to setup your favicon.
|
74 |
+
2. Select a master picture from the Media Library (optional)
|
75 |
+
3. Once you hit the Generate Favicon button, you are redirected to <a href="http://realfavicongenerator.net/">RealFaviconGenerator</a>,
|
76 |
+
where you can design your favicon: adding a background to your iOS picture, using a saturated version of your master picture for Windows 8...
|
77 |
+
4. When you are done with the favicon editor, you are redirected to the WordPress Dashboard. The favicon is installed automatically.
|
78 |
+
This screen presents you a preview of the favicon you various platforms, so you know how your blog looks like on various platforms.
|
79 |
+
5. You can also trigger RealFaviconGenerator's favicon checker, to make sure your favicon is correctly setup.
|
80 |
+
|
81 |
+
== Changelog ==
|
82 |
+
|
83 |
+
= 1.3.21 =
|
84 |
+
|
85 |
+
- Plugin was tested up to WordPress 5.8
|
86 |
+
- Fix XSS security issue, reported by WPSpan.com. See https://wpscan.com/vulnerability/ed9d26be-cc96-4274-a05b-0b7ad9d8cfd9?fbclid=IwAR2aRMXRjbGm9ppoI9tM-OHm26Q0ax4yt0MkcP5sp0-pz9D4eVIEHQwvG1Y
|
87 |
+
|
88 |
+
= 1.3.20 =
|
89 |
+
|
90 |
+
- Fix: media selection works again
|
91 |
+
- Plugin was tested up to WordPress 5.6
|
92 |
+
|
93 |
+
= 1.3.19 =
|
94 |
+
|
95 |
+
- Plugin was tested up to WordPress 5.5.3
|
96 |
+
|
97 |
+
= 1.3.18 =
|
98 |
+
|
99 |
+
- Remove reference to deprecated function screen_icon
|
100 |
+
- Plugin was tested up to WordPress 5.4
|
101 |
+
|
102 |
+
= 1.3.17 =
|
103 |
+
|
104 |
+
- Changes to clear security warnings from CodeRisk
|
105 |
+
|
106 |
+
= 1.3.16 =
|
107 |
+
|
108 |
+
- Plugin was tested up to WordPress 5.3.2
|
109 |
+
|
110 |
+
= 1.3.15 =
|
111 |
+
|
112 |
+
- Plugin was tested up to WordPress 5.1
|
113 |
+
|
114 |
+
= 1.3.14 =
|
115 |
+
|
116 |
+
- Plugin was tested up to WordPress 5.0-beta5
|
117 |
+
|
118 |
+
= 1.3.13 =
|
119 |
+
|
120 |
+
- Plugin was tested up to WordPress 4.9.7
|
121 |
+
|
122 |
+
= 1.3.12 =
|
123 |
+
|
124 |
+
Never published, no change
|
125 |
+
|
126 |
+
= 1.3.11 =
|
127 |
+
|
128 |
+
- id/ID translation added, thanks to Jordan Silaen
|
129 |
+
- Plugin was tested up to WordPress 4.8.1
|
130 |
+
|
131 |
+
= 1.3.10 =
|
132 |
+
|
133 |
+
- Always access RealFaviconGenerator via HTTPS
|
134 |
+
- Clarification in local path separators for Windows
|
135 |
+
- Plugin was tested up to WordPress 4.7.1
|
136 |
+
- Notice to ask administrator to not deactivate the plugin
|
137 |
+
|
138 |
+
= 1.3.9 =
|
139 |
+
|
140 |
+
- Plugin was tested up to WordPress 4.7
|
141 |
+
|
142 |
+
= 1.3.8 =
|
143 |
+
|
144 |
+
- Plugin was tested up to WordPress 4.6
|
145 |
+
|
146 |
+
= 1.3.7 =
|
147 |
+
|
148 |
+
- Fix: Plugin keywords rephrased (some were not taken into account).
|
149 |
+
|
150 |
+
= 1.3.6 =
|
151 |
+
|
152 |
+
- Fix: the icons path was sometimes wrong when the upload directory was the root directory
|
153 |
+
|
154 |
+
= 1.3.5 =
|
155 |
+
|
156 |
+
- pl/PL translation added, thanks to Maciej Gryniuk
|
157 |
+
- ru/RU translation added, thanks to Natasha Diatko
|
158 |
+
|
159 |
+
= 1.3.4 =
|
160 |
+
|
161 |
+
- Plugin was tested up to WordPress 4.5
|
162 |
+
|
163 |
+
= 1.3.3 =
|
164 |
+
|
165 |
+
- Deactivate debug logs
|
166 |
+
|
167 |
+
= 1.3.2 =
|
168 |
+
|
169 |
+
- Typos in French translations
|
170 |
+
- Warning fix for PHP7
|
171 |
+
- Tested up to WordPress 4.4.1
|
172 |
+
- cs/CZ translation added, thanks to an anonymous translator
|
173 |
+
|
174 |
+
= 1.3.1 =
|
175 |
+
|
176 |
+
- Hotfix in previous version.
|
177 |
+
|
178 |
+
= 1.3.0 =
|
179 |
+
|
180 |
+
- The plugin takes advantage of RealFaviconGenerator's non-interactive API to upgrade the favicon automatically whenever a new version is available.
|
181 |
+
|
182 |
+
= 1.2.15 =
|
183 |
+
|
184 |
+
- Donation link added.
|
185 |
+
- Plugin now works when access to file system is via FTP (not direct). See https://wordpress.org/support/topic/no-images-created
|
186 |
+
|
187 |
+
= 1.2.14 =
|
188 |
+
|
189 |
+
- Security improvement.
|
190 |
+
- Warning fix regarding NONCE_ACTION_NAME.
|
191 |
+
- Useless PHP closing tags removed.
|
192 |
+
- Error checking added to favicon package unzipping.
|
193 |
+
|
194 |
+
= 1.2.13 =
|
195 |
+
|
196 |
+
- XSS vulnerability fixed, reported by [Kacper Szurek](http://security.szurek.pl/)
|
197 |
+
|
198 |
+
= 1.2.12 =
|
199 |
+
|
200 |
+
- Performance improvements: favicon update checking is now done in the Admin section (not the Public section), locales are not loaded in the Public section anymore.
|
201 |
+
- Take advantage of the Rewrite API (when available) to make the files appear to be in the root directory. So http://example.com/favicon.ico works (eg. when requested by Yandex).
|
202 |
+
- nl/NL translation added, thanks to Axel Vanderhaeghen.
|
203 |
+
|
204 |
+
= 1.2.11 =
|
205 |
+
|
206 |
+
- When the admin's browser cannot get the picture selected from the Media Library, the UI fails gracefully.
|
207 |
+
- Favicon package unzipping is more robust.
|
208 |
+
- Notice to ask users to rank the plugin on WordPress.org.
|
209 |
+
|
210 |
+
= 1.2.10 =
|
211 |
+
|
212 |
+
- Warning fix when used with BuddyPress (bp_setup_current_user). See https://wordpress.org/support/topic/wp_debug-notice-for-bp_setup_current_user.
|
213 |
+
|
214 |
+
= 1.2.9 =
|
215 |
+
|
216 |
+
- When selected from the Media Library, the master picture is now retrieved by WP administrator's browser to prevent several issues (locally hosted blogs, blogs protected in a way or another, etc.).
|
217 |
+
|
218 |
+
= 1.2.8 =
|
219 |
+
|
220 |
+
- Plugin successfully tested against WordPress 4.1.
|
221 |
+
|
222 |
+
= 1.2.7 =
|
223 |
+
|
224 |
+
- Fix for WordPress sites hosted on Windows.
|
225 |
+
|
226 |
+
= 1.2.6 =
|
227 |
+
|
228 |
+
- The plugin is now compatible with multisite.
|
229 |
+
|
230 |
+
= 1.2.5 =
|
231 |
+
|
232 |
+
- Fix for login page: favicon code was not injected in this particular page.
|
233 |
+
|
234 |
+
= 1.2.4 =
|
235 |
+
|
236 |
+
- Remove debug messages to avoid false positives in error log.
|
237 |
+
|
238 |
+
= 1.2.3 =
|
239 |
+
|
240 |
+
- Update notifications can be dismissed once for all.
|
241 |
+
- New Settings page to enable/disable update notifications.
|
242 |
+
|
243 |
+
= 1.2.2 =
|
244 |
+
|
245 |
+
- Fix for the 403 issue with HostGator hosting service (http://wordpress.org/support/topic/403-error-when-generating-favicon).
|
246 |
+
|
247 |
+
= 1.2.1 =
|
248 |
+
|
249 |
+
- Fix in plugin removal and update checking.
|
250 |
+
|
251 |
+
= 1.2.0 =
|
252 |
+
|
253 |
+
- The plugin now warns the user when RealFaviconGenerator was updated and the favicon should be generated again.
|
254 |
+
|
255 |
+
= 1.1.1 =
|
256 |
+
|
257 |
+
- Rewrite API usage disabled. Favicon files do not appear to be in the root directory of the blog anymore.
|
258 |
+
|
259 |
+
= 1.1.0 =
|
260 |
+
|
261 |
+
- Run RealFaviconGenerator's favicon checker from the admin interface.
|
262 |
+
|
263 |
+
= 1.0.7 =
|
264 |
+
|
265 |
+
- Deactivate default Genesis favicon when one is configured in FbRFG.
|
266 |
+
|
267 |
+
= 1.0.6 =
|
268 |
+
|
269 |
+
- Error management improved during favicon install.
|
270 |
+
|
271 |
+
= 1.0.5 =
|
272 |
+
|
273 |
+
- Do not try to rewrite the favicon files URL when .htaccess is not writable.
|
274 |
+
|
275 |
+
= 1.0.4 =
|
276 |
+
|
277 |
+
- Option to not rewrite the favicon files URL, even when this is possible.
|
278 |
+
|
279 |
+
= 1.0.3 =
|
280 |
+
|
281 |
+
- Plugin code syntax changed to fit older versions of PHP.
|
282 |
+
|
283 |
+
= 1.0.2 =
|
284 |
+
|
285 |
+
- Callback URL was too long for some servers. It has been shorten.
|
286 |
+
|
287 |
+
= 1.0.1 =
|
288 |
+
|
289 |
+
- Favicon admin settings are now in the Appearance menu.
|
290 |
+
- Fix in favicon package download.
|
291 |
+
- Fix in error management during favicon installation.
|
292 |
+
|
293 |
+
= 1.0 =
|
294 |
+
|
295 |
+
Initial version.
|
trunk/admin/assets/css/admin.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Copyright 2014-2016 RealFaviconGenerator */
|
2 |
+
|
3 |
+
.wrap img {
|
4 |
+
border: 2px solid #aaa;
|
5 |
+
}
|
trunk/admin/class-favicon-by-realfavicongenerator-admin.php
ADDED
@@ -0,0 +1,520 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
|
4 |
+
require_once plugin_dir_path( __FILE__ ) . '..' . DIRECTORY_SEPARATOR .
|
5 |
+
'public' . DIRECTORY_SEPARATOR . 'class-favicon-by-realfavicongenerator-common.php';
|
6 |
+
require_once plugin_dir_path( __FILE__ ) . 'class-favicon-by-realfavicongenerator-api-response.php';
|
7 |
+
|
8 |
+
class Favicon_By_RealFaviconGenerator_Admin extends Favicon_By_RealFaviconGenerator_Common {
|
9 |
+
|
10 |
+
const DISMISS_UPDATE_NOTIICATION = 'fbrfg_dismiss_update_notification';
|
11 |
+
const DISMISS_AUTOMATIC_UPDATE_NOTIICATION = 'fbrfg_dismiss_autmatic_update_notification';
|
12 |
+
const DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS = 'fbrfg_dismiss_all_update_notifications';
|
13 |
+
const SETTINGS_FORM = 'fbrfg_settings_form';
|
14 |
+
const NONCE_ACTION_NAME = 'favicon_generation';
|
15 |
+
|
16 |
+
protected static $instance = null;
|
17 |
+
|
18 |
+
private function __construct() {
|
19 |
+
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
|
20 |
+
|
21 |
+
add_action( 'admin_head', array( $this, 'add_favicon_markups' ) );
|
22 |
+
|
23 |
+
// Deactivate Genesis default favicon
|
24 |
+
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
25 |
+
|
26 |
+
// See
|
27 |
+
// - https://wordpress.org/support/topic/wp_debug-notice-for-bp_setup_current_user
|
28 |
+
// - https://buddypress.org/support/topic/wp_debug-notice-for-bp_setup_current_user
|
29 |
+
// The idea: is_super_admin must not be called too soon.
|
30 |
+
add_action( 'init', array( $this, 'register_admin_actions' ) );
|
31 |
+
|
32 |
+
// Check for updates
|
33 |
+
add_action( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE, array( $this, 'check_for_updates' ) );
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Return an instance of this class.
|
38 |
+
*
|
39 |
+
* @since 1.0
|
40 |
+
*
|
41 |
+
* @return object A single instance of this class.
|
42 |
+
*/
|
43 |
+
public static function get_instance() {
|
44 |
+
|
45 |
+
// If the single instance hasn't been set, set it now.
|
46 |
+
if ( null == self::$instance ) {
|
47 |
+
self::$instance = new self;
|
48 |
+
}
|
49 |
+
|
50 |
+
return self::$instance;
|
51 |
+
}
|
52 |
+
|
53 |
+
public function register_admin_actions() {
|
54 |
+
// Except for the headers, everything is accessible only to the admin
|
55 |
+
if ( ! is_super_admin() ) {
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
add_action( 'admin_menu',
|
60 |
+
array( $this, 'create_favicon_settings_menu' ) );
|
61 |
+
|
62 |
+
add_action('wp_ajax_' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon',
|
63 |
+
array( $this, 'install_new_favicon' ) );
|
64 |
+
add_action('wp_ajax_nopriv_' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon',
|
65 |
+
array( $this, 'install_new_favicon' ) );
|
66 |
+
|
67 |
+
// Update notice
|
68 |
+
add_action('admin_notices', array( $this, 'display_update_notice' ) );
|
69 |
+
add_action('admin_init', array( $this, 'process_ignored_notice' ) );
|
70 |
+
|
71 |
+
// Schedule update check
|
72 |
+
if ( ! wp_next_scheduled( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE ) ) {
|
73 |
+
wp_schedule_event( time(), 'daily', Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE );
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
public function create_favicon_settings_menu() {
|
78 |
+
add_theme_page( __( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
79 |
+
__( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), 'manage_options', __FILE__ . 'favicon_appearance_menu',
|
80 |
+
array( $this, 'create_favicon_appearance_page' ) );
|
81 |
+
|
82 |
+
add_options_page( __( 'Favicon Settings', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
83 |
+
__( 'Favicon', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), 'manage_options', __FILE__ . 'favicon_settings_menu',
|
84 |
+
array( $this, 'create_favicon_settings_page' ) );
|
85 |
+
}
|
86 |
+
|
87 |
+
public function create_favicon_settings_page() {
|
88 |
+
global $current_user;
|
89 |
+
|
90 |
+
$user_id = $current_user->ID;
|
91 |
+
|
92 |
+
// Prepare variables
|
93 |
+
$favicon_appearance_url = admin_url( 'themes.php?page=' . __FILE__ . 'favicon_appearance_menu' );
|
94 |
+
$favicon_admin_url = admin_url( 'options-general.php?page=' . __FILE__ . 'favicon_settings_menu' );
|
95 |
+
$display_update_notifications = ! $this->get_boolean_user_option(
|
96 |
+
Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE );
|
97 |
+
|
98 |
+
// Template time!
|
99 |
+
include_once( plugin_dir_path(__FILE__) . 'views' . DIRECTORY_SEPARATOR . 'settings.php' );
|
100 |
+
}
|
101 |
+
|
102 |
+
public function create_favicon_appearance_page() {
|
103 |
+
$result = NULL;
|
104 |
+
|
105 |
+
// Prepare settings page
|
106 |
+
|
107 |
+
// Option to allow user to not use the Rewrite API: display it only when the Rewrite API is available
|
108 |
+
// Due to too many problems with the rewrite API (for example, http://wordpress.org/support/topic/do-not-work-8),
|
109 |
+
// it was deciced to turn the feature off once for all
|
110 |
+
$can_rewrite = false;
|
111 |
+
|
112 |
+
$pic_path = $this->get_full_picture_path();
|
113 |
+
|
114 |
+
$favicon_configured = $this->is_favicon_configured();
|
115 |
+
$favicon_in_root = $this->is_favicon_in_root();
|
116 |
+
|
117 |
+
$preview_url = $this->is_preview_available() ? $this->get_preview_url() : NULL;
|
118 |
+
|
119 |
+
if ( isset( $_REQUEST['json_result_url'] ) ) {
|
120 |
+
// New favicon to install:
|
121 |
+
// Parameters will be processed with an Ajax call
|
122 |
+
|
123 |
+
$new_favicon_params_url = filter_var ( $_REQUEST['json_result_url'], FILTER_SANITIZE_URL );
|
124 |
+
$ajax_url = admin_url( 'admin-ajax.php', isset( $_SERVER['HTTPS'] ) ? 'https://' : 'http://' );
|
125 |
+
}
|
126 |
+
else {
|
127 |
+
// No new favicon, simply display the settings page
|
128 |
+
$new_favicon_params_url = NULL;
|
129 |
+
}
|
130 |
+
|
131 |
+
// Nonce
|
132 |
+
$nonce = wp_create_nonce( Favicon_By_RealFaviconGenerator_Admin::NONCE_ACTION_NAME );
|
133 |
+
|
134 |
+
// External files
|
135 |
+
wp_enqueue_script( 'jquery' );
|
136 |
+
wp_enqueue_script( 'jquery-ui' );
|
137 |
+
wp_enqueue_script( 'jquery-effects-pulsate' );
|
138 |
+
wp_enqueue_media();
|
139 |
+
wp_enqueue_style( 'fbrfg_admin_style', plugins_url(
|
140 |
+
'assets' . DIRECTORY_SEPARATOR . 'css' . DIRECTORY_SEPARATOR . 'admin.css',
|
141 |
+
__FILE__ ) );
|
142 |
+
|
143 |
+
// Template time!
|
144 |
+
include_once( plugin_dir_path(__FILE__) . 'views' . DIRECTORY_SEPARATOR .
|
145 |
+
'appearance.php' );
|
146 |
+
}
|
147 |
+
|
148 |
+
private function download_result_json( $url ) {
|
149 |
+
$resp = wp_remote_get( $url );
|
150 |
+
if ( is_wp_error( $resp )) {
|
151 |
+
throw new InvalidArgumentException( "Cannot download JSON file at " . htmlspecialchars( $url ) . ": " . $resp->get_error_message() );
|
152 |
+
}
|
153 |
+
|
154 |
+
$json = wp_remote_retrieve_body( $resp );
|
155 |
+
if ( empty( $json ) ) {
|
156 |
+
throw new InvalidArgumentException( "Empty JSON document at " . $url );
|
157 |
+
}
|
158 |
+
|
159 |
+
return $json;
|
160 |
+
}
|
161 |
+
|
162 |
+
public function install_new_favicon() {
|
163 |
+
header("Content-type: application/json");
|
164 |
+
|
165 |
+
try {
|
166 |
+
// URL is explicitely decoded to compensate the extra encoding performed while generating the settings page
|
167 |
+
$url = 'https://realfavicongenerator.net' . $_REQUEST['json_result_url'];
|
168 |
+
|
169 |
+
$result = $this->download_result_json( $url );
|
170 |
+
|
171 |
+
$response = new Favicon_By_RealFaviconGenerator_Api_Response( $result );
|
172 |
+
|
173 |
+
if ( ! wp_verify_nonce( $response->getCustomParameter(), Favicon_By_RealFaviconGenerator_Admin::NONCE_ACTION_NAME ) ) {
|
174 |
+
// Attack in progress?
|
175 |
+
?>
|
176 |
+
{
|
177 |
+
"status": "error",
|
178 |
+
"message": "<?php _e( 'Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you feel like something is wrong, please <a href=\"mailto:contact@realfavicongenerator.net\">contact us</a>.', FBRFG_PLUGIN_SLUG ) ?>"
|
179 |
+
}
|
180 |
+
<?php
|
181 |
+
}
|
182 |
+
else {
|
183 |
+
$zip_path = Favicon_By_RealFaviconGenerator_Common::get_tmp_dir();
|
184 |
+
if ( ! file_exists( $zip_path ) ) {
|
185 |
+
if ( mkdir( $zip_path, 0755, true ) !== true ) {
|
186 |
+
throw new InvalidArgumentException( sprintf( __( 'Cannot create directory %s to store the favicon package', FBRFG_PLUGIN_SLUG), $zip_path ) );
|
187 |
+
}
|
188 |
+
}
|
189 |
+
$response->downloadAndUnpack( $zip_path );
|
190 |
+
|
191 |
+
$this->store_pictures( $response );
|
192 |
+
|
193 |
+
$this->store_preview( $response->getPreviewPath() );
|
194 |
+
|
195 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $zip_path );
|
196 |
+
|
197 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE, $response->getHtmlCode() );
|
198 |
+
|
199 |
+
$this->set_favicon_configured( true, $response->isFilesInRoot(), $response->getVersion(), $response->getNonInteractiveAPIRequest() );
|
200 |
+
?>
|
201 |
+
{
|
202 |
+
"status": "success",
|
203 |
+
"preview_url": <?php echo json_encode( $this->get_preview_url() ) ?>,
|
204 |
+
"favicon_in_root": <?php echo json_encode( $this->is_favicon_in_root() ) ?>
|
205 |
+
}
|
206 |
+
<?php
|
207 |
+
}
|
208 |
+
}
|
209 |
+
catch(Exception $e) {
|
210 |
+
?>
|
211 |
+
{
|
212 |
+
"status": "error",
|
213 |
+
"message": <?php echo json_encode( $e->getMessage() ) ?>
|
214 |
+
}
|
215 |
+
<?php
|
216 |
+
}
|
217 |
+
|
218 |
+
die();
|
219 |
+
}
|
220 |
+
|
221 |
+
public function get_picture_dir() {
|
222 |
+
return Favicon_By_RealFaviconGenerator_Common::get_files_dir();
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Returns http//somesite.com/blog/wp-content/upload/fbrfg/
|
227 |
+
*/
|
228 |
+
public function get_picture_url() {
|
229 |
+
return Favicon_By_RealFaviconGenerator_Common::get_files_url();
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* Returns /blog/wp-content/upload/fbrfg/
|
234 |
+
*/
|
235 |
+
public function get_full_picture_path() {
|
236 |
+
return parse_url( $this->get_picture_url(), PHP_URL_PATH );
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Returns wp-content/upload/fbrfg/
|
241 |
+
*/
|
242 |
+
public function get_picture_path() {
|
243 |
+
return substr( $this->get_picture_url(), strlen( home_url() ) );
|
244 |
+
}
|
245 |
+
|
246 |
+
public function get_preview_path( $preview_file_name = NULL ) {
|
247 |
+
if ( ! $preview_file_name ) {
|
248 |
+
$preview_file_name = $this->get_preview_file_name();
|
249 |
+
}
|
250 |
+
return $this->get_picture_dir() . 'preview' . DIRECTORY_SEPARATOR .
|
251 |
+
$preview_file_name;
|
252 |
+
}
|
253 |
+
|
254 |
+
public function get_preview_url( $preview_file_name = NULL ) {
|
255 |
+
if ( ! $preview_file_name ) {
|
256 |
+
$preview_file_name = $this->get_preview_file_name();
|
257 |
+
}
|
258 |
+
return $this->get_picture_url() . '/preview/' . $preview_file_name;
|
259 |
+
}
|
260 |
+
|
261 |
+
public function store_preview( $preview_path ) {
|
262 |
+
// Remove previous preview, if any
|
263 |
+
$previous_preview = $this->get_preview_file_name();
|
264 |
+
if ( $previous_preview != NULL && ( file_exists( $this->get_preview_path( $previous_preview ) ) ) ) {
|
265 |
+
unlink( $this->get_preview_path( $previous_preview ) );
|
266 |
+
}
|
267 |
+
|
268 |
+
if ( $preview_path == NULL ) {
|
269 |
+
// "Unregister" previous preview, if any
|
270 |
+
$this->set_preview_file_name( NULL );
|
271 |
+
return NULL;
|
272 |
+
}
|
273 |
+
else {
|
274 |
+
$preview_file_name = 'preview_' . hash( 'sha256', 'RFB stuff here ' . rand() . microtime() ) . '.png';
|
275 |
+
}
|
276 |
+
|
277 |
+
if ( ! file_exists( dirname( $this->get_preview_path( $preview_file_name ) ) ) ) {
|
278 |
+
mkdir( dirname( $this->get_preview_path( $preview_file_name ) ), 0755 );
|
279 |
+
}
|
280 |
+
|
281 |
+
$this->portable_rename( $preview_path, $this->get_preview_path( $preview_file_name ) );
|
282 |
+
|
283 |
+
$this->set_preview_file_name( $preview_file_name );
|
284 |
+
}
|
285 |
+
|
286 |
+
public function store_pictures( $rfg_response ) {
|
287 |
+
$working_dir = $this->get_picture_dir();
|
288 |
+
|
289 |
+
// Move pictures to production directory
|
290 |
+
$files = glob( $working_dir . '*' );
|
291 |
+
foreach( $files as $file ) {
|
292 |
+
if ( is_file( $file ) ) {
|
293 |
+
unlink( $file );
|
294 |
+
}
|
295 |
+
}
|
296 |
+
$files = glob( $rfg_response->getProductionPackagePath() . '/*' );
|
297 |
+
foreach( $files as $file ) {
|
298 |
+
if ( is_file( $file ) ) {
|
299 |
+
$this->portable_rename( $file, $working_dir . basename( $file ) );
|
300 |
+
}
|
301 |
+
}
|
302 |
+
|
303 |
+
// Even if the package was not supposed to be put in root, make the files (also) appear at the root of the site
|
304 |
+
// So /favicon.ico works, for example.
|
305 |
+
// See https://wordpress.org/support/topic/choose-between-rewrite-api-and-dedicated-directory
|
306 |
+
if ( $this->can_access_pics_with_url_rewrite() ) {
|
307 |
+
$this->rewrite_pictures_url( $working_dir );
|
308 |
+
flush_rewrite_rules();
|
309 |
+
}
|
310 |
+
}
|
311 |
+
|
312 |
+
public function rewrite_pictures_url( $pic_dir ) {
|
313 |
+
foreach ( scandir( $pic_dir ) as $file ) {
|
314 |
+
if ( ! is_dir( $pic_dir . DIRECTORY_SEPARATOR . $file ) ) {
|
315 |
+
add_rewrite_rule( str_replace( '.', '\.', $file ),
|
316 |
+
trim( $this->get_picture_path(), '/' ) . '/' . $file );
|
317 |
+
}
|
318 |
+
}
|
319 |
+
}
|
320 |
+
|
321 |
+
/**
|
322 |
+
* Indicate if it is possible to create URLs such as /favicon.ico
|
323 |
+
*/
|
324 |
+
public function can_access_pics_with_url_rewrite() {
|
325 |
+
global $wp_rewrite;
|
326 |
+
|
327 |
+
// If blog is in root AND rewriting is available (http://wordpress.stackexchange.com/questions/142273/checking-that-the-rewrite-api-is-available),
|
328 |
+
// we can produce URLs such as /favicon.ico
|
329 |
+
$rewrite = ( $this->wp_in_root() && $wp_rewrite->using_permalinks() );
|
330 |
+
if ( ! $rewrite ) {
|
331 |
+
return false;
|
332 |
+
}
|
333 |
+
|
334 |
+
// See http://wordpress.org/support/topic/fbrfg-not-updating-htaccess-rewrite-rules
|
335 |
+
$htaccess = get_home_path() . DIRECTORY_SEPARATOR . '.htaccess';
|
336 |
+
// Two cases:
|
337 |
+
// - There is no .htaccess. Either we are not using Apache (so the Rewrite API is supposed to handle
|
338 |
+
// the rewriting differently) or there is a problem with Apache/WordPress config, but this is not our job.
|
339 |
+
// - .htaccess is present. If so, it should be writable.
|
340 |
+
return ( ( ! file_exists( $htaccess ) ) || is_writable( $htaccess ) );
|
341 |
+
}
|
342 |
+
|
343 |
+
/**
|
344 |
+
* Indicate if WP is installed in the root of the web site (eg. http://mysite.com) or not (eg. http://mysite.com/blog).
|
345 |
+
*/
|
346 |
+
public function wp_in_root() {
|
347 |
+
$path = parse_url( home_url(), PHP_URL_PATH );
|
348 |
+
return ( ($path == NULL) || (strlen( $path ) == 0) );
|
349 |
+
}
|
350 |
+
|
351 |
+
public function set_boolean_user_option( $option_name, $option_value ) {
|
352 |
+
global $current_user;
|
353 |
+
$user_id = $current_user->ID;
|
354 |
+
|
355 |
+
update_user_option( $user_id, $option_name, $option_value );
|
356 |
+
}
|
357 |
+
|
358 |
+
public function get_boolean_user_option( $option_name ) {
|
359 |
+
global $current_user;
|
360 |
+
$user_id = $current_user->ID;
|
361 |
+
|
362 |
+
return get_user_option( $option_name );
|
363 |
+
}
|
364 |
+
|
365 |
+
public function is_manual_update_notice_to_be_displayed() {
|
366 |
+
$this->log_info( 'Check if manual update notice should be displayed' );
|
367 |
+
|
368 |
+
if ( isset($_REQUEST['json_result_url'] ) ) {
|
369 |
+
$this->log_info( 'Favicon installation in progress, disable notice' );
|
370 |
+
return false;
|
371 |
+
}
|
372 |
+
|
373 |
+
// Did the user prevent all notices?
|
374 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE ) ) {
|
375 |
+
$this->log_info( 'User disabled all update notices' );
|
376 |
+
return false;
|
377 |
+
}
|
378 |
+
|
379 |
+
// No update
|
380 |
+
if ( $this->get_latest_manual_available_update() == NULL ) {
|
381 |
+
$this->log_info( 'There is no pending manual update' );
|
382 |
+
return false;
|
383 |
+
}
|
384 |
+
|
385 |
+
// Did the user prevent the notice for this particular version?
|
386 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE_FOR_VERSION . $this->get_latest_manual_available_update() ) ) {
|
387 |
+
$this->log_info( 'User disabled update notices for ' . $this->get_latest_manual_available_update() );
|
388 |
+
return false;
|
389 |
+
}
|
390 |
+
|
391 |
+
// If, for some reasons, the current version matches the "latest update",
|
392 |
+
// then the updated was already done.
|
393 |
+
$result = ( $this->get_latest_manual_available_update() != $this->get_favicon_current_version() );
|
394 |
+
$this->log_info( 'Compare current version (' . $this->get_favicon_current_version() . ') and latest update (' .
|
395 |
+
$this->get_latest_manual_available_update() . '): ' . ( $result ? 'true' : 'false' ) );
|
396 |
+
|
397 |
+
return $result;
|
398 |
+
}
|
399 |
+
|
400 |
+
public function is_automatic_update_notice_to_be_displayed() {
|
401 |
+
$this->log_info( 'Check if automatic update notice should be displayed' );
|
402 |
+
|
403 |
+
if ( isset($_REQUEST['json_result_url'] ) ) {
|
404 |
+
$this->log_info( 'Favicon installation in progress, disable notice' );
|
405 |
+
return false;
|
406 |
+
}
|
407 |
+
|
408 |
+
// Did the user prevent all notices?
|
409 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE ) ) {
|
410 |
+
$this->log_info( 'User disabled all update notices' );
|
411 |
+
return false;
|
412 |
+
}
|
413 |
+
|
414 |
+
$versions = $this->get_most_recent_automatic_update();
|
415 |
+
// Was there an update?
|
416 |
+
if ( $versions == NULL ) {
|
417 |
+
$this->log_info( 'There was no automatic update' );
|
418 |
+
return false;
|
419 |
+
}
|
420 |
+
|
421 |
+
// Did the user prevent the notice for this particular version?
|
422 |
+
if ( $this->get_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION . $versions[0] . '_' . $versions[1] ) ) {
|
423 |
+
$this->log_info( 'User disabled update notice for update from ' . $versions[0] . ' to ' . $versions[1] );
|
424 |
+
return false;
|
425 |
+
}
|
426 |
+
|
427 |
+
$this->log_info( 'Automatic update notice should be displayed' );
|
428 |
+
return true;
|
429 |
+
}
|
430 |
+
|
431 |
+
public function display_update_notice() {
|
432 |
+
if ( $this->is_manual_update_notice_to_be_displayed() ) {
|
433 |
+
$this->log_info( 'Display manual update notice' );
|
434 |
+
|
435 |
+
$description = $this->get_updates_description( $this->get_favicon_current_version(), $this->get_latest_manual_available_update() );
|
436 |
+
?>
|
437 |
+
<div class="update-nag">
|
438 |
+
<p>
|
439 |
+
<strong><?php _e( 'An update is available on RealFaviconGenerator:', FBRFG_PLUGIN_SLUG ) ?></strong>
|
440 |
+
</p>
|
441 |
+
|
442 |
+
<?php echo $description ?>
|
443 |
+
|
444 |
+
<p>
|
445 |
+
<?php printf( __( 'You might want to <a href="%s">generate your favicon again</a>',
|
446 |
+
FBRFG_PLUGIN_SLUG ), admin_url( 'themes.php?page=' . __FILE__ . 'favicon_appearance_menu') ) ?>
|
447 |
+
</p>
|
448 |
+
|
449 |
+
<p>
|
450 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION . '=0' ) ?>">
|
451 |
+
<?php _e( 'Hide this notice', FBRFG_PLUGIN_SLUG) ?>
|
452 |
+
</a>
|
453 |
+
|
|
454 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS . '=0' ) ?>">
|
455 |
+
<?php _e( 'Do not warn me again in case of update', FBRFG_PLUGIN_SLUG) ?>
|
456 |
+
</a>
|
457 |
+
</p>
|
458 |
+
</div>
|
459 |
+
<?php
|
460 |
+
}
|
461 |
+
else if ( $this->is_automatic_update_notice_to_be_displayed() ) {
|
462 |
+
$this->log_info( 'Display automatic update notice' );
|
463 |
+
|
464 |
+
$auto_versions = $this->get_most_recent_automatic_update();
|
465 |
+
$description = $this->get_updates_description( $auto_versions[0], $auto_versions[1] );
|
466 |
+
?>
|
467 |
+
<div class="update-nag">
|
468 |
+
<p><strong><?php _e( 'Your favicon was updated automatically:', FBRFG_PLUGIN_SLUG ) ?></strong></p>
|
469 |
+
|
470 |
+
<?php echo $description ?>
|
471 |
+
|
472 |
+
<p>
|
473 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION . '=0' ) ?>">
|
474 |
+
<?php _e( 'Hide this notice', FBRFG_PLUGIN_SLUG) ?>
|
475 |
+
</a>
|
476 |
+
|
|
477 |
+
<a href="<?php echo $this->add_parameter_to_current_url( Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS . '=0' ) ?>">
|
478 |
+
<?php _e( 'Do not warn me again in case of update', FBRFG_PLUGIN_SLUG) ?>
|
479 |
+
</a>
|
480 |
+
</p>
|
481 |
+
</div>
|
482 |
+
<?php
|
483 |
+
}
|
484 |
+
}
|
485 |
+
|
486 |
+
public function process_ignored_notice() {
|
487 |
+
global $current_user;
|
488 |
+
$user_id = $current_user->ID;
|
489 |
+
|
490 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION] ) &&
|
491 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_NOTIICATION] ) {
|
492 |
+
$this->log_info( 'Disable manual update notice for ' . $this->get_latest_manual_available_update() );
|
493 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE_FOR_VERSION . $this->get_latest_manual_available_update(), true );
|
494 |
+
}
|
495 |
+
|
496 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION] ) &&
|
497 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_AUTOMATIC_UPDATE_NOTIICATION] ) {
|
498 |
+
$versions = $this->get_most_recent_automatic_update();
|
499 |
+
$this->log_info( 'Disable automatic update notice for ' . $versions[0] . '-' . $versions[1] );
|
500 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION .
|
501 |
+
$versions[0] . '_' . $versions[1], true );
|
502 |
+
}
|
503 |
+
|
504 |
+
$no_notices = NULL;
|
505 |
+
if ( ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) &&
|
506 |
+
'0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) ) {
|
507 |
+
// The "no more notifications" link was clicked in the notification itself
|
508 |
+
$no_notices = true;
|
509 |
+
}
|
510 |
+
if ( isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM] ) &&
|
511 |
+
'1' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM] ) {
|
512 |
+
// The settings form was validated
|
513 |
+
$no_notices = ( ! isset( $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) ||
|
514 |
+
( '0' == $_REQUEST[Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS] ) );
|
515 |
+
}
|
516 |
+
if ( $no_notices !== NULL ) {
|
517 |
+
$this->set_boolean_user_option( Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE, $no_notices );
|
518 |
+
}
|
519 |
+
}
|
520 |
+
}
|
trunk/admin/class-favicon-by-realfavicongenerator-api-response.php
ADDED
@@ -0,0 +1,307 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
|
4 |
+
define( 'RFG_PACKAGE_URL', 'package_url' );
|
5 |
+
define( 'RFG_COMPRESSION', 'compression' );
|
6 |
+
define( 'RFG_HTML_CODE', 'html_code' );
|
7 |
+
define( 'RFG_FILES_URLS', 'files_url' );
|
8 |
+
define( 'RFG_FILES_IN_ROOT', 'files_in_root' );
|
9 |
+
define( 'RFG_FILES_PATH', 'files_path' );
|
10 |
+
define( 'RFG_PREVIEW_PICTURE_URL', 'preview_picture_url' );
|
11 |
+
define( 'RFG_CUSTOM_PARAMETER', 'custom_parameter' );
|
12 |
+
define( 'RFG_VERSION', 'version' );
|
13 |
+
define( 'RFG_NON_INTERACTIVE_API_REQUEST', 'non_interactive_api_request' );
|
14 |
+
|
15 |
+
define( 'RFG_FAVICON_PRODUCTION_PACKAGE_PATH', 'favicon_production_package_path' );
|
16 |
+
define( 'RFG_FAVICON_COMPRESSED_PACKAGE_PATH', 'favicon_compressed_package_path' );
|
17 |
+
define( 'RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH', 'favicon_uncompressed_package_path' );
|
18 |
+
define( 'RFG_PREVIEW_PATH', 'preview_path' );
|
19 |
+
|
20 |
+
class Favicon_By_RealFaviconGenerator_Api_Response {
|
21 |
+
|
22 |
+
private $params = array();
|
23 |
+
|
24 |
+
public function __construct( $json ) {
|
25 |
+
if ( $json == NULL ) {
|
26 |
+
throw new InvalidArgumentException( "No response from RealFaviconGenerator" );
|
27 |
+
}
|
28 |
+
|
29 |
+
$response = json_decode( $json, true );
|
30 |
+
|
31 |
+
if ( $response == NULL ) {
|
32 |
+
throw new InvalidArgumentException( "JSON could not be parsed" );
|
33 |
+
}
|
34 |
+
|
35 |
+
$response = $this->getParam( $response, 'favicon_generation_result' );
|
36 |
+
$result = $this->getParam( $response, 'result' );
|
37 |
+
$status = $this->getParam( $result, 'status' );
|
38 |
+
|
39 |
+
if ( $status != 'success' ) {
|
40 |
+
$msg = $this->getParam( $result, 'error_message', false );
|
41 |
+
$msg = $msg != NULL ? $msg : 'An error occured';
|
42 |
+
throw new InvalidArgumentException( $msg );
|
43 |
+
}
|
44 |
+
|
45 |
+
$favicon = $this->getParam( $response, 'favicon' );
|
46 |
+
$this->params[RFG_PACKAGE_URL] = $this->getParam( $favicon, 'package_url' );
|
47 |
+
$this->params[RFG_COMPRESSION] = $this->getParam( $favicon, 'compression' ) == 'true';
|
48 |
+
$this->params[RFG_HTML_CODE] = $this->getParam( $favicon, 'html_code' );
|
49 |
+
$this->params[RFG_FILES_URLS] = $this->getParam( $favicon, 'files_urls' );
|
50 |
+
|
51 |
+
$filesLoc = $this->getParam( $response, 'files_location' );
|
52 |
+
$this->params[RFG_FILES_IN_ROOT] = $this->getParam( $filesLoc, 'type' ) == 'root';
|
53 |
+
$this->params[RFG_FILES_PATH] = $this->params[RFG_FILES_IN_ROOT] ? '/' : $this->getParam( $filesLoc, 'path' );
|
54 |
+
|
55 |
+
$this->params[RFG_PREVIEW_PICTURE_URL] = $this->getParam( $response, 'preview_picture_url', false );
|
56 |
+
|
57 |
+
$this->params[RFG_CUSTOM_PARAMETER] = $this->getParam( $response, 'custom_parameter', false );
|
58 |
+
$this->params[RFG_VERSION] = $this->getParam($response, 'version', false );
|
59 |
+
|
60 |
+
$this->params[RFG_NON_INTERACTIVE_API_REQUEST] = $this->getParam($response, 'non_interactive_request', false );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* For example: <code>"http://realfavicongenerator.net/files/1234f5d2s34f3ds2/package.zip"</code>
|
65 |
+
*/
|
66 |
+
public function getPackageUrl() {
|
67 |
+
return $this->params[RFG_PACKAGE_URL];
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* For example: <code>array( "http://realfavicongenerator.net/files/1234f5d2s34f3ds2/apple-touch-icon.png", ... )</code>
|
72 |
+
*/
|
73 |
+
public function getFilesURLs() {
|
74 |
+
return $this->params[RFG_FILES_URLS];
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* For example: <code>"<link ..."</code>
|
79 |
+
*/
|
80 |
+
public function getHtmlCode() {
|
81 |
+
return $this->params[RFG_HTML_CODE];
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* <code>true</code> if the user chose to compress the pictures, <code>false</code> otherwise.
|
86 |
+
*/
|
87 |
+
public function isCompressed() {
|
88 |
+
return $this->params[RFG_COMPRESSION];
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* <code>true</code> if the favicon files are to be stored in the root directory of the target web site, <code>false</code> otherwise.
|
93 |
+
*/
|
94 |
+
public function isFilesInRoot() {
|
95 |
+
return $this->params[RFG_FILES_IN_ROOT];
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Indicate where the favicon files should be stored in the target web site. For example: <code>"/"</code>, <code>"/path/to/icons"</code>.
|
100 |
+
*/
|
101 |
+
public function getFilesLocation() {
|
102 |
+
return $this->params[RFG_FILES_PATH];
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* For example: <code>"http://realfavicongenerator.net/files/1234f5d2s34f3ds2/preview.png"</code>
|
107 |
+
*/
|
108 |
+
public function getPreviewUrl() {
|
109 |
+
return $this->params[RFG_PREVIEW_PICTURE_URL];
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Return the customer parameter, as it was transmitted during the invocation of the API.
|
114 |
+
*/
|
115 |
+
public function getCustomParameter() {
|
116 |
+
return $this->params[RFG_CUSTOM_PARAMETER];
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Return version of RealFaviconGenerator used to generate the favicon. Save this value to later check for updates.
|
121 |
+
*/
|
122 |
+
public function getVersion() {
|
123 |
+
return $this->params[RFG_VERSION];
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Return the non-interactive API request that matches the current interactive request.
|
128 |
+
*/
|
129 |
+
public function getNonInteractiveAPIRequest() {
|
130 |
+
return $this->params[RFG_NON_INTERACTIVE_API_REQUEST];
|
131 |
+
}
|
132 |
+
|
133 |
+
private function getParam( $params, $paramName, $throwIfNotFound = true ) {
|
134 |
+
if ( isset( $params[$paramName] ) ) {
|
135 |
+
return $params[$paramName];
|
136 |
+
}
|
137 |
+
else if ( $throwIfNotFound ) {
|
138 |
+
throw new InvalidArgumentException( "Cannot find parameter " . $paramName );
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Download and extract the files referenced by the response sent back by RealFaviconGenerator.
|
144 |
+
*
|
145 |
+
* Warning: as this method does HTTP accesses, calling it can take a few seconds. Better invoke it
|
146 |
+
* in an Ajax call, to not slow down the user experience.
|
147 |
+
*/
|
148 |
+
public function downloadAndUnpack( $outputDirectory = NULL ) {
|
149 |
+
global $wp_filesystem;
|
150 |
+
if ( $outputDirectory == NULL ) {
|
151 |
+
$outputDirectory = get_temp_dir();
|
152 |
+
}
|
153 |
+
|
154 |
+
$outputDirectory = $this->append_directory_separator( $outputDirectory );
|
155 |
+
|
156 |
+
if ( $this->getPackageUrl() != NULL ) {
|
157 |
+
$extractedPath = $outputDirectory . 'favicon_package';
|
158 |
+
if ( ! file_exists( $extractedPath ) ) {
|
159 |
+
if ( mkdir( $extractedPath, 0755, true ) !== true ) {
|
160 |
+
throw new InvalidArgumentException(
|
161 |
+
sprintf( __( 'Cannot create directory %s to store the favicon package content', FBRFG_PLUGIN_SLUG), $extractedPath ) );
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
try {
|
166 |
+
$this->downloadZipFile( $outputDirectory, $extractedPath, $this->getPackageUrl() );
|
167 |
+
}
|
168 |
+
catch(Exception $e) {
|
169 |
+
// Zip file download failed, try getting files directly
|
170 |
+
$this->downloadFilesDirectly( $extractedPath, array() );
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
if ( $this->getPreviewUrl() != NULL ) {
|
175 |
+
$previewPath = $outputDirectory . 'favicon_preview.png';
|
176 |
+
$this->downloadFile( $previewPath, $this->getPreviewUrl() );
|
177 |
+
$this->params[RFG_PREVIEW_PATH] = $previewPath;
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
public function downloadFilesDirectly( $outputDirectory, $filesURLs ) {
|
182 |
+
foreach($this->getFilesURLs() as $fileURL ) {
|
183 |
+
$parts = parse_url( $fileURL );
|
184 |
+
$filePath = $outputDirectory . DIRECTORY_SEPARATOR .
|
185 |
+
basename( $parts['path'] );
|
186 |
+
$this->downloadFile( $filePath, $fileURL );
|
187 |
+
}
|
188 |
+
|
189 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $outputDirectory;
|
190 |
+
if ( $this->isCompressed() ) {
|
191 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath;
|
192 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = NULL;
|
193 |
+
}
|
194 |
+
else {
|
195 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = NULL;
|
196 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
public function downloadZipFile( $packageDirectory, $extractedPath, $packageUrl ) {
|
201 |
+
$packagePath = $packageDirectory . 'favicon_package.zip';
|
202 |
+
$this->downloadFile( $packagePath, $packageUrl );
|
203 |
+
|
204 |
+
$ret = WP_Filesystem();
|
205 |
+
$result = unzip_file( $packagePath, $extractedPath );
|
206 |
+
if ( $result !== true ) {
|
207 |
+
$explanation = ( is_wp_error( $result ) )
|
208 |
+
? $result->get_error_message()
|
209 |
+
: __( 'Unknown reason', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG );
|
210 |
+
if ( get_class($wp_filesystem) != 'WP_Filesystem_Direct' ) {
|
211 |
+
$explanation .= ' ' . __( "Apparently WordPress has no direct access to the file system (it uses another mean such as FTP). " .
|
212 |
+
"This may be the root cause of this issue.", Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG );
|
213 |
+
}
|
214 |
+
throw new InvalidArgumentException(
|
215 |
+
sprintf( __( 'Error while unziping the favicon package %s to directory %s', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ),
|
216 |
+
$packagePath, $extractedPath ) . ': ' . $explanation );
|
217 |
+
}
|
218 |
+
|
219 |
+
if ( $this->isCompressed() ) {
|
220 |
+
// As of today, when the user chooses the compress the picture,
|
221 |
+
// the package is provided in two flavors, in two distinct directories.
|
222 |
+
// Later, only the compressed version will be provided. Thus, the following code
|
223 |
+
// handles both scenarios.
|
224 |
+
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'compressed' ) ) {
|
225 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath .
|
226 |
+
DIRECTORY_SEPARATOR . 'compressed';
|
227 |
+
} else {
|
228 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = $extractedPath;
|
229 |
+
}
|
230 |
+
|
231 |
+
if ( is_dir( $extractedPath . DIRECTORY_SEPARATOR . 'uncompressed' ) ) {
|
232 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath .
|
233 |
+
DIRECTORY_SEPARATOR . 'uncompressed';
|
234 |
+
} else {
|
235 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
236 |
+
}
|
237 |
+
|
238 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH];
|
239 |
+
}
|
240 |
+
else {
|
241 |
+
$this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH] = NULL;
|
242 |
+
$this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH] = $extractedPath;
|
243 |
+
$this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH] = $this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH];
|
244 |
+
}
|
245 |
+
}
|
246 |
+
|
247 |
+
/**
|
248 |
+
* Directory where the compressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
249 |
+
* Can be <code>NULL</code>.
|
250 |
+
*/
|
251 |
+
public function getCompressedPackagePath() {
|
252 |
+
return $this->params[RFG_FAVICON_COMPRESSED_PACKAGE_PATH];
|
253 |
+
}
|
254 |
+
|
255 |
+
/**
|
256 |
+
* Directory where the uncompressed files are stored. Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
257 |
+
* Can be <code>NULL</code>.
|
258 |
+
*/
|
259 |
+
public function getUncompressedPackagePath() {
|
260 |
+
return $this->params[RFG_FAVICON_UNCOMPRESSED_PACKAGE_PATH];
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Directory where the production favicon files are stored.
|
265 |
+
* These are the files to deployed to the targeted web site. When the user asked for compression,
|
266 |
+
* this is the path to the compressed folder. Else, this is the path to the regular files folder.
|
267 |
+
* Method <code>downloadAndUnpack</code> must be called first in order to populate this field.
|
268 |
+
*/
|
269 |
+
public function getProductionPackagePath() {
|
270 |
+
return $this->params[RFG_FAVICON_PRODUCTION_PACKAGE_PATH];
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Path to the preview picture.
|
275 |
+
*/
|
276 |
+
public function getPreviewPath() {
|
277 |
+
return $this->params[RFG_PREVIEW_PATH];
|
278 |
+
}
|
279 |
+
|
280 |
+
private function downloadFile( $localPath, $url ) {
|
281 |
+
$resp = wp_remote_get( $url, array( 'filename' => $localPath, 'stream' => true ) );
|
282 |
+
if ( ( $resp == NULL ) || ( $resp == false ) || ( is_wp_error( $resp ) ) || ( $resp['response'] == NULL ) ||
|
283 |
+
( $resp['response']['code'] == NULL ) || ( $resp['response']['code'] != 200 ) ) {
|
284 |
+
$explanation = is_wp_error( $resp ) ? ( ': ' . $resp->get_error_message() ) : '' ;
|
285 |
+
throw new InvalidArgumentException(
|
286 |
+
sprintf( __( 'Cannot download file at %s', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ), $url ) . $explanation );
|
287 |
+
}
|
288 |
+
if ( ( ! file_exists( $localPath ) ) || ( filesize( $localPath ) <= 0 ) ) {
|
289 |
+
throw new InvalidArgumentException( __( 'Cannot store downloaded file locally', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG ) );
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
public function append_directory_separator( $filename ) {
|
294 |
+
return $filename .
|
295 |
+
( ( $this->ends_with( $filename, DIRECTORY_SEPARATOR ))
|
296 |
+
? ''
|
297 |
+
: DIRECTORY_SEPARATOR );
|
298 |
+
}
|
299 |
+
|
300 |
+
// See http://stackoverflow.com/questions/834303/startswith-and-endswith-functions-in-php#answer-10473026
|
301 |
+
public function ends_with( $haystack, $needle ) {
|
302 |
+
return $needle === "" ||
|
303 |
+
( ( $temp = strlen( $haystack ) - strlen( $needle ) ) >= 0
|
304 |
+
&& strpos( $haystack, $needle, $temp ) !== false );
|
305 |
+
}
|
306 |
+
|
307 |
+
}
|
trunk/admin/views/appearance.php
ADDED
@@ -0,0 +1,317 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
?>
|
4 |
+
|
5 |
+
<div class="wrap">
|
6 |
+
|
7 |
+
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
8 |
+
|
9 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
10 |
+
<div id="install_in_progress_message" class="updated">
|
11 |
+
<p><?php _e( 'Favicon installation in progress. Please wait...', FBRFG_PLUGIN_SLUG ) ?></p>
|
12 |
+
</div>
|
13 |
+
|
14 |
+
<div id="install_completed_message" class="updated" style="display:none">
|
15 |
+
<p>
|
16 |
+
<?php _e( 'Favicon installed!', FBRFG_PLUGIN_SLUG ) ?>
|
17 |
+
<span id="rank_notice" style="display:none">
|
18 |
+
<?php printf( __( 'Do you like the result? If so, would you like to <a %s>rate the plugin</a>?', FBRFG_PLUGIN_SLUG ),
|
19 |
+
'target="_blank" href="https://wordpress.org/support/view/plugin-reviews/favicon-by-realfavicongenerator"' ) ?>
|
20 |
+
</span>
|
21 |
+
</p>
|
22 |
+
</div>
|
23 |
+
<div id="install_error_message" class="error" style="display:none"><p></p></div>
|
24 |
+
|
25 |
+
<div id="install_completed_container" style="display:none">
|
26 |
+
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
27 |
+
|
28 |
+
<?php include_once( plugin_dir_path(__FILE__) . DIRECTORY_SEPARATOR .
|
29 |
+
'keep_active_notice.php' ); ?>
|
30 |
+
|
31 |
+
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
32 |
+
<img id="preview_image">
|
33 |
+
|
34 |
+
<p>
|
35 |
+
<?php printf( __( '<a %s>Check your favicon</a> with RealFaviconGenerator\'s favicon checker.', FBRFG_PLUGIN_SLUG ),
|
36 |
+
'id="checker_link" class="button-primary" href="#"' ) ?>
|
37 |
+
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
38 |
+
</p>
|
39 |
+
</div>
|
40 |
+
<?php } else { ?>
|
41 |
+
<h3><?php _e( 'Current favicon', FBRFG_PLUGIN_SLUG ) ?></h3>
|
42 |
+
|
43 |
+
<?php if ( $favicon_configured) { ?>
|
44 |
+
<?php include_once( plugin_dir_path(__FILE__) . DIRECTORY_SEPARATOR .
|
45 |
+
'keep_active_notice.php' ); ?>
|
46 |
+
<p><?php _e( 'The favicon is up and ready.', FBRFG_PLUGIN_SLUG ) ?></p>
|
47 |
+
<?php } else { ?>
|
48 |
+
<p><?php _e( 'No favicon has been configured yet.', FBRFG_PLUGIN_SLUG ) ?></p>
|
49 |
+
<?php } ?>
|
50 |
+
|
51 |
+
<?php if ( $favicon_configured ) {
|
52 |
+
if ( $preview_url ) { ?>
|
53 |
+
|
54 |
+
<img src="<?php echo $preview_url ?>">
|
55 |
+
|
56 |
+
<?php } ?>
|
57 |
+
<p>
|
58 |
+
<?php printf( __( '<a %s>Check your favicon</a> with RealFaviconGenerator\'s favicon checker.', FBRFG_PLUGIN_SLUG ),
|
59 |
+
'class="button-primary" ' .
|
60 |
+
'href="https://realfavicongenerator.net/favicon_checker?site=' . urlencode( home_url() ) . ($favicon_in_root ? '' : '&ignore_root_issues=on') . '"' ) ?>
|
61 |
+
<?php _e( 'This option works only if your site is accessible from the outside.', FBRFG_PLUGIN_SLUG ) ?>
|
62 |
+
</p>
|
63 |
+
<?php
|
64 |
+
}
|
65 |
+
} ?>
|
66 |
+
|
67 |
+
<div id="favicon_form_container" <?php echo $new_favicon_params_url ? 'style="display:none"' : '' ?>>
|
68 |
+
<h3><?php _e( 'Favicon generation', FBRFG_PLUGIN_SLUG ) ?></h3>
|
69 |
+
<?php if ( $favicon_configured || $new_favicon_params_url ) { ?>
|
70 |
+
<p><?php _e( 'You can replace the existing favicon.', FBRFG_PLUGIN_SLUG ) ?></p>
|
71 |
+
<?php } ?>
|
72 |
+
<form role="form" method="post" action="https://realfavicongenerator.net/api/favicon_generator" id="favicon_form">
|
73 |
+
<input type="hidden" name="json_params" id="json_params"/>
|
74 |
+
<table class="form-table"><tbody>
|
75 |
+
<tr valign="top">
|
76 |
+
<th scope="row">
|
77 |
+
<label for="master_picture_url"><?php _e( 'Master picture URL', FBRFG_PLUGIN_SLUG ) ?></label>
|
78 |
+
</th>
|
79 |
+
<td>
|
80 |
+
<input id="master_picture_url" name="master_picture_url" size="55">
|
81 |
+
<button id="upload_image_button" value="<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>">
|
82 |
+
<?php _e( 'Select from the Media Library', FBRFG_PLUGIN_SLUG ) ?>
|
83 |
+
</button>
|
84 |
+
<p class="description">
|
85 |
+
<?php _e( 'Submit a square picture, at least 70x70 (recommended: 260x260 or more)', FBRFG_PLUGIN_SLUG ) ?>
|
86 |
+
<br>
|
87 |
+
<?php _e( 'If the picture is on your hard drive, you can leave this field blank and upload the picture from RealFaviconGenerator.', FBRFG_PLUGIN_SLUG ) ?>
|
88 |
+
</p>
|
89 |
+
</td>
|
90 |
+
</tr>
|
91 |
+
|
92 |
+
<?php if ( $can_rewrite ) { ?>
|
93 |
+
<tr valign="top">
|
94 |
+
<th scope="row">
|
95 |
+
<label for="rewrite"><?php _e( 'Favicon files in root directory', FBRFG_PLUGIN_SLUG ) ?></label>
|
96 |
+
</th>
|
97 |
+
<td>
|
98 |
+
<input type="checkbox" name="rewrite" id="rewrite" checked="true">
|
99 |
+
<p class="description">
|
100 |
+
<?php _e( 'The plugin always stores the favicon files in a dedicated directory.', FBRFG_PLUGIN_SLUG ) ?>
|
101 |
+
<br>
|
102 |
+
<?php _e( 'However, if this option is enabled, the plugin takes advantage of the permalink feature and the favicon files appear to be in the root directory', FBRFG_PLUGIN_SLUG ) ?>
|
103 |
+
(<a href="https://realfavicongenerator.net/faq#why_icons_in_root"><?php _e( 'recommended', FBRFG_PLUGIN_SLUG ) ?></a>)
|
104 |
+
</p>
|
105 |
+
</td>
|
106 |
+
</tr>
|
107 |
+
<?php } ?>
|
108 |
+
</tbody></table>
|
109 |
+
|
110 |
+
<p class="submit">
|
111 |
+
<input type="submit" name="Generate favicon" id="generate_favicon_button" class="button-primary"
|
112 |
+
value="<?php _e( 'Generate favicon', FBRFG_PLUGIN_SLUG ) ?>">
|
113 |
+
</p>
|
114 |
+
</form>
|
115 |
+
</div>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<script type="text/javascript">
|
119 |
+
var picData = null;
|
120 |
+
|
121 |
+
function urlToBase64(url, callback) {
|
122 |
+
var img = new Image();
|
123 |
+
img.onload = function() {
|
124 |
+
callback(getBase64Image(img));
|
125 |
+
}
|
126 |
+
img.onerror = function() {
|
127 |
+
callback(null);
|
128 |
+
}
|
129 |
+
img.src = url;
|
130 |
+
}
|
131 |
+
|
132 |
+
// See http://stackoverflow.com/questions/934012/get-image-data-in-javascript
|
133 |
+
// Credits: Matthew Crumley
|
134 |
+
function getBase64Image(img) {
|
135 |
+
try {
|
136 |
+
var canvas = document.createElement("canvas");
|
137 |
+
canvas.width = img.width;
|
138 |
+
canvas.height = img.height;
|
139 |
+
|
140 |
+
var ctx = canvas.getContext("2d");
|
141 |
+
ctx.drawImage(img, 0, 0);
|
142 |
+
|
143 |
+
var dataURL = canvas.toDataURL("image/png");
|
144 |
+
|
145 |
+
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
|
146 |
+
}
|
147 |
+
catch(err) {
|
148 |
+
console.log("Cannot get the picture from the Media Library: " + err);
|
149 |
+
return null;
|
150 |
+
}
|
151 |
+
}
|
152 |
+
|
153 |
+
function computeJson() {
|
154 |
+
var params = { favicon_generation: {
|
155 |
+
callback: {},
|
156 |
+
master_picture: {},
|
157 |
+
files_location: {},
|
158 |
+
api_key: "87d5cd739b05c00416c4a19cd14a8bb5632ea563"
|
159 |
+
}};
|
160 |
+
|
161 |
+
if (jQuery('#master_picture_url').val().length <= 0) {
|
162 |
+
params.favicon_generation.master_picture.type = "no_picture";
|
163 |
+
params.favicon_generation.master_picture.demo = true;
|
164 |
+
}
|
165 |
+
else if (pictureContent != null) {
|
166 |
+
params.favicon_generation.master_picture.type = "inline";
|
167 |
+
params.favicon_generation.master_picture.content = pictureContent;
|
168 |
+
}
|
169 |
+
else {
|
170 |
+
params.favicon_generation.master_picture.type = "url";
|
171 |
+
params.favicon_generation.master_picture.url = jQuery('#master_picture_url').val();
|
172 |
+
}
|
173 |
+
|
174 |
+
<?php if ( $can_rewrite ) { ?>
|
175 |
+
if ( jQuery("#rewrite").is(':checked') ) {
|
176 |
+
params.favicon_generation.files_location.type = 'root';
|
177 |
+
}
|
178 |
+
else {
|
179 |
+
params.favicon_generation.files_location.type = 'path';
|
180 |
+
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
181 |
+
}
|
182 |
+
<?php } else { ?>
|
183 |
+
params.favicon_generation.files_location.type = 'path';
|
184 |
+
params.favicon_generation.files_location.path = '<?php echo $pic_path ?>';
|
185 |
+
<?php } ?>
|
186 |
+
|
187 |
+
params.favicon_generation.callback.type = 'url';
|
188 |
+
params.favicon_generation.callback.url = "<?php echo admin_url('themes.php?page=' . ( ( isset( $_REQUEST['page'] ) )
|
189 |
+
? $_REQUEST['page']
|
190 |
+
: 'favicon-by-realfavicongenerator/admin/class-favicon-by-realfavicongenerator-admin.phpfavicon_appearance_menu' ) ) ?>";
|
191 |
+
params.favicon_generation.callback.short_url = 'true';
|
192 |
+
params.favicon_generation.callback.path_only = 'true';
|
193 |
+
params.favicon_generation.callback.custom_parameter = "<?php echo $nonce ?>";
|
194 |
+
|
195 |
+
return params;
|
196 |
+
}
|
197 |
+
|
198 |
+
var pictureContent = null;
|
199 |
+
var pictureContentTimestamp = null;
|
200 |
+
|
201 |
+
function prepareInlinePicture(pictureUrl) {
|
202 |
+
var timestamp = new Date().getTime();
|
203 |
+
pictureContentTimestamp = timestamp;
|
204 |
+
|
205 |
+
jQuery('#generate_favicon_button').attr('disabled', 'disabled');
|
206 |
+
jQuery('#generate_favicon_button').val("<?php _e( 'Preparing master picture...', FBRFG_PLUGIN_SLUG ) ?>");
|
207 |
+
|
208 |
+
pictureContent = null;
|
209 |
+
|
210 |
+
urlToBase64(pictureUrl, function(content) {
|
211 |
+
if (content != null) {
|
212 |
+
pictureContent = content;
|
213 |
+
}
|
214 |
+
restoreGenerateFaviconButton();
|
215 |
+
});
|
216 |
+
|
217 |
+
setTimeout(function() {
|
218 |
+
if (pictureContentTimestamp == timestamp) {
|
219 |
+
restoreGenerateFaviconButton();
|
220 |
+
}
|
221 |
+
}, 3000);
|
222 |
+
}
|
223 |
+
|
224 |
+
function restoreGenerateFaviconButton() {
|
225 |
+
jQuery('#generate_favicon_button').removeAttr('disabled');
|
226 |
+
jQuery('#generate_favicon_button').val("<?php _e( 'Generate favicon', FBRFG_PLUGIN_SLUG ) ?>");
|
227 |
+
}
|
228 |
+
|
229 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
230 |
+
var data = {
|
231 |
+
action: '<?php echo Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '_install_new_favicon' ?>',
|
232 |
+
json_result_url: '<?php echo $new_favicon_params_url ?>'
|
233 |
+
};
|
234 |
+
<?php } ?>
|
235 |
+
|
236 |
+
jQuery(document).ready(function() {
|
237 |
+
jQuery('#favicon_form').submit(function(e) {
|
238 |
+
jQuery('#json_params').val(JSON.stringify(computeJson()));
|
239 |
+
});
|
240 |
+
|
241 |
+
<?php if ( $new_favicon_params_url ) { ?>
|
242 |
+
jQuery.get('<?php echo $ajax_url ?>', data)
|
243 |
+
.done(function(response) {
|
244 |
+
if (response.status == 'success') {
|
245 |
+
jQuery('#preview_image').attr('src', response.preview_url);
|
246 |
+
var checkerUrl = "https://realfavicongenerator.net/favicon_checker?site=<?php echo urlencode( home_url() ) ?>" +
|
247 |
+
(response.favicon_in_root ? '' : '&ignore_root_issues=on');
|
248 |
+
jQuery('#checker_link').attr('href', checkerUrl);
|
249 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
250 |
+
jQuery('#install_completed_message').fadeIn(function() {
|
251 |
+
jQuery('#rank_notice').fadeIn(function() {
|
252 |
+
jQuery('#rank_notice').effect('pulsate', {
|
253 |
+
times: 3,
|
254 |
+
duration: 2000
|
255 |
+
});
|
256 |
+
});
|
257 |
+
});
|
258 |
+
jQuery('#install_completed_container').fadeIn();
|
259 |
+
jQuery('#favicon_form_container').fadeIn();
|
260 |
+
});
|
261 |
+
}
|
262 |
+
else {
|
263 |
+
var msg = "<?php _e( "An error occured", FBRFG_PLUGIN_SLUG ) ?>";
|
264 |
+
if (response.message != null) {
|
265 |
+
msg += ": " + response.message;
|
266 |
+
}
|
267 |
+
jQuery('#install_error_message p').html(msg);
|
268 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
269 |
+
jQuery('#install_error_message').fadeIn();
|
270 |
+
});
|
271 |
+
}
|
272 |
+
})
|
273 |
+
.fail(function() {
|
274 |
+
var msg = "<?php _e( "An internal error occurred", FBRFG_PLUGIN_SLUG ) ?>";
|
275 |
+
jQuery('#install_error_message p').html(msg);
|
276 |
+
jQuery('#install_in_progress_message').fadeOut(function() {
|
277 |
+
jQuery('#install_error_message').fadeIn();
|
278 |
+
});
|
279 |
+
});
|
280 |
+
<?php } ?>
|
281 |
+
|
282 |
+
var fileFrame;
|
283 |
+
|
284 |
+
jQuery('#upload_image_button').on('click', function(event) {
|
285 |
+
event.preventDefault();
|
286 |
+
|
287 |
+
if (fileFrame) {
|
288 |
+
fileFrame.open();
|
289 |
+
return;
|
290 |
+
}
|
291 |
+
|
292 |
+
// Create the media frame.
|
293 |
+
fileFrame = wp.media.frames.file_frame = wp.media({
|
294 |
+
title: jQuery(this).data('uploader_title'),
|
295 |
+
button: {
|
296 |
+
text: jQuery(this).data('uploader_button_text'),
|
297 |
+
},
|
298 |
+
multiple: false
|
299 |
+
});
|
300 |
+
|
301 |
+
fileFrame.on('select', function() {
|
302 |
+
attachment = fileFrame.state().get('selection').first().toJSON();
|
303 |
+
jQuery('#master_picture_url').val(attachment.url);
|
304 |
+
prepareInlinePicture(attachment.url);
|
305 |
+
});
|
306 |
+
|
307 |
+
fileFrame.open();
|
308 |
+
});
|
309 |
+
|
310 |
+
|
311 |
+
jQuery('#master_picture_url').change(function() {
|
312 |
+
// Whatever the previous content of the field, forget its cached data
|
313 |
+
pictureContent = null;
|
314 |
+
restoreGenerateFaviconButton();
|
315 |
+
});
|
316 |
+
});
|
317 |
+
</script>
|
trunk/admin/views/keep_active_notice.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="keep_active_notice" class="notice notice-info">
|
2 |
+
<p>
|
3 |
+
<?php _e( "You should keep this plugin active. As soon as you deactive it, your favicon is disabled, too.",
|
4 |
+
FBRFG_PLUGIN_SLUG ) ?>
|
5 |
+
<?php printf( __( 'You may wonder <a %s>why it works that way</a>.',
|
6 |
+
FBRFG_PLUGIN_SLUG ), 'target="_blank" href="https://realfavicongenerator.net/blog/why-does-the-favicon-by-realfavicongenerator-wordpress-plugin-need-to-be-activated-all-the-time/"') ?>
|
7 |
+
<?php printf( __( 'In any case, <a %s>the plugin is super lightweight</a> and will not affect the performance of your site.',
|
8 |
+
FBRFG_PLUGIN_SLUG ), 'target="_blank" href="https://realfavicongenerator.net/blog/rfgs-wordpress-plugin-and-performance/"') ?>
|
9 |
+
</p>
|
10 |
+
</div>
|
trunk/admin/views/settings.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
?>
|
4 |
+
|
5 |
+
<div class="wrap">
|
6 |
+
<h2><?php echo esc_html( get_admin_page_title() ); ?></h2>
|
7 |
+
|
8 |
+
<p>
|
9 |
+
<?php printf(
|
10 |
+
__( 'Do you want to setup your favicon? Go to <a href="%s">Appearance > Favicon</a>', FBRFG_PLUGIN_SLUG ),
|
11 |
+
$favicon_appearance_url ) ?>
|
12 |
+
</p>
|
13 |
+
|
14 |
+
<form action="<?php echo $favicon_admin_url ?>" method="post">
|
15 |
+
|
16 |
+
<table class="form-table">
|
17 |
+
<tbody>
|
18 |
+
<tr>
|
19 |
+
<th scope="row"><?php _e('Display update notifications', FBRFG_PLUGIN_SLUG ) ?></th>
|
20 |
+
<td>
|
21 |
+
<input type="checkbox" name="<?php echo Favicon_By_RealFaviconGenerator_Admin::DISMISS_UPDATE_ALL_UPDATE_NOTIICATIONS ?>"
|
22 |
+
value="1" <?php echo( $display_update_notifications ? 'checked="checked"' : '' ) ?>>
|
23 |
+
<p class="description">
|
24 |
+
<?php _e('Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new version of iOS or a new platform is supported.', FBRFG_PLUGIN_SLUG ) ?>
|
25 |
+
</p>
|
26 |
+
</td>
|
27 |
+
</tr>
|
28 |
+
</tbody>
|
29 |
+
</table>
|
30 |
+
|
31 |
+
<input type="hidden" name="<?php echo Favicon_By_RealFaviconGenerator_Admin::SETTINGS_FORM ?>" value="1">
|
32 |
+
|
33 |
+
<input name="Submit" type="submit" class="button-primary" value="<?php _e( 'Save changes', FBRFG_PLUGIN_SLUG ) ?>">
|
34 |
+
</form>
|
35 |
+
|
36 |
+
</div>
|
trunk/favicon-by-realfavicongenerator.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Favicon by RealFaviconGenerator.
|
4 |
+
*
|
5 |
+
* @package favicon-by-realfavicongenerator
|
6 |
+
* @author Philippe Bernard <philippe@realfavicongenerator.net>
|
7 |
+
* @license GPLv2
|
8 |
+
* @link http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
+
* @copyright 2014 RealFaviconGenerator
|
10 |
+
*
|
11 |
+
* @wordpress-plugin
|
12 |
+
* Plugin Name: Favicon by RealFaviconGenerator
|
13 |
+
* Plugin URI: http://realfavicongenerator.net/extensions/wordpress
|
14 |
+
* Description: Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, Android devices, Windows 8 tablets, etc.
|
15 |
+
* Version: 1.3.21
|
16 |
+
* Author: Philippe Bernard
|
17 |
+
* Author URI: http://realfavicongenerator.net/
|
18 |
+
* License: GPLv2
|
19 |
+
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
20 |
+
* Text Domain: favicon-by-realfavicongenerator
|
21 |
+
* Domain Path: /languages/
|
22 |
+
*/
|
23 |
+
|
24 |
+
// If this file is called directly, abort.
|
25 |
+
if ( ! defined( 'WPINC' ) ) {
|
26 |
+
die;
|
27 |
+
}
|
28 |
+
|
29 |
+
/*----------------------------------------------------------------------------*
|
30 |
+
* Public-Facing Functionality
|
31 |
+
*----------------------------------------------------------------------------*/
|
32 |
+
|
33 |
+
require_once( plugin_dir_path( __FILE__ ) . 'public' . DIRECTORY_SEPARATOR .
|
34 |
+
'class-favicon-by-realfavicongenerator.php' );
|
35 |
+
|
36 |
+
register_activation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'activate' ) );
|
37 |
+
register_deactivation_hook( __FILE__, array( 'Favicon_By_RealFaviconGenerator', 'deactivate' ) );
|
38 |
+
|
39 |
+
add_action( 'plugins_loaded', array( 'Favicon_By_RealFaviconGenerator', 'get_instance' ) );
|
40 |
+
|
41 |
+
/*----------------------------------------------------------------------------*
|
42 |
+
* Dashboard and Administrative Functionality
|
43 |
+
*----------------------------------------------------------------------------*/
|
44 |
+
|
45 |
+
if ( is_admin() ) {
|
46 |
+
|
47 |
+
require_once( plugin_dir_path( __FILE__ ) . 'admin' . DIRECTORY_SEPARATOR .
|
48 |
+
'class-favicon-by-realfavicongenerator-admin.php' );
|
49 |
+
add_action( 'plugins_loaded', array( 'Favicon_By_RealFaviconGenerator_Admin', 'get_instance' ) );
|
50 |
+
|
51 |
+
}
|
trunk/languages/favicon-by-realfavicongenerator-cs_CZ.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-cs_CZ.po
ADDED
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-11-22 17:39+0100\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-11-22 18:18+0100\n"
|
13 |
+
"Language-Team: \n"
|
14 |
+
"X-Generator: Poedit 1.8.6\n"
|
15 |
+
"Last-Translator: nothing <nothing@nothing.com>\n"
|
16 |
+
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
17 |
+
"Language: cs_CZ\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
22 |
+
msgid "Favicon"
|
23 |
+
msgstr "Favikona"
|
24 |
+
|
25 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
26 |
+
msgid "Favicon Settings"
|
27 |
+
msgstr "Nastavení favikony"
|
28 |
+
|
29 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
30 |
+
msgid ""
|
31 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
32 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
33 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
34 |
+
msgstr ""
|
35 |
+
"Nonce nebyl rozpoznán. Tento stav se stává pouze v případě XSS útoku. Pokud "
|
36 |
+
"je něco v nepořádku, prosím neprodleně <a href=\\\"mailto:"
|
37 |
+
"contact@realfavicongenerator.net\\\">nás kontaktujte</a>."
|
38 |
+
|
39 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
40 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
41 |
+
msgid "Cannot create directory %s to store the favicon package"
|
42 |
+
msgstr "Nelze vytvořit adresář %s pro uložení balíčku favikon"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
45 |
+
msgid "An update is available on RealFaviconGenerator:"
|
46 |
+
msgstr "Aktualizace RealFaviconGenerator je dostupná:"
|
47 |
+
|
48 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
49 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
50 |
+
msgstr "Možná je potřeba <a href=\"%s\">znovu vytvořit favikon</a>"
|
51 |
+
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
53 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
54 |
+
msgid "Hide this notice"
|
55 |
+
msgstr "Skrýt toto oznámení"
|
56 |
+
|
57 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
58 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
59 |
+
msgid "Do not warn me again in case of update"
|
60 |
+
msgstr "Nikdy již neupozornit na novou verzi"
|
61 |
+
|
62 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
63 |
+
msgid "Your favicon was updated automatically:"
|
64 |
+
msgstr "Vaše favikona byla automaticky aktualizována:"
|
65 |
+
|
66 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
67 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
68 |
+
msgstr "Nelze vytvořit adresář %s pro uložení obsah balíčku favikon"
|
69 |
+
|
70 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
71 |
+
msgid "Unknown reason"
|
72 |
+
msgstr "Neznámý důvod selhání."
|
73 |
+
|
74 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
75 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
76 |
+
msgstr "Nastala chyba při rozbalování balíčku favikon %s ve složce %s"
|
77 |
+
|
78 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
79 |
+
msgid "Cannot download file at %s"
|
80 |
+
msgstr "Soubor %s nelze stáhnout"
|
81 |
+
|
82 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
83 |
+
msgid "Cannot store downloaded file locally"
|
84 |
+
msgstr "Soubor nelze uložit"
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:11
|
87 |
+
msgid "Favicon installation in progress. Please wait..."
|
88 |
+
msgstr "Instalace favikony probíhá. Prosím, čekejte..."
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:16
|
91 |
+
msgid "Favicon installed!"
|
92 |
+
msgstr "Favikona nainstalována!"
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:18
|
95 |
+
msgid ""
|
96 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
97 |
+
msgstr ""
|
98 |
+
"Líbí se Vám výsledek? Pokud ano, můžete prosím <a %s>ohodnotit plugin</a>?"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
101 |
+
msgid "Current favicon"
|
102 |
+
msgstr "Stávající favikona"
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
105 |
+
msgid "The favicon is up and ready."
|
106 |
+
msgstr "Favikona je připravená."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
109 |
+
msgid ""
|
110 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
111 |
+
msgstr "<a %s>Zkontrolovat favikony</a> přes službu RealFaviconGenerator."
|
112 |
+
|
113 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
114 |
+
msgid "This option works only if your site is accessible from the outside."
|
115 |
+
msgstr "Funguje pouze v případě webu dostupného z internetu."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:42
|
118 |
+
msgid "No favicon has been configured yet."
|
119 |
+
msgstr "Favikona není vytvořena."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:62
|
122 |
+
msgid "Favicon generation"
|
123 |
+
msgstr "Vygenerovat favikonu"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:64
|
126 |
+
msgid "You can replace the existing favicon."
|
127 |
+
msgstr "Můžete nahradit stávající favikon."
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:71
|
130 |
+
msgid "Master picture URL"
|
131 |
+
msgstr "Obrázek"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
134 |
+
msgid "Select from the Media Library"
|
135 |
+
msgstr "Vybrat z knihovny médií"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:79
|
138 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
139 |
+
msgstr ""
|
140 |
+
"Obrázek musí být čtverec, alespoň 70x70px (doporučeno je však 260x260 a "
|
141 |
+
"více)"
|
142 |
+
|
143 |
+
#: admin/views/appearance.php:81
|
144 |
+
msgid ""
|
145 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
146 |
+
"upload the picture from RealFaviconGenerator."
|
147 |
+
msgstr ""
|
148 |
+
"Pokud je obrázek uložen na Vašem pevném disku, můžete nechat pole prázdné a "
|
149 |
+
"nahrát obrázek přímo přes službu RealFaviconGenerator."
|
150 |
+
|
151 |
+
#: admin/views/appearance.php:89
|
152 |
+
msgid "Favicon files in root directory"
|
153 |
+
msgstr "Soubory favikony v kořenovém adresáři"
|
154 |
+
|
155 |
+
#: admin/views/appearance.php:94
|
156 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
157 |
+
msgstr "Plugin vždy ukládá soubory favikon do vyhrazeného adresáře."
|
158 |
+
|
159 |
+
#: admin/views/appearance.php:96
|
160 |
+
msgid ""
|
161 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
162 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
163 |
+
msgstr ""
|
164 |
+
"Pokud je však tato možnost povolena, plugin využije funkce permalink a "
|
165 |
+
"soubory favikon umístí do kořenového adresáře webu."
|
166 |
+
|
167 |
+
#: admin/views/appearance.php:97
|
168 |
+
msgid "recommended"
|
169 |
+
msgstr "doporučeno"
|
170 |
+
|
171 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
172 |
+
msgid "Generate favicon"
|
173 |
+
msgstr "Vygenerovat favikonu"
|
174 |
+
|
175 |
+
#: admin/views/appearance.php:200
|
176 |
+
msgid "Preparing master picture..."
|
177 |
+
msgstr "Připravuje se obrázek..."
|
178 |
+
|
179 |
+
#: admin/views/appearance.php:257
|
180 |
+
msgid "An error occured"
|
181 |
+
msgstr "Nastala chyba"
|
182 |
+
|
183 |
+
#: admin/views/appearance.php:268
|
184 |
+
msgid "An internal error occurred"
|
185 |
+
msgstr "Nastala vnitřní chyba"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:13
|
188 |
+
msgid ""
|
189 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
190 |
+
"Favicon</a>"
|
191 |
+
msgstr ""
|
192 |
+
"Chcete nastavit favikonu? Přejděte na <a href=\"%s\">Vzhled > Favikona</"
|
193 |
+
"a>"
|
194 |
+
|
195 |
+
#: admin/views/settings.php:22
|
196 |
+
msgid "Display update notifications"
|
197 |
+
msgstr "Zobrazit oznámení o aktualizaci"
|
198 |
+
|
199 |
+
#: admin/views/settings.php:27
|
200 |
+
msgid ""
|
201 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
202 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
203 |
+
msgstr ""
|
204 |
+
"Zobrazí upozornění, jakmile je favikona upravena na nejnovější verzi "
|
205 |
+
"RealFaviconGenerator. Například, když Apple vydá nový iOS."
|
206 |
+
|
207 |
+
#: admin/views/settings.php:36
|
208 |
+
msgid "Save changes"
|
209 |
+
msgstr "Uložit změny"
|
210 |
+
|
211 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
212 |
+
msgid ""
|
213 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
214 |
+
"update"
|
215 |
+
msgstr "Navštivte <a href=\"%s\">RFG's historii změn</a>"
|
216 |
+
|
217 |
+
#. Plugin Name of the plugin/theme
|
218 |
+
msgid "Favicon by RealFaviconGenerator"
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#. Plugin URI of the plugin/theme
|
222 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#. Description of the plugin/theme
|
226 |
+
msgid ""
|
227 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
228 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
229 |
+
msgstr ""
|
230 |
+
"Vytvořit a nainstalovat favikony nejen pro známé platformy PC/Mac, ale také "
|
231 |
+
"iPhone/iPad, zařízení Android, tablety Windows 8, a další."
|
232 |
+
|
233 |
+
#. Author of the plugin/theme
|
234 |
+
msgid "Philippe Bernard"
|
235 |
+
msgstr ""
|
236 |
+
|
237 |
+
#. Author URI of the plugin/theme
|
238 |
+
msgid "http://realfavicongenerator.net/"
|
239 |
+
msgstr ""
|
trunk/languages/favicon-by-realfavicongenerator-da_DK.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-da_DK.po
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-06-24 10:34+0100\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-06-24 10:48+0100\n"
|
13 |
+
"Last-Translator: Alexander Leo-Hansen <alexanderleoh@gmail.com>\n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"X-Generator: Poedit 1.8.1\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
+
"Language: da_DK\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
22 |
+
#, fuzzy
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon indstillinger"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
31 |
+
msgid ""
|
32 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
33 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
34 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
35 |
+
msgstr ""
|
36 |
+
"Nonce blev ikke genkendt. Det er kun mening at dette skal skal ske i "
|
37 |
+
"tilfælde af et XSS angreb. Hvis du tror noget er galt, kan du <a href=\\"
|
38 |
+
"\"mailto:contact@realfavicongenerator.net\\\">kontakte os</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
41 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
42 |
+
msgid "Cannot create directory %s to store the favicon package"
|
43 |
+
msgstr "Kan ikke oprette mappen %s til opbevaring af favicon."
|
44 |
+
|
45 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
46 |
+
msgid "An update is available on RealFaviconGenerator:"
|
47 |
+
msgstr "En opdatering er tilgængelig på RealFaviconGenerator:"
|
48 |
+
|
49 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
50 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
51 |
+
msgstr "Du kan <a href=\"%s\">generere</a> dit favicon igen"
|
52 |
+
|
53 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
55 |
+
#, fuzzy
|
56 |
+
msgid "Hide this notice"
|
57 |
+
msgstr "Skjul denne meddelse"
|
58 |
+
|
59 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
61 |
+
msgid "Do not warn me again in case of update"
|
62 |
+
msgstr "Advar mig ikke om fremtidige opdateringer"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
65 |
+
msgid "Your favicon was updated automatically:"
|
66 |
+
msgstr "Dit favicon blev automatisk opdateret:"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
69 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
70 |
+
msgstr "Kan ikke oprette mappen %s til opbevaring af favicon"
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
73 |
+
msgid "Unknown reason"
|
74 |
+
msgstr "Ukendte årsag"
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
77 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
78 |
+
msgstr "Der skete en fejl under udpakningen af favicon %s til mappen %s"
|
79 |
+
|
80 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
81 |
+
msgid "Cannot download file at %s"
|
82 |
+
msgstr "Kan ikke downloade filen på %s"
|
83 |
+
|
84 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
85 |
+
msgid "Cannot store downloaded file locally"
|
86 |
+
msgstr "Kan ikke opbevare den downloadede fil"
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:11
|
89 |
+
msgid "Favicon installation in progress. Please wait..."
|
90 |
+
msgstr "Favicon er ved at blive installeret. Vent venligst…"
|
91 |
+
|
92 |
+
#: admin/views/appearance.php:16
|
93 |
+
msgid "Favicon installed!"
|
94 |
+
msgstr "Favicon blev installeret!"
|
95 |
+
|
96 |
+
#: admin/views/appearance.php:18
|
97 |
+
msgid ""
|
98 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
99 |
+
msgstr ""
|
100 |
+
"Kan du lidt resultatet? I så fald, må du gerne <a %s>bedømme vores plugin</"
|
101 |
+
"a>"
|
102 |
+
|
103 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
104 |
+
msgid "Current favicon"
|
105 |
+
msgstr "Nuværende favicon"
|
106 |
+
|
107 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
108 |
+
msgid "The favicon is up and ready."
|
109 |
+
msgstr "Dit favicon er klar."
|
110 |
+
|
111 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
112 |
+
msgid ""
|
113 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
114 |
+
msgstr ""
|
115 |
+
"<a %s>Tje kdit favicon</a> med RealFaviconGenerator's favicon tjekker."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
118 |
+
msgid "This option works only if your site is accessible from the outside."
|
119 |
+
msgstr "Denne indstillinger virker kun, hvis du kan connecte til dit website."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:42
|
122 |
+
msgid "No favicon has been configured yet."
|
123 |
+
msgstr "Der er endnu ikke blevet konfigureret et favicon."
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:62
|
126 |
+
msgid "Favicon generation"
|
127 |
+
msgstr "Generering af favicon"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:64
|
130 |
+
msgid "You can replace the existing favicon."
|
131 |
+
msgstr "Du kan erstatte det eksisterende favicon."
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:71
|
134 |
+
msgid "Master picture URL"
|
135 |
+
msgstr "Master billede URL"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
138 |
+
msgid "Select from the Media Library"
|
139 |
+
msgstr "Vælg fra Medie biblioteket"
|
140 |
+
|
141 |
+
#: admin/views/appearance.php:79
|
142 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
143 |
+
msgstr ""
|
144 |
+
"Indsend et firkantet billede, mindst 70x70 (anbefalet: 260x260 eller mere)"
|
145 |
+
|
146 |
+
#: admin/views/appearance.php:81
|
147 |
+
msgid ""
|
148 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
149 |
+
"upload the picture from RealFaviconGenerator."
|
150 |
+
msgstr ""
|
151 |
+
"Hvis billedet er på din harddisk, kan du lade dette felt være tomt og "
|
152 |
+
"uploade billedet fra RealFaviconGenerator."
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:89
|
155 |
+
msgid "Favicon files in root directory"
|
156 |
+
msgstr "Favicon filerne er i roden"
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:94
|
159 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
160 |
+
msgstr "Dette plugin opbevare altid favicon filerne i en dedikeret mappe."
|
161 |
+
|
162 |
+
#: admin/views/appearance.php:96
|
163 |
+
msgid ""
|
164 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
165 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
166 |
+
msgstr ""
|
167 |
+
"Hvis denne indstilling er aktiveret, vil pluginnet drage fordel af "
|
168 |
+
"permalink og favicon filerne vil være i rodmappen"
|
169 |
+
|
170 |
+
#: admin/views/appearance.php:97
|
171 |
+
msgid "recommended"
|
172 |
+
msgstr "anbefalet"
|
173 |
+
|
174 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
175 |
+
msgid "Generate favicon"
|
176 |
+
msgstr "Generere favicon"
|
177 |
+
|
178 |
+
#: admin/views/appearance.php:200
|
179 |
+
msgid "Preparing master picture..."
|
180 |
+
msgstr "Forbereder master billede…"
|
181 |
+
|
182 |
+
#: admin/views/appearance.php:257
|
183 |
+
msgid "An error occured"
|
184 |
+
msgstr "En uventet fejl opstod"
|
185 |
+
|
186 |
+
#: admin/views/appearance.php:268
|
187 |
+
msgid "An internal error occurred"
|
188 |
+
msgstr "En intern fejl opstod"
|
189 |
+
|
190 |
+
#: admin/views/settings.php:13
|
191 |
+
msgid ""
|
192 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
193 |
+
"Favicon</a>"
|
194 |
+
msgstr ""
|
195 |
+
"Vil du opsætte dit favicon? Gå til <a href=\"%s\">Appearance > Favicon</"
|
196 |
+
"a>"
|
197 |
+
|
198 |
+
#: admin/views/settings.php:22
|
199 |
+
msgid "Display update notifications"
|
200 |
+
msgstr "Vis opdateringsnotifikationer"
|
201 |
+
|
202 |
+
#: admin/views/settings.php:27
|
203 |
+
msgid ""
|
204 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
205 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
206 |
+
msgstr ""
|
207 |
+
"Få besked når RealFaviconGenerator opdateres. For eksempel når Apple "
|
208 |
+
"frigiver en ny version af iOS eller en ny platform er understøttet."
|
209 |
+
|
210 |
+
#: admin/views/settings.php:36
|
211 |
+
msgid "Save changes"
|
212 |
+
msgstr "Gem indstillinger"
|
213 |
+
|
214 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
215 |
+
msgid ""
|
216 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
217 |
+
"update"
|
218 |
+
msgstr ""
|
219 |
+
"Besøg <a href=\"%s\">RFG's changelog</a> for at se indholdet for "
|
220 |
+
"opdateringen"
|
221 |
+
|
222 |
+
#. Plugin Name of the plugin/theme
|
223 |
+
msgid "Favicon by RealFaviconGenerator"
|
224 |
+
msgstr "Favicon by RealFaviconGenerator"
|
225 |
+
|
226 |
+
#. Plugin URI of the plugin/theme
|
227 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
228 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
229 |
+
|
230 |
+
#. Description of the plugin/theme
|
231 |
+
msgid ""
|
232 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
233 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
234 |
+
msgstr ""
|
235 |
+
"Opret og installer dit favicon på alle platforme: PC / Mac, men også "
|
236 |
+
"iPhone / iPad, Android-enheder, Windows 8 tabletter, etc."
|
237 |
+
|
238 |
+
#. Author of the plugin/theme
|
239 |
+
msgid "Philippe Bernard"
|
240 |
+
msgstr "Philippe Bernard"
|
241 |
+
|
242 |
+
#. Author URI of the plugin/theme
|
243 |
+
msgid "http://realfavicongenerator.net/"
|
244 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-fr_FR.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-fr_FR.po
ADDED
@@ -0,0 +1,245 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.1.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-realfavicongenerator\n"
|
7 |
+
"POT-Creation-Date: 2015-06-24 10:16+0100\n"
|
8 |
+
"PO-Revision-Date: 2015-07-15 11:46+0200\n"
|
9 |
+
"Last-Translator: Philippe Bernard <philippe@realfavicongenerator.net>\n"
|
10 |
+
"Language-Team: \n"
|
11 |
+
"Language: fr_FR\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Generator: Poedit 1.8.2\n"
|
16 |
+
|
17 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
20 |
+
msgid "Favicon"
|
21 |
+
msgstr "Favicon"
|
22 |
+
|
23 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
24 |
+
msgid "Favicon Settings"
|
25 |
+
msgstr "Réglages du favicon"
|
26 |
+
|
27 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
28 |
+
msgid ""
|
29 |
+
"Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you "
|
30 |
+
"feel like something is wrong, please <a href=\\\"mailto:contact@realfavicongenerator.net\\"
|
31 |
+
"\">contact us</a>."
|
32 |
+
msgstr ""
|
33 |
+
"Le nonce n'a pas été reconnu. Cela n'est censé arriver qu'en cas d'attaque XSS. Si vous pensez "
|
34 |
+
"que quelque chose ne va pas, veuillez <a href=\\\"mailto:contact@realfavicongenerator.net\\"
|
35 |
+
"\">nous contacter</a>."
|
36 |
+
|
37 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
38 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
39 |
+
msgid "Cannot create directory %s to store the favicon package"
|
40 |
+
msgstr "Impossible de créer le répertoire %s afin d'y stocker le package du favicon"
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
43 |
+
msgid "An update is available on RealFaviconGenerator:"
|
44 |
+
msgstr "Une mise à jour est disponible sur RealFaviconGenerator"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
47 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
48 |
+
msgstr "Vous voulez peut-être <a href=\"%s\">générer votre favicon</a> à nouveau"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
52 |
+
msgid "Hide this notice"
|
53 |
+
msgstr "Masquer cette notice"
|
54 |
+
|
55 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
57 |
+
msgid "Do not warn me again in case of update"
|
58 |
+
msgstr "Ne plus m'avertir en cas de mise à jour"
|
59 |
+
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
61 |
+
msgid "Your favicon was updated automatically:"
|
62 |
+
msgstr "Votre favicon a été mis à jour automatiquement :"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
65 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
66 |
+
msgstr "Impossible de créer le répertoire %s afin d'y stocker le contenu du package du favicon"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
69 |
+
msgid "Unknown reason"
|
70 |
+
msgstr "Raison inconnu"
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
73 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
74 |
+
msgstr "Erreur lors de la décompression du package du favicon %s dans le répertoire %s"
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
77 |
+
msgid "Cannot download file at %s"
|
78 |
+
msgstr "Impossible de télécharger le fichier à l'adresse %s"
|
79 |
+
|
80 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
81 |
+
msgid "Cannot store downloaded file locally"
|
82 |
+
msgstr "Impossible de stocker localement le fichier téléchargé"
|
83 |
+
|
84 |
+
#: admin/views/appearance.php:11
|
85 |
+
msgid "Favicon installation in progress. Please wait..."
|
86 |
+
msgstr "Installation du favicon en cours. Veuillez patienter..."
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:16
|
89 |
+
msgid "Favicon installed!"
|
90 |
+
msgstr "Favicon installé !"
|
91 |
+
|
92 |
+
#: admin/views/appearance.php:18
|
93 |
+
msgid "Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
94 |
+
msgstr "Satisfait du résultat ? Voudriez-vous <a %s>évaluer le plugin</a> ?"
|
95 |
+
|
96 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
97 |
+
msgid "Current favicon"
|
98 |
+
msgstr "Favicon actuel"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
101 |
+
msgid "The favicon is up and ready."
|
102 |
+
msgstr "Le favicon est installé."
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
105 |
+
msgid "<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
106 |
+
msgstr ""
|
107 |
+
"<a %s>Vérifiez votre favicon</a> avec l'outil de vérification de favicon de "
|
108 |
+
"RealFaviconGenerator."
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
111 |
+
msgid "This option works only if your site is accessible from the outside."
|
112 |
+
msgstr "Cette option ne fonctionne que si votre site est accessible depuis l'extérieur."
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:42
|
115 |
+
msgid "No favicon has been configured yet."
|
116 |
+
msgstr "Aucun favicon n'a été configuré pour le moment."
|
117 |
+
|
118 |
+
#: admin/views/appearance.php:62
|
119 |
+
msgid "Favicon generation"
|
120 |
+
msgstr "Génération du favicon"
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:64
|
123 |
+
msgid "You can replace the existing favicon."
|
124 |
+
msgstr "Vous pouvez remplacer le favicon existant."
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:71
|
127 |
+
msgid "Master picture URL"
|
128 |
+
msgstr "URL de l'image de base"
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
131 |
+
msgid "Select from the Media Library"
|
132 |
+
msgstr "Sélectionner dans la Bibliothèque de médias"
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:79
|
135 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
136 |
+
msgstr "Utilisez une image carrée en 70x70 minimum (recommandé: 260x260 ou plus)"
|
137 |
+
|
138 |
+
#: admin/views/appearance.php:81
|
139 |
+
msgid ""
|
140 |
+
"If the picture is on your hard drive, you can leave this field blank and upload the picture "
|
141 |
+
"from RealFaviconGenerator."
|
142 |
+
msgstr ""
|
143 |
+
"Si l'image est sur votre disque dur, vous pouvez laisser ce champ vide et envoyer une image "
|
144 |
+
"depuis l'interface de RealFaviconGenerator"
|
145 |
+
|
146 |
+
#: admin/views/appearance.php:89
|
147 |
+
msgid "Favicon files in root directory"
|
148 |
+
msgstr "Fichiers du favicon dans le répertoire racine"
|
149 |
+
|
150 |
+
#: admin/views/appearance.php:94
|
151 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
152 |
+
msgstr "Le plugin conserve toujours les fichiers du favicon dans un répertoire dédié."
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:96
|
155 |
+
msgid ""
|
156 |
+
"However, if this option is enabled, the plugin takes advantage of the permalink feature and "
|
157 |
+
"the favicon files appear to be in the root directory"
|
158 |
+
msgstr ""
|
159 |
+
"Cependant, si cette option est activée, le plugin tire parti des permaliens pour faire "
|
160 |
+
"apparaitre les fichiers du favicon dans le répertoire racine"
|
161 |
+
|
162 |
+
#: admin/views/appearance.php:97
|
163 |
+
msgid "recommended"
|
164 |
+
msgstr "recommandé"
|
165 |
+
|
166 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
167 |
+
msgid "Generate favicon"
|
168 |
+
msgstr "Générer le favicon"
|
169 |
+
|
170 |
+
#: admin/views/appearance.php:200
|
171 |
+
msgid "Preparing master picture..."
|
172 |
+
msgstr "Nous préparons l'image..."
|
173 |
+
|
174 |
+
#: admin/views/appearance.php:257
|
175 |
+
msgid "An error occured"
|
176 |
+
msgstr "Une erreur est survenue"
|
177 |
+
|
178 |
+
#: admin/views/appearance.php:268
|
179 |
+
msgid "An internal error occurred"
|
180 |
+
msgstr "Une erreur interne est survenue"
|
181 |
+
|
182 |
+
#: admin/views/settings.php:13
|
183 |
+
msgid "Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > Favicon</a>"
|
184 |
+
msgstr ""
|
185 |
+
"Voulez-vous mettre en place votre favicon? Allez dans <a href=\"%s\">Apparance > Favicon</a>"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:22
|
188 |
+
msgid "Display update notifications"
|
189 |
+
msgstr "Afficher les notifications de mise à jour"
|
190 |
+
|
191 |
+
#: admin/views/settings.php:27
|
192 |
+
msgid ""
|
193 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new "
|
194 |
+
"version of iOS or a new platform is supported."
|
195 |
+
msgstr ""
|
196 |
+
"Afficher des notifications lorsque RealFaviconGenerator est mis à jour. Par exemple, "
|
197 |
+
"lorsqu'Apple sort une nouvelle version d'iOS ou lorsqu'une nouvelle plateforme est supportée."
|
198 |
+
|
199 |
+
#: admin/views/settings.php:36
|
200 |
+
msgid "Save changes"
|
201 |
+
msgstr "Enregistrer les modifications"
|
202 |
+
|
203 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
204 |
+
msgid "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update"
|
205 |
+
msgstr ""
|
206 |
+
"Afficher le <a href=\"%s\">journal des modifications</a> pour voir le contenu de cette mise à "
|
207 |
+
"jour"
|
208 |
+
|
209 |
+
#. Plugin Name of the plugin/theme
|
210 |
+
msgid "Favicon by RealFaviconGenerator"
|
211 |
+
msgstr "Favicon par RealFaviconGenerator"
|
212 |
+
|
213 |
+
#. Plugin URI of the plugin/theme
|
214 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
215 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
216 |
+
|
217 |
+
#. Description of the plugin/theme
|
218 |
+
msgid ""
|
219 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, "
|
220 |
+
"Android devices, Windows 8 tablets, etc."
|
221 |
+
msgstr ""
|
222 |
+
"Créez et installez votre favicon pour toutes les plateformes : PC/Mac évidemment, mais aussi "
|
223 |
+
"iPhone/iPad, appareils Android, tablettes Windows 8, etc."
|
224 |
+
|
225 |
+
#. Author of the plugin/theme
|
226 |
+
msgid "Philippe Bernard"
|
227 |
+
msgstr "Philippe Bernard"
|
228 |
+
|
229 |
+
#. Author URI of the plugin/theme
|
230 |
+
msgid "http://realfavicongenerator.net/"
|
231 |
+
msgstr "http://realfavicongenerator.net/"
|
232 |
+
|
233 |
+
#~ msgid ""
|
234 |
+
#~ "<a href=\"%s\" target=\"_blank\">An update is available</a> on RealFaviconGenerator. You "
|
235 |
+
#~ "might want to <a href=\"%s\">generate your favicon again</a>."
|
236 |
+
#~ msgstr ""
|
237 |
+
#~ "<a href=\"%s\" target=\"_blank\">Une mise à jour est disponible</a> à partir de "
|
238 |
+
#~ "RealFaviconGenerator. Vous souhaitez peut-être <a href=\"%s\">générer votre favicon à "
|
239 |
+
#~ "nouveau</a>."
|
240 |
+
|
241 |
+
#~ msgid " | <a href=\"%s\">Hide this notice</a>"
|
242 |
+
#~ msgstr " | <a href=\"%s\">Masquer cette notification</a>"
|
243 |
+
|
244 |
+
#~ msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
245 |
+
#~ msgstr " | <a href=\"%s\">Ne plus me prévenir en cas de mise à jour</a>"
|
trunk/languages/favicon-by-realfavicongenerator-id_ID.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-id_ID.po
ADDED
@@ -0,0 +1,200 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-realfavicongenerator\n"
|
7 |
+
"POT-Creation-Date: 2015-11-22 17:39+0100\n"
|
8 |
+
"MIME-Version: 1.0\n"
|
9 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
+
"Content-Transfer-Encoding: 8bit\n"
|
11 |
+
"PO-Revision-Date: 2017-04-19 16:01+0200\n"
|
12 |
+
"Language-Team: ChameleonJohn.com\n"
|
13 |
+
"X-Generator: Poedit 2.0.1\n"
|
14 |
+
"Last-Translator: Jordan Silaen <jordan.silaen@chameleonjohn.com>\n"
|
15 |
+
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
16 |
+
"Language: id_ID\n"
|
17 |
+
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77 admin/class-favicon-by-realfavicongenerator-admin.php:78 admin/class-favicon-by-realfavicongenerator-admin.php:82
|
19 |
+
msgid "Favicon"
|
20 |
+
msgstr "Favicon"
|
21 |
+
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
23 |
+
msgid "Favicon Settings"
|
24 |
+
msgstr "Pengaturan Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
27 |
+
msgid "Nonce was not recognized. This case is supposed to happen only in case of XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:contact@realfavicongenerator.net\\\">contact us</a>."
|
28 |
+
msgstr "Nonce tidak diakui. Kasus ini seharusnya terjadi hanya dalam kasus serangan XSS. Jika Anda merasa seperti ada sesuatu yang salah, <a href=\\\"mailto:contact@realfavicongenerator.net\\\"> hubungi kami </a>."
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190 public/class-favicon-by-realfavicongenerator-common.php:414
|
31 |
+
msgid "Cannot create directory %s to store the favicon package"
|
32 |
+
msgstr "Tidak bisa membuat direktori %s untuk menyimpan paket favicon"
|
33 |
+
|
34 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
35 |
+
msgid "An update is available on RealFaviconGenerator:"
|
36 |
+
msgstr "Pembaruan tersedia pada RealFaviconGenerator:"
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
39 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
40 |
+
msgstr "Anda mungkin ingin <a href=\"%s\"> menghasilkan favicon Anda lagi </a>"
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454 admin/class-favicon-by-realfavicongenerator-admin.php:477
|
43 |
+
msgid "Hide this notice"
|
44 |
+
msgstr "Sembunyikan pemberitahuan ini"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458 admin/class-favicon-by-realfavicongenerator-admin.php:481
|
47 |
+
msgid "Do not warn me again in case of update"
|
48 |
+
msgstr "Tidak memperingatkan saya lagi dalam kasus pembaruan"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
51 |
+
msgid "Your favicon was updated automatically:"
|
52 |
+
msgstr "favicon Anda telah diperbarui secara otomatis:"
|
53 |
+
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
55 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
56 |
+
msgstr "Tidak bisa membuat direktori %s untuk menyimpan konten paket favicon"
|
57 |
+
|
58 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
59 |
+
msgid "Unknown reason"
|
60 |
+
msgstr "Alasan yang tidak diketahui"
|
61 |
+
|
62 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
63 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
64 |
+
msgstr "Kesalahan saat unziping paket favicon %s ke direktori %s"
|
65 |
+
|
66 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
67 |
+
msgid "Cannot download file at %s"
|
68 |
+
msgstr "Tidak dapat men-download file pada %s"
|
69 |
+
|
70 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
71 |
+
msgid "Cannot store downloaded file locally"
|
72 |
+
msgstr "tidak bisa menyimpan file yang didownload secara lokal"
|
73 |
+
|
74 |
+
#: admin/views/appearance.php:11
|
75 |
+
msgid "Favicon installation in progress. Please wait..."
|
76 |
+
msgstr "instalasi favicon berlangsung. Mohon tunggu..."
|
77 |
+
|
78 |
+
#: admin/views/appearance.php:16
|
79 |
+
msgid "Favicon installed!"
|
80 |
+
msgstr "Favicon diinstal!"
|
81 |
+
|
82 |
+
#: admin/views/appearance.php:18
|
83 |
+
msgid "Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
84 |
+
msgstr "Apakah Anda suka hasilnya? Jika demikian, apakah Anda ingin <a %s> menilai plugin </a>?"
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
87 |
+
msgid "Current favicon"
|
88 |
+
msgstr "favicon saat ini"
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
91 |
+
msgid "The favicon is up and ready."
|
92 |
+
msgstr "favicon adalah dan siap."
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
95 |
+
msgid "<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
96 |
+
msgstr "<a %s> Periksa favicon Anda </a> dengan RealFaviconGenerator ini favicon checker."
|
97 |
+
|
98 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
99 |
+
msgid "This option works only if your site is accessible from the outside."
|
100 |
+
msgstr "Opsi ini hanya bekerja jika situs Anda dapat diakses dari luar."
|
101 |
+
|
102 |
+
#: admin/views/appearance.php:42
|
103 |
+
msgid "No favicon has been configured yet."
|
104 |
+
msgstr "Tidak ada favicon telah dikonfigurasi belum."
|
105 |
+
|
106 |
+
#: admin/views/appearance.php:62
|
107 |
+
msgid "Favicon generation"
|
108 |
+
msgstr "generasi favicon"
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:64
|
111 |
+
msgid "You can replace the existing favicon."
|
112 |
+
msgstr "Anda dapat mengganti favicon yang ada."
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:71
|
115 |
+
msgid "Master picture URL"
|
116 |
+
msgstr "URL gambar Guru"
|
117 |
+
|
118 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
119 |
+
msgid "Select from the Media Library"
|
120 |
+
msgstr "Pilih dari Perpustakaan Media"
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:79
|
123 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
124 |
+
msgstr "Mengirimkan gambar persegi, setidaknya 70x70 (disarankan: 260x260 atau lebih)"
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:81
|
127 |
+
msgid "If the picture is on your hard drive, you can leave this field blank and upload the picture from RealFaviconGenerator."
|
128 |
+
msgstr "Jika gambar pada hard drive Anda, Anda dapat meninggalkan bidang ini kosong dan meng-upload gambar dari RealFaviconGenerator."
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:89
|
131 |
+
msgid "Favicon files in root directory"
|
132 |
+
msgstr "file favicon di direktori root"
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:94
|
135 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
136 |
+
msgstr "Plugin selalu menyimpan file favicon di direktori khusus."
|
137 |
+
|
138 |
+
#: admin/views/appearance.php:96
|
139 |
+
msgid "However, if this option is enabled, the plugin takes advantage of the permalink feature and the favicon files appear to be in the root directory"
|
140 |
+
msgstr "Namun, jika opsi ini diaktifkan, plugin mengambil keuntungan dari fitur permalink dan file favicon tampak di direktori root"
|
141 |
+
|
142 |
+
#: admin/views/appearance.php:97
|
143 |
+
msgid "recommended"
|
144 |
+
msgstr "direkomendasikan"
|
145 |
+
|
146 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
147 |
+
msgid "Generate favicon"
|
148 |
+
msgstr "menghasilkan favicon"
|
149 |
+
|
150 |
+
#: admin/views/appearance.php:200
|
151 |
+
msgid "Preparing master picture..."
|
152 |
+
msgstr "Mempersiapkan gambar Master ..."
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:257
|
155 |
+
msgid "An error occured"
|
156 |
+
msgstr "Kesalahan terjadi"
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:268
|
159 |
+
msgid "An internal error occurred"
|
160 |
+
msgstr "Terjadi kesalahan internal"
|
161 |
+
|
162 |
+
#: admin/views/settings.php:13
|
163 |
+
msgid "Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > Favicon</a>"
|
164 |
+
msgstr "Apakah Anda ingin setup favicon Anda? Pergi ke <a href=\" %s \"> Penampilan & gt; favicon </a>"
|
165 |
+
|
166 |
+
#: admin/views/settings.php:22
|
167 |
+
msgid "Display update notifications"
|
168 |
+
msgstr "pemberitahuan update tampilan"
|
169 |
+
|
170 |
+
#: admin/views/settings.php:27
|
171 |
+
msgid "Get notifications when RealFaviconGenerator is updated. For example, when Apple releases a new version of iOS or a new platform is supported."
|
172 |
+
msgstr "Dapatkan pemberitahuan bila RealFaviconGenerator diperbarui. Sebagai contoh, ketika Apple merilis versi baru dari iOS atau platform baru didukung."
|
173 |
+
|
174 |
+
#: admin/views/settings.php:36
|
175 |
+
msgid "Save changes"
|
176 |
+
msgstr "Simpan perubahan"
|
177 |
+
|
178 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
179 |
+
msgid "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update"
|
180 |
+
msgstr "Kunjungi <a href=\" %s \"> perubahan log RFG </a> untuk melihat isi update"
|
181 |
+
|
182 |
+
#. Plugin Name of the plugin/theme
|
183 |
+
msgid "Favicon by RealFaviconGenerator"
|
184 |
+
msgstr "Favicon oleh RealFaviconGenerator"
|
185 |
+
|
186 |
+
#. Plugin URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
188 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
189 |
+
|
190 |
+
#. Description of the plugin/theme
|
191 |
+
msgid "Create and install your favicon for all platforms: PC/Mac of course, but also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
192 |
+
msgstr "Membuat dan memasang favicon Anda untuk semua platform: PC / Mac tentu saja, tetapi juga iPhone / iPad, perangkat Android, Windows 8 tablet, dll"
|
193 |
+
|
194 |
+
#. Author of the plugin/theme
|
195 |
+
msgid "Philippe Bernard"
|
196 |
+
msgstr "Philippe Bernard"
|
197 |
+
|
198 |
+
#. Author URI of the plugin/theme
|
199 |
+
msgid "http://realfavicongenerator.net/"
|
200 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-nl_NL.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-nl_NL.po
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon door RealFaviconGenerator 1.2.2\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-03-02 15:00+0100\n"
|
13 |
+
"Last-Translator: Axel <axel@eco13.eu>\n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"X-Generator: Poedit 1.7.3\n"
|
16 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
17 |
+
"Language: nl_NL\n"
|
18 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon Instellingen"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
31 |
+
msgid ""
|
32 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
33 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
34 |
+
"again</a>."
|
35 |
+
msgstr ""
|
36 |
+
"<a href=\"%s\" target=\"_blank\">Een update is beschikbaar</a> op "
|
37 |
+
"RealFaviconGenerator. Misschien wil je <a href=\"%s\">je favicon opnieuw "
|
38 |
+
"genereren</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
41 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
42 |
+
msgstr " | <a href=\"%s\">Verberg dit bericht</a>"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
45 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
46 |
+
msgstr " | <a href=\"%s\">Hou me niet langer op de hoogte van updates</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Favicon wordt geïnstalleerd. Graag even geduld..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon werd geïnstalleerd!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Huidige favicon"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "De favicon is klaar voor gebruik."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Controleer je favicon</a> met de RealFaviconGenerator's favicon "
|
69 |
+
"checker."
|
70 |
+
|
71 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
72 |
+
msgid "This option works only if your site is accessible from the outside."
|
73 |
+
msgstr "Deze optie werkt enkel indien je site van buitenaf toegankelijk is."
|
74 |
+
|
75 |
+
#: admin/views/appearance.php:36
|
76 |
+
msgid "No favicon has been configured yet."
|
77 |
+
msgstr "Er werd nog geen favicon geconfigureerd."
|
78 |
+
|
79 |
+
#: admin/views/appearance.php:56
|
80 |
+
msgid "Favicon generation"
|
81 |
+
msgstr "Faviconcreatie"
|
82 |
+
|
83 |
+
#: admin/views/appearance.php:58
|
84 |
+
msgid "You can replace the existing favicon."
|
85 |
+
msgstr "Je kunt de bestaande favicon vervangen."
|
86 |
+
|
87 |
+
#: admin/views/appearance.php:65
|
88 |
+
msgid "Master picture URL"
|
89 |
+
msgstr "URL bronafbeelding"
|
90 |
+
|
91 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
92 |
+
msgid "Select from the Media Library"
|
93 |
+
msgstr "Selecteer uit de mediabibliotheek"
|
94 |
+
|
95 |
+
#: admin/views/appearance.php:73
|
96 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
97 |
+
msgstr ""
|
98 |
+
"Gebruik een vierkant beeld van min. 70x70px (aanbevolen: 260x260 of meer)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Staat de afbeelding op je harde schijf, dan kun je dit veld leeg laten en "
|
106 |
+
"het beeld vanaf RealFaviconGenerator uploaden."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Faviconbestanden in de root"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr "De plugin slaat de faviconbestanden steeds op in specifieke map."
|
115 |
+
|
116 |
+
#: admin/views/appearance.php:90
|
117 |
+
msgid ""
|
118 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
119 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
120 |
+
msgstr ""
|
121 |
+
"Indien deze optie is ingeschakeld, maakt de plugin evenwel gebruik van de "
|
122 |
+
"permalink feature, waardoor het lijkt alsof de faviconbestanden in de root "
|
123 |
+
"te vinden zijn"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:91
|
126 |
+
msgid "recommended"
|
127 |
+
msgstr "aanbevolen"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:100
|
130 |
+
msgid "Generate favicon"
|
131 |
+
msgstr "Genereer favicon"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:189
|
134 |
+
msgid "An error occured"
|
135 |
+
msgstr "Er trad een fout op"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:200
|
138 |
+
msgid "An internal error occurred"
|
139 |
+
msgstr "Er trad een interne fout op"
|
140 |
+
|
141 |
+
#: admin/views/settings.php:13
|
142 |
+
msgid ""
|
143 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
144 |
+
"Favicon</a>"
|
145 |
+
msgstr ""
|
146 |
+
"Wil je je favicon installeren? Ga naar <a href=\"%s\">Weergave > Favicon</"
|
147 |
+
"a>"
|
148 |
+
|
149 |
+
#: admin/views/settings.php:22
|
150 |
+
msgid "Display update notifications"
|
151 |
+
msgstr "Toon updatemeldingen"
|
152 |
+
|
153 |
+
#: admin/views/settings.php:27
|
154 |
+
msgid ""
|
155 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
156 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
157 |
+
msgstr ""
|
158 |
+
"Ontvang een melding als RealFaviconGenerator wordt bijgewerkt, bijvoorbeeld "
|
159 |
+
"als Apple een nieuwe iOS versie lanceert, of als een nieuw platform wordt "
|
160 |
+
"ondersteund."
|
161 |
+
|
162 |
+
#: admin/views/settings.php:36
|
163 |
+
msgid "Save changes"
|
164 |
+
msgstr "Wijzigingen opslaan"
|
165 |
+
|
166 |
+
#. Plugin Name of the plugin/theme
|
167 |
+
msgid "Favicon by RealFaviconGenerator"
|
168 |
+
msgstr "Favicon door RealFaviconGenerator"
|
169 |
+
|
170 |
+
#. Plugin URI of the plugin/theme
|
171 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
172 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
173 |
+
|
174 |
+
#. Description of the plugin/theme
|
175 |
+
msgid ""
|
176 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
177 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
178 |
+
msgstr ""
|
179 |
+
"Maak en installeer je favicon voor alle platformen: PC en Mac natuurlijk, "
|
180 |
+
"maar ook iPhone en iPad, Androidapparaten, Windows 8 tablets, etc."
|
181 |
+
|
182 |
+
#. Author of the plugin/theme
|
183 |
+
msgid "Philippe Bernard"
|
184 |
+
msgstr "Philippe Bernard"
|
185 |
+
|
186 |
+
#. Author URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/"
|
188 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-pl_PL.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-pl_PL.po
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2016-04-10 20:35+0200\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2016-04-10 21:09+0200\n"
|
13 |
+
"Language-Team: \n"
|
14 |
+
"X-Generator: Poedit 1.8.7\n"
|
15 |
+
"Last-Translator: Maciej Gryniuk <maciejka45@gmail.com>\n"
|
16 |
+
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n"
|
17 |
+
"%100<10 || n%100>=20) ? 1 : 2);\n"
|
18 |
+
"Language: pl\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Ustawienia favicon"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
31 |
+
msgid ""
|
32 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
33 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
34 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
35 |
+
msgstr ""
|
36 |
+
"Identyfikator jednorazowy nie został rozpoznany. Prawdopodobnie jedyną tego "
|
37 |
+
"przyczyną może być atak XSS. Jeżeli sądzisz, że coś działa nieprawidłowo, "
|
38 |
+
"prosimy o <a href=\\\"mailto:contact@realfavicongenerator.net\\\">kontakt</"
|
39 |
+
"a>."
|
40 |
+
|
41 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
42 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
43 |
+
msgid "Cannot create directory %s to store the favicon package"
|
44 |
+
msgstr "Nie można utworzyć katalogu %s do przechowania paczki favicon"
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
47 |
+
msgid "An update is available on RealFaviconGenerator:"
|
48 |
+
msgstr "Dostępna aktualizacja na RealFaviconGenerator:"
|
49 |
+
|
50 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
51 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
52 |
+
msgstr "Być może zechcesz <a href=\"%s\">ponownie wygenerować favicon</a>"
|
53 |
+
|
54 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
55 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
56 |
+
msgid "Hide this notice"
|
57 |
+
msgstr "Ukryj to powiadomienie"
|
58 |
+
|
59 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
61 |
+
msgid "Do not warn me again in case of update"
|
62 |
+
msgstr "Nie powiadamiaj mnie ponownie"
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
65 |
+
msgid "Your favicon was updated automatically:"
|
66 |
+
msgstr "Twój favicon został automatycznie zaktualizowany:"
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
69 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
70 |
+
msgstr ""
|
71 |
+
"Nie można utworzyć katalogu %s do przechowania zawartości paczki favicon"
|
72 |
+
|
73 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
74 |
+
msgid "Unknown reason"
|
75 |
+
msgstr "Nieznany powód"
|
76 |
+
|
77 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
78 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
79 |
+
msgstr "Błąd podczas rozpakowywania paczki favicon %s do katalogu %s"
|
80 |
+
|
81 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
82 |
+
msgid "Cannot download file at %s"
|
83 |
+
msgstr "Nie można pobrać pliku z %s"
|
84 |
+
|
85 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
86 |
+
msgid "Cannot store downloaded file locally"
|
87 |
+
msgstr "Nie można przechować pobranego pliku lokalnie"
|
88 |
+
|
89 |
+
#: admin/views/appearance.php:11
|
90 |
+
msgid "Favicon installation in progress. Please wait..."
|
91 |
+
msgstr "Instalacja favicon w toku. Proszę czekać..."
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:16
|
94 |
+
msgid "Favicon installed!"
|
95 |
+
msgstr "Favicon zainstalowany!"
|
96 |
+
|
97 |
+
#: admin/views/appearance.php:18
|
98 |
+
msgid ""
|
99 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
100 |
+
msgstr ""
|
101 |
+
"Podoba Ci się osiągnięty rezultat? Jeżeli tak, będziemy wdzięczni za <a "
|
102 |
+
"%s>ocenę wtyczki</a>."
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
105 |
+
msgid "Current favicon"
|
106 |
+
msgstr "Bieżący favicon"
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
109 |
+
msgid "The favicon is up and ready."
|
110 |
+
msgstr "Favicon jest zainstalowany."
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
113 |
+
msgid ""
|
114 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
115 |
+
msgstr "<a %s>Sprawdź swój favicon</a> poprzez system RealFaviconGenerator."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
118 |
+
msgid "This option works only if your site is accessible from the outside."
|
119 |
+
msgstr ""
|
120 |
+
"Ta opcja zadziała, tylko jeżeli Twoja strona jest publicznie dostępna."
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:42
|
123 |
+
msgid "No favicon has been configured yet."
|
124 |
+
msgstr "Jeszcze nie skonfigurowano favicon."
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:62
|
127 |
+
msgid "Favicon generation"
|
128 |
+
msgstr "Tworzenie favicon'a"
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:64
|
131 |
+
msgid "You can replace the existing favicon."
|
132 |
+
msgstr "Możesz zastąpić bieżącego favicon'a."
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:71
|
135 |
+
msgid "Master picture URL"
|
136 |
+
msgstr "Adres URL głównej grafiki"
|
137 |
+
|
138 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
139 |
+
msgid "Select from the Media Library"
|
140 |
+
msgstr "Wybierz z Biblioteki mediów"
|
141 |
+
|
142 |
+
#: admin/views/appearance.php:79
|
143 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
144 |
+
msgstr ""
|
145 |
+
"Prześlij kwadratową grafikę, wymiarów przynajmniej 70x70 (zalecane: 260x260 "
|
146 |
+
"lub więcej)"
|
147 |
+
|
148 |
+
#: admin/views/appearance.php:81
|
149 |
+
msgid ""
|
150 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
151 |
+
"upload the picture from RealFaviconGenerator."
|
152 |
+
msgstr ""
|
153 |
+
"Jeżeli grafika znajduje się na Twoim dysku twardym, możesz zostawić to pole "
|
154 |
+
"puste i przesłać ją poprzez RealFaviconGenerator."
|
155 |
+
|
156 |
+
#: admin/views/appearance.php:89
|
157 |
+
msgid "Favicon files in root directory"
|
158 |
+
msgstr "Pliki favicon w katalogu głównym"
|
159 |
+
|
160 |
+
#: admin/views/appearance.php:94
|
161 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
162 |
+
msgstr "Wtyczka zawsze przechowuje pliki favicon w wydzielonym katalogu."
|
163 |
+
|
164 |
+
#: admin/views/appearance.php:96
|
165 |
+
msgid ""
|
166 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
167 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
168 |
+
msgstr ""
|
169 |
+
"Jednakże, jeżeli aktywujesz tę opcję, wtyczka skorzysta ze struktury "
|
170 |
+
"bezpośrednich odnośników i pliki favicon pojawią się w katalogu głównym"
|
171 |
+
|
172 |
+
#: admin/views/appearance.php:97
|
173 |
+
msgid "recommended"
|
174 |
+
msgstr "zalecane"
|
175 |
+
|
176 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
177 |
+
msgid "Generate favicon"
|
178 |
+
msgstr "Stwórz favicon"
|
179 |
+
|
180 |
+
#: admin/views/appearance.php:200
|
181 |
+
msgid "Preparing master picture..."
|
182 |
+
msgstr "Przygotowywanie głównej grafiki..."
|
183 |
+
|
184 |
+
#: admin/views/appearance.php:257
|
185 |
+
msgid "An error occured"
|
186 |
+
msgstr "Wystąpił błąd"
|
187 |
+
|
188 |
+
#: admin/views/appearance.php:268
|
189 |
+
msgid "An internal error occurred"
|
190 |
+
msgstr "Wystąpił błąd wewnętrzny"
|
191 |
+
|
192 |
+
#: admin/views/settings.php:13
|
193 |
+
msgid ""
|
194 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
195 |
+
"Favicon</a>"
|
196 |
+
msgstr ""
|
197 |
+
"Chcesz zainstalować swój favicon? Przejdź do <a href=\"%s\">Wygląd > "
|
198 |
+
"Favicon</a>"
|
199 |
+
|
200 |
+
#: admin/views/settings.php:22
|
201 |
+
msgid "Display update notifications"
|
202 |
+
msgstr "Wyświetlaj powiadomienia o aktualizacji"
|
203 |
+
|
204 |
+
#: admin/views/settings.php:27
|
205 |
+
msgid ""
|
206 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
207 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
208 |
+
msgstr ""
|
209 |
+
"Otrzymuj powiadomienia o aktualizacjach RealFaviconGenerator. Przykładowo - "
|
210 |
+
"Apple wydało nową wersję iOS lub wspieramy nową platformę."
|
211 |
+
|
212 |
+
#: admin/views/settings.php:36
|
213 |
+
msgid "Save changes"
|
214 |
+
msgstr "Zapisz zmiany"
|
215 |
+
|
216 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
217 |
+
msgid ""
|
218 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
219 |
+
"update"
|
220 |
+
msgstr ""
|
221 |
+
"Przejdź do <a href=\"%s\">dziennika zmian RFG</a>, aby przejrzeć treść "
|
222 |
+
"aktualizacji"
|
223 |
+
|
224 |
+
#. Plugin Name of the plugin/theme
|
225 |
+
msgid "Favicon by RealFaviconGenerator"
|
226 |
+
msgstr "Favicon od RealFaviconGenerator"
|
227 |
+
|
228 |
+
#. Plugin URI of the plugin/theme
|
229 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
230 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
231 |
+
|
232 |
+
#. Description of the plugin/theme
|
233 |
+
msgid ""
|
234 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
235 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
236 |
+
msgstr ""
|
237 |
+
"Twórz i instaluj favicon'a dla wszystkich platform: PC/Mac, iPhone/iPad, "
|
238 |
+
"Android, Windows 8, tablety itp."
|
239 |
+
|
240 |
+
#. Author of the plugin/theme
|
241 |
+
msgid "Philippe Bernard"
|
242 |
+
msgstr "Philippe Bernard"
|
243 |
+
|
244 |
+
#. Author URI of the plugin/theme
|
245 |
+
msgid "http://realfavicongenerator.net/"
|
246 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-pt_BR.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-pt_BR.po
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator\n"
|
4 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
5 |
+
"realfavicongenerator\n"
|
6 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
7 |
+
"PO-Revision-Date: \n"
|
8 |
+
"Last-Translator: Techload <contato@techload.com.br>\n"
|
9 |
+
"Language-Team: Techload\n"
|
10 |
+
"Language: pt_BR\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"X-Generator: Poedit 1.6.9\n"
|
15 |
+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
16 |
+
"X-Poedit-KeywordsList: _;__e\n"
|
17 |
+
"X-Poedit-Basepath: .\n"
|
18 |
+
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
22 |
+
msgid "Favicon"
|
23 |
+
msgstr "Favicon"
|
24 |
+
|
25 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
26 |
+
msgid "Favicon Settings"
|
27 |
+
msgstr "Configurações do Favicon"
|
28 |
+
|
29 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
30 |
+
msgid ""
|
31 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
32 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
33 |
+
"again</a>."
|
34 |
+
msgstr ""
|
35 |
+
"<a href=\"%s\" target=\"_blank\">Uma atualização está disponível</a> em "
|
36 |
+
"RealFaviconGenerator. Você pode querer <a href=\"%s\">gerar seu favicon "
|
37 |
+
"novamente</a>."
|
38 |
+
|
39 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
40 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
41 |
+
msgstr " | <a href=\"%s\">Ocultar este aviso</a>"
|
42 |
+
|
43 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
44 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
45 |
+
msgstr ""
|
46 |
+
" | <a href=\"%s\">Não me avisar novamente quando houver atualizações</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Instalação do Favicon em andamento. Por favor, aguarde..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon instalado!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Favicon atual"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "O favicon está pronto."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Verifique o seu favicon</a> com o verificador de favicon do "
|
69 |
+
"RealFaviconGenerator."
|
70 |
+
|
71 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
72 |
+
msgid "This option works only if your site is accessible from the outside."
|
73 |
+
msgstr "Esta opção só funciona se o site está acessível publicamente."
|
74 |
+
|
75 |
+
#: admin/views/appearance.php:36
|
76 |
+
msgid "No favicon has been configured yet."
|
77 |
+
msgstr "Nenhum favicon foi configurado ainda."
|
78 |
+
|
79 |
+
#: admin/views/appearance.php:56
|
80 |
+
msgid "Favicon generation"
|
81 |
+
msgstr "Geração do Favicon"
|
82 |
+
|
83 |
+
#: admin/views/appearance.php:58
|
84 |
+
msgid "You can replace the existing favicon."
|
85 |
+
msgstr "Você pode substituir o favicon existente."
|
86 |
+
|
87 |
+
#: admin/views/appearance.php:65
|
88 |
+
msgid "Master picture URL"
|
89 |
+
msgstr "URL da imagem"
|
90 |
+
|
91 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
92 |
+
msgid "Select from the Media Library"
|
93 |
+
msgstr "Selecione a partir da Biblioteca de Mídia"
|
94 |
+
|
95 |
+
#: admin/views/appearance.php:73
|
96 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
97 |
+
msgstr ""
|
98 |
+
"Enviar uma imagem quadrada, pelo menos 70x70 (recomendado: 260x260 ou mais)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Se a imagem estiver em seu disco rígido, você pode deixar este campo em "
|
106 |
+
"branco e fazer o upload da imagem a partir do RealFaviconGenerator."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Arquivos do favicon no diretório raiz"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr ""
|
115 |
+
"O plugin sempre armazena os arquivos favicon em um diretório específico."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:90
|
118 |
+
msgid ""
|
119 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
120 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
121 |
+
msgstr ""
|
122 |
+
"No entanto, se esta opção estiver habilitada, o plugin aproveita os recursos "
|
123 |
+
"do permalink e os arquivos favicon parecem estar no diretório raiz"
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:91
|
126 |
+
msgid "recommended"
|
127 |
+
msgstr "recomendado"
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:100
|
130 |
+
msgid "Generate favicon"
|
131 |
+
msgstr "Gerar o favicon"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:189
|
134 |
+
msgid "An error occured"
|
135 |
+
msgstr "Ocorreu um erro"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:200
|
138 |
+
msgid "An internal error occurred"
|
139 |
+
msgstr "Ocorreu um erro interno"
|
140 |
+
|
141 |
+
#: admin/views/settings.php:13
|
142 |
+
msgid ""
|
143 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
144 |
+
"Favicon</a>"
|
145 |
+
msgstr ""
|
146 |
+
"Deseja configurar seu favicon? Vá até <a href=\"%s\">Aparência > Favicon</"
|
147 |
+
"a>"
|
148 |
+
|
149 |
+
#: admin/views/settings.php:22
|
150 |
+
msgid "Display update notifications"
|
151 |
+
msgstr "Exibir notificações de atualizações"
|
152 |
+
|
153 |
+
#: admin/views/settings.php:27
|
154 |
+
msgid ""
|
155 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
156 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
157 |
+
msgstr ""
|
158 |
+
"Receber notificações quando o RealFaviconGenerator for atualizado. Por "
|
159 |
+
"exemplo, quando a Apple lançar uma nova versão do iOS ou quando uma nova "
|
160 |
+
"plataforma for suportada."
|
161 |
+
|
162 |
+
#: admin/views/settings.php:36
|
163 |
+
msgid "Save changes"
|
164 |
+
msgstr "Salvar mudanças"
|
165 |
+
|
166 |
+
#. Plugin Name of the plugin/theme
|
167 |
+
msgid "Favicon by RealFaviconGenerator"
|
168 |
+
msgstr "Favicon por RealFaviconGenerator"
|
169 |
+
|
170 |
+
#. Plugin URI of the plugin/theme
|
171 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
172 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
173 |
+
|
174 |
+
#. Description of the plugin/theme
|
175 |
+
msgid ""
|
176 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
177 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
178 |
+
msgstr ""
|
179 |
+
"Crie e instale o seu favicon para todas as plataformas: PC/Mac, é claro, mas "
|
180 |
+
"também para o iPhone/iPad, dispositivos Android, tablets com Windows 8, etc."
|
181 |
+
|
182 |
+
#. Author of the plugin/theme
|
183 |
+
msgid "Philippe Bernard"
|
184 |
+
msgstr "Philippe Bernard"
|
185 |
+
|
186 |
+
#. Author URI of the plugin/theme
|
187 |
+
msgid "http://realfavicongenerator.net/"
|
188 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-ru_RU.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-ru_RU.po
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Translation of Development (trunk) in Russian
|
2 |
+
# This file is distributed under the same license as the Development (trunk) package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"PO-Revision-Date: 2016-05-17 16:05+0300\n"
|
6 |
+
"MIME-Version: 1.0\n"
|
7 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
8 |
+
"Content-Transfer-Encoding: 8bit\n"
|
9 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
10 |
+
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
11 |
+
"X-Generator: Poedit 1.8.7\n"
|
12 |
+
"Project-Id-Version: Development (trunk)\n"
|
13 |
+
"POT-Creation-Date: \n"
|
14 |
+
"Language-Team: \n"
|
15 |
+
"Last-Translator: \n"
|
16 |
+
"Language: ru_RU\n"
|
17 |
+
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
19 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
21 |
+
msgid "Favicon"
|
22 |
+
msgstr "Favicon"
|
23 |
+
|
24 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
25 |
+
msgid "Favicon Settings"
|
26 |
+
msgstr "Настройки Favicon"
|
27 |
+
|
28 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:174
|
29 |
+
msgid ""
|
30 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
31 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
32 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
33 |
+
msgstr ""
|
34 |
+
"Специальное слово не распознается. Такое происхоит только в случае атак "
|
35 |
+
"XSS. Если Вам кажется, что что-то не так, пожалуйста, <a href=\"\\\"mailto:"
|
36 |
+
"contact@realfavicongenerator.net\\\"\">свяжитесь с нами</a>."
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
39 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:415
|
40 |
+
msgid "Cannot create directory %s to store the favicon package"
|
41 |
+
msgstr "Не удается создать каталог %s для хранения пакета значков"
|
42 |
+
|
43 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:434
|
44 |
+
msgid "An update is available on RealFaviconGenerator:"
|
45 |
+
msgstr "Обновление доступно на RealFaviconGenerator:"
|
46 |
+
|
47 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:440
|
48 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
49 |
+
msgstr "Может потребоваться <a href=\"%s\">создать свой значок снова</a>"
|
50 |
+
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:446
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:469
|
53 |
+
msgid "Hide this notice"
|
54 |
+
msgstr "Скрыть это уведомление"
|
55 |
+
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:450
|
57 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:473
|
58 |
+
msgid "Do not warn me again in case of update"
|
59 |
+
msgstr "Не предупреждать в случае обновления"
|
60 |
+
|
61 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:463
|
62 |
+
msgid "Your favicon was updated automatically:"
|
63 |
+
msgstr "Ваш значок был обновлен автоматически:"
|
64 |
+
|
65 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
66 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
67 |
+
msgstr "Не удается создать каталог %s для хранения содержимого пакета значков"
|
68 |
+
|
69 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
70 |
+
msgid "Unknown reason"
|
71 |
+
msgstr "Неизвестная причина"
|
72 |
+
|
73 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
74 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
75 |
+
msgstr "Ошибка при распаковке favicon пакета в директорию % S"
|
76 |
+
|
77 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
78 |
+
msgid "Cannot download file at %s"
|
79 |
+
msgstr "Не удается загрузить файл на %s"
|
80 |
+
|
81 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
82 |
+
msgid "Cannot store downloaded file locally"
|
83 |
+
msgstr "Не удается сохранить загруженный файл локально"
|
84 |
+
|
85 |
+
#: admin/views/appearance.php:11
|
86 |
+
msgid "Favicon installation in progress. Please wait..."
|
87 |
+
msgstr "Идет установка Favicon. Пожалуйста, подождите..."
|
88 |
+
|
89 |
+
#: admin/views/appearance.php:16
|
90 |
+
msgid "Favicon installed!"
|
91 |
+
msgstr "Favicon установлен!"
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:18
|
94 |
+
msgid ""
|
95 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
96 |
+
msgstr ""
|
97 |
+
"Вам нравится реультат? Если да, то вам хотелось бы <a %s> оценить плагин </"
|
98 |
+
"a>?"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
101 |
+
msgid "Current favicon"
|
102 |
+
msgstr "Текущий значок"
|
103 |
+
|
104 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
105 |
+
msgid "The favicon is up and ready."
|
106 |
+
msgstr "Favicon установлен и готов к работе."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
109 |
+
msgid ""
|
110 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
111 |
+
msgstr "<a %s> Проверьте favicon</a> через RealFaviconGenerator favicon."
|
112 |
+
|
113 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
114 |
+
msgid "This option works only if your site is accessible from the outside."
|
115 |
+
msgstr "Эта опция работает только для сайтов, которые доступны извне."
|
116 |
+
|
117 |
+
#: admin/views/appearance.php:42
|
118 |
+
msgid "No favicon has been configured yet."
|
119 |
+
msgstr "Ни один значок пока не настроен."
|
120 |
+
|
121 |
+
#: admin/views/appearance.php:62
|
122 |
+
msgid "Favicon generation"
|
123 |
+
msgstr "Favicon генерация "
|
124 |
+
|
125 |
+
#: admin/views/appearance.php:64
|
126 |
+
msgid "You can replace the existing favicon."
|
127 |
+
msgstr "Вы можете заменить существующий фавикон."
|
128 |
+
|
129 |
+
#: admin/views/appearance.php:71
|
130 |
+
msgid "Master picture URL"
|
131 |
+
msgstr "URL главного изображения"
|
132 |
+
|
133 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
134 |
+
msgid "Select from the Media Library"
|
135 |
+
msgstr "Выберите из библиотеки мультимедиа"
|
136 |
+
|
137 |
+
#: admin/views/appearance.php:79
|
138 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
139 |
+
msgstr ""
|
140 |
+
"Добавьте квадратную картину размером не менее 70 х 70 (рекомендованный "
|
141 |
+
"размер: 260x260 или более)"
|
142 |
+
|
143 |
+
#: admin/views/appearance.php:81
|
144 |
+
msgid ""
|
145 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
146 |
+
"upload the picture from RealFaviconGenerator."
|
147 |
+
msgstr ""
|
148 |
+
"Если изображение находится на вашем жестком диске, вы можете оставить это "
|
149 |
+
"поле пустым и загрузить изображение из RealFaviconGenerator."
|
150 |
+
|
151 |
+
#: admin/views/appearance.php:89
|
152 |
+
msgid "Favicon files in root directory"
|
153 |
+
msgstr "Favicon файлы в корневой директории"
|
154 |
+
|
155 |
+
#: admin/views/appearance.php:94
|
156 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
157 |
+
msgstr "Плагин всегда сохраняет favicon файлы в отдельную директорию."
|
158 |
+
|
159 |
+
#: admin/views/appearance.php:96
|
160 |
+
msgid ""
|
161 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
162 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
163 |
+
msgstr ""
|
164 |
+
"Однако, если эта опция включена, плагин использует преимущества функции "
|
165 |
+
"постоянной ссылки и фавикон файлы появятся в корневом каталоге"
|
166 |
+
|
167 |
+
#: admin/views/appearance.php:97
|
168 |
+
msgid "recommended"
|
169 |
+
msgstr "рекомендуется"
|
170 |
+
|
171 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
172 |
+
msgid "Generate favicon"
|
173 |
+
msgstr "Генерировать favicon"
|
174 |
+
|
175 |
+
#: admin/views/appearance.php:200
|
176 |
+
msgid "Preparing master picture..."
|
177 |
+
msgstr "Подготовка главного изображения ..."
|
178 |
+
|
179 |
+
#: admin/views/appearance.php:257
|
180 |
+
msgid "An error occured"
|
181 |
+
msgstr "Произошла ошибка"
|
182 |
+
|
183 |
+
#: admin/views/appearance.php:268
|
184 |
+
msgid "An internal error occurred"
|
185 |
+
msgstr "Произошла внутренняя ошибка"
|
186 |
+
|
187 |
+
#: admin/views/settings.php:13
|
188 |
+
msgid ""
|
189 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
190 |
+
"Favicon</a>"
|
191 |
+
msgstr ""
|
192 |
+
"Вы хотите настроить свой favicon? Перейти к <a href=\"%s\"> Appearance > "
|
193 |
+
"Favicon </a>"
|
194 |
+
|
195 |
+
#: admin/views/settings.php:22
|
196 |
+
msgid "Display update notifications"
|
197 |
+
msgstr "Отображать уведомления об обновлениях"
|
198 |
+
|
199 |
+
#: admin/views/settings.php:27
|
200 |
+
msgid ""
|
201 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
202 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
203 |
+
msgstr ""
|
204 |
+
"Получать уведомления, когда RealFaviconGenerator обновляется. Например, "
|
205 |
+
"когда компания Apple выпускает новую версию iOS или поддержку новой "
|
206 |
+
"платформы."
|
207 |
+
|
208 |
+
#: admin/views/settings.php:36
|
209 |
+
msgid "Save changes"
|
210 |
+
msgstr "Сохранить изменения"
|
211 |
+
|
212 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
213 |
+
msgid ""
|
214 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
215 |
+
"update"
|
216 |
+
msgstr ""
|
217 |
+
"Посетите <a href=\"%s\">журнал изменений RFG</a> чтобы просмотреть "
|
218 |
+
"содержимое обновления"
|
219 |
+
|
220 |
+
#. Plugin Name of the plugin/theme
|
221 |
+
msgid "Favicon by RealFaviconGenerator"
|
222 |
+
msgstr "Favicon от RealFaviconGenerator"
|
223 |
+
|
224 |
+
#. Plugin URI of the plugin/theme
|
225 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
226 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
227 |
+
|
228 |
+
#. Description of the plugin/theme
|
229 |
+
msgid ""
|
230 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
231 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
232 |
+
msgstr ""
|
233 |
+
"Создайте и установите фавикон на всех платформах: конечно, PC / Mac, но так "
|
234 |
+
"же и на iPhone / Ipad, Android устройствах, Windows 8 планшетах и т.д."
|
235 |
+
|
236 |
+
#. Author of the plugin/theme
|
237 |
+
msgid "Philippe Bernard"
|
238 |
+
msgstr "Филиппе Бернар"
|
239 |
+
|
240 |
+
#. Author URI of the plugin/theme
|
241 |
+
msgid "http://realfavicongenerator.net/"
|
242 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator-sv_SE.mo
ADDED
Binary file
|
trunk/languages/favicon-by-realfavicongenerator-sv_SE.po
ADDED
@@ -0,0 +1,186 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2014-2016 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.0.4\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/tag/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2014-10-22 20:10:01+00:00\n"
|
9 |
+
"PO-Revision-Date: 2014-11-15 09:54+0100\n"
|
10 |
+
"Last-Translator: Linus Wileryd <linus@cutup.se>\n"
|
11 |
+
"Language-Team: Linus <linus@cutup.se>\n"
|
12 |
+
"Language: sv_SE\n"
|
13 |
+
"MIME-Version: 1.0\n"
|
14 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
15 |
+
"Content-Transfer-Encoding: 8bit\n"
|
16 |
+
"X-Generator: Poedit 1.6.10\n"
|
17 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
19 |
+
|
20 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:65
|
21 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:66
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:70
|
23 |
+
msgid "Favicon"
|
24 |
+
msgstr "Favicon"
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:69
|
27 |
+
msgid "Favicon Settings"
|
28 |
+
msgstr "Favicon-inställningar"
|
29 |
+
|
30 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:351
|
31 |
+
msgid ""
|
32 |
+
"<a href=\"%s\" target=\"_blank\">An update is available</a> on "
|
33 |
+
"RealFaviconGenerator. You might want to <a href=\"%s\">generate your favicon "
|
34 |
+
"again</a>."
|
35 |
+
msgstr ""
|
36 |
+
"<a href=\"%s\" target=\"_blank\">En uppdatering finns tillgänglig</a> hos "
|
37 |
+
"RealFaviconGenerator. Du vill förmodligen <a href=\"%s\">generera din "
|
38 |
+
"favicon på nytt</a>."
|
39 |
+
|
40 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:354
|
41 |
+
msgid " | <a href=\"%s\">Hide this notice</a>"
|
42 |
+
msgstr " | <a href=\"%s\">Dölj denna notis</a>"
|
43 |
+
|
44 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:356
|
45 |
+
msgid " | <a href=\"%s\">Do not warn me again in case of update</a>"
|
46 |
+
msgstr " | <a href=\"%s\">Varna mig inte igen om ev. uppdateringar</a>"
|
47 |
+
|
48 |
+
#: admin/views/appearance.php:11
|
49 |
+
msgid "Favicon installation in progress. Please wait..."
|
50 |
+
msgstr "Favicon installeras just nu. Var vänlig vänta..."
|
51 |
+
|
52 |
+
#: admin/views/appearance.php:15
|
53 |
+
msgid "Favicon installed!"
|
54 |
+
msgstr "Favicon installerad!"
|
55 |
+
|
56 |
+
#: admin/views/appearance.php:20 admin/views/appearance.php:31
|
57 |
+
msgid "Current favicon"
|
58 |
+
msgstr "Aktuell favicon"
|
59 |
+
|
60 |
+
#: admin/views/appearance.php:21 admin/views/appearance.php:34
|
61 |
+
msgid "The favicon is up and ready."
|
62 |
+
msgstr "Favicon är uppladdad och redo."
|
63 |
+
|
64 |
+
#: admin/views/appearance.php:25 admin/views/appearance.php:46
|
65 |
+
msgid ""
|
66 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
67 |
+
msgstr ""
|
68 |
+
"<a %s>Granska din favicon</a> med RealFaviconGenerators favicon-granskare."
|
69 |
+
|
70 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:49
|
71 |
+
msgid "This option works only if your site is accessible from the outside."
|
72 |
+
msgstr "Detta tillval fungerar endast om din sajt är åtkomlig utifrån."
|
73 |
+
|
74 |
+
#: admin/views/appearance.php:36
|
75 |
+
msgid "No favicon has been configured yet."
|
76 |
+
msgstr "Ingen favicon har konfigurerats ännu."
|
77 |
+
|
78 |
+
#: admin/views/appearance.php:56
|
79 |
+
msgid "Favicon generation"
|
80 |
+
msgstr "Genererande av favicon"
|
81 |
+
|
82 |
+
#: admin/views/appearance.php:58
|
83 |
+
msgid "You can replace the existing favicon."
|
84 |
+
msgstr "Du kan ersätta den favicon som existerar."
|
85 |
+
|
86 |
+
#: admin/views/appearance.php:65
|
87 |
+
msgid "Master picture URL"
|
88 |
+
msgstr "Originalbildlänk"
|
89 |
+
|
90 |
+
#: admin/views/appearance.php:69 admin/views/appearance.php:70
|
91 |
+
msgid "Select from the Media Library"
|
92 |
+
msgstr "Välj från Mediabiblioteket"
|
93 |
+
|
94 |
+
#: admin/views/appearance.php:73
|
95 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
96 |
+
msgstr ""
|
97 |
+
"Skicka in en kvadratisk bild, minst 70x70 (rekommenderat: 260x260 eller "
|
98 |
+
"högre)"
|
99 |
+
|
100 |
+
#: admin/views/appearance.php:75
|
101 |
+
msgid ""
|
102 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
103 |
+
"upload the picture from RealFaviconGenerator."
|
104 |
+
msgstr ""
|
105 |
+
"Om bilden finns på din hårddisk kan du lämna fältet blankt och ladda upp "
|
106 |
+
"bilden från RealFaviconGenerator."
|
107 |
+
|
108 |
+
#: admin/views/appearance.php:83
|
109 |
+
msgid "Favicon files in root directory"
|
110 |
+
msgstr "Favicon-filer i rotmappen"
|
111 |
+
|
112 |
+
#: admin/views/appearance.php:88
|
113 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
114 |
+
msgstr "Tillägget sparar alltid favicon-filerna i en dedikerad mapp."
|
115 |
+
|
116 |
+
#: admin/views/appearance.php:90
|
117 |
+
msgid ""
|
118 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
119 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
120 |
+
msgstr ""
|
121 |
+
"Hursomhelst, om detta tillval är aktiverat använder tillägget sig av "
|
122 |
+
"permalänk-funktionen och favicon-filerna ser ut att finnas i rotmappen"
|
123 |
+
|
124 |
+
#: admin/views/appearance.php:91
|
125 |
+
msgid "recommended"
|
126 |
+
msgstr "rekommenderat"
|
127 |
+
|
128 |
+
#: admin/views/appearance.php:100
|
129 |
+
msgid "Generate favicon"
|
130 |
+
msgstr "Generera favicon"
|
131 |
+
|
132 |
+
#: admin/views/appearance.php:189
|
133 |
+
msgid "An error occured"
|
134 |
+
msgstr "Ett fel uppstod"
|
135 |
+
|
136 |
+
#: admin/views/appearance.php:200
|
137 |
+
msgid "An internal error occurred"
|
138 |
+
msgstr "Ett internt fel uppstod"
|
139 |
+
|
140 |
+
#: admin/views/settings.php:13
|
141 |
+
msgid ""
|
142 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
143 |
+
"Favicon</a>"
|
144 |
+
msgstr ""
|
145 |
+
"Vill du ställa in din favicon? Gå till <a href=\"%s\">Utseende > Favicon</"
|
146 |
+
"a>"
|
147 |
+
|
148 |
+
#: admin/views/settings.php:22
|
149 |
+
msgid "Display update notifications"
|
150 |
+
msgstr "Visa uppdateringsnotiser"
|
151 |
+
|
152 |
+
#: admin/views/settings.php:27
|
153 |
+
msgid ""
|
154 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
155 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
156 |
+
msgstr ""
|
157 |
+
"Få notifieringar när RealFaviconGenerator uppdateras t.ex. när Apple släpper "
|
158 |
+
"en ny version av iOS eller att det införs stöd för en ny plattform."
|
159 |
+
|
160 |
+
#: admin/views/settings.php:36
|
161 |
+
msgid "Save changes"
|
162 |
+
msgstr "Spara ändringar"
|
163 |
+
|
164 |
+
#. Plugin Name of the plugin/theme
|
165 |
+
msgid "Favicon by RealFaviconGenerator"
|
166 |
+
msgstr "Favicon av RealFaviconGenerator"
|
167 |
+
|
168 |
+
#. Plugin URI of the plugin/theme
|
169 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
170 |
+
msgstr "http://realfavicongenerator.net/extensions/wordpress"
|
171 |
+
|
172 |
+
#. Description of the plugin/theme
|
173 |
+
msgid ""
|
174 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
175 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
176 |
+
msgstr ""
|
177 |
+
"Skapa och installera din favicon för alla plattformar: PC/Mac såklart, men "
|
178 |
+
"också iPhone/iPad, Android-enheter, Windows 8-surfplattor etc."
|
179 |
+
|
180 |
+
#. Author of the plugin/theme
|
181 |
+
msgid "Philippe Bernard"
|
182 |
+
msgstr "Philippe Bernard"
|
183 |
+
|
184 |
+
#. Author URI of the plugin/theme
|
185 |
+
msgid "http://realfavicongenerator.net/"
|
186 |
+
msgstr "http://realfavicongenerator.net/"
|
trunk/languages/favicon-by-realfavicongenerator.pot
ADDED
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2015 Favicon by RealFaviconGenerator
|
2 |
+
# This file is distributed under the same license as the Favicon by RealFaviconGenerator package.
|
3 |
+
msgid ""
|
4 |
+
msgstr ""
|
5 |
+
"Project-Id-Version: Favicon by RealFaviconGenerator 1.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/favicon-by-"
|
7 |
+
"realfavicongenerator\n"
|
8 |
+
"POT-Creation-Date: 2015-06-24 08:06:10+00:00\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
|
13 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
+
|
16 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:77
|
17 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:78
|
18 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:82
|
19 |
+
msgid "Favicon"
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:81
|
23 |
+
msgid "Favicon Settings"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:182
|
27 |
+
msgid ""
|
28 |
+
"Nonce was not recognized. This case is supposed to happen only in case of "
|
29 |
+
"XSS attack. If you feel like something is wrong, please <a href=\\\"mailto:"
|
30 |
+
"contact@realfavicongenerator.net\\\">contact us</a>."
|
31 |
+
msgstr ""
|
32 |
+
|
33 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:190
|
34 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:414
|
35 |
+
msgid "Cannot create directory %s to store the favicon package"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:442
|
39 |
+
msgid "An update is available on RealFaviconGenerator:"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:448
|
43 |
+
msgid "You might want to <a href=\"%s\">generate your favicon again</a>"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:454
|
47 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:477
|
48 |
+
msgid "Hide this notice"
|
49 |
+
msgstr ""
|
50 |
+
|
51 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:458
|
52 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:481
|
53 |
+
msgid "Do not warn me again in case of update"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin/class-favicon-by-realfavicongenerator-admin.php:471
|
57 |
+
msgid "Your favicon was updated automatically:"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:159
|
61 |
+
msgid "Cannot create directory %s to store the favicon package content"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:206
|
65 |
+
msgid "Unknown reason"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:212
|
69 |
+
msgid "Error while unziping the favicon package %s to directory %s"
|
70 |
+
msgstr ""
|
71 |
+
|
72 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:281
|
73 |
+
msgid "Cannot download file at %s"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: admin/class-favicon-by-realfavicongenerator-api-response.php:284
|
77 |
+
msgid "Cannot store downloaded file locally"
|
78 |
+
msgstr ""
|
79 |
+
|
80 |
+
#: admin/views/appearance.php:11
|
81 |
+
msgid "Favicon installation in progress. Please wait..."
|
82 |
+
msgstr ""
|
83 |
+
|
84 |
+
#: admin/views/appearance.php:16
|
85 |
+
msgid "Favicon installed!"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/views/appearance.php:18
|
89 |
+
msgid ""
|
90 |
+
"Do you like the result? If so, would you like to <a %s>rate the plugin</a>?"
|
91 |
+
msgstr ""
|
92 |
+
|
93 |
+
#: admin/views/appearance.php:26 admin/views/appearance.php:37
|
94 |
+
msgid "Current favicon"
|
95 |
+
msgstr ""
|
96 |
+
|
97 |
+
#: admin/views/appearance.php:27 admin/views/appearance.php:40
|
98 |
+
msgid "The favicon is up and ready."
|
99 |
+
msgstr ""
|
100 |
+
|
101 |
+
#: admin/views/appearance.php:31 admin/views/appearance.php:52
|
102 |
+
msgid ""
|
103 |
+
"<a %s>Check your favicon</a> with RealFaviconGenerator's favicon checker."
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: admin/views/appearance.php:33 admin/views/appearance.php:55
|
107 |
+
msgid "This option works only if your site is accessible from the outside."
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: admin/views/appearance.php:42
|
111 |
+
msgid "No favicon has been configured yet."
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: admin/views/appearance.php:62
|
115 |
+
msgid "Favicon generation"
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: admin/views/appearance.php:64
|
119 |
+
msgid "You can replace the existing favicon."
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: admin/views/appearance.php:71
|
123 |
+
msgid "Master picture URL"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: admin/views/appearance.php:75 admin/views/appearance.php:76
|
127 |
+
msgid "Select from the Media Library"
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
+
#: admin/views/appearance.php:79
|
131 |
+
msgid "Submit a square picture, at least 70x70 (recommended: 260x260 or more)"
|
132 |
+
msgstr ""
|
133 |
+
|
134 |
+
#: admin/views/appearance.php:81
|
135 |
+
msgid ""
|
136 |
+
"If the picture is on your hard drive, you can leave this field blank and "
|
137 |
+
"upload the picture from RealFaviconGenerator."
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: admin/views/appearance.php:89
|
141 |
+
msgid "Favicon files in root directory"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: admin/views/appearance.php:94
|
145 |
+
msgid "The plugin always stores the favicon files in a dedicated directory."
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: admin/views/appearance.php:96
|
149 |
+
msgid ""
|
150 |
+
"However, if this option is enabled, the plugin takes advantage of the "
|
151 |
+
"permalink feature and the favicon files appear to be in the root directory"
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
#: admin/views/appearance.php:97
|
155 |
+
msgid "recommended"
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: admin/views/appearance.php:106 admin/views/appearance.php:220
|
159 |
+
msgid "Generate favicon"
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: admin/views/appearance.php:200
|
163 |
+
msgid "Preparing master picture..."
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
#: admin/views/appearance.php:257
|
167 |
+
msgid "An error occured"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
#: admin/views/appearance.php:268
|
171 |
+
msgid "An internal error occurred"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: admin/views/settings.php:13
|
175 |
+
msgid ""
|
176 |
+
"Do you want to setup your favicon? Go to <a href=\"%s\">Appearance > "
|
177 |
+
"Favicon</a>"
|
178 |
+
msgstr ""
|
179 |
+
|
180 |
+
#: admin/views/settings.php:22
|
181 |
+
msgid "Display update notifications"
|
182 |
+
msgstr ""
|
183 |
+
|
184 |
+
#: admin/views/settings.php:27
|
185 |
+
msgid ""
|
186 |
+
"Get notifications when RealFaviconGenerator is updated. For example, when "
|
187 |
+
"Apple releases a new version of iOS or a new platform is supported."
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: admin/views/settings.php:36
|
191 |
+
msgid "Save changes"
|
192 |
+
msgstr ""
|
193 |
+
|
194 |
+
#: public/class-favicon-by-realfavicongenerator-common.php:181
|
195 |
+
msgid ""
|
196 |
+
"Visit the <a href=\"%s\">RFG's change log</a> to view the content of the "
|
197 |
+
"update"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#. Plugin Name of the plugin/theme
|
201 |
+
msgid "Favicon by RealFaviconGenerator"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#. Plugin URI of the plugin/theme
|
205 |
+
msgid "http://realfavicongenerator.net/extensions/wordpress"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#. Description of the plugin/theme
|
209 |
+
msgid ""
|
210 |
+
"Create and install your favicon for all platforms: PC/Mac of course, but "
|
211 |
+
"also iPhone/iPad, Android devices, Windows 8 tablets, etc."
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#. Author of the plugin/theme
|
215 |
+
msgid "Philippe Bernard"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#. Author URI of the plugin/theme
|
219 |
+
msgid "http://realfavicongenerator.net/"
|
220 |
+
msgstr ""
|
trunk/public/class-favicon-by-realfavicongenerator-common.php
ADDED
@@ -0,0 +1,475 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
|
4 |
+
class Favicon_By_RealFaviconGenerator_Common {
|
5 |
+
|
6 |
+
const PLUGIN_PREFIX = 'fbrfg';
|
7 |
+
|
8 |
+
const OPTION_FAVICON_CONFIGURED = 'fbrfg_favicon_configured';
|
9 |
+
const OPTION_FAVICON_IN_ROOT = 'fbrfg_favicon_in_root';
|
10 |
+
const OPTION_PREVIEW_FILE_NAME = 'fbrfg_preview_file_name';
|
11 |
+
const OPTION_HTML_CODE = 'fbrfg_html_code';
|
12 |
+
const OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST = 'fbrfg_favicon_non_interactive_api_request';
|
13 |
+
|
14 |
+
const OPTION_FAVICON_CURRENT_VERSION = 'fbrfg_favicon_current_version';
|
15 |
+
const OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM = 'fbrfg_most_recent_automatic_update_from';
|
16 |
+
const OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO = 'fbrfg_most_recent_automatic_update_to';
|
17 |
+
const OPTION_LATEST_MANUAL_AVAILABLE_UPDATE = 'fbrfg_latest_manual_available_update';
|
18 |
+
const OPTION_UPDATES_DATA = 'fbrfg_updates_data';
|
19 |
+
const OPTION_UPDATES_LIST = 'fbrfg_updates_list';
|
20 |
+
|
21 |
+
const META_NO_UPDATE_NOTICE_FOR_VERSION = 'fbrfg_ignore_update_notice_';
|
22 |
+
const META_NO_AUTOMATIC_UPDATE_NOTICE_FOR_VERSION = 'fbrfg_ignore_automatic_update_notice_';
|
23 |
+
const META_NO_UPDATE_NOTICE = 'fbrfg_no_update_notice';
|
24 |
+
|
25 |
+
public static function get_options_list() {
|
26 |
+
return array(
|
27 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
28 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
29 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
30 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE,
|
31 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST,
|
32 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION,
|
33 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM,
|
34 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO,
|
35 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE,
|
36 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA,
|
37 |
+
Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST,
|
38 |
+
Favicon_By_RealFaviconGenerator_Common::META_NO_UPDATE_NOTICE );
|
39 |
+
}
|
40 |
+
|
41 |
+
const PLUGIN_SLUG = 'favicon-by-realfavicongenerator';
|
42 |
+
|
43 |
+
const ACTION_CHECK_FOR_UPDATE = 'fbrfg_check_for_updates';
|
44 |
+
|
45 |
+
const RFG_DEBUG = 'false';
|
46 |
+
|
47 |
+
public function log_info( $message ) {
|
48 |
+
if ( ( ( constant( 'WP_DEBUG') == 'true' ) || ( constant( 'WP_DEBUG') == 1 ) ) &&
|
49 |
+
( ( constant( 'Favicon_By_RealFaviconGenerator_Common::RFG_DEBUG') == 'true' ) ||
|
50 |
+
( constant( 'Favicon_By_RealFaviconGenerator_Common::RFG_DEBUG') == 1 ) ) ) {
|
51 |
+
error_log( 'RealFaviconGenerator - ' . $message );
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Indicate if a favicon was configured.
|
57 |
+
*/
|
58 |
+
public function is_favicon_configured() {
|
59 |
+
$opt = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED );
|
60 |
+
return ( $opt == 1 );
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Indicate if the configured favicon is in the root directory of the web site.
|
65 |
+
*/
|
66 |
+
public function is_favicon_in_root() {
|
67 |
+
$opt = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT );
|
68 |
+
return ( $opt == 1 ) && $this->is_favicon_configured();
|
69 |
+
}
|
70 |
+
|
71 |
+
public function get_favicon_current_version() {
|
72 |
+
// Before the "version" feature was implemented, all favicons generated by the plugin
|
73 |
+
// were generated with RFG v0.7
|
74 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION, "0.7" );
|
75 |
+
}
|
76 |
+
|
77 |
+
public function set_favicon_current_version( $version ) {
|
78 |
+
return update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CURRENT_VERSION, $version );
|
79 |
+
}
|
80 |
+
|
81 |
+
public function set_most_recent_automatic_update( $from_version, $to_version ) {
|
82 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM,
|
83 |
+
$from_version );
|
84 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO,
|
85 |
+
$to_version );
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Return the last automatic update that *has been* run.
|
90 |
+
* If favicon was automatically updated from version 0.6 to 0.8, this function returns array('0.6', '0.8').
|
91 |
+
*/
|
92 |
+
public function get_most_recent_automatic_update() {
|
93 |
+
$from = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_FROM );
|
94 |
+
$to = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_MOST_RECENT_AUTOMATIC_UPDATE_TO );
|
95 |
+
return ( ( $from == NULL ) || ( $to == NULL ) ) ? NULL : array( $from, $to );
|
96 |
+
}
|
97 |
+
|
98 |
+
public function set_latest_manual_available_update( $version ) {
|
99 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE,
|
100 |
+
$version );
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Return the lastest available update (to be proposed to the user).
|
105 |
+
*/
|
106 |
+
public function get_latest_manual_available_update() {
|
107 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_LATEST_MANUAL_AVAILABLE_UPDATE );
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Save the versions data, as returned by https://realfavicongenerator.net/api/versions
|
112 |
+
*/
|
113 |
+
public function set_updates_data( $versions_data ) {
|
114 |
+
$this->log_info( 'Set updates data' );
|
115 |
+
|
116 |
+
$data = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA );
|
117 |
+
if ( ! $data ) {
|
118 |
+
$data = array();
|
119 |
+
}
|
120 |
+
$list = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST );
|
121 |
+
if ( ! $list ) {
|
122 |
+
$list = array();
|
123 |
+
}
|
124 |
+
foreach($versions_data as $version ) {
|
125 |
+
$this->log_info( 'Store data of ' . $version['version']);
|
126 |
+
$data[$version['version']] = $version;
|
127 |
+
if ( ! in_array($version['version'], $list ) ) {
|
128 |
+
array_push( $list, $version['version'] );
|
129 |
+
}
|
130 |
+
}
|
131 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA, $data );
|
132 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST, $list );
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* Returns the data of a particular update. Format is similar to what is returned by
|
137 |
+
* https://realfavicongenerator.net/api/versions
|
138 |
+
*/
|
139 |
+
public function get_update_data( $version ) {
|
140 |
+
$data = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_DATA );
|
141 |
+
if ( ! $data ) {
|
142 |
+
return NULL;
|
143 |
+
}
|
144 |
+
else {
|
145 |
+
return $data[$version];
|
146 |
+
}
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Return the list of versions. For example, if versions are know from 0.3 to 0.11 and $from = '0.6' and $to = '0.10',
|
151 |
+
* then this function returns array('0.7', '0.8', '0.9', '0.10'). Yes, '0.6' is not included while '0.10' is.
|
152 |
+
*/
|
153 |
+
public function get_updates_list( $from, $to ) {
|
154 |
+
$this->log_info( 'Getting versions list from ' . $from . ' to ' . $to );
|
155 |
+
|
156 |
+
$list = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_UPDATES_LIST );
|
157 |
+
if ( ! $list ) {
|
158 |
+
return NULL;
|
159 |
+
}
|
160 |
+
|
161 |
+
$listing = ! in_array( $from, $list );
|
162 |
+
$sub_list = array();
|
163 |
+
|
164 |
+
foreach( $list as $version ) {
|
165 |
+
if ( $listing ) {
|
166 |
+
array_push( $sub_list, $version );
|
167 |
+
}
|
168 |
+
if ( $version == $from ) {
|
169 |
+
$listing = true;
|
170 |
+
}
|
171 |
+
if ( $version == $to ) {
|
172 |
+
return $sub_list;
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
return $sub_list;
|
177 |
+
}
|
178 |
+
|
179 |
+
public function get_updates_description( $from, $to ) {
|
180 |
+
$this->log_info( 'Getting description from ' . $from . ' to ' . $to );
|
181 |
+
|
182 |
+
$versions = $this->get_updates_list( $from, $to );
|
183 |
+
if ( $versions == NULL ) {
|
184 |
+
$this->log_info( 'No versions, return a link to the change log description' );
|
185 |
+
return sprintf( __( "Visit the <a href=\"%s\">RFG's change log</a> to view the content of the update" ),
|
186 |
+
'https://realfavicongenerator.net/change_log?since=' . $from );
|
187 |
+
}
|
188 |
+
|
189 |
+
$this->log_info( 'Versions to describe: ' . implode( ', ', $versions ) );
|
190 |
+
|
191 |
+
$descriptions = array();
|
192 |
+
foreach( $versions as $version ) {
|
193 |
+
$update = $this->get_update_data( $version );
|
194 |
+
array_push( $descriptions,
|
195 |
+
'<p>' . $update['description'] . '</p>' );
|
196 |
+
}
|
197 |
+
return implode($descriptions);
|
198 |
+
}
|
199 |
+
|
200 |
+
public function get_non_interactive_api_request() {
|
201 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST );
|
202 |
+
}
|
203 |
+
|
204 |
+
public function set_favicon_configured( $configured, $favicon_in_root, $version, $non_interactive_api_request = NULL ) {
|
205 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_CONFIGURED,
|
206 |
+
$configured ? 1 : 0 );
|
207 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_IN_ROOT,
|
208 |
+
$favicon_in_root ? 1 : 0 );
|
209 |
+
|
210 |
+
$this->set_favicon_current_version( $version );
|
211 |
+
|
212 |
+
// Reset the update stuff
|
213 |
+
$this->set_latest_manual_available_update( NULL );
|
214 |
+
|
215 |
+
if ( $non_interactive_api_request != NULL ) {
|
216 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_FAVICON_NON_INTERACTIVE_API_REQUEST,
|
217 |
+
$non_interactive_api_request );
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
public function is_preview_available() {
|
222 |
+
$opt = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME );
|
223 |
+
return ( ( $opt != NULL ) && ( $opt != false ) );
|
224 |
+
}
|
225 |
+
|
226 |
+
public function get_preview_file_name() {
|
227 |
+
return get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME );
|
228 |
+
}
|
229 |
+
|
230 |
+
public function set_preview_file_name($preview_file_name) {
|
231 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_PREVIEW_FILE_NAME,
|
232 |
+
$preview_file_name);
|
233 |
+
}
|
234 |
+
|
235 |
+
public function add_favicon_markups() {
|
236 |
+
$code = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE );
|
237 |
+
if ( $code ) {
|
238 |
+
echo $code;
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
public function remove_genesis_favicon() {
|
243 |
+
// See http://dreamwhisperdesigns.com/genesis-tutorials/change-default-genesis-favicon/
|
244 |
+
// However, I didn't find the right hook to trigger this code in time to deactivate Genesis hooks.
|
245 |
+
// As a consequence, this function is not used and mostly here as a reference.
|
246 |
+
remove_action( 'genesis_meta', 'genesis_load_favicon' );
|
247 |
+
remove_action( 'wp_head', 'genesis_load_favicon' );
|
248 |
+
}
|
249 |
+
|
250 |
+
public function return_empty_favicon_for_genesis( $param ) {
|
251 |
+
$code = get_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE );
|
252 |
+
if ( $code ) {
|
253 |
+
// Why NULL?
|
254 |
+
// - It is not false (ie. the exact boolean value 'false')
|
255 |
+
// - When tested with 'if ($value)', the condition fails.
|
256 |
+
// See function genesis_load_favicon for more details
|
257 |
+
return NULL;
|
258 |
+
}
|
259 |
+
else {
|
260 |
+
// Return the value as is, no interference with the rest of WordPress
|
261 |
+
return $param;
|
262 |
+
}
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Returns /www/wordpress/wp-content/uploaded/fbrfg
|
267 |
+
*/
|
268 |
+
public static function get_files_dir() {
|
269 |
+
$up_dir = wp_upload_dir();
|
270 |
+
return $up_dir['basedir'] . '/' . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '/';
|
271 |
+
}
|
272 |
+
|
273 |
+
/**
|
274 |
+
* Returns http//somesite.com/blog/wp-content/upload/fbrfg/
|
275 |
+
*/
|
276 |
+
public static function get_files_url() {
|
277 |
+
$up_dir = wp_upload_dir();
|
278 |
+
$baseUrl = $up_dir['baseurl'];
|
279 |
+
// Make sure to no duplicate the '/'
|
280 |
+
// This is especially important when the base URL is the root directory:
|
281 |
+
// When this happens, the generated URL would be
|
282 |
+
// "http//somesite.com//fbrfg/" and then "//fbrfg/" when the host name is
|
283 |
+
// stripped. But this path is wrong, as it looks like a "same protocol" URL.
|
284 |
+
$separator = (substr($baseUrl, -1) == '/') ? '' : '/';
|
285 |
+
return $baseUrl . $separator . Favicon_By_RealFaviconGenerator_Common::PLUGIN_PREFIX . '/';
|
286 |
+
}
|
287 |
+
|
288 |
+
public static function get_tmp_dir() {
|
289 |
+
return Favicon_By_RealFaviconGenerator_Common::get_files_dir() . 'tmp' . DIRECTORY_SEPARATOR;
|
290 |
+
}
|
291 |
+
|
292 |
+
public static function remove_directory($directory) {
|
293 |
+
foreach( scandir( $directory ) as $v ) {
|
294 |
+
if ( is_dir( $directory . DIRECTORY_SEPARATOR . $v ) ) {
|
295 |
+
if ( $v != '.' && $v != '..' ) {
|
296 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory(
|
297 |
+
$directory . DIRECTORY_SEPARATOR . $v );
|
298 |
+
}
|
299 |
+
}
|
300 |
+
else {
|
301 |
+
unlink( $directory . DIRECTORY_SEPARATOR . $v );
|
302 |
+
}
|
303 |
+
}
|
304 |
+
rmdir( $directory );
|
305 |
+
}
|
306 |
+
|
307 |
+
|
308 |
+
/**
|
309 |
+
* Load the plugin text domain for translation.
|
310 |
+
*/
|
311 |
+
public function load_plugin_textdomain() {
|
312 |
+
|
313 |
+
$domain = Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG;
|
314 |
+
$locale = apply_filters( 'plugin_locale', get_locale(), $domain );
|
315 |
+
|
316 |
+
load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain . DIRECTORY_SEPARATOR . $domain . '-' . $locale . '.mo' );
|
317 |
+
load_plugin_textdomain( $domain, FALSE,
|
318 |
+
basename( plugin_dir_path( dirname( __FILE__ ) ) ) . DIRECTORY_SEPARATOR .
|
319 |
+
'languages' . DIRECTORY_SEPARATOR );
|
320 |
+
}
|
321 |
+
|
322 |
+
// See http://webcheatsheet.com/php/get_current_page_url.php
|
323 |
+
public function current_page_url() {
|
324 |
+
// See https://mekshq.com/get-current-page-url-wordpress/
|
325 |
+
global $wp;
|
326 |
+
$current_url = home_url( add_query_arg( array(), $wp->request ) );
|
327 |
+
return $current_url;
|
328 |
+
}
|
329 |
+
|
330 |
+
public function add_parameter_to_current_url( $param_and_value ) {
|
331 |
+
$url = $this->current_page_url();
|
332 |
+
if ( strpos( $url, '?') !== false) {
|
333 |
+
return $url . '&' . $param_and_value;
|
334 |
+
}
|
335 |
+
else {
|
336 |
+
return $url . '?' . $param_and_value;
|
337 |
+
}
|
338 |
+
}
|
339 |
+
|
340 |
+
public function check_for_updates() {
|
341 |
+
$this->log_info( 'Checking for updates...' );
|
342 |
+
|
343 |
+
if ( ! $this->is_favicon_configured() ) {
|
344 |
+
// No favicon so nothing to update
|
345 |
+
$this->log_info( 'No favicon configured so nothing to update' );
|
346 |
+
return;
|
347 |
+
}
|
348 |
+
|
349 |
+
$version = $this->get_favicon_current_version();
|
350 |
+
$this->log_info( 'Current version is ' . $version );
|
351 |
+
|
352 |
+
if ( $version == NULL ) {
|
353 |
+
// No version for some reason. Let's leave.
|
354 |
+
$this->log_info( 'Current favicon version not available' );
|
355 |
+
return;
|
356 |
+
}
|
357 |
+
|
358 |
+
$checkUrl = 'https://realfavicongenerator.net/api/versions?since=' . $version;
|
359 |
+
$resp = wp_remote_get( $checkUrl );
|
360 |
+
if ( ( $resp == NULL ) || ( $resp == false ) || ( is_wp_error( $resp ) ) ||
|
361 |
+
( $resp['response'] == NULL ) || ( $resp['response']['code'] == NULL ) || ( $resp['response']['code'] != 200 ) ) {
|
362 |
+
// Error of some kind? Return
|
363 |
+
$this->log_info( 'Cannot get latest version from RealFaviconGenerator ' .
|
364 |
+
( is_wp_error( $resp ) ? ': ' . $resp->get_error_message() : '' ) . ' (URL was ' . $checkUrl . ')' );
|
365 |
+
return;
|
366 |
+
}
|
367 |
+
|
368 |
+
$json = json_decode( $resp['body'], true );
|
369 |
+
if ( empty( $json ) ) {
|
370 |
+
$this->log_info( 'No change since version ' . $version . ' or cannot parse JSON (JSON parsing error code is ' . json_last_error() . ')' );
|
371 |
+
return;
|
372 |
+
}
|
373 |
+
|
374 |
+
$this->log_info( 'Update versions database' );
|
375 |
+
$this->set_updates_data( $json );
|
376 |
+
|
377 |
+
// Check update relevancy
|
378 |
+
$manual = false;
|
379 |
+
$automatic = false;
|
380 |
+
foreach($json as $version) {
|
381 |
+
if ( $version['relevance']['manual_update'] ) {
|
382 |
+
$manual = true;
|
383 |
+
}
|
384 |
+
if ( $version['relevance']['automated_update'] ) {
|
385 |
+
$automatic = true;
|
386 |
+
}
|
387 |
+
}
|
388 |
+
|
389 |
+
$this->log_info( "Automated updates to run: " . ( $automatic ? 'true' : 'false') );
|
390 |
+
$this->log_info( "Manual updates to run: " . ( $manual ? 'true' : 'false' ) );
|
391 |
+
|
392 |
+
if ( $manual || ( $automatic && ( ! $this->get_non_interactive_api_request() ) ) ) {
|
393 |
+
$this->log_info( 'Manual update, or automatic update but we have no non-interactive request to do it automatically' );
|
394 |
+
|
395 |
+
// We only note the latest available version.
|
396 |
+
// For example, if we receive version 0.8, 0.9 and 0.10 (in this order), we only note 0.10
|
397 |
+
$last = $json[count( $json ) - 1];
|
398 |
+
$latest_version = $last['version'];
|
399 |
+
|
400 |
+
// Save the fact that we should update
|
401 |
+
$this->log_info( 'There is a manual update to go to ' . $latest_version );
|
402 |
+
$this->set_latest_manual_available_update( $latest_version );
|
403 |
+
}
|
404 |
+
else if ( $automatic && $this->get_non_interactive_api_request() ) {
|
405 |
+
// Automatic update
|
406 |
+
|
407 |
+
$this->log_info( 'Automatic update to be performed' );
|
408 |
+
|
409 |
+
// Do not run it when the update is also manual, because we are going to ask the user to
|
410 |
+
// update anyway.
|
411 |
+
|
412 |
+
try {
|
413 |
+
$result = $this->run_non_interactive_api_request( $this->get_non_interactive_api_request() );
|
414 |
+
|
415 |
+
$response = new Favicon_By_RealFaviconGenerator_Api_Response( $result );
|
416 |
+
|
417 |
+
$zip_path = Favicon_By_RealFaviconGenerator_Common::get_tmp_dir();
|
418 |
+
if ( ! file_exists( $zip_path ) ) {
|
419 |
+
if ( mkdir( $zip_path, 0755, true ) !== true ) {
|
420 |
+
throw new InvalidArgumentException( sprintf( __( 'Cannot create directory %s to store the favicon package', FBRFG_PLUGIN_SLUG), $zip_path ) );
|
421 |
+
}
|
422 |
+
}
|
423 |
+
$response->downloadAndUnpack( $zip_path );
|
424 |
+
|
425 |
+
$this->store_pictures( $response );
|
426 |
+
|
427 |
+
$this->store_preview( $response->getPreviewPath() );
|
428 |
+
|
429 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $zip_path );
|
430 |
+
|
431 |
+
update_option( Favicon_By_RealFaviconGenerator_Common::OPTION_HTML_CODE, $response->getHtmlCode() );
|
432 |
+
|
433 |
+
$version_before_update = $this->get_favicon_current_version();
|
434 |
+
|
435 |
+
$this->set_favicon_configured( true, $response->isFilesInRoot(), $response->getVersion() );
|
436 |
+
|
437 |
+
// Remember about this update
|
438 |
+
$this->log_info( 'Save the fact that we updated from ' . $version_before_update . ' to ' . $response->getVersion() );
|
439 |
+
$this->set_most_recent_automatic_update( $version_before_update, $response->getVersion() );
|
440 |
+
}
|
441 |
+
catch( Exception $e ) {
|
442 |
+
$this->log_info( 'Cannot update favicon automatically: ' . $e->getMessage() );
|
443 |
+
}
|
444 |
+
}
|
445 |
+
}
|
446 |
+
|
447 |
+
public function run_non_interactive_api_request( $request ) {
|
448 |
+
$resp = wp_remote_post( 'https://realfavicongenerator.net/api/favicon',
|
449 |
+
array( 'body' => $request, 'timeout' => 45 ) );
|
450 |
+
if ( is_wp_error( $resp )) {
|
451 |
+
throw new InvalidArgumentException( "Cannot run the non-interactive API request for update: " . $resp->get_error_message() );
|
452 |
+
}
|
453 |
+
|
454 |
+
$json = wp_remote_retrieve_body( $resp );
|
455 |
+
if ( empty( $json ) ) {
|
456 |
+
throw new InvalidArgumentException( "Empty JSON document while running the non-interactive API request" );
|
457 |
+
}
|
458 |
+
|
459 |
+
return $json;
|
460 |
+
}
|
461 |
+
|
462 |
+
public function portable_filename( $filename ) {
|
463 |
+
return str_replace( '/', DIRECTORY_SEPARATOR, $filename );
|
464 |
+
}
|
465 |
+
|
466 |
+
public function portable_rename( $from, $to ) {
|
467 |
+
$from = $this->portable_filename( $from );
|
468 |
+
$to = $this->portable_filename( $to );
|
469 |
+
rename( $from, $to );
|
470 |
+
}
|
471 |
+
|
472 |
+
}
|
473 |
+
|
474 |
+
// Shortcut
|
475 |
+
define('FBRFG_PLUGIN_SLUG', Favicon_By_RealFaviconGenerator_Common::PLUGIN_SLUG);
|
trunk/public/class-favicon-by-realfavicongenerator.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
|
4 |
+
require_once plugin_dir_path( __FILE__ ) . '..' . DIRECTORY_SEPARATOR .
|
5 |
+
'public' . DIRECTORY_SEPARATOR . 'class-favicon-by-realfavicongenerator-common.php';
|
6 |
+
|
7 |
+
class Favicon_By_RealFaviconGenerator extends Favicon_By_RealFaviconGenerator_Common {
|
8 |
+
|
9 |
+
protected static $instance = null;
|
10 |
+
|
11 |
+
private function __construct() {
|
12 |
+
add_action( 'wp_head', array( $this, 'add_favicon_markups' ) );
|
13 |
+
add_action( 'login_head', array( $this, 'add_favicon_markups' ) );
|
14 |
+
|
15 |
+
// Deactivate Genesis default favicon
|
16 |
+
add_filter( 'genesis_pre_load_favicon', array( $this, 'return_empty_favicon_for_genesis' ) );
|
17 |
+
}
|
18 |
+
|
19 |
+
public static function get_instance() {
|
20 |
+
|
21 |
+
// If the single instance hasn't been set, set it now.
|
22 |
+
if ( null == self::$instance ) {
|
23 |
+
self::$instance = new self;
|
24 |
+
}
|
25 |
+
|
26 |
+
return self::$instance;
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
public static function activate( $network_wide ) {
|
31 |
+
// Nothing to do
|
32 |
+
}
|
33 |
+
|
34 |
+
public static function deactivate( $network_wide ) {
|
35 |
+
wp_clear_scheduled_hook( Favicon_By_RealFaviconGenerator_Common::ACTION_CHECK_FOR_UPDATE );
|
36 |
+
}
|
37 |
+
|
38 |
+
}
|
trunk/uninstall.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
+
|
4 |
+
// If uninstall not called from WordPress, then exit
|
5 |
+
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
6 |
+
exit;
|
7 |
+
}
|
8 |
+
|
9 |
+
require_once plugin_dir_path( __FILE__ ) . 'public' . DIRECTORY_SEPARATOR .
|
10 |
+
'class-favicon-by-realfavicongenerator-common.php';
|
11 |
+
|
12 |
+
function fbrfg_clean_site_instance() {
|
13 |
+
// Remove options
|
14 |
+
foreach( Favicon_By_RealFaviconGenerator_Common::get_options_list() as $opt ) {
|
15 |
+
delete_option( $opt );
|
16 |
+
}
|
17 |
+
|
18 |
+
// Remove files
|
19 |
+
$dir = Favicon_By_RealFaviconGenerator_Common::get_files_dir();
|
20 |
+
if ( file_exists( $dir ) ) {
|
21 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $dir );
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
if ( is_multisite() ) {
|
26 |
+
global $wpdb;
|
27 |
+
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
|
28 |
+
fbrfg_clean_site_instance();
|
29 |
+
|
30 |
+
if ( $blogs ) {
|
31 |
+
foreach( $blogs as $blog ) {
|
32 |
+
switch_to_blog( $blog['blog_id'] );
|
33 |
+
fbrfg_clean_site_instance();
|
34 |
+
restore_current_blog();
|
35 |
+
}
|
36 |
+
}
|
37 |
+
} else {
|
38 |
+
fbrfg_clean_site_instance();
|
39 |
+
}
|
uninstall.php
CHANGED
@@ -1,12 +1,13 @@
|
|
1 |
<?php
|
2 |
-
// Copyright 2014 RealFaviconGenerator
|
3 |
|
4 |
// If uninstall not called from WordPress, then exit
|
5 |
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
6 |
exit;
|
7 |
}
|
8 |
|
9 |
-
require_once plugin_dir_path( __FILE__ ) . 'public
|
|
|
10 |
|
11 |
function fbrfg_clean_site_instance() {
|
12 |
// Remove options
|
@@ -15,7 +16,10 @@ function fbrfg_clean_site_instance() {
|
|
15 |
}
|
16 |
|
17 |
// Remove files
|
18 |
-
|
|
|
|
|
|
|
19 |
}
|
20 |
|
21 |
if ( is_multisite() ) {
|
1 |
<?php
|
2 |
+
// Copyright 2014-2016 RealFaviconGenerator
|
3 |
|
4 |
// If uninstall not called from WordPress, then exit
|
5 |
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
6 |
exit;
|
7 |
}
|
8 |
|
9 |
+
require_once plugin_dir_path( __FILE__ ) . 'public' . DIRECTORY_SEPARATOR .
|
10 |
+
'class-favicon-by-realfavicongenerator-common.php';
|
11 |
|
12 |
function fbrfg_clean_site_instance() {
|
13 |
// Remove options
|
16 |
}
|
17 |
|
18 |
// Remove files
|
19 |
+
$dir = Favicon_By_RealFaviconGenerator_Common::get_files_dir();
|
20 |
+
if ( file_exists( $dir ) ) {
|
21 |
+
Favicon_By_RealFaviconGenerator_Common::remove_directory( $dir );
|
22 |
+
}
|
23 |
}
|
24 |
|
25 |
if ( is_multisite() ) {
|