Quick Featured Images - Version 13.6.0

Version Description

  • improved styles and starting using minify
  • added free vs. pro section
  • Tested successfully with WordPress 5.9
  • Tested successfully with WordPress 6.0
Download this release

Release Info

Developer kybernetikservices
Plugin Icon 128x128 Quick Featured Images
Version 13.6.0
Comparing to
See all releases

Code changes from version 13.5.7 to 13.6.0

README.txt CHANGED
@@ -4,8 +4,8 @@ Donate link: https://www.paypal.com/donate?hosted_button_id=NSEQX73VHXKS8
4
  Tags: featured image,featured images,bulk set,automatic,thumbnails
5
  Requires at least: 3.8
6
  Requires PHP: 5.2
7
- Tested up to: 5.8
8
- Stable tag: 13.5.7
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -26,7 +26,10 @@ The plugin 'Quick Featured Images' helps you bulk managing featured images, sett
26
  3. It enables you to **define presets for automatic default featured images** for future posts as many as you need. You can set **accurate rules based on post properties**.
27
  4. It **removes database entries of featured images without existing image files** with a simple single click
28
 
29
- If you want to include **audios, videos and custom post types** and get more options then take a look the **Pro version** [Quick Featured Images Pro](https://www.quickfeaturedimages.com/?utm_source=wordpress_org&utm_medium=plugin&utm_campaign=quick-featured-images&utm_content=go_pro).
 
 
 
30
 
31
  = What users said =
32
  * **“OMG, so good!”** in [Reviews at wordpress.org](https://wordpress.org/support/topic/omg-so-good-2/) by marverix on February 27, 2021
@@ -281,6 +284,12 @@ If you want to contribute a translation of the plugin in your language it would
281
 
282
  == Changelog ==
283
 
 
 
 
 
 
 
284
  = 13.5.7 =
285
  * improved and added text and help
286
  * Tested successfully with WordPress 5.8
4
  Tags: featured image,featured images,bulk set,automatic,thumbnails
5
  Requires at least: 3.8
6
  Requires PHP: 5.2
7
+ Tested up to: 6.0
8
+ Stable tag: 13.6.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
26
  3. It enables you to **define presets for automatic default featured images** for future posts as many as you need. You can set **accurate rules based on post properties**.
27
  4. It **removes database entries of featured images without existing image files** with a simple single click
28
 
29
+ If you want to include **audios, videos and custom post types** and get more options, than take a look the **Pro version** [Quick Featured Images Pro](https://www.quickfeaturedimages.com/?utm_source=wordpress_org&utm_medium=plugin&utm_campaign=quick-featured-images&utm_content=go_pro).
30
+
31
+ = Demo =
32
+ You want to test Quick Featured Images before installing on your site? Try it out on your free dummy site and [click here](https://demo.tastewp.com/quick-featured-images).
33
 
34
  = What users said =
35
  * **“OMG, so good!”** in [Reviews at wordpress.org](https://wordpress.org/support/topic/omg-so-good-2/) by marverix on February 27, 2021
284
 
285
  == Changelog ==
286
 
287
+ = 13.6.0 =
288
+ * improved styles and starting using minify
289
+ * added free vs. pro section
290
+ * Tested successfully with WordPress 5.9
291
+ * Tested successfully with WordPress 6.0
292
+
293
  = 13.5.7 =
294
  * improved and added text and help
295
  * Tested successfully with WordPress 5.8
admin/assets/css/admin.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .qfi_wrapper{overflow:hidden}.qfi_w50percent{width:50%;float:left;display:block;margin:0;border:0 none;padding:0}.qfi_w50percent p{margin-top:0}#qfi_main{float:left;width:66%}#qfi_main .qfi_content{margin:2em 1em 1em 0;background-color:rgba(255,255,255,.8);padding-bottom:2em}#qfi_main .widefat a{text-decoration:underline}#qfi_footer{float:right;width:33%}#qfi_footer .qfi_content{margin:2em 0 1em 1em;background-color:#f5fbfd;border-radius:8px;border:1px solid #ccc}#qfi_footer .qfi_content h2{background:none;margin:0}#qfi_footer .qfi_content dl{padding:0 8px}#qfi_footer .qfi_content li,#qfi_footer .qfi_content dd{overflow:hidden;margin-bottom:10px;margin-left:0}#qfi_replace{overflow:hidden}#qfi_replace label{display:block;float:left;overflow:hidden;padding:0 3em 3em 0}#qfi_replace input[type=radio]:checked:before,#qfi_replace input[type=radio]:checked,#qfi_replace input[type=radio],#qfi_replace input[type=checkbox]:checked:before,#qfi_replace input[type=checkbox]:checked,#qfi_replace input[type=checkbox]{position:relative;top:2.5em;left:1.5em;padding:9px !important}#progress em{font-weight:bold;font-style:normal}#progress #bar{display:block;overflow:hidden;line-height:1;padding:1em;background:none repeat scroll 0 0 #e3e3e3;color:#222}#progress #bar span{line-height:1;padding:1em}#progress #bar strong{line-height:1;padding:1em}body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.widefat th:nth-of-type(1),body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.widefat td:nth-of-type(1),body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.widefat th:nth-of-type(4),body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.widefat td:nth-of-type(4){text-align:center}body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.widefat td:nth-of-type(4){vertical-align:middle}body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.form-table,body[class*=_page_quick-featured-images-settings] #qfi_main .qfi_content table.form-table{width:auto}body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content form select{width:100%}body[class*=_page_quick-featured-images-defaults] #qfi_main .qfi_content table.form-table,body[class*=_page_quick-featured-images-settings] #qfi_main .qfi_content table.form-table,#qfi_main .qfi_content legend,#qfi_main .qfi_content h4,#qfi_main .qfi_content h3,#qfi_main .qfi_content ul,#qfi_main .qfi_content p{margin-left:8px;margin-right:8px}#qfi_main .qfi_content p.qfi_valid{color:green;font-weight:bold}#qfi_main .qfi_content p.qfi_invalid{color:red;font-weight:bold}#qfi_main .qfi_content h3{font-size:1.12em;line-height:1.44}#qfi_main .qfi_content h4{margin-bottom:0;font-size:1em}#qfi_main .qfi_content fieldset{margin-bottom:1em}#qfi_main .qfi_content legend{margin-bottom:.5em;font-weight:bold}#qfi_main .qfi_content ul{list-style:disc outside none;padding-left:1em}#qfi_main .qfi_content ul.selected_images{padding-left:0}#qfi_main .qfi_content ul.selected_images li{display:inline;margin:0 8px 0 0;padding:0}#qfi_main .qfi_content ol{margin-left:3em;margin-right:8px}#qfi_main .qfi_content .failure{font-weight:bold}#qfi_main div.qfi-failure,#qfi_main .widefat tr.qfi-failure{background-color:#ffebe8}#qfi_main div.qfi-failure{margin:0 0 1.5em;padding:8px 0;font-weight:bold}#qfi_year{width:4em}.wrap h2{background:none repeat scroll 0 0 #ddd;color:#222;padding:8px}.wrap h2.nobottom{margin-bottom:0}.qfi_content_inside .failure{font-size:1.5em}.qfi_content_inside .success{color:#555;font-size:1.5em;font-weight:bold;margin-top:.5em;padding:0 15px}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li span.dashicons{font-size:15em;width:auto;height:auto;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(1) a span{color:#39c}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(1) a:focus span,.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(1) a:hover span{color:#66b3d9}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(2) a span{color:#f90}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(2) a:focus span,.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(2) a:hover span{color:#ffb340}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(3) a span{color:#9cc}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(3) a:focus span,.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(3) a:hover span{color:#b3d9d9}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(4) a span{color:#c90}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(4) a:focus span,.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li:nth-of-type(4) a:hover span{color:#d9b340}#qfi_main .qfi_content .qfi_page_description{background-color:#d0d0d0;font-weight:bold;padding:8px 0}body[class*=_page_quick-featured-images-settings] #qfi_main .qfi_content form h2,#qfi_main .qfi_content .no-bottom{margin-bottom:0}#template_row{display:none}#qfi_main .attachment-thumbnail{border-radius:3px;box-shadow:3px 3px 3px 1px #999;-webkit-box-shadow:3px 3px 3px 1px #999;margin-bottom:9px;background-color:#f5f5f5;background-image:linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4),linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4);background-position:0 0,10px 10px;background-size:20px 20px}#qfi_main .selected_images li img[src$=svg]{width:60px;height:auto}#qfi_main .qfi_w50percent p img[src$=svg]{width:150px;height:auto}#qfi_max_width,#qfi_max_height{width:4em}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul{list-style:none;margin-left:0;margin-right:0;padding-left:0;overflow:hidden}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content li{display:block;float:left;width:50%;height:310px}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li a:focus img,.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content ul li a:hover img{opacity:.6}#qfi_main .qfi_content img.alignleft,#qfi_footer .qfi_content img.avatar{display:inline;float:left;margin:3px .8em 5px 0}#qfi_main .qfi_content form td .qfi_preset_image{display:block;width:80px;height:auto}#qfi_main .qfi_content img#paypal_button{max-width:195px}#qfi_main .qfi_content img.qfi_random_img{width:80px;height:auto;margin-right:.8em}.qfi_ad_for_pro{font-weight:bold}@media only screen and (max-width: 900px){#qfi_main,#qfi_footer,#qfi_main .qfi_content,#qfi_footer .qfi_content{float:none;width:auto;margin:0}#progress #bar span{line-height:4}}@media screen and (max-width: 600px){#progress #bar span.sep,#progress #bar span.wp-ui-notification,#progress #bar strong.wp-ui-highlight{display:block;line-height:1}#progress #bar span.sep{padding:.5em 1em}.toplevel_page_quick-featured-images-overview #qfi_main .qfi_content li,.qfi_w50percent{float:none;width:auto;height:auto}}.qfi_freevs_pro{width:100%;border-collapse:collapse;border-spacing:0;background-color:#fff}.qfi_freevs_pro tr td{border:solid 1px #e7eaef;text-align:center;vertical-align:middle;padding:15px 20px}.qfi_freevs_pro tr td.headline{font-weight:bolder}.qfi_freevs_pro tr td:first-child{background:#f8f9fa;text-align:left}.qfi_freevs_pro tr:first-child td{font-weight:bold}.upgrade_to_pro_bottom_banner{float:left;width:100%;box-sizing:border-box;padding:35px;color:#fff;height:auto;background:#01ac6d;margin-top:20px}.upgrade_to_pro_bottom_banner_hd{float:left;width:60%;border-left:solid 5px #f4f4f4;font-size:20px;font-weight:bold;padding-left:10px;line-height:28px;margin-top:10px}.upgrade_to_pro_bottom_banner_btn{background:#f4f4f4;border-radius:5px;color:#01ac6d;text-decoration:none;font-size:16px;font-weight:bold;float:left;padding:20px 15px;margin-left:10px;margin-top:10px}.upgrade_to_pro_bottom_banner_btn:hover{color:#fff}.upgrade_to_pro_bottom_banner_feature_list_main{float:left;width:100%;margin-top:30px}.upgrade_to_pro_bottom_banner_feature_list{float:left;box-sizing:border-box;width:31%;margin-right:2%;padding:3px 0 3px 25px;font-size:13px;color:#fff}@media screen and (max-width: 768px){.upgrade_to_pro_bottom_banner_feature_list{width:100%;margin:auto}}/*# sourceMappingURL=admin.min.css.map */
admin/assets/css/admin.min.css.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sourceRoot":"","sources":["admin.scss"],"names":[],"mappings":"AAMA,aACC,gBAID,gBACC,UACA,WACA,cACA,SACA,cACA,UACA,kBACC,aAQF,UACC,WACA,UACA,uBACC,qBACA,sCACA,mBAGA,qBACC,0BAMH,YACC,YACA,UACA,yBACC,qBACA,yBACA,kBACA,sBACA,4BACC,gBACA,SAED,4BACC,cAED,wDACC,gBACA,mBACA,cAMH,aACC,gBACA,mBACC,cACA,WACA,gBACA,oBAGF,iPAMC,kBACA,UACA,WACA,uBAKA,aACC,iBACA,kBAED,eACC,cACA,gBACA,cACA,YACA,0CACA,WACA,oBACC,cACA,YAED,sBACC,cACA,YAMH,oaAIC,kBAED,yGACC,sBAED,oLAEC,WAED,qFACC,WAED,yTAOC,gBACA,iBAED,mCACC,YACA,iBAED,qCACC,UACA,iBAGD,0BACC,iBACA,iBAED,0BACC,gBACA,cAED,gCACC,kBAGD,8BACC,mBACA,iBAED,0BACC,6BACA,iBAED,0CACC,eAED,6CACC,eACA,iBACA,UAED,0BACC,gBACA,iBAED,gCACC,iBAED,4DAEC,yBAED,0BACC,iBACA,cACA,iBAED,UACC,UAED,SACC,uCACA,WACA,YAED,kBACC,gBAED,6BAEC,gBAKD,6BACC,WACA,gBACA,iBACA,gBACA,eAED,0FACC,eACA,WACA,YACA,cACA,kBACA,qBACA,wBAED,iGACC,WAED,8MAEC,cAED,iGACC,WAED,8MAEC,cAED,iGACC,WAED,8MAEC,cAED,iGACC,WAED,8MAEC,cAGD,6CACC,yBACA,iBACA,cAED,mHAEC,gBAED,cACC,aAED,gCAEC,kBACA,gCACA,wCACA,kBACA,yBACA,yMACA,kCACA,0BAED,4CACC,WACA,YAED,0CACC,YACA,YAED,+BAEC,UAGD,wEACC,gBACA,cACA,eACA,eACA,gBAED,wEACC,cACA,WACA,UACA,aAED,8KAEC,WAED,yEAEC,eACA,WACA,sBAED,iDACE,cACA,WACA,YAEF,yCACC,gBAED,0CACE,WACA,YACA,kBAEF,gBACC,iBAGD,0CAEC,sEAIC,WACA,WACA,SAED,oBACC,eAIF,qCAEC,qGAGC,cACA,cAED,wBACC,iBAGD,wFAEC,WACA,WACA,aAKF,gBACC,WACA,yBACA,iBACA,sBAEC,sBACC,yBACA,kBACA,sBACA,kBACA,+BACC,mBAED,kCACC,mBACA,gBAID,kCACC,iBAOJ,8BACC,WACA,WACA,sBACA,aACA,WACA,YACA,mBACA,gBAED,iCACC,qBACA,8BACA,eACA,iBACA,kBACA,iBACA,gBAED,kCACC,mBACA,kBACA,cACA,qBACA,eACA,iBACA,WACA,kBACA,iBACA,gBACA,wCACC,WAGF,gDACC,WACA,WACA,gBAED,2CACC,WACA,sBACA,0BACA,uBACA,0BAED,qCACC,2CACC,WACA","file":"admin.min.css"}
admin/assets/css/{admin.css → admin.scss} RENAMED
@@ -7,25 +7,6 @@
7
  .qfi_wrapper {
8
  overflow: hidden;
9
  }
10
- #qfi_main {
11
- float: left;
12
- width: 66%;
13
- }
14
- #qfi_footer {
15
- float: right;
16
- width: 33%;
17
- }
18
- #qfi_main .qfi_content {
19
- margin: 2em 1em 1em 0;
20
- background-color: rgba(255, 255, 255, 0.8);
21
- padding-bottom: 2em;
22
- }
23
- #qfi_footer .qfi_content {
24
- margin: 2em 0 1em 1em;
25
- background-color: #F5FBFD;
26
- border-radius: 8px;
27
- border: 1px solid #ccc;
28
- }
29
 
30
  /* floating halfs */
31
  .qfi_w50percent {
@@ -35,43 +16,63 @@
35
  margin: 0;
36
  border: 0 none;
37
  padding: 0;
38
- }
39
- .qfi_w50percent p {
40
- margin-top: 0;
41
  }
42
 
43
  /*
44
  * Elements
45
  *
46
  */
47
-
48
- /* Footer */
49
- #qfi_footer .qfi_content h2 {
50
- background: none;
51
- margin: 0;
52
- }
53
- #qfi_footer .qfi_content dl {
54
- padding: 0 8px;
55
- }
56
- #qfi_footer .qfi_content li,
57
- #qfi_footer .qfi_content dd {
58
- overflow: hidden; /* correct height if inner flowing elements */
59
- margin-bottom: 10px;
60
- margin-left: 0;
61
  }
62
- #qfi_main .widefat a {
63
- text-decoration: underline;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  }
65
 
66
  /* Filter 'Replace' */
67
  #qfi_replace {
68
  overflow: hidden;
69
- }
70
- #qfi_replace label {
71
- display: block;
72
- float: left;
73
- overflow: hidden;
74
- padding: 0 3em 3em 0;
75
  }
76
  #qfi_replace input[type="radio"]:checked:before,
77
  #qfi_replace input[type="radio"]:checked,
@@ -87,26 +88,26 @@
87
 
88
  /* Progress Bar */
89
  #progress {
90
- }
91
- #progress em {
92
- font-weight: bold;
93
- font-style: normal;
94
- }
95
- #progress #bar {
96
- display: block;
97
- overflow: hidden;
98
- line-height: 1;
99
- padding: 1em;
100
- background: none repeat scroll 0 0 #e3e3e3;
101
- color: #222;
102
- }
103
- #progress #bar span {
104
- line-height: 1;
105
- padding: 1em;
106
- }
107
- #progress #bar strong {
108
- line-height: 1;
109
- padding: 1em;
110
  }
111
 
112
  /* Other content elements */
@@ -362,3 +363,88 @@ body[class*=_page_quick-featured-images-settings] #qfi_main .qfi_content form h2
362
  height: auto;
363
  }
364
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  .qfi_wrapper {
8
  overflow: hidden;
9
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  /* floating halfs */
12
  .qfi_w50percent {
16
  margin: 0;
17
  border: 0 none;
18
  padding: 0;
19
+ p {
20
+ margin-top: 0;
21
+ }
22
  }
23
 
24
  /*
25
  * Elements
26
  *
27
  */
28
+ #qfi_main {
29
+ float: left;
30
+ width: 66%;
31
+ .qfi_content {
32
+ margin: 2em 1em 1em 0;
33
+ background-color: rgba(255, 255, 255, 0.8);
34
+ padding-bottom: 2em;
35
+ }
36
+ .widefat {
37
+ a {
38
+ text-decoration: underline;
39
+ }
40
+ }
 
41
  }
42
+
43
+ /* Footer */
44
+ #qfi_footer {
45
+ float: right;
46
+ width: 33%;
47
+ .qfi_content {
48
+ margin: 2em 0 1em 1em;
49
+ background-color: #F5FBFD;
50
+ border-radius: 8px;
51
+ border: 1px solid #ccc;
52
+ h2 {
53
+ background: none;
54
+ margin: 0;
55
+ }
56
+ dl {
57
+ padding: 0 8px;
58
+ }
59
+ li, dd {
60
+ overflow: hidden; /* correct height if inner flowing elements */
61
+ margin-bottom: 10px;
62
+ margin-left: 0;
63
+ }
64
+ }
65
  }
66
 
67
  /* Filter 'Replace' */
68
  #qfi_replace {
69
  overflow: hidden;
70
+ label {
71
+ display: block;
72
+ float: left;
73
+ overflow: hidden;
74
+ padding: 0 3em 3em 0;
75
+ }
76
  }
77
  #qfi_replace input[type="radio"]:checked:before,
78
  #qfi_replace input[type="radio"]:checked,
88
 
89
  /* Progress Bar */
90
  #progress {
91
+ em {
92
+ font-weight: bold;
93
+ font-style: normal;
94
+ }
95
+ #bar {
96
+ display: block;
97
+ overflow: hidden;
98
+ line-height: 1;
99
+ padding: 1em;
100
+ background: none repeat scroll 0 0 #e3e3e3;
101
+ color: #222;
102
+ span {
103
+ line-height: 1;
104
+ padding: 1em;
105
+ }
106
+ strong {
107
+ line-height: 1;
108
+ padding: 1em;
109
+ }
110
+ }
111
  }
112
 
113
  /* Other content elements */
363
  height: auto;
364
  }
365
  }
366
+
367
+ /* Free vs Pro section */
368
+ .qfi_freevs_pro{
369
+ width:100%;
370
+ border-collapse:collapse;
371
+ border-spacing:0;
372
+ background-color: #ffffff;
373
+ tr {
374
+ td{
375
+ border:solid 1px #e7eaef;
376
+ text-align:center;
377
+ vertical-align:middle;
378
+ padding:15px 20px;
379
+ &.headline{
380
+ font-weight: bolder
381
+ }
382
+ &:first-child{
383
+ background:#f8f9fa;
384
+ text-align:left;
385
+ }
386
+ }
387
+ &:first-child {
388
+ td{
389
+ font-weight:bold;
390
+ }
391
+ }
392
+ }
393
+ }
394
+
395
+ /* Upgrade bottom banner */
396
+ .upgrade_to_pro_bottom_banner{
397
+ float:left;
398
+ width:100%;
399
+ box-sizing:border-box;
400
+ padding:35px;
401
+ color:#ffffff;
402
+ height:auto;
403
+ background:#01AC6D;
404
+ margin-top:20px;
405
+ }
406
+ .upgrade_to_pro_bottom_banner_hd{
407
+ float:left; width:60%;
408
+ border-left:solid 5px #f4f4f4;
409
+ font-size:20px;
410
+ font-weight:bold;
411
+ padding-left:10px;
412
+ line-height:28px;
413
+ margin-top:10px;
414
+ }
415
+ .upgrade_to_pro_bottom_banner_btn{
416
+ background:#f4f4f4;
417
+ border-radius:5px;
418
+ color:#01AC6D;
419
+ text-decoration:none;
420
+ font-size:16px;
421
+ font-weight:bold;
422
+ float:left;
423
+ padding:20px 15px;
424
+ margin-left:10px;
425
+ margin-top:10px;
426
+ &:hover{
427
+ color:#fff;
428
+ }
429
+ }
430
+ .upgrade_to_pro_bottom_banner_feature_list_main{
431
+ float:left;
432
+ width:100%;
433
+ margin-top:30px;
434
+ }
435
+ .upgrade_to_pro_bottom_banner_feature_list{
436
+ float:left;
437
+ box-sizing:border-box;
438
+ width:31%; margin-right:2%;
439
+ padding:3px 0 3px 25px;
440
+ font-size:13px; color:#fff;
441
+ }
442
+ @media screen and (max-width:768px) {
443
+ .upgrade_to_pro_bottom_banner_feature_list{
444
+ width:100%;
445
+ margin:auto;
446
+ }
447
+ }
448
+
449
+
450
+
admin/assets/images/ks_logo.png ADDED
Binary file
admin/assets/images/tick.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle cx="9" cy="9" r="9" fill="#ffffff"/>
3
+ <path d="M4.5 9L7.5 12L13.5 6" stroke="#01AC6D" stroke-width="2.5" stroke-linecap="round"/>
4
+ </svg>
admin/assets/images/tick_icon_green.png ADDED
Binary file
admin/class-Quick_Featured_Images_Admin.php CHANGED
@@ -436,7 +436,7 @@ if ( ! defined( 'ABSPATH' ) ) exit;
436
  // request css only if this plugin was called
437
  $screen = get_current_screen();
438
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
439
- wp_enqueue_style( $this->plugin_slug . '-plugin-styles', plugins_url( 'assets/css/admin.css', __FILE__ ), array(), $this->plugin_version );
440
  }
441
  }
442
 
@@ -506,7 +506,6 @@ if ( ! defined( 'ABSPATH' ) ) exit;
506
 
507
  /*
508
  * Add the top level menu page of this plugin
509
- *
510
  */
511
  $this->plugin_screen_hook_suffix = add_menu_page(
512
  $page_title,
@@ -518,7 +517,7 @@ if ( ! defined( 'ABSPATH' ) ) exit;
518
  11 // position after menu item 'Media'
519
  );
520
 
521
- // Give first sub level menu link a different label than the top level menu link
522
  // by calling the add_submenu_page function the first time with the parent_slug and menu_slug as same values
523
  add_submenu_page(
524
  $this->page_slug, // parent slug
436
  // request css only if this plugin was called
437
  $screen = get_current_screen();
438
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
439
+ wp_enqueue_style( $this->plugin_slug . '-plugin-styles', plugins_url( 'assets/css/admin.min.css', __FILE__ ), array(), $this->plugin_version );
440
  }
441
  }
442
 
506
 
507
  /*
508
  * Add the top level menu page of this plugin
 
509
  */
510
  $this->plugin_screen_hook_suffix = add_menu_page(
511
  $page_title,
517
  11 // position after menu item 'Media'
518
  );
519
 
520
+ // Give first sublevel menu link a different label than the top level menu link
521
  // by calling the add_submenu_page function the first time with the parent_slug and menu_slug as same values
522
  add_submenu_page(
523
  $this->page_slug, // parent slug
admin/class-Quick_Featured_Images_Comparison.php ADDED
@@ -0,0 +1,299 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Quick Featured Images
4
+ *
5
+ * @package Quick_Featured_Images_Comparison
6
+ * @author Kybernetik Services <wordpress@kybernetik.com.de>
7
+ * @license GPL-2.0+
8
+ * @link http://wordpress.org/plugins/quick-featured-images/
9
+ * @copyright 2022
10
+ */
11
+ // Exit if accessed directly
12
+ if ( ! defined( 'ABSPATH' ) ) exit;
13
+
14
+ /**
15
+ * @package Quick_Featured_Images_Settings
16
+ * @author Kybernetik Services <wordpress@kybernetik.com.de>
17
+ */
18
+ class Quick_Featured_Images_Comparison {
19
+
20
+ /**
21
+ * Instance of this class.
22
+ *
23
+ * @since 13.6.0
24
+ *
25
+ * @var object
26
+ */
27
+ protected static $instance = null;
28
+
29
+ /**
30
+ * Required user capability to use this plugin
31
+ *
32
+ * @since 13.6.0
33
+ *
34
+ * @var string
35
+ */
36
+ protected $required_user_cap = null;
37
+
38
+ /**
39
+ * Slug of the plugin screen.
40
+ *
41
+ * @since 13.6.0
42
+ *
43
+ * @var string
44
+ */
45
+ protected $plugin_screen_hook_suffix = null;
46
+
47
+ /**
48
+ * Name of this plugin.
49
+ *
50
+ * @since 13.6.0
51
+ *
52
+ * @var string
53
+ */
54
+ protected $plugin_name = null;
55
+
56
+ /**
57
+ * Unique identifier for this plugin.
58
+ *
59
+ * It is the same as in class Quick_Featured_Images_Admin
60
+ * Has to be set here to be used in non-object context, e.g. callback functions
61
+ *
62
+ * @since 13.6.0
63
+ *
64
+ * @var string
65
+ */
66
+ protected $plugin_slug = null;
67
+
68
+ /**
69
+ * Unique identifier for the admin page of this class.
70
+ *
71
+ * @since 13.6.0
72
+ *
73
+ * @var string
74
+ */
75
+ protected $page_slug = null;
76
+
77
+ /**
78
+ * Unique identifier for the admin parent page of this class.
79
+ *
80
+ * @since 13.6.0
81
+ *
82
+ * @var string
83
+ */
84
+ protected $parent_page_slug = null;
85
+
86
+ /**
87
+ * Plugin version, used for cache-busting of style and script file references.
88
+ *
89
+ * @since 13.6.0
90
+ *
91
+ * @var string
92
+ */
93
+ protected $plugin_version = null;
94
+
95
+ /**
96
+ * Slug of the menu page on which to display the form sections
97
+ *
98
+ *
99
+ * @since 13.6.0
100
+ *
101
+ * @var array
102
+ */
103
+ protected $main_options_page_slug = 'quick-featured-images-optionspage';
104
+
105
+ /**
106
+ * Initialize the plugin by loading admin scripts & styles and adding a
107
+ * comparison page and menu.
108
+ *
109
+ * @since 13.6.0
110
+ */
111
+ private function __construct() {
112
+
113
+ // Call variables from public plugin class.
114
+ $plugin = Quick_Featured_Images_Admin::get_instance();
115
+ $this->plugin_name = $plugin->get_plugin_name();
116
+ $this->plugin_slug = $plugin->get_plugin_slug();
117
+ $this->page_slug = $this->plugin_slug . '-comparison';
118
+ $this->parent_page_slug = $plugin->get_page_slug();
119
+ $this->plugin_version = $plugin->get_plugin_version();
120
+
121
+ // set capabilities
122
+ if ( isset( $settings[ 'minimum_role_all_pages' ] ) ) {
123
+ switch ( $settings[ 'minimum_role_all_pages' ] ) {
124
+ case 'administrator':
125
+ $this->required_user_cap = 'manage_options';
126
+ break;
127
+ default:
128
+ $this->required_user_cap = 'manage_options';
129
+ }
130
+ } else {
131
+ $this->required_user_cap = 'manage_options';
132
+ }
133
+
134
+ // Load admin style sheet and JavaScript.
135
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
136
+
137
+ // Add the options page and menu item.
138
+ add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );
139
+
140
+ // Add an action link pointing to the options page.
141
+ $plugin_basename = plugin_basename( plugin_dir_path( __DIR__ ) . $this->plugin_slug . '.php' );
142
+ add_filter( 'plugin_action_links_' . $plugin_basename, array( $this, 'add_action_links' ) );
143
+
144
+ }
145
+
146
+ /**
147
+ * Render the comparison page for this plugin.
148
+ *
149
+ * @since 13.6.0
150
+ */
151
+ public function main() {
152
+ $this->display_header();
153
+ include_once( 'views/section_comparison.php' );
154
+ $this->display_footer();
155
+ }
156
+
157
+ /**
158
+ * Return an instance of this class.
159
+ *
160
+ * @since 13.6.0
161
+ *
162
+ * @return object A single instance of this class.
163
+ */
164
+ public static function get_instance() {
165
+
166
+ // If the single instance hasn't been set, set it now.
167
+ if ( null == self::$instance ) {
168
+ self::$instance = new self;
169
+ }
170
+
171
+ return self::$instance;
172
+ }
173
+
174
+ /**
175
+ * Return the page headline.
176
+ *
177
+ * @since 13.6.0
178
+ *
179
+ *@return string headline variable.
180
+ */
181
+ public function get_page_headline() {
182
+ return __( 'Free vs. Pro', 'quick-featured-images' );
183
+ }
184
+
185
+ /**
186
+ * Return the page description.
187
+ *
188
+ * @since 8.0
189
+ *
190
+ *@return string description variable.
191
+ */
192
+ public function get_page_description() {
193
+ return __( 'Compare Free versus Pro features', 'quick-featured-images' );
194
+ }
195
+
196
+ /**
197
+ * Return the page slug.
198
+ *
199
+ * @since 13.6.0
200
+ *
201
+ *@return string slug variable.
202
+ */
203
+ public function get_page_slug() {
204
+ return $this->page_slug;
205
+ }
206
+
207
+ /**
208
+ * Return the required user capability.
209
+ *
210
+ * @since 13.6.0
211
+ *
212
+ *@return required user capability variable.
213
+ */
214
+ public function get_required_user_cap() {
215
+ return $this->required_user_cap;
216
+ }
217
+
218
+ /**
219
+ * Register and enqueue admin-specific style sheet.
220
+ *
221
+ * @since 13.6.0
222
+ *
223
+ * @return null Return early if no settings page is registered.
224
+ */
225
+ public function enqueue_admin_styles() {
226
+
227
+ if ( ! isset( $this->plugin_screen_hook_suffix ) ) {
228
+ return;
229
+ }
230
+
231
+ // request css only if this plugin was called
232
+ $screen = get_current_screen();
233
+ if ( $this->plugin_screen_hook_suffix == $screen->id ) {
234
+ wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.min.css', __FILE__ ), array( ), $this->plugin_version );
235
+ }
236
+
237
+ }
238
+
239
+ /**
240
+ * Register the administration menu for this plugin into the WordPress Dashboard menu.
241
+ *
242
+ * @since 13.6.0
243
+ */
244
+ public function add_plugin_admin_menu() {
245
+
246
+ // get translated string of the menu label and page headline
247
+ $label = $this->get_page_headline();
248
+
249
+ // Add a comparison page for this plugin to the Settings menu.
250
+ $this->plugin_screen_hook_suffix = add_submenu_page(
251
+ $this->parent_page_slug, // parent_slug
252
+ sprintf( '%s: %s', $this->plugin_name, $label ), // page_title
253
+ $label, // menu_title
254
+ $this->required_user_cap, // capability to use the following function
255
+ $this->page_slug, // menu_slug
256
+ array( $this, 'main' ) // function to execute when loading this page
257
+ );
258
+
259
+ }
260
+
261
+ /**
262
+ * Add comparison action link to the plugins page.
263
+ *
264
+ * @since 13.6.0
265
+ */
266
+ public function add_action_links( $links ) {
267
+ $url = sprintf( 'admin.php?page=%s', $this->page_slug );
268
+ return array_merge(
269
+ array(
270
+ 'comparison' => sprintf( '<a href="%s">%s</a>', esc_url( admin_url( $url ) ), esc_html( $this->get_page_headline() ) )
271
+ ),
272
+ $links
273
+ );
274
+
275
+ }
276
+
277
+ /**
278
+ *
279
+ * Render the header of the admin page
280
+ *
281
+ * @access private
282
+ * @since 13.6.0
283
+ */
284
+ private function display_header() {
285
+ include_once( 'views/section_header.php' );
286
+ }
287
+
288
+ /**
289
+ *
290
+ * Render the footer of the admin page
291
+ *
292
+ * @access private
293
+ * @since 13.6.0
294
+ */
295
+ private function display_footer() {
296
+ include_once( 'views/section_footer.php' );
297
+ }
298
+
299
+ }
admin/class-Quick_Featured_Images_Defaults.php CHANGED
@@ -326,7 +326,7 @@ class Quick_Featured_Images_Defaults {
326
  // request css only if this plugin was called
327
  $screen = get_current_screen();
328
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
329
- wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.css', __FILE__ ), array( ), $this->plugin_version );
330
  }
331
 
332
  }
326
  // request css only if this plugin was called
327
  $screen = get_current_screen();
328
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
329
+ wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.min.css', __FILE__ ), array( ), $this->plugin_version );
330
  }
331
 
332
  }
admin/class-Quick_Featured_Images_Settings.php CHANGED
@@ -270,7 +270,7 @@ class Quick_Featured_Images_Settings {
270
  // request css only if this plugin was called
271
  $screen = get_current_screen();
272
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
273
- wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.css', __FILE__ ), array( ), $this->plugin_version );
274
  }
275
 
276
  }
270
  // request css only if this plugin was called
271
  $screen = get_current_screen();
272
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
273
+ wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.min.css', __FILE__ ), array( ), $this->plugin_version );
274
  }
275
 
276
  }
admin/class-Quick_Featured_Images_Tools.php CHANGED
@@ -1986,7 +1986,7 @@ class Quick_Featured_Images_Tools { // only for debugging: extends Quick_Feature
1986
  // request css only if this plugin was called
1987
  $screen = get_current_screen();
1988
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
1989
- wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.css', __FILE__ ), array(), $this->plugin_version );
1990
  }
1991
 
1992
  }
1986
  // request css only if this plugin was called
1987
  $screen = get_current_screen();
1988
  if ( $this->plugin_screen_hook_suffix == $screen->id ) {
1989
+ wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.min.css', __FILE__ ), array(), $this->plugin_version );
1990
  }
1991
 
1992
  }
admin/views/section_comparison.php ADDED
@@ -0,0 +1,460 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'WPINC' ) ) {
3
+ die;
4
+ }
5
+
6
+ /**
7
+ * Get the Icons
8
+ */
9
+ $no_icon='<span class="dashicons dashicons-dismiss" style="color:#ea1515;"></span>&nbsp;';
10
+ $yes_icon='<span class="dashicons dashicons-yes-alt" style="color:#18c01d;"></span>&nbsp;';
11
+ global $wp_version;
12
+ if( version_compare( $wp_version, '5.2.0' ) < 0 )
13
+ {
14
+ $yes_icon='<img src="'.QFI_ROOT_URL.'assets/images/tick_icon_green.png" style="float:left;" />&nbsp;';
15
+ }
16
+ unset( $wp_version );
17
+
18
+ /**
19
+ * Array format
20
+ * First : Feature
21
+ * Second : Basic availability. Supports: Boolean, Array(Boolean and String values), String
22
+ * Pro : Pro availability. Supports: Boolean, Array(Boolean and String values), String
23
+ */
24
+ $comparison_data=array(
25
+
26
+ array(
27
+ __('Actions in Bulk Edit', 'quick-featured-images')
28
+ ),
29
+ array(
30
+ __('Sets the selected image as new featured image', 'quick-featured-images'),
31
+ true,
32
+ true,
33
+ ),
34
+ array(
35
+ __('Sets multiple images randomly as featured images', 'quick-featured-images'),
36
+ true,
37
+ true,
38
+ ),
39
+ array(
40
+ __('Replaces featured images by the selected image', 'quick-featured-images'),
41
+ true,
42
+ true,
43
+ ),
44
+ array(
45
+ __('Removes the selected image as featured image', 'quick-featured-images'),
46
+ true,
47
+ true,
48
+ ),
49
+ array(
50
+ __('Removes any image as featured image', 'quick-featured-images'),
51
+ true,
52
+ true,
53
+ ),
54
+ array(
55
+ __('Remove all featured images without existing image files', 'quick-featured-images'),
56
+ true,
57
+ true,
58
+ ),
59
+ array(
60
+ __('Removes database entries of featured images without existing image files', 'quick-featured-images'),
61
+ true,
62
+ true,
63
+ ),
64
+ array(
65
+ __('Sets the first image as featured image', 'quick-featured-images'),
66
+ false,
67
+ true,
68
+ ),
69
+ array(
70
+ __('Sets the external image as a featured image (needs Featured Image By URL or Featured Image From URL)', 'quick-featured-images'),
71
+ false,
72
+ true,
73
+ ),
74
+ array(
75
+ __('Options in Bulk Edit', 'quick-featured-images')
76
+ ),
77
+ array(
78
+ __('Overwrites featured images', 'quick-featured-images'),
79
+ true,
80
+ true,
81
+ ),
82
+ array(
83
+ __('Considers only posts without featured image', 'quick-featured-images'),
84
+ true,
85
+ true,
86
+ ),
87
+ array(
88
+ __('Removes the first embedded image from the post content after this image was set as featured image', 'quick-featured-images'),
89
+ false,
90
+ true,
91
+ ),
92
+ array(
93
+ __('Sets the first post image (if available in the media library) as featured image', 'quick-featured-images'),
94
+ false,
95
+ true,
96
+ ),
97
+ array(
98
+ __('Sets the first post image under current domain as featured image', 'quick-featured-images'),
99
+ false,
100
+ true,
101
+ ),
102
+ array(
103
+ __('Sets the first external post image as featured image ', 'quick-featured-images'),
104
+ false,
105
+ true,
106
+ ),
107
+ array(
108
+ __('Sets the first attached image of a post as featured image', 'quick-featured-images'),
109
+ false,
110
+ true,
111
+ ),
112
+ array(
113
+ __('Sets the first image of a WordPress standard gallery as featured image', 'quick-featured-images'),
114
+ false,
115
+ true,
116
+ ),
117
+ array(
118
+ __('Sets the thumbnail of the first embedded content (e.g. YouTube, Vimeo, Instagram) as featured image', 'quick-featured-images'),
119
+ false,
120
+ true,
121
+ ),
122
+ array(
123
+ __('Sets the first image of a WordPress standard gallery as the featured image', 'quick-featured-images'),
124
+ false,
125
+ true,
126
+ ),
127
+ array(
128
+ __('Sets the first image of a NextGen Gallery as featured image (if the NextGen plugin is activated)', 'quick-featured-images'),
129
+ false,
130
+ true,
131
+ ),
132
+ array(
133
+ __('At multiple images: Uses each selected image only once', 'quick-featured-images'),
134
+ false,
135
+ true,
136
+ ),
137
+ array(
138
+ __('At multiple images: Removes excess featured images', 'quick-featured-images'),
139
+ false,
140
+ true,
141
+ ),
142
+ array(
143
+ __('Attaches images to posts after set as featured images successfully', 'quick-featured-images'),
144
+ false,
145
+ true,
146
+ ),
147
+ array(
148
+ __('Detaches images and posts after featured images are removed successfully', 'quick-featured-images'),
149
+ false,
150
+ true,
151
+ ),
152
+ array(
153
+ __('Filter in Bulk Edit', 'quick-featured-images')
154
+ ),
155
+ array(
156
+ __('Post Type Filter', 'quick-featured-images'),
157
+ true,
158
+ true,
159
+ ),
160
+ array(
161
+ __('Category Filter', 'quick-featured-images'),
162
+ true,
163
+ true,
164
+ ),
165
+ array(
166
+ __('Tag Filter', 'quick-featured-images'),
167
+ true,
168
+ true,
169
+ ),
170
+ array(
171
+ __('Post Format Filter', 'quick-featured-images'),
172
+ false,
173
+ true,
174
+ ),
175
+ array(
176
+ __('Multimedia File Filter', 'quick-featured-images'),
177
+ false,
178
+ true,
179
+ ),
180
+ array(
181
+ __('Post Status Filter', 'quick-featured-images'),
182
+ false,
183
+ true,
184
+ ),
185
+ array(
186
+ __('Search Filter', 'quick-featured-images'),
187
+ false,
188
+ true,
189
+ ),
190
+ array(
191
+ __('Time Filter', 'quick-featured-images'),
192
+ false,
193
+ true,
194
+ ),
195
+ array(
196
+ __('Author Filter', 'quick-featured-images'),
197
+ false,
198
+ true,
199
+ ),
200
+ array(
201
+ __('Custom Taxonomy Filter', 'quick-featured-images'),
202
+ false,
203
+ true,
204
+ ),
205
+ array(
206
+ __('Featured Image Size Filter', 'quick-featured-images'),
207
+ false,
208
+ true,
209
+ ),
210
+ array(
211
+ __('Parent Page Filter', 'quick-featured-images'),
212
+ false,
213
+ true,
214
+ ),
215
+ array(
216
+ __('Supported Post Types in Bulk Edit', 'quick-featured-images')
217
+ ),
218
+ array(
219
+ __('Posts', 'quick-featured-images'),
220
+ false,
221
+ true,
222
+ ),
223
+ array(
224
+ __('Pages', 'quick-featured-images'),
225
+ false,
226
+ true,
227
+ ),
228
+ array(
229
+ __('Custom Post Types', 'quick-featured-images'),
230
+ false,
231
+ true,
232
+ ),
233
+ array(
234
+ __('Audio Files', 'quick-featured-images'),
235
+ false,
236
+ true,
237
+ ),
238
+ array(
239
+ __('Video Files', 'quick-featured-images'),
240
+ false,
241
+ true,
242
+ ),
243
+ array(
244
+ __('Presets in Bulk Edit', 'quick-featured-images')
245
+ ),
246
+ array(
247
+ __('Stores all settings of a process as a preset to recall them for recurring tasks', 'quick-featured-images'),
248
+ false,
249
+ true,
250
+ ),
251
+ array(
252
+ __('Default Images', 'quick-featured-images')
253
+ ),
254
+ array(
255
+ __('Overwrites existing featured images', 'quick-featured-images'),
256
+ true,
257
+ true,
258
+ ),
259
+ array(
260
+ __('Takes first content image as featured image in new posts if image was uploaded to the media library', 'quick-featured-images'),
261
+ true,
262
+ true,
263
+ ),
264
+ array(
265
+ __('Takes first content image as featured image in new posts if image is on an external server', 'quick-featured-images'),
266
+ false,
267
+ true,
268
+ ),
269
+ array(
270
+ __('Takes one of multiple images randomly as featured image in new posts', 'quick-featured-images'),
271
+ false,
272
+ true,
273
+ ),
274
+ array(
275
+ __('Takes the thumbnail of the first embedded content (e.g. YouTube, Vimeo, Instagram) as featured image in new posts', 'quick-featured-images'),
276
+ false,
277
+ true,
278
+ ),
279
+ array(
280
+ __('Takes the external image as a featured image (needs Featured Image By URL or Featured Image From URL)', 'quick-featured-images'),
281
+ false,
282
+ true,
283
+ ),
284
+ array(
285
+ __('Displays featured images randomly at each page load', 'quick-featured-images'),
286
+ false,
287
+ true,
288
+ ),
289
+ array(
290
+ __('Removes the first content image automatically after the featured image was set successfully', 'quick-featured-images'),
291
+ false,
292
+ true,
293
+ ),
294
+ array(
295
+ __('Supports WooCommerce products', 'quick-featured-images'),
296
+ false,
297
+ true,
298
+ ),
299
+ array(
300
+ __('Exports and imports all rules', 'quick-featured-images'),
301
+ false,
302
+ true,
303
+ ),
304
+ array(
305
+ __('Imports rules from the free version "Quick Featured Images"', 'quick-featured-images'),
306
+ false,
307
+ true,
308
+ ),
309
+ array(
310
+ __('Supported Taxonomies in Default Images', 'quick-featured-images')
311
+ ),
312
+ array(
313
+ __('Matches a standard WordPress post type (post or page)', 'quick-featured-images'),
314
+ true,
315
+ true,
316
+ ),
317
+ array(
318
+ __('Matches a selected custom post type', 'quick-featured-images'),
319
+ true,
320
+ true,
321
+ ),
322
+ array(
323
+ __('Matches a selected category', 'quick-featured-images'),
324
+ true,
325
+ true,
326
+ ),
327
+ array(
328
+ __('Matches a selected tag', 'quick-featured-images'),
329
+ true,
330
+ true,
331
+ ),
332
+ array(
333
+ __('Matches a selected author', 'quick-featured-images'),
334
+ true,
335
+ true,
336
+ ),
337
+ array(
338
+ __('Matches a selected post format', 'quick-featured-images'),
339
+ false,
340
+ true,
341
+ ),
342
+ array(
343
+ __('Matches a search term in post title', 'quick-featured-images'),
344
+ false,
345
+ true,
346
+ ),
347
+ array(
348
+ __('Image Columns', 'quick-featured-images')
349
+ ),
350
+ array(
351
+ __('Shows additional column of featured images for posts, pages and custom post types', 'quick-featured-images'),
352
+ true,
353
+ true,
354
+ ),
355
+ array(
356
+ __('Provides action links to set, change, remove and edit the post’s image if the user is allowed to do it', 'quick-featured-images'),
357
+ true,
358
+ true,
359
+ ),
360
+ array(
361
+ __('Shows assigned external featured images in the image column (needs Featured Image By URL or Featured Image From URL)', 'quick-featured-images'),
362
+ false,
363
+ true,
364
+ ),
365
+ array(
366
+ __('Settings', 'quick-featured-images')
367
+ ),
368
+ array(
369
+ __('Shows or hides the plugin based on the selected user role ‘Administrator’ or ‘Editor’', 'quick-featured-images'),
370
+ true,
371
+ true,
372
+ ),
373
+ array(
374
+ __('Supported media file formats', 'quick-featured-images')
375
+ ),
376
+ array(
377
+ __('Supported image formats: jpg, jpeg, jpe, gif, png', 'quick-featured-images'),
378
+ true,
379
+ true,
380
+ ),
381
+ array(
382
+ __('Supported audio formats: mp3, ogg, wma, m4a, wav', 'quick-featured-images'),
383
+ false,
384
+ true,
385
+ ),
386
+ array(
387
+ __('Supported video formats: mp4, m4v, webm, ogv, wmv, flv', 'quick-featured-images'),
388
+ false,
389
+ true,
390
+ ),
391
+ array(
392
+ __('In General', 'quick-featured-images')
393
+ ),
394
+ array(
395
+ __('Premium support', 'quick-featured-images'),
396
+ false,
397
+ true,
398
+ )
399
+ );
400
+
401
+ function qfi_free_vs_pro_column_vl( $vl, $yes_icon, $no_icon )
402
+ {
403
+ if( is_array( $vl ) )
404
+ {
405
+ foreach ( $vl as $value )
406
+ {
407
+ if( is_bool( $value ) )
408
+ {
409
+ echo ( $value ? $yes_icon : $no_icon );
410
+ }else {
411
+ //string only
412
+ echo $value;
413
+ }
414
+ }
415
+ } else {
416
+ if( is_bool( $vl ) )
417
+ {
418
+ echo ($vl ? $yes_icon : $no_icon);
419
+ } else {
420
+ //string only
421
+ echo $vl;
422
+ }
423
+ }
424
+ }
425
+ ?>
426
+ <div class="qfi_wrapper">
427
+ <div class="qfi_main">
428
+ <table class="qfi_freevs_pro">
429
+ <tr>
430
+ <td><?php _e('FEATURES', 'quick-featured-images'); ?></td>
431
+ <td><?php _e('FREE', 'quick-featured-images'); ?></td>
432
+ <td><?php _e('PREMIUM', 'quick-featured-images'); ?></td>
433
+ </tr>
434
+ <?php
435
+ foreach ($comparison_data as $val_arr)
436
+ {
437
+ ?>
438
+ <tr>
439
+ <?php if( 1 == count( $val_arr ) ): ?>
440
+ <td colspan="3" class="headline"><?php echo $val_arr[0];?></td>
441
+ <?php else: ?>
442
+ <td><?php echo $val_arr[0];?></td>
443
+ <td>
444
+ <?php
445
+ qfi_free_vs_pro_column_vl( $val_arr[1], $yes_icon, $no_icon );
446
+ ?>
447
+ </td>
448
+ <td>
449
+ <?php
450
+ qfi_free_vs_pro_column_vl( $val_arr[2], $yes_icon, $no_icon );
451
+ ?>
452
+ </td>
453
+ <?php endif; ?>
454
+ </tr>
455
+ <?php
456
+ }
457
+ ?>
458
+ </table>
459
+ </div>
460
+ </div>
admin/views/section_footer.php CHANGED
@@ -8,6 +8,19 @@
8
  * @link https://www.kybernetik-services.com
9
  * @copyright 2013 Kybernetik Services
10
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  // check if file is called in an object context
12
  // else use non-object context
13
  if ( isset($this->plugin_slug ) ) {
@@ -44,21 +57,51 @@ if ( ! in_array( $paypal_locale, array( 'en_US', 'en_AU', 'es_ES', 'fr_FR', 'de_
44
  } // switch()
45
  } // if ('ja')
46
  } // if !in_array()
47
-
48
  ?>
49
  </div><!-- .qfi_content -->
50
  </div><!-- #qfi_main -->
51
  <div id="qfi_footer">
52
- <div class="qfi_content">
53
- <h2><?php esc_html_e( 'Credits and information', 'quick-featured-images' ); ?></h2>
54
- <dl>
55
- <dt><?php esc_html_e( 'Do you like the plugin?', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/support/view/plugin-reviews/quick-featured-images" target="_blank"><?php esc_html_e( 'Please rate it at wordpress.org!', 'quick-featured-images' ); ?></a></dd>
56
  <dt><?php esc_html_e( 'The plugin is for free. But the plugin author would be delighted to your small contribution.', 'quick-featured-images' ); ?></dt><dd><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=NSEQX73VHXKS8" target="_blank"><img src="https://www.paypalobjects.com/<?php echo $paypal_locale; ?>/i/btn/btn_donateCC_LG.gif" alt="(<?php esc_html_e( 'Donation Button', $text_domain ); ?>)" id="paypal_button" /><br /><?php esc_html_e( 'Donate with PayPal', 'quick-featured-images' ); ?></a><img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1" /></dd>
57
- <dt><?php esc_html_e( 'Do you need support or have an idea for the plugin?', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/support/plugin/quick-featured-images" target="_blank"><?php esc_html_e( 'Post your questions and ideas about Quick Featured Images in the forum at wordpress.org!', 'quick-featured-images' ); ?></a></dd>
58
- <dt><?php esc_html_e( 'Let the thumbnails appear in the widget of the most recent posts with this fast plugin', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/plugins/recent-posts-widget-with-thumbnails/" target="_blank"><?php printf( esc_html__( 'Download plugin %s at %s!', 'quick-featured-images' ), '<strong>Recent Posts Widget With Thumbnails</strong>', 'wordpress.org' ); ?></a></dd>
59
  <dt><?php esc_html_e( 'Get the Pro version', 'quick-featured-images' ); ?> <a href="https://www.quickfeaturedimages.com/?utm_source=wordpress_org&utm_medium=plugin&utm_campaign=quick-featured-images&utm_content=go_pro" target="_blank">Quick Featured Images Pro</a></dd>
60
- </dl>
61
- </div><!-- .qfi_content -->
 
 
 
 
 
 
62
  </div><!-- #qfi_footer -->
63
  </div><!-- .qfi_wrapper -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  </div><!-- .wrap -->
8
  * @link https://www.kybernetik-services.com
9
  * @copyright 2013 Kybernetik Services
10
  */
11
+
12
+ $ks_logo = '<img src="' . QFI_ROOT_URL . 'admin/assets/images/ks_logo.png" style="width:150px" />';
13
+ $tick=QFI_ROOT_URL.'admin/assets/images/tick.svg';
14
+ $pro_upgarde_features=array(
15
+ __('Supports custom post type.', 'quick-featured-images'),
16
+ __('Supports WooCommerce products.', 'quick-featured-images'),
17
+ __('Sets the first image as featured image.', 'quick-featured-images'),
18
+ __('Takes the thumbnail of the first embedded content (e.g. YouTube, Vimeo, Instagram) as featured image in new posts.','quick-featured-images'),
19
+ __('Removes the first content image automatically after the featured image was set successfully.', 'quick-featured-images'),
20
+ __('Supports audio and video.', 'quick-featured-images'),
21
+ );
22
+ $screen = get_current_screen();
23
+
24
  // check if file is called in an object context
25
  // else use non-object context
26
  if ( isset($this->plugin_slug ) ) {
57
  } // switch()
58
  } // if ('ja')
59
  } // if !in_array()
 
60
  ?>
61
  </div><!-- .qfi_content -->
62
  </div><!-- #qfi_main -->
63
  <div id="qfi_footer">
64
+ <div class="qfi_content">
65
+ <h2><?php esc_html_e( 'Credits and information', 'quick-featured-images' ); ?></h2>
66
+ <dl>
67
+ <dt><?php esc_html_e( 'Do you like the plugin?', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/support/view/plugin-reviews/quick-featured-images" target="_blank"><?php esc_html_e( 'Please rate it at wordpress.org!', 'quick-featured-images' ); ?></a></dd>
68
  <dt><?php esc_html_e( 'The plugin is for free. But the plugin author would be delighted to your small contribution.', 'quick-featured-images' ); ?></dt><dd><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=NSEQX73VHXKS8" target="_blank"><img src="https://www.paypalobjects.com/<?php echo $paypal_locale; ?>/i/btn/btn_donateCC_LG.gif" alt="(<?php esc_html_e( 'Donation Button', $text_domain ); ?>)" id="paypal_button" /><br /><?php esc_html_e( 'Donate with PayPal', 'quick-featured-images' ); ?></a><img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1" /></dd>
69
+ <dt><?php esc_html_e( 'Do you need support or have an idea for the plugin?', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/support/plugin/quick-featured-images" target="_blank"><?php esc_html_e( 'Post your questions and ideas about Quick Featured Images in the forum at wordpress.org!', 'quick-featured-images' ); ?></a></dd>
70
+ <dt><?php esc_html_e( 'Let the thumbnails appear in the widget of the most recent posts with this fast plugin', 'quick-featured-images' ); ?></dt><dd><a href="http://wordpress.org/plugins/recent-posts-widget-with-thumbnails/" target="_blank"><?php printf( esc_html__( 'Download plugin %s at %s!', 'quick-featured-images' ), '<strong>Recent Posts Widget With Thumbnails</strong>', 'wordpress.org' ); ?></a></dd>
71
  <dt><?php esc_html_e( 'Get the Pro version', 'quick-featured-images' ); ?> <a href="https://www.quickfeaturedimages.com/?utm_source=wordpress_org&utm_medium=plugin&utm_campaign=quick-featured-images&utm_content=go_pro" target="_blank">Quick Featured Images Pro</a></dd>
72
+ </dl>
73
+ <div class="ks_branding" style="float:right; text-align:end;">
74
+ <div class="ks_branding_label" style="width:100%;padding-top:10px;font-size:11px;font-weight:600;">
75
+ <?php _e('Developed by', 'quick-featured-images'); ?>
76
+ </div>
77
+ <div style="width: 100%; padding-bottom: 10px;"><?php echo $ks_logo; ?></div>
78
+ </div>
79
+ </div><!-- .qfi_content -->
80
  </div><!-- #qfi_footer -->
81
  </div><!-- .qfi_wrapper -->
82
+ <?php if( strstr( $screen->id, 'comparison' ) || strstr( $screen->id, 'overview' ) ) : ?>
83
+ <div class="upgrade_to_pro_bottom_banner">
84
+ <div class="upgrade_to_pro_bottom_banner_hd">
85
+ <?php _e('Upgrade to Quick Featured Images Pro to get hold of advanced features.', 'quick-featured-images');?>
86
+ </div>
87
+ <a class="upgrade_to_pro_bottom_banner_btn" href="https://www.kybernetik-services.com/shop/wordpress/plugin/quick-featured-images-pro/?utm_source=wordpress_org&utm_medium=pro_vs_free&utm_campaign=section-footer&utm_content=<?php echo QFI_VERSION;?>" target="_blank">
88
+ <?php _e('UPGRADE TO PRO', 'quick-featured-images'); ?>
89
+ </a>
90
+ <div class="upgrade_to_pro_bottom_banner_feature_list_main">
91
+ <?php
92
+ foreach($pro_upgarde_features as $pro_upgarde_feature)
93
+ {
94
+ ?>
95
+ <div class="upgrade_to_pro_bottom_banner_feature_list">
96
+ <?php echo $pro_upgarde_feature;?>
97
+ </div>
98
+ <?php
99
+ }
100
+ ?>
101
+ </div>
102
+ </div>
103
+ <style type="text/css">
104
+ .upgrade_to_pro_bottom_banner_feature_list{ background:url(<?php echo esc_url($tick); ?>) no-repeat left 5px; }
105
+ </style>
106
+ <?php endif; ?>
107
  </div><!-- .wrap -->
quick-featured-images.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: Quick Featured Images
11
  * Plugin URI: http://wordpress.org/plugins/quick-featured-images
12
  * Description: Your time-saving Swiss Army Knife for featured images: Set, replace and delete them in bulk, in posts lists and set default images for future posts.
13
- * Version: 13.5.7
14
  * Requires at least: 3.8
15
  * Requires PHP: 5.2
16
  * Author: Kybernetik Services
@@ -27,6 +27,8 @@ if ( ! defined( 'WPINC' ) ) {
27
  }
28
 
29
  define( 'QFI_ROOT', plugin_dir_path( __FILE__ ) );
 
 
30
 
31
  function qfi_autoloader( $class_name )
32
  {
@@ -71,14 +73,16 @@ add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Defaults', 'get_inst
71
  if ( is_admin() ) {
72
  /*
73
  * since 7.0: Make object instance of options page class
74
- *
75
  */
76
  add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Settings', 'get_instance' ) );
77
 
78
  /*
79
  * since 7.0: Make object instance of column functions class
80
- *
81
  */
82
  add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Columns', 'get_instance' ) );
83
 
 
 
 
 
84
  }
10
  * Plugin Name: Quick Featured Images
11
  * Plugin URI: http://wordpress.org/plugins/quick-featured-images
12
  * Description: Your time-saving Swiss Army Knife for featured images: Set, replace and delete them in bulk, in posts lists and set default images for future posts.
13
+ * Version: 13.6.0
14
  * Requires at least: 3.8
15
  * Requires PHP: 5.2
16
  * Author: Kybernetik Services
27
  }
28
 
29
  define( 'QFI_ROOT', plugin_dir_path( __FILE__ ) );
30
+ define( 'QFI_ROOT_URL', plugin_dir_url( __FILE__ ) );
31
+ const QFI_VERSION = '13.6.0';
32
 
33
  function qfi_autoloader( $class_name )
34
  {
73
  if ( is_admin() ) {
74
  /*
75
  * since 7.0: Make object instance of options page class
 
76
  */
77
  add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Settings', 'get_instance' ) );
78
 
79
  /*
80
  * since 7.0: Make object instance of column functions class
 
81
  */
82
  add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Columns', 'get_instance' ) );
83
 
84
+ /*
85
+ * since 13.6.0: Make object instance of comparison functions class
86
+ */
87
+ add_action( 'plugins_loaded', array( 'Quick_Featured_Images_Comparison', 'get_instance' ) );
88
  }