860 lines
48 KiB
PHP
860 lines
48 KiB
PHP
|
|
<?php
|
||
|
|
class GFEntryDetail{
|
||
|
|
|
||
|
|
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"); ?><?php 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 lead_detail_edit($form, $lead){
|
||
|
|
$form = apply_filters("gform_admin_pre_render_" . $form["id"], apply_filters("gform_admin_pre_render", $form));
|
||
|
|
?>
|
||
|
|
<script type="text/javascript" src="<?php echo GFCommon::get_base_url() ?>/js/gravityforms.js?version=<?php echo GFCommon::$version?>"></script>
|
||
|
|
<div id="namediv" class="stuffbox">
|
||
|
|
<h3>
|
||
|
|
<label for="name"><?php _e("Details", "gravityforms"); ?></label>
|
||
|
|
</h3>
|
||
|
|
<div class="inside">
|
||
|
|
<table class="form-table entry-details">
|
||
|
|
<tbody>
|
||
|
|
<?php
|
||
|
|
foreach($form["fields"] as $field){
|
||
|
|
switch(RGFormsModel::get_input_type($field)){
|
||
|
|
case "section" :
|
||
|
|
?>
|
||
|
|
<tr valign="top">
|
||
|
|
<td class="detail-view">
|
||
|
|
<div style="margin-bottom:10px; border-bottom:1px dotted #ccc;"><h2 class="detail_gsection_title"><?php echo esc_html(GFCommon::get_label($field))?></h2></div>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
|
||
|
|
break;
|
||
|
|
|
||
|
|
case "captcha":
|
||
|
|
case "html":
|
||
|
|
case "password":
|
||
|
|
//ignore certain fields
|
||
|
|
break;
|
||
|
|
|
||
|
|
default :
|
||
|
|
$value = RGFormsModel::get_lead_field_value($lead, $field);
|
||
|
|
$content = "<tr valign='top'><td class='detail-view'><label class='detail-label'>" . esc_html(GFCommon::get_label($field)) . "</label>" .
|
||
|
|
GFCommon::get_field_input($field, $value, $lead["id"]) . "</td></tr>";
|
||
|
|
|
||
|
|
$content = apply_filters("gform_field_content", $content, $field, $value, $lead["id"], $form["id"]);
|
||
|
|
|
||
|
|
echo $content;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
<br/>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function notes_grid($notes, $is_editable, $emails = null, $autoresponder_subject=""){
|
||
|
|
if(sizeof($notes) > 0 && $is_editable && GFCommon::current_user_can_any("gravityforms_edit_entry_notes")){
|
||
|
|
?>
|
||
|
|
<div class="alignleft actions" style="padding:3px 0;">
|
||
|
|
<label class="hidden" for="bulk_action"><?php _e(" Bulk action", "gravityforms") ?></label>
|
||
|
|
<select name="bulk_action" id="bulk_action">
|
||
|
|
<option value=''><?php _e(" Bulk action ", "gravityforms") ?></option>
|
||
|
|
<option value='delete'><?php _e("Delete", "gravityforms") ?></option>
|
||
|
|
</select>
|
||
|
|
<?php
|
||
|
|
$apply_button = '<input type="submit" class="button" value="' . __("Apply", "gravityforms") . '" onclick="jQuery(\'#action\').val(\'bulk\');" style="width: 50px;" />';
|
||
|
|
echo apply_filters("gform_notes_apply_button", $apply_button);
|
||
|
|
?>
|
||
|
|
</div>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<table class="widefat fixed entry-detail-notes" cellspacing="0">
|
||
|
|
<?php
|
||
|
|
if(!$is_editable){
|
||
|
|
?>
|
||
|
|
<thead>
|
||
|
|
<tr>
|
||
|
|
<th id="notes">Notes</th>
|
||
|
|
</tr>
|
||
|
|
</thead>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<tbody id="the-comment-list" class="list:comment">
|
||
|
|
<?php
|
||
|
|
$count = 0;
|
||
|
|
$notes_count = sizeof($notes);
|
||
|
|
foreach($notes as $note){
|
||
|
|
$count++;
|
||
|
|
$is_last = $count >= $notes_count ? true : false;
|
||
|
|
?>
|
||
|
|
<tr valign="top">
|
||
|
|
<?php
|
||
|
|
if($is_editable && GFCommon::current_user_can_any("gravityforms_edit_entry_notes")){
|
||
|
|
?>
|
||
|
|
<th class="check-column" scope="row" style="padding:9px 3px 0 0">
|
||
|
|
<input type="checkbox" value="<?php echo $note->id ?>" name="note[]"/>
|
||
|
|
</th>
|
||
|
|
<td colspan="2">
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
else{
|
||
|
|
?>
|
||
|
|
<td class="entry-detail-note<?php echo $is_last ? " lastrow" : "" ?>">
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<div style="margin-top:4px;">
|
||
|
|
<div class="note-avatar"><?php echo get_avatar($note->user_id, 48);?></div>
|
||
|
|
<h6 class="note-author"> <?php echo esc_html($note->user_name)?></h6>
|
||
|
|
<p style="line-height:130%; text-align:left; margin-top:3px;"><a href="mailto:<?php echo esc_attr($note->user_email)?>"><?php echo esc_html($note->user_email) ?></a><br />
|
||
|
|
<?php _e("added on", "gravityforms"); ?> <?php echo esc_html(GFCommon::format_date($note->date_created, false)) ?></p>
|
||
|
|
</div>
|
||
|
|
<div class="detail-note-content"><?php echo esc_html($note->value) ?></div>
|
||
|
|
</td>
|
||
|
|
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
if($is_editable && GFCommon::current_user_can_any("gravityforms_edit_entry_notes")){
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<td colspan="3" style="padding:10px;" class="lastrow">
|
||
|
|
<textarea name="new_note" style="width:100%; height:50px; margin-bottom:4px;"></textarea>
|
||
|
|
<?php
|
||
|
|
$note_button = '<input type="submit" name="add_note" value="' . __("Add Note", "gravityforms") . '" class="button" style="width:60px;" onclick="jQuery(\'#action\').val(\'add_note\');"/>';
|
||
|
|
echo apply_filters("gform_addnote_button", $note_button);
|
||
|
|
|
||
|
|
if(!empty($emails)){ ?>
|
||
|
|
|
||
|
|
<span>
|
||
|
|
<select name="gentry_email_notes_to" onchange="if(jQuery(this).val() != '') {jQuery('#gentry_email_subject_container').css('display', 'inline');} else{jQuery('#gentry_email_subject_container').css('display', 'none');}">
|
||
|
|
<option value=""><?php _e("Also email this note to", "gravityforms") ?></option>
|
||
|
|
<?php foreach($emails as $email){ ?>
|
||
|
|
<option value="<?php echo $email ?>"><?php echo $email ?></option>
|
||
|
|
<?php } ?>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
<span id='gentry_email_subject_container' style="display:none;">
|
||
|
|
<label for="gentry_email_subject"><?php _e("Subject:", "gravityforms") ?></label>
|
||
|
|
<input type="text" name="gentry_email_subject" id="gentry_email_subject" value="<?php echo $autoresponder_subject ?>" style="width:35%"/>
|
||
|
|
</span>
|
||
|
|
</span>
|
||
|
|
<?php } ?>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function lead_detail_grid($form, $lead, $allow_display_empty_fields=false){
|
||
|
|
$form_id = $form["id"];
|
||
|
|
$display_empty_fields = false;
|
||
|
|
if($allow_display_empty_fields){
|
||
|
|
$display_empty_fields = rgget("gf_display_empty_fields", $_COOKIE);
|
||
|
|
}
|
||
|
|
|
||
|
|
?>
|
||
|
|
<table cellspacing="0" class="widefat fixed entry-detail-view">
|
||
|
|
<thead>
|
||
|
|
<tr>
|
||
|
|
<th id="details">
|
||
|
|
<?php echo $form["title"]?> : <?php _e("Entry # ", "gravityforms") ?> <?php echo $lead["id"] ?>
|
||
|
|
</th>
|
||
|
|
<th style="width:140px; font-size:10px; text-align: right;">
|
||
|
|
<?php
|
||
|
|
if($allow_display_empty_fields){
|
||
|
|
?>
|
||
|
|
<input type="checkbox" id="gentry_display_empty_fields" <?php echo $display_empty_fields ? "checked='checked'" : "" ?> onclick="ToggleShowEmptyFields();"/> <label for="gentry_display_empty_fields"><?php _e("show empty fields", "gravityforms") ?></label>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</th>
|
||
|
|
</tr>
|
||
|
|
</thead>
|
||
|
|
<tbody>
|
||
|
|
<?php
|
||
|
|
$count = 0;
|
||
|
|
$field_count = sizeof($form["fields"]);
|
||
|
|
$has_product_fields = false;
|
||
|
|
foreach($form["fields"] as $field){
|
||
|
|
switch(RGFormsModel::get_input_type($field)){
|
||
|
|
case "section" :
|
||
|
|
if(!GFCommon::is_section_empty($field, $form, $lead) || $display_empty_fields){
|
||
|
|
$count++;
|
||
|
|
$is_last = $count >= $field_count ? true : false;
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" class="entry-view-section-break<?php echo $is_last ? " lastrow" : ""?>"><?php echo esc_html(GFCommon::get_label($field))?></td>
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
|
||
|
|
case "captcha":
|
||
|
|
case "html":
|
||
|
|
case "password":
|
||
|
|
case "page":
|
||
|
|
//ignore captcha, html, password, page field
|
||
|
|
break;
|
||
|
|
|
||
|
|
|
||
|
|
default :
|
||
|
|
//ignore product fields as they will be grouped together at the end of the grid
|
||
|
|
if(GFCommon::is_product_field($field["type"])){
|
||
|
|
$has_product_fields = true;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
$value = RGFormsModel::get_lead_field_value($lead, $field);
|
||
|
|
$display_value = GFCommon::get_lead_field_display($field, $value, $lead["currency"]);
|
||
|
|
|
||
|
|
$display_value = apply_filters("gform_entry_field_value", $display_value, $field, $lead, $form);
|
||
|
|
|
||
|
|
if($display_empty_fields || !empty($display_value) || $display_value === "0"){
|
||
|
|
$count++;
|
||
|
|
$is_last = $count >= $field_count && !$has_product_fields ? true : false;
|
||
|
|
$last_row = $is_last ? " lastrow" : "";
|
||
|
|
|
||
|
|
$display_value = empty($display_value) && $display_value !== "0" ? " " : $display_value;
|
||
|
|
|
||
|
|
$content = '
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" class="entry-view-field-name">' . esc_html(GFCommon::get_label($field)) . '</td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" class="entry-view-field-value' . $last_row . '">' . $display_value . '</td>
|
||
|
|
</tr>';
|
||
|
|
|
||
|
|
$content = apply_filters("gform_field_content", $content, $field, $value, $lead["id"], $form["id"]);
|
||
|
|
|
||
|
|
echo $content;
|
||
|
|
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$products = array();
|
||
|
|
if($has_product_fields){
|
||
|
|
$products = GFCommon::get_product_fields($form, $lead);
|
||
|
|
if(!empty($products["products"])){
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" class="entry-view-field-name"><?php echo apply_filters("gform_order_label_{$form["id"]}", apply_filters("gform_order_label", __("Order", "gravityforms"), $form["id"]), $form["id"]) ?></td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" class="entry-view-field-value lastrow">
|
||
|
|
<table class="entry-products" cellspacing="0" width="97%">
|
||
|
|
<colgroup>
|
||
|
|
<col class="entry-products-col1">
|
||
|
|
<col class="entry-products-col2">
|
||
|
|
<col class="entry-products-col3">
|
||
|
|
<col class="entry-products-col4">
|
||
|
|
</colgroup>
|
||
|
|
<thead>
|
||
|
|
<th scope="col"><?php echo apply_filters("gform_product_{$form_id}", apply_filters("gform_product", __("Product", "gravityforms"), $form_id), $form_id) ?></th>
|
||
|
|
<th scope="col" class="textcenter"><?php echo apply_filters("gform_product_qty_{$form_id}", apply_filters("gform_product_qty", __("Qty", "gravityforms"), $form_id), $form_id) ?></th>
|
||
|
|
<th scope="col"><?php echo apply_filters("gform_product_unitprice_{$form_id}", apply_filters("gform_product_unitprice", __("Unit Price", "gravityforms"), $form_id), $form_id) ?></th>
|
||
|
|
<th scope="col"><?php echo apply_filters("gform_product_price_{$form_id}", apply_filters("gform_product_price", __("Price", "gravityforms"), $form_id), $form_id) ?></th>
|
||
|
|
</thead>
|
||
|
|
<tbody>
|
||
|
|
<?php
|
||
|
|
|
||
|
|
$total = 0;
|
||
|
|
foreach($products["products"] as $product){
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<td>
|
||
|
|
<div class="product_name"><?php echo esc_html($product["name"])?></div>
|
||
|
|
<ul class="product_options">
|
||
|
|
<?php
|
||
|
|
$price = GFCommon::to_number($product["price"]);
|
||
|
|
if(is_array(rgar($product,"options"))){
|
||
|
|
$count = sizeof($product["options"]);
|
||
|
|
$index = 1;
|
||
|
|
foreach($product["options"] as $option){
|
||
|
|
$price += GFCommon::to_number($option["price"]);
|
||
|
|
$class = $index == $count ? " class='lastitem'" : "";
|
||
|
|
$index++;
|
||
|
|
?>
|
||
|
|
<li<?php echo $class?>><?php echo $option["option_label"]?></li>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$subtotal = floatval($product["quantity"]) * $price;
|
||
|
|
$total += $subtotal;
|
||
|
|
?>
|
||
|
|
</ul>
|
||
|
|
</td>
|
||
|
|
<td class="textcenter"><?php echo $product["quantity"] ?></td>
|
||
|
|
<td><?php echo GFCommon::to_money($price, $lead["currency"]) ?></td>
|
||
|
|
<td><?php echo GFCommon::to_money($subtotal, $lead["currency"]) ?></td>
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
$total += floatval($products["shipping"]["price"]);
|
||
|
|
?>
|
||
|
|
</tbody>
|
||
|
|
<tfoot>
|
||
|
|
<?php
|
||
|
|
if(!empty($products["shipping"]["name"])){
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<td colspan="2" rowspan="2" class="emptycell"> </td>
|
||
|
|
<td class="textright shipping"><?php echo $products["shipping"]["name"] ?></td>
|
||
|
|
<td class="shipping_amount"><?php echo GFCommon::to_money($products["shipping"]["price"], $lead["currency"])?> </td>
|
||
|
|
</tr>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<tr>
|
||
|
|
<?php
|
||
|
|
if(empty($products["shipping"]["name"])){
|
||
|
|
?>
|
||
|
|
<td colspan="2" class="emptycell"> </td>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<td class="textright grandtotal"><?php _e("Total", "gravityforms") ?></td>
|
||
|
|
<td class="grandtotal_amount"><?php echo GFCommon::to_money($total, $lead["currency"])?></td>
|
||
|
|
</tr>
|
||
|
|
</tfoot>
|
||
|
|
</table>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</tbody>
|
||
|
|
</table>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function entry_detail_pagination_link($pos, $label = '', $class = '') {
|
||
|
|
|
||
|
|
$href = !rgblank($pos) ? 'href="' . add_query_arg(array('pos' => $pos), remove_query_arg(array('pos', 'lid'))) . '"': '';
|
||
|
|
$class .= ' gf_entry_pagination_link';
|
||
|
|
$class .= $pos !== false ? ' gf_entry_pagination_link_active' : ' gf_entry_pagination_link_inactive';
|
||
|
|
|
||
|
|
return '<a ' . $href . ' class="' . $class . '" title="' . $label . '">' . $label . '</a></li>';
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
?>
|