public static function lead_detail_page() { global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta(absint($_GET['id'])); $form_id = absint($form['id']); $form = apply_filters('gform_admin_pre_render_' . $form_id, apply_filters('gform_admin_pre_render', $form)); $lead_id = absint(rgget('lid')); $filter = rgget('filter'); $status = in_array($filter, array('trash', 'spam')) ? $filter : 'active'; $position = rgget('pos') ? rgget('pos') : 0; $sort_direction = rgget('dir') ? rgget('dir') : 'DESC'; $sort_field = empty($_GET['sort']) ? 0 : $_GET['sort']; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta['type'] == 'number'; $star = $filter == 'star' ? 1 : null; $read = $filter == 'unread' ? 0 : null; $search_criteria['status'] = $status; if ($star) { $search_criteria['field_filters'][] = array('key' => 'is_starred', 'value' => (bool) $star); } if (!is_null($read)) { $search_criteria['field_filters'][] = array('key' => 'is_read', 'value' => (bool) $read); } $search_field_id = rgget('field_id'); if (isset($_GET['field_id']) && $_GET['field_id'] !== '') { $key = $search_field_id; $val = rgget('s'); $strpos_row_key = strpos($search_field_id, '|'); if ($strpos_row_key !== false) { //multi-row likert $key_array = explode('|', $search_field_id); $key = $key_array[0]; $val = $key_array[1] . ':' . $val; } $search_criteria['field_filters'][] = array('key' => $key, 'operator' => rgempty('operator', $_GET) ? 'is' : rgget('operator'), 'value' => $val); $type = rgget('type'); if (empty($type)) { if (rgget('field_id') == '0') { $search_criteria['type'] = 'global'; } } } $paging = array('offset' => $position, 'page_size' => 1); if (!empty($sort_field)) { $sorting = array('key' => $_GET['sort'], 'direction' => $sort_direction, 'is_numeric' => $is_numeric); } else { $sorting = array(); } $total_count = 0; $leads = GFAPI::get_entries($form['id'], $search_criteria, $sorting, $paging, $total_count); $prev_pos = !rgblank($position) && $position > 0 ? $position - 1 : false; $next_pos = !rgblank($position) && $position < $total_count - 1 ? $position + 1 : false; // unread filter requires special handling for pagination since entries are filter out of the query as they are read if ($filter == 'unread') { $next_pos = $position; if ($next_pos + 1 == $total_count) { $next_pos = false; } } if (!$lead_id) { $lead = !empty($leads) ? $leads[0] : false; } else { $lead = GFAPI::get_entry($lead_id); } if (!$lead) { esc_html_e("Oops! We couldn't find your entry. Please try again", 'gravityforms'); return; } RGFormsModel::update_lead_property($lead['id'], 'is_read', 1); switch (RGForms::post('action')) { case 'update': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); //Loading files that have been uploaded to temp folder $files = GFCommon::json_decode(stripslashes(RGForms::post('gform_uploaded_files'))); if (!is_array($files)) { $files = array(); } GFFormsModel::$uploaded_files[$form_id] = $files; GFFormsModel::save_lead($form, $lead); do_action('gform_after_update_entry', $form, $lead['id']); do_action("gform_after_update_entry_{$form['id']}", $form, $lead['id']); $lead = RGFormsModel::get_lead($lead['id']); $lead = GFFormsModel::set_entry_meta($lead, $form); break; case 'add_note': check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead['id'], $current_user->ID, $user_data->display_name, stripslashes($_POST['new_note'])); //emailing notes if configured if (rgpost('gentry_email_notes_to')) { GFCommon::log_debug('GFEntryDetail::lead_detail_page(): Preparing to email entry notes.'); $email_to = $_POST['gentry_email_notes_to']; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST['gentry_email_subject']); $body = stripslashes($_POST['new_note']); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; GFCommon::log_debug("GFEntryDetail::lead_detail_page(): Emailing notes - TO: {$email_to} SUBJECT: {$email_subject} BODY: {$body} HEADERS: {$headers}"); $is_success = wp_mail($email_to, $email_subject, $body, $headers); $result = is_wp_error($is_success) ? $is_success->get_error_message() : $is_success; GFCommon::log_debug("GFEntryDetail::lead_detail_page(): Result from wp_mail(): {$result}"); if (!is_wp_error($is_success) && $is_success) { GFCommon::log_debug('GFEntryDetail::lead_detail_page(): Mail was passed from WordPress to the mail server.'); } else { GFCommon::log_error('GFEntryDetail::lead_detail_page(): The mail message was passed off to WordPress for processing, but WordPress was unable to send the message.'); } if (has_filter('phpmailer_init')) { GFCommon::log_debug(__METHOD__ . '(): The WordPress phpmailer_init hook has been detected, usually used by SMTP plugins, it can impact mail delivery.'); } do_action('gform_post_send_entry_note', $result, $email_to, $email_from, $email_subject, $body, $form, $lead); } break; case 'add_quick_note': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead['id'], $current_user->ID, $user_data->display_name, stripslashes($_POST['quick_note'])); break; case 'bulk': check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST['bulk_action'] == 'delete') { if (!GFCommon::current_user_can_any('gravityforms_edit_entry_notes')) { die(esc_html__("You don't have adequate permission to delete notes.", 'gravityforms')); } RGFormsModel::delete_notes($_POST['note']); } break; case 'trash': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead['id'], 'status', 'trash'); $lead = RGFormsModel::get_lead($lead['id']); break; case 'restore': case 'unspam': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead['id'], 'status', 'active'); $lead = RGFormsModel::get_lead($lead['id']); break; case 'spam': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead['id'], 'status', 'spam'); $lead = RGFormsModel::get_lead($lead['id']); break; case 'delete': check_admin_referer('gforms_save_entry', 'gforms_save_entry'); if (!GFCommon::current_user_can_any('gravityforms_delete_entries')) { die(esc_html__("You don't have adequate permission to delete entries.", 'gravityforms')); } RGFormsModel::delete_lead($lead['id']); ?> <script type="text/javascript"> document.location.href = '<?php echo 'admin.php?page=gf_entries&view=entries&id=' . absint($form['id']); ?> '; </script> <?php break; } $mode = empty($_POST['screen_mode']) ? 'view' : $_POST['screen_mode']; $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG || isset($_GET['gform_debug']) ? '' : '.min'; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin<?php echo $min; ?> .css" /> <script type="text/javascript"> jQuery(document).ready(function () { toggleNotificationOverride(true); jQuery('#gform_update_button').prop('disabled', false); }); function DeleteFile(leadId, fieldId, deleteButton) { if (confirm(<?php echo json_encode(__("Would you like to delete this file? 'Cancel' to stop. 'OK' to delete", 'gravityforms')); ?> )) { var fileIndex = jQuery(deleteButton).parent().index(); var mysack = new sack("<?php echo admin_url('admin-ajax.php'); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar("action", "rg_delete_file"); mysack.setVar("rg_delete_file", "<?php echo wp_create_nonce('rg_delete_file'); ?> "); mysack.setVar("lead_id", leadId); mysack.setVar("field_id", fieldId); mysack.setVar("file_index", fileIndex); mysack.onError = function () { alert(<?php echo json_encode(__('Ajax error while deleting field.', 'gravityforms')); ?> ) }; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId, fileIndex) { var previewFileSelector = "#preview_existing_files_" + fieldId + " .ginput_preview"; var $previewFiles = jQuery(previewFileSelector); var rr = $previewFiles.eq(fileIndex); $previewFiles.eq(fileIndex).remove(); var $visiblePreviewFields = jQuery(previewFileSelector); if ($visiblePreviewFields.length == 0) { jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } } function ToggleShowEmptyFields() { if (jQuery("#gentry_display_empty_fields").is(":checked")) { createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else { eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = "; expires=" + date.toGMTString(); } else var expires = ""; document.cookie = name + "=" + value + expires + "; path=/"; } function eraseCookie(name) { createCookie(name, "", -1); } function ResendNotifications() { var selectedNotifications = new Array(); jQuery(".gform_notifications:checked").each(function () { selectedNotifications.push(jQuery(this).val()); }); var sendTo = jQuery('#notification_override_email').val(); if (selectedNotifications.length <= 0) { displayMessage(<?php echo json_encode(__('You must select at least one type of notification to resend.', 'gravityforms')); ?> , 'error', '#notifications_container'); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications: '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', notifications : jQuery.toJSON(selectedNotifications), sendTo : sendTo, leadIds : '<?php echo absint($lead['id']); ?> ', formId : '<?php echo absint($form['id']); ?> ' }, function (response) { if (response) { displayMessage(response, "error", "#notifications_container"); } else { displayMessage(<?php echo json_encode(esc_html__('Notifications were resent successfully.', 'gravityforms')); ?> , "updated", "#notifications_container" ); // reset UI jQuery(".gform_notifications").attr( 'checked', false ); jQuery('#notification_override_email').val(''); toggleNotificationOverride(); } jQuery('#please_wait_container').hide(); setTimeout(function () { jQuery('#notifications_container').find('.message').slideUp(); }, 5000); } ); } function displayMessage( message, messageClass, container ) { jQuery( container ).find( '.message' ).hide().html( message ).attr( 'class', 'message ' + messageClass ).slideDown(); } function toggleNotificationOverride(isInit) { if (isInit) jQuery('#notification_override_email').val(''); if (jQuery(".gform_notifications:checked").length > 0) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function () { jQuery('#notification_override_email').val(''); }); } } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value="" /> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost('screen_mode')); ?> " /> <div class="wrap gf_entry_wrap"> <h2 class="gf_admin_page_title"> <span><?php echo esc_html__('Entry #', 'gravityforms') . absint($lead['id']); ?> </span><span class="gf_admin_page_subtitle"><span class="gf_admin_page_formid">ID: <?php echo absint($form['id']); ?> </span><span class='gf_admin_page_formname'><?php esc_html_e('Form Name', 'gravityforms'); ?> : <?php echo esc_html($form['title']); $gf_entry_locking = new GFEntryLocking(); $gf_entry_locking->lock_info($lead_id); ?> </span></span></h2> <?php if (isset($_GET['pos'])) { ?> <div class="gf_entry_detail_pagination"> <ul> <li class="gf_entry_count"> <span>entry <strong><?php echo $position + 1; ?> </strong> of <strong><?php echo $total_count; ?> </strong></span> </li> <li class="gf_entry_prev gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($prev_pos, 'Previous Entry', 'gf_entry_prev_link', 'fa fa-arrow-circle-o-left'); ?> </li> <li class="gf_entry_next gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($next_pos, 'Next Entry', 'gf_entry_next_link', 'fa fa-arrow-circle-o-right'); ?> </li> </ul> </div> <?php } ?> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <?php do_action('gform_entry_detail_sidebar_before', $form, $lead); ?> <!-- INFO BOX --> <div id="submitdiv" class="stuffbox"> <h3 class="hndle" style="cursor:default;"> <span><?php esc_html_e('Entry', 'gravityforms'); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <?php esc_html_e('Entry Id', 'gravityforms'); ?> : <?php echo absint($lead['id']); ?> <br /><br /> <?php esc_html_e('Submitted on', 'gravityforms'); ?> : <?php echo esc_html(GFCommon::format_date($lead['date_created'], false, 'Y/m/d')); ?> <br /><br /> <?php esc_html_e('User IP', 'gravityforms'); ?> : <?php echo esc_html($lead['ip']); ?> <br /><br /> <?php if (!empty($lead['created_by']) && ($usermeta = get_userdata($lead['created_by']))) { ?> <?php esc_html_e('User', 'gravityforms'); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead['created_by']); ?> " alt="<?php esc_attr_e('View user profile', 'gravityforms'); ?> " title="<?php esc_attr_e('View user profile', 'gravityforms'); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br /><br /> <?php } ?> <?php esc_html_e('Embed Url', 'gravityforms'); ?> : <a href="<?php echo esc_url($lead['source_url']); ?> " target="_blank" alt="<?php echo esc_attr($lead['source_url']); ?> " title="<?php echo esc_attr($lead['source_url']); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead['source_url'])); ?> </a> <br /><br /> <?php if (!empty($lead['post_id'])) { $post = get_post($lead['post_id']); ?> <?php esc_html_e('Edit Post', 'gravityforms'); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php esc_attr_e('Click to edit post', 'gravityforms'); ?> " title="<?php esc_attr_e('Click to edit post', 'gravityforms'); ?> "><?php echo esc_html($post->post_title); ?> </a> <br /><br /> <?php } if (do_action('gform_enable_entry_info_payment_details', true, $lead)) { if (!empty($lead['payment_status'])) { echo $lead['transaction_type'] != 2 ? esc_html__('Payment Status', 'gravityforms') : esc_html__('Subscription Status', 'gravityforms'); ?> : <span id="gform_payment_status"><?php echo apply_filters('gform_payment_status', $lead['payment_status'], $form, $lead); ?> </span> <br /><br /> <?php if (!empty($lead['payment_date'])) { echo $lead['transaction_type'] != 2 ? esc_html__('Payment Date', 'gravityforms') : esc_html__('Start Date', 'gravityforms'); ?> : <?php echo GFCommon::format_date($lead['payment_date'], false, 'Y/m/d', $lead['transaction_type'] != 2); ?> <br /><br /> <?php } if (!empty($lead['transaction_id'])) { echo $lead['transaction_type'] != 2 ? esc_html__('Transaction Id', 'gravityforms') : esc_html__('Subscriber Id', 'gravityforms'); ?> : <?php echo esc_html($lead['transaction_id']); ?> <br /><br /> <?php } if (!rgblank($lead['payment_amount'])) { echo $lead['transaction_type'] != 2 ? esc_html__('Payment Amount', 'gravityforms') : esc_html__('Subscription Amount', 'gravityforms'); ?> : <?php echo GFCommon::to_money($lead['payment_amount'], $lead['currency']); ?> <br /><br /> <?php } } } do_action('gform_entry_info', $form['id'], $lead); ?> </div> <div id="major-publishing-actions"> <div id="delete-action"> <?php switch ($lead['status']) { case 'spam': if (GFCommon::spam_enabled($form['id'])) { ?> <a onclick="jQuery('#action').val('unspam'); jQuery('#entry_form').submit()" href="#"><?php esc_html_e('Not Spam', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') ? '|' : ''; } if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <a class="submitdelete deletion" onclick="if ( confirm('<?php echo esc_js(__("You are about to delete this entry. 'Cancel' to stop, 'OK' to delete.", 'gravityforms')); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </a> <?php } break; case 'trash': ?> <a onclick="jQuery('#action').val('restore'); jQuery('#entry_form').submit()" href="#"><?php esc_html_e('Restore', 'gravityforms'); ?> </a> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> | <a class="submitdelete deletion" onclick="if ( confirm('<?php echo esc_js(__("You are about to delete this entry. 'Cancel' to stop, 'OK' to delete.", 'gravityforms')); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php esc_html_e('Delete Permanently', 'gravityforms'); ?> </a> <?php } break; default: if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('trash'); jQuery('#entry_form').submit()" href="#"><?php esc_html_e('Move to Trash', 'gravityforms'); ?> </a> <?php echo GFCommon::spam_enabled($form['id']) ? '|' : ''; } if (GFCommon::spam_enabled($form['id'])) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('spam'); jQuery('#entry_form').submit()" href="#"><?php esc_html_e('Mark as Spam', 'gravityforms'); ?> </a> <?php } } ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any('gravityforms_edit_entries') && $lead['status'] != 'trash') { $button_text = $mode == 'view' ? __('Edit', 'gravityforms') : __('Update', 'gravityforms'); $disabled = $mode == 'view' ? '' : ' disabled="disabled" '; $update_button_id = $mode == 'view' ? 'gform_edit_button' : 'gform_update_button'; $button_click = $mode == 'view' ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input id="' . $update_button_id . '" ' . $disabled . ' class="button button-large button-primary" type="submit" tabindex="4" value="' . esc_attr($button_text) . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters('gform_entrydetail_update_button', $update_button); if ($mode == 'edit') { echo ' <input class="button button-large" type="submit" tabindex="5" value="' . esc_attr__('Cancel', 'gravityforms') . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> <div class="clear"></div> </div> </div> </div> </div> <?php if (!empty($lead['payment_status']) && !apply_filters('gform_enable_entry_info_payment_details', true, $lead)) { self::payment_details_box($lead, $form); } ?> <?php do_action('gform_entry_detail_sidebar_middle', $form, $lead); ?> <?php if (GFCommon::current_user_can_any('gravityforms_edit_entry_notes')) { ?> <!-- start notifications --> <div class="postbox" id="notifications_container"> <h3 class="hndle" style="cursor:default;"> <span><?php esc_html_e('Notifications', 'gravityforms'); ?> </span> </h3> <div class="inside"> <div class="message" style="display:none;padding:10px;"></div> <div> <?php $notifications = GFCommon::get_notifications('resend_notifications', $form); if (!is_array($notifications) || count($form['notifications']) <= 0) { ?> <p class="description"><?php esc_html_e('You cannot resend notifications for this entry because this form does not currently have any notifications configured.', 'gravityforms'); ?> </p> <a href="<?php echo admin_url("admin.php?page=gf_edit_forms&view=settings&subview=notification&id={$form_id}"); ?> " class="button"><?php esc_html_e('Configure Notifications', 'gravityforms'); ?> </a> <?php } else { foreach ($notifications as $notification) { ?> <input type="checkbox" class="gform_notifications" value="<?php echo esc_attr($notification['id']); ?> " id="notification_<?php echo esc_attr($notification['id']); ?> " onclick="toggleNotificationOverride();" /> <label for="notification_<?php echo esc_attr($notification['id']); ?> "><?php echo esc_html($notification['name']); ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0; width:99%;">You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.</p> <label for="notification_override_email"><?php esc_html_e('Send To', 'gravityforms'); ?> <?php gform_tooltip('notification_override_email'); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /> <br /><br /> </div> <input type="button" name="notification_resend" value="<?php esc_attr_e('Resend Notifications', 'gravityforms'); ?> " class="button" style="" onclick="ResendNotifications();" /> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <i class='gficon-gravityforms-spinner-icon gficon-spin'></i> <?php esc_html_e('Resending...', 'gravityforms'); ?> </span> <?php } ?> </div> </div> </div> <!-- / end notifications --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo trailingslashit(site_url()); ?> ?gf_page=print-entry&fid=<?php echo absint($form['id']); ?> &lid=<?php echo absint($lead['id']); ?> ' + notes_qs; window.open (url,'printwindow');" class="button"><?php esc_html_e('Print', 'gravityforms'); ?> </a> <?php if (GFCommon::current_user_can_any('gravityforms_view_entry_notes')) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes" /> <label for="print_notes"><?php esc_html_e('include notes', 'gravityforms'); ?> </label> <?php } ?> </div> <!-- end print button --> <?php do_action('gform_entry_detail_sidebar_after', $form, $lead); ?> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php do_action('gform_entry_detail_content_before', $form, $lead); if ($mode == 'view') { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } do_action('gform_entry_detail', $form, $lead); if (GFCommon::current_user_can_any('gravityforms_view_entry_notes')) { ?> <div class="postbox"> <h3> <label for="name"><?php esc_html_e('Notes', 'gravityforms'); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead['id']); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field->id])) { $emails[] = $lead[$email_field->id]; } } //displaying notes grid $subject = ''; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } do_action('gform_entry_detail_content_after', $form, $lead); ?> </div> </div> </div> </div> </form> <?php if (rgpost('action') == 'update') { ?> <div class="updated fade" style="padding:6px;"> <?php esc_html_e('Entry Updated.', 'gravityforms'); ?> </div> <?php } }
public static function lead_detail_page() { global $wpdb; global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta($_GET["id"]); $form_id = $form["id"]; $form = apply_filters("gform_admin_pre_render_" . $form["id"], apply_filters("gform_admin_pre_render", $form)); $lead_id = rgget('lid'); $filter = rgget("filter"); $status = in_array($filter, array("trash", "spam")) ? $filter : "active"; $position = rgget('pos') ? rgget('pos') : 0; $sort_direction = rgget('dir') ? rgget('dir') : 'DESC'; $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $star = $filter == "star" ? 1 : null; $read = $filter == "unread" ? 0 : null; $search_criteria["status"] = $status; if ($star) { $search_criteria["field_filters"][] = array("key" => "is_starred", "value" => (bool) $star); } if (!is_null($read)) { $search_criteria["field_filters"][] = array("key" => "is_read", "value" => (bool) $read); } $search_field_id = rgget("field_id"); if (isset($_GET["field_id"]) && $_GET["field_id"] !== '') { $key = $search_field_id; $val = rgget("s"); $strpos_row_key = strpos($search_field_id, "|"); if ($strpos_row_key !== false) { //multi-row likert $key_array = explode("|", $search_field_id); $key = $key_array[0]; $val = $key_array[1] . ":" . $val; } $type = rgget("type"); if (empty($type)) { $type = rgget("field_id") == "0" ? "global" : "field"; } $search_criteria["field_filters"][] = array("key" => $key, "type" => $type, "operator" => rgempty("operator", $_GET) ? "is" : rgget("operator"), "value" => $val); } $paging = array('offset' => $position, 'page_size' => 1); if (!empty($sort_field)) { $sorting = array('key' => $_GET["sort"], 'direction' => $sort_direction, 'is_numeric' => $is_numeric); } else { $sorting = array(); } $total_count = 0; $leads = GFAPI::get_entries($form['id'], $search_criteria, $sorting, $paging, $total_count); $prev_pos = !rgblank($position) && $position > 0 ? $position - 1 : false; $next_pos = !rgblank($position) && $position < $total_count - 1 ? $position + 1 : false; // unread filter requires special handling for pagination since entries are filter out of the query as they are read if ($filter == 'unread') { $next_pos = $position; if ($next_pos + 1 == $total_count) { $next_pos = false; } } if (!$lead_id) { $lead = !empty($leads) ? $leads[0] : false; } else { $lead = GFAPI::get_entry($lead_id); } if (!$lead) { _e("Oops! We couldn't find your entry. Please try again", "gravityforms"); return; } RGFormsModel::update_lead_property($lead["id"], "is_read", 1); switch (RGForms::post("action")) { case "update": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); //Loading files that have been uploaded to temp folder $files = GFCommon::json_decode(stripslashes(RGForms::post("gform_uploaded_files"))); if (!is_array($files)) { $files = array(); } GFFormsModel::$uploaded_files[$form_id] = $files; GFFormsModel::save_lead($form, $lead); do_action("gform_after_update_entry", $form, $lead["id"]); do_action("gform_after_update_entry_{$form["id"]}", $form, $lead["id"]); $lead = RGFormsModel::get_lead($lead["id"]); $lead = GFFormsModel::set_entry_meta($lead, $form); break; case "add_note": check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["new_note"])); //emailing notes if configured if (rgpost("gentry_email_notes_to")) { $email_to = $_POST["gentry_email_notes_to"]; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST["gentry_email_subject"]); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; $result = wp_mail($email_to, $email_subject, stripslashes($_POST["new_note"]), $headers); } break; case "add_quick_note": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["quick_note"])); break; case "bulk": check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST["bulk_action"] == "delete") { RGFormsModel::delete_notes($_POST["note"]); } break; case "trash": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "trash"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "restore": case "unspam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "active"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "spam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "spam"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "delete": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); if (!GFCommon::current_user_can_any("gravityforms_delete_entries")) { die(__("You don't have adequate permissions to delete entries.", "gravityforms")); } RGFormsModel::delete_lead($lead["id"]); ?> <script type="text/javascript"> document.location.href='<?php echo "admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]); ?> '; </script> <?php break; } $mode = empty($_POST["screen_mode"]) ? "view" : $_POST["screen_mode"]; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" /> <script type="text/javascript"> jQuery(document).ready(function(){ toggleNotificationOverride(true); }); function DeleteFile(leadId, fieldId, deleteButton){ if(confirm(<?php _e("'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'", "gravityforms"); ?> )){ var fileIndex = jQuery(deleteButton).parent().index(); var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_delete_file" ); mysack.setVar( "rg_delete_file", "<?php echo wp_create_nonce("rg_delete_file"); ?> " ); mysack.setVar( "lead_id", leadId ); mysack.setVar( "field_id", fieldId ); mysack.setVar( "file_index", fileIndex ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while deleting field.", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId, fileIndex){ var previewFileSelector = "#preview_existing_files_" + fieldId + " .ginput_preview"; var $previewFiles = jQuery(previewFileSelector); var rr = $previewFiles.eq(fileIndex); $previewFiles.eq(fileIndex).remove(); var $visiblePreviewFields = jQuery(previewFileSelector); if($visiblePreviewFields.length == 0){ jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } } function ToggleShowEmptyFields(){ if(jQuery("#gentry_display_empty_fields").is(":checked")){ createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else{ eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function eraseCookie(name) { createCookie(name,"",-1); } function ResendNotifications() { var selectedNotifications = new Array(); jQuery(".gform_notifications:checked").each(function(){ selectedNotifications.push(jQuery(this).val()); }); var sendTo = jQuery('#notification_override_email').val(); if(selectedNotifications.length <=0) { displayMessage("<?php _e("You must select at least one type of notification to resend.", "gravityforms"); ?> ", "error", "#notifications_container"); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications : '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', notifications: jQuery.toJSON(selectedNotifications), sendTo : sendTo, leadIds : '<?php echo $lead['id']; ?> ', formId : '<?php echo $form['id']; ?> ' }, function(response) { if(response) { displayMessage(response, "error", "#notifications_container"); } else { displayMessage("<?php _e("Notifications were resent successfully.", "gravityforms"); ?> ", "updated", "#notifications_container"); // reset UI jQuery(".gform_notifications").attr('checked', false); jQuery('#notification_override_email').val(''); } jQuery('#please_wait_container').hide(); setTimeout(function(){jQuery('#notifications_container').find('.message').slideUp();}, 5000); } ); } function displayMessage(message, messageClass, container){ jQuery(container).find('.message').hide().html(message).attr('class', 'message ' + messageClass).slideDown(); } function toggleNotificationOverride(isInit) { if(isInit) jQuery('#notification_override_email').val(''); if(jQuery(".gform_notifications:checked").length > 0 ) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function(){ jQuery('#notification_override_email').val(''); }); } } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value=""/> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost("screen_mode")); ?> " /> <div class="wrap gf_entry_wrap"> <h2 class="gf_admin_page_title"><span><?php echo __("Entry #", "gravityforms") . absint($lead["id"]); ?> </span><span class="gf_admin_page_subtitle"><span class="gf_admin_page_formid">ID: <?php echo $form['id']; ?> </span><?php echo $form['title']; $gf_entry_locking = new GFEntryLocking(); $gf_entry_locking->lock_info($lead_id); ?> </span></h2> <?php if (isset($_GET["pos"])) { ?> <div class="gf_entry_detail_pagination"> <ul> <li class="gf_entry_count"><span>entry <strong><?php echo $position + 1; ?> </strong> of <strong><?php echo $total_count; ?> </strong></span></li> <li class="gf_entry_prev gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($prev_pos, 'Previous Entry', 'gf_entry_prev_link', "fa fa-arrow-circle-o-left"); ?> </li> <li class="gf_entry_next gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($next_pos, 'Next Entry', 'gf_entry_next_link', "fa fa-arrow-circle-o-right"); ?> </li> </ul> </div> <?php } ?> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <?php do_action("gform_entry_detail_sidebar_before", $form, $lead); ?> <!-- INFO BOX --> <div id="submitdiv" class="stuffbox"> <h3> <span class="hndle"><?php _e("Entry", "gravityforms"); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <br/> <?php _e("Entry Id", "gravityforms"); ?> : <?php echo absint($lead["id"]); ?> <br/><br/> <?php _e("Submitted on", "gravityforms"); ?> : <?php echo esc_html(GFCommon::format_date($lead["date_created"], false, "Y/m/d")); ?> <br/><br/> <?php _e("User IP", "gravityforms"); ?> : <?php echo $lead["ip"]; ?> <br/><br/> <?php if (!empty($lead["created_by"]) && ($usermeta = get_userdata($lead["created_by"]))) { ?> <?php _e("User", "gravityforms"); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead["created_by"]); ?> " alt="<?php _e("View user profile", "gravityforms"); ?> " title="<?php _e("View user profile", "gravityforms"); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br/><br/> <?php } ?> <?php _e("Embed Url", "gravityforms"); ?> : <a href="<?php echo esc_url($lead["source_url"]); ?> " target="_blank" alt="<?php echo esc_url($lead["source_url"]); ?> " title="<?php echo esc_url($lead["source_url"]); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead["source_url"])); ?> </a> <br/><br/> <?php if (!empty($lead["post_id"])) { $post = get_post($lead["post_id"]); ?> <?php _e("Edit Post", "gravityforms"); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php _e("Click to edit post", "gravityforms"); ?> " title="<?php _e("Click to edit post", "gravityforms"); ?> "><?php echo esc_html($post->post_title); ?> </a> <br/><br/> <?php } if (apply_filters("gform_enable_entry_info_payment_details", true, $lead)) { if (!empty($lead["payment_status"])) { echo $lead["transaction_type"] == 2 ? __("Subscription Status", "gravityforms") : __("Payment Status", "gravityforms"); ?> : <span id="gform_payment_status"><?php echo apply_filters("gform_payment_status", $lead["payment_status"], $form, $lead); ?> </span> <br/><br/> <?php if (!empty($lead["payment_date"])) { echo $lead["transaction_type"] == 2 ? __("Start Date", "gravityforms") : __("Payment Date", "gravityforms"); ?> : <?php echo GFCommon::format_date($lead["payment_date"], false, "Y/m/d", $lead["transaction_type"] != 2); ?> <br/><br/> <?php } if (!empty($lead["transaction_id"])) { echo $lead["transaction_type"] == 2 ? __("Subscriber Id", "gravityforms") : __("Transaction Id", "gravityforms"); ?> : <?php echo $lead["transaction_id"]; ?> <br/><br/> <?php } if (!rgblank($lead["payment_amount"])) { echo $lead["transaction_type"] == 2 ? __("Subscription Amount", "gravityforms") : __("Payment Amount", "gravityforms"); ?> : <?php echo GFCommon::to_money($lead["payment_amount"], $lead["currency"]); ?> <br/><br/> <?php } } } do_action("gform_entry_info", $form["id"], $lead); ?> </div> <div id="major-publishing-actions"> <div id="delete-action"> <?php switch ($lead["status"]) { case "spam": if (GFCommon::akismet_enabled($form['id'])) { ?> <a onclick="jQuery('#action').val('unspam'); jQuery('#entry_form').submit()" href="#"><?php _e("Not Spam", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; case "trash": ?> <a onclick="jQuery('#action').val('restore'); jQuery('#entry_form').submit()" href="#"><?php _e("Restore", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> | <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; default: if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('trash'); jQuery('#entry_form').submit()" href="#"><?php _e("Move to Trash", "gravityforms"); ?> </a> <?php echo GFCommon::akismet_enabled($form['id']) ? "|" : ""; } if (GFCommon::akismet_enabled($form['id'])) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('spam'); jQuery('#entry_form').submit()" href="#"><?php _e("Mark as Spam", "gravityforms"); ?> </a> <?php } } ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entries") && $lead["status"] != "trash") { $button_text = $mode == "view" ? __("Edit", "gravityforms") : __("Update", "gravityforms"); $button_click = $mode == "view" ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input class="button button-large button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters("gform_entrydetail_update_button", $update_button); if ($mode == "edit") { echo ' <input class="button button-large" type="submit" tabindex="5" value="' . __("Cancel", "gravityforms") . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> <div class="clear"></div> </div> </div> </div> </div> <?php if (!empty($lead["payment_status"]) && !apply_filters("gform_enable_entry_info_payment_details", true, $lead)) { self::payment_details_box($lead, $form); } ?> <?php do_action("gform_entry_detail_sidebar_middle", $form, $lead); ?> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entry_notes")) { ?> <!-- start notifications --> <div class="postbox" id="notifications_container"> <h3 style="cursor:default;"><span><?php _e("Notifications", "gravityforms"); ?> </span></h3> <div class="inside"> <div class="message" style="display:none; padding:10px; margin:10px 0px;"></div> <div> <?php if (!is_array($form["notifications"]) || count($form["notifications"]) <= 0) { ?> <p class="description"><?php _e("You cannot resend notifications for this entry because this form does not currently have any notifications configured.", "gravityforms"); ?> </p> <a href="<?php echo admin_url("admin.php?page=gf_edit_forms&view=settings&subview=notification&id={$form["id"]}"); ?> " class="button"><?php _e("Configure Notifications", "gravityforms"); ?> </a> <?php } else { foreach ($form["notifications"] as $notification) { ?> <input type="checkbox" class="gform_notifications" value="<?php echo $notification["id"]; ?> " id="notification_<?php echo $notification["id"]; ?> " onclick="toggleNotificationOverride();" /> <label for="notification_<?php echo $notification["id"]; ?> "><?php echo $notification["name"]; ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0; width:99%;">You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.</p> <label for="notification_override_email"><?php _e("Send To", "gravityforms"); ?> <?php gform_tooltip("notification_override_email"); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /> <br /><br /> </div> <input type="button" name="notification_resend" value="<?php _e("Resend Notifications", "gravityforms"); ?> " class="button" style="" onclick="ResendNotifications();"/> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <img src="<?php echo GFCommon::get_base_url(); ?> /images/loading.gif"> <?php _e("Resending...", "gravityforms"); ?> </span> <?php } ?> </div> </div> </div> <!-- / end notifications --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo trailingslashit(site_url()); ?> ?gf_page=print-entry&fid=<?php echo $form['id']; ?> &lid=<?php echo $lead['id']; ?> ' + notes_qs; window.open (url,'printwindow');" class="button"><?php _e("Print", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes"/> <label for="print_notes"><?php _e("include notes", "gravityforms"); ?> </label> <?php } ?> </div> <!-- end print button --> <?php do_action("gform_entry_detail_sidebar_after", $form, $lead); ?> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php do_action("gform_entry_detail_content_before", $form, $lead); if ($mode == "view") { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } do_action("gform_entry_detail", $form, $lead); if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <div class="postbox"> <h3> <label for="name"><?php _e("Notes", "gravityforms"); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead["id"]); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field["id"]])) { $emails[] = $lead[$email_field["id"]]; } } //displaying notes grid $subject = !empty($form["autoResponder"]["subject"]) ? "RE: " . GFCommon::replace_variables($form["autoResponder"]["subject"], $form, $lead) : ""; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } do_action("gform_entry_detail_content_after", $form, $lead); ?> </div> </div> </div> </div> </form> <?php if (rgpost("action") == "update") { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Entry Updated.", "gravityforms"); ?> </div> <?php } }
private static function get_notification_ui_settings($notification) { /** * These variables are used to convenient "wrap" child form settings in the appropriate HTML. */ $subsetting_open = ' <td colspan="2" class="gf_sub_settings_cell"> <div class="gf_animate_sub_settings"> <table> <tr>'; $subsetting_close = ' </tr> </table> </div> </td>'; $ui_settings = array(); $form_id = rgget('id'); $form = RGFormsModel::get_form_meta($form_id); $form = apply_filters("gform_admin_pre_render_" . $form_id, apply_filters("gform_admin_pre_render", $form)); $is_valid = empty(GFCommon::$errors); ob_start(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_name"> <?php _e("Name", "gravityforms"); ?> <?php gform_tooltip("notification_name"); ?> </label> </th> <td> <input type="text" class="fieldwidth-2" name="gform_notification_name" id="gform_notification_name" value="<?php echo esc_attr(rgget("name", $notification)); ?> "/> </td> </tr> <!-- / name --> <?php $ui_settings['notification_name'] = ob_get_contents(); ob_clean(); ?> <?php $notification_events = apply_filters("gform_notification_events", array("form_submission" => __("Form is submitted", "gravityforms"))); $event_style = count($notification_events) == 1 ? "style='display:none'" : ""; ?> <tr valign="top" <?php echo $event_style; ?> > <th scope="row"> <label for="gform_notification_event"> <?php _e("Event", "gravityforms"); ?> <?php gform_tooltip("notification_event"); ?> </label> </th> <td> <select name="gform_notification_event" id="gform_notification_event"> <?php foreach ($notification_events as $code => $label) { ?> <option value="<?php echo esc_attr($code); ?> " <?php selected(rgar($notification, 'event'), $code); ?> ><?php echo esc_html($label); ?> </option> <?php } ?> </select> </td> </tr> <!-- / event --> <?php $ui_settings['notification_event'] = ob_get_contents(); ob_clean(); ?> <?php $notification_to_type = !rgempty("gform_notification_to_type") ? rgpost("gform_notification_to_type") : rgar($notification, "toType"); if (empty($notification_to_type)) { $notification_to_type = "email"; } $is_invalid_email_to = !$is_valid && !self::is_valid_notification_to(); $send_to_class = $is_invalid_email_to ? "gfield_error" : ""; ?> <tr valign="top" class='<?php echo $send_to_class; ?> '> <th scope="row"> <label for="gform_notification_to_email"> <?php _e("Send To", "gravityforms"); ?> <span class="gfield_required">*</span> <?php gform_tooltip("notification_send_to_email"); ?> </label> </th> <td> <input type="radio" id="gform_notification_to_type_email" name="gform_notification_to_type" <?php checked("email", $notification_to_type); ?> value="email" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_email_container').show('slow');"/> <label for="gform_notification_to_type_email" class="inline"> <?php _e("Enter Email", "gravityforms"); ?> </label> <input type="radio" id="gform_notification_to_type_field" name="gform_notification_to_type" <?php checked("field", $notification_to_type); ?> value="field" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_field_container').show('slow');"/> <label for="gform_notification_to_type_field" class="inline"> <?php _e("Select a Field", "gravityforms"); ?> </label> <input type="radio" id="gform_notification_to_type_routing" name="gform_notification_to_type" <?php checked("routing", $notification_to_type); ?> value="routing" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_routing_container').show('slow');"/> <label for="gform_notification_to_type_routing" class="inline"> <?php _e("Configure Routing", "gravityforms"); ?> <?php gform_tooltip("notification_send_to_routing"); ?> </label> </td> </tr> <!-- / to email type --> <?php $ui_settings['notification_to_email_type'] = ob_get_contents(); ob_clean(); ?> <tr id="gform_notification_to_email_container" class="notification_to_container <?php echo $send_to_class; ?> " <?php echo $notification_to_type != "email" ? "style='display:none';" : ""; ?> > <?php echo $subsetting_open; ?> <th scope="row"><?php _e("Send to Email", "gravityforms"); ?> </th> <td> <?php $to_email = rgget("toType", $notification) == "email" ? rgget("to", $notification) : ""; ?> <input type="text" name="gform_notification_to_email" id="gform_notification_to_email" value="<?php echo esc_attr($to_email); ?> " class="fieldwidth-1" /> <?php if (rgpost("gform_notification_to_type") == "email" && $is_invalid_email_to) { ?> <span class="validation_message"><?php _e("Please enter a valid email address", "gravityforms"); ?> </span> <?php } ?> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to email --> <?php $ui_settings['notification_to_email'] = ob_get_contents(); ob_clean(); ?> <?php $email_fields = apply_filters("gform_email_fields_notification_admin_{$form["id"]}", apply_filters("gform_email_fields_notification_admin", GFCommon::get_email_fields($form), $form), $form); ?> <tr id="gform_notification_to_field_container" class="notification_to_container <?php echo $send_to_class; ?> " <?php echo $notification_to_type != "field" ? "style='display:none';" : ""; ?> > <?php echo $subsetting_open; ?> <th scope="row"><?php _e("Send to Field", "gravityforms"); ?> </th> <td> <?php if (!empty($email_fields)) { ?> <select name="gform_notification_to_field" id="gform_notification_to_field"> <option value=""><?php _e("Select an email field", "gravityforms"); ?> </option> <?php $to_field = rgget("toType", $notification) == "field" ? rgget("to", $notification) : ""; foreach ($email_fields as $field) { ?> <option value="<?php echo $field["id"]; ?> " <?php echo selected($field["id"], $to_field); ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } else { ?> <div class="error_base"><p><?php _e("Your form does not have an email field. Add an email field to your form and try again.", "gravityforms"); ?> </p></div> <?php } ?> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to email field --> <?php $ui_settings['notification_to_email_field'] = ob_get_contents(); ob_clean(); ?> <tr id="gform_notification_to_routing_container" class="notification_to_container <?php echo $send_to_class; ?> " <?php echo $notification_to_type != "routing" ? "style='display:none';" : ""; ?> > <?php echo $subsetting_open; ?> <td colspan="2"> <div id="gform_notification_to_routing_rules"> <?php $routing_fields = self::get_routing_fields($form, "0"); if (empty($routing_fields)) { //if(empty(){ ?> <div class="gold_notice"> <p><?php _e("To use notification routing, your form must have a field supported by conditional logic.", "gravityforms"); ?> </p> </div> <?php } else { if (empty($notification["routing"])) { $notification["routing"] = array(array()); } $count = sizeof($notification["routing"]); $routing_list = ","; for ($i = 0; $i < $count; $i++) { $routing_list .= $i . ","; $routing = $notification["routing"][$i]; $is_invalid_rule = !$is_valid && $_POST["gform_notification_to_type"] == "routing" && !self::is_valid_notification_email(rgar($routing, 'email')); $class = $is_invalid_rule ? "class='grouting_rule_error'" : ""; ?> <div style='width:99%' <?php echo $class; ?> > <?php _e("Send to", "gravityforms"); ?> <input type="text" id="routing_email_<?php echo $i; ?> " value="<?php echo rgar($routing, "email"); ?> " onkeyup="SetRouting(<?php echo $i; ?> );"/> <?php _e("if", "gravityforms"); ?> <select id="routing_field_id_<?php echo $i; ?> " class='gfield_routing_select' onchange='jQuery("#routing_value_<?php echo $i; ?> ").replaceWith(GetRoutingValues(<?php echo $i; ?> , jQuery(this).val())); SetRouting(<?php echo $i; ?> ); '><?php echo self::get_routing_fields($form, rgar($routing, "fieldId")); ?> </select> <select id="routing_operator_<?php echo $i; ?> " onchange="SetRouting(<?php echo $i; ?> )" class="gform_routing_operator"> <option value="is" <?php echo rgar($routing, "operator") == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravityforms"); ?> </option> <option value="isnot" <?php echo rgar($routing, "operator") == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravityforms"); ?> </option> <option value=">" <?php echo rgar($routing, "operator") == ">" ? "selected='selected'" : ""; ?> ><?php _e("greater than", "gravityforms"); ?> </option> <option value="<" <?php echo rgar($routing, "operator") == "<" ? "selected='selected'" : ""; ?> ><?php _e("less than", "gravityforms"); ?> </option> <option value="contains" <?php echo rgar($routing, "operator") == "contains" ? "selected='selected'" : ""; ?> ><?php _e("contains", "gravityforms"); ?> </option> <option value="starts_with" <?php echo rgar($routing, "operator") == "starts_with" ? "selected='selected'" : ""; ?> ><?php _e("starts with", "gravityforms"); ?> </option> <option value="ends_with" <?php echo rgar($routing, "operator") == "ends_with" ? "selected='selected'" : ""; ?> ><?php _e("ends with", "gravityforms"); ?> </option> </select> <?php echo self::get_field_values($i, $form, rgar($routing, "fieldId"), rgar($routing, "value")); ?> <a class='gf_insert_field_choice' title='add another rule' onclick='SetRouting(<?php echo $i; ?> ); InsertRouting(<?php echo $i + 1; ?> );'><i class='fa fa-plus-square'></i></a> <?php if ($count > 1) { ?> <img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' id='routing_delete_<?php echo $i; ?> ' title='remove this email routing' alt='remove this email routing' class='delete_field_choice' style='cursor:pointer;' onclick='DeleteRouting(<?php echo $i; ?> );' /> <?php } ?> </div> <?php } if ($is_invalid_rule) { ?> <span class="validation_message"><?php _e("Please enter a valid email address for all highlighted routing rules above.", "gravityforms"); ?> </span> <?php } ?> <input type="hidden" name="routing_count" id="routing_count" value="<?php echo $routing_list; ?> "/> <?php } ?> </div> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to routing --> <?php $ui_settings['notification_to_routing'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_from_name"> <?php _e("From Name", "gravityforms"); ?> <?php gform_tooltip("notification_from_name"); ?> </label> </th> <td> <input type="text" class="fieldwidth-2 merge-tag-support mt-position-right mt-hide_all_fields" name="gform_notification_from_name" id="gform_notification_from_name" value="<?php echo esc_attr(rgget("fromName", $notification)); ?> "/> </td> </tr> <!-- / from name --> <?php $ui_settings['notification_from_name'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_from"> <?php _e("From Email", "gravityforms"); ?> <?php gform_tooltip("notification_from_email"); ?> </label> </th> <td> <input type="text" class="fieldwidth-2 merge-tag-support mt-position-right mt-hide_all_fields" name="gform_notification_from" id="gform_notification_from" value="<?php echo rgempty("from", $notification) ? "{admin_email}" : esc_attr(rgget("from", $notification)); ?> "/> </td> </tr> <!-- / to from email --> <?php $ui_settings['notification_from'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_reply_to"> <?php _e("Reply To", "gravityforms"); ?> <?php gform_tooltip("notification_reply_to"); ?> </label> </th> <td> <input type="text" name="gform_notification_reply_to" id="gform_notification_reply_to" class="merge-tag-support mt-hide_all_fields" value="<?php echo esc_attr(rgget("replyTo", $notification)); ?> " class="fieldwidth-2" /> </td> </tr> <!-- / reply to --> <?php $ui_settings['notification_reply_to'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_bcc"> <?php _e("BCC", "gravityforms"); ?> <?php gform_tooltip("notification_bcc"); ?> </label> </th> <td> <input type="text" name="gform_notification_bcc" id="gform_notification_bcc" value="<?php echo esc_attr(rgget("bcc", $notification)); ?> " class="fieldwidth-1" /> </td> </tr> <!-- / bcc --> <?php $ui_settings['notification_bcc'] = ob_get_contents(); ob_clean(); ?> <?php $is_invalid_subject = !$is_valid && empty($_POST["gform_notification_subject"]); $subject_class = $is_invalid_subject ? "class='gfield_error'" : ""; ?> <tr valign="top" <?php echo $subject_class; ?> > <th scope="row"> <label for="gform_notification_subject"> <?php _e("Subject", "gravityforms"); ?> <span class="gfield_required">*</span> </label> </th> <td> <input type="text" name="gform_notification_subject" id="gform_notification_subject" class="fieldwidth-1 merge-tag-support mt-hide_all_fields mt-position-right" value="<?php echo esc_attr(rgar($notification, "subject")); ?> " /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php _e("Please enter a subject for the notification email", "gravityforms"); ?> </span><?php } ?> </td> </tr> <!-- / subject --> <?php $ui_settings['notification_subject'] = ob_get_contents(); ob_clean(); ?> <?php $is_invalid_message = !$is_valid && empty($_POST["gform_notification_message"]); $message_class = $is_invalid_message ? "class='gfield_error'" : ""; ?> <tr valign="top" <?php echo $message_class; ?> > <th scope="row"> <label for="gform_notification_message"> <?php _e("Message", "gravityforms"); ?> <span class="gfield_required">*</span> </label> </th> <td> <span class="mt-gform_notification_message"></span> <?php if (GFCommon::is_wp_version("3.3")) { wp_editor(rgar($notification, "message"), "gform_notification_message", array("autop" => false, "editor_class" => "merge-tag-support mt-wp_editor mt-manual_position mt-position-right")); } else { ?> <textarea name="gform_notification_message" id="gform_notification_message" class="fieldwidth-1 fieldheight-1" ><?php echo esc_html($notification["message"]); ?> </textarea><?php } if ($is_invalid_message) { ?> <span class="validation_message"><?php _e("Please enter a message for the notification email", "gravityforms"); ?> </span><?php } ?> </td> </tr> <!-- / message --> <?php $ui_settings['notification_message'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_disable_autoformat"> <?php _e("Auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </th> <td> <input type="checkbox" name="gform_notification_disable_autoformat" id="gform_notification_disable_autoformat" value="1" <?php echo empty($notification["disableAutoformat"]) ? "" : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php _e("Disable auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </td> </tr> <!-- / disable autoformat --> <?php $ui_settings['notification_disable_autoformat'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_conditional_logic"> <?php _e("Conditional Logic", "gravityforms"); gform_tooltip("notification_conditional_logic"); ?> </label> </th> <td> <input type="checkbox" id="notification_conditional_logic" onclick="SetConditionalLogic(this.checked); ToggleConditionalLogic(false, 'notification');" <?php checked(is_array(rgar($notification, "conditionalLogic")), true); ?> /> <label for="notification_conditional_logic" class="inline"><?php _e("Enable conditional logic", "gravityforms"); gform_tooltip("notification_conditional_logic"); ?> </label> <br/> </td> </tr> <!-- / conditional logic --> <tr> <td colspan="2"> <div id="notification_conditional_logic_container" class="gf_animate_sub_settings" style="padding-left:10px;"> <!-- content dynamically created from form_admin.js --> </div> </td> </tr> <?php $ui_settings['notification_conditional_logic'] = ob_get_contents(); ob_clean(); ?> <?php ob_end_clean(); $ui_settings = apply_filters("gform_notification_ui_settings_{$form_id}", apply_filters('gform_notification_ui_settings', $ui_settings, $notification, $form), $notification, $form); return $ui_settings; }
function add_sidebar_text_before($form, $lead) { $mode = empty($_POST['screen_mode']) ? 'view' : $_POST['screen_mode']; $street = $lead['101.1']; $street2 = !empty($lead["101.2"]) ? $lead["101.2"] . '<br />' : ''; $city = $lead["101.3"]; $state = $lead["101.4"]; $zip = $lead["101.5"]; $country = $lead["101.6"]; $email = $lead["98"]; $phone = $lead["99"]; $phonetype = $lead["148"]; ?> <div id="infoboxdiv" class="postbox"> <div id="minor-publishing" style="padding: 10px;"> <?php mf_sidebar_entry_status($form['id'], $lead); ?> <br/> Contact:<div style="padding:5px"><?php echo $lead['96.3']; ?> <?php echo $lead['96.6']; ?> <br /> <?php echo $street; ?> <br /> <?php echo $street2; ?> <?php echo $city; ?> , <?php echo $state; ?> <?php echo $zip; ?> <br /> <?php echo $country; ?> <br /> <a href="mailto:<?php echo $email; ?> "><?php echo $email; ?> </a><br /> <?php echo $phonetype; ?> : <?php echo $phone; ?> <br /> </div> <?php _e('Filled out: ', 'gravityforms'); ?> :<?php echo esc_html(GFCommon::format_date($lead['date_created'], false, 'Y/m/d')); ?> <br /> </div> <div id="delete-action" style="float:none;padding: 10px;"> <?php switch ($lead['status']) { case 'spam': if (GFCommon::spam_enabled($form['id'])) { ?> <a onclick="jQuery('#action').val('unspam'); jQuery('#entry_form').submit()" href="#"><?php _e('Not Spam', 'gravityforms'); ?> </a> <?php echo GFCommon::current_user_can_any('gravityforms_delete_entries') ? '|' : ''; } if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <a class="submitdelete deletion" onclick="if ( confirm('<?php _e(';You are about to delete this entry. \'Cancel\' to stop, \'OK\' to delete.', 'gravityforms'); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e('Delete Permanently', 'gravityforms'); ?> </a> <?php } break; case 'trash': ?> <a onclick="jQuery('#action').val('restore'); jQuery('#entry_form').submit()" href="#"><?php _e('Restore', 'gravityforms'); ?> </a> <?php if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> | <a class="submitdelete deletion" onclick="if ( confirm('<?php _e('You are about to delete this entry. \'Cancel\' to stop, \'OK\' to delete.', 'gravityforms'); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e('Delete Permanently', 'gravityforms'); ?> </a> <?php } break; default: if (GFCommon::current_user_can_any('gravityforms_delete_entries')) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('trash'); jQuery('#entry_form').submit()" href="#"><?php _e('Move to Trash', 'gravityforms'); ?> </a> <?php echo GFCommon::spam_enabled($form['id']) ? '|' : ''; } if (GFCommon::spam_enabled($form['id'])) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('spam'); jQuery('#entry_form').submit()" href="#"><?php _e('Mark as Spam', 'gravityforms'); ?> </a> <?php } } if (GFCommon::current_user_can_any('gravityforms_edit_entries') && $lead['status'] != 'trash') { $button_text = $mode == 'view' ? __('Edit', 'gravityforms') : __('Update', 'gravityforms'); $disabled = $mode == 'view' ? '' : ' disabled="disabled" '; $update_button_id = $mode == 'view' ? 'gform_edit_button' : 'gform_update_button'; $button_click = $mode == 'view' ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input id="' . $update_button_id . '" ' . $disabled . ' class="button button-large button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters('gform_entrydetail_update_button', $update_button); if ($mode == 'edit') { echo ' <input class="button button-large" type="submit" tabindex="5" value="' . __('Cancel', 'gravityforms') . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> </div> <?php /* Ratings Sidebar Area */ global $wpdb; // Retrieve any ratings $entry_id = $lead['id']; $sql = "SELECT user_id, rating, ratingDate FROM `wp_rg_lead_rating` where entry_id = " . $entry_id; $ratingTotal = 0; $ratingNum = 0; $ratingResults = ''; $user_ID = get_current_user_id(); $currRating = ''; foreach ($wpdb->get_results($sql) as $row) { $user = get_userdata($row->user_id); //don't display current user in the list of rankings if ($user_ID != $row->user_id) { $ratingResults .= '<tr><td style="text-align: center;">' . $row->rating . '</td><td>' . $user->display_name . '</td><td class="alignright">' . date("m-d-Y", strtotime($row->ratingDate)) . '</td></tr>'; } else { $currRating = $row->rating; } $ratingTotal += $row->rating; $ratingNum++; } $ratingAvg = $ratingNum != 0 ? round($ratingTotal / $ratingNum) : 0; ?> <div class="postbox" style="float:none;padding: 10px"> <h3> <label for="name"><?php _e('Entry Rating: <a href="#" onclick="return false;" class="gf_tooltip" title="1 = No way<br/>2 = Low priority<br/>3 = Yes, If there’s room<br/>4 = Yes definitely<br/>5 = Hell yes">(?)</a> ' . $ratingAvg . ' stars', 'gravityforms'); ?> </label></h3> <div class="entryRating inside"> <span class="star-rating"> <input type="radio" name="rating" value="1" <?php echo $currRating == 1 ? 'checked' : ''; ?> ><i></i> <input type="radio" name="rating" value="2" <?php echo $currRating == 2 ? 'checked' : ''; ?> ><i></i> <input type="radio" name="rating" value="3" <?php echo $currRating == 3 ? 'checked' : ''; ?> ><i></i> <input type="radio" name="rating" value="4" <?php echo $currRating == 4 ? 'checked' : ''; ?> ><i></i> <input type="radio" name="rating" value="5" <?php echo $currRating == 5 ? 'checked' : ''; ?> ><i></i> </span> (Your Rating)<br/> <span id="updateMSG" style="font-size:smaller">Average Rating: <?php echo $ratingAvg; ?> Stars from <?php echo $ratingNum; ?> users.</span> <?php if ($ratingResults != '') { echo '<table cellspacing="0" style="padding:10px 0">' . ' <tr>' . ' <td class="entry-view-field-name">Rating</td>' . ' <td class="entry-view-field-name">User</td>' . ' <td class="entry-view-field-name">Date Rated</td>' . '</tr>' . $ratingResults . '</table>'; } ?> </div> </div> <?php /* Notes Sidebar Area */ ?> <div class="postbox" style="float:none;padding: 10px;"> <h3> <label for="name"><?php _e('Notes', 'gravityforms'); ?> </label> </h3> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead['id']); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field->id])) { $emails[] = $lead[$email_field->id]; } } //displaying notes grid $subject = ''; notes_sidebar_grid($notes, true, $emails, $subject); ?> </div> </div> <?php /* Entry Management Sidebar Area */ if ($mode == 'view') { ?> <div class='postbox' style="float:none;padding: 10px;"> <?php // Load Entry Sidebar details mf_sidebar_entry_info($form['id'], $lead); ?> <?php // Create Update button for sidebar entry management $entry_sidebar_button = '<input type="submit" name="update_management" value="Update Management" class="button" style="width:auto;padding-bottom:2px;" onclick="jQuery(\'#action\').val(\'update_entry_management\');"/>'; echo $entry_sidebar_button; ?> </div> <?php } /* Shceduling Management Sidebar Area */ if ($mode == 'view') { ?> <div class='postbox' style="float:none;padding: 10px;"> <?php // Load Entry Sidebar details: schedule mf_sidebar_entry_schedule($form['id'], $lead); ?> </div> <div class='postbox' style="float:none;padding: 10px;"> <?php // Load Entry Sidebar details: Ticket Code (Field 308) mf_sidebar_entry_ticket($form['id'], $lead); ?> </div> <div class='postbox' style="float:none;padding: 10px;"> <?php // Load Entry Sidebar details: Faire locations //mf_sidebar_entry_locations( $form['id'], $lead ); ?> </div> <div class='postbox' style="float:none;padding: 10px;"> <?php //load 'Change Form' form mf_sidebar_forms($form['id'], $lead); ?> </div> <div class='postbox' style="float:none;padding: 10px;"> <?php //load Duplicate/Copy Entry form mf_sidebar_dup($form['id'], $lead); ?> </div> <?php } ?> <div class="detail-view-print"> <?php $entry_sidebar_button = '<input type="submit" name="sync_jdb" value="Send to JDB" class="button" style="width:auto;padding-bottom:2px;" onclick="jQuery(\'#action\').val(\'sync_jdb\');"/>'; echo $entry_sidebar_button; ?> </div> <div class="detail-view-print"> <?php $entry_sidebar_button = '<input type="submit" name="sync_status_jdb" value="Sync Status JDB" class="button" style="width:auto;padding-bottom:2px;" onclick="jQuery(\'#action\').val(\'sync_status_jdb\');"/>'; echo $entry_sidebar_button; ?> </div> <?php }
private static function get_notification_ui_settings($notification) { /** * These variables are used to convenient "wrap" child form settings in the appropriate HTML. */ $subsetting_open = ' <td colspan="2" class="gf_sub_settings_cell"> <div class="gf_animate_sub_settings"> <table> <tr>'; $subsetting_close = ' </tr> </table> </div> </td>'; $ui_settings = array(); $form_id = rgget('id'); $form = RGFormsModel::get_form_meta($form_id); $form = apply_filters('gform_admin_pre_render_' . $form_id, apply_filters('gform_admin_pre_render', $form)); $is_valid = empty(GFCommon::$errors); ob_start(); ?> <tr valign="top" <?php echo rgar($notification, 'isDefault') ? "style='display:none'" : ''; ?> > <th scope="row"> <label for="gform_notification_name"> <?php esc_html_e('Name', 'gravityforms'); ?> <?php gform_tooltip('notification_name'); ?> </label> </th> <td> <input type="text" class="fieldwidth-2" name="gform_notification_name" id="gform_notification_name" value="<?php echo esc_attr(rgget('name', $notification)); ?> " /> </td> </tr> <!-- / name --> <?php $ui_settings['notification_name'] = ob_get_contents(); ob_clean(); ?> <?php $notification_events = array('form_submission' => esc_html__('Form is submitted', 'gravityforms')); if (rgars($form, 'save/enabled')) { $notification_events['form_saved'] = esc_html__('Form is saved', 'gravityforms'); $notification_events['form_save_email_requested'] = esc_html__('Save and continue email is requested', 'gravityforms'); } $notification_events = apply_filters('gform_notification_events', $notification_events, $form); $event_style = count($notification_events) == 1 || rgar($notification, 'isDefault') ? "style='display:none'" : ''; ?> <tr valign="top" <?php echo $event_style; ?> > <th scope="row"> <label for="gform_notification_event"> <?php esc_html_e('Event', 'gravityforms'); ?> <?php gform_tooltip('notification_event'); ?> </label> </th> <td> <select name="gform_notification_event" id="gform_notification_event"> <?php foreach ($notification_events as $code => $label) { ?> <option value="<?php echo esc_attr($code); ?> " <?php selected(rgar($notification, 'event'), $code); ?> ><?php echo esc_html($label); ?> </option> <?php } ?> </select> </td> </tr> <!-- / event --> <?php $ui_settings['notification_event'] = ob_get_contents(); ob_clean(); ?> <?php $notification_to_type = !rgempty('gform_notification_to_type') ? rgpost('gform_notification_to_type') : rgar($notification, 'toType'); if (empty($notification_to_type)) { $notification_to_type = 'email'; } $is_invalid_email_to = !$is_valid && !self::is_valid_notification_to(); $send_to_class = $is_invalid_email_to ? 'gfield_error' : ''; ?> <tr valign="top" class='<?php echo esc_attr($send_to_class); ?> ' <?php echo $notification_to_type == 'hidden' ? 'style="display:none;"' : ''; ?> > <th scope="row"> <label for="gform_notification_to_email"> <?php esc_html_e('Send To', 'gravityforms'); ?> <span class="gfield_required">*</span> <?php gform_tooltip('notification_send_to_email'); ?> </label> </th> <td> <input type="radio" id="gform_notification_to_type_email" name="gform_notification_to_type" <?php checked('email', $notification_to_type); ?> value="email" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_email_container').show('slow');" /> <label for="gform_notification_to_type_email" class="inline"> <?php esc_html_e('Enter Email', 'gravityforms'); ?> </label> <input type="radio" id="gform_notification_to_type_field" name="gform_notification_to_type" <?php checked('field', $notification_to_type); ?> value="field" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_field_container').show('slow');" /> <label for="gform_notification_to_type_field" class="inline"> <?php esc_html_e('Select a Field', 'gravityforms'); ?> </label> <input type="radio" id="gform_notification_to_type_routing" name="gform_notification_to_type" <?php checked('routing', $notification_to_type); ?> value="routing" onclick="jQuery('.notification_to_container').hide(); jQuery('#gform_notification_to_routing_container').show('slow');" /> <label for="gform_notification_to_type_routing" class="inline"> <?php esc_html_e('Configure Routing', 'gravityforms'); ?> <?php gform_tooltip('notification_send_to_routing'); ?> </label> </td> </tr> <!-- / to email type --> <?php $ui_settings['notification_to_email_type'] = ob_get_contents(); ob_clean(); if ($notification_to_type == 'hidden') { $ui_settings['notification_to_email_type'] = '<input type="hidden" name="gform_notification_to_type" value="hidden" />'; } ?> <tr id="gform_notification_to_email_container" class="notification_to_container <?php echo esc_attr($send_to_class); ?> " <?php echo $notification_to_type != 'email' ? "style='display:none';" : ''; ?> > <?php echo $subsetting_open; ?> <th scope="row"><?php esc_html_e('Send to Email', 'gravityforms'); ?> </th> <td> <?php $to_email = rgget('toType', $notification) == 'email' ? rgget('to', $notification) : ''; ?> <input type="text" name="gform_notification_to_email" id="gform_notification_to_email" value="<?php echo esc_attr($to_email); ?> " class="fieldwidth-1" /> <?php if (rgpost('gform_notification_to_type') == 'email' && $is_invalid_email_to) { ?> <span class="validation_message"><?php esc_html_e('Please enter a valid email address', 'gravityforms'); ?> .</span> <?php } ?> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to email --> <?php $ui_settings['notification_to_email'] = ob_get_contents(); ob_clean(); ?> <?php $email_fields = apply_filters("gform_email_fields_notification_admin_{$form['id']}", apply_filters('gform_email_fields_notification_admin', GFCommon::get_email_fields($form), $form), $form); ?> <tr id="gform_notification_to_field_container" class="notification_to_container <?php echo esc_attr($send_to_class); ?> " <?php echo $notification_to_type != 'field' ? "style='display:none';" : ''; ?> > <?php echo $subsetting_open; ?> <th scope="row"><?php esc_html_e('Send to Field', 'gravityforms'); ?> </th> <td> <?php if (!empty($email_fields)) { ?> <select name="gform_notification_to_field" id="gform_notification_to_field"> <option value=""><?php esc_html_e('Select an email field', 'gravityforms'); ?> </option> <?php $to_field = rgget('toType', $notification) == 'field' ? rgget('to', $notification) : ''; foreach ($email_fields as $field) { ?> <option value="<?php echo esc_attr($field->id); ?> " <?php echo selected($field->id, $to_field); ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } else { ?> <div class="error_base"> <p><?php esc_html_e('Your form does not have an email field. Add an email field to your form and try again.', 'gravityforms'); ?> </p> </div> <?php } ?> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to email field --> <?php $ui_settings['notification_to_email_field'] = ob_get_contents(); ob_clean(); ?> <tr id="gform_notification_to_routing_container" class="notification_to_container <?php echo esc_attr($send_to_class); ?> " <?php echo $notification_to_type != 'routing' ? "style='display:none';" : ''; ?> > <?php echo $subsetting_open; ?> <td colspan="2"> <div id="gform_notification_to_routing_rules"> <?php $routing_fields = self::get_routing_fields($form, '0'); if (empty($routing_fields)) { ?> <div class="gold_notice"> <p><?php esc_html_e('To use notification routing, your form must have a field supported by conditional logic.', 'gravityforms'); ?> </p> </div> <?php } else { if (empty($notification['routing'])) { $notification['routing'] = array(array()); } $count = sizeof($notification['routing']); $routing_list = ','; for ($i = 0; $i < $count; $i++) { $routing_list .= $i . ','; $routing = $notification['routing'][$i]; $is_invalid_rule = !$is_valid && $_POST['gform_notification_to_type'] == 'routing' && !self::is_valid_notification_email(rgar($routing, 'email')); $class = $is_invalid_rule ? "class='grouting_rule_error'" : ''; ?> <div style='width:99%' <?php echo $class; ?> > <?php esc_html_e('Send to', 'gravityforms'); ?> <input type="text" id="routing_email_<?php echo $i; ?> " value="<?php echo esc_attr(rgar($routing, 'email')); ?> " onkeyup="SetRouting(<?php echo $i; ?> );" /> <?php esc_html_e('if', 'gravityforms'); ?> <select id="routing_field_id_<?php echo $i; ?> " class='gfield_routing_select' onchange='jQuery("#routing_value_<?php echo $i; ?> ").replaceWith(GetRoutingValues(<?php echo $i; ?> , jQuery(this).val())); SetRouting(<?php echo $i; ?> ); '><?php echo self::get_routing_fields($form, rgar($routing, 'fieldId')); ?> </select> <select id="routing_operator_<?php echo $i; ?> " onchange="SetRouting(<?php echo $i; ?> )" class="gform_routing_operator"> <option value="is" <?php echo rgar($routing, 'operator') == 'is' ? "selected='selected'" : ''; ?> ><?php esc_html_e('is', 'gravityforms'); ?> </option> <option value="isnot" <?php echo rgar($routing, 'operator') == 'isnot' ? "selected='selected'" : ''; ?> ><?php esc_html_e('is not', 'gravityforms'); ?> </option> <option value=">" <?php echo rgar($routing, 'operator') == '>' ? "selected='selected'" : ''; ?> ><?php esc_html_e('greater than', 'gravityforms'); ?> </option> <option value="<" <?php echo rgar($routing, 'operator') == '<' ? "selected='selected'" : ''; ?> ><?php esc_html_e('less than', 'gravityforms'); ?> </option> <option value="contains" <?php echo rgar($routing, 'operator') == 'contains' ? "selected='selected'" : ''; ?> ><?php esc_html_e('contains', 'gravityforms'); ?> </option> <option value="starts_with" <?php echo rgar($routing, 'operator') == 'starts_with' ? "selected='selected'" : ''; ?> ><?php esc_html_e('starts with', 'gravityforms'); ?> </option> <option value="ends_with" <?php echo rgar($routing, 'operator') == 'ends_with' ? "selected='selected'" : ''; ?> ><?php esc_html_e('ends with', 'gravityforms'); ?> </option> </select> <?php echo self::get_field_values($i, $form, rgar($routing, 'fieldId'), rgar($routing, 'value')); ?> <a class='gf_insert_field_choice' title='add another rule' onclick='SetRouting(<?php echo $i; ?> ); InsertRouting(<?php echo $i + 1; ?> );'><i class='gficon-add'></i></a> <?php if ($count > 1) { ?> <img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' id='routing_delete_<?php echo $i; ?> ' title='remove this email routing' alt='remove this email routing' class='delete_field_choice' style='cursor:pointer;' onclick='DeleteRouting(<?php echo $i; ?> );' /> <?php } ?> </div> <?php } if ($is_invalid_rule) { ?> <span class="validation_message"><?php esc_html_e('Please enter a valid email address for all highlighted routing rules above.', 'gravityforms'); ?> </span> <?php } ?> <input type="hidden" name="routing_count" id="routing_count" value="<?php echo $routing_list; ?> " /> <?php } ?> </div> </td> <?php echo $subsetting_close; ?> </tr> <!-- / to routing --> <?php $ui_settings['notification_to_routing'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_from_name"> <?php esc_html_e('From Name', 'gravityforms'); ?> <?php gform_tooltip('notification_from_name'); ?> </label> </th> <td> <input type="text" class="fieldwidth-2 merge-tag-support mt-position-right mt-hide_all_fields" name="gform_notification_from_name" id="gform_notification_from_name" value="<?php echo esc_attr(rgget('fromName', $notification)); ?> " /> </td> </tr> <!-- / from name --> <?php $ui_settings['notification_from_name'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_from"> <?php esc_html_e('From Email', 'gravityforms'); ?> <?php gform_tooltip('notification_from_email'); ?> </label> </th> <td> <input type="text" class="fieldwidth-2 merge-tag-support mt-position-right mt-hide_all_fields" name="gform_notification_from" id="gform_notification_from" value="<?php echo rgempty('from', $notification) ? '{admin_email}' : esc_attr(rgget('from', $notification)); ?> " /> </td> </tr> <!-- / to from email --> <?php $ui_settings['notification_from'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_reply_to"> <?php $is_invalid_reply_to = !$is_valid && !self::is_valid_notification_email(rgar($notification, 'replyTo')); $class = $is_invalid_reply_to ? ' gfield_error' : ''; ?> <?php esc_html_e('Reply To', 'gravityforms'); ?> <?php gform_tooltip('notification_reply_to'); ?> </label> </th> <td> <input type="text" name="gform_notification_reply_to" id="gform_notification_reply_to" class="merge-tag-support mt-hide_all_fields fieldwidth-2<?php echo $class; ?> " value="<?php echo esc_attr(rgget('replyTo', $notification)); ?> " /> </td> </tr> <!-- / reply to --> <?php $ui_settings['notification_reply_to'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_bcc"> <?php esc_html_e('BCC', 'gravityforms'); ?> <?php gform_tooltip('notification_bcc'); ?> </label> </th> <td> <?php $is_invalid_bcc = !$is_valid && !self::is_valid_notification_email(rgar($notification, 'bcc')); $class = $is_invalid_bcc ? ' gfield_error' : ''; ?> <input type="text" name="gform_notification_bcc" id="gform_notification_bcc" value="<?php echo esc_attr(rgget('bcc', $notification)); ?> " class="merge-tag-support mt-hide_all_fields fieldwidth-2<?php echo $class; ?> " /> </td> </tr> <!-- / bcc --> <?php $ui_settings['notification_bcc'] = ob_get_contents(); ob_clean(); ?> <?php $is_invalid_subject = !$is_valid && empty($_POST['gform_notification_subject']); $subject_class = $is_invalid_subject ? "class='gfield_error'" : ''; ?> <tr valign="top" <?php echo $subject_class; ?> > <th scope="row"> <label for="gform_notification_subject"> <?php esc_html_e('Subject', 'gravityforms'); ?> <span class="gfield_required">*</span> </label> </th> <td> <input type="text" name="gform_notification_subject" id="gform_notification_subject" class="fieldwidth-1 merge-tag-support mt-hide_all_fields mt-position-right" value="<?php echo esc_attr(rgar($notification, 'subject')); ?> " /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php esc_html_e('Please enter a subject for the notification email', 'gravityforms'); ?> </span><?php } ?> </td> </tr> <!-- / subject --> <?php $ui_settings['notification_subject'] = ob_get_contents(); ob_clean(); ?> <?php $is_invalid_message = !$is_valid && empty($_POST['gform_notification_message']); $message_class = $is_invalid_message ? "class='gfield_error'" : ''; ?> <tr valign="top" <?php echo $message_class; ?> > <th scope="row"> <label for="gform_notification_message"> <?php esc_html_e('Message', 'gravityforms'); ?> <span class="gfield_required">*</span> </label> </th> <td> <span class="mt-gform_notification_message"></span> <?php if (GFCommon::is_wp_version('3.3')) { wp_editor(rgar($notification, 'message'), 'gform_notification_message', array('autop' => false, 'editor_class' => 'merge-tag-support mt-wp_editor mt-manual_position mt-position-right')); } else { ?> <textarea name="gform_notification_message" id="gform_notification_message" class="fieldwidth-1 fieldheight-1"><?php echo esc_html($notification['message']); ?> </textarea><?php } if ($is_invalid_message) { ?> <span class="validation_message"><?php esc_html_e('Please enter a message for the notification email', 'gravityforms'); ?> </span><?php } ?> </td> </tr> <!-- / message --> <?php $ui_settings['notification_message'] = ob_get_contents(); ob_clean(); ?> <tr valign="top"> <th scope="row"> <label for="gform_notification_disable_autoformat"> <?php esc_html_e('Auto-formatting', 'gravityforms'); ?> <?php gform_tooltip('notification_autoformat'); ?> </label> </th> <td> <input type="checkbox" name="gform_notification_disable_autoformat" id="gform_notification_disable_autoformat" value="1" <?php echo empty($notification['disableAutoformat']) ? '' : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php esc_html_e('Disable auto-formatting', 'gravityforms'); ?> <?php gform_tooltip('notification_autoformat'); ?> </label> </td> </tr> <!-- / disable autoformat --> <?php $ui_settings['notification_disable_autoformat'] = ob_get_contents(); ob_clean(); ?> <tr valign="top" <?php echo rgar($notification, 'isDefault') ? 'style=display:none;' : ''; ?> > <th scope="row"> <label for="gform_notification_conditional_logic"> <?php esc_html_e('Conditional Logic', 'gravityforms'); gform_tooltip('notification_conditional_logic'); ?> </label> </th> <td> <input type="checkbox" id="notification_conditional_logic" onclick="SetConditionalLogic(this.checked); ToggleConditionalLogic(false, 'notification');" <?php checked(is_array(rgar($notification, 'conditionalLogic')), true); ?> /> <label for="notification_conditional_logic" class="inline"><?php esc_html_e('Enable conditional logic', 'gravityforms'); gform_tooltip('notification_conditional_logic'); ?> </label> <br /> </td> </tr> <!-- / conditional logic --> <tr> <td colspan="2"> <div id="notification_conditional_logic_container" class="gf_animate_sub_settings" style="padding-left:10px;"> <!-- content dynamically created from form_admin.js --> </div> </td> </tr> <?php $ui_settings['notification_conditional_logic'] = ob_get_contents(); ob_clean(); ?> <?php ob_end_clean(); $ui_settings = apply_filters("gform_notification_ui_settings_{$form_id}", apply_filters('gform_notification_ui_settings', $ui_settings, $notification, $form), $notification, $form); return $ui_settings; }
/** * Get array of emails addresses from the stored entry * * @since 1.17 * * @return array Array of email addresses connected to the entry */ private static function get_note_emails_array() { $gravityview_view = GravityView_View::getInstance(); //getting email values $email_fields = GFCommon::get_email_fields($gravityview_view->getForm()); $entry = $gravityview_view->getCurrentEntry(); $note_emails = array(); foreach ($email_fields as $email_field) { if (!empty($entry["{$email_field->id}"]) && is_email($entry["{$email_field->id}"])) { $note_emails[] = $entry["{$email_field->id}"]; } } /** * @filter `gravityview/field/notes/emails` Modify the dropdown values displayed in the "Also email note to" dropdown * @since 1.17 * @param array $note_emails Array of email addresses connected to the entry * @param array $entry Current entry */ $note_emails = apply_filters('gravityview/field/notes/emails', $note_emails, $entry); return (array) $note_emails; }
public static function lead_detail_page() { global $wpdb; global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta($_GET["id"]); $lead_id = rgget('lid'); $filter = rgget("filter"); $status = in_array($filter, array("trash", "spam")) ? $filter : "active"; $search = rgget("s"); $position = rgget('pos') ? rgget('pos') : 0; $sort_direction = rgget('dir') ? rgget('dir') : 'DESC'; $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $star = $filter == "star" ? 1 : null; $read = $filter == "unread" ? 0 : null; // added status as an optional parameter to get_lead_count because the counts are inaccurate without using the status $lead_count = RGFormsModel::get_lead_count($form['id'], $search, $star, $read, null, null, $status); $prev_pos = !rgblank($position) && $position > 0 ? $position - 1 : false; $next_pos = !rgblank($position) && $position < $lead_count - 1 ? $position + 1 : false; // unread filter requires special handling for pagination since entries are filter out of the query as they are read if ($filter == 'unread') { $next_pos = $position; if ($next_pos + 1 == $lead_count) { $next_pos = false; } } // get the lead $leads = RGFormsModel::get_leads($form['id'], $sort_field, $sort_direction, $search, $position, 1, $star, $read, $is_numeric, null, null, $status); if (!$lead_id) { $lead = !empty($leads) ? $leads[0] : false; } else { $lead = RGFormsModel::get_lead($lead_id); } if (!$lead) { _e("Oops! We couldn't find your lead. Please try again", "gravityforms"); return; } RGFormsModel::update_lead_property($lead["id"], "is_read", 1); switch (RGForms::post("action")) { case "update": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::save_lead($form, $lead); do_action("gform_after_update_entry", $form, $lead["id"]); do_action("gform_after_update_entry_{$form["id"]}", $form, $lead["id"]); $lead = RGFormsModel::get_lead($lead["id"]); break; case "add_note": check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["new_note"])); //emailing notes if configured if (rgpost("gentry_email_notes_to")) { $email_to = $_POST["gentry_email_notes_to"]; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST["gentry_email_subject"]); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; $result = wp_mail($email_to, $email_subject, stripslashes($_POST["new_note"]), $headers); } break; case "add_quick_note": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["quick_note"])); break; case "bulk": check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST["bulk_action"] == "delete") { RGFormsModel::delete_notes($_POST["note"]); } break; case "trash": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "trash"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "restore": case "unspam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "active"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "spam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "spam"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "delete": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::delete_lead($lead["id"]); ?> <script type="text/javascript"> document.location.href='<?php echo "admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]); ?> '; </script> <?php break; } $mode = empty($_POST["screen_mode"]) ? "view" : $_POST["screen_mode"]; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" /> <script type="text/javascript"> jQuery(document).ready(function(){ toggleNotificationOverride(true); }); function DeleteFile(leadId, fieldId){ if(confirm(<?php _e("'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'", "gravityforms"); ?> )){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_delete_file" ); mysack.setVar( "rg_delete_file", "<?php echo wp_create_nonce("rg_delete_file"); ?> " ); mysack.setVar( "lead_id", leadId ); mysack.setVar( "field_id", fieldId ); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while deleting field.", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId){ jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } function ToggleShowEmptyFields(){ if(jQuery("#gentry_display_empty_fields").is(":checked")){ createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else{ eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function eraseCookie(name) { createCookie(name,"",-1); } function ResendNotifications() { var sendAdmin = jQuery("#notification_admin").is(":checked") ? 1 : 0; var sendUser = jQuery("#notification_user").is(":checked") ? 1 : 0; var sendTo = jQuery('#notification_override_email').val(); if(!sendAdmin && !sendUser) { displayMessage("<?php _e("You must select at least one type of notification to resend.", "gravityforms"); ?> ", "error", "#notifications_container"); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications : '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', sendAdmin : sendAdmin, sendUser : sendUser, sendTo : sendTo, leadIds : '<?php echo $lead['id']; ?> ', formId : '<?php echo $form['id']; ?> ' }, function(response) { if(response) { displayMessage(response, "error", "#notifications_container"); } else { displayMessage("<?php _e("Notifications were resent successfully.", "gravityforms"); ?> ", "updated", "#notifications_container"); // reset UI jQuery("#notification_admin, #notification_user").attr('checked', false); jQuery('#notification_override_email').val(''); } jQuery('#please_wait_container').hide(); setTimeout(function(){jQuery('#notifications_container').find('.message').slideUp();}, 5000); } ); } function displayMessage(message, messageClass, container){ jQuery(container).find('.message').hide().html(message).attr('class', 'message ' + messageClass).slideDown(); } function toggleNotificationOverride(isInit) { if(isInit) jQuery('#notification_override_email').val(''); if(jQuery('#notification_admin').is(':checked') || jQuery('#notification_user').is(':checked')) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function(){ jQuery('#notification_override_email').val(''); }); } } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value=""/> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost("screen_mode")); ?> " /> <div class="wrap gf_entry_wrap"> <div class="icon32" id="gravity-title-icon"><br></div> <h2><?php _e("Entry #", "gravityforms"); echo absint($lead["id"]); ?> </h2> <?php if (isset($_GET["pos"])) { ?> <div class="gf_entry_detail_pagination"> <ul> <li class="gf_entry_count"><span>entry <strong><?php echo $position + 1; ?> </strong> of <strong><?php echo $lead_count; ?> </strong></span></li> <li class="gf_entry_prev gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($prev_pos, 'Previous Entry', 'gf_entry_prev_link'); ?> </li> <li class="gf_entry_next gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($next_pos, 'Next Entry', 'gf_entry_next_link'); ?> </li> </ul> </div> <?php } ?> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <div id="submitdiv" class="stuffbox"> <h3> <span class="hndle"><?php _e("Info", "gravityforms"); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <br/> <?php _e("Entry Id", "gravityforms"); ?> : <?php echo absint($lead["id"]); ?> <br/><br/> <?php _e("Submitted on", "gravityforms"); ?> : <?php echo esc_html(GFCommon::format_date($lead["date_created"], false, "Y/m/d")); ?> <br/><br/> <?php _e("User IP", "gravityforms"); ?> : <?php echo $lead["ip"]; ?> <br/><br/> <?php if (!empty($lead["created_by"]) && ($usermeta = get_userdata($lead["created_by"]))) { ?> <?php _e("User", "gravityforms"); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead["created_by"]); ?> " alt="<?php _e("View user profile", "gravityforms"); ?> " title="<?php _e("View user profile", "gravityforms"); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br/><br/> <?php } ?> <?php _e("Embed Url", "gravityforms"); ?> : <a href="<?php echo esc_url($lead["source_url"]); ?> " target="_blank" alt="<?php echo esc_url($lead["source_url"]); ?> " title="<?php echo esc_url($lead["source_url"]); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead["source_url"])); ?> </a> <br/><br/> <?php if (!empty($lead["post_id"])) { $post = get_post($lead["post_id"]); ?> <?php _e("Edit Post", "gravityforms"); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php _e("Click to edit post", "gravityforms"); ?> " title="<?php _e("Click to edit post", "gravityforms"); ?> "><?php echo esc_html($post->post_title); ?> </a> <br/><br/> <?php } if (!empty($lead["payment_status"])) { echo $lead["transaction_type"] != 2 ? __("Payment Status", "gravityforms") : __("Subscription Status", "gravityforms"); ?> : <span id="gform_payment_status"><?php echo apply_filters("gform_payment_status", $lead["payment_status"], $form, $lead); ?> </span> <br/><br/> <?php if (!empty($lead["payment_date"])) { echo $lead["transaction_type"] == 1 ? __("Payment Date", "gravityforms") : __("Start Date", "gravityforms"); ?> : <?php echo GFCommon::format_date($lead["payment_date"], false, "Y/m/d", $lead["transaction_type"] == 1); ?> <br/><br/> <?php } if (!empty($lead["transaction_id"])) { echo $lead["transaction_type"] == 1 ? __("Transaction Id", "gravityforms") : __("Subscriber Id", "gravityforms"); ?> : <?php echo $lead["transaction_id"]; ?> <br/><br/> <?php } if (!rgblank($lead["payment_amount"])) { echo $lead["transaction_type"] == 1 ? __("Payment Amount", "gravityforms") : __("Subscription Amount", "gravityforms"); ?> : <?php echo GFCommon::to_money($lead["payment_amount"], $lead["currency"]); ?> <br/><br/> <?php } } do_action("gform_entry_info", $form["id"], $lead); ?> </div> <div id="major-publishing-actions"> <div> <?php switch ($lead["status"]) { case "spam": if (GFCommon::akismet_enabled($form['id'])) { ?> <a onclick="jQuery('#action').val('unspam'); jQuery('#entry_form').submit()" href="#"><?php _e("Not Spam", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; case "trash": ?> <a onclick="jQuery('#action').val('restore'); jQuery('#entry_form').submit()" href="#"><?php _e("Restore", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> | <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; default: if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('trash'); jQuery('#entry_form').submit()" href="#"><?php _e("Move to Trash", "gravityforms"); ?> </a> <?php echo GFCommon::akismet_enabled($form['id']) ? "|" : ""; } if (GFCommon::akismet_enabled($form['id'])) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('spam'); jQuery('#entry_form').submit()" href="#"><?php _e("Mark as Spam", "gravityforms"); ?> </a> <?php } } /*if(GFCommon::current_user_can_any("gravityforms_delete_entries")){ $delete_link = '<a class="submitdelete deletion" onclick="if ( confirm(\''. __("You are about to delete this entry. \'Cancel\' to stop, \'OK\' to delete.", "gravityforms") .'\') ) { jQuery(\'#action\').val(\'delete\'); jQuery(\'#entry_form\')[0].submit();} return false;" href="#">' . __("Delete", "gravityforms") . '</a>'; echo apply_filters("gform_entrydetail_delete_link", $delete_link); }*/ ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entries") && $lead["status"] != "trash") { $button_text = $mode == "view" ? __("Edit", "gravityforms") : __("Update", "gravityforms"); $button_click = $mode == "view" ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input class="button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters("gform_entrydetail_update_button", $update_button); if ($mode == "edit") { echo ' <input class="button" style="color:#bbb;" type="submit" tabindex="5" value="' . __("Cancel", "gravityforms") . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> </div> </div> </div> </div> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entry_notes") && (GFCommon::has_admin_notification($form) || GFCommon::has_user_notification($form))) { // TODO: do we need to set a permission for this? ?> <!-- start notifications --> <div class="postbox" id="notifications_container"> <h3 style="cursor:default;"><span><?php _e("Notifications", "gravityforms"); ?> </span></h3> <div class="inside"> <div class="message" style="display:none;padding:10px;margin:10px 0 0;"></div> <div> <br /> <?php if (GFCommon::has_admin_notification($form)) { ?> <input type="checkbox" name="notification_admin" id="notification_admin" onclick="toggleNotificationOverride();" /> <label for="notification_admin"><?php _e("Admin Notification", "gravityforms"); ?> </label> <br /><br /> <?php } ?> <?php if (GFCommon::has_user_notification($form)) { ?> <input type="checkbox" name="notification_user" id="notification_user" onclick="toggleNotificationOverride();" /> <label for="notification_user"><?php _e("User Notification", "gravityforms"); ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0; width:99%;">You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.</p> <label for="notification_override_email"><?php _e("Send To", "gravityforms"); ?> <?php gform_tooltip("notification_override_email"); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /> <br /><br /> </div> <input type="button" name="notification_resend" value="<?php _e("Resend Notifications", "gravityforms"); ?> " class="button" style="" onclick="ResendNotifications();"/> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <img src="<?php echo GFCommon::get_base_url(); ?> /images/loading.gif"> <?php _e("Resending...", "gravityforms"); ?> </span> </div> </div> </div> <!-- / end notifications --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo site_url(); ?> /?gf_page=print-entry&fid=<?php echo $form['id']; ?> &lid=<?php echo $lead['id']; ?> ' + notes_qs; window.open (url,'printwindow');" class="button"><?php _e("Print", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes"/> <label for="print_notes"><?php _e("include notes", "gravityforms"); ?> </label> <?php } ?> </div> <!-- end print button --> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php if ($mode == "view") { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } do_action("gform_entry_detail", $form, $lead); if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <div id="namediv" class="stuffbox"> <h3> <label for="name"><?php _e("Notes", "gravityforms"); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead["id"]); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field["id"]])) { $emails[] = $lead[$email_field["id"]]; } } //displaying notes grid $subject = !empty($form["autoResponder"]["subject"]) ? "RE: " . GFCommon::replace_variables($form["autoResponder"]["subject"], $form, $lead) : ""; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } ?> </div> </div> </div> </div> </form> <?php if (rgpost("action") == "update") { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Entry Updated.", "gravityforms"); ?> </div> <?php } }
public static function meta_box_notes($args, $metabox) { $entry = $args['entry']; $form = $args['form']; ?> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($entry['id']); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($entry[$email_field->id])) { $emails[] = $entry[$email_field->id]; } } //displaying notes grid $subject = ''; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> <?php }
public static function notification_page($form_id) { $form = RGFormsModel::get_form_meta($form_id); if ($_POST["save"]) { check_admin_referer('gforms_save_notification', 'gforms_save_notification'); $form["notification"]["to"] = stripslashes($_POST["form_notification_to"]); $form["notification"]["bcc"] = stripslashes($_POST["form_notification_bcc"]); $form["notification"]["subject"] = stripslashes($_POST["form_notification_subject"]); $form["notification"]["message"] = stripslashes($_POST["form_notification_message"]); $form["notification"]["from"] = empty($_POST["form_notification_from_field"]) ? stripslashes($_POST["form_notification_from"]) : ""; $form["notification"]["fromField"] = stripslashes($_POST["form_notification_from_field"]); $form["notification"]["fromName"] = empty($_POST["form_notification_from_name_field"]) ? stripslashes($_POST["form_notification_from_name"]) : ""; $form["notification"]["fromNameField"] = stripslashes($_POST["form_notification_from_name_field"]); $form["notification"]["replyTo"] = empty($_POST["form_notification_reply_to_field"]) ? stripslashes($_POST["form_notification_reply_to"]) : ""; $form["notification"]["replyToField"] = stripslashes($_POST["form_notification_reply_to_field"]); $form["notification"]["routing"] = !empty($_POST["gform_routing_meta"]) ? GFCommon::json_decode(stripslashes($_POST["gform_routing_meta"]), true) : null; $form["notification"]["disableAutoformat"] = $_POST["form_notification_disable_autoformat"]; $form["autoResponder"]["toField"] = stripslashes($_POST["form_autoresponder_to"]); $form["autoResponder"]["bcc"] = stripslashes($_POST["form_autoresponder_bcc"]); $form["autoResponder"]["fromName"] = stripslashes($_POST["form_autoresponder_from_name"]); $form["autoResponder"]["from"] = stripslashes($_POST["form_autoresponder_from"]); $form["autoResponder"]["replyTo"] = stripslashes($_POST["form_autoresponder_reply_to"]); $form["autoResponder"]["subject"] = stripslashes($_POST["form_autoresponder_subject"]); $form["autoResponder"]["message"] = stripslashes($_POST["form_autoresponder_message"]); $form["autoResponder"]["disableAutoformat"] = $_POST["form_autoresponder_disable_autoformat"]; //validating input... $invalid_tab = self::validate_notification(); if ($invalid_tab == 0) { //input valid, updating... //emptying notification email if it is supposed to be disabled if (empty($_POST["form_notification_enable_admin"]) || $_POST["notification_to"] == "routing") { $form["notification"]["to"] = ""; } //emptying notification routing if it is supposed to be disabled if (empty($_POST["form_notification_enable_admin"]) || $_POST["notification_to"] == "email") { $form["notification"]["routing"] = null; } //emptying autoResponder settings if it is supposed to be disabled if (empty($_POST["form_notification_enable_user"])) { $form["autoResponder"]["toField"] = ""; } RGFormsModel::update_form_meta($form_id, $form); } } $wp_email = get_bloginfo("admin_email"); $email_fields = GFCommon::get_email_fields($form); $name_fields = GFCommon::get_fields_by_type($form, array("name")); $has_admin_notification_fields = (!empty($form["notification"]["to"]) || !empty($form["notification"]["routing"])) && (!empty($form["notification"]["subject"]) || !empty($form["notification"]["message"])); $has_user_notification_fields = !empty($form["autoResponder"]["toField"]) && (!empty($form["autoResponder"]["subject"]) || !empty($form["autoResponder"]["message"])); $is_admin_notification_enabled = $has_admin_notification_fields && empty($_POST["save"]) || !empty($_POST["form_notification_enable_admin"]); $is_user_notification_enabled = $has_user_notification_fields && empty($_POST["save"]) || !empty($_POST["form_notification_enable_user"]); $is_routing_enabled = !empty($form["notification"]["routing"]) && $_POST["notification_to"] != "email"; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css?ver=<?php echo GFCommon::$version; ?> " /> <script type="text/javascript" src="<?php echo GFCommon::get_base_url(); ?> /js/forms.js?ver=<?php echo GFCommon::$version; ?> "></script> <script src="<?php echo GFCommon::get_base_url(); ?> /js/jquery.json-1.3.js?ver=<?php echo GFCommon::$version; ?> "></script> <script type="text/javascript"> var gform_has_unsaved_changes = false; jQuery(document).ready(function(){ jQuery("#entry_form input, #entry_form textarea, #entry_form select").change(function(){ gform_has_unsaved_changes = true; }); window.onbeforeunload = function(){ if (gform_has_unsaved_changes){ return "You have unsaved changes."; } } }); <?php if (empty($form["notification"])) { $form["notification"] = array(); } ?> var form = <?php echo GFCommon::json_encode($form); ?> ; function InsertVariable(element_id){ var variable = jQuery('#' + element_id + '_variable_select').val(); var messageElement = jQuery("#" + element_id); if(document.selection) { // Go the IE way messageElement[0].focus(); document.selection.createRange().text=variable; } else if(messageElement[0].selectionStart) { // Go the Gecko way obj = messageElement[0] obj.value = obj.value.substr(0, obj.selectionStart) + variable + obj.value.substr(obj.selectionEnd, obj.value.length); } else { messageElement.val(variable + messageElement.val()); } jQuery('#' + element_id + '_variable_select')[0].selectedIndex = 0; } function CreateRouting(routings){ var str = ""; for(var i=0; i< routings.length; i++){ var isSelected = routings[i].operator == "is" ? "selected='selected'" :""; var isNotSelected = routings[i].operator == "isnot" ? "selected='selected'" :""; var email = routings[i]["email"] ? routings[i]["email"] : ''; str += "<div style='width:99%'><?php _e("Send to", "gravityforms"); ?> <input type='text' id='routing_email_" + i +"' value='" + email + "' onkeyup='SetRouting(" + i + ");'/>"; str += " <?php _e("if", "gravityforms"); ?> " + GetRoutingFields(i, routings[i].fieldId); str += "<select id='routing_operator_" + i + "' onchange='SetRouting(" + i + ");'><option value='is' " + isSelected + "><?php _e("is", "gravityforms"); ?> </option><option value='isnot' " + isNotSelected + "><?php _e("is not", "gravityforms"); ?> </option></select>"; str += GetRoutingValues(i, routings[i].fieldId, routings[i].value); str += "<img src='<?php echo GFCommon::get_base_url(); ?> /images/add.png' class='add_field_choice' title='add another rule' alt='add another rule' style='cursor:pointer; margin:0 3px;' onclick=\"InsertRouting(" + (i+1) + ");\" />"; if(routings.length > 1 ) str += "<img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' title='remove this rule' alt='remove this rule' class='delete_field_choice' style='cursor:pointer;' onclick=\"DeleteRouting(" + i + ");\" /></li>"; str += "</div>"; } jQuery("#notification_to_routing_container").html(str); } function GetRoutingValues(index, fieldId, selectedValue){ var str = "<select class='gfield_routing_select' id='routing_value_" + index + "' onchange='SetRouting(" + index + ");'>"; str += GetFieldValues(fieldId, selectedValue, 16); str += "</select>"; return str; } function GetRoutingFields(index, selectedItem){ var str = "<select id='routing_field_id_" + index + "' class='gfield_routing_select' onchange='jQuery(\"#routing_value_" + index + "\").replaceWith(GetRoutingValues(" + index + ", jQuery(this).val())); SetRouting(" + index + "); '>"; str += GetSelectableFields(selectedItem, 16); str += "</select>"; return str; } //---------------------- generic --------------- function GetSelectableFields(selectedFieldId, labelMaxCharacters){ var str = ""; var inputType; for(var i=0; i<form.fields.length; i++){ inputType = form.fields[i].inputType ? form.fields[i].inputType : form.fields[i].type; if(inputType == "checkbox" || inputType == "radio" || inputType == "select"){ var selected = form.fields[i].id == selectedFieldId ? "selected='selected'" : ""; str += "<option value='" + form.fields[i].id + "' " + selected + ">" + TruncateMiddle(form.fields[i].label, labelMaxCharacters) + "</option>"; } } return str; } function GetFirstSelectableField(){ var inputType; for(var i=0; i<form.fields.length; i++){ inputType = form.fields[i].inputType ? form.fields[i].inputType : form.fields[i].type; if(inputType == "checkbox" || inputType == "radio" || inputType == "select") return form.fields[i].id; } return 0; } function TruncateMiddle(text, maxCharacters){ if(text.length <= maxCharacters) return text; var middle = parseInt(maxCharacters / 2); return text.substr(0, middle) + "..." + text.substr(text.length - middle, middle); } function GetFieldValues(fieldId, selectedValue, labelMaxCharacters){ if(!fieldId) fieldId = GetFirstSelectableField(); if(!fieldId) return ""; var str = ""; var field = GetFieldById(fieldId); var isAnySelected = false; for(var i=0; i<field.choices.length; i++){ var choiceValue = field.choices[i].value ? field.choices[i].value : field.choices[i].text; var isSelected = choiceValue == selectedValue; var selected = isSelected ? "selected='selected'" : ""; if(isSelected) isAnySelected = true; str += "<option value='" + choiceValue.replace("'", "'") + "' " + selected + ">" + TruncateMiddle(field.choices[i].text, labelMaxCharacters) + "</option>"; } if(!isAnySelected && selectedValue){ str += "<option value='" + selectedValue.replace("'", "'") + "' selected='selected'>" + TruncateMiddle(selectedValue, labelMaxCharacters) + "</option>"; } return str; } function GetFieldById(fieldId){ for(var i=0; i<form.fields.length; i++){ if(form.fields[i].id == fieldId) return form.fields[i]; } return null; } //--------------------------------------------------------------------------------- function InsertRouting(index){ var routings = form.notification.routing; routings.splice(index, 0, new ConditionalRule()); CreateRouting(routings); SetRouting(index); } function SetRouting(ruleIndex){ if(!form.notification.routing && ruleIndex == 0) form.notification.routing = [new ConditionalRule()]; form.notification.routing[ruleIndex]["email"] = jQuery("#routing_email_" + ruleIndex).val(); form.notification.routing[ruleIndex]["fieldId"] = jQuery("#routing_field_id_" + ruleIndex).val(); form.notification.routing[ruleIndex]["operator"] = jQuery("#routing_operator_" + ruleIndex).val(); form.notification.routing[ruleIndex]["value"] =jQuery("#routing_value_" + ruleIndex).val(); var json = jQuery.toJSON(form.notification.routing); jQuery('#gform_routing_meta').val(json); } function DeleteRouting(ruleIndex){ form.notification.routing.splice(ruleIndex, 1); CreateRouting(form.notification.routing); } </script> <?php echo GFCommon::get_remote_message(); ?> <form method="post" id="entry_form" onsubmit="gform_has_unsaved_changes = false; jQuery('#gform_routing_meta').val(jQuery.toJSON(form.notification.routing));"> <?php wp_nonce_field('gforms_save_notification', 'gforms_save_notification'); ?> <input type="hidden" id="gform_routing_meta" name="gform_routing_meta" /> <div class="wrap"> <img alt="<?php _e("Gravity Forms", "gravityforms"); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/gravity-notification-icon-32.png" style="float:left; margin:15px 7px 0 0;"/> <h2><?php _e("Notifications", "gravityforms"); ?> : <?php echo esc_html($form["title"]); ?> </h2> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder"> <div id="submitdiv" class="stuffbox"> <h3><span class="hndle"><?php _e("Notification to Administrator", "gravityforms"); ?> </span></h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishingx" style="padding:10px;"> <input type="checkbox" name="form_notification_enable_admin" id="form_notification_enable_admin" value="1" <?php echo $is_admin_notification_enabled ? "checked='checked'" : ""; ?> onclick="if(this.checked) {jQuery('#form_notification_admin_container').show('slow');} else {jQuery('#form_notification_to').val(''); jQuery('#form_notification_admin_container').hide('slow');}"/> <label for="form_notification_enable_admin"><?php _e("Enable email notification to administrators", "gravityforms"); ?> </label> <div id="form_notification_admin_container" style="display:<?php echo $is_admin_notification_enabled ? "block" : "none"; ?> ;"> <br/> <?php _e("Enter a message below to receive a notification email when users submit this form.", "gravityforms"); ?> <br/><br/><br/> <ul id="form_notification_container"> <?php $is_invalid_email_to = $invalid_tab == 1 && !self::is_valid_admin_to(); $class = $is_invalid_email_to ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <label for="notification_to_email"> <?php _e("Send To Email", "gravityforms"); ?> <span class="gfield_required">*</span> <?php gform_tooltip("notification_send_to_email"); ?> </label> <input type="radio" id="notification_to_email" name="notification_to" <?php echo !$is_routing_enabled ? "checked='checked'" : ""; ?> value="email" onclick="jQuery('#notification_to_routing_container').hide(); jQuery('#notification_to_email_container').show('slow');"/> <label for="notification_to_email" class="inline"> <?php _e("Email", "gravityforms"); ?> </label> <input type="radio" id="notification_to_routing" name="notification_to" <?php echo $is_routing_enabled ? "checked='checked'" : ""; ?> value="routing" onclick="jQuery('#notification_to_email_container').hide(); jQuery('#notification_to_routing_container').show('slow');"/> <label for="form_button_image" class="inline"> <?php _e("Routing", "gravityforms"); ?> <?php gform_tooltip("notification_send_to_routing"); ?> </label> <div id="notification_to_email_container" style="margin-top:5px; display:<?php echo $is_routing_enabled ? "none" : "block"; ?> ;"> <input type="text" name="form_notification_to" id="form_notification_to" value="<?php echo esc_attr($form["notification"]["to"]); ?> " class="fieldwidth-1" /> <?php if ($_POST["notification_to"] == "email" && $is_invalid_email_to) { ?> <span class="validation_message"><?php _e("Please enter a valid email address"); ?> </span> <?php } ?> </div> <div id="notification_to_routing_container" style="margin-top:5px; display:<?php echo $is_routing_enabled ? "block" : "none"; ?> ;"> <div> <?php $routing_fields = self::get_routing_fields($form, "0"); if (empty($routing_fields)) { //if(empty(){ ?> <div class="gold_notice"> <p><?php _e("To use notification routing, your form must have a drop down, checkbox or multiple choice field.", "gravityforms"); ?> </p> </div> <?php } else { if (empty($form["notification"]["routing"])) { $form["notification"]["routing"] = array(array()); } $count = sizeof($form["notification"]["routing"]); $routing_list = ","; for ($i = 0; $i < $count; $i++) { $routing_list .= $i . ","; $routing = $form["notification"]["routing"][$i]; $is_invalid_rule = $invalid_tab == 1 && $_POST["notification_to"] == "routing" && !self::is_valid_notification_email($routing["email"]); $class = $is_invalid_rule ? "class='grouting_rule_error'" : ""; ?> <div style='width:99%' <?php echo $class; ?> > <?php _e("Send to", "gravityforms"); ?> <input type="text" id="routing_email_<?php echo $i; ?> " value="<?php echo $routing["email"]; ?> " onkeyup="SetRouting(<?php echo $i; ?> );"/> <?php _e("if", "gravityforms"); ?> <select id="routing_field_id_<?php echo $i; ?> " class='gfield_routing_select' onchange='jQuery("#routing_value_<?php echo $i; ?> ").replaceWith(GetRoutingValues(<?php echo $i; ?> , jQuery(this).val())); SetRouting(<?php echo $i; ?> ); '><?php echo self::get_routing_fields($form, $routing["fieldId"]); ?> </select> <select id="routing_operator_<?php echo $i; ?> " onchange="SetRouting(<?php echo $i; ?> );"/> <option value="is" <?php echo $routing["operator"] == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravityforms"); ?> </option> <option value="isnot" <?php echo $routing["operator"] == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravityforms"); ?> </option> </select> <select id="routing_value_<?php echo $i; ?> " class='gfield_routing_select' onchange="SetRouting(<?php echo $i; ?> );"> <?php echo self::get_field_values($form, $routing["fieldId"], $routing["value"]); ?> </select> <img src='<?php echo GFCommon::get_base_url(); ?> /images/add.png' class='add_field_choice' title='add another email routing' alt='add another email routing' style='cursor:pointer; margin:0 3px;' onclick='SetRouting(<?php echo $i; ?> ); InsertRouting(<?php echo $i + 1; ?> );' /> <?php if ($count > 1) { ?> <img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' id='routing_delete_<?php echo $i; ?> ' title='remove this email routing' alt='remove this email routing' class='delete_field_choice' style='cursor:pointer;' onclick='DeleteRouting(<?php echo $i; ?> );' /> <?php } ?> </div> <?php } if ($is_invalid_rule) { ?> <span class="validation_message"><?php _e("Please enter a valid email address for all highlighted routing rules above."); ?> </span> <?php } ?> <input type="hidden" name="routing_count" id="routing_count" value="<?php echo $routing_list; ?> "/> <?php } ?> </div> </div> </li> <li> <label for="form_notification_from"> <?php _e("From Name", "gravityforms"); ?> <?php gform_tooltip("notification_from_name"); ?> </label> <input type="text" class="fieldwidth-2" name="form_notification_from_name" id="form_notification_from_name" onkeydown="jQuery('#form_notification_from_name_field').val('');" onchange="jQuery('#form_notification_from_name_field').val('');" value="<?php echo esc_attr($form["notification"]["fromName"]); ?> "/> <?php if (!empty($name_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_from_name_field" id="form_notification_from_name_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_from_name').val('');"> <option value=""><?php _e("Select a name field", "gravityforms"); ?> </option> <?php foreach ($name_fields as $field) { $selected = $form["notification"]["fromNameField"] == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_from"> <?php _e("From Email", "gravityforms"); ?> <?php gform_tooltip("notification_from_email"); ?> </label> <input type="text" class="fieldwidth-2" name="form_notification_from" id="form_notification_from" onkeydown="jQuery('#form_notification_from_field').val('');" onchange="jQuery('#form_notification_from_field').val('');" value="<?php echo empty($form["notification"]["from"]) && empty($form["notification"]["fromField"]) ? esc_attr($wp_email) : esc_attr($form["notification"]["from"]); ?> "/> <?php if (!empty($email_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_from_field" id="form_notification_from_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_from').val('');"> <option value=""><?php _e("Select an email field", "gravityforms"); ?> </option> <?php foreach ($email_fields as $field) { $selected = $form["notification"]["fromField"] == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_reply_to"> <?php _e("Reply To", "gravityforms"); ?> <?php gform_tooltip("notification_reply_to"); ?> </label> <input type="text" name="form_notification_reply_to" id="form_notification_reply_to" onkeydown="jQuery('#form_notification_reply_to_field').val('');" onchange="jQuery('#form_notification_reply_to_field').val('');" value="<?php echo esc_attr($form["notification"]["replyTo"]); ?> " class="fieldwidth-2" /> <?php if (!empty($email_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_reply_to_field" id="form_notification_reply_to_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_reply_to').val('');"> <option value=""><?php _e("Select an email field", "gravityforms"); ?> </option> <?php foreach ($email_fields as $field) { $selected = $form["notification"]["replyToField"] == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_bcc"> <?php _e("BCC", "gravityforms"); ?> <?php gform_tooltip("notification_bcc"); ?> </label> <input type="text" name="form_notification_bcc" id="form_notification_bcc" value="<?php echo esc_attr($form["notification"]["bcc"]); ?> " class="fieldwidth-1" /> </li> <?php $is_invalid_subject = $invalid_tab == 1 && empty($_POST["form_notification_subject"]); $class = $is_invalid_subject ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_notification_subject"> <?php _e("Subject", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_notification_subject", true); ?> </div> <input type="text" name="form_notification_subject" id="form_notification_subject" value="<?php echo esc_attr($form["notification"]["subject"]); ?> " class="fieldwidth-1" /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php _e("Please enter a subject for the notification email"); ?> </span> <?php } ?> </div> </li> <?php $is_invalid_message = $invalid_tab == 1 && empty($_POST["form_notification_message"]); $class = $is_invalid_message ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_notification_message"> <?php _e("Message", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_notification_message"); ?> </div> <textarea name="form_notification_message" id="form_notification_message" class="fieldwidth-1 fieldheight-1" ><?php echo esc_html($form["notification"]["message"]); ?> </textarea> <?php if ($is_invalid_message) { ?> <span class="validation_message"><?php _e("Please enter a message for the notification email"); ?> </span> <?php } ?> </div> </li> <li> <div> <input type="checkbox" name="form_notification_disable_autoformat" id="form_notification_disable_autoformat" value="1" <?php echo empty($form["notification"]["disableAutoformat"]) ? "" : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php _e("Disable Auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </div> </li> </ul> </div> </div> </div> </div> </div> <div id="submitdiv" class="stuffbox"> <h3><span class="hndle"><?php _e("Notification to User", "gravityforms"); ?> </span></h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishingx" style="padding:10px;"> <?php if (empty($email_fields)) { ?> <div class="gold_notice"> <p><?php echo sprintf(__("Your form does not have any %semail%s field.", "gravityforms"), "<strong>", "</strong>"); ?> </p> <p> <?php echo sprintf(__("Sending notifications to users require that the form has at least one email field. %sEdit your form%s", "gravityforms"), '<a href="?page=gf_edit_forms&id=' . absint($form_id) . '">', '</a>'); ?> </p> </div> <?php } else { ?> <input type="checkbox" name="form_notification_enable_user" id="form_notification_enable_user" value="1" <?php echo $is_user_notification_enabled ? "checked='checked'" : ""; ?> onclick="if(this.checked) {jQuery('#form_notification_user_container').show('slow');} else {jQuery('#form_notification_user_container').hide('slow');}"/> <label for="form_notification_enable_user"><?php _e("Enable email notification to users", "gravityforms"); ?> </label> <div id="form_notification_user_container" style="display:<?php echo $is_user_notification_enabled ? "block" : "none"; ?> ;"> <br/> <?php _e("Enter a message below to send users an automatic response when they submit this form.", "gravityforms"); ?> <br/><br/><br/> <ul id="form_autoresponder_container"> <li> <label for="form_autoresponder_to"> <?php _e("Send To Field", "gravityforms"); ?> <span class="gfield_required">*</span> <?php gform_tooltip("autoresponder_send_to_email"); ?> </label> <select name="form_autoresponder_to" id="form_autoresponder_to"> <?php foreach ($email_fields as $field) { $selected = $form["autoResponder"]["toField"] == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo esc_html(GFCommon::get_label($field)); ?> </option> <?php } ?> </select> </li> <li> <label for="form_autoresponder_from_name"> <?php _e("From Name", "gravityforms"); ?> <?php gform_tooltip("autoresponder_from_name"); ?> </label> <input type="text" name="form_autoresponder_from_name" id="form_autoresponder_from_name" value="<?php echo esc_attr($form["autoResponder"]["fromName"]); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_from"> <?php _e("From Email", "gravityforms"); ?> <?php gform_tooltip("autoresponder_from"); ?> </label> <input type="text" name="form_autoresponder_from" id="form_autoresponder_from" value="<?php echo empty($form["autoResponder"]["from"]) ? esc_attr($wp_email) : esc_attr($form["autoResponder"]["from"]); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_reply_to" style="display:block;"> <?php _e("Reply To (optional)", "gravityforms"); ?> <?php gform_tooltip("autoresponder_reply_to"); ?> </label> <input type="text" name="form_autoresponder_reply_to" id="form_autoresponder_reply_to" value="<?php echo esc_attr($form["autoResponder"]["replyTo"]); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_bcc"> <?php _e("BCC", "gravityforms"); ?> <?php gform_tooltip("autoresponder_bcc"); ?> </label> <input type="text" name="form_autoresponder_bcc" id="form_autoresponder_bcc" value="<?php echo esc_attr($form["autoResponder"]["bcc"]); ?> " class="fieldwidth-1" /> </li> <?php $is_invalid_subject = $invalid_tab == 2 && empty($_POST["form_autoresponder_subject"]); $class = $is_invalid_subject ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <label for="form_autoresponder_subject"> <?php _e("Subject", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_autoresponder_subject", true); ?> </div> <input type="text" name="form_autoresponder_subject" id="form_autoresponder_subject" value="<?php echo esc_attr($form["autoResponder"]["subject"]); ?> " class="fieldwidth-1" /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php _e("Please enter a subject for the user notification email"); ?> </span> <?php } ?> </li> <?php $is_invalid_message = $invalid_tab == 2 && empty($_POST["form_autoresponder_message"]); $class = $is_invalid_message ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_autoresponder_message"> <?php _e("Message", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_autoresponder_message"); ?> </div> <textarea name="form_autoresponder_message" id="form_autoresponder_message" class="fieldwidth-1 fieldheight-1"><?php echo esc_html($form["autoResponder"]["message"]); ?> </textarea> <?php if ($is_invalid_message) { ?> <span class="validation_message"><?php _e("Please enter a message for the user notification email"); ?> </span> <?php } ?> </div> </li> <li> <div> <input type="checkbox" name="form_autoresponder_disable_autoformat" id="form_autoresponder_disable_autoformat" value="1" <?php echo empty($form["autoResponder"]["disableAutoformat"]) ? "" : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php _e("Disable Auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </div> </li> </ul> </div> <?php } ?> </div> </div> </div> </div> <br class="clear" /> <div> <?php $notification_button = '<input class="button-primary" type="submit" value="' . __("Save Settings", "gravityforms") . '" name="save"/>'; echo apply_filters("gform_save_notification_button", $notification_button); ?> </div> </div> </div> </form> <?php if ($_POST["save"]) { if ($invalid_tab == 0) { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Notification Updated.", "gravityforms"); ?> </div> <?php } else { ?> <div class="error" style="padding:6px;"> <?php _e("Notification could not be updated. Please enter all required information below.", "gravityforms"); ?> </div> <?php } } }
public static function lead_detail_page() { global $wpdb; global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta($_GET["id"]); $lead = RGFormsModel::get_lead($_GET["lid"]); if (!$lead) { _e("OOps! We couldn't find your lead. Please try again", "gravityforms"); return; } RGFormsModel::update_lead_property($lead["id"], "is_read", 1); $search_qs = empty($_GET["s"]) ? "" : "&s=" . $_GET["s"]; $sort_qs = empty($_GET["sort"]) ? "" : "&sort=" . $_GET["sort"]; $dir_qs = empty($_GET["dir"]) ? "" : "&dir=" . $_GET["dir"]; $page_qs = empty($_GET["paged"]) ? "" : "&paged=" . absint($_GET["paged"]); switch (RGForms::post("action")) { case "update": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::save_lead($form, $lead); $lead = RGFormsModel::get_lead($_GET["lid"]); break; case "add_note": check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["new_note"])); //emailing notes if configured if (rgpost("gentry_email_notes_to")) { $email_to = $_POST["gentry_email_notes_to"]; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST["gentry_email_subject"]); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; $result = wp_mail($email_to, $email_subject, stripslashes($_POST["new_note"]), $headers); } break; case "add_quick_note": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["quick_note"])); break; case "bulk": check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST["bulk_action"] == "delete") { RGFormsModel::delete_notes($_POST["note"]); } break; case "delete": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::delete_lead($lead["id"]); ?> <div id="message" class="updated fade" style="background-color: rgb(255, 251, 204); margin-top:50px; padding:50px;"> <?php _e("Entry has been deleted.", "gravityforms"); ?> <a href="<?php echo esc_url("admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]) . $search_qs . $sort_qs . $dir_qs . $page_qs); ?> "><?php _e("Back to entries list", "gravityforms"); ?> </a> </div> <?php exit; break; } $mode = empty($_POST["screen_mode"]) ? "view" : $_POST["screen_mode"]; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" /> <script type="text/javascript"> function DeleteFile(leadId, fieldId){ if(confirm(<?php _e("'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'", "gravityforms"); ?> )){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_delete_file" ); mysack.setVar( "rg_delete_file", "<?php echo wp_create_nonce("rg_delete_file"); ?> " ); mysack.setVar( "lead_id", leadId ); mysack.setVar( "field_id", fieldId ); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while deleting field.", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId){ jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } function ToggleShowEmptyFields(){ if(jQuery("#gentry_display_empty_fields").is(":checked")){ createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else{ eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function eraseCookie(name) { createCookie(name,"",-1); } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value=""/> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost("screen_mode")); ?> " /> <div class="wrap"> <img alt="<?php _e("Gravity Forms", "gravityforms"); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/gravity-title-icon-32.png" style="float:left; margin:15px 7px 0 0;"/> <h2><?php _e("Entry #", "gravityforms"); echo absint($lead["id"]); ?> </h2> <a href="<?php echo esc_url("admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]) . $search_qs . $sort_qs . $dir_qs . $page_qs); ?> "><?php _e("« back to entries list", "gravityforms"); ?> </a> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <div id="submitdiv" class="stuffbox"> <h3> <span class="hndle"><?php _e("Info", "gravityforms"); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <br/> <?php _e("Entry Id", "gravityforms"); ?> : <?php echo absint($lead["id"]); ?> <br/><br/> <?php _e("Submitted on", "gravityforms"); ?> : <?php echo esc_html(GFCommon::format_date($lead["date_created"], false, "Y/m/d")); ?> <br/><br/> <?php _e("User IP", "gravityforms"); ?> : <?php echo $lead["ip"]; ?> <br/><br/> <?php if (!empty($lead["created_by"]) && ($usermeta = get_userdata($lead["created_by"]))) { ?> <?php _e("User", "gravityforms"); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead["created_by"]); ?> " alt="<?php _e("View user profile", "gravityforms"); ?> " title="<?php _e("View user profile", "gravityforms"); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br/><br/> <?php } ?> <?php _e("Embed Url", "gravityforms"); ?> : <a href="<?php echo esc_url($lead["source_url"]); ?> " target="_blank" alt="<?php echo esc_url($lead["source_url"]); ?> " title="<?php echo esc_url($lead["source_url"]); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead["source_url"])); ?> </a> <br/><br/> <?php if (!empty($lead["post_id"])) { $post = get_post($lead["post_id"]); ?> <?php _e("Edit Post", "gravityforms"); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php _e("Click to edit post", "gravityforms"); ?> " title="<?php _e("Click to edit post", "gravityforms"); ?> "><?php echo esc_html($post->post_title); ?> </a> <br/><br/> <?php } if (!empty($lead["payment_status"])) { echo $lead["transaction_type"] != 2 ? __("Payment Status", "gravityforms") : __("Subscription Status", "gravityforms"); ?> : <?php echo $lead["payment_status"]; ?> <br/><br/> <?php if (!empty($lead["payment_date"])) { echo $lead["transaction_type"] == 1 ? __("Payment Date", "gravityforms") : __("Start Date", "gravityforms"); ?> : <?php echo GFCommon::format_date($lead["payment_date"], false, "Y/m/d", $lead["transaction_type"] == 1); ?> <br/><br/> <?php } if (!empty($lead["transaction_id"])) { echo $lead["transaction_type"] == 1 ? __("Transaction Id", "gravityforms") : __("Subscriber Id", "gravityforms"); ?> : <?php echo $lead["transaction_id"]; ?> <br/><br/> <?php } if (strlen($lead["payment_amount"]) > 0) { echo $lead["transaction_type"] == 1 ? __("Payment Amount", "gravityforms") : __("Subscription Amount", "gravityforms"); ?> : <?php echo GFCommon::to_money($lead["payment_amount"], $lead["currency"]); ?> <br/><br/> <?php } } do_action("gform_entry_info", $form["id"], $lead); ?> </div> <div id="major-publishing-actions"> <div id="delete-action"> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { $delete_link = '<a class="submitdelete deletion" onclick="if ( confirm(\'' . __("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms") . '\') ) { jQuery(\'#action\').val(\'delete\'); jQuery(\'#entry_form\')[0].submit();} return false;" href="#">' . __("Delete", "gravityforms") . '</a>'; echo apply_filters("gform_entrydetail_delete_link", $delete_link); } ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entries")) { $button_text = $mode == "view" ? __("Edit Entry", "gravityforms") : __("Update Entry", "gravityforms"); $button_click = $mode == "view" ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input class="button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters("gform_entrydetail_update_button", $update_button); if ($mode == "edit") { echo ' <input class="button" style="color:#bbb;" type="submit" tabindex="5" value="' . __("Cancel", "gravityforms") . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> <br/> <br/><br/> </div> </div> </div> </div> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entry_notes")) { ?> <!-- start side notes --> <div class="postbox" id="tagsdiv-post_tag"> <h3 style="cursor:default;"><span>Quick Note</span></h3> <div class="inside"> <div id="post_tag" class="tagsdiv"> <div> <span> <textarea name="quick_note" style="width:99%; height:180px; margin-bottom:4px;"></textarea> <input type="submit" name="add_quick_note" value="<?php _e("Add Note", "gravityforms"); ?> " class="button" style="width:60px;" onclick="jQuery('#action').val('add_quick_note');"/> </span> </div> </div> </div> </div> <!-- end side notes --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo GFCommon::get_base_url(); ?> /print-entry.php?fid=<?php echo $form['id']; ?> &lid=<?php echo $lead['id']; ?> ' + notes_qs; window.open (url,'printwindow');" class="button">Print</a> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes"/> <label for="print_notes">include notes</label> <?php } ?> </div> <!-- end print button --> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php if ($mode == "view") { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } ?> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <div id="namediv" class="stuffbox"> <h3> <label for="name"><?php _e("Notes", "gravityforms"); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead["id"]); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field["id"]])) { $emails[] = $lead[$email_field["id"]]; } } //displaying notes grid $subject = !empty($form["autoResponder"]["subject"]) ? "RE: " . GFCommon::replace_variables($form["autoResponder"]["subject"], $form, $lead) : ""; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } ?> </div> </div> </div> </div> </form> <?php if (rgpost("action") == "update") { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Entry Updated.", "gravityforms"); ?> </div> <?php } }
public static function notification_page($form_id) { add_action('media_buttons', array('GFNotification', 'media_buttons'), 40); $form = RGFormsModel::get_form_meta($form_id); $invalid_tab = ""; if (rgpost("save")) { check_admin_referer('gforms_save_notification', 'gforms_save_notification'); $form["notification"]["to"] = rgpost("form_notification_to"); $form["notification"]["bcc"] = rgpost("form_notification_bcc"); $form["notification"]["subject"] = rgpost("form_notification_subject"); $form["notification"]["message"] = rgpost("form_notification_message"); $form["notification"]["from"] = rgempty("form_notification_from_field") ? rgpost("form_notification_from") : ""; $form["notification"]["fromField"] = rgpost("form_notification_from_field"); $form["notification"]["fromName"] = rgempty("form_notification_from_name_field") ? rgpost("form_notification_from_name") : ""; $form["notification"]["fromNameField"] = rgpost("form_notification_from_name_field"); $form["notification"]["replyTo"] = rgempty("form_notification_reply_to_field") ? rgpost("form_notification_reply_to") : ""; $form["notification"]["replyToField"] = rgpost("form_notification_reply_to_field"); $form["notification"]["routing"] = !rgempty("gform_routing_meta") ? GFCommon::json_decode(rgpost("gform_routing_meta"), true) : null; $form["notification"]["disableAutoformat"] = rgpost("form_notification_disable_autoformat"); $form["autoResponder"]["toField"] = rgpost("form_autoresponder_to"); $form["autoResponder"]["bcc"] = rgpost("form_autoresponder_bcc"); $form["autoResponder"]["fromName"] = rgpost("form_autoresponder_from_name"); $form["autoResponder"]["from"] = rgpost("form_autoresponder_from"); $form["autoResponder"]["replyTo"] = rgpost("form_autoresponder_reply_to"); $form["autoResponder"]["subject"] = rgpost("form_autoresponder_subject"); $form["autoResponder"]["message"] = rgpost("form_autoresponder_message"); $form["autoResponder"]["disableAutoformat"] = rgpost("form_autoresponder_disable_autoformat"); //validating input... $invalid_tab = self::validate_notification(); if ($invalid_tab == 0) { //input valid, updating... //emptying notification email if it is supposed to be disabled if (empty($_POST["form_notification_enable_admin"]) || $_POST["notification_to"] == "routing") { $form["notification"]["to"] = ""; } //emptying notification routing if it is supposed to be disabled if (empty($_POST["form_notification_enable_admin"]) || $_POST["notification_to"] == "email") { $form["notification"]["routing"] = null; } //emptying autoResponder settings if it is supposed to be disabled if (empty($_POST["form_notification_enable_user"])) { $form["autoResponder"]["toField"] = ""; } RGFormsModel::update_form_meta($form_id, $form); } } $wp_email = "{admin_email}"; $email_fields = GFCommon::get_email_fields($form); $name_fields = GFCommon::get_fields_by_type($form, array("name")); $has_admin_notification_fields = GFCommon::has_admin_notification($form); $has_user_notification_fields = GFCommon::has_user_notification($form); $is_admin_notification_enabled = $has_admin_notification_fields && empty($_POST["save"]) || !empty($_POST["form_notification_enable_admin"]); $is_user_notification_enabled = $has_user_notification_fields && empty($_POST["save"]) || !empty($_POST["form_notification_enable_user"]); $is_routing_enabled = !empty($form["notification"]["routing"]) && rgpost("notification_to") != "email"; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css?ver=<?php echo GFCommon::$version; ?> " /> <script type="text/javascript" src="<?php echo GFCommon::get_base_url(); ?> /js/forms.js?ver=<?php echo GFCommon::$version; ?> "></script> <script src="<?php echo GFCommon::get_base_url(); ?> /js/jquery.json-1.3.js?ver=<?php echo GFCommon::$version; ?> "></script> <script type="text/javascript"> var gform_has_unsaved_changes = false; jQuery(document).ready(function(){ jQuery("#entry_form input, #entry_form textarea, #entry_form select").change(function(){ gform_has_unsaved_changes = true; }); window.onbeforeunload = function(){ if (gform_has_unsaved_changes){ return "You have unsaved changes."; } } if(jQuery(document).on){ jQuery(document).on('change', '.gfield_routing_value_dropdown', function(){ SetRoutingValueDropDown(jQuery(this)); }); } else{ jQuery('.gfield_routing_value_dropdown').live('change', function(){ SetRoutingValueDropDown(jQuery(this)); }); } }); <?php if (empty($form["notification"])) { $form["notification"] = array(); } ?> var form = <?php echo GFCommon::json_encode($form); ?> ; function SetRoutingValueDropDown(element){ //parsing ID to get routing Index var index = element.attr("id").replace("routing_value_", ""); SetRouting(index); } function InsertVariable(element_id, callback, variable){ if(!variable) variable = jQuery('#' + element_id + '_variable_select').val(); var messageElement = jQuery("#" + element_id); if(document.selection) { // Go the IE way messageElement[0].focus(); document.selection.createRange().text=variable; } else if(messageElement[0].selectionStart) { // Go the Gecko way obj = messageElement[0] obj.value = obj.value.substr(0, obj.selectionStart) + variable + obj.value.substr(obj.selectionEnd, obj.value.length); } else { messageElement.val(variable + messageElement.val()); } jQuery('#' + element_id + '_variable_select')[0].selectedIndex = 0; if(callback && window[callback]){ window[callback].call(null, element_id, variable); } } function InsertEditorVariable(elementId){ var select = jQuery("#" + elementId + "_variable_select"); var variable = select.val(); select[0].selectedIndex = 0; wpActiveEditor = elementId; window.send_to_editor(variable); } function CreateRouting(routings){ var str = ""; for(var i=0; i< routings.length; i++){ var isSelected = routings[i].operator == "is" ? "selected='selected'" :""; var isNotSelected = routings[i].operator == "isnot" ? "selected='selected'" :""; var greaterThanSelected = routings[i].operator == ">" ? "selected='selected'" :""; var lessThanSelected = routings[i].operator == "<" ? "selected='selected'" :""; var containsSelected = routings[i].operator == "contains" ? "selected='selected'" :""; var startsWithSelected = routings[i].operator == "starts_with" ? "selected='selected'" :""; var endsWithSelected = routings[i].operator == "ends_with" ? "selected='selected'" :""; var email = routings[i]["email"] ? routings[i]["email"] : ''; str += "<div style='width:99%'><?php _e("Send to", "gravityforms"); ?> <input type='text' id='routing_email_" + i +"' value='" + email + "' onkeyup='SetRouting(" + i + ");'/>"; str += " <?php _e("if", "gravityforms"); ?> " + GetRoutingFields(i, routings[i].fieldId); str += "<select id='routing_operator_" + i + "' onchange='SetRouting(" + i + ");'>"; str += "<option value='is' " + isSelected + "><?php _e("is", "gravityforms"); ?> </option>"; str += "<option value='isnot' " + isNotSelected + "><?php _e("is not", "gravityforms"); ?> </option>"; str += "<option value='>' " + greaterThanSelected + "><?php _e("greater than", "gravityforms"); ?> </option>"; str += "<option value='<' " + lessThanSelected + "><?php _e("less than", "gravityforms"); ?> </option>"; str += "<option value='contains' " + containsSelected + "><?php _e("contains", "gravityforms"); ?> </option>"; str += "<option value='starts_with' " + startsWithSelected + "><?php _e("starts with", "gravityforms"); ?> </option>"; str += "<option value='ends_with' " + endsWithSelected + "><?php _e("ends with", "gravityforms"); ?> </option>"; str += "</select>"; str += GetRoutingValues(i, routings[i].fieldId, routings[i].value); str += "<img src='<?php echo GFCommon::get_base_url(); ?> /images/add.png' class='add_field_choice' title='add another rule' alt='add another rule' style='cursor:pointer; margin:0 3px;' onclick=\"InsertRouting(" + (i+1) + ");\" />"; if(routings.length > 1 ) str += "<img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' title='remove this rule' alt='remove this rule' class='delete_field_choice' style='cursor:pointer;' onclick=\"DeleteRouting(" + i + ");\" /></li>"; str += "</div>"; } jQuery("#notification_to_routing_container").html(str); } function GetRoutingValues(index, fieldId, selectedValue){ str = GetFieldValues(index, fieldId, selectedValue, 16); return str; } function GetRoutingFields(index, selectedItem){ var str = "<select id='routing_field_id_" + index + "' class='gfield_routing_select' onchange='jQuery(\"#routing_value_" + index + "\").replaceWith(GetRoutingValues(" + index + ", jQuery(this).val())); SetRouting(" + index + "); '>"; str += GetSelectableFields(selectedItem, 16); str += "</select>"; return str; } //---------------------- generic --------------- function GetSelectableFields(selectedFieldId, labelMaxCharacters){ var str = ""; var inputType; for(var i=0; i<form.fields.length; i++){ inputType = form.fields[i].inputType ? form.fields[i].inputType : form.fields[i].type; //see if this field type can be used for conditionals if (IsNotificationConditionalLogicField(form.fields[i])) { var selected = form.fields[i].id == selectedFieldId ? "selected='selected'" : ""; str += "<option value='" + form.fields[i].id + "' " + selected + ">" + form.fields[i].label + "</option>"; } } return str; } function IsNotificationConditionalLogicField(field){ //this function is a duplicate of IsConditionalLogicField from form_editor.js inputType = field.inputType ? field.inputType : field.type; var supported_fields = ["checkbox", "radio", "select", "text", "website", "textarea", "email", "hidden", "number", "phone", "multiselect", "post_title", "post_tags", "post_custom_field", "post_content", "post_excerpt"]; var index = jQuery.inArray(inputType, supported_fields); return index >= 0; } function GetFirstSelectableField(){ var inputType; for(var i=0; i<form.fields.length; i++){ inputType = form.fields[i].inputType ? form.fields[i].inputType : form.fields[i].type; if (IsNotificationConditionalLogicField(form.fields[i])){ return form.fields[i].id; } } return 0; } function TruncateMiddle(text, maxCharacters){ if(!text) return ""; if(text.length <= maxCharacters) return text; var middle = parseInt(maxCharacters / 2); return text.substr(0, middle) + "..." + text.substr(text.length - middle, middle); } function GetFieldValues(index, fieldId, selectedValue, labelMaxCharacters){ if(!fieldId) fieldId = GetFirstSelectableField(); if(!fieldId) return ""; var str = ""; var field = GetFieldById(fieldId); var isAnySelected = false; if(!field) return ""; if(field["type"] == "post_category" && field["displayAllCategories"]){ var dropdown_id = "routing_value_" + index; var dropdown = jQuery('#' + dropdown_id + ".gfield_category_dropdown"); //don't load category drop down if it already exists (to avoid unecessary ajax requests) if(dropdown.length > 0){ var options = dropdown.html(); options = options.replace("value=\"" + selectedValue + "\"", "value=\"" + selectedValue + "\" selected=\"selected\""); str = "<select id='" + dropdown_id + "' class='gfield_routing_select gfield_category_dropdown gfield_routing_value_dropdown'>" + options + "</select>"; } else{ //loading categories via AJAX jQuery.post(ajaxurl,{ action:"gf_get_notification_post_categories", ruleIndex: index, selectedValue: selectedValue}, function(dropdown_string){ if(dropdown_string){ jQuery('#gfield_ajax_placeholder_' + index).replaceWith(dropdown_string.trim()); } } ); //will be replaced by real drop down during the ajax callback str = "<select id='gfield_ajax_placeholder_" + index + "' class='gfield_routing_select'><option><?php _e("Loading...", "gravityforms"); ?> </option></select>"; } } else if(field.choices){ //create a drop down for fields that have choices (i.e. drop down, radio, checkboxes, etc...) str = "<select class='gfield_routing_select gfield_routing_value_dropdown' id='routing_value_" + index + "'>"; for(var i=0; i<field.choices.length; i++){ var choiceValue = field.choices[i].value ? field.choices[i].value : field.choices[i].text; var isSelected = choiceValue == selectedValue; var selected = isSelected ? "selected='selected'" : ""; if(isSelected) isAnySelected = true; str += "<option value='" + choiceValue.replace(/'/g, "'") + "' " + selected + ">" + field.choices[i].text + "</option>"; } if(!isAnySelected && selectedValue){ str += "<option value='" + selectedValue.replace(/'/g, "'") + "' selected='selected'>" + selectedValue + "</option>"; } str += "</select>"; } else { selectedValue = selectedValue ? selectedValue.replace(/'/g, "'") : ""; //create a text field for fields that don't have choices (i.e text, textarea, number, email, etc...) str = "<input type='text' placeholder='<?php _e("Enter value", "gravityforms"); ?> ' class='gfield_routing_select' id='routing_value_" + index + "' value='" + selectedValue.replace(/'/g, "'") + "' onchange='SetRouting(" + index + ");' onkeyup='SetRouting(" + index + ");'>"; } return str; } function GetFieldById(fieldId){ for(var i=0; i<form.fields.length; i++){ if(form.fields[i].id == fieldId) return form.fields[i]; } return null; } //--------------------------------------------------------------------------------- function InsertRouting(index){ var routings = form.notification.routing; routings.splice(index, 0, new ConditionalRule()); CreateRouting(routings); SetRouting(index); } function SetRouting(ruleIndex){ if(!form.notification.routing && ruleIndex == 0) form.notification.routing = [new ConditionalRule()]; form.notification.routing[ruleIndex]["email"] = jQuery("#routing_email_" + ruleIndex).val(); form.notification.routing[ruleIndex]["fieldId"] = jQuery("#routing_field_id_" + ruleIndex).val(); form.notification.routing[ruleIndex]["operator"] = jQuery("#routing_operator_" + ruleIndex).val(); form.notification.routing[ruleIndex]["value"] =jQuery("#routing_value_" + ruleIndex).val(); var json = jQuery.toJSON(form.notification.routing); jQuery('#gform_routing_meta').val(json); } function DeleteRouting(ruleIndex){ form.notification.routing.splice(ruleIndex, 1); CreateRouting(form.notification.routing); } </script> <?php echo GFCommon::get_remote_message(); ?> <form method="post" id="entry_form" onsubmit="gform_has_unsaved_changes = false; jQuery('#gform_routing_meta').val(jQuery.toJSON(form.notification.routing));"> <?php wp_nonce_field('gforms_save_notification', 'gforms_save_notification'); ?> <input type="hidden" id="gform_routing_meta" name="gform_routing_meta" /> <div class="wrap"> <div class="icon32" id="gravity-notification-icon"><br></div> <h2><?php _e("Notifications", "gravityforms"); ?> : <?php echo esc_html($form["title"]); ?> </h2> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder"> <div id="submitdiv" class="stuffbox"> <h3><span class="hndle"><?php _e("Notification to Administrator", "gravityforms"); ?> </span></h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishingx" style="padding:10px;"> <input type="checkbox" name="form_notification_enable_admin" id="form_notification_enable_admin" value="1" <?php echo $is_admin_notification_enabled ? "checked='checked'" : ""; ?> onclick="if(this.checked) {jQuery('#form_notification_admin_container').show('slow');} else {jQuery('#form_notification_to').val(''); jQuery('#form_notification_admin_container').hide('slow');}"/> <label for="form_notification_enable_admin"><?php _e("Enable email notification to administrators", "gravityforms"); ?> </label> <div id="form_notification_admin_container" style="display:<?php echo $is_admin_notification_enabled ? "block" : "none"; ?> ;"> <br/> <?php _e("Enter a message below to receive a notification email when users submit this form.", "gravityforms"); ?> <br/><br/><br/> <ul id="form_notification_container"> <?php $is_invalid_email_to = $invalid_tab == 1 && !self::is_valid_admin_to(); $class = $is_invalid_email_to ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <label for="notification_to_email"> <?php _e("Send To Email", "gravityforms"); ?> <span class="gfield_required">*</span> <?php gform_tooltip("notification_send_to_email"); ?> </label> <input type="radio" id="notification_to_email" name="notification_to" <?php echo !$is_routing_enabled ? "checked='checked'" : ""; ?> value="email" onclick="jQuery('#notification_to_routing_container').hide(); jQuery('#notification_to_email_container').show('slow');"/> <label for="notification_to_email" class="inline"> <?php _e("Email", "gravityforms"); ?> </label> <input type="radio" id="notification_to_routing" name="notification_to" <?php echo $is_routing_enabled ? "checked='checked'" : ""; ?> value="routing" onclick="jQuery('#notification_to_email_container').hide(); jQuery('#notification_to_routing_container').show('slow');"/> <label for="form_button_image" class="inline"> <?php _e("Routing", "gravityforms"); ?> <?php gform_tooltip("notification_send_to_routing"); ?> </label> <div id="notification_to_email_container" style="margin-top:5px; display:<?php echo $is_routing_enabled ? "none" : "block"; ?> ;"> <input type="text" name="form_notification_to" id="form_notification_to" value="<?php echo esc_attr($form["notification"]["to"]); ?> " class="fieldwidth-1" /> <?php if (rgpost("notification_to") == "email" && $is_invalid_email_to) { ?> <span class="validation_message"><?php _e("Please enter a valid email address"); ?> </span> <?php } ?> </div> <div id="notification_to_routing_container" style="margin-top:5px; display:<?php echo $is_routing_enabled ? "block" : "none"; ?> ;"> <div> <?php $routing_fields = self::get_routing_fields($form, "0"); if (empty($routing_fields)) { //if(empty(){ ?> <div class="gold_notice"> <p><?php _e("To use notification routing, your form must have a field supported by conditional logic.", "gravityforms"); ?> </p> </div> <?php } else { if (empty($form["notification"]["routing"])) { $form["notification"]["routing"] = array(array()); } $count = sizeof($form["notification"]["routing"]); $routing_list = ","; for ($i = 0; $i < $count; $i++) { $routing_list .= $i . ","; $routing = $form["notification"]["routing"][$i]; $is_invalid_rule = $invalid_tab == 1 && $_POST["notification_to"] == "routing" && !self::is_valid_notification_email($routing["email"]); $class = $is_invalid_rule ? "class='grouting_rule_error'" : ""; ?> <div style='width:99%' <?php echo $class; ?> > <?php _e("Send to", "gravityforms"); ?> <input type="text" id="routing_email_<?php echo $i; ?> " value="<?php echo rgar($routing, "email"); ?> " onkeyup="SetRouting(<?php echo $i; ?> );"/> <?php _e("if", "gravityforms"); ?> <select id="routing_field_id_<?php echo $i; ?> " class='gfield_routing_select' onchange='jQuery("#routing_value_<?php echo $i; ?> ").replaceWith(GetRoutingValues(<?php echo $i; ?> , jQuery(this).val())); SetRouting(<?php echo $i; ?> ); '><?php echo self::get_routing_fields($form, rgar($routing, "fieldId")); ?> </select> <select id="routing_operator_<?php echo $i; ?> " onchange="SetRouting(<?php echo $i; ?> )" > <option value="is" <?php echo rgar($routing, "operator") == "is" ? "selected='selected'" : ""; ?> ><?php _e("is", "gravityforms"); ?> </option> <option value="isnot" <?php echo rgar($routing, "operator") == "isnot" ? "selected='selected'" : ""; ?> ><?php _e("is not", "gravityforms"); ?> </option> <option value=">" <?php echo rgar($routing, "operator") == ">" ? "selected='selected'" : ""; ?> ><?php _e("greater than", "gravityforms"); ?> </option> <option value="<" <?php echo rgar($routing, "operator") == "<" ? "selected='selected'" : ""; ?> ><?php _e("less than", "gravityforms"); ?> </option> <option value="contains" <?php echo rgar($routing, "operator") == "contains" ? "selected='selected'" : ""; ?> ><?php _e("contains", "gravityforms"); ?> </option> <option value="starts_with" <?php echo rgar($routing, "operator") == "starts_with" ? "selected='selected'" : ""; ?> ><?php _e("starts with", "gravityforms"); ?> </option> <option value="ends_with" <?php echo rgar($routing, "operator") == "ends_with" ? "selected='selected'" : ""; ?> ><?php _e("ends with", "gravityforms"); ?> </option> </select> <?php echo self::get_field_values($i, $form, rgar($routing, "fieldId"), rgar($routing, "value")); ?> <img src='<?php echo GFCommon::get_base_url(); ?> /images/add.png' class='add_field_choice' title='add another email routing' alt='add another email routing' style='cursor:pointer; margin:0 3px;' onclick='SetRouting(<?php echo $i; ?> ); InsertRouting(<?php echo $i + 1; ?> );' /> <?php if ($count > 1) { ?> <img src='<?php echo GFCommon::get_base_url(); ?> /images/remove.png' id='routing_delete_<?php echo $i; ?> ' title='remove this email routing' alt='remove this email routing' class='delete_field_choice' style='cursor:pointer;' onclick='DeleteRouting(<?php echo $i; ?> );' /> <?php } ?> </div> <?php } if ($is_invalid_rule) { ?> <span class="validation_message"><?php _e("Please enter a valid email address for all highlighted routing rules above."); ?> </span> <?php } ?> <input type="hidden" name="routing_count" id="routing_count" value="<?php echo $routing_list; ?> "/> <?php } ?> </div> </div> </li> <li> <label for="form_notification_from"> <?php _e("From Name", "gravityforms"); ?> <?php gform_tooltip("notification_from_name"); ?> </label> <input type="text" class="fieldwidth-2" name="form_notification_from_name" id="form_notification_from_name" onkeydown="jQuery('#form_notification_from_name_field').val('');" onchange="jQuery('#form_notification_from_name_field').val('');" value="<?php echo esc_attr(rgget("fromName", $form["notification"])); ?> "/> <?php if (!empty($name_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_from_name_field" id="form_notification_from_name_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_from_name').val('');"> <option value=""><?php _e("Select a name field", "gravityforms"); ?> </option> <?php foreach ($name_fields as $field) { $selected = rgget("fromNameField", $form["notification"]) == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_from"> <?php _e("From Email", "gravityforms"); ?> <?php gform_tooltip("notification_from_email"); ?> </label> <input type="text" class="fieldwidth-2" name="form_notification_from" id="form_notification_from" onkeydown="jQuery('#form_notification_from_field').val('');" onchange="jQuery('#form_notification_from_field').val('');" value="<?php echo rgempty("from", $form["notification"]) && rgempty("fromField", $form["notification"]) ? esc_attr($wp_email) : esc_attr(rgget("from", $form["notification"])); ?> "/> <?php if (!empty($email_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_from_field" id="form_notification_from_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_from').val('');"> <option value=""><?php _e("Select an email field", "gravityforms"); ?> </option> <?php foreach ($email_fields as $field) { $selected = rgget("fromField", $form["notification"]) == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_reply_to"> <?php _e("Reply To", "gravityforms"); ?> <?php gform_tooltip("notification_reply_to"); ?> </label> <input type="text" name="form_notification_reply_to" id="form_notification_reply_to" onkeydown="jQuery('#form_notification_reply_to_field').val('');" onchange="jQuery('#form_notification_reply_to_field').val('');" value="<?php echo esc_attr(rgget("replyTo", $form["notification"])); ?> " class="fieldwidth-2" /> <?php if (!empty($email_fields)) { ?> <?php _e("OR", "gravityforms"); ?> <select name="form_notification_reply_to_field" id="form_notification_reply_to_field" onchange="if(jQuery(this).val().length > 0 ) jQuery('#form_notification_reply_to').val('');"> <option value=""><?php _e("Select an email field", "gravityforms"); ?> </option> <?php foreach ($email_fields as $field) { $selected = rgar($form["notification"], "replyToField") == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo GFCommon::get_label($field); ?> </option> <?php } ?> </select> <?php } ?> </li> <li> <label for="form_notification_bcc"> <?php _e("BCC", "gravityforms"); ?> <?php gform_tooltip("notification_bcc"); ?> </label> <input type="text" name="form_notification_bcc" id="form_notification_bcc" value="<?php echo esc_attr(rgget("bcc", $form["notification"])); ?> " class="fieldwidth-1" /> </li> <?php $is_invalid_subject = $invalid_tab == 1 && empty($_POST["form_notification_subject"]); $class = $is_invalid_subject ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_notification_subject"> <?php _e("Subject", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_notification_subject", true); ?> </div> <input type="text" name="form_notification_subject" id="form_notification_subject" value="<?php echo esc_attr($form["notification"]["subject"]); ?> " class="fieldwidth-1" /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php _e("Please enter a subject for the notification email"); ?> </span> <?php } ?> </div> </li> <?php $is_invalid_message = $invalid_tab == 1 && empty($_POST["form_notification_message"]); $class = $is_invalid_message ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_notification_message"> <?php _e("Message", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <?php if (GFCommon::is_wp_version("3.3")) { wp_editor($form["notification"]["message"], "form_notification_message", array("autop" => false)); } else { ?> <textarea name="form_notification_message" id="form_notification_message" class="fieldwidth-1 fieldheight-1" ><?php echo esc_html($form["notification"]["message"]); ?> </textarea> <?php } if ($is_invalid_message) { ?> <span class="validation_message"><?php _e("Please enter a message for the notification email"); ?> </span> <?php } ?> </div> </li> <li> <div> <input type="checkbox" name="form_notification_disable_autoformat" id="form_notification_disable_autoformat" value="1" <?php echo empty($form["notification"]["disableAutoformat"]) ? "" : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php _e("Disable Auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </div> </li> </ul> </div> </div> </div> </div> </div> <div id="submitdiv" class="stuffbox"> <h3><span class="hndle"><?php _e("Notification to User", "gravityforms"); ?> </span></h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishingx" style="padding:10px;"> <?php if (!isset($form["autoResponder"])) { $form["autoResponder"] = array(); } if (empty($email_fields)) { ?> <div class="gold_notice"> <p><?php echo sprintf(__("Your form does not have any %semail%s field.", "gravityforms"), "<strong>", "</strong>"); ?> </p> <p> <?php echo sprintf(__("Sending notifications to users require that the form has at least one email field. %sEdit your form%s", "gravityforms"), '<a href="?page=gf_edit_forms&id=' . absint($form_id) . '">', '</a>'); ?> </p> </div> <?php } else { ?> <input type="checkbox" name="form_notification_enable_user" id="form_notification_enable_user" value="1" <?php echo $is_user_notification_enabled ? "checked='checked'" : ""; ?> onclick="if(this.checked) {jQuery('#form_notification_user_container').show('slow');} else {jQuery('#form_notification_user_container').hide('slow');}"/> <label for="form_notification_enable_user"><?php _e("Enable email notification to users", "gravityforms"); ?> </label> <div id="form_notification_user_container" style="display:<?php echo $is_user_notification_enabled ? "block" : "none"; ?> ;"> <br/> <?php _e("Enter a message below to send users an automatic response when they submit this form.", "gravityforms"); ?> <br/><br/><br/> <ul id="form_autoresponder_container"> <li> <label for="form_autoresponder_to"> <?php _e("Send To Field", "gravityforms"); ?> <span class="gfield_required">*</span> <?php gform_tooltip("autoresponder_send_to_email"); ?> </label> <select name="form_autoresponder_to" id="form_autoresponder_to"> <?php foreach ($email_fields as $field) { $selected = rgget("toField", $form["autoResponder"]) == $field["id"] ? "selected='selected'" : ""; ?> <option value="<?php echo $field["id"]; ?> " <?php echo $selected; ?> ><?php echo esc_html(GFCommon::get_label($field)); ?> </option> <?php } ?> </select> </li> <li> <label for="form_autoresponder_from_name"> <?php _e("From Name", "gravityforms"); ?> <?php gform_tooltip("autoresponder_from_name"); ?> </label> <input type="text" name="form_autoresponder_from_name" id="form_autoresponder_from_name" value="<?php echo esc_attr(rgget("fromName", $form["autoResponder"])); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_from"> <?php _e("From Email", "gravityforms"); ?> <?php gform_tooltip("autoresponder_from"); ?> </label> <input type="text" name="form_autoresponder_from" id="form_autoresponder_from" value="<?php echo rgempty("from", $form["autoResponder"]) ? esc_attr($wp_email) : esc_attr(rgget("from", $form["autoResponder"])); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_reply_to" style="display:block;"> <?php _e("Reply To (optional)", "gravityforms"); ?> <?php gform_tooltip("autoresponder_reply_to"); ?> </label> <input type="text" name="form_autoresponder_reply_to" id="form_autoresponder_reply_to" value="<?php echo esc_attr(rgget("replyTo", $form["autoResponder"])); ?> " class="fieldwidth-2" /> </li> <li> <label for="form_autoresponder_bcc"> <?php _e("BCC", "gravityforms"); ?> <?php gform_tooltip("autoresponder_bcc"); ?> </label> <input type="text" name="form_autoresponder_bcc" id="form_autoresponder_bcc" value="<?php echo esc_attr(rgget("bcc", $form["autoResponder"])); ?> " class="fieldwidth-1" /> </li> <?php $is_invalid_subject = $invalid_tab == 2 && rgempty("form_autoresponder_subject"); $class = $is_invalid_subject ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <label for="form_autoresponder_subject"> <?php _e("Subject", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <div> <?php GFCommon::insert_variables($form["fields"], "form_autoresponder_subject", true); ?> </div> <input type="text" name="form_autoresponder_subject" id="form_autoresponder_subject" value="<?php echo esc_attr(rgget("subject", $form["autoResponder"])); ?> " class="fieldwidth-1" /> <?php if ($is_invalid_subject) { ?> <span class="validation_message"><?php _e("Please enter a subject for the user notification email"); ?> </span> <?php } ?> </li> <?php $is_invalid_message = $invalid_tab == 2 && rgempty("form_autoresponder_message"); $class = $is_invalid_message ? "class='gfield_error'" : ""; ?> <li <?php echo $class; ?> > <div> <label for="form_autoresponder_message"> <?php _e("Message", "gravityforms"); ?> <span class="gfield_required">*</span> </label> <?php if (GFCommon::is_wp_version("3.3")) { wp_editor(rgget("message", $form["autoResponder"]), "form_autoresponder_message", array("autop" => false)); } else { ?> <textarea name="form_autoresponder_message" id="form_autoresponder_message" class="fieldwidth-1 fieldheight-1"><?php echo esc_html(rgget("message", $form["autoResponder"])); ?> </textarea> <?php } if ($is_invalid_message) { ?> <span class="validation_message"><?php _e("Please enter a message for the user notification email"); ?> </span> <?php } ?> </div> </li> <li> <div> <input type="checkbox" name="form_autoresponder_disable_autoformat" id="form_autoresponder_disable_autoformat" value="1" <?php echo rgempty("disableAutoformat", $form["autoResponder"]) ? "" : "checked='checked'"; ?> /> <label for="form_notification_disable_autoformat" class="inline"> <?php _e("Disable Auto-formatting", "gravityforms"); ?> <?php gform_tooltip("notification_autoformat"); ?> </label> </div> </li> </ul> </div> <?php } ?> </div> </div> </div> </div> <br class="clear" /> <div> <?php $notification_button = '<input class="button-primary" type="submit" value="' . __("Save Settings", "gravityforms") . '" name="save"/>'; echo apply_filters("gform_save_notification_button", $notification_button); ?> </div> </div> </div> </form> <?php if (rgpost("save")) { if ($invalid_tab == 0) { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Notification Updated.", "gravityforms"); ?> </div> <?php } else { ?> <div class="error" style="padding:6px;"> <?php _e("Notification could not be updated. Please enter all required information below.", "gravityforms"); ?> </div> <?php } } }
public static function timeline($entry, $form) { $notes = self::get_timeline_notes($entry); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($entry[$email_field->id])) { $emails[] = $entry[$email_field->id]; } } //displaying notes grid $subject = ''; self::notes_grid($notes, true, $emails, $subject); }