*/
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);
*/
// 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);
$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);
$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' );
}
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;
'<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;
}
)
);
- // echo "<pre>".print_r($templateData,1)."</pre>";
+ // echo "<pre>".var_dump($templateData,1)."</pre>";
// Return status, suggested view, and data to controller
return array(
}
#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;
<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
<?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']) { ?>
if (GLM_SERVERSTATS_PLUGIN_DEBUG) {
trigger_error('serverUsageTargetCheck: model() called', E_USER_NOTICE);
}
-echo "11111<br>";
$result = $this->checkEmailNotifications(true, true);
-echo "22222<br>";
}
/*
<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
- <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
- <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
- <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
- </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> </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> </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"> </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>
- <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
+ <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
+ <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
+ <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
+ </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>
+ <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>
{* 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"}
'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"}
'field' => 'db_user',
'value' => {$db_user},
'label' => 'Database Username',
- 'placeholder' => 'Provided by Gaslight Media Engineering',
+ 'placeholder' => 'Try: bandwidthRO',
'required' => true,
'maxWidth' => 20
]}
'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"}
'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 "Cookie Popup" 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 "Additional Notices" 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 "Show mode" 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"}
</div> {* /admin wrapper *}
-<script>
- jQuery(document).ready(function($) {
- $(document).foundation();
- });
-</script>
--- /dev/null
+
+<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} {/if}{$v.name}
+ </option>
+{/foreach}
+ </select>
+</div>
+<script>
+ jQuery(function($){
+ $("#{$multiSelectFilterID}").select2({
+ placeholder: "{$multiSelectFilterPlaceholder}"
+ });
+ });
+</script>
\ No newline at end of file
{*
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>
{*
- 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>
{*
- Foundation 6 - Grid End
+ Foundation 6 UI - Grid End
*}
</div>
</div>
+
+<script>
+ jQuery(document).ready(function($) {
+ $(document).foundation();
+ });
+</script>
{*
- Foundation 6 - Grid Start
+ Foundation 6 UI - Grid Start
{$ui = [
'nowrap' => string True if no sections should wrap to the right,
'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"}
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 {
}
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">
'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
]}
*}
'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
]}
*}
'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
]}
*}
{*
- 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}
{*
- Foundation 6 - Form Section End
+ Foundation 6 UI - Form Section End
No parameters are needed for Section-End
*}
</div>
{*
- Foundation 6 - Form Section Start
+ Foundation 6 UI - Form Section Start
{$ui = [
'title' => string Section title text,
{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}
'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
]}
*}
{*
- Foundation 6 - Text Line (display only)
+ Foundation 6 UI - Text Line (display only)
{$ui = [
'text' => string Required Text to display,
{*
- 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}
+++ /dev/null
-
-<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} {/if}{$v.name}
- </option>
-{/foreach}
- </select>
-</div>
-<script>
- jQuery(function($){
- $("#{$multiSelectFilterID}").select2({
- placeholder: "{$multiSelectFilterPlaceholder}"
- });
- });
-</script>
\ No newline at end of file