More updates to UI elements and to admin forms for this plugin.
authorChuck Scott <cscott@gaslightmedia.com>
Fri, 19 Jul 2019 20:10:49 +0000 (16:10 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Fri, 19 Jul 2019 20:10:49 +0000 (16:10 -0400)
24 files changed:
classes/serverBandwidthSupport.php
index.php
models/adminServerStats.php
models/adminServerStatsConfig.php
models/frontCookiePopUp.php
models/serverUsageTargetCheck.php
views/adminServerStats.html
views/adminServerStatsConfig.html
views/footer.html
views/multiSelectSearch.html [new file with mode: 0644]
views/ui/f6/checkbox.html
views/ui/f6/editor.html
views/ui/f6/grid-end.html
views/ui/f6/grid-start.html
views/ui/f6/image.html
views/ui/f6/multicheckboxes.html
views/ui/f6/multiselect.html
views/ui/f6/number.html
views/ui/f6/section-end.html
views/ui/f6/section-start.html
views/ui/f6/select.html
views/ui/f6/text-line.html
views/ui/f6/text.html
views/ui/multiSelectSearch.html [deleted file]

index b7544d6..21087c5 100755 (executable)
@@ -862,7 +862,7 @@ class glmServerStatsBandwidthSupport
      */
     public function checkEmailNotifications($sendToGlmContact = false, $sendToCustContact = false, $sendAll = false, $site = false, $forceDisplay = false)
     {
-echo "<pre>".print_r($this->config,1)."</pre>";exit;
+
         // Get info on the desired sites for processing
         $websites = $this->bandwidthLastMonthAllSites(false, $site);
 
index 5f07411..9e5bcc4 100755 (executable)
--- a/index.php
+++ b/index.php
@@ -284,7 +284,7 @@ register_deactivation_hook(__FILE__, 'glmServerStatsPluginDeactivate');
  */
 
 // Called by WordPress scheduler as set below
-add_action('glm_serverstats_notify_cron', 'doGlmServerstatsCron');
+//add_action('glm_serverstats_notify_cron', 'doGlmServerstatsCron');
 function doGlmServerstatsCron() {
 
     trigger_error('GLM Serverstats Cron Called', E_USER_NOTICE);
@@ -297,7 +297,7 @@ function doGlmServerstatsCron() {
     $targetCheckMonth .= '/43';
 
 trigger_error("BLOCKING TARGET CHECK FOR NOW FOR TEST", E_USER_NOTICE);
-    if (FALSE && $targetCheckMonth != $targetCheckLast) {
+    if ( false && $targetCheckMonth != $targetCheckLast) {
 
         trigger_error('Running Target Check Process for Month = '.$targetCheckMonth, E_USER_NOTICE);
 
@@ -331,8 +331,8 @@ if (apply_filters('glm-serverstats-is-provider', false) || true) {
     $cronTimestamp = wp_next_scheduled( 'glm_serverstats_notify_cron' );
     if (!$cronTimestamp) {
 
-//        wp_schedule_event( time(), 'hourly', 'glm_serverstats_notify_cron' );
-        wp_schedule_event( time(), 'minute', 'glm_serverstats_notify_cron' );
+        wp_schedule_event( time(), 'hourly', 'glm_serverstats_notify_cron' );
+// for testing        wp_schedule_event( time(), 'minute', 'glm_serverstats_notify_cron' );
 
     }
 
index 7bef2f1..1a58bfd 100755 (executable)
@@ -73,11 +73,11 @@ class adminServerStats extends glmServerStatsBandwidthSupport
             return ['redirect' => 'adminServerStatsConfig'];
         }
 
-// *** THIS IS HERE TEMPORARILY FOR TEST ****
+/*      // Enable this code to have serverUsageTargetCheck() run each time this model runs. For Testing Only!
         require_once GLM_SERVERSTATS_PLUGIN_MODEL_PATH.'/serverUsageTargetCheck.php';
         $ServerUsageTargetCheck = new serverUsageTargetCheck();
         $ServerUsageTargetCheck->model();
-// *** END OF TEST ****
+*/
 
         $haveStats     = false;
         $stats         = false;
index 6840f35..357c9cd 100755 (executable)
@@ -119,8 +119,9 @@ class adminServerStatsConfig extends glmServerStatsBandwidthSupport
                 '<p>This site uses temporary "Cookies" to store limited information that\'s '
                 .'required to provide you with a consistent user experience. We don\'t store '
                 .'personally identifying or other sensitive information in these Cookies and '
-                .'these Cookies are erased when you close your Web Browser.</p><p>If you\'re '
-                .'on a public computer, be sure to close all Web Browsers when you\'re done!</p>';
+                .'these Cookies are erased when you close your Web Browser unless otherwise '
+                .'stated when you click "Show more".</p><p>If you\'re on a public computer,'
+                .'be sure to close all Web Browsers when you\'re done!</p>';
             $autoInsertDefault = true;
         }
 
@@ -149,7 +150,7 @@ class adminServerStatsConfig extends glmServerStatsBandwidthSupport
             )
         );
 
-        // echo "<pre>".print_r($templateData,1)."</pre>";
+        // echo "<pre>".var_dump($templateData,1)."</pre>";
 
         // Return status, suggested view, and data to controller
         return array(
index 3350c74..efba246 100755 (executable)
@@ -23,14 +23,16 @@ $serverstatsConfig = get_option(GLM_SERVERSTATS_PLUGIN_CONFIG_OPTION);
     }
     #cookieNoticeBox .title {
         font-size: .9em;
+        font-weight: bold;
         padding-bottom: .5em;
         border-bottom: 2px solid black;
         margin-bottom: .5em;
     }
     #cookieNoticeBox .button {
         color: black;
+        font-size: 1rem;
         background-color: lightgrey;
-        padding: 8px 20px;
+        padding: 2px 10px;
         z-index: 20;
         left: 0;
         top: 0;
@@ -46,7 +48,7 @@ $serverstatsConfig = get_option(GLM_SERVERSTATS_PLUGIN_CONFIG_OPTION);
         <a id="showMorePrivacyInfo" class="button">Show more</a>
         <a id="cookieNoticeBoxClose" class="button">Got it!</a>
     </p>
-    <div id="cookieMoreInfo" style="display: none;">
+    <div id="cookieMoreInfo" style="display: none; font-size: .8rem;">
 <?php if ($serverstatsConfig['cookie_opt_gdpr']) { ?>
         <p>
             <b>GDPR:</b> The EU GDPR legislation obligates us to tell you how we use information you supply through
@@ -58,10 +60,10 @@ $serverstatsConfig = get_option(GLM_SERVERSTATS_PLUGIN_CONFIG_OPTION);
 <?php } ?>
 <?php if ($serverstatsConfig['cookie_opt_access_logs']) { ?>
         <p>
-            <b>ACCESS LOGS:</b> We retain for a certain period of time access log entries with minimal information
-            about your use of this Website for the sole purpose of ensuring security of our systems and compliance
-            of acceptable use by users of this site. We don't share log entries with anyone unless obligated to do
-            so by way of a lawful request from a law enforcement agency or court with appropriate jurisdiction.
+            <b>ACCESS LOGS:</b> We retain access logs entries for a certain period of time for the sole purpose of
+            ensuring security of our systems and compliance of acceptable use by users of this site. We don't share
+            log entries with anyone unless obligated to do so by way of a lawful request from a law enforcement
+            agency or court with appropriate jurisdiction.
         </p>
 <?php } ?>
 <?php if ($serverstatsConfig['cookie_opt_permanent']) { ?>
index 0db342a..d1e2c56 100755 (executable)
@@ -82,9 +82,7 @@ class serverUsageTargetCheck  extends glmServerStatsBandwidthSupport
         if (GLM_SERVERSTATS_PLUGIN_DEBUG) {
             trigger_error('serverUsageTargetCheck: model() called', E_USER_NOTICE);
         }
-echo "11111<br>";
         $result = $this->checkEmailNotifications(true, true);
-echo "22222<br>";
     }
 
     /*
index c21014e..89a7cf2 100755 (executable)
@@ -1,80 +1,77 @@
 <a name="glmPageTop"></a>
 {include file='header.html'}
+<style>
+    /* Some styles are set in the print area to make them available in the print window */
+    .pickContainer {
+        margin-top: 1rem;
+        width: 1100px;
+    }
+    .pseudoPick {
+        height: 150px;
+        width: 98%;
+        overflow-y: auto;
+        overflow-x: hidden;
+        display: inline-block;
+        border: 1px #ddd solid;
+    }
+    .pseudoPickTitles {
+        text-decoration: underline;
+        line-height: .8rem;
+    }
+    .pseudoPickOption {
+        text-decoration: none;
+        line-height: .8rem;
+    }
+    .pseudoPickOption:hover {
+        background-color: #0568B3 !important;
+        color: white;
+    }
+    .section {
+        font-weight: bold;
+        text-align: center;
+        font-size: 1.4rem;
+        clear: both;
+        padding: 1rem;
+        border-top: 1px solid black;
+        margin-top: 2rem;
+    }
+    .sortBy {
+        display: inline-block;
+        font-weight: bold;
+        white-space: nowrap;
+        padding-left: 20px;
+    }
+    .sortByTitle {
+        display: inline-block;
+        font-weight: bold;
+        font-size: 1.2rem;
+    }
+    .graphContainer {
+        position: relative;
+    }
+    .graphContainer .graphTitle {
+        position: absolute;
+        top: -10px;
+        width: 100%;
+        margin-top: 10px;
+        font-weight: bold;
+        font-size: 1.1rem;
+    }
+    .graph {
+        margin-top: 20px;
+    }
 
-    <style>
-        /* Some styles are set in the print area to make them available in the print window */
-        .pickContainer {
-            margin-top: 1em;
-            width: 1150px;
-        }
-        .pseudoPick {
-            height: 150px;
-            width: 98%;
-            overflow-y: auto;
-            overflow-x: hidden;
-            display: inline-block;
-            border: 1px #ddd solid;
-        }
-        .pseudoPickTitles {
-            text-decoration: underline;
-            line-height: .2em;
-        }
-        .pseudoPickOption {
-            text-decoration: none;
-            line-height: .2em;
-        }
-        .pseudoPickOption:hover {
-            background-color: #0568B3 !important;
-            color: white;
-        }
-        .section {
-            font-weight: bold;
-            text-align: center;
-            font-size: 1.4em;
-            clear: both;
-            padding: 1em;
-            border-top: 1px solid black;
-            margin-top: 2em;
-        }
-        .sortBy {
-            width: 55px;
-            display: inline-block;
-            font-weight: bold;
-            white-space: nowrap;
-            padding-left: 20px;
-        }
-        .sortByTitle {
-            width: 80px;
-            display: inline-block;
-            font-weight: bold;
-            font-size: 1.2em;
-        }
-        .graphContainer {
-            position: relative;
-        }
-        .graphContainer .graphTitle {
-            position: absolute;
-            top: -10px;
-            width: 100%;
-            margin-top: 10px;
-            font-weight: bold;
-            font-size: 1.1em;
-        }
-        .graph {
-            margin-top: 20px;
-        }
-
-    </style>
+</style>
 {if !$connected}
 
     <h1>Server Data Usage Unavailable</h1>
     <h4>{$connectError}</h4>
 
-  {if apply_filters('glm-serverstats-is-provider', false)}
-    <p>Please check GLM Server Usage configuration menu!</p>
-  {else}
-    <p>Please contact your system administrator for assistance.</p>
-  {/if}
+    {if apply_filters('glm-serverstats-is-provider', false)}
+        <p>Please check GLM Server Usage configuration menu!</p>
+    {else}
+        <p>Please contact your system administrator for assistance.</p>
+    {/if}
 {else}
 
     <h1>
 
   {if apply_filters('glm-serverstats-is-provider', false)}
     <div class="section">Service Provider Section</div>
-    <form action="{$thisUrl}?page={$thisPage}&selected_site={$selectedSite}" method="post" enctype="multipart/form-data">
-        <input type="hidden" name="option" value="update_site">
-        <input type="hidden" name="site_sort" value="$site_sort">
-        <input type="hidden" name="selected_site" value="{$selectedSite}">
-
-        <div class="sortByTitle">Sort By: </div>
-        <input type="radio" name="site_sort" value="site_name" {if $site_sort == 'site_name'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=site_name&selected_site={$selectedSite}';">Site Name
-        <div class="sortBy">Traffic:</div>
-        <input type="radio" name="site_sort" value="data_total" {if $site_sort == 'data_total'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=data_total&selected_site={$selectedSite}';">Total for Month&nbsp;&nbsp;
-        <input type="radio" name="site_sort" value="target_percent" {if $site_sort == 'target_percent'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=target_percent&selected_site={$selectedSite}';">Percent of target&nbsp;&nbsp;
-        <div class="sortBy">Storage:</div>
-        <input type="radio" name="site_sort" value="storage" {if $site_sort == 'storage'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=storage&selected_site={$selectedSite}';">Maximum for Month&nbsp;&nbsp;
-        <input type="radio" name="site_sort" value="disk_target_percent" {if $site_sort == 'disk_target_percent'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=disk_target_percent&selected_site={$selectedSite}';">Percent of target&nbsp;&nbsp;
-        </p>
-        <div class="pickContainer">
-            <pre class="">                                                   ----------------- Traffic -------------   --------------- Storage --------------</pre>
-            <pre class="pseudoPickTitles">Website                                            Last Month       Target     % of Target   Last Month      Target     % of Target</pre>
-            <div class="pseudoPick">
-        {foreach $websites as $site}
-                <pre class="pseudoPickOption"></span>{if $site.name == $selectedSite}<a name="selectedSite"></a>{/if}<a href="{$thisUrl}?page={$thisPage}&selected_site={$site.name}&site_id={$site.id}&site_sort={$site_sort}" class="pseudoPickOption" {if $site.name == $selectedSite}onClick="return false;"{/if}><span{if $site.name == $selectedSite} style="background-color: LightGray;"{/if}>{$site.name|string_format:"%-50s"} {$site.data_total|string_format:"%6.1f"} GB   {$site.target|string_format:"%8.1f"} GB     <span {if $site.target_percent > $threshold}style="color: red;"{/if}>{$site.target_percent|string_format:"%6.0f"}%</span>      {$site.storage|string_format:"%6.1f"} GB   {$site.disk_target|string_format:"%8.1f"} GB      <span {if $site.disk_target_percent > $threshold}style="color: red;"{/if}>{$site.disk_target_percent|string_format:"%6.0f"}%</span></span></a></pre>
-        {/foreach}
-            </div>
-            <p>Click on a site above to display settings and charts.</p>
-            <hr>
-        </div>
-    {if $selectedSite}
-        <table class="glm-admin-table" style="width: 100%">
-                <tr><td>&nbsp;</td><th><h2>Global Settings</h2></th></tr>
-                <tr>
-                    <th class="glm-required">Reporting Threshold %:</th>
-                    <td>
-                        <input type="text" name="threshold" value="{$threshold|string_format:"%.0f"}" class="glm-form-text-input-medium" placeholder="i.e. 90">
-                        <br>Percentage above which target percentage should be highlighted in red and site contacts will receive E-Mail reports.
-                    </td>
-                </tr>
-                <tr><td>&nbsp;</td><th><h2>Settings for Selected Site</h2></th></tr>
-                <tr>
-                    <th class="glm-required">Monthly Target Traffic:</th>
-                    <td>
-                        <input type="text" name="target" value="{$settings.target|string_format:"%.1f"}" class="glm-form-text-input-medium" placeholder="i.e. 2.000 for 2 Gigabytes">
-                        <br>Monthly target traffic is entered in Gigabytes.
-                    </td>
-                </tr>
-                <tr>
-                    <th class="glm-required">Target Disk Space Used:</th>
-                    <td>
-                        <input type="text" name="disk_target" value="{$settings.disk_target|string_format:"%.1f"}" class="glm-form-text-input-medium" placeholder="i.e. 2.000 for 2 Gigabytes">
-                        <br>Disk Space is entered in Gigabytes.
-                    </td>
-                </tr>
-<!--
-                <tr>
-                    <th class="glm-required">Gaslight Media Contact E-Mail:</th>
-                    <td>
-                        <input type="text" name="glm_contact" value="{$settings.glm_contact}" class="glm-form-text-input-medium">
-                        <br>E-mail address of Gaslight Media contact who will receive over-target E-Mail.
-                    </td>
-                </tr>
--->
-                <tr>
-                    <th class="glm-required">Customer Contact E-Mail:</th>
-                    <td>
-                        <input type="text" name="cust_contact" value="{$settings.cust_contact}" class="glm-form-text-input-medium">
-                        <br>E-mail address of customer contact who will receive over-target E-Mail.
-                    </td>
-                </tr>
-                <tr>
-                    <th class="glm-required">&nbsp;</th>
-                    <td>
-                        <br>
-                        <a href="{$ajaxUrl}?action=glm_server_stats&glm_action=ajaxSendUsageReport&selected_site={$selectedSite}" target="usageEmail" class="button button-secondary">Send usage E-mail for this site</a>
-                        &nbsp;&nbsp;<a href="{$ajaxUrl}?action=glm_server_stats&glm_action=ajaxSendUsageReport&selected_site={$selectedSite}&display_only=true" target="usageEmail" class="button button-secondary">Display usage E-mail for this site</a>
-                    </td>
-                </tr>
-        </table>
-        <input type="submit" value="Update Site Settings" class="button-primary">
-    {/if}
-    </form>
-    <div class="section">Customer Section</div>
+
+        {* Grid Start *}
+            {$ui = [
+                'sectionColor'      => '#ffE',
+                'nowrap'            => true
+            ]}
+            {include file="ui/f6/grid-start.html"}
+
+                <form action="{$thisUrl}?page={$thisPage}&selected_site={$selectedSite}" method="post" enctype="multipart/form-data">
+                    <input type="hidden" name="option" value="update_site">
+                    <input type="hidden" name="site_sort" value="$site_sort">
+                    <input type="hidden" name="selected_site" value="{$selectedSite}">
+
+                    {* Section Start *}
+                        {$ui = [
+                            'title'     => 'Site Selection'
+                        ]}
+                        {include file="ui/f6/section-start.html"}
+
+                        <span class="sortByTitle">Sort By: </span>
+                        <input type="radio" name="site_sort" value="site_name" {if $site_sort == 'site_name'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=site_name&selected_site={$selectedSite}';">Site Name
+                        <span class="sortBy">Traffic:</span>
+                        <input type="radio" name="site_sort" value="data_total" {if $site_sort == 'data_total'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=data_total&selected_site={$selectedSite}';">Total for Month&nbsp;&nbsp;
+                        <input type="radio" name="site_sort" value="target_percent" {if $site_sort == 'target_percent'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=target_percent&selected_site={$selectedSite}';">Percent of target&nbsp;&nbsp;
+                        <span class="sortBy">Storage:</span>
+                        <input type="radio" name="site_sort" value="storage" {if $site_sort == 'storage'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=storage&selected_site={$selectedSite}';">Maximum for Month&nbsp;&nbsp;
+                        <input type="radio" name="site_sort" value="disk_target_percent" {if $site_sort == 'disk_target_percent'} checked="checked"{/if} onClick="location.href='{$thisUrl}?page={$thisPage}&site_sort=disk_target_percent&selected_site={$selectedSite}';">Percent of target&nbsp;&nbsp;
+                        </p>
+                        <div class="pickContainer">
+                            <pre class="">                                                   ----------------- Traffic -------------   --------------- Storage --------------</pre>
+                            <pre class="pseudoPickTitles">Website                                            Last Month       Target     % of Target   Last Month      Target     % of Target</pre>
+                            <div class="pseudoPick">
+                                {foreach $websites as $site}
+                                    <pre class="pseudoPickOption"></span>{if $site.name == $selectedSite}<a name="selectedSite"></a>{/if}<a href="{$thisUrl}?page={$thisPage}&selected_site={$site.name}&site_id={$site.id}&site_sort={$site_sort}" class="pseudoPickOption" {if $site.name == $selectedSite}onClick="return false;"{/if}><span{if $site.name == $selectedSite} style="background-color: LightGray;"{/if}>{$site.name|string_format:"%-50s"} {$site.data_total|string_format:"%6.1f"} GB   {$site.target|string_format:"%8.1f"} GB     <span {if $site.target_percent > $threshold}style="color: red;"{/if}>{$site.target_percent|string_format:"%6.0f"}%</span>      {$site.storage|string_format:"%6.1f"} GB   {$site.disk_target|string_format:"%8.1f"} GB      <span {if $site.disk_target_percent > $threshold}style="color: red;"{/if}>{$site.disk_target_percent|string_format:"%6.0f"}%</span></span></a></pre>
+                                {/foreach}
+                            </div>
+                            <p>Click on a site above to display settings and charts.</p>
+                            <hr>
+                        </div>
+
+                        {if $selectedSite}
+
+                            <div>
+                                <a href="{$ajaxUrl}?action=glm_server_stats&glm_action=ajaxSendUsageReport&selected_site={$selectedSite}" target="usageEmail" class="button button-secondary">Send usage E-mail for site selected above</a>
+                                &nbsp;&nbsp;<a href="{$ajaxUrl}?action=glm_server_stats&glm_action=ajaxSendUsageReport&selected_site={$selectedSite}&display_only=true" target="usageEmail" class="button button-secondary">Display usage E-mail for site selected above</a>
+                            </div>>
+
+                        {/if}
+
+                    {include file="ui/f6/section-end.html"}
+
+                    {* Section Start *}
+                        {$ui = [
+                            'title'     => 'Settings for Selected Site'
+                        ]}
+                        {include file="ui/f6/section-start.html"}
+
+                        {* disk_target *}
+                            {$ui = [
+                                'field'         => 'disk_target',
+                                'value'         => {$settings.target|string_format:"%.1f"},
+                                'label'         => 'Monthly Traffic Target',
+                                'required'      => true
+                            ]}
+                            {include file="ui/f6/text.html"}
+
+
+                        {* disk_target *}
+                            {$ui = [
+                                'field'         => 'disk_target',
+                                'value'         => {$settings.disk_target|string_format:"%.1f"},
+                                'label'         => 'Disk Space Used Target',
+                                'required'      => true,
+                                'placeholder'   => 'i.e. 2.000 for 2 Gigabytes'
+                            ]}
+                            {include file="ui/f6/text.html"}
+
+                        {* disk_target *}
+                            {$ui = [
+                                'field'         => 'cust_contact',
+                                'value'         => {$settings.cust_contact},
+                                'label'         => 'Customer Contact E-Mail',
+                                'required'      => true
+                            ]}
+                            {include file="ui/f6/text.html"}
+
+                    {include file="ui/f6/section-end.html"}
+
+                    {* Section Start *}
+                        {$ui = [
+                            'title'     => 'Global Settings'
+                        ]}
+                        {include file="ui/f6/section-start.html"}
+
+                        {* Reporting Threshold *}
+                            {$ui = [
+                                'field'         => 'threshold',
+                                'value'         => {$threshold|string_format:"%.0f"},
+                                'label'         => 'Reporting Threshold %',
+                                'required'      => true,
+                                'min'           => 0,
+                                'max'           => 200,
+                                'width'         => 5,
+                                'helpText'      => 'Percentage above which target percentage should be highlighted in red and site contacts will receive E-Mail reports.'
+                            ]}
+                            {include file="ui/f6/number.html"}
+
+                    {include file="ui/f6/section-end.html"}
+
+                {/if}
+
+            </form>
+
+
+            <input type="submit" value="Update Site Settings" class="button-primary">
+
+        {include file="ui/f6/grid-end.html"}
+
   {/if}
+
+
+    <div class="section">Customer Section</div>
+
     <!-- Server Data Usage Stats -->
     <div style="width: 95%;">
         <center>
index fe77327..3b3417f 100755 (executable)
                     {* Section Start *}
                         {$ui = [
                             'title'     => 'Database Connection',
-                            'tip'       => "
-                                           If you need help with these settings, please contact the Gaslight Media network engineering department.
-                                        "
+                            'tip'       => '
+                                            This section sets paramters required to connect to the Usage and Disk Space
+                                            database. There is only one of these for all customers. This data should be
+                                            the same for all sites using this plugin. Contact Gaslight Media Engineering
+                                            if you need help with these settings.
+                                            '
                         ]}
                         {include file="ui/f6/section-start.html"}
 
@@ -43,8 +46,8 @@
                                 'field'         => 'db_name',
                                 'value'         => {$db_name},
                                 'label'         => 'Database Name',
-                                'placeholder'   => 'Provided by Gaslight Media Engineering',
                                 'required'      => true,
+                                'placeholder'   => 'Try: bandwidth',
                                 'errorText'     => 'The database name is required for connecting to the usage database.'
                             ]}
                             {include file="ui/f6/text.html"}
                                 'field'         => 'db_host',
                                 'value'         => {$db_host},
                                 'label'         => 'Database Server Hostname',
-                                'placeholder'   => 'Provided by Gaslight Media Engineering',
+                                'placeholder'   => 'Try: bandwidth.gaslightmedia.com',
                                 'required'      => true,
-                                'maxWidth'      => 20
+                                'maxWidth'      => 20,
+                                'errorText'     => 'This is an error!',
+                                'helpText'      => 'This is a test!'
                             ]}
                             {include file="ui/f6/text.html"}
 
@@ -65,7 +70,7 @@
                                 'field'         => 'db_user',
                                 'value'         => {$db_user},
                                 'label'         => 'Database Username',
-                                'placeholder'   => 'Provided by Gaslight Media Engineering',
+                                'placeholder'   => 'Try: bandwidthRO',
                                 'required'      => true,
                                 'maxWidth'      => 20
                             ]}
@@ -76,7 +81,7 @@
                                 'field'         => 'db_pass',
                                 'value'         => {$db_pass},
                                 'label'         => 'Database Password',
-                                'placeholder'   => 'Provided by Gaslight Media Engineering',
+                                'placeholder'   => 'Try: ,Wv4W*~^bL_vF3F4PbGsS',
                                 'required'      => true
                             ]}
                             {include file="ui/f6/text.html"}
@@ -86,7 +91,7 @@
                                 'field'         => 'website',
                                 'value'         => {$website},
                                 'label'         => 'Default Website Name',
-                                'placeholder'   => 'Provided by Gaslight Media Engineering',
+                                'placeholder'   => 'i,e, www.gaslightmedia.com',
                                 'required'      => true
                             ]}
                             {include file="ui/f6/text.html"}
 
                    {* Section Start *}
                         {$ui = [
-                            'title'         => 'Usage and Notifications for This Site'
+                            'title'     => 'Usage and Notifications',
+                            'tip'       => '
+                                            This section controls display of site usage and generation of various notifcations to customers.
+                                           '
                         ]}
                         {include file="ui/f6/section-start.html"}
 
                         {* show_usage *}
                             {$ui = [
                                 'field'         => 'show_usage',
-                                'value'         => {$show_usage},
+                                'value'         => {!empty($show_usage)},
                                 'label'         => 'Show Data Usage',
                                 'helpText'      => 'Check this box to have server display website usage information.'
 
                         {* send_usage *}
                             {$ui = [
                                 'field'         => 'send_usage',
-                                'value'         => {$send_usage},
+                                'value'         => {!empty($send_usage)},
                                 'label'         => 'Automatically Send Usage Notices Monthly',
                                 'helpText'      => 'More help stuff. Arent you excited?'
                             ]}
                         {* show_notifications *}
                             {$ui = [
                                 'field'         => 'show_notifications',
-                                'value'         => {$show_notifications},
+                                'value'         => {!empty($show_notifications)},
                                 'label'         => 'Customer Notiifications'
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                     {* Section Start *}
                         {$ui = [
-                            'title'         => 'Cookie Pop-Ups for This Site'
+                            'title'     => 'Cookie Pop-Ups for This Site',
+                            'tip'       => '
+                                            This section enables and sets parameters for the &quot;Cookie Popup&quot; that
+                                            will be displayed to a front-end user until they click to confirm that they
+                                            have read this popup. The popup will redisplay after the sent number of days
+                                            selected below.
+                                            See &quot;Additional Notices&quot; to select other standard
+                                            notices to display based on what is included withe Web site.
+                                            '
                         ]}
                         {include file="ui/f6/section-start.html"}
 
                         {* show_cookie_popup *}
                             {$ui = [
                                 'field'         => 'show_cookie_popup',
-                                'value'         => {$show_cookie_popup},
+                                'value'         => {!empty($show_cookie_popup)},
                                 'label'         => 'Show Cookie Pop-Up'
                             ]}
                             {include file="ui/f6/checkbox.html"}
                                 'value'         => {$cookie_message},
                                 'label'         => 'Cookies Notice Text',
                                 'required'      => true,
-                                'height'        => 10,
-                                'rows'          => 5,
-                                'maxWidth'      => '900px',
+                                'teeny'         => true,
+                                'rows'          => 10,
                                 'helpText'      => '
                                                     This is the main text of the Cookie Pop-Up.
-                                                    The selected "Additional Notices" texts will show below this when the "Show more" button is clicked.
+                                                    The selected "Additional Notices" texts will show below this text in the Cookie Popup window on the
+                                                    front-end of this site when the "Show more" button is clicked. To reset this field to the original
+                                                    text, remove all content in the editor below and submit this page.
                                                    ',
-                                'errorText'     => 'Im a fool.'
+                                'tip'           => '
+                                                    This text is always displayed at the top of the Cookie Popup and is the only text displayed in the
+                                                    Cookie Popup until the user views other notices by clicking the &quot;Show mode&quot; button. This
+                                                    is important text and should always be included.
+                                                   '
                             ]}
                             {include file="ui/f6/editor.html"}
 
 
                     {* Section Start *}
                         {$ui = [
-                            'title'         => 'Addional Notices'
+                            'title'     => 'Addional Notices',
+                            'tip'       => '
+                                            Below are various special notices that you may want to include for display in the Cookie Popup.
+                                            The content of these messages will display when the user clicks to see more information in the
+                                            cookie popup. What you select here should be related to what is included in the Web site. For
+                                            example, if the site includes a secure payment form, you would want to include the notice related
+                                            to Payment Forms.
+                                            '
                         ]}
                         {include file="ui/f6/section-start.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_gdpr',
                                 'value'         => {$cookie_opt_gdpr},
-                                'label'         => 'GDPR'
+                                'label'         => 'GDPR',
+                                'tip'           => '
+                                                    GDPR stands for General Data Protection Regulation, which is a European Union Regulation
+                                                    that controls matters of personal privacy and data protection. If this site is likely to be
+                                                    accessed by persons in the EU or otherwise covered by EU regulations, you will probably
+                                                    want this on.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_access_logs',
                                 'value'         => {$cookie_opt_access_logs},
-                                'label'         => 'Access Logs'
+                                'label'         => 'Access Logs',
+                                'tip'           => '
+                                                    If this site maintains access logs primarily for reasons of security and compliance with
+                                                    policies, but not for sharing user access information with others, you should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_permanent',
                                 'value'         => {$cookie_opt_permanent},
-                                'label'         => 'Permanent Cookies'
+                                'label'         => 'Permanent Cookies',
+                                'tip'           => '
+                                                    If this site issues permanent cookies to user browsers that maintain information the user will
+                                                    need when they return to the site, you should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_tracking',
                                 'value'         => {$cookie_opt_tracking},
-                                'label'         => 'Tracking Cookies'
+                                'label'         => 'Tracking Cookies',
+                                'tip'           => '
+                                                    If this site issues cookies to user browsers for the purpose of tracking user usage primarily
+                                                    to evaluate and improve the site but not for distribution to other organizations, they you should
+                                                    enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_shared_tracking',
                                 'value'         => {$cookie_opt_shared_tracking},
-                                'label'         => 'Shared Tracking Cookies'
+                                'label'         => 'Shared Tracking Cookies',
+                                'tip'           => '
+                                                    If this site issues cookies to the user browsers for the purpoose of collecting tracking information
+                                                    that may be distributed to other organizations, you should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_https',
                                 'value'         => {$cookie_opt_https},
-                                'label'         => 'HTTPS'
+                                'label'         => 'HTTPS',
+                                'tip'           => '
+                                                    If this site uses HTTPS protocol for users to connect securely to this site, you should ensable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_logged_in',
                                 'value'         => {$cookie_opt_logged_in},
-                                'label'         => 'Logged-In Users'
+                                'label'         => 'Logged-In Users',
+                                'tip'           => '
+                                                    If this site permits users to log into the site or a portion of the site with some type of password, you
+                                                    should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_forms',
                                 'value'         => {$cookie_opt_forms},
-                                'label'         => 'Submission Forms'
+                                'label'         => 'Submission Forms',
+                                'tip'           => '
+                                                    If this site has any entry forms that users may submit, you should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
                             {$ui = [
                                 'field'         => 'cookie_opt_payment',
                                 'value'         => {$cookie_opt_payment},
-                                'label'         => 'Payment Forms'
+                                'label'         => 'Payment Forms',
+                                'tip'           => '
+                                                    If this site accepts payments in any way, you should enable this notice.
+                                                   '
                             ]}
                             {include file="ui/f6/checkbox.html"}
 
index cbb53e6..a0b3cb9 100644 (file)
@@ -8,8 +8,3 @@
 
 </div> {* /admin wrapper *}
 
-<script>
-    jQuery(document).ready(function($) {
-        $(document).foundation();
-    });
-</script>
diff --git a/views/multiSelectSearch.html b/views/multiSelectSearch.html
new file mode 100644 (file)
index 0000000..90e9af0
--- /dev/null
@@ -0,0 +1,18 @@
+
+<div class="glm-row">
+    <b>{$multiSelectFilterSearchTerm}: </b>
+    <select id="{$multiSelectFilterID}" name="{$multiSelectFilterName}" multiple="multiple" size="1">
+{foreach from=$multiSelectFilterData item=v}
+        <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
+            {if $v.parent_id}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
+        </option>
+{/foreach}
+    </select>
+</div>
+<script>
+    jQuery(function($){
+        $("#{$multiSelectFilterID}").select2({
+            placeholder: "{$multiSelectFilterPlaceholder}"
+        });
+    });
+</script>
\ No newline at end of file
index be8c402..decb533 100644 (file)
@@ -1,17 +1,15 @@
 {*
     Foundation 6 - Checkbox Input Field
-    All parameters are required.
-    Only 0ne of $data or $field may be used.
-    Do not list fields if they're false. (We're not checking for false)
 
     {$ui = [
-        'value'         => string   True/False, 0/1
-        'field'         => string   Name of field that holds the data if not using data abstract,
-        'label'         => string   Label text for this field,
-        'required'      => boolean  True if required,
-        'helpText'      => string   Help text for this input,
-        'errortext'     => string   Error text that appears when the field doesn't validate,
-        'dataError'     => string   Error from data Abstract Class
+        'field'         => string   Required    Name of field that holds the data if not using data abstract,
+        'value'         => string   Required    True/False, 0/1
+        'label'         => string   Required    Label text for this field,
+        'required'      => boolean              True if required,
+        'helpText'      => string               Help text for this input,
+        'errorText'     => string               Error text that appears when the field doesn't validate,
+        'dataError'     => string               Error from data Abstract Class,
+        'tip'           => string               Tool Tip text
     ]}
 *}
 
     <div class="grid-x grid-margin-x">
         <div class="cell shrink glm-f6-ui-field-input">
             <div class="switch small glm-f6-ui-field-input-switch">
-              <input class="switch-input" id="{$ui.field}" type="checkbox" name="{$ui.field}"{if $ui.value} checked{/if}>
-              <label class="switch-paddle" for="{$ui.field}">
-                <span class="switch-active" aria-hidden="true">Yes</span>
-                <span class="switch-inactive" aria-hidden="true">No</span>
-              </label>
+                <input class="switch-input " id="{$ui.field}" type="checkbox" name="{$ui.field}"{if !empty($ui.value)} checked{/if}>
+                <label class="switch-paddle" for="{$ui.field}">
+                    <span class="switch-active" aria-hidden="true">Yes</span>
+                    <span class="switch-inactive" aria-hidden="true">No</span>
+                </label>
             </div>
         </div>
         <div class="cell auto glm-f6-ui-label-container-right">
-            <label for="{$ui.field}" class="{if $ui.required} glm-required{/if} glm-f6-ui-field-label">{$ui.label}</label>
+            {if isset($ui.tip)}
+                <span style="float:right;" data-tooltip aria-haspopup="true" class="has-tip .left" data-disable-hover="false" tabindex=1 title="{$ui.tip}">?</span>
+            {/if}
+            <label for="{$ui.field}" class="{if !empty($ui.required)} glm-required{/if} glm-f6-ui-field-label">{$ui.label}</label>
         </div>
-        <div class="cell small-12">
-            {if isset($ui.helpText)}<span class="glm-f6-ui-field-help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span]>{/if}
+        <div class="cell small-12 glm-f6-ui-field-messages">
+            {if !empty($ui.helpText)}<span class="glm-f6-ui-field-help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span]>{/if}
         </div>
     </div>
 </div>
index 7dcda5e..1be437e 100644 (file)
@@ -1,49 +1,64 @@
 {*
-    Foundation 6 Editor
-    All parameters are required.
-    Do not list parameters if they're false. (We're not checking for false)
-    If supplying field data (formData) from the data abstract, supply a
-    name of that in the "field" parameter. Also then certain parameters like
-    "required" will be supplied by the abstract rather than in a parameter in
-    this array.
+    Foundation 6 UI - Text Editor
 
     {$ui = [
-        'value'         => string   Value of the element
-        'field'         => string   Name of field that holds the data if not using data abstract,
-        'label'         => string   Label text for this field,
-        'height'        => integer  Height in px,
-        'media'         => boolean  Enable Media Button,
-        'quicktags'     => boolean  Enable Quicktags,
-        'required'      => boolean  True if required,
-        'helpText'      => string   Help text for this input,
-        'errortext'     => string   Error text that appears when the field doesn't validate,
-        'dataError'     => string   Error from data Abstract Class
+        'field'         => string   Required    Name of field that holds the data if not using data abstract,
+        'value'         => string   Required    Value of the element
+        'label'         => string   Required    Label text for this field,
+        'height'        => integer  Required    Height in px (overrides rows - don't use with rows),
+        'rows'          => integer              Height in rows (don't ues height with this option),
+        'media'         => boolean              Enable "Add Media" Button,
+        'quicktags'     => boolean              Enable desired tag buttons that are available in "Text" edit mode,
+            For full list use:  ['buttons' => 'link,strong,code,del,fullscreen,em,li,img,ol,block,ins,more,ul,spell,close']
+            Default (false) dissables HTML/TEXT tabs, true enables all.
+        'teeny'         => boolean              Use limited version of editor if true.
+        'required'      => boolean              True if required,
+        'helpText'      => string               Help text for this input,
+        'errorText'     => string               Error text that appears when the field doesn't validate,
+        'dataError'     => string               Error from data Abstract Class
+        'tip'           => string               Tool Tip text
     ]}
 *}
 
 <div class="cell small-12 glm-f6-ui-field">
-        <label for="{$ui.field}" class="{if $ui.required} glm-required{/if}">{$ui.label}</label>
-        {if isset($ui.value) && $ui.value}
-            {$textAreaContent = $ui.value}
+        {if isset($ui.tip)}
+            <span style="float:right;" data-tooltip aria-haspopup="true" class="has-tip .left" data-disable-hover="false" tabindex=1 title="{$ui.tip}">?</span>
+        {/if}
+        <label for="{$ui.field}" class="{if !empty($ui.required)} glm-required{/if}">{$ui.label}</label>
+        {if !empty($ui.value)}
+            {$glm_ui_param_textAreaContent = $ui.value}
+        {else}
+            {$glm_ui_param_textAreaContent = ''}
+        {/if}
+        {$glm_ui_param_textAreaName = $ui.field}
+        {$glm_ui_param_height = false}
+        {$glm_ui_param_rows = false}
+        {if !empty($ui.height)}
+            {$glm_ui_param_height = $ui.height}
         {else}
-            {$textAreaContent = ''}
+            {if !empty($ui.rows)}
+                {$glm_ui_param_rows = $ui.rows}
+            {/if}
         {/if}
-        {$textAreaName = $ui.field}
-        {if isset($ui.height)} {$height = $ui.height} {else} {$height = 50} {/if}
-        {if isset($ui.media)} {$media_buttons = $ui.media} {else} {$media_buttons = false} {/if}
-        {if isset($ui.quicktags)} {$quicktags = $ui.quicktags} {else} {$quicktags = false} {/if}
-    {$settings = [
-        'textarea_name' => $textAreaName,
-        'editor_height' => $height,
-        'media_buttons' => $media_buttons,
-        'quicktags'     => $quicktags
+        {if !empty($ui.media)} {$glm_ui_param_media_buttons = $ui.media} {else} {$glm_ui_param_media_buttons = false} {/if}
+        {if !empty($ui.quicktags)} {$glm_ui_param_quicktags = $ui.quicktags} {else} {$glm_ui_param_quicktags = false} {/if}
+        {if !empty($ui.teeny)} {$glm_ui_param_teeny = $ui.teeny} {else} {$glm_ui_param_teeny = false} {/if}
+    {$glm_ui_param_settings = [
+        'textarea_name' => $glm_ui_param_textAreaName,
+        'editor_height' => $glm_ui_param_height,
+        'textarea_rows' => $glm_ui_param_rows,
+        'media_buttons' => $glm_ui_param_media_buttons,
+        'quicktags'     => $glm_ui_param_quicktags,
+        'teeny'         => $glm_ui_param_teeny
     ]}
-        {if $ui.dataError}<span class="form-error is-visible">{$ui.dataError}</span>{/if}
-        {if isset($ui.helpText)}<span class="help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span>{/if}
-        {if isset($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error">{$ui.errorText}</span>{/if}
+    <div class="cell small-12 glm-f6-ui-field-messages">
+        {if !empty($ui.dataError)}<span class="form-error is-visible">{$ui.dataError}</span>{/if}
+        {if !empty($ui.helpText)}<span class="help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span>{/if}
+        {if !empty($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error">{$ui.errorText}</span>{/if}
+    </div>
     {wp_editor(
-        $textAreaContent,
-        $textAreaName,
-        $settings
+        $glm_ui_param_textAreaContent,
+        $glm_ui_param_textAreaName,
+        $glm_ui_param_settings
     )}
 </div>
index a099b2c..7bea6c9 100644 (file)
@@ -1,5 +1,11 @@
 {*
-    Foundation 6 - Grid End
+    Foundation 6 UI - Grid End
 *}
     </div>
 </div>
+
+<script>
+    jQuery(document).ready(function($) {
+        $(document).foundation();
+    });
+</script>
index 692626e..d104574 100644 (file)
@@ -1,5 +1,5 @@
 {*
-    Foundation 6 - Grid Start
+    Foundation 6 UI - Grid Start
 
     {$ui = [
         'nowrap'            => string   True if no sections should wrap to the right,
@@ -7,7 +7,10 @@
         'sectionColor'      => string   background color of sections
     ]}
 
+    NOTE: The js/foundation-6.min.js and css/foundation-6.min.css files must be enqueued for this to work.
+
 *}
+
 {$glm_f6_ui_wrapsize = 6 scope="global"}
 {if isset($ui.nowrap) && $ui.nowrap}
     {$glm_f6_ui_wrapsize = 12 scope="global"}
@@ -34,7 +37,7 @@
         background-color: {$glm_f6_ui_section_color} !important;
     }
     .glm-f6-ui-field {
-        margin-bottom: 1rem !important;
+        margin-bottom: .5rem !important;
     }
     .glm-f6-ui-label-container {
     }
@@ -42,6 +45,7 @@
         margin-left: 0 !important;
     }
     .glm-f6-ui-field-label {
+        margin-top: 0 !important;
     }
     .glm-f6-ui-field-input {
         margin-bottom: 0 !important;
     .glm-f6-ui-field-input-number {
         margin-bottom: 0 !important;
     }
+    .glm-f6-ui-field-messages {
+        margin-top: 0rem !important;
+        margin-bottom: 0rem !important;
+    }
     .glm-f6-ui-field-data-error {
+        font-weight: normal !important;
+        font-size: .8rem !important;
+        margin-top: 0 !important;
     }
     .glm-f6-ui-field-help-text {
-        margin-bottom: 0 !important;
+        font-weight: normal !important;
+        font-size: .8rem !important;
+        margin-top: 0 !important;
     }
     .glm-f6-ui-field-error-text {
+        top: 0 !important;
+        font-weight: normal !importantl
+        font-size: .8rem !important;
+        margin-top: 0 !important;
+        margin-bottom: 0 !important;
     }
     .glm-f6-ui-text-line {
-        margin-bottom: 1rem !important;
+        margin-bottom: 1.2rem !important;
     }
 </style>
 <div class="grid-container callout grid-margin-x glm-foundation-6-ui">
index 81b2887..cd6b677 100644 (file)
@@ -13,7 +13,7 @@
         'label'         => string   Label text for this field,
         'required'      => boolean  True if required,
         'helpText'      => string   Help text for this input,
-        'errortext'     => string   Error text that appears when the field doesn't validate,
+        'errorText'     => string   Error text that appears when the field doesn't validate,
         'dataError'     => string   Error from data Abstract Class
     ]}
 *}
index 9f40622..26612f3 100644 (file)
@@ -14,7 +14,7 @@
         'list'          => array    Array of list key=value pairs value=>label
         'required'      => boolean  True if required,
         'helpText'      => string   Help text for this input,
-        'errortext'     => string   Error text that appears when the field doesn't validate,
+        'errorText'     => string   Error text that appears when the field doesn't validate,
         'dataError'     => string   Error from data Abstract Class
     ]}
 *}
index de0ec27..c61f76c 100644 (file)
@@ -17,7 +17,7 @@
         'l_size'        => integer select size,
         'required'      => boolean True if required,
         'helpText'      => string  Help text for this input,
-        'errortext'     => string  Error text that appears when the field doesn't validate,
+        'errorText'     => string  Error text that appears when the field doesn't validate,
         'dataError'     => string  Error from data Abstract Class
     ]}
 *}
index 8a4e4fe..67036fe 100644 (file)
@@ -1,23 +1,23 @@
 {*
-    Foundation 6 - Number Input Field
+    Foundation 6 UI - Number Input Field
 
     Do not include fields if they're false. (We're not checking for false)
 
     {$ui = [
-        'value'          => array    Data from data abstract if using that,
-        'field'         => string   Name of field that holds the data if not using data abstract,
-        'label'         => string   Label text for this field,
-        'placeholder'   => string   Placeholder string,
-        'suffix'        => string   Suffix text to add after input field,
-        'min'           => integer  Minimum numeric value
-        'max'           => integer  Maximum numeric value
-        'width'         => integer  Size of input field in characters,
-        'message'       => string   Message string to display between label and input,
-        'helpText'      => string   Help text for this input,
-        'errortext'       => string   Error text that appears when the field doesn't validate
+        'field'         => string   Required    Name of field that holds the data if not using data abstract,
+        'value'         => array    Required    Value of this number field
+        'label'         => string   Required    Label text for this field,
+        'placeholder'   => string               Placeholder string,
+        'suffix'        => string               Suffix text to add after input field,
+        'min'           => integer              Minimum numeric value
+        'max'           => integer              Maximum numeric value
+        'width'         => integer              Size of input field in characters,
+        'message'       => string               Message string to display between label and input,
+        'helpText'      => string               Help text for this input,
+        'errorText'     => string               Error text that appears when the field doesn't validate
     ]}
 *}
-{if !isset($ui.width)}
+{if empty($ui.width)}
     {$ui.width = 5}
 {else}
     {$ui.width = $ui.width * .55 + 2.5}
                     type="number"
                     name="{$ui.field}"
                     value="{$ui.value}"
-                    {if $ui.required}required{/if}
-                    {if isset($ui.errorText)}aria-errormessage="{$ui.field}_ErrorText"{/if}
-                    {if isset($ui.helpText)}aria-describedby="{$ui.field}_HelpText"{/if}
-                    {if isset($ui.placeholder)}placeholder="{$ui.placeholder}"{/if}
-                    {if isset($ui.min)}min="{$ui.min}"{/if}
-                    {if isset($ui.min)}max="{$ui.max}"{/if}
+                    {if !empty($ui.required)}required{/if}
+                    {if !empty($ui.errorText)}aria-errormessage="{$ui.field}_ErrorText"{/if}
+                    {if !empty($ui.helpText)}aria-describedby="{$ui.field}_HelpText"{/if}
+                    {if !empty($ui.placeholder)}placeholder="{$ui.placeholder}"{/if}
+                    {if !empty($ui.min)}min="{$ui.min}"{/if}
+                    {if !empty($ui.min)}max="{$ui.max}"{/if}
                     style="width: {$ui.width}rem;"
                 >
             </div>
             <div class="cell auto glm-f6-ui-label-container-right">
-                <label for="{$ui.field}" class="{if $ui.required} glm-required{/if} glm-f6-ui-field-label">{$ui.label}</label>
+                <label for="{$ui.field}" class="{if !empty($ui.required)} glm-required{/if} glm-f6-ui-field-label">{$ui.label}</label>
             </div>
-            <div class="cell small-12">
-                {if isset($ui.helpText)}<span class="help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span>{/if}
-                {if true || isset($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error">{$ui.errorText}</span>{/if}
+            <div class="cell small-12 glm-f6-ui-field-messages">
+                {if !empty($ui.helpText)}<span class="help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span>{/if}
+                {if !empty($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error">{$ui.errorText}</span>{/if}
             </div>
         </div>
     {/if}
index 8fc3de7..cd10d79 100644 (file)
@@ -1,5 +1,5 @@
 {*
-    Foundation 6 - Form Section End
+    Foundation 6 UI - Form Section End
     No parameters are needed for Section-End
 *}
             </div>
index ea15d8e..fb3ab58 100644 (file)
@@ -1,5 +1,5 @@
 {*
-    Foundation 6 - Form Section Start
+    Foundation 6 UI - Form Section Start
 
     {$ui = [
         'title'     => string Section title text,
@@ -14,7 +14,7 @@
         {else}
             <div class="cell small-12 glm-f6-ui-section-title">
                 {if isset($ui.tip)}
-                    <span style="float:right;" data-tooltip aria-haspopup="true" class="has-tip" data-disable-hover="false" tabindex=1 title="{$ui.tip}">?</span>
+                    <span style="float:right;" data-tooltip aria-haspopup="true" class="has-tip .left" data-disable-hover="false" tabindex=1 title="{$ui.tip}">?</span>
                 {/if}
                 <h3>{$ui.title}</h3>
                 {if isset($ui.helpText)}<p class="help-text">{$ui.helpText}</p>{/if}
index 2e26b10..c2a095f 100644 (file)
@@ -16,7 +16,7 @@
         'l_blank'       => string  Add empty option
         'required'      => boolean True if required,
         'helpText'      => string  Help text for this input,
-        'errortext'     => string  Error text that appears when the field doesn't validate,
+        'errorText'     => string  Error text that appears when the field doesn't validate,
         'dataError'     => string  Error from data Abstract Class
     ]}
 *}
index f8bb358..e362436 100644 (file)
@@ -1,5 +1,5 @@
 {*
-    Foundation 6 - Text Line (display only)
+    Foundation 6 UI - Text Line (display only)
 
     {$ui = [
         'text'          => string   Required    Text to display,
index 71f8675..538bbd0 100644 (file)
@@ -1,5 +1,5 @@
 {*
-    Foundation 6 - Text Input Field
+    Foundation 6 UI - Text Input Field
 
     Do not list parameters if they're false. (We're not checking for false).
 
         'maxWidth'      => string               Size of input field using standard style notation ('900px', '15rem', ...),
         'maxlength'     => integer              Maximum number of characters that may be entered,
         'helpText'      => string               Help text for this input,
-        'errortext'     => string               Error text that appears when the field doesn't validate,
+        'errorText'     => string               Error text that appears when the field doesn't validate,
         'dataError'     => string               Error from data Abstract Class
         'tip'           => string               String to display when hover over question mark on right
     ]}
 *}
 <div class="cell small-12 glm-f6-ui-field">
     {if (!isset($ui.value) && !isset($ui.field)) || !isset($ui.label)}
-            <span class="glm-required">Field Error: Required field information not supplied!</span>
+        <span class="glm-required">Field Error: Required field information not supplied!</span>
     {else}
         <div class="grid-x grid-margin-x">
             <div class="cell small-12">
                     id="{$ui.field}"
                     name="{$ui.field}"
                     value="{$ui.value|escape}"
-                    {if isset($ui.pattern) && $ui.pattern}pattern="{$ui.pattern}"{/if}
-                    {if $ui.required}required{/if}
-                    {if isset($ui.placeholder) && $ui.placeholder}placeholder="{$ui.placeholder}"{/if}
-                    {if isset($ui.errorText)}aria-errormessage="{$ui.field}_ErrorText"{/if}
-                    {if isset($ui.helpText)}aria-describedby="{$ui.field}_HelpText"{/if}
-                    {if isset($ui.maxWidth)}style="max-width: {$ui.maxWidth}"{/if}
-                    {if isset($ui.maxLength)}max-length="{$ui.maxLength}"{/if}
+                    {if !empty($ui.pattern)}pattern="{$ui.pattern}"{/if}
+                    {if !empty($ui.required)}required{/if}
+                    {if !empty($ui.placeholder)}placeholder="{$ui.placeholder}"{/if}
+                    {if !empty($ui.errorText)}aria-errormessage="{$ui.field}_ErrorText"{/if}
+                    {if !empty($ui.helpText)}aria-describedby="{$ui.field}_HelpText"{/if}
+                    {if !empty($ui.maxWidth)}style="max-width: {$ui.maxWidth}"{/if}
+                    {if !empty($ui.maxLength)}max-length="{$ui.maxLength}"{/if}
                 />
             </div>
-            <div class="cell small-12">
-                {if isset($ui.dataError) && $ui.dataError}<span class="form-error is-visible glm-f6-ui-field-data-error">{$ui.dataError}</span>{/if}
-                {if isset($ui.helpText)}<span class="glm-f6-ui-field-help-text" id="{$ui.field}_HelpText">{$ui.helpText}</span>{/if}
-                {if isset($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error glm-f6-ui-field-error-text">{$ui.errorText}</span>{/if}
+            <div class="cell small-12 glm-f6-ui-field-messages">
+                {if !empty($ui.dataError)}<span class="form-error is-visible glm-f6-ui-field-data-error">{$ui.dataError}</span>{/if}
+                {if !empty($ui.errorText)}<span id="{$ui.field}_ErrorText" class="form-error glm-f6-ui-field-error-text" data-form-error-for="{$ui.field}">{$ui.errorText}</span>{/if}
+                {if !empty($ui.helpText)}<span class="glm-f6-ui-field-help-text" id="{$ui.field}_HelpText">{$ui.helpText}<br></span>{/if}
             </div>
         </div>
     {/if}
diff --git a/views/ui/multiSelectSearch.html b/views/ui/multiSelectSearch.html
deleted file mode 100644 (file)
index 90e9af0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-<div class="glm-row">
-    <b>{$multiSelectFilterSearchTerm}: </b>
-    <select id="{$multiSelectFilterID}" name="{$multiSelectFilterName}" multiple="multiple" size="1">
-{foreach from=$multiSelectFilterData item=v}
-        <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
-            {if $v.parent_id}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
-        </option>
-{/foreach}
-    </select>
-</div>
-<script>
-    jQuery(function($){
-        $("#{$multiSelectFilterID}").select2({
-            placeholder: "{$multiSelectFilterPlaceholder}"
-        });
-    });
-</script>
\ No newline at end of file