Version Description
- July 20th, 2019 =
- Strengthened custom icon set upload security checks.
- Various updates to WPIcons demo links, readme file etc.
- New demo site can be found at https://www.wpicons.com.
Download this release
Release Info
Developer | eherman24 |
Plugin | WP SVG Icons |
Version | 3.2.2 |
Comparing to | |
See all releases |
Code changes from version 3.2.1 to 3.2.2
admin/class-wp-svg-icons-admin.php
CHANGED
@@ -365,7 +365,7 @@ class WP_SVG_Icons_Admin {
|
|
365 |
if ( in_array( get_current_screen()->base , array( 'dashboard' , 'toplevel_page_wp-svg-icons' , 'wp-svg-icons_page_wp-svg-icons-custom-set' , 'wp-svg-icons_page_wp_svg_icons' , 'wp-svg-icons_page_wp-svg-icons-upgrade' , 'post' ) ) ) {
|
366 |
// Review URL - Change to the URL of your plugin on WordPress.org
|
367 |
$reviewurl = 'https://wordpress.org/support/view/plugin-reviews/svg-vector-icon-plugin';
|
368 |
-
$go_pro_url = 'https://www.
|
369 |
$nobugurl = add_query_arg( 'wp_svg_icons_nobug', '1', admin_url() );
|
370 |
$current_user = wp_get_current_user();
|
371 |
if ( '' != $current_user->user_firstname ) {
|
365 |
if ( in_array( get_current_screen()->base , array( 'dashboard' , 'toplevel_page_wp-svg-icons' , 'wp-svg-icons_page_wp-svg-icons-custom-set' , 'wp-svg-icons_page_wp_svg_icons' , 'wp-svg-icons_page_wp-svg-icons-upgrade' , 'post' ) ) ) {
|
366 |
// Review URL - Change to the URL of your plugin on WordPress.org
|
367 |
$reviewurl = 'https://wordpress.org/support/view/plugin-reviews/svg-vector-icon-plugin';
|
368 |
+
$go_pro_url = 'https://www.wpicons.com/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=review-notice&utm_campaign=lite-upgrade';
|
369 |
$nobugurl = add_query_arg( 'wp_svg_icons_nobug', '1', admin_url() );
|
370 |
$current_user = wp_get_current_user();
|
371 |
if ( '' != $current_user->user_firstname ) {
|
admin/partials/wp-svg-icons-custom-icons-page.php
CHANGED
@@ -35,11 +35,9 @@ if( file_exists( '../../../../../wp-load.php' ) ) {
|
|
35 |
Validate our nonce for security reasons
|
36 |
@since 3.1.8.2
|
37 |
*/
|
38 |
-
if
|
39 |
-
|
40 |
-
|
41 |
-
exit;
|
42 |
-
}
|
43 |
}
|
44 |
|
45 |
|
@@ -360,7 +358,7 @@ if( file_exists( '../../../../../wp-load.php' ) ) {
|
|
360 |
</div>
|
361 |
|
362 |
<section class="ten-icon-limit-reached" style="display:none;margin:2em 0;text-align:center;font-size:15px;color:rgb(238, 110, 81);padding:10px;">
|
363 |
-
<span class="dashicons dashicons-welcome-comments"></span> <?php _e( "It looks like you're trying to install and use more than 10 icons. Unfortunately the free version limits the number of custom icons to 10. If you'd like to access more than 10 custom icons, please consider upgrading to the", 'wp-svg-icons' ); ?> <a href="https://www.
|
364 |
</section>
|
365 |
|
366 |
<div class="current-font-pack">
|
35 |
Validate our nonce for security reasons
|
36 |
@since 3.1.8.2
|
37 |
*/
|
38 |
+
if( ! check_admin_referer( 'validate_wp_svg_icons', 'wp_svg_icons_upload_validation' ) ) {
|
39 |
+
wp_die( __( 'Sorry, your nonce did not verify. Please try again.', 'wp-svg-icons' ) );
|
40 |
+
exit;
|
|
|
|
|
41 |
}
|
42 |
|
43 |
|
358 |
</div>
|
359 |
|
360 |
<section class="ten-icon-limit-reached" style="display:none;margin:2em 0;text-align:center;font-size:15px;color:rgb(238, 110, 81);padding:10px;">
|
361 |
+
<span class="dashicons dashicons-welcome-comments"></span> <?php _e( "It looks like you're trying to install and use more than 10 icons. Unfortunately the free version limits the number of custom icons to 10. If you'd like to access more than 10 custom icons, please consider upgrading to the", 'wp-svg-icons' ); ?> <a href="https://www.wpicons.com/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=icon-limit-notice&utm_campaign=lite-upgrade" target="_blank" title="<?php _e( 'Upgrade to pro' , 'wp-svg-icons' ); ?>"><?php _e( 'Pro Version' , 'wp-svg-icons' ); ?></a>
|
362 |
</section>
|
363 |
|
364 |
<div class="current-font-pack">
|
admin/partials/wp-svg-icons-upgrade-page.php
CHANGED
@@ -112,7 +112,7 @@
|
|
112 |
<img src="<?php echo plugin_dir_url( __FILE__ ) . '../images/animations-example-gif.gif'; ?>" title="WP SVG Icon CSS3 Animations Exmaple" style="width:50%;max-width:1200px;display:block;margin:0 auto;">
|
113 |
|
114 |
<br />
|
115 |
-
<a class="button-secondary" style="display:block;margin:0 auto;width:150px;" href="https://www.
|
116 |
</br />
|
117 |
|
118 |
</div>
|
@@ -142,7 +142,7 @@
|
|
142 |
|
143 |
<br />
|
144 |
|
145 |
-
<a href="https://www.
|
146 |
<div class="upgrade-button green center"><i class="wp-svg-box-remove"></i> Go Pro Now!</div>
|
147 |
</a>
|
148 |
<section id="eh-logos" style="display:block;width:100%;text-align:right;">
|
112 |
<img src="<?php echo plugin_dir_url( __FILE__ ) . '../images/animations-example-gif.gif'; ?>" title="WP SVG Icon CSS3 Animations Exmaple" style="width:50%;max-width:1200px;display:block;margin:0 auto;">
|
113 |
|
114 |
<br />
|
115 |
+
<a class="button-secondary" style="display:block;margin:0 auto;width:150px;" href="https://www.wpicons.com/demo/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=upgrade-page&utm_campaign=lite-upgrade" title="WP SVG Icons Examples" target="_blank">View More Examples</a>
|
116 |
</br />
|
117 |
|
118 |
</div>
|
142 |
|
143 |
<br />
|
144 |
|
145 |
+
<a href="https://www.wpicons.com/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=upgrade-page&utm_campaign=lite-upgrade" target="_blank" style="display:block;width:200px;margin:0 auto;">
|
146 |
<div class="upgrade-button green center"><i class="wp-svg-box-remove"></i> Go Pro Now!</div>
|
147 |
</a>
|
148 |
<section id="eh-logos" style="display:block;width:100%;text-align:right;">
|
readme.txt
CHANGED
@@ -3,10 +3,10 @@ Contributors: eherman24
|
|
3 |
Donate link: https://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20make%20a%20donation%20for%20all%20your%20hard%20work
|
4 |
Tags: font icon, responsive, svg, font awesome, icons, bootstrap, navicons, icomoon, custom, FontAwesome, icon font, glyph
|
5 |
Requires at least: 3.5
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: 3.2.
|
8 |
License: GPLv3 or later
|
9 |
-
License URI:
|
10 |
|
11 |
Quickly and effortlessly enable 490+ beautifully designed SVG font icons, available on the frontend and backend of your site.
|
12 |
|
@@ -16,7 +16,7 @@ Quickly and effortlessly enable 490+ beautifully designed SVG font icons, availa
|
|
16 |
|
17 |
>- Over 490 icons included
|
18 |
>- Create and upload your own custom icons using the custom icon importer
|
19 |
-
>- Download and import your own custom icon build from <a href="
|
20 |
>- Insert Icons Directly Into Posts/Pages/Sidebars
|
21 |
>- No need to write a single line of code
|
22 |
>- Actively under development
|
@@ -45,26 +45,24 @@ https://www.youtube.com/watch?v=ZQSrZvKDtQ0
|
|
45 |
>- No need to write code or adjust shortcode parameters manually in the pro version
|
46 |
>- Continuously iterated on and under development
|
47 |
|
48 |
-
><a href="https://www.
|
49 |
-
|
50 |
|
51 |
**Demo Page**
|
52 |
|
53 |
-
<a href="https://www.
|
54 |
|
55 |
I originally created this plugin for my own personal use on client projects. After witnessing the power of this plugin first hand, I wanted to give a little something back to the community who have helped me through the years. The 'WordPress SVG Icon Set' is extremely easy for any one to use. Two clicks of the mouse and you have an icon ready to be placed on to your site. These icons are a set of web-fonts, and are extremely scale-able. Meaning they will not degrade in quality the larger they get. Another great feature of this plugin is the ability to use the same icons across all devices. No need to generate Retina specific images for mobile devices. By setting a max-width on the icon, it then becomes responsive. This plugin is also great for developers who use icons on multiple sites and want to avoid the hassle of re-installing
|
56 |
web fonts on to a new server every time. With this plugin its one click and you're ready to begin working. You can use these any where in your themes.
|
57 |
|
58 |
**Special Thanks Goes To:**
|
59 |
|
60 |
-
* [IcoMoon](
|
61 |
* [Alessio Atzeni](http://www.alessioatzeni.com/) for the inclusion of a few 'Metoicons' icons in this plugin.
|
62 |
-
* [PJ Onori](
|
63 |
|
64 |
**and of course**
|
65 |
|
66 |
-
* [Matt Mullenweg](
|
67 |
-
|
68 |
|
69 |
*Developing plugins is long and tedious work. If you benefit or enjoy this plugin please take the time to rate and review it, as this will only make future iterations of it better.*
|
70 |
|
@@ -83,7 +81,7 @@ web fonts on to a new server every time. With this plugin its one click and you'
|
|
83 |
|
84 |
<strong>Custom Pack Installation</strong>
|
85 |
|
86 |
-
1. Visit <a href="
|
87 |
2. Import icomoon icons from the library
|
88 |
3. select which icons you want to include in your pack
|
89 |
4. Click 'Font' at the bottom of the browser window
|
@@ -95,15 +93,15 @@ web fonts on to a new server every time. With this plugin its one click and you'
|
|
95 |
|
96 |
= I need some help! What's the best way to go about getting support? =
|
97 |
|
98 |
-
Please consider <a href="https://www.
|
99 |
|
100 |
-
With the premium version you're guaranteed a level of support you wouldn't otherwise get. You'll receive top notch support from a full-time and professional WordPress
|
101 |
|
102 |
-
|
103 |
|
104 |
= Will these icons loose quality as they scale up? =
|
105 |
|
106 |
-
No. These icons are not .png or .jpg format. They are .svg (scalable vector graphics), which means you can scale them as large as you want with out any loss in quality. (really....as large as you want!)
|
107 |
|
108 |
= Can you change the color of the icons? =
|
109 |
|
@@ -122,6 +120,9 @@ If you buy the pro version you will also receive support and updates for one yea
|
|
122 |
><strong>Pro Features</strong>
|
123 |
|
124 |
>- Icon customizer to adjust icon size, color, link and more on the fly without writing any code!
|
|
|
|
|
|
|
125 |
>- Add icons to menu items directly from within the menu edit screen
|
126 |
>- Animate your icons using smooth CSS3 Animations
|
127 |
>- Easily generate an icon container to use on your landing pages (with sweet hover effects)
|
@@ -130,7 +131,7 @@ If you buy the pro version you will also receive support and updates for one yea
|
|
130 |
>- No need to write code or adjust shortcode parameters manually in the pro version
|
131 |
>- Continuously iterated on and under development
|
132 |
|
133 |
-
><a href="https://www.
|
134 |
|
135 |
== Screenshots ==
|
136 |
|
@@ -143,6 +144,14 @@ If you buy the pro version you will also receive support and updates for one yea
|
|
143 |
|
144 |
== Changelog ==
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
= 3.2.0 - January 13th, 2017 =
|
147 |
* Refactored sections of the plugin.
|
148 |
* Refactored .js file.
|
@@ -229,13 +238,13 @@ If you buy the pro version you will also receive support and updates for one yea
|
|
229 |
* Remove $hook parameter that was conditionally loading styles on admin end - prevented users from using icons in the dashboard
|
230 |
|
231 |
= 2.0 =
|
232 |
-
* Added <a href="
|
233 |
* Fixed what dashboard pages styles/scripts get enqueued
|
234 |
* Adjusted styles to maintain consistency - January 15th, 2014
|
235 |
|
236 |
= 1.3.2 =
|
237 |
* Added pre-defined classes for easy icon styling - October 29th, 2013
|
238 |
-
* Check <a href="https://www.
|
239 |
|
240 |
= 1.3.1 =
|
241 |
* Fixed inconsistency with new rounded Linked in icon - October 23rd, 2013
|
@@ -258,8 +267,10 @@ If you buy the pro version you will also receive support and updates for one yea
|
|
258 |
|
259 |
== Upgrade Notice ==
|
260 |
|
261 |
-
= 3.2.
|
262 |
-
*
|
|
|
|
|
263 |
|
264 |
== Usage Instructions ==
|
265 |
|
@@ -316,12 +327,12 @@ Adding custom classes to your icon allows you to more easily target singular ico
|
|
316 |
|
317 |
**Icomoon Icon Font Importer**
|
318 |
|
319 |
-
*Note:* The number of custom icons allowed in the free version is limited to 10 icons. If you require more than 10 custom icons on your site, please <a href="https://www.
|
320 |
|
321 |
-
|
322 |
|
323 |
We've listened to your feature requests, and after many hours behind the keyboard developing, we're pleased to announce our newest addition to WP SVG Icons.
|
324 |
|
325 |
Now, you're no longer limited to the icons that come pre-packaged with the plugin. Create an unlimited number of custom icon combinations and start using them on your site in a matter of minutes.
|
326 |
|
327 |
-
<p> Check out the <a href="https://www.
|
3 |
Donate link: https://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20make%20a%20donation%20for%20all%20your%20hard%20work
|
4 |
Tags: font icon, responsive, svg, font awesome, icons, bootstrap, navicons, icomoon, custom, FontAwesome, icon font, glyph
|
5 |
Requires at least: 3.5
|
6 |
+
Tested up to: 5.2
|
7 |
+
Stable tag: 3.2.2
|
8 |
License: GPLv3 or later
|
9 |
+
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
Quickly and effortlessly enable 490+ beautifully designed SVG font icons, available on the frontend and backend of your site.
|
12 |
|
16 |
|
17 |
>- Over 490 icons included
|
18 |
>- Create and upload your own custom icons using the custom icon importer
|
19 |
+
>- Download and import your own custom icon build from <a href="https://icomoon.io/app/#/select">IcoMoon</a>
|
20 |
>- Insert Icons Directly Into Posts/Pages/Sidebars
|
21 |
>- No need to write a single line of code
|
22 |
>- Actively under development
|
45 |
>- No need to write code or adjust shortcode parameters manually in the pro version
|
46 |
>- Continuously iterated on and under development
|
47 |
|
48 |
+
><a href="https://www.wpicons.com/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-upgrade" title="Upgrade Now!">Get the premium version now!</a>
|
|
|
49 |
|
50 |
**Demo Page**
|
51 |
|
52 |
+
<a href="https://www.wpicons.com/demo/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-upgrade">Check Out The Plugin Demo Page</a>
|
53 |
|
54 |
I originally created this plugin for my own personal use on client projects. After witnessing the power of this plugin first hand, I wanted to give a little something back to the community who have helped me through the years. The 'WordPress SVG Icon Set' is extremely easy for any one to use. Two clicks of the mouse and you have an icon ready to be placed on to your site. These icons are a set of web-fonts, and are extremely scale-able. Meaning they will not degrade in quality the larger they get. Another great feature of this plugin is the ability to use the same icons across all devices. No need to generate Retina specific images for mobile devices. By setting a max-width on the icon, it then becomes responsive. This plugin is also great for developers who use icons on multiple sites and want to avoid the hassle of re-installing
|
55 |
web fonts on to a new server every time. With this plugin its one click and you're ready to begin working. You can use these any where in your themes.
|
56 |
|
57 |
**Special Thanks Goes To:**
|
58 |
|
59 |
+
* [IcoMoon](https://www.icomoon.io) for an amazing base set of free icon's for use, many in this plugin.
|
60 |
* [Alessio Atzeni](http://www.alessioatzeni.com/) for the inclusion of a few 'Metoicons' icons in this plugin.
|
61 |
+
* [PJ Onori](https://pjonori.com/iconic/) for the inclusion of a few 'Iconic' icons in this plugin.
|
62 |
|
63 |
**and of course**
|
64 |
|
65 |
+
* [Matt Mullenweg](https://www.ma.tt/) for everything he does for the WordPress community. Without him none of this would be possible.
|
|
|
66 |
|
67 |
*Developing plugins is long and tedious work. If you benefit or enjoy this plugin please take the time to rate and review it, as this will only make future iterations of it better.*
|
68 |
|
81 |
|
82 |
<strong>Custom Pack Installation</strong>
|
83 |
|
84 |
+
1. Visit <a href="https://icomoon.io/app/#/select" target="_blank">IcoMoon</a> and begin selecting icons you want to use.
|
85 |
2. Import icomoon icons from the library
|
86 |
3. select which icons you want to include in your pack
|
87 |
4. Click 'Font' at the bottom of the browser window
|
93 |
|
94 |
= I need some help! What's the best way to go about getting support? =
|
95 |
|
96 |
+
Please consider <a href="https://www.wpicons.com/pricing/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-upgrade" target="_blank">purchasing the premium version</a> of the plugin if you require support. The idea behind the free version was to give something back to the community. Constantly iterating and supporting a free plugin is time consuming and not sustainable.
|
97 |
|
98 |
+
With the premium version you're guaranteed a level of support you wouldn't otherwise get. You'll receive top notch support from a full-time and professional software engineer with extensive WordPress expertise.
|
99 |
|
100 |
+
Free users are limited to support here on WordPress.org.
|
101 |
|
102 |
= Will these icons loose quality as they scale up? =
|
103 |
|
104 |
+
No. These icons are not .png or .jpg format. They are font icons and .svg (scalable vector graphics), which means you can scale them as large as you want with out any loss in quality. (really....as large as you want!)
|
105 |
|
106 |
= Can you change the color of the icons? =
|
107 |
|
120 |
><strong>Pro Features</strong>
|
121 |
|
122 |
>- Icon customizer to adjust icon size, color, link and more on the fly without writing any code!
|
123 |
+
>- Icon blocks, fully integrated with WordPress 5.0+.
|
124 |
+
>- Quickly and easily upload custom icon sets (both font icons and svg files)
|
125 |
+
>- Seamlessly integrated with the worlds best icon providers (Roundicons, Icons8, The Noun Project etc.)
|
126 |
>- Add icons to menu items directly from within the menu edit screen
|
127 |
>- Animate your icons using smooth CSS3 Animations
|
128 |
>- Easily generate an icon container to use on your landing pages (with sweet hover effects)
|
131 |
>- No need to write code or adjust shortcode parameters manually in the pro version
|
132 |
>- Continuously iterated on and under development
|
133 |
|
134 |
+
><a href="https://www.wpicons.com/pricing/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-upgrade" title="Upgrade Now!">Get the premium version now!</a>
|
135 |
|
136 |
== Screenshots ==
|
137 |
|
144 |
|
145 |
== Changelog ==
|
146 |
|
147 |
+
= 3.2.2 - July 20th, 2019 =
|
148 |
+
* Strengthened custom icon set upload security checks.
|
149 |
+
* Various updates to WPIcons demo links, readme file etc.
|
150 |
+
* New demo site can be found at <a href="https://www.wpicons.com" target="_blank">https://www.wpicons.com</a>.
|
151 |
+
|
152 |
+
= 3.2.1 - August 1st, 2018 =
|
153 |
+
* Refactored sections of the plugin. * Tweak: Removed deprecated and replace with `wp_get_current_user()`.
|
154 |
+
|
155 |
= 3.2.0 - January 13th, 2017 =
|
156 |
* Refactored sections of the plugin.
|
157 |
* Refactored .js file.
|
238 |
* Remove $hook parameter that was conditionally loading styles on admin end - prevented users from using icons in the dashboard
|
239 |
|
240 |
= 2.0 =
|
241 |
+
* Added <a href="https://www.icomoon.io" target="_blank">Icomoon</a> icon pack importer
|
242 |
* Fixed what dashboard pages styles/scripts get enqueued
|
243 |
* Adjusted styles to maintain consistency - January 15th, 2014
|
244 |
|
245 |
= 1.3.2 =
|
246 |
* Added pre-defined classes for easy icon styling - October 29th, 2013
|
247 |
+
* Check <a href="https://www.wpicons.com/demo/?utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-plugin" target="_blank">the demo page</a> for more information.
|
248 |
|
249 |
= 1.3.1 =
|
250 |
* Fixed inconsistency with new rounded Linked in icon - October 23rd, 2013
|
267 |
|
268 |
== Upgrade Notice ==
|
269 |
|
270 |
+
= 3.2.2 - July 20th, 2019 =
|
271 |
+
* Strengthened custom icon set upload security checks.
|
272 |
+
* Various updates to WPIcons demo links, readme file etc.
|
273 |
+
* New demo site can be found at <a href="https://www.wpicons.com" target="_blank">https://www.wpicons.com</a>.
|
274 |
|
275 |
== Usage Instructions ==
|
276 |
|
327 |
|
328 |
**Icomoon Icon Font Importer**
|
329 |
|
330 |
+
*Note:* The number of custom icons allowed in the free version is limited to 10 icons. If you require more than 10 custom icons on your site, please <a href="https://www.wpicons.com/pricing/?discount=LITEUPGRADE&utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-upgrade" title="Upgrade Now!" target="_blank">upgrade to the pro version</a> to allow for an un-restricted number of icons to be used on your site.
|
331 |
|
332 |
+
https://www.youtube.com/watch?v=8bRny8gW2_k
|
333 |
|
334 |
We've listened to your feature requests, and after many hours behind the keyboard developing, we're pleased to announce our newest addition to WP SVG Icons.
|
335 |
|
336 |
Now, you're no longer limited to the icons that come pre-packaged with the plugin. Create an unlimited number of custom icon combinations and start using them on your site in a matter of minutes.
|
337 |
|
338 |
+
<p> Check out the <a href="https://www.wpicons.com/demo/default-font-icons/?utm_source=wp-plugin&utm_medium=readme&utm_campaign=lite-plugin" target="_blank">demo page</a> for icon examples, the icon playground and code samples before downloading.</p>
|
wp-svg-icons.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Plugin Name: WP SVG Icons
|
9 |
* Plugin URI: https://www.evan-herman.com/wordpress-plugin/wp-svg-icons/
|
10 |
* Description: Quickly and effortlessly gain access to 492 beautifully designed SVG font icons, available on the frontend and backend of your site.
|
11 |
-
* Version: 3.2.
|
12 |
* Author: EH Dev Shop
|
13 |
* Author URI: http://evan-herman.com
|
14 |
* License: GPL-3.0+
|
8 |
* Plugin Name: WP SVG Icons
|
9 |
* Plugin URI: https://www.evan-herman.com/wordpress-plugin/wp-svg-icons/
|
10 |
* Description: Quickly and effortlessly gain access to 492 beautifully designed SVG font icons, available on the frontend and backend of your site.
|
11 |
+
* Version: 3.2.2
|
12 |
* Author: EH Dev Shop
|
13 |
* Author URI: http://evan-herman.com
|
14 |
* License: GPL-3.0+
|