Changeset 3019463
- Timestamp:
- 01/09/2024 05:48:02 PM (2 years ago)
- Location:
- wired-impact-volunteer-management/trunk
- Files:
-
- 8 edited
-
README.txt (modified) (2 diffs)
-
admin/class-admin.php (modified) (1 diff)
-
cypress/e2e/gravity-forms-integration.cy.js (modified) (5 diffs)
-
cypress/support/e2e.js (modified) (1 diff)
-
includes/class-gravity-forms.php (modified) (1 diff)
-
includes/class-wi-volunteer-management.php (modified) (3 diffs)
-
languages/wired-impact-volunteer-management.pot (modified) (10 diffs)
-
wivm.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
wired-impact-volunteer-management/trunk/README.txt
r3011449 r3019463 5 5 Tested up to: 6.4 6 6 Requires PHP: 5.2.4 7 Stable tag: 2. 27 Stable tag: 2.3 8 8 License: GPLv2 or later 9 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html … … 120 120 == Changelog == 121 121 122 = 2.3 = 123 * Added custom Gravity Forms notification merge tags to allow volunteer opportunity details to be included dynamically. 124 * For clarity, hid the RSVP and volunteer email admin meta boxes if no volunteer RSVPs will be stored for an opportunity. 125 122 126 = 2.2 = 123 127 * Introduced settings to enable or disable certain email notifications to volunteers, admins and volunteer opportunity contacts. -
wired-impact-volunteer-management/trunk/admin/class-admin.php
r3011449 r3019463 348 348 /** 349 349 * Add meta boxes for volunteer opportunities. 350 */ 351 public function add_meta_boxes(){ 352 //Opportunity details such as location and time 350 * 351 * The RSVP and email meta boxes are only shown if the opportunity is displaying 352 * the built-in signup form or already has RSVPs. This avoids showing meta boxes 353 * focused on volunteers when no volunteers will be stored for the opportunity. 354 * 355 * @param string $post_type The post type of the post being edited. 356 * @param object $post The post object for the volunteer opportunity. 357 */ 358 public function add_meta_boxes( $post_type, $post ) { 359 360 if ( $post_type !== 'volunteer_opp' ) { 361 362 return; 363 } 364 365 // Opportunity details such as location and time. 353 366 add_meta_box( 354 'volunteer-opportunity-details', // Unique ID355 __( 'Volunteer Opportunity Details', 'wired-impact-volunteer-management' ), // Box title356 array( $this, 'display_opportunity_details_meta_box' ), // Content callback357 'volunteer_opp', // Post type358 'normal' // Location367 'volunteer-opportunity-details', 368 __( 'Volunteer Opportunity Details', 'wired-impact-volunteer-management' ), 369 array( $this, 'display_opportunity_details_meta_box' ), 370 'volunteer_opp', 371 'normal' 359 372 ); 360 373 361 //Opportunity RSVP details such as who signed up 374 // Show the volunteer RSVP and email meta boxes only if the opportunity is showing a signup form or already has RSVPs. 375 $volunteer_opp = new WI_Volunteer_Management_Opportunity( $post->ID ); 376 $form_type = $volunteer_opp->opp_meta['form_type']; 377 $num_rsvps = (int) $volunteer_opp->get_number_rsvps(); 378 379 $show_volunteer_opp_meta_boxes = ( $form_type !== 'no_form' || $num_rsvps > 0 ) ? true : false; 380 $show_volunteer_opp_meta_boxes = apply_filters( 'wivm_show_volunteer_opp_meta_boxes', $show_volunteer_opp_meta_boxes, $volunteer_opp, $num_rsvps ); 381 382 if ( $show_volunteer_opp_meta_boxes === false ) { 383 384 return; 385 } 386 387 // Opportunity RSVP details such as who signed up. 362 388 add_meta_box( 363 'volunteer-opportunity-rsvps', // Unique ID364 __( 'Volunteer Opportunity RSVPs', 'wired-impact-volunteer-management' ), // Box title365 array( $this, 'display_opportunity_rsvps_meta_box' ), // Content callback366 'volunteer_opp', // Post type367 'normal' // Location389 'volunteer-opportunity-rsvps', 390 __( 'Volunteer Opportunity RSVPs', 'wired-impact-volunteer-management' ), 391 array( $this, 'display_opportunity_rsvps_meta_box' ), 392 'volunteer_opp', 393 'normal' 368 394 ); 369 395 370 // Volunteer custom email form396 // Volunteer custom email form. 371 397 add_meta_box( 372 'volunteer-opportunity-email-form', // Unique ID373 __( 'Email Your Volunteers', 'wired-impact-volunteer-management' ), // Box title374 array( $this, 'display_opportunity_email_form_meta_box' ), // Content callback375 'volunteer_opp', // Post type376 'normal' // Location398 'volunteer-opportunity-email-form', 399 __( 'Email Your Volunteers', 'wired-impact-volunteer-management' ), 400 array( $this, 'display_opportunity_email_form_meta_box' ), 401 'volunteer_opp', 402 'normal' 377 403 ); 378 404 379 // List of sent custom volunteer emails405 // List of sent custom volunteer emails. 380 406 add_meta_box( 381 'volunteer-opportunity-email-list', // Unique ID382 __( 'Emails Sent to Volunteers', 'wired-impact-volunteer-management' ), // Box title383 array( $this, 'display_opportunity_email_list_meta_box' ), // Content callback384 'volunteer_opp', // Post type385 'normal' // Location407 'volunteer-opportunity-email-list', 408 __( 'Emails Sent to Volunteers', 'wired-impact-volunteer-management' ), 409 array( $this, 'display_opportunity_email_list_meta_box' ), 410 'volunteer_opp', 411 'normal' 386 412 ); 387 413 } -
wired-impact-volunteer-management/trunk/cypress/e2e/gravity-forms-integration.cy.js
r3008933 r3019463 6 6 * - The Gravity Forms plugin is installed. 7 7 * - The Gravity Forms CLI plugin is installed and activated. 8 * - MailCatcher is used to catch emails sent by the plugin and is accessible via the web. 8 9 */ 9 10 describe('Gravity Forms Integration', () => { … … 15 16 cy.trashAllGravityFormsForms(); 16 17 cy.createVolunteerSignupForm(); 18 cy.deleteAllMailCatcherEmails(); 17 19 }); 18 20 … … 48 50 }); 49 51 50 it('Passes data from Gravity Forms to the volunteer management system and shows necessary errors', function() {52 it('Passes data from Gravity Forms to the volunteer management system, replaces custom merge tags and shows necessary errors', function() { 51 53 52 54 // A Volunteer Management feed can be saved … … 61 63 cy.contains('button','Save Settings').click(); 62 64 63 // Select to display the Gravity Forms form 65 // Add custom merge tags to the admin notification 66 cy.visit('/wp-admin/admin.php?page=gf_edit_forms&view=settings&subview=notification&id=' + this.volunteerSignupFormID); 67 cy.contains('a', 'Admin Notification').click(); 68 cy.get('.wp-editor-wrap .gform-dropdown--merge-tags > button').click(); 69 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Name').click({ force: true }); 70 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Date & Time').click({ force: true }); 71 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Location').click({ force: true }); 72 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Contact Name').click({ force: true }); 73 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Contact Phone').click({ force: true }); 74 cy.contains('.wp-editor-wrap button', 'Volunteer Opportunity Contact Email').click({ force: true }); 75 cy.contains('button','Update Notification').click(); 76 77 // Fill in some opportunity details and select to display the Gravity Forms form 64 78 cy.visit('/wp-admin/post.php?post=' + this.volunteerOppID + '&action=edit'); 79 cy.get('input#contact_name').type('Jamie Taylor'); 80 cy.get('input#contact_phone').type('(123) 456-7890'); 81 cy.get('input#contact_email').type('jamie@volunteering.org'); 82 cy.get('input#location').type('Busch Stadium'); 83 cy.get('input#street').type('700 Clark Ave'); 84 cy.get('input#city').type('St. Louis'); 85 cy.get('input#state').type('MO'); 86 cy.get('input#zip').type('63102'); 87 cy.get('input#flexible_frequency').type('Every Wednesday'); 65 88 cy.contains('tr', 'Form Type').find('select').select('gravity_forms'); 66 89 cy.contains('tr', 'Select a Form').find('select').select(this.volunteerSignupFormID); … … 89 112 cy.contains('a', 'Abraham').click(); 90 113 cy.contains('.gforms_note_wired-impact-volunteer-management', 'The volunteer successfully signed up for this opportunity.').should('exist'); 114 115 // The admin notification custom merge tags have been replaced correctly 116 cy.request('GET', 'http://127.0.0.1:1080/messages/3.source').then((response) => { 117 expect(response.status).to.eq(200); 118 expect(response.body).to.include('Subject: New submission from Volunteer Signup'); 119 expect(response.body).to.include('Clean up Trash'); 120 expect(response.body).to.include('Every Wednesday'); 121 expect(response.body).to.include('Busch Stadium, 700 Clark Ave, St. Louis, MO 63102'); 122 expect(response.body).to.include('Jamie Taylor'); 123 expect(response.body).to.include('(123) 456-7890'); 124 expect(response.body).to.include('jamie@volunteering.org'); 125 }); 91 126 92 127 // An error shows in the Gravity Forms entry when the same volunteer signs up again -
wired-impact-volunteer-management/trunk/cypress/support/e2e.js
r3004340 r3019463 16 16 // Import commands.js using ES2015 syntax: 17 17 import './commands' 18 19 // Ignore ResizeObserver errors since they occur when using Gravity Forms merge tag dropdowns 20 Cypress.on('uncaught:exception', (err) => { 21 22 if ((err.message.includes("ResizeObserver loop limit exceeded"))) { 23 return false; 24 } 25 }); -
wired-impact-volunteer-management/trunk/includes/class-gravity-forms.php
r3008933 r3019463 238 238 } 239 239 } 240 241 /** 242 * Add custom volunteer opportunity merge tags to the Gravity Forms 243 * merge tag dropdown. 244 * 245 * Our custom volunteer opportunity merge tags are only shown if a volunteer 246 * opportunity form feed is active. 247 * 248 * @param array $merge_tags The existing custom merge tags. 249 * @param int $form_id The ID of the current form. 250 * @param array $fields An array of field objects. 251 * @param string|int $element_id The ID of the input field. 252 * @return array The updated custom merge tags with the volunteer opportunity merge tags added. 253 */ 254 public function add_custom_merge_tags( $merge_tags, $form_id, $fields, $element_id ) { 255 256 $form_feeds = GFAPI::get_feeds( null, $form_id, 'wired-impact-volunteer-management' ); 257 258 if ( is_wp_error( $form_feeds ) ) { 259 260 return $merge_tags; 261 } 262 263 array_push( 264 $merge_tags, 265 array( 266 'label' => __( 'Volunteer Opportunity Name', 'wired-impact-volunteer-management' ), 267 'tag' => '{volunteer_opportunity_name}', 268 ), 269 array( 270 'label' => __( 'Volunteer Opportunity Date & Time', 'wired-impact-volunteer-management' ), 271 'tag' => '{volunteer_opportunity_date_time}', 272 ), 273 array( 274 'label' => __( 'Volunteer Opportunity Location', 'wired-impact-volunteer-management' ), 275 'tag' => '{volunteer_opportunity_location}', 276 ), 277 array( 278 'label' => __( 'Volunteer Opportunity Contact Name', 'wired-impact-volunteer-management' ), 279 'tag' => '{volunteer_opportunity_contact_name}', 280 ), 281 array( 282 'label' => __( 'Volunteer Opportunity Contact Phone Number', 'wired-impact-volunteer-management' ), 283 'tag' => '{volunteer_opportunity_contact_phone}', 284 ), 285 array( 286 'label' => __( 'Volunteer Opportunity Contact Email', 'wired-impact-volunteer-management' ), 287 'tag' => '{volunteer_opportunity_contact_email}', 288 ) 289 ); 290 291 return $merge_tags; 292 } 293 294 /** 295 * Replace the custom volunteer opportunity merge tags with the appropriate text. 296 * 297 * For example, this runs when sending a Gravity Forms notification email. 298 * The merge tags wrapped in "{}" are replaced with the appropriate text. 299 * 300 * @param string $text The current text in which merge tags are being replaced. 301 * @param object $form The current form. 302 * @param object $entry The current form entry. 303 * @param bool $url_encode Whether to encode any URLs found in the replaced value. 304 * @param bool $esc_html Whether to encode HTML found in the replaced value. 305 * @param bool $nl2br Whether to convert newlines to break tags. 306 * @param string $format Determines how the value should be formatted. Default is html. 307 * @return string The updated text with the custom merge tags replaced. 308 */ 309 public function replace_custom_merge_tags( $text, $form, $entry, $url_encode, $esc_html, $nl2br, $format ) { 310 311 if ( $form === false ) { 312 313 return $text; 314 } 315 316 $form_feeds = GFAPI::get_feeds( null, $form['id'], 'wired-impact-volunteer-management' ); 317 318 if ( is_wp_error( $form_feeds ) ) { 319 320 return $text; 321 } 322 323 add_filter( 'wivm_search_and_replace_text', array( $this, 'add_email_search_replace_text' ), 10, 2 ); 324 325 $volunteer_opp_id = get_the_ID(); 326 $volunteer_opp = new WI_Volunteer_Management_Opportunity( $volunteer_opp_id ); 327 $volunteer_email = new WI_Volunteer_Management_Email( $volunteer_opp ); 328 $text = $volunteer_email->replace_variables( $text ); 329 330 remove_filter( 'wivm_search_and_replace_text', array( $this, 'add_email_search_replace_text' ), 10, 2 ); 331 332 return $text; 333 } 334 335 /** 336 * Add our custom merge tags to the list of variables when doing a search and replace. 337 * 338 * Using the "wivm_search_and_replace_text" hook we piggyback onto the existing email 339 * variables, copying the values from those that already exist. That way if those change 340 * these don't need to be updated manually. 341 * 342 * @param array $search_and_replace_text The existing variables with the text to replace them with. 343 * @param object $user The user object for the volunteer. 344 * @return array The updated variables with the text to replace them with. 345 */ 346 public function add_email_search_replace_text( $search_and_replace_text, $user ) { 347 348 $search_and_replace_text['{volunteer_opportunity_name}'] = $search_and_replace_text['{opportunity_name}']; 349 $search_and_replace_text['{volunteer_opportunity_date_time}'] = $search_and_replace_text['{opportunity_date_time}']; 350 $search_and_replace_text['{volunteer_opportunity_location}'] = $search_and_replace_text['{opportunity_location}']; 351 $search_and_replace_text['{volunteer_opportunity_contact_name}'] = $search_and_replace_text['{contact_name}']; 352 $search_and_replace_text['{volunteer_opportunity_contact_phone}'] = $search_and_replace_text['{contact_phone}']; 353 $search_and_replace_text['{volunteer_opportunity_contact_email}'] = $search_and_replace_text['{contact_email}']; 354 355 return $search_and_replace_text; 356 } 357 358 /** 359 * Hide the volunteer opportunity RSVP and email meta boxes if the 360 * opportunity uses Gravity Forms and there are no active form feeds. 361 * 362 * This avoids showing meta boxes focused on volunteers when no volunteers 363 * will be stored in the plugin for the opportunity. 364 * 365 * @param bool $show_volunteer_opp_meta_boxes Whether to show the meta boxes. 366 * @param object $volunteer_opp The volunteer opportunity object. 367 * @param int $num_rsvps The number of existing RSVPs for the volunteer opportunity. 368 * @return bool Whether to show the meta boxes. 369 */ 370 public function show_hide_volunteer_opp_meta_boxes( $show_volunteer_opp_meta_boxes, $volunteer_opp, $num_rsvps ) { 371 372 // If the form type isn't Gravity Forms or RSVPs already exist, don't alter whether the meta boxes are shown. 373 if ( $volunteer_opp->opp_meta['form_type'] !== self::FORM_TYPE_SETTING_GF_VALUE || $num_rsvps > 0 ) { 374 375 return $show_volunteer_opp_meta_boxes; 376 } 377 378 // If there's no active volunteer management form feed for this form, hide the meta boxes. If there is, show them. 379 $form_feeds = GFAPI::get_feeds( null, $volunteer_opp->opp_meta['form_id'], 'wired-impact-volunteer-management' ); 380 $show_volunteer_opp_meta_boxes = ( is_wp_error( $form_feeds ) ) ? false : true; 381 382 return $show_volunteer_opp_meta_boxes; 383 } 240 384 } -
wired-impact-volunteer-management/trunk/includes/class-wi-volunteer-management.php
r3011449 r3019463 69 69 70 70 $this->plugin_name = 'wired-impact-volunteer-management'; 71 $this->version = '2. 2';71 $this->version = '2.3'; 72 72 73 73 $this->load_dependencies(); … … 209 209 $this->loader->add_action( 'admin_init', $plugin_admin, 'register_settings' ); 210 210 $this->loader->add_action( 'edit_form_after_editor', $plugin_admin, 'show_opp_editor_description' ); 211 $this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'add_meta_boxes' );211 $this->loader->add_action( 'add_meta_boxes', $plugin_admin, 'add_meta_boxes', 10, 2 ); 212 212 $this->loader->add_action( 'save_post', $plugin_admin, 'save_volunteer_opp_meta', 10, 2 ); 213 213 $this->loader->add_action( 'show_user_profile', $plugin_admin, 'show_extra_profile_fields' ); … … 269 269 $this->loader->add_action( 'wp_enqueue_scripts', $gravity_forms, 'enqueue_scripts' ); 270 270 $this->loader->add_action( 'gform_loaded', 'WI_Volunteer_Management_Gravity_Forms_Feed_AddOn_Bootstrap', 'load', 5 ); 271 $this->loader->add_filter( 'gform_custom_merge_tags', $gravity_forms, 'add_custom_merge_tags', 10, 4 ); 272 $this->loader->add_filter( 'gform_replace_merge_tags', $gravity_forms, 'replace_custom_merge_tags', 10, 7 ); 273 $this->loader->add_filter( 'wivm_show_volunteer_opp_meta_boxes', $gravity_forms, 'show_hide_volunteer_opp_meta_boxes', 10, 3 ); 271 274 } 272 275 } -
wired-impact-volunteer-management/trunk/languages/wired-impact-volunteer-management.pot
r3011449 r3019463 1 # Copyright (C) 202 3Wired Impact1 # Copyright (C) 2024 Wired Impact 2 2 # This file is distributed under the GPL-2.0+. 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Wired Impact Volunteer Management 2. 2\n"5 "Project-Id-Version: Wired Impact Volunteer Management 2.3\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wired-impact-volunteer-management\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: 202 3-12-18T14:19:49+00:00\n"12 "POT-Creation-Date: 2024-01-09T17:32:45+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.8.1\n" … … 66 66 67 67 #: admin/class-admin.php:197 68 #: admin/class-admin.php:68969 #: admin/class-admin.php:69970 68 #: admin/class-admin.php:715 69 #: admin/class-admin.php:725 70 #: admin/class-admin.php:741 71 71 #: admin/pages/volunteer.php:92 72 72 #: admin/pages/volunteer.php:111 … … 127 127 msgstr "" 128 128 129 #: admin/class-admin.php:3 55129 #: admin/class-admin.php:368 130 130 msgid "Volunteer Opportunity Details" 131 131 msgstr "" 132 132 133 #: admin/class-admin.php:3 64133 #: admin/class-admin.php:390 134 134 msgid "Volunteer Opportunity RSVPs" 135 135 msgstr "" 136 136 137 #: admin/class-admin.php:3 73137 #: admin/class-admin.php:399 138 138 msgid "Email Your Volunteers" 139 139 msgstr "" 140 140 141 #: admin/class-admin.php: 382141 #: admin/class-admin.php:408 142 142 msgid "Emails Sent to Volunteers" 143 143 msgstr "" 144 144 145 #: admin/class-admin.php:4 06145 #: admin/class-admin.php:432 146 146 msgid "Contact Information" 147 147 msgstr "" 148 148 149 #: admin/class-admin.php:410 150 #: admin/class-admin.php:686 151 #: admin/class-admin.php:696 149 #: admin/class-admin.php:436 152 150 #: admin/class-admin.php:712 151 #: admin/class-admin.php:722 152 #: admin/class-admin.php:738 153 153 #: includes/class-gravity-forms-feed-addon.php:106 154 154 #: includes/class-gravity-forms-feed-addon.php:110 … … 158 158 msgstr "" 159 159 160 #: admin/class-admin.php:4 15161 #: admin/class-admin.php: 877160 #: admin/class-admin.php:441 161 #: admin/class-admin.php:903 162 162 #: includes/class-gravity-forms-feed-addon.php:137 163 163 #: includes/class-wp-volunteer-list-table.php:163 … … 165 165 msgstr "" 166 166 167 #: admin/class-admin.php:4 20167 #: admin/class-admin.php:446 168 168 #: admin/pages/help-settings.php:33 169 169 #: includes/class-gravity-forms-feed-addon.php:144 … … 171 171 msgstr "" 172 172 173 #: admin/class-admin.php:4 26173 #: admin/class-admin.php:452 174 174 msgid "Location Information" 175 175 msgstr "" 176 176 177 #: admin/class-admin.php:4 30177 #: admin/class-admin.php:456 178 178 msgid "Location Name" 179 179 msgstr "" 180 180 181 #: admin/class-admin.php:4 35181 #: admin/class-admin.php:461 182 182 msgid "Street Address" 183 183 msgstr "" 184 184 185 #: admin/class-admin.php:4 40185 #: admin/class-admin.php:466 186 186 msgid "City" 187 187 msgstr "" 188 188 189 #: admin/class-admin.php:4 45189 #: admin/class-admin.php:471 190 190 msgid "State" 191 191 msgstr "" 192 192 193 #: admin/class-admin.php:4 50193 #: admin/class-admin.php:476 194 194 msgid "Zip" 195 195 msgstr "" 196 196 197 #: admin/class-admin.php:4 56197 #: admin/class-admin.php:482 198 198 msgid "Date and Time" 199 199 msgstr "" 200 200 201 #: admin/class-admin.php:4 60201 #: admin/class-admin.php:486 202 202 msgid "One-Time Opportunity?" 203 203 msgstr "" 204 204 205 #: admin/class-admin.php:4 63205 #: admin/class-admin.php:489 206 206 msgid "This is a one-time opportunity at a fixed date and time." 207 207 msgstr "" 208 208 209 #: admin/class-admin.php:4 69209 #: admin/class-admin.php:495 210 210 msgid "Start Date & Time" 211 211 msgstr "" 212 212 213 #: admin/class-admin.php: 477213 #: admin/class-admin.php:503 214 214 msgid "End Date & Time" 215 215 msgstr "" 216 216 217 #: admin/class-admin.php: 481217 #: admin/class-admin.php:507 218 218 msgid "Whoops, it looks like you set your event to end before it started." 219 219 msgstr "" 220 220 221 #: admin/class-admin.php: 486221 #: admin/class-admin.php:512 222 222 msgid "When Will This Event Happen?" 223 223 msgstr "" 224 224 225 #: admin/class-admin.php: 487225 #: admin/class-admin.php:513 226 226 msgid "On your own time, All summer, etc." 227 227 msgstr "" 228 228 229 #: admin/class-admin.php: 491229 #: admin/class-admin.php:517 230 230 msgid "Volunteer Limit" 231 231 msgstr "" 232 232 233 #: admin/class-admin.php: 495233 #: admin/class-admin.php:521 234 234 msgid "Is There a Volunteer Limit?" 235 235 msgstr "" 236 236 237 #: admin/class-admin.php: 498237 #: admin/class-admin.php:524 238 238 msgid "Only a fixed number of people can participate in this volunteer opportunity." 239 239 msgstr "" 240 240 241 #: admin/class-admin.php:5 04241 #: admin/class-admin.php:530 242 242 msgid "Max Number of Volunteers" 243 243 msgstr "" 244 244 245 #: admin/class-admin.php:5 09245 #: admin/class-admin.php:535 246 246 msgid "Volunteer Signup Form" 247 247 msgstr "" 248 248 249 #: admin/class-admin.php:5 13249 #: admin/class-admin.php:539 250 250 msgid "The built-in signup form includes name, email and phone number fields. It can't be modified." 251 251 msgstr "" 252 252 253 #: admin/class-admin.php:5 17253 #: admin/class-admin.php:543 254 254 msgid "Form Type" 255 255 msgstr "" 256 256 257 #: admin/class-admin.php:5 45257 #: admin/class-admin.php:571 258 258 #: admin/pages/help-settings.php:90 259 259 msgid "No Form" 260 260 msgstr "" 261 261 262 #: admin/class-admin.php:5 46262 #: admin/class-admin.php:572 263 263 #: admin/pages/help-settings.php:91 264 264 msgid "Built-In Signup Form" 265 265 msgstr "" 266 266 267 #: admin/class-admin.php: 679267 #: admin/class-admin.php:705 268 268 msgid "Number of Open Spots: %s" 269 269 msgstr "" 270 270 271 #: admin/class-admin.php: 680271 #: admin/class-admin.php:706 272 272 msgid "Number RSVPed: %d" 273 273 msgstr "" 274 274 275 #: admin/class-admin.php:687276 #: admin/class-admin.php:697277 275 #: admin/class-admin.php:713 276 #: admin/class-admin.php:723 277 #: admin/class-admin.php:739 278 278 #: includes/class-wp-volunteer-list-table.php:162 279 279 msgid "E-mail" 280 280 msgstr "" 281 281 282 #: admin/class-admin.php:688283 #: admin/class-admin.php:698284 282 #: admin/class-admin.php:714 283 #: admin/class-admin.php:724 284 #: admin/class-admin.php:740 285 285 msgid "Phone" 286 286 msgstr "" 287 287 288 #: admin/class-admin.php:7 05288 #: admin/class-admin.php:731 289 289 msgid "No one has signed up for this opportunity yet." 290 290 msgstr "" 291 291 292 #: admin/class-admin.php:7 34292 #: admin/class-admin.php:760 293 293 msgid "No one has signed up for this opportunity, so you can't send any emails yet." 294 294 msgstr "" 295 295 296 #: admin/class-admin.php:7 50296 #: admin/class-admin.php:776 297 297 msgid "Send a custom email to all volunteers who signed up for this opportunity. This email is sent to the admin and the contact for this opportunity with the volunteers BCC'ed. That way you know the email was sent successfully. You can use these variables to personalize the email when it's sent: {opportunity_name}, {opportunity_date_time}, {opportunity_location}, {contact_name}, {contact_phone}, {contact_email}" 298 298 msgstr "" 299 299 300 #: admin/class-admin.php:7 52300 #: admin/class-admin.php:778 301 301 msgid "Email Subject" 302 302 msgstr "" 303 303 304 #: admin/class-admin.php:7 59304 #: admin/class-admin.php:785 305 305 msgid "Send Email" 306 306 msgstr "" 307 307 308 #: admin/class-admin.php: 787309 #: admin/class-admin.php:11 17310 #: admin/class-admin.php:12 51308 #: admin/class-admin.php:813 309 #: admin/class-admin.php:1143 310 #: admin/class-admin.php:1277 311 311 #: frontend/class-public.php:478 312 312 #: frontend/class-public.php:485 … … 314 314 msgstr "" 315 315 316 #: admin/class-admin.php:8 22316 #: admin/class-admin.php:848 317 317 msgctxt "email count" 318 318 msgid "<p>1 email has been sent.</p>" … … 321 321 msgstr[1] "" 322 322 323 #: admin/class-admin.php:8 29324 #: admin/class-admin.php:9 24323 #: admin/class-admin.php:855 324 #: admin/class-admin.php:950 325 325 msgid "When" 326 326 msgstr "" 327 327 328 #: admin/class-admin.php:8 30328 #: admin/class-admin.php:856 329 329 msgid "Sender" 330 330 msgstr "" 331 331 332 #: admin/class-admin.php:8 39332 #: admin/class-admin.php:865 333 333 msgid "Automated Reminder Email" 334 334 msgstr "" 335 335 336 336 #. translators: date and time format for mysql2date() function, see http://php.net/manual/en/function.date.php 337 #: admin/class-admin.php:8 46337 #: admin/class-admin.php:872 338 338 msgid "D, M j, Y \\@ g:i a" 339 339 msgstr "" 340 340 341 #: admin/class-admin.php:8 63341 #: admin/class-admin.php:889 342 342 msgid "No emails have been sent yet. We'll list them here when we send automated reminders and when you send custom emails to volunteers." 343 343 msgstr "" 344 344 345 #: admin/class-admin.php: 880345 #: admin/class-admin.php:906 346 346 msgid "Please enter your phone number in the format (000) 000-0000." 347 347 msgstr "" 348 348 349 #: admin/class-admin.php: 884349 #: admin/class-admin.php:910 350 350 #: admin/pages/volunteer.php:39 351 351 msgid "Notes" 352 352 msgstr "" 353 353 354 #: admin/class-admin.php: 887354 #: admin/class-admin.php:913 355 355 msgid "Please enter any notes about this user." 356 356 msgstr "" 357 357 358 #: admin/class-admin.php:9 22358 #: admin/class-admin.php:948 359 359 msgid "Title" 360 360 msgstr "" 361 361 362 #: admin/class-admin.php:9 23362 #: admin/class-admin.php:949 363 363 msgid "Location" 364 364 msgstr "" 365 365 366 #: admin/class-admin.php:9 25366 #: admin/class-admin.php:951 367 367 msgid "Number of RSVPs" 368 368 msgstr "" 369 369 370 #: admin/class-admin.php:9 26370 #: admin/class-admin.php:952 371 371 msgid "Number of Open Spots" 372 372 msgstr "" 373 373 374 #: admin/class-admin.php:10 52374 #: admin/class-admin.php:1078 375 375 msgid "All Opportunities" 376 376 msgstr "" 377 377 378 #: admin/class-admin.php:10 57378 #: admin/class-admin.php:1083 379 379 msgid "Upcoming One-time Opportunities" 380 380 msgstr "" 381 381 382 #: admin/class-admin.php:10 62382 #: admin/class-admin.php:1088 383 383 msgid "Past One-time Opportunities" 384 384 msgstr "" 385 385 386 #: admin/class-admin.php:10 67386 #: admin/class-admin.php:1093 387 387 msgid "Flexible Opportunities" 388 388 msgstr "" … … 834 834 #: templates/opp-single-form.php:55 835 835 msgid "We're sorry, but we're no longer accepting new volunteers for this opportunity." 836 msgstr "" 837 838 #: includes/class-gravity-forms.php:266 839 msgid "Volunteer Opportunity Name" 840 msgstr "" 841 842 #: includes/class-gravity-forms.php:270 843 msgid "Volunteer Opportunity Date & Time" 844 msgstr "" 845 846 #: includes/class-gravity-forms.php:274 847 msgid "Volunteer Opportunity Location" 848 msgstr "" 849 850 #: includes/class-gravity-forms.php:278 851 msgid "Volunteer Opportunity Contact Name" 852 msgstr "" 853 854 #: includes/class-gravity-forms.php:282 855 msgid "Volunteer Opportunity Contact Phone Number" 856 msgstr "" 857 858 #: includes/class-gravity-forms.php:286 859 msgid "Volunteer Opportunity Contact Email" 836 860 msgstr "" 837 861 -
wired-impact-volunteer-management/trunk/wivm.php
r3011449 r3019463 17 17 * Plugin URI: https://wiredimpact.com/wordpress-plugins-for-nonprofits/volunteer-management/ 18 18 * Description: A simple, free way to keep track of your nonprofit’s volunteers and opportunities. 19 * Version: 2. 219 * Version: 2.3 20 20 * Author: Wired Impact 21 21 * Author URI: https://wiredimpact.com
Note: See TracChangeset
for help on using the changeset viewer.