Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/vieweximmsg.tmpl

[%-
    USE Whostmgr;
    USE NVData;
    USE JSON;
    USE CPScalar;

    IF data.type == "queue";
        origin = '/scripts11/fetch_mail_queue';
    ELSE;
        origin = '/scripts11/emailstats_search';
    END;

    # Fetch the NVDATA for this user
    SET nvdata = NVData.get_page_nvdata();

    #This way, undefined/'' values will default to "on".
    SET show_extended_headers = nvdata.show_extended_headers == 1;
    SET show_control_data = nvdata.show_control_data == 1;
-%]
[% WRAPPER 'master_templates/master.tmpl' theme="yui"
    breadcrumburl = origin;
-%]
<script>CPANEL.nvdata.initial = [% nvdata.json() || 'undefined' %]</script>
<style type="text/css">
.toggle_ctl {
    width: 190px;
    float: right;
}

.hidden_control_data {
    display:none;
}

.clearit {
    clear:both;
    height: 0px;
}

.email_controls {
    clear: both;
    width: 924px;
    margin-bottom: 4px;
}

.email_controls_list {
    padding: 1px;
    margin: 0;
}

.email_controls_list li button {
    line-height: 19px;
}

.email_controls_list li:first-child button {
    margin-left: 0;
}

.email_controls_list li:last-child button {
    margin-right: 0;
}

.email_control {
    display: inline-block;
    list-style: none;
    vertical-align: middle;
}

.email_control a, .email_control img {
    vertical-align: middle;
    line-height: 22px;
}

.header_default {

}

.header_extended {
    display:none;
}

.header_extended_shown {
}

.header_name {
    color: #555;
    font-weight: 900;
    text-align:left;
    vertical-align: top;
    line-height: 20px;
    min-width: 110px;
}

.header_value {
    text-align:left;
    vertical-align: middle;
    padding-top: 4px;
    line-height: 18px;
}

#email_control_data_ctl {
    font-weight: 900;
}

#email_headers_ctl {
    font-weight: 900;
    padding-bottom: 2px;
    text-align: right;
}

#email_message {
    border: 1px inset #ccc;
    padding:10px;
    margin-left: 2px;
    margin-right: 10px;
    background-color: #EAEAEA;
    border: 1px solid #FFFFFF;
    margin-bottom: 10px;
    margin-top: 5px;
    outline: 1px solid #C1D0D3;
    width: 900px;
}

#email_body {
    padding-top: 5px;
    margin-top: 5px;
    border-top: 1px solid #C1D0D3;
}

#email_body div {
    overflow:auto;
    padding: 5px;
    max-height: 400px;
    background-color: white;
}

#email_control_data {
    padding-bottom: 5px;
    margin-bottom: 5px;
    border-bottom: 1px solid #C1D0D3;
}

#email_control_data div.data {
    padding: 0 5px 5px 5px;
    max-height: 150px;
    overflow:auto;
}

#email_headers {
    padding: 0 5px 5px 5px;
    max-height: 140px;
    overflow-y: scroll;
}

pre {
    margin:0;
}

.right_item {
    float: right;
}

</style>
[%- IF data.type == "queue" && ! data.found_exim -%]
<div>
    <h2>Unable to locate valid exim binary. You may need to install Exim ( This is done during upcp --force now ).</h2>
</div>
[% ELSIF data.header %]
<div>

    <h3 class="simpleheading">[% locale.maketext('Message ID: [_1]',data.msgid.html()) %]</h3>

    [% IF data.type == "queue" %]
        [% controls = BLOCK %]
            <div class="email_controls">
                <ul class="email_controls_list">
                    <li class="email_control email_control_item">
                        <button class="btn-secondary" onclick="window.location = '[% cp_security_token %]/scripts11/remove_messages_mail_queue?msgid=[% data.msgid FILTER uri %]';">
                            <img class="email_control_icon" src="[% Whostmgr.find_file_url('/images/delete_page.gif') %]" border="0">
                            <span class="email_control_text">[% locale.maketext('Delete Message') %]</span>
                        </button>
                    </li>
                    <li class="email_control email_control_item">
                        <button  class="btn-secondary" onclick="window.location='[% cp_security_token %]/scripts11/deliver_messages_mail_queue?msgid=[% data.msgid FILTER uri %]';">
                            <img class="email_control_icon" width="16" height="16" src="[% Whostmgr.find_file_url('/images/email-force-on.png') %]" border="0">
                            <span class="email_control_text">[% locale.maketext('Deliver Message Now') %]</span>
                        </button>
                    </li>
                    <li class="email_control email_control_item">
                        <button class="btn-secondary" onclick="downloadEmail('[% cp_security_token %]/scripts2/download_email_message?msgid=[% data.msgid FILTER uri %]');">
                            <img class="email_control_icon" src="[% Whostmgr.find_file_url('/images/download_sm.gif') %]" border="0">
                            <span class="email_control_text">[% locale.maketext('Download in “[output,strong,_1]” format.', '.eml') %]</span>
                        </button>
                    </li>
                    [% IF data.control_data %]
                    <li class="email_control email_control_item right_item">
                        <button class="btn-secondary" href="javascript:void(0);" onclick="toggle_control_data(this); return false;">
                             [%- IF show_control_data -%][%- locale.maketext('Hide Control Data') -%][%-ELSE-%][%- locale.maketext('Show Control Data') -%][%-END-%]
                        </button>
                    </li>
                    [% END %]
                    <li class="email_control email_control_item right_item">
                        <button class="btn-secondary" href="javascript:void(0);" onclick="toggle_extended_headers(this); return false; return false;">
                             [%- IF show_extended_headers -%][%- locale.maketext('Hide Extended Headers') -%][%-ELSE-%][%- locale.maketext('Show Extended Headers') -%][%-END-%]
                        </button>
                    </li>
                </ul>
            </div>
            <div class="clearit">&nbsp;</div>
        [% END %]
    [% ELSE %]
        [% controls = BLOCK %]
            <div class="email_controls">
                    <ul class="email_controls_list">
                        <li class="email_control email_control_item">
                            <button class="btn-secondary" onclick="downloadEmail('[% cp_security_token %]/scripts2/download_email_message?msgid=[% data.msgid FILTER uri %]&transport=[% data.transport FILTER uri %]&address=[% data.address FILTER uri %]&path=[% data.path FILTER uri %]');">
                                <img class="email_control_icon" src="[% Whostmgr.find_file_url('/images/download_sm.gif') %]" border="0">
                                <span class="email_control_text">[% locale.maketext('Download in “[output,strong,_1]” format.', '.eml') %]</span>
                            </button>
                        </li>
                        [% IF data.control_data %]
                        <li class="email_control email_control_item right_item">
                            <button class="btn-secondary" onclick="toggle_control_data(this); return false;">
                                 [%- IF show_control_data -%][%- locale.maketext('Hide Control Data') -%][%-ELSE-%][%- locale.maketext('Show Control Data') -%][%-END-%]
                            </button>
                        </li>
                        [% END %]
                        <li class="email_control email_control_item right_item">
                            <button class="btn-secondary" href="javascript:void(0);" onclick="toggle_extended_headers(this); return false; return false;">
                                 [%- IF show_extended_headers -%][%- locale.maketext('Hide Extended Headers') -%][%-ELSE-%][%- locale.maketext('Show Extended Headers') -%][%-END-%]
                            </button>
                        </li>
                    </ul>
            </div>
            <div class="clearit">&nbsp;</div>
        [% END %]
    [% END %]

    [% BLOCK header_line %]
        <tr class="[%-
                IF thisheader.key.match('(?i)^(from|to|date|subject|x-boxtrapper-match|x-get-message-sender-via)$');
                    'header_default';
                ELSE;
                    IF show_extended_headers;
                        'header_extended_shown';
                    ELSE;
                        'header_extended';
                    END;
                END;
             -%]">
            <td class="header_name">[% thisheader.key FILTER html %]:</td>
            <td class="header_value"><pre>[% thisheader.value FILTER html %]</pre></td>
        </tr>
    [% END %]

    [% controls %]

    <div id="email_message">
        [% IF data.control_data %]
            <div id="email_control_data" class="[%- IF show_control_data -%]shown_control_data[%-ELSE-%]hidden_control_data[%-END-%]">
                <div class="header_name">[% locale.maketext("Mail Control Data:") %]</div>
                <div class="data">
                    <pre>[%- data.control_data FILTER html -%]</pre>
                </div>
            </div>
        [% END %]
        <div id="email_headers">
            <table class="header_table">
                [%- # Build the dataset for the headers
                    current_header = '';

                    SET date_header = {};
                    SET from_header = {};
                    SET to_header = {};
                    SET subject_header = {};
                    SET box_trapper_header = {};
                    SET get_message_sender_via_header = {};

                    SET mail_headers = [];

                    FOREACH msgheader IN data.header.split("\n");
                        IF msgheader.match('^\s+');
                            msgheader = msgheader.replace('^\s+',' ');
                            current_header = current_header _ "\n" _ msgheader;
                            NEXT;
                        ELSE;
                            IF current_header;
                                SET parts = current_header.split(':\s+',2);
                                SET header_item = {
                                    key => parts.0,
                                    value => parts.1
                                };
                                IF header_item.key.match('(?i)^(from|to|date|subject|x-boxtrapper-match|x-get-message-sender-via)$');
                                    SWITCH header_item.key.lc;
                                        CASE 'date';
                                            SET date_header = header_item;
                                        CASE 'from';
                                            SET from_header = header_item;
                                        CASE 'to';
                                            SET to_header = header_item;
                                        CASE 'subject';
                                            SET subject_header = header_item;
                                        CASE 'x-boxtrapper-match';
                                            SET box_trapper_header = header_item;
                                        CASE 'x-get-message-sender-via';
                                            SET get_message_sender_via_header = header_item;
                                    END;
                                ELSE;
                                    mail_headers.push(header_item);
                                END;
                            END;

                            current_header = msgheader;
                        END;
                    END;

                    IF current_header;
                        SET parts = current_header.split(':\s+',2);
                        SET header_item = {
                            key => parts.0,
                            value => parts.1
                        };
                        IF header_item.key.match('(?i)^(from|to|date|subject|x-boxtrapper-match|x-get-message-sender-via)$');
                            SWITCH header_item.key.lc;
                                CASE 'date';
                                    SET date_header = header_item;
                                CASE 'from';
                                    SET from_header = header_item;
                                CASE 'to';
                                    SET to_header = header_item;
                                CASE 'subject';
                                    SET subject_header = header_item;
                                CASE 'x-boxtrapper-match';
                                    SET box_trapper_header = header_item;
                                CASE 'x-get-message-sender-via';
                                    SET get_message_sender_via_header = header_item;
                            END;
                        ELSE;
                            mail_headers.push(header_item);
                        END;
                    END;

                    #----------------------------------------------
                    # Output the headers
                    #----------------------------------------------

                    # Start with the standard ones in predefined order
                    IF date_header.exists('key');
                        PROCESS header_line thisheader = date_header;
                    END;
                    IF from_header.exists('key');
                        PROCESS header_line thisheader = from_header;
                    END;
                    IF to_header.exists('key');
                        PROCESS header_line thisheader = to_header;
                    END;
                    IF subject_header.exists('key');
                        PROCESS header_line thisheader = subject_header;
                    END;
                    IF box_trapper_header.exists('key');
                        PROCESS header_line thisheader = box_trapper_header;
                    END;
                    IF get_message_sender_via_header.exists('key');
                        PROCESS header_line thisheader = get_message_sender_via_header;
                    END;

                    # Now output any remaining headers sorted by key name
                    FOREACH mail_header IN mail_headers.sort('key');
                        PROCESS header_line thisheader = mail_header;
                    END;
                -%]
            </table>
        </div>
        <div id="email_body"><div><pre>[%-
                data.body FILTER html;
        -%]</pre></div></div>
    </div>

<div class="email_controls">
        <ul class="email_controls_list">
            <li class="email_control email_control_item">
                <button class="btn-secondary" onclick="try { window.opener.focus(); } catch(e) {}; window.close(); return false;">
                    <img class="email_control_icon" src="[% Whostmgr.find_file_url('/images/go-last.png') %]" border="0">
                    <span class="email_control_text">
                        [%- IF data.transport -%]
                        [% locale.maketext('Return to Mail Delivery Reports.') %]
                        [%- ELSE -%]
                        [% locale.maketext('Return to Mail Queue Manager.') %]
                        [%- END -%]
                    </span>
                </button>
            </li>
        </ul>
</div>

</div>

<script type="text/javascript">
//------------------------
// Shortcuts
//------------------------
var DOM = YAHOO.util.Dom;
var cpDOM = CPANEL.dom;

var extended_headers_shown = [% IF show_extended_headers == 1 %]1[% ELSE %]0[% END %];
var control_data_shown = [% IF show_control_data == 1 %]1[% ELSE %]0[% END %];;

/**
 * Shows and hides the email control data
 * @name toggle_control_data
 * @param {HTMLElement} el
 */
function toggle_control_data(el) {
    if (control_data_shown) {
        el.innerHTML = "[% locale.maketext('Show Control Data') %]";
        control_data_shown = 0;

        DOM.get('email_control_data').className = 'hidden_control_data';
    }
    else {
        el.innerHTML = "[% locale.maketext('Hide Control Data') %]";
        control_data_shown = 1;
        DOM.get('email_control_data').className='shown_control_data';
    }
    CPANEL.nvdata.save();
}

/**
 * Shows and hides the extended email headers
 * @name toggle_extended_headers
 * @param {HTMLElement} el
 */
function toggle_extended_headers(el) {
    if (extended_headers_shown) {
        el.innerHTML = "[% locale.maketext('Show Extended Headers') %]";
        extended_headers_shown = 0;

        var headerEls = DOM.getElementsByClassName('header_extended_shown', 'tr');
        for(var i = 0, l = headerEls.length; i < l; i++) {
            headerEls[i].className = 'header_extended';
        }
    }
    else {
        el.innerHTML = "[% locale.maketext('Hide Extended Headers') %]";
        extended_headers_shown = 1;

        var headerEls = DOM.getElementsByClassName('header_extended', 'tr');
        for(var i = 0, l = headerEls.length; i < l; i++) {
            headerEls[i].className='header_extended_shown';
        }
    }
    CPANEL.nvdata.save();
}

/**
 * Download the email
 * @name downloadEmail
 * @param {string} url
 */
function downloadEmail(url)
{
    var iframe;
    iframe = DOM.get("hiddenDownloader");
    if (iframe === null)
    {
        iframe = document.createElement('iframe');
        iframe.id = "hiddenDownloader";
        iframe.style.visibility = 'hidden';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
}


// Setup the nvdata personalization properties
( function() {
    CPANEL.nvdata.register('show_extended_headers', function() {
        return (extended_headers_shown ? 1 : 0);
    } );

    CPANEL.nvdata.register('show_control_data', function() {
        return (control_data_shown ? 1 : 0);
    } );
}() );

</script>
[% ELSIF data.type == "queue" %]
    <p>
        [% html_safe_msgid = data.msgid FILTER html %]
        [% locale.maketext("The system failed to locate the message with Message [asis,ID] “[_1]” in the queue. The system may have delivered the message during the request process.", html_safe_msgid) %]
    </p>
    <a class="btn-secondary" href="javascript:void(0);" onClick="try { window.opener.focus(); } catch(e) {}; window.close(); return false;">[% locale.maketext('Return to Mail Queue.') %]</a>
[% ELSE %]
    <p>
        [% html_safe_msgid = data.msgid FILTER html %]
        [% IF data.permitted %]
            [% IF data.statusmsg %]
              [% locale.maketext("The system failed to locate the message with Message [asis,ID] “[_1]”. The system may have deleted the message: [_2]", html_safe_msgid, data.statusmsg.html()) %]
            [% ELSE %]
              [% locale.maketext("The system failed to locate the message with Message [asis,ID] “[_1]”. The system may have deleted the message.", html_safe_msgid) %]
            [% END %]
        [% ELSE %]
            [% locale.maketext("The system has not delivered a message with Message [asis,ID] “[_1]” to an account that you control.", html_safe_msgid) %]
        [% END %]
    </p>
    <a class="btn-secondary" href="javascript:void(0);" onClick="try { window.opener.focus(); } catch(e) {}; window.close(); return false;">[% locale.maketext('Return to Mail Delivery Reports.') %]</a>

[% END -%]


[% END #wrapper -%]
Back to Directory File Manager