Updating templates a bit.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 14 Jun 2019 20:03:21 +0000 (16:03 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 14 Jun 2019 20:03:21 +0000 (16:03 -0400)
Adding delete methods for templates and messages and redoing the forms.

models/admin/ajax/newsletter.php
models/admin/messages/index.php
views/admin/messages/editHtmlEmail.html
views/admin/messages/editTemplate.html

index e7d10cd..c74d2fe 100644 (file)
@@ -73,7 +73,7 @@ class GlmMembersAdmin_ajax_newsletter extends GlmDataEmailMessages
         $emailContent = '';
         $Templates    = new GlmDataEmailTemplates( $this->wpdb, $this->config );
         if ( isset( $_REQUEST['message_id'] ) && $messageId = filter_var( $_REQUEST['message_id'], FILTER_VALIDATE_INT ) ) {
-            $message      = $this->getEntry( $messageId );
+            $message   = $this->getEntry( $messageId );
             $emailData = array(
                 'member' => array(
                     'name' => 'Test Member',
@@ -102,6 +102,12 @@ class GlmMembersAdmin_ajax_newsletter extends GlmDataEmailMessages
         } else {
             $emailContent = '<p>Message Content would go here!</p>';
         }
+        $template = array(
+            'image'        => '',
+            'content'      => '',
+            'footor'       => '',
+            'templateName' => '',
+        );
         if ( isset( $_REQUEST['id'] ) && $id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) {
             $template = $Templates->getEntry( $id );
         }
index 5a7b1bb..84f6f17 100644 (file)
@@ -118,10 +118,16 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
         }
 
         $tData        = array();
+        // Get a count of templates
+        $templateCount = $this->wpdb->get_var(
+            "SELECT count(*)
+               FROM " . GLM_MEMBERS_MESSAGES_PLUGIN_DB_PREFIX . "email_templates"
+        );
         $templateData = array(
             'newEntry'        => false,
             'thisOption'      => $option,
             'pluginAssetsUrl' => GLM_MEMBERS_MESSAGES_PLUGIN_BASE_URL . '/assets/',
+            'templateCount'   => $templateCount,
         );
 
         wp_enqueue_style( 'glmaFoundation', GLM_MEMBERS_PLUGIN_URL . '/css/glma-foundation.min.css' );
@@ -359,8 +365,8 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
                 $template = $Templates->getEntry( $id );
             }
             $tData = array(
-                'template_id'     => $id,
-                'message_id'      => $messageId,
+                'template_id' => $id,
+                'message_id'  => $messageId,
             );
             break;
 
@@ -399,6 +405,14 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
                 break;
             }
 
+        case 'deleteTemplate':
+            $view = 'list';
+            $Templates = new GlmDataEmailTemplates( $this->wpdb, $this->config );
+            if ( $option == 'deleteTemplate' && isset( $_REQUEST['id'] ) && $id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) {
+                $Templates->deleteEntry( $id, true );
+            }
+
+
         case 'listTemplates':
             $view = 'listTemplates';
             $Templates = new GlmDataEmailTemplates( $this->wpdb, $this->config );
@@ -420,6 +434,19 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
             $tData = array(
                 'message'  => $message,
                 'newEntry' => $newEntry,
+                'merge_tags'  => array(
+                    'Member Name', '{$member.name}',
+                    'Contact First Name', '{$contact.fname}',
+                    'Contact Last Name', '{$contact.lname}',
+                    'Contact Address Line 1', '{$contact.addr1}',
+                    'Contact Address Line 2', '{$contact.addr2}',
+                    'Contact City', '{$contact.city}',
+                    'Contact State', '{$contact.state}',
+                    'Contact Zip', '{$contact.zip}',
+                    'Contact Office Phone', '{$contact.office_phone}',
+                    'Contact Home Phone', '{$contact.home_phone}',
+                    'Contact Mobile Phone', '{$contact.mobile_phone}',
+                )
             );
             break;
 
@@ -441,6 +468,11 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
                 break;
             }
 
+        case 'deleteMessage':
+            $view = 'list';
+            if ( $option == 'deleteMessage' && isset( $_REQUEST['id'] ) && $id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) {
+                $this->deleteEntry( $id, true );
+            }
 
         case 'list':
             $view = 'list';
@@ -459,6 +491,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
 
         $templateData = array_merge( $templateData, $tData );
 
+
         // Return status, suggested view, and data to controller
         return array(
             'status'           => $success,
index ece95f4..590266a 100644 (file)
+{* Message Add Edit Form *}
 {include file='admin/header.html'}
 <h3>Html Email</h3>
 
+{* UI for Delete Dialog *}
+{if !$newEntry}
+    {assign var="itemName" value="Message"}
+    {assign var="deleteUrl" value="{$thisUrl}?page={$thisPage}&option=deleteMessage&id={$message.fieldData.id}"}
+    {include file='admin/ui/deleteDialog.html'}
+{/if}
+
 <form action="{$thisUrl}?page={$thisPage}" method="post" style="max-width: 800px;">
     <input type="hidden" name="option" value="updateHtmlEmail" />
     {if !$newEntry}
         <input type="hidden" name="id" value="{$message.fieldData.id}" />
     {/if}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="archived" class="text-right middle{if $message.fieldRequired.archived} glm-required{/if}">Archived</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="checkbox" id="archived" name="archived"{if $message.fieldData.archived.value} checked{/if}> Archived
-            {if $message.fieldFail.archived}<span class="form-error is-visible">{$message.fieldFail.archived}</span>{/if}
-        </div>
-    </div>
+    {* This is for the rest of UI elements *}
+    {assign var="data" value=$message}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="template_id" class="text-right middle{if $message.fieldRequired.template_id} glm-required{/if}">Template</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <select id="template_id" name="template_id" required>
-                <option value=""></option>
-                {foreach from=$message.fieldData.template_id.list item=v}
-                    <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
-                {/foreach}
-            </select>
-            {if $message.fieldFail.template_id}<span class="form-error is-visible">{$message.fieldFail.template_id}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="archived"}
+    {assign var="fieldLabel" value="Archived:"}
+    {include file="admin/ui/f6-checkbox.html"}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="from_name" class="text-right middle{if $message.fieldRequired.from_name} glm-required{/if}">From Name</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="text" id="from_name" name="from_name" value="{$message.fieldData.from_name|escape}" {if $message.fieldRequired.from_name}required{/if} />
-            {if $message.fieldFail.from_name}<span class="form-error is-visible">{$message.fieldFail.from_name}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="template_id"}
+    {assign var="fieldLabel" value="Template:"}
+    {include file="admin/ui/f6-select.html"}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="from_email" class="text-right middle{if $message.fieldRequired.from_email} glm-required{/if}">From Email</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="email" id="from_email" name="from_email" value="{$message.fieldData.from_email|escape}" {if $message.fieldRequired.from_email}required{/if} />
-            {if $message.fieldFail.from_email}<span class="form-error is-visible">{$message.fieldFail.from_email}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="from_name"}
+    {assign var="fieldLabel" value="From Name:"}
+    {include file="admin/ui/f6-text.html"}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="reply_to_email" class="text-right middle{if $message.fieldRequired.reply_to_email} glm-required{/if}">Reply To:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="email" id="reply_to_email" name="reply_to_email" value="{$message.fieldData.reply_to_email|escape}" {if $message.fieldRequired.reply_to_email}required{/if} />
-            {if $message.fieldFail.reply_to_email}<span class="form-error is-visible">{$message.fieldFail.reply_to_email}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="from_email"}
+    {assign var="fieldLabel" value="From Email:"}
+    {include file="admin/ui/f6-text.html"}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="subject" class="text-right middle{if $message.fieldRequired.subject} glm-required{/if}">Subject:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="text" id="subject" name="subject" value="{$message.fieldData.subject|escape}" {if $message.fieldRequired.subject}required{/if} />
-            {if $message.fieldFail.subject}<span class="form-error is-visible">{$message.fieldFail.subject}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="reply_to_email"}
+    {assign var="fieldLabel" value="Reply To:"}
+    {include file="admin/ui/f6-text.html"}
+
+    {assign var="field" value="subject"}
+    {assign var="fieldLabel" value="Subject:"}
+    {include file="admin/ui/f6-text.html"}
+
+    {assign var="field" value="message_body"}
+    {assign var="fieldLabel" value="Message Content:"}
+    {include file="admin/ui/f6-editor.html"}
+
+    {assign var="tData" value=$merge_tags}
+
+    <strong>Merge Tags</strong>
+    <p>The "merge tags" listed below may be used in the email message to include certain information about the Member or Contact. Be sure to include the "{" and "}" and "$" characters exactly as shown.</p>
 
     <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="message_body" class="text-right middle{if $message.fieldRequired.message_body} glm-required{/if}">Message Content:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            {if $message}
-                {$textAreaContent = $message.fieldData.message_body}
-            {else}
-                {$textAreaContent = ''}
-            {/if}
-            {wp_editor(
-                $textAreaContent,
-                'message_body',
-                json_decode('{
-                    "media_buttons": true,
-                    "quicktags": false,
-                    "textarea_name": "message_body",
-                    "editor_height": 250
-                }', true)
-            )}
-            <br>
-            {if $message.fieldFail.message_body}<span class="form-error is-visible">{$message.fieldFail.message_body}</span>{/if}
+        <div class="cell small-8">
+            {html_table loop=$tData cols=2 table_attr='border=0 style=width: 400px;' caption='Merge Tags Examples' td_attr=['align="left"','align="left"']}
         </div>
     </div>
 
-    <table>
-        <tr>
-            <td colspan="2">
-                <strong>Merge Tags</strong>
-                <p>The "merge tags" listed below may be used in the email message to include certain information about the Member or Contact. Be sure to include the "{" and "}" and "$" characters exactly as shown.</p>
-                <p>
-                <table>
-                    <tr>
-                        <th>{literal}{$member.name}{/literal}</th>
-                        <td>Member Name</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.fname}{/literal}</th>
-                        <td>Contact First Name</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.lname}{/literal}</th>
-                        <td>Contact Last Name</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.addr1}{/literal}</th>
-                        <td>Contact Address Line 1</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.addr1}{/literal}</th>
-                        <td>Contact Address Line 1</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.city}{/literal}</th>
-                        <td>Contact City</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.state}{/literal}</th>
-                        <td>Contact State</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.zip}{/literal}</th>
-                        <td>Contact Zip</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.office_phone}{/literal}</th>
-                        <td>Contact Office Phone</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.home_phone}{/literal}</th>
-                        <td>Contact Home Phone</td>
-                    </tr>
-                    <tr>
-                        <th>{literal}{$contact.mobile_phone}{/literal}</th>
-                        <td>Contact Mobile Phone</td>
-                    </tr>
-                </table>
-                </p>
-            </td>
-        </tr>
-    </table>
-
     <div class="grid-x grid-margin-x">
         <div class="cell small-12">
             <input type="submit" class="button button-primary" value="Save" />
 
 </form>
 
+
 {include file='admin/footer.html'}
index f78a93c..13d5893 100644 (file)
@@ -1,5 +1,13 @@
+{* Template Add Edit Form *}
 {include file='admin/header.html'}
-<h2>Html Email</h2>
+<h3>Html Email</h3>
+
+{* UI for Delete Dialog *}
+{if !$newEntry && $templateCount > 1}
+    {assign var="itemName" value="Template"}
+    {assign var="deleteUrl" value="{$thisUrl}?page={$thisPage}&option=deleteTemplate&id={$template.fieldData.id}"}
+    {include file='admin/ui/deleteDialog.html'}
+{/if}
 
 <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
     <input type="hidden" name="option" value="updateTemplate" />
         <input type="hidden" name="id" value="{$template.fieldData.id}" />
     {/if}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="name" class="text-right middle{if $template.fieldRequired.name} glm-required{/if}">Name:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <input type="text" id="name" name="name" value="{$template.fieldData.name|escape}" {if $template.fieldRequired.name}required{/if} />
-            {if $template.fieldFail.name}<span class="form-error is-visible">{$template.fieldFail.name}</span>{/if}
-        </div>
-    </div>
+    {* This is for the rest of UI elements *}
+    {assign var="data" value=$template}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="image" class="text-right middle{if $template.fieldRequired.image} glm-required{/if}">Header Image:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            <div {if $template.fieldFail.image}class="glm-form-bad-input" data-tabid="glm-member-info-images"{/if}>
-                {if $template.fieldData.image}
-                    <div class="glm-row">
-                        <div class="glm-small-12 glm-medium-6">
-                            <div class="glm-galleryImage" data-id="image">
-                                <img src="{$glmPluginMediaUrl}/images/small/{$template.fieldData.image}">
-                            </div>
-                        </div>
-                        <div class="glm-small-11 glm-medium-6 glm-right">
-                            <br>
-                            <input type="checkbox" name="image_delete"> Delete Image<br>
-                            <span>{$template.fieldData.image}</span>
-                            <br>
-                        </div>
-                    </div>
-                {/if}
-                <div class="glm-center"><b>New image:</b> <input type="file" name="image_new"></div>
-                <div id="glm-galleryImageLarger_image" class="glm-imageDialog"><img src="{$glmPluginMediaUrl}/images/large/{$template.fieldData.image}"></div>
-                {if $template.fieldFail.image}<p>{$template.fieldFail.image}</p>{/if}
-            </div>
-        </div>
-    </div>
+    {assign var="field" value="name"}
+    {assign var="fieldLabel" value="Name:"}
+    {include file="admin/ui/f6-text.html"}
 
-    <div class="grid-x grid-margin-x">
-        <div class="cell small-12 medium-3">
-            <label for="footer" class="text-right middle{if $template.fieldRequired.footer} glm-required{/if}">Name:</label>
-        </div>
-        <div class="cell small-12 medium-9">
-            {if $template}
-                {$textAreaContent = $template.fieldData.footer}
-            {else}
-                {$textAreaContent = ''}
-            {/if}
-            {wp_editor(
-                $textAreaContent,
-                'footer',
-                json_decode('{
-                    "media_buttons": true,
-                    "quicktags": false,
-                    "textarea_name": "footer",
-                    "editor_height": 250
-                }', true)
-            )}
-            {if $template.fieldFail.footer}<span class="form-error is-visible">{$template.fieldFail.footer}</span>{/if}
-        </div>
-    </div>
+    {assign var="field" value="image"}
+    {assign var="fieldLabel" value="Header Image:"}
+    {include file="admin/ui/f6-image.html"}
+
+    {assign var="field" value="footer"}
+    {assign var="fieldLabel" value="Footer Content:"}
+    {include file="admin/ui/f6-editor.html"}
 
     <div class="grid-x grid-margin-x">
         <div class="cell small-12">