create.php 18.5 KB
<?php
use Tz\WordPress\Tools;
use Tz\WordPress\Tools\Notifications;
use Tz\WordPress\Tools\Notifications\Settings;

function getInputFormValues($validation, $name) {
    return ($validation->set_value($name) != '') ? $validation->set_value($name) : (!empty($_POST[$name])) ? $_POST[$name] : '';
}

?>

<link rel="stylesheet" href="<?php echo Tools\url('assets/css/notifications.css', __FILE__) ?>"/>

<div class="wrap">
    <h2>Notifications - Create New</h2>

    <?php if (isset($flash) && $flash != ''): ?>
        <div class="post-success">
            <?php echo $flash; ?>
        </div>
    <?php endif; ?>
    <?php if ($validation->validation_errors() != "" || isset($form_error)): ?>
        <div class="post-errors">
            <div class="post-errors-title"><strong>Oops.</strong> There was an error saving your notification.</div>
            <?php if (isset($form_error)): ?>
                <p class="post-errors-content">You must include either an Email, System or SMS message.</p>
            <?php endif; ?>
        </div>
    <?php endif; ?>

    <form enctype="multipart/form-data" method="post" action="/wp-admin/admin.php?page=notifications-create-new">

        <input type="hidden" name="_POSTED_" value="yes"/>

        <table cellspacing="0" class="widefat post fixed" style="margin-top:15px;">
            <thead>
                <tr>
                    <th width="150">Notification Details</th>
                    <th>&nbsp;</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td width="150">Notification Type</td>
                    <td>
                        <select name="type" id="notif_type" class="wide-input-field"
                                onchange="updateNotificationType();">
                            <option value="scheduled" <?php echo ($validation->set_value('type') == "scheduled" || $_POST['type'] == 'scheduled')
                                ? 'selected="selected"' : ""; ?>>Scheduled Notification
                            </option>
							 <option value="newsletter" <?php echo ($validation->set_value('type') == "newsletter" || $_POST['type'] == 'newsletter')
                                ? 'selected="selected"' : ""; ?>>Newsletter
                            </option>
							<?php if (current_user_can(Settings\MANAGE_SYSTEM_NOTIFICATIONS)): ?>
                                <option value="triggered" <?php echo ($validation->set_value('type') == "triggered" || $_POST['type'] == 'triggered')
                                    ? 'selected="selected"' : ""; ?>>System Triggered Notification
                                </option>
                            <?php endif; ?>
                        </select>
                        <?php echo $validation->form_error('type'); ?>
                    </td>
                </tr>
                <tr>
                    <td width="150">Notification Description</td>
                    <td><input type="text" name="title" class="wide-input-field"
                               value="<?php echo getInputFormValues($validation, 'title'); ?>"/>
                        <?php echo $validation->form_error('title'); ?>
                    </td>
                </tr>
                <tr class="scheduled_sendto">
                    <td>Sent To:</td>
                    <td>
                        <select name="sendto" class="wide-input-field">
                            <option value="nousers" <?php echo ($validation->set_value('sendto') == "nousers")
                                ? 'selected="selected"' : ""; ?>>No Users
                            </option>
                            <option value="allusers" <?php echo ($validation->set_value('sendto') == "allusers")
                                ? 'selected="selected"' : ""; ?>>All Users
                            </option>
                            <optgroup label="By Group:">
                                <?php foreach (Notifications\getGroups() as $group_id => $group_name): ?>
                                    <option value="<?php echo $group_id ?>"  <?php echo ($validation->set_value(
                                            'sendto'
                                        ) == $group_id) ? 'selected="selected"'
                                        : ""; ?>><?php echo $group_name; ?></option>
                                <?php endforeach; ?>
                            </optgroup>
                        </select>
                        <?php echo $validation->form_error('sendto'); ?>
                    </td>
                </tr>

                <tr class="scheduled-extended">
                    <td>Execute Date / Time</td>
                    <td><input type="text" name="execute_date" id="execute_date" class="wide-input-field date-pick"
                               readonly="readonly" value="<?php echo getInputFormValues($validation, 'execute_date'); ?>"/><?php echo $validation->form_error('execute_date'); ?></td>
                </tr>

                <tr class="trigger-extended">
                    <td>Trigger</td>
                    <td><input type="text" name="trigger" id="trigger" class="wide-input-field"
                               value="<?php echo getInputFormValues($validation, 'trigger'); ?>"/>
                        <?php echo $validation->form_error('trigger'); ?></td>
                </tr>

            </tbody>
        </table>

        <div id="tabs">
            <ul>
                <li>
                    <a href="#tab-1">English</a>
                </li>
                <li>
                    <a href="#tab-2">French</a>
                </li>
            </ul>

            <?php foreach (['en', 'fr'] as $index => $lang): ?>
                <div id="tab-<?php echo $index + 1; ?>">
                    <table cellspacing="0" class="widefat post fixed expandable" style="margin-top: 15px;">
                        <thead>
                        <tr>
                            <th width="150" class="toggle"><h6>Email</h6></th>
                            <th class="action-bar">&nbsp;</th>
                        </tr>
                        </thead>
                        <tbody style="<?php echo (getInputFormValues($validation, $lang . '_subject')) ||
                            getInputFormValues($validation, $lang . '_text') ||
                            getInputFormValues($validation, $lang . '_html') ? '' : 'display: none;'; ?>;">
                        <tr>
                            <td width="150">Subject Line</td>
                            <td>
                                <input type="text" name="<?php echo $lang; ?>_subject"
                                       class="wide-input-field" style="width: 100%;"
                                       value="<?php echo getInputFormValues($validation, $lang . '_subject'); ?>"/>
                                <?php echo $validation->form_error($lang.'_subject'); ?>
                            </td>
                        </tr>
                        <tr class="text_verson">
                            <td>Text Version</td>
                            <td>
                                <textarea name="<?php echo $lang; ?>_text"
                                          class="wide-input-field text_verson" rows="10"
                                          style="width: 100%;"><?php echo getInputFormValues($validation, $lang . '_text'); ?>
                                </textarea><?php echo $validation->form_error($lang.'_text'); ?>
                            </td>
                        </tr>
                        <tr>
                            <td>HTML Version (optional)</td>
                            <td>
								<?php
								$content = getInputFormValues($validation, $lang . '_html');
								$settings = array('textarea_name' => $lang.'_html' , "media_buttons" => true );
									   wp_editor($content, $lang .'_html', $settings );
								?><?php echo $validation->form_error($lang.'_html'); ?>
							
                            </td>
                        </tr>

                     <tr class="attachments">
                            <td width="150">Attachments</td>
                            <td>&nbsp;</td>
                        </tr>

                        <?php
                        $attachments        = $entry->email[$lang.'_attachments'];
                        $allowedAttachments = 3;
                        foreach ($attachments as $attachment): ?>
                            <tr>
                                <td>&nbsp;</td>
                                <td>
                                    <?php echo $attachment; ?> &nbsp; (<a href="#"
                                                                          entry_id="<?php echo $_GET['page_id'] ?>"
                                                                          class="attachment"
                                                                          rel="<?php echo $attachment; ?>">remove</a>)
                                </td>
                            </tr>
                            <?php
                            $allowedAttachments--;
                        endforeach;
                        ?>

                        <?php for ($a = 1; $a <= $allowedAttachments; $a++): ?>
                           <tr class="attachments">
                                <td>&nbsp;</td>
                                <td><input type="file" name="<?php echo $lang; ?>_attachment[]"/></td>
                            </tr>
                        <?php endfor; ?>

                        </tbody>
                    </table>

                    <table cellspacing="0" class="widefat post fixed expandable" style="margin-top: 15px;">
                        <thead>
                        <tr>
                            <th width="150" class="toggle"><h6>System Message</h6></th>
                            <th class="action-bar">&nbsp;</th>
                        </tr>
                        </thead>
                        <tbody style="<?php echo ($validation->set_value(
                                $lang.'_system',
                                $entry->system[$lang.'_message']
                            ) == '')
                            ? 'display: none'
                            : ''; ?>;">
                        <tr>
                            <td>Message Type</td>
                            <td>
                                <?php if ($lang == 'en'): ?>
                                    <select name="system_message_type" class="wide-input-field">
                                        <option value="none" <?php echo ($validation->set_value(
                                                'system_message_type',
                                                $entry->system['system_message_type']
                                            ) == 'none') ? 'selected="selected"' : ''; ?>>
                                            General Message
                                        </option>
                                        <option value="action_required" <?php echo ($validation->set_value(
                                                'system_message_type',
                                                $entry->system['system_message_type']
                                            ) == 'action_required') ? 'selected="selected"' : ''; ?>>
                                            Action Required
                                        </option>
                                        <option value="e-flash" <?php echo ($validation->set_value(
                                                'system_message_type',
                                                $entry->system['system_message_type']
                                            ) == 'e-flash') ? 'selected="selected"' : ''; ?>>
                                            E-Flash
                                        </option>
                                        <option value="new_event" <?php echo ($validation->set_value(
                                                'system_message_type',
                                                $entry->system['system_message_type']
                                            ) == 'new_event') ? 'selected="selected"' : ''; ?>>
                                            New Event
                                        </option>
                                    </select>
                                <?php else: ?>
                                    <span class="system_message_type_value"></span>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <tr>
                            <td>Message (Text/HTML)</td>
                            <td>
                                    <textarea name="<?php echo $lang; ?>_system" class="wide-input-field" rows="4"
                                              style="width:100%;"><?php echo $validation->set_value(
                                            $lang.'_system',
                                            isset($entry->system[$lang.'_message'])
                                                ? $entry->system[$lang.'_message']
                                                : ''
                                        ); ?></textarea><?php echo $validation->form_error($lang.'_system'); ?>
                            </td>
                        </tr>
                        </tbody>
                    </table>
                </div>
            <?php endforeach; ?>
        </div>
        <p>
            <input type="submit" value="  Save  "/>
            <input type="button" value="  Cancel  "
                   onclick="document.location.href='/wp-admin/admin.php?page=notifications';"/>
        </p>
    </form>
</div>

<script>
    jQuery(document).ready(function ($) {
        $('#tabs').tabs();

        // Update system message type clone when changing the message type
        $('[name="system_message_type"]').change(function () {
            $('.system_message_type_value').text($(this).find(':selected').text());
        }).change();

//
       // jQuery('#execute_date').datetimepicker({
            //stepMinute: 05,
            //dateFormat: 'yy-mm-dd',
           // timeFormat: 'hh:mm:ss'
       // });

        updateNotificationType();

        $('.attachment').live('click', function (e) {
            e.preventDefault();
            var $link = $(this);
            var options = {
                action: 'remove_attachment',
                ajax: 'yes',
                id: $link.attr('entry_id'),
                file: $link.attr('rel')
            };

            var file_element = '<input type="file" name="attachment[]" />';

            var c = confirm('Are you sure you want to remove this attachment?');
            if (c) {
                $.ajax({
                    url: '/wp-admin/admin-ajax.php',
                    data: (options),
                    type: 'POST',
                    dataType: 'json',

                    success: function (data) {
                        if (data.success == "true") {
                            $link.parent().html(file_element);
                        }
                    }
                });
            }

            return false;
        });

        jQuery('table.expandable thead th').click(function () {
            var $table = jQuery(this).parent().parent().parent();
            if (jQuery('tbody', $table).is(':visible')) {
                jQuery('thead', $table).removeClass('open');
                jQuery('tbody', $table).fadeOut();
            } else {
                jQuery('thead', $table).addClass('open');
                jQuery('tbody', $table).fadeIn();
            }
        });
    });

    function updateNotificationType() {
        var type = jQuery('#notif_type').val();
		var date = new Date().toLocaleDateString("en-US", {year: 'numeric', month: 'long', day: 'numeric'});

		var header ='<div><span style="font-size: 9.5pt;">If you are unable to clearly view the below E-Flash, please click<b><a><span style="font-weight: normal;"> here</span></a></b></span><hr /><img class="&quot;alignnone" src="https://cbvinstitute.com/wp-content/uploads/2019/02/email_logo.png" alt="Logo" width="81" height="57" align="left" /><span style="font-size: 9.5pt; line-height: 115%; float: right;">'+date+'</span><div>';
		
		var footer ='<div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><p class="footer"><strong><span style="font-family: GothamLight; font-size: 12px;"> To opt out, please:<br />1. Log in to cicbv.ca<br />2. Click on your name<br />3. From the drop down menu select profile<br />4. Edit E-flash settings<br />If you have any questions, please contact us: admin@cicbv.ca<br /></span></strong></p>'
		
		var header_fr ='<div><span style="font-size: 9.5pt;">If you are unable to clearly view the below E-Flash, please click<b><a><span style="font-weight: normal;"> here</span></a></b></span><hr /><img class="&quot;alignnone" src="https://cbvinstitute.com/wp-content/uploads/2019/02/email_logo_fr.png" alt="Logo" width="81" height="57" align="left" /><span style="font-size: 9.5pt; line-height: 115%; float: right;">'+date+'</span><div>';
		
		var footer_fr ='<div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><p class="footer"><strong><span style="font-family: GothamLight; font-size: 12px;"> To opt out, please:<br />1. Log in to cicbv.ca<br />2. Click on your name<br />3. From the drop down menu select profile<br />4. Edit E-flash settings<br />If you have any questions, please contact us: admin@cicbv.ca<br /></span></strong></p>'
		
		

        if (type == "triggered") {
            jQuery('.scheduled-extended').hide();
            jQuery('.scheduled_sendto').hide();
            jQuery('.trigger-extended').show();
		}else if (type == "newsletter") {
			jQuery('.scheduled-extended').show();
            jQuery('.trigger-extended').hide();
		    jQuery(".text_verson").hide();
			jQuery('.attachments').hide();
		    jQuery('.scheduled_sendto').show(); 
			$(tinymce.get('en_html').getBody()).html(header+footer);
			$(tinymce.get('fr_html').getBody()).html(header_fr+footer_fr);
				jQuery('#execute_date').datetimepicker({
                format: 'Y-m-d, H:i',
                defaultDate: new Date()
            });
		
        } else {
            jQuery('.scheduled-extended').show();
            jQuery('.trigger-extended').hide();
            jQuery('.scheduled_sendto').show();
            jQuery('#execute_date').datetimepicker({
                format: 'Y-m-d, H:i',
                defaultDate: new Date()
            });
        }
    }
</script>