Changeset 3347125
- Timestamp:
- 08/19/2025 03:48:13 PM (4 months ago)
- Location:
- simple-feature-requests/trunk
- Files:
-
- 3 added
- 9 edited
-
assets/frontend/css/main.css (modified) (1 diff)
-
inc/admin/php-check.php (modified) (5 diffs)
-
inc/class-assets.php (modified) (1 diff)
-
inc/class-post-types.php (modified) (6 diffs)
-
inc/class-template-hooks.php (modified) (1 diff)
-
languages/simple-feature-requests.pot (modified) (30 diffs)
-
plugin-data.json (modified) (1 diff)
-
readme.txt (modified) (4 diffs)
-
simple-feature-requests.php (modified) (3 diffs)
-
templates/compat (added)
-
templates/compat/acf (added)
-
templates/compat/acf/single.php (added)
Legend:
- Unmodified
- Added
- Removed
-
simple-feature-requests/trunk/assets/frontend/css/main.css
r3128855 r3347125 955 955 z-index: 99999; 956 956 } 957 958 /** 959 * ACF Fields 960 */ 961 .sfr-form__acf-fields { 962 margin: 20px 0; 963 padding: 20px; 964 background: #f9f9f9; 965 border-radius: 4px; 966 border: 1px solid #e1e1e1; 967 } 968 969 .sfr-form__acf-fields h3 { 970 margin: 0 0 15px 0; 971 font-size: 16px; 972 color: #333; 973 } 974 975 .sfr-form__acf-fields .sfr-form__row { 976 margin-bottom: 15px; 977 } 978 979 .sfr-form__acf-fields .sfr-form__row:last-child { 980 margin-bottom: 0; 981 } 982 983 .sfr-form__acf-fields .sfr-form__field { 984 width: 100%; 985 padding: 8px 12px; 986 border: 1px solid #ddd; 987 border-radius: 4px; 988 font-size: 14px; 989 line-height: 1.4; 990 } 991 992 .sfr-form__acf-fields .sfr-form__field:focus { 993 outline: none; 994 border-color: #0073aa; 995 box-shadow: 0 0 0 1px #0073aa; 996 } 997 998 .sfr-form__acf-fields .sfr-form__field--textarea { 999 min-height: 100px; 1000 resize: vertical; 1001 } 1002 1003 .sfr-form__acf-fields .sfr-form__field--select { 1004 background: white; 1005 } 1006 1007 .sfr-form__acf-fields .sfr-form__checkbox, 1008 .sfr-form__acf-fields .sfr-form__radio { 1009 display: flex; 1010 align-items: center; 1011 margin-bottom: 8px; 1012 cursor: pointer; 1013 } 1014 1015 .sfr-form__acf-fields .sfr-form__checkbox input, 1016 .sfr-form__acf-fields .sfr-form__radio input { 1017 margin-right: 8px; 1018 width: auto; 1019 } 1020 1021 .sfr-form__acf-fields .sfr-form__checkbox span, 1022 .sfr-form__acf-fields .sfr-form__radio span { 1023 font-weight: normal; 1024 } 1025 1026 .sfr-form__acf-fields .required { 1027 color: #dc3232; 1028 font-weight: bold; 1029 } 1030 1031 /* ACF Fields Display on Single Pages */ 1032 .sfr-acf-fields { 1033 margin: 20px 0; 1034 padding: 15px; 1035 background: #f9f9f9; 1036 border-radius: 4px; 1037 border: 1px solid #e1e1e1; 1038 } 1039 1040 .sfr-acf-fields h3 { 1041 margin: 0 0 15px 0; 1042 font-size: 16px; 1043 color: #333; 1044 border-bottom: 1px solid #e1e1e1; 1045 padding-bottom: 8px; 1046 } 1047 1048 .sfr-acf-field { 1049 margin-bottom: 10px; 1050 padding: 8px 0; 1051 border-bottom: 1px solid #f0f0f0; 1052 } 1053 1054 .sfr-acf-field:last-child { 1055 margin-bottom: 0; 1056 border-bottom: none; 1057 } 1058 1059 .sfr-acf-field strong { 1060 color: #333; 1061 font-weight: 600; 1062 } 1063 1064 .sfr-acf-field span { 1065 color: #666; 1066 margin-left: 5px; 1067 } 1068 1069 /* ACF Fields Table Layout */ 1070 .sfr-acf-fields-table { 1071 width: 100%; 1072 border-collapse: collapse; 1073 margin: 15px 0; 1074 } 1075 1076 .sfr-acf-fields-table .sfr-acf-field-row { 1077 border-bottom: 1px solid #eee; 1078 } 1079 1080 .sfr-acf-fields-table .sfr-acf-field-row:last-child { 1081 border-bottom: none; 1082 } 1083 1084 .sfr-acf-fields-table .sfr-acf-field-label { 1085 padding: 12px 15px 12px 0; 1086 vertical-align: top; 1087 font-weight: 600; 1088 color: #333; 1089 text-align: left; 1090 line-height: 1.4; 1091 } 1092 1093 .sfr-acf-fields .sfr-acf-field-label { 1094 display: inline-block; 1095 vertical-align: top; 1096 } 1097 1098 .sfr-acf-fields-table .sfr-acf-field-value { 1099 padding: 12px 0; 1100 vertical-align: top; 1101 } 1102 1103 .sfr-acf-fields-table .sfr-acf-field-value span { 1104 color: #666; 1105 line-height: 1.5; 1106 } 1107 1108 .sfr-acf-fields-table .sfr-acf-textarea { 1109 color: #666; 1110 line-height: 1.6; 1111 white-space: pre-line; 1112 } 1113 1114 /* Responsive table */ 1115 @media (max-width: 768px) { 1116 .sfr-acf-fields-table { 1117 display: block; 1118 } 1119 1120 .sfr-acf-fields-table .sfr-acf-field-row { 1121 display: block; 1122 margin-bottom: 15px; 1123 padding-bottom: 15px; 1124 border-bottom: 1px solid #eee; 1125 } 1126 1127 .sfr-acf-fields-table .sfr-acf-field-label, 1128 .sfr-acf-fields-table .sfr-acf-field-value { 1129 display: block; 1130 width: 100%; 1131 padding: 5px 0; 1132 } 1133 1134 .sfr-acf-fields-table .sfr-acf-field-label { 1135 padding-bottom: 5px; 1136 } 1137 } -
simple-feature-requests/trunk/inc/admin/php-check.php
r3276866 r3347125 21 21 } else if (version_compare(phpversion(), '8.0', '>=') && version_compare(phpversion(), '8.1', '<')) { // PHP 8.0 22 22 add_action('admin_notices', [$this, 'php80_notice']); 23 } else if ((version_compare(phpversion(), '8.1', '>=') && version_compare(phpversion(), '8.2', '<')) && (new DateTime() >= (new DateTime('2025-12-31'))->modify('- 1 month'))) { // PHP 8.1 - 1 month before EOL23 } else if ((version_compare(phpversion(), '8.1', '>=') && version_compare(phpversion(), '8.2', '<')) && (new DateTime() >= (new DateTime('2025-12-31'))->modify('-6 months'))) { // PHP 8.1 - 1 month before EOL 24 24 add_action('admin_notices', [$this, 'php81_notice']); 25 } else if ((version_compare(phpversion(), '8.2', '>=') && version_compare(phpversion(), '8.3', '<')) && (new DateTime() >= (new DateTime('2026-12-31'))->modify('- 1 month'))) { // PHP 8.2 - 1 month before EOL25 } else if ((version_compare(phpversion(), '8.2', '>=') && version_compare(phpversion(), '8.3', '<')) && (new DateTime() >= (new DateTime('2026-12-31'))->modify('-6 months'))) { // PHP 8.2 - 1 month before EOL 26 26 add_action('admin_notices', [$this, 'php82_notice']); 27 } else if ((version_compare(phpversion(), '8.3', '>=') && version_compare(phpversion(), '8.4', '<')) && (new DateTime() >= (new DateTime('2027-12-31'))->modify('- 1 month'))) { // PHP 8.3 - 1 month before EOL27 } else if ((version_compare(phpversion(), '8.3', '>=') && version_compare(phpversion(), '8.4', '<')) && (new DateTime() >= (new DateTime('2027-12-31'))->modify('-6 months'))) { // PHP 8.3 - 1 month before EOL 28 28 add_action('admin_notices', [$this, 'php83_notice']); 29 } else if ((version_compare(phpversion(), '8.4', '>=') && version_compare(phpversion(), '8.5', '<')) && (new DateTime() >= (new DateTime('2028-12-31'))->modify('- 1 month'))) { // PHP 8.4 - 1 month before EOL29 } else if ((version_compare(phpversion(), '8.4', '>=') && version_compare(phpversion(), '8.5', '<')) && (new DateTime() >= (new DateTime('2028-12-31'))->modify('-6 months'))) { // PHP 8.4 - 1 month before EOL 30 30 add_action('admin_notices', [$this, 'php84_notice']); 31 31 } … … 55 55 ?> 56 56 <div class="notice notice-error"> 57 <p><?php _e('Important Notice: THIS PHP VERSION IS NOT SUPPORTED and no longer receives security updates , we strongly recommend upgrading to a supported version to ensure continued stability and security.', 'simple-feature-requests'); ?></p>57 <p><?php _e('Important Notice: THIS PHP VERSION IS NOT SUPPORTED and no longer receives security updates. Proper operation of this plugin cannot be guaranteed. See <a href="https://www.php.net/supported-versions.php" target="_blank">PHP Supported Versions</a> for more information.', 'simple-feature-requests'); ?></p> 58 58 </div> 59 59 <?php … … 64 64 ?> 65 65 <div class="notice notice-error"> 66 <p><?php _e('Important Notice: Support for PHP 7.4 will be deprecated in an upcoming release. As PHP 7.4 has reached end-of-life on Nov 28, 2022 and no longer receives security updates, we strongly recommend upgrading to a supported version to ensure continued stability and security.', 'simple-feature-requests'); ?></p>66 <p><?php _e('Important Notice: Support for PHP 7.4 reached end-of-life on Nov 28, 2022 and is no longer supported. Compatibility with unsupported PHP versions will be removed in January 2026. See <a href="https://www.php.net/supported-versions.php" target="_blank">PHP Supported Versions</a> for more information.', 'simple-feature-requests'); ?></p> 67 67 </div> 68 68 <?php … … 73 73 ?> 74 74 <div class="notice notice-error"> 75 <p><?php _e('Important Notice: Support for PHP 8.0 will be deprecated in an upcoming release. As PHP 8.0 has reached end-of-life on Nov 26, 2023 and no longer receives security updates, we strongly recommend upgrading to a supported version to ensure continued stability and security.', 'simple-feature-requests'); ?></p>75 <p><?php _e('Important Notice: Support for PHP 8.0 reached end-of-life on Nov 26, 2023 and is no longer supported. Compatibility with unsupported PHP versions will be removed in January 2026. See <a href="https://www.php.net/supported-versions.php" target="_blank">PHP Supported Versions</a> for more information.', 'simple-feature-requests'); ?></p> 76 76 </div> 77 77 <?php … … 86 86 ?> 87 87 <div class="notice notice-error"> 88 <p><?php _e('Important Notice: Support for PHP 8.1 ' . $ends . ' on Dec 31, 2025 and will be deprecated in an upcoming release. As PHP 8.1 has reached end-of-life and no longer receives security updates, we strongly recommend upgrading to a supported version to ensure continued stability and security.', 'simple-feature-requests'); ?></p>88 <p><?php _e('Important Notice: Support for PHP 8.1 ' . $ends . ' on Dec 31, 2025. Compatibility with unsupported PHP versions will be removed starting in January 2026. See <a href="https://www.php.net/supported-versions.php" target="_blank">PHP Supported Versions</a> for more information.', 'simple-feature-requests'); ?></p> 89 89 </div> 90 90 <?php -
simple-feature-requests/trunk/inc/class-assets.php
r3128855 r3347125 26 26 return; 27 27 } 28 $suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' ); 28 //$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; 29 $suffix = ''; 29 30 wp_enqueue_script( 30 31 'sfr-main', -
simple-feature-requests/trunk/inc/class-post-types.php
r3292092 r3347125 145 145 public static function add( $options ) { 146 146 $defaults = array( 147 "plural" => "",148 "singular" => "",149 "key"=> false,150 "rewrite_slug"=> false,151 "rewrite_with_front"=> false,152 "rewrite_feeds"=> true,153 "rewrite_pages"=> true,154 "menu_icon" => "dashicons-admin-post",147 'plural' => '', 148 'singular' => '', 149 'key' => false, 150 'rewrite_slug' => false, 151 'rewrite_with_front' => false, 152 'rewrite_feeds' => true, 153 'rewrite_pages' => true, 154 'menu_icon' => 'dashicons-admin-post', 155 155 'hierarchical' => false, 156 156 'supports' => array('title'), … … 206 206 if ( $options['rewrite_slug'] ) { 207 207 $args['rewrite'] = array( 208 "slug"=> $options['rewrite_slug'],209 "with_front"=> $options['rewrite_with_front'],210 "feeds"=> $options['rewrite_feeds'],211 "pages"=> $options['rewrite_pages'],208 'slug' => $options['rewrite_slug'], 209 'with_front' => $options['rewrite_with_front'], 210 'feeds' => $options['rewrite_feeds'], 211 'pages' => $options['rewrite_pages'], 212 212 ); 213 213 } … … 755 755 /** 756 756 * Get single request title tag 757 * 757 * 758 758 * @return string 759 759 */ … … 768 768 /** 769 769 * Get archive request title tag 770 * 770 * 771 771 * @return string 772 772 */ … … 781 781 /** 782 782 * Check if we should hide default theme entry title on single request view 783 * 783 * 784 784 * @return bool 785 785 */ … … 954 954 echo $attachment_id; 955 955 ?>"> 956 <?php 956 <a href="<?php 957 echo wp_get_attachment_url( $attachment_id ); 958 ?>" target="_blank"> 959 <?php 957 960 echo wp_get_attachment_image( $attachment_id, 'thumbnail' ); 958 961 ?> 962 </a> 959 963 <a hre="#" class="sfr-remove_attachment"></a> 960 964 </li> -
simple-feature-requests/trunk/inc/class-template-hooks.php
r3128855 r3347125 119 119 120 120 /** 121 * Include template. 122 * 123 * @param string $name 124 * @param array $args 121 * Include a template file with theme override support. 122 * 123 * This method follows WordPress's template hierarchy to allow theme developers 124 * to override plugin templates. The priority order is: 125 * 1. Child theme template 126 * 2. Parent theme template 127 * 3. Plugin default template 128 * 129 * Theme developers can override templates by creating files in their theme 130 * directory structure: 131 * 132 * <code> 133 * wp-content/themes/your-theme/ 134 * └── simple-feature-requests/ 135 * ├── loop/ 136 * │ ├── content.php 137 * │ └── no-requests-found.php 138 * ├── archive/ 139 * │ ├── submission-form.php 140 * │ └── filters.php 141 * ├── sidebar/ 142 * │ ├── login.php 143 * │ └── back-to-archive-link.php 144 * ├── components/ 145 * │ └── login-form-fields.php 146 * └── compat/ 147 * └── acf/ 148 * └── single.php 149 * </code> 150 * 151 * Example: To override the ACF fields display template, create: 152 * <code> 153 * wp-content/themes/your-theme/simple-feature-requests/compat/acf/single.php 154 * </code> 155 * 156 * Child themes can also override templates by placing them in: 157 * <code> 158 * wp-content/themes/child-theme/simple-feature-requests/ 159 * </code> 160 * 161 * Template variables are automatically extracted into the template scope 162 * from the $args parameter. For example, if you pass: 163 * <code> 164 * SFR_Template_Hooks::include_template( 'compat/acf/single', array( 165 * 'acf_fields' => $acf_fields 166 * ) ); 167 * </code> 168 * 169 * The $acf_fields variable will be available in the template. 170 * 171 * @param string $name Template name (without .php extension), e.g., 'loop/content', 'compat/acf/single' 172 * @param array $args Variables to extract into template scope 173 * 174 * @since 4.6.11 125 175 */ 126 176 public static function include_template( $name, $args = array() ) { 127 $path = sprintf( '%s%s.php', SFR_TEMPLATES_PATH, $name ); 128 if ( !file_exists( $path ) ) { 177 // Check for theme override first 178 $theme_path = get_template_directory() . '/simple-feature-requests/' . $name . '.php'; 179 $child_theme_path = get_stylesheet_directory() . '/simple-feature-requests/' . $name . '.php'; 180 // Plugin fallback path 181 $plugin_path = sprintf( '%s%s.php', SFR_TEMPLATES_PATH, $name ); 182 // Determine which template to load 183 $template_path = false; 184 // Priority: Child theme > Parent theme > Plugin 185 if ( file_exists( $child_theme_path ) ) { 186 $template_path = $child_theme_path; 187 } elseif ( file_exists( $theme_path ) ) { 188 $template_path = $theme_path; 189 } elseif ( file_exists( $plugin_path ) ) { 190 $template_path = $plugin_path; 191 } 192 // If no template found, return early 193 if ( !$template_path ) { 129 194 return; 130 195 } 196 // Extract variables into template scope 131 197 extract( $args ); 132 include $path; 198 // Include the template 199 include $template_path; 133 200 } 134 201 -
simple-feature-requests/trunk/languages/simple-feature-requests.pot
r3292092 r3347125 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Simple Feature Requests Pro 2.4. 5\n"5 "Project-Id-Version: Simple Feature Requests Pro 2.4.7\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/simple-feature-requests\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-0 4-18T16:00:02+00:00\n"12 "POT-Creation-Date: 2025-08-18T15:03:59+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 "X-Generator: WP-CLI 2.1 1.0\n"14 "X-Generator: WP-CLI 2.12.0\n" 15 15 "X-Domain: simple-feature-requests\n" 16 16 … … 68 68 msgstr "" 69 69 70 #: inc/class-admin-filters.php:9 070 #: inc/class-admin-filters.php:92 71 71 msgid "Show all Statuses" 72 msgstr "" 73 74 #: inc/class-admin-filters.php:512 75 msgid "Show all Users" 72 76 msgstr "" 73 77 … … 84 88 85 89 #: inc/class-ajax.php:66 90 #, php-format 86 91 msgid "Simple Feature Requests: No post found for ID %d" 87 92 msgstr "" … … 98 103 msgstr "" 99 104 100 #: inc/class-assets.php:5 2101 #: inc/class-assets.php:12 4105 #: inc/class-assets.php:53 106 #: inc/class-assets.php:125 102 107 #: inc/class-feature-request.php:335 103 #: inc/class-post-types.php:4 27108 #: inc/class-post-types.php:431 104 109 msgid "Vote" 105 110 … … 107 112 msgstr[1] "" 108 113 109 #: inc/class-assets.php:53110 #: inc/class-assets.php:125111 msgid "Voting"112 msgstr ""113 114 114 #: inc/class-assets.php:54 115 115 #: inc/class-assets.php:126 116 msgid "Voting" 117 msgstr "" 118 119 #: inc/class-assets.php:55 120 #: inc/class-assets.php:127 116 121 #: inc/class-feature-request.php:335 117 122 msgid "Voted" 118 123 msgstr "" 119 124 120 #: inc/class-assets.php:14 3125 #: inc/class-assets.php:144 121 126 msgid "Select Attachments" 122 127 msgstr "" 123 128 124 #: inc/class-assets.php:14 4129 #: inc/class-assets.php:145 125 130 msgid "Add Attachements" 131 msgstr "" 132 133 #: inc/class-compat-acf.php:68 134 #: templates/compat/acf/single.php:21 135 msgid "Additional Information" 136 msgstr "" 137 138 #: inc/class-compat-acf.php:153 139 msgid "Select an option" 140 msgstr "" 141 142 #: inc/class-compat-acf.php:301 143 #, php-format 144 msgid "Please fill in the %s field." 126 145 msgstr "" 127 146 … … 186 205 187 206 #: inc/class-factory.php:160 207 #, php-format 188 208 msgid "It is currently %s." 189 209 msgstr "" … … 194 214 195 215 #: inc/class-notifications.php:192 216 #, php-format 196 217 msgid "Feature request status changed to \"%s\"" 197 218 msgstr "" … … 207 228 208 229 #: inc/class-notifications.php:295 230 #, php-format 209 231 msgid "A new %s has been posted by \"%s\" to your site." 210 232 msgstr "" … … 216 238 #: inc/class-notifications.php:328 217 239 #: inc/class-notifications.php:358 240 #, php-format 218 241 msgid "Hello %s," 219 242 msgstr "" 220 243 221 244 #: inc/class-notifications.php:329 245 #, php-format 222 246 msgid "We thought you'd like to know the status of <a href=\"%s\">%s</a> has changed to <strong>%s</strong>." 223 247 msgstr "" … … 228 252 229 253 #: inc/class-notifications.php:360 254 #, php-format 230 255 msgid "<strong>%s</strong> has been merged into <a href=\"%s\">%s</a>. The request status is currently <strong>%s</strong>." 231 256 msgstr "" 232 257 233 258 #: inc/class-notifications.php:389 259 #, php-format 234 260 msgid "Someone has posted a new comment on <a href=\"%s\">%s</a>:" 235 261 msgstr "" … … 244 270 245 271 #: inc/class-notifications.php:553 272 #, php-format 246 273 msgid "From: %s <%s>" 247 274 msgstr "" 248 275 249 276 #: inc/class-notifications.php:554 277 #, php-format 250 278 msgid "Reply-To: %s <%s>" 251 279 msgstr "" … … 263 291 msgstr "" 264 292 265 #: inc/class-post-types.php:40 1266 #: inc/class-post-types.php:5 31293 #: inc/class-post-types.php:405 294 #: inc/class-post-types.php:540 267 295 #: inc/class-settings.php:700 268 296 #: inc/class-settings.php:714 … … 271 299 msgstr "" 272 300 273 #: inc/class-post-types.php:40 2274 #: inc/class-post-types.php:5 23301 #: inc/class-post-types.php:406 302 #: inc/class-post-types.php:532 275 303 #: inc/class-template-methods.php:51 276 304 msgid "Status" 277 305 msgstr "" 278 306 279 #: inc/class-post-types.php:40 3280 #: inc/class-post-types.php:5 27281 #: inc/class-post-types.php:14 62307 #: inc/class-post-types.php:407 308 #: inc/class-post-types.php:536 309 #: inc/class-post-types.php:1489 282 310 #: inc/class-settings.php:272 283 311 284 312 msgstr "" 285 313 286 #: inc/class-post-types.php:47 3287 #: inc/class-post-types.php:11 45314 #: inc/class-post-types.php:477 315 #: inc/class-post-types.php:1172 288 316 msgid "Categories" 289 317 msgstr "" 290 318 291 #: inc/class-post-types.php:48 3319 #: inc/class-post-types.php:487 292 320 msgid "Information" 293 321 msgstr "" 294 322 295 #: inc/class-post-types.php:836 323 #: inc/class-post-types.php:853 324 #, php-format 296 325 msgid "%s" 297 326 msgstr "" 298 327 299 #: inc/class-post-types.php:845 328 #: inc/class-post-types.php:864 329 #, php-format 300 330 msgid "Edit %s" 301 331 msgstr "" 302 332 303 #: inc/class-post-types.php:854 333 #: inc/class-post-types.php:875 334 #, php-format 304 335 msgid "Manage %s" 305 336 msgstr "" 306 337 307 #: inc/class-post-types.php: 997308 #: inc/class-post-types.php:1 281309 #: inc/class-post-types.php:13 02310 #: inc/class-post-types.php:13 31338 #: inc/class-post-types.php:1022 339 #: inc/class-post-types.php:1308 340 #: inc/class-post-types.php:1329 341 #: inc/class-post-types.php:1358 311 342 msgid "Merge Requests" 312 343 msgstr "" 313 344 314 #: inc/class-post-types.php:1000 345 #: inc/class-post-types.php:1025 346 #, php-format 315 347 msgid "Set Status to %s" 316 348 msgstr "" 317 349 318 #: inc/class-post-types.php:1098 350 #: inc/class-post-types.php:1123 351 #, php-format 319 352 msgid "%s status updated." 320 353 msgid_plural "%s statuses udpated." … … 322 355 msgstr[1] "" 323 356 324 #: inc/class-post-types.php:11 06357 #: inc/class-post-types.php:1131 325 358 msgid "Requests successfully merged." 326 359 msgstr "" 327 360 328 #: inc/class-post-types.php:11 24361 #: inc/class-post-types.php:1151 329 362 #: inc/class-template-methods.php:407 330 363 msgid "Category" 331 364 msgstr "" 332 365 333 #: inc/class-post-types.php:11 30366 #: inc/class-post-types.php:1157 334 367 msgctxt "taxonomy general name" 335 368 msgid "Categories" 336 369 msgstr "" 337 370 338 #: inc/class-post-types.php:11 31371 #: inc/class-post-types.php:1158 339 372 msgctxt "taxonomy singular name" 340 373 msgid "Category" 341 374 msgstr "" 342 375 343 #: inc/class-post-types.php:11 32376 #: inc/class-post-types.php:1159 344 377 msgid "Search Categories" 345 378 msgstr "" 346 379 347 #: inc/class-post-types.php:11 33380 #: inc/class-post-types.php:1160 348 381 msgid "Popular Categories" 349 382 msgstr "" 350 383 351 #: inc/class-post-types.php:11 34384 #: inc/class-post-types.php:1161 352 385 msgid "All Categories" 353 386 msgstr "" 354 387 355 #: inc/class-post-types.php:11 37388 #: inc/class-post-types.php:1164 356 389 msgid "Edit Category" 357 390 msgstr "" 358 391 359 #: inc/class-post-types.php:11 38392 #: inc/class-post-types.php:1165 360 393 msgid "Update Category" 361 394 msgstr "" 362 395 363 #: inc/class-post-types.php:11 39396 #: inc/class-post-types.php:1166 364 397 msgid "Add New Category" 365 398 msgstr "" 366 399 367 #: inc/class-post-types.php:11 40400 #: inc/class-post-types.php:1167 368 401 msgid "New Category Name" 369 402 msgstr "" 370 403 371 #: inc/class-post-types.php:11 41404 #: inc/class-post-types.php:1168 372 405 msgid "Separate categories with commas" 373 406 msgstr "" 374 407 375 #: inc/class-post-types.php:11 42408 #: inc/class-post-types.php:1169 376 409 msgid "Add or remove categories" 377 410 msgstr "" 378 411 379 #: inc/class-post-types.php:11 43412 #: inc/class-post-types.php:1170 380 413 msgid "Choose from the most used categories" 381 414 msgstr "" 382 415 383 #: inc/class-post-types.php:11 44416 #: inc/class-post-types.php:1171 384 417 msgid "No categories found." 385 418 msgstr "" 386 419 387 #: inc/class-post-types.php:11 68420 #: inc/class-post-types.php:1195 388 421 #: inc/class-template-methods.php:434 389 422 msgid "Board" 390 423 msgstr "" 391 424 392 #: inc/class-post-types.php:1 174425 #: inc/class-post-types.php:1201 393 426 msgctxt "taxonomy general name" 394 427 msgid "Boards" 395 428 msgstr "" 396 429 397 #: inc/class-post-types.php:1 175430 #: inc/class-post-types.php:1202 398 431 msgctxt "taxonomy singular name" 399 432 msgid "Board" 400 433 msgstr "" 401 434 402 #: inc/class-post-types.php:1 176435 #: inc/class-post-types.php:1203 403 436 msgid "Search Boards" 404 437 msgstr "" 405 438 406 #: inc/class-post-types.php:1 177439 #: inc/class-post-types.php:1204 407 440 msgid "Popular Boards" 408 441 msgstr "" 409 442 410 #: inc/class-post-types.php:1 178443 #: inc/class-post-types.php:1205 411 444 msgid "All Boards" 412 445 msgstr "" 413 446 414 #: inc/class-post-types.php:1 181447 #: inc/class-post-types.php:1208 415 448 msgid "Edit Board" 416 449 msgstr "" 417 450 418 #: inc/class-post-types.php:1 182451 #: inc/class-post-types.php:1209 419 452 msgid "Update Board" 420 453 msgstr "" 421 454 422 #: inc/class-post-types.php:1 183455 #: inc/class-post-types.php:1210 423 456 msgid "Add New Board" 424 457 msgstr "" 425 458 426 #: inc/class-post-types.php:1 184459 #: inc/class-post-types.php:1211 427 460 msgid "New Board Name" 428 461 msgstr "" 429 462 430 #: inc/class-post-types.php:1 185463 #: inc/class-post-types.php:1212 431 464 msgid "Separate boards with commas" 432 465 msgstr "" 433 466 434 #: inc/class-post-types.php:1 186467 #: inc/class-post-types.php:1213 435 468 msgid "Add or remove boards" 436 469 msgstr "" 437 470 438 #: inc/class-post-types.php:1 187471 #: inc/class-post-types.php:1214 439 472 msgid "Choose from the most used boards" 440 473 msgstr "" 441 474 442 #: inc/class-post-types.php:1 188475 #: inc/class-post-types.php:1215 443 476 msgid "No boards found." 444 477 msgstr "" 445 478 446 #: inc/class-post-types.php:1 189479 #: inc/class-post-types.php:1216 447 480 msgid "Boards" 448 481 msgstr "" 449 482 450 #: inc/class-post-types.php:13 04483 #: inc/class-post-types.php:1331 451 484 msgid "You have specified the following requests to be merged:" 452 485 msgstr "" 453 486 454 #: inc/class-post-types.php:1313 487 #: inc/class-post-types.php:1340 488 #, php-format 455 489 msgid "%d vote" 456 490 … … 458 492 msgstr[1] "" 459 493 460 #: inc/class-post-types.php:13 34494 #: inc/class-post-types.php:1361 461 495 msgid "Note: Merged requests will be trashed. The request authors of the merged requests will be notified of the merge via email (depending on your settings)." 462 496 msgstr "" 463 497 464 #: inc/class-post-types.php:14 67498 #: inc/class-post-types.php:1494 465 499 msgid "Voters" 466 500 msgstr "" 467 501 468 #: inc/class-post-types.php:14 68502 #: inc/class-post-types.php:1495 469 503 msgid "View All" 470 504 msgstr "" 471 505 472 #: inc/class-post-types.php:1 490506 #: inc/class-post-types.php:1517 473 507 #: inc/class-template-methods.php:497 474 508 msgid "Attachments" 475 509 msgstr "" 476 510 477 #: inc/class-post-types.php:15 17511 #: inc/class-post-types.php:1546 478 512 msgid "Add attachments" 479 513 msgstr "" … … 484 518 485 519 #: inc/class-settings.php:35 486 #: simple-feature-requests.php:2 65520 #: simple-feature-requests.php:270 487 521 msgid "Simple Feature Requests" 488 522 msgstr "" … … 589 623 590 624 #: inc/class-settings.php:263 625 #, php-format 591 626 msgid "Used to sign off notification emails. You can use %site_name% and %site_url%." 592 627 msgstr "" … … 719 754 720 755 #: inc/class-settings.php:535 756 #, php-format 721 757 msgid "You need to <a href=\"%s\">set an archive page</a> for Simple Feature Requests, under the \"General\" tab." 722 758 msgstr "" … … 833 869 834 870 #: inc/class-shortcodes.php:44 871 #, php-format 835 872 msgid "Please select this page (%s) as the <strong>Archive Page</strong> in <a href=\"%s\">the settings</a>, under the \"General\" tab." 836 873 msgstr "" … … 841 878 842 879 #: inc/class-shortcodes.php:146 880 #, php-format 843 881 msgid "Sorry, the taxonomy \"%s\" does not exist." 844 882 msgstr "" … … 869 907 870 908 #: inc/class-submission.php:122 909 #, php-format 871 910 msgid "Please select a %s." 872 911 msgstr "" … … 881 920 882 921 #: inc/class-template-methods.php:42 922 #, php-format 883 923 msgid "My %s" 884 924 msgstr "" … … 893 933 894 934 #: inc/class-template-methods.php:268 935 #, php-format 895 936 msgid "%d comment" 896 937 msgid_plural "%d comments" … … 899 940 900 941 #: inc/class-template-methods.php:319 942 #, php-format 901 943 msgid "← All %s" 902 944 msgstr "" 903 945 904 946 #: inc/class-template-methods.php:460 947 #, php-format 905 948 msgid "Select a %s..." 906 949 msgstr "" … … 1013 1056 1014 1057 #: inc/functions.php:48 1058 #, php-format 1015 1059 msgid "The %s is pending approval from an admin." 1016 1060 msgstr "" 1017 1061 1018 1062 #: inc/functions.php:49 1063 #, php-format 1019 1064 msgid "The %s is now published on the site." 1020 1065 msgstr "" 1021 1066 1022 1067 #: inc/functions.php:50 1068 #, php-format 1023 1069 msgid "The %s is being considered for development." 1024 1070 msgstr "" 1025 1071 1026 1072 #: inc/functions.php:51 1073 #, php-format 1027 1074 msgid "Good news! The %s has been planned for development." 1028 1075 msgstr "" 1029 1076 1030 1077 #: inc/functions.php:52 1078 #, php-format 1031 1079 msgid "Good news! The %s has been started." 1032 1080 msgstr "" 1033 1081 1034 1082 #: inc/functions.php:53 1083 #, php-format 1035 1084 msgid "Good news! The %s has now been completed." 1036 1085 msgstr "" 1037 1086 1038 1087 #: inc/functions.php:54 1088 #, php-format 1039 1089 msgid "Sorry, the %s has been declined." 1040 1090 msgstr "" 1041 1091 1042 #: simple-feature-requests.php:3 001092 #: simple-feature-requests.php:310 1043 1093 msgid "Available in Pro" 1044 1094 msgstr "" 1045 1095 1046 1096 #: templates/archive/submission-form.php:24 1097 #, php-format 1047 1098 msgid "Your %s" 1048 1099 msgstr "" 1049 1100 1050 1101 #: templates/archive/submission-form.php:27 1102 #, php-format 1051 1103 msgid "Enter your %s..." 1052 1104 msgstr "" … … 1061 1113 1062 1114 #: templates/archive/submission-form.php:60 1115 #, php-format 1063 1116 msgid "Vote for an existing %s (%s)" 1064 1117 msgstr "" 1065 1118 1066 1119 #: templates/archive/submission-form.php:62 1120 #, php-format 1067 1121 msgid "Post a new %s" 1068 1122 msgstr "" … … 1104 1158 1105 1159 #: templates/loop/no-requests-found.php:11 1160 #, php-format 1106 1161 msgid "Sorry, no %s were found." 1107 1162 msgstr "" … … 1132 1187 1133 1188 #: templates/sidebar/login.php:36 1189 #, php-format 1134 1190 msgid "Hey, %s." 1135 1191 msgstr "" … … 1140 1196 1141 1197 #: templates/sidebar/top-requests.php:19 1198 #, php-format 1142 1199 msgid "Top %s" 1143 1200 msgstr "" 1144 1201 1145 1202 #: templates/sidebar/top-requests.php:25 1203 #, php-format 1146 1204 msgid "%d Vote" 1147 1205 -
simple-feature-requests/trunk/plugin-data.json
r3327802 r3347125 1 1 { 2 "version": "2.4. 6.2",3 "wp": "6.8. 1",2 "version": "2.4.7", 3 "wp": "6.8.2", 4 4 "wp_requires": "6.0", 5 5 "woo": "", -
simple-feature-requests/trunk/readme.txt
r3327802 r3347125 1 1 === Simple Feature Requests Free - User Feedback Board === 2 Contributors: patrickgarman, blobaugh , freemius2 Contributors: patrickgarman, blobaugh 3 3 Donate link: https://simplefeaturerequests.com/pricing/?utm_source=SFR&utm_medium=wp.org&utm_campaign=Readme 4 4 Tags: feature request, customer feedback, user feedback, roadmap, idea management 5 5 Requires at least: 6.0 6 Tested up to: 6.8. 17 Stable tag: 2.4. 6.26 Tested up to: 6.8.2 7 Stable tag: 2.4.7 8 8 Requires PHP: 7.4 9 9 License: GPLv2 or later … … 47 47 * [Custom request labels](https://docs.simplefeaturerequests.com/pro-features/custom-labels) to allow you to rename 'request' and 'requests' to whatever is most appropriate for your use-case. 48 48 * Allow Guest Voting for visitors without a user account. 49 * Integration with Advanced Custom Fields. Collect additional information from your users. Currently supported fields: Text, Email, URL, Number, Textarea, Select, Checkbox, Radio 49 50 50 51 [Upgrade to Pro](https://simplefeaturerequests.com/pricing/?utm_source=SFR&utm_medium=wp.org&utm_campaign=Readme) … … 98 99 Now if you view the page you created on your website, you should see the Feature Requests archive page. 99 100 101 == Customizing Simple Feature Requests templates in your theme == 102 103 Simple Feature Requests allows you to fully customize templates for your theme. The templates that are available for customization are available in the `templates` folder of the plugin. 104 105 To create customized templates: 106 107 * In your theme folder, create the folder `simple-feature-requests`. 108 * Copy the template from the plugin, including the directory structure. 109 * Customize the new file(s) in the theme folder. 110 111 For example: 112 113 Given a theme folder of `my-theme`, and a need to customize the ACF output: 114 115 * Create the folder in the theme, `simple-feature-requests`. 116 * From the plugin templates folder, copy `compat/acf/single.php` into the `simple-feature-requests` folder. 117 * Edit as desired. 118 119 The result will be the following in the theme folder: `my-theme/simple-feature-requests/compat/acf/single.php`. 120 100 121 == Frequently Asked Questions == 101 122 … … 130 151 131 152 == Changelog == 153 **v2.4.7 (2025-07-24)** 154 Enhancement: Attachments now open in a new tab when clicked on in the admin request view 155 Bugfix: Re-applied Fixed a PHP error some user received that fatal error on SFR\App. Props @dimdim2001 156 New Feature: Added support for Advanced Custom Fields in Pro edition. Curently supported field types: Text, Email, URL, Number, Textarea, Select, Checkbox, Radio 157 New Feature: Added ability to override plugin templates in the theme. See doc on setup in inc/class-template-hooks.php in the `include_template` method.g 158 Update: Localization updates 159 Update: Updated works with WordPress version 160 Update: Updated outdated PHP version notification to include support removal 161 132 162 **v2.4.6.2 (2025-07-14)** 133 163 Enhancement: Added admin filter by author to the request list page -
simple-feature-requests/trunk/simple-feature-requests.php
r3327802 r3347125 5 5 * Plugin URI: https://simplefeaturerequests.com 6 6 * Description: Collect and manage user feedback using your existing WordPress website. Prioritize the product features important to you and your customers. 7 * Version: 2.4. 6.27 * Version: 2.4.7 8 8 * Author: Mindsize 9 9 * Author URI: https://mindsize.com … … 15 15 // Exit if accessed directly 16 16 } 17 require_once 'vendor/autoload.php';17 require_once __DIR__ . '/vendor/autoload.php'; 18 18 class Simple_Feature_Requests { 19 19 /** … … 22 22 * @var string 23 23 */ 24 public static $version = '2.4. 6.2';24 public static $version = '2.4.7'; 25 25 26 26 /**
Note: See TracChangeset
for help on using the changeset viewer.