'use' => 'a'
),
- // Description
- 'descr' => array (
- 'field' => 'descr',
+ // Package Slug
+ 'package_slug' => array (
+ 'field' => 'package_slug',
'type' => 'text',
'required' => true,
- 'use' => 'a'
+ 'use' => 'gle'
),
- // Description
- 'descr' => array (
- 'field' => 'descr',
+ // Short Description
+ 'short_descr' => array (
+ 'field' => 'short_descr',
'type' => 'text',
- // Short Description
- 'short_descr' => array (
- 'field' => 'short_descr',
+ 'required' => true,
++ 'maxLength' => 230,
+ 'use' => 'a'
+ ),
+
++ // Description
++ 'descr' => array (
++ 'field' => 'descr',
+ 'type' => 'text',
++ 'required' => true,
'use' => 'a'
),
return $r;
}
- $slug = sanitize_title($p['title']);
+ /*
+ * Update package slug - should be called after a package record is added or updated
+ *
+ * @param integer id ID of package that needs the slug updated
+ * @access public
+ */
+ public function updateSlug($id = false)
+ {
+
+ if ($id == false) {
+ return false;
+ }
+
+ $p = $this->getEntry($id);
+
++ $slug = sanitize_title($p['title'])."-$id";
+
+ // Update the slug
+ $sql = "
+ UPDATE ".GLM_MEMBERS_PACKAGING_PLUGIN_DB_PREFIX."packages
+ SET package_slug = '$slug'
+ WHERE id = $id
+ ;";
+ $this->wpdb->query($sql);
+
+ return $slug;
+
+ }
+
+
}
?>
$haveMember = true;
}
++ // Also store the member id in a WordPress Option in case user clicks "Member" sub-menu
++ update_option('glmMembersDatabaseMemberID', $memberID);
++
}
// If we don't have a member ID at this point, then it's a fatal error
$success = true;
$havePackages = false;
$packages = false;
++ $filterPackageType = false;
++ $haveFilter = false;
$havePackage = false;
$packageUpdated = false;
$packageInfo = false;
case 'list':
default:
++ $where = '';
++
++ // Determine if there's any selected filters
++ if (isset($_REQUEST['filterPackageType'])) {
++ switch($_REQUEST['filterPackageType']) {
++
++ case 'member':
++ $where = "T.ref_type > 0";
++ $filterPackageType = 'member';
++ $haveFilter = true;
++ break;
++
++ case 'multi-member':
++ $where = "T.ref_type = 0";
++ $filterPackageType = 'multi-member';
++ $haveFilter = true;
++ break;
++
++ case 'all':
++ default:
++ $filterPackageType = 'all';
++ break;
++
++ }
++ } else {
++ $filterPackageType = 'all';
++ }
++
// Get the list of packages
- // $packages = $this->getList("T.ref_type = 0");
- $packages = $this->getList();
- $packages = $this->getList("T.ref_type = 0");
++ $packages = $this->getList($where);
// If we have some, tell the template
if ($packages && count($packages) > 0) {
$templateData = array(
'havePackages' => $havePackages,
'packages' => $packages,
++ 'filterPackageType' => $filterPackageType,
++ 'haveFilter' => $haveFilter,
'havePackage' => $havePackage,
'packageUpdated' => $packageUpdated,
'packageID' => $packageID,
$settings = array();
$status = false;
-- // Get requested package - Check URL parameter first
-- if (isset($_REQUEST['packageID'])) {
-- $packageID = ($_REQUEST['packageID'] - 0);
-- }
++ // If we have a package slug supplied from a rewrite - get the id
++ $rrPackageSlug = get_query_var('packageslug', '');
++ if ($rrPackageSlug != '') {
++
++ $sql = "
++ SELECT id
++ FROM ".GLM_MEMBERS_PACKAGING_PLUGIN_DB_PREFIX. "packages
++ WHERE package_slug = '$rrPackageSlug'
++ ;";
++ $packageID = $this->wpdb->get_var($sql);
++
++ // Otherwise if package ID submitted in the URL
++ } elseif (isset($_REQUEST['id']) && $_REQUEST['id'] > 0) {
++
++ $packageID = ($_REQUEST['id'] - 0);
++
++ // Otherwise if ID from the short-code
++ } elseif (isset($actionData['request']) && isset($actionData['request']['id'])) {
++
++ $packageID = ($actionData['request']['id'] - 0);
-- // If not supplied in URL, then check shortcode attribute
-- if (!$packageID) {
-- $packageID = $actionData['request']['id'] - 0;
}
// If there's a package ID, then get the package data
--- /dev/null
- $slug = sanitize_title($p['title']);
+<?php
+/*
+ * Gaslight Media Members Database - Packaging Add-On
+ *
+ * Database Update Script for version 1.1.0
+ */
+
+/*
+ * Update package records to build package_slug field data from title
+ */
+
+// Get all package records
+$packageRecords = $this->wpdb->get_results('SELECT id, title FROM '.GLM_MEMBERS_PACKAGING_PLUGIN_DB_PREFIX.'packages;', ARRAY_A);
+
+// If there's any package records
+if ($packageRecords && count($packageRecords) > 0) {
+
+ // For each package record
+ foreach ($packageRecords as $p) {
+
+ // Create a slug from the title
++ $slug = sanitize_title($p['title']).'-'.$p['id'];
+
+ // Store this value back into the record
+ $this->wpdb->update(
+ GLM_MEMBERS_PACKAGING_PLUGIN_DB_PREFIX.'packages',
+ array(
+ 'package_slug' => $slug
+ ),
+ array( 'id' => $p['id'] ),
+ array( '%s' ),
+ array( '%d')
+ );
+ }
+
+}
+
+?>
--- /dev/null
--- /dev/null
++<?php
++/**
++ * Gaslight Media Members Database
++ * GLM Members Packaging Add-On Misc Hooks and Filters
++ *
++ * PHP version 5.5
++ *
++ * @category glmWordPressPlugin
++ * @package glmMembersDatabase
++ * @author Chuck Scott <cscott@gaslightmedia.com>
++ * @license http://www.gaslightmedia.com Gaslightmedia
++ * @release frontHooks.php,v 1.0 2014/10/31 19:31:47 cscott Exp $
++ * @link http://dev.gaslightmedia.com/
++ */
++
++/*
++ * Place Misc Hooks and Filters here. If this file exists, it will be included
++ * by the add-on main plugin script.
++ *
++ * Note that filter and hook callback functions must be included in-line as shown below...
++ *
++ * add_filter( 'filter_title', function( $parameter ) {
++ * // Function code
++ * });
++ *
++ * Also note that parameters will be in the context of the main front controller constructor.
++ */
++
++// Setup rewrite for package detail pages
++add_filter('rewrite_rules_array', function($rules) {
++ $newrules = array();
++ $newrules['('.$this->config['settings']['canonical_package_page'].')/([^/]*)$'] = 'index.php?pagename=$matches[1]&packageslug=$matches[2]';
++ return $newrules + $rules;
++});
++
++// Add packageslug query var
++add_filter('query_vars', function($vars) {
++ array_push($vars, 'packageslug');
++ return $vars;
++});
++
++// On init, check if we need to flush the rewrite rules to pickup the new ones
++add_filter('init', function() {
++ $rules = get_option( 'rewrite_rules' );
++ if ( ! isset( $rules['('.$this->config['settings']['canonical_package_page'].')/([^/]*)$'] ) ) {
++ global $wp_rewrite;
++ $wp_rewrite->flush_rules();
++ }
++});
++
++?>
{if $option == 'edit'}
<h2>Edit Package</h2>
-- <a id="deletePackageButton" class="button-primary glm-button glm-right">Delete this Package</a>
++ <a id="deletePackageButton" class="button button-primary glm-button glm-right">Delete this Package</a>
<div id="deletePackageDialog" class="glm-dialog-box" title="Delete Package">
<center>
-- <p><a id="deletePackageCancel" class="button-primary">Cancel</a></p>
++ <p><a id="deletePackageCancel" class="button button-primary">Cancel</a></p>
<p><input id="deletePackageSubmit" type="submit" value="Delete this package"></p>
</center>
<div class="glm-item-container">
{else}
<h2>Add new Package</h2>
{/if}
-- <a href="{$thisURL}?page={$thisPage}&glm_action=packaging&member={$memberID}" class="button-primary glm-button glm-right">Return to Package List</a>
++ <a href="{$thisURL}?page={$thisPage}&glm_action=packaging&member={$memberID}" class="button button-primary glm-button glm-right">Return to Package List</a>
<form action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
<input type="hidden" name="glm_action" value="packaging">
<input type="checkbox" name="active" {if $packageInfo.fieldData.active.value} checked{/if}>
</td>
</tr>
++ <tr>
++ <th {if $packageInfo.fieldRequired.short_descr}class="glm-required"{/if}>Short Description:</th>
++ <td {if $packageInfo.fieldFail.short_descr}class="glm-form-bad-input"{/if}>
++ <input type="text" name="short_descr" value="{$packageInfo.fieldData.short_descr}" class="glm-form-text-input" placeholder="A short, one line, description of the package.">
++ {if $packageInfo.fieldFail.short_descr}<p>{$packageInfo.fieldFail.short_descr}</p>{/if}
++ </td>
++ </tr>
<tr>
<th {if $packageInfo.fieldRequired.descr}class="glm-required"{/if}>Description:</th>
<td {if $packageInfo.fieldFail.descr}class="glm-form-bad-input"{/if}>
{if $packageInfo.fieldFail.descr}<p>{$packageInfo.fieldFail.descr}</p>{/if}
</td>
</tr>
-- <tr>
-- <th {if $packageInfo.fieldRequired.short_descr}class="glm-required"{/if}>Short Description:</th>
-- <td {if $packageInfo.fieldFail.short_descr}class="glm-form-bad-input"{/if}>
-- <input type="text" name="short_descr" value="{$packageInfo.fieldData.short_descr}" class="glm-form-text-input" placeholder="A short, one line, description of the package.">
-- {if $packageInfo.fieldFail.short_descr}<p>{$packageInfo.fieldFail.short_descr}</p>{/if}
-- </td>
-- </tr>
<tr>
<th {if $packageInfo.fieldRequired.image}class="glm-required"{/if}>Image:</th>
<td {if $packageInfo.fieldFail.image}class="glm-form-bad-input"{/if}>
<table class="glm-admin-table">
<tr><th>Title:</th><td>{$packageInfo.fieldData.title}</td></tr>
<tr><th>Active:</th><td>{$packageInfo.fieldData.active.name}</td></tr>
-- <tr><th>Description:</th><td>{$packageInfo.fieldData.descr}</td></tr>
<tr><th>Short Description:</th><td>{$packageInfo.fieldData.short_descr}</td></tr>
++ <tr><th>Description:</th><td>{$packageInfo.fieldData.descr}</td></tr>
<tr><th>Image:</th><td><img src="{$glmPluginMediaURL}/images/large/{$packageInfo.fieldData.image}"></td></tr>
<tr><th>Start Date:</th><td>{$packageInfo.fieldData.start_date.date}</td></tr>
<tr><th>End Date:</th><td>{$packageInfo.fieldData.end_date.date}</td></tr>
{else} <!-- option is not edit or add -->
{if apply_filters('glm_members_permit_admin_member_packaging_add_package', true)}
-- <div id="addPackageButton" class="button-primary glm-right">Add a Package</div>
++ <div id="addPackageButton" class="button button-primary glm-right">Add a Package</div>
{/if}
-- <h2>Multi-Member Packages</h2>
++ <h2>Member Packages</h2>
<table class="wp-list-table striped glm-admin-table">
<thead>
{if $option == 'edit'}
<h2>Edit Multi-Member Package</h2>
-- <a id="deletePackageButton" class="button-primary glm-button glm-right">Delete this Package</a>
++ <a id="deletePackageButton" class="button button-primary glm-button glm-right">Delete this Package</a>
<div id="deletePackageDialog" class="glm-dialog-box" title="Delete Package">
<center>
-- <p><a id="deletePackageCancel" class="button-primary">Cancel</a></p>
++ <p><a id="deletePackageCancel" class="button button-primary">Cancel</a></p>
<p><input id="deletePackageSubmit" type="submit" value="Delete this package"></p>
</center>
<div class="glm-item-container">
{else}
<h2>Add new Multi-Member Package</h2>
{/if}
-- <a href="{$thisURL}?page={$thisPage}&glm_action=packaging" class="button-primary glm-button glm-right">Return to Package List</a>
++ <a href="{$thisURL}?page={$thisPage}&glm_action=packaging" class="button button-primary glm-button glm-right">Return to Package List</a>
<form action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
{else} <!-- option is not edit or add -->
{if apply_filters('glm_members_permit_admin_members_packaging_add_package', true)}
- <div id="addPackageButton" class="button-primary glm-right"> Add a Package</div>
- <div id="addPackageButton" class="button-primary glm-right">Add a Package</div>
++ <div id="addPackageButton" class="button button-primary glm-right"> Add a Package</div>
{/if}
- <h2>Multi-Member Packages</h2>
+ <!-- Package list selection form -->
+ <form class="glm-right" onSubmit="return false;">
+ <span{if $haveFilter} class="glm-notice"{/if}><b>List Filters:</b> </span>
- <input type="radio" name="filterPackageType" class="listFilter"{if $filterMultiMember} checked{/if} value="all">All
- <input type="radio" name="filterPackageType" class="listFilter"{if $filterMultiMember} checked{/if} value="member">Member
- <input type="radio" name="filterPackageType" class="listFilter"{if $filterMultiMember} checked{/if} value="multi-member">Multi-Member
++ <input type="radio" name="filterPackageType" class="listFilter"{if $filterPackageType == 'all'} checked{/if} value="all">All
++ <input type="radio" name="filterPackageType" class="listFilter"{if $filterPackageType == 'member'} checked{/if} value="member">Member
++ <input type="radio" name="filterPackageType" class="listFilter"{if $filterPackageType == 'multi-member'} checked{/if} value="multi-member">Multi-Member
+ Search: <input id="glmPackageSearch" type="text" id="autoTest">
+ </form>
+ <br clear="all">
+
+
+ <h2>Packages</h2>
<table class="wp-list-table striped glm-admin-table">
<thead>
{if $havePackages}
{foreach $packages as $p}
<tr>
- <td>
+ <td class="glm-nowrap">
++ {if $p.ref_type.value}
++ <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=packaging&option=edit&member={$p.ref_dest}&packageID={$p.id}">{$p.title}</a>
++ {else}
<a href="{$thisURL}?page={$thisPage}&glm_action=packaging&option=edit&packageID={$p.id}">{$p.title}</a>
++ {/if}
+ </td>
+ <td class="glm-nowrap">
+ <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=index&member={$p.ref_dest}">{$p.ref_dest_name}</a>
</td>
<td>
{$p.start_date.date}
});
{/if}
- * Package Members Processing
+ /*
- // Build a list of members for the autocomplete search
- var availableTags = [
- {foreach $membersList as $m}
- { label: "{$m.name|unescape:'html'}", value: "{$m.name|unescape:'html'}", id: '{$m.id}', name: "{$m.name}" },
- {/foreach}
- ];
++ * Filter triggers
+ */
++ var filter = '';
++ $("[name='filterPackageType']" ).change( function() {
+
- $( "#glmMembersList" ).autocomplete({
++ // Get type of package filter selected
++ filter = $(this).val();
++
++ window.location.href = "{$thisURL}?page={$thisPage}&glm_action=packaging&filterPackageType=" + filter;
++
++ return false;
++ });
+
- { label: "{$p.title|unescape:'html'} - {$p.ref_dest_name|unescape:'html'}", id: '{$p.id}' },
+ /*
+ * Do autocomplete search for package
+ * label: What will be searched
+ * value: What will be displayed when selected
+ * id: Package id added so we can go to the member while showing what was selected
+ * Also note that autocomplete does not properly render HTML codes, so we
+ * "unescape" them for HTML in Smarty.
+ */
+ var availableTags = [
+ {if $havePackages}
+ {foreach $packages as $p}
++ { label: "{$p.title|unescape:'html'} - {$p.ref_dest_name|unescape:'html'}", id: '{$p.id}', memb: '{if isset($p.member)}{$p.member.member_pointer}{else}0{/if}' },
+ {/foreach}
+ {/if}
+ ];
+ $( "#glmPackageSearch" ).autocomplete({
source: availableTags,
html: true,
select: function( event, ui ) {
-
- // get the member ID and Name
- var memberID = ui.item.id;
- var memberName = ui.item.name
-
- // Get a copy of the template
- var memberTemplate = $('#glmGalleryItmeDataTemplate').html();
-
- // Set the member data into the template copy
- memberTemplate = memberTemplate.replace('{ id }', memberID).replace('{ memberName }', memberID);
-
- // Insert the selected member
- $('#glmPackageMembersList').append(memberTemplate);
-
- {if !$havePackageMembers}
- // Hide the no members selected message
- $('#glmNoMembersSelected').hide();
- {/if}
-
+ var packageID = ui.item.id;
- window.location.replace("{$adminURL}?page=glm-members-admin-menu-members&glm_action=packaging&package=" + packageID );
++ var memberID = ui.item.memb;
++ if (memberID > 0) {
++ // Selected package is a member package
++ window.location.replace("{$adminURL}?page=glm-members-admin-menu-member&glm_action=packaging&option=edit&member=" + memberID + "&packageID=" + packageID );
++ } else {
++ // Selected package is a mulit-member package
++ window.location.replace("{$adminURL}?page=glm-members-admin-menu-members&glm_action=packaging&option=edit&packageID=" + packageID );
++ }
}
});
-
+
});
</script>
<!-- Container for member information -->
<div class="member">
<h2><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$package.member_slug}/">{$package.ref_dest_name}</a></h2>
-- {if $package.logo}
++ {if $package.member.logo}
<img src="{$glmPluginMediaURL}/images/small/{$package.logo}">
{/if}
<div class="address">
-- <span>{$package.addr1}</span>
-- {if $package.addr2}
-- <span>{$package.addr2}</span>
++ <span>{$package.member.addr1}</span>
++ {if $package.member.addr2}
++ <span>{$package.member.addr2}</span>
{/if}
-- <span>{$package.city}</span>, {$package.state.name} {$package.zip}</span>
-- {if $package.country.name}
-- <span>{$package.country.name}</span>
++ <span>{$package.member.city}</span>, {$package.member.state.name} {$package.member.zip}</span>
++ {if $package.member.country.name}
++ <span>{$package.member.country.name}</span>
{/if}
-- {if $package.toll_free}
-- <span class="phone">{$package.toll_free}</span>
++ {if $package.member.toll_free}
++ <span class="phone">{$package.member.toll_free}</span>
{/if}
-- {if $package.phone}
-- <span class="phone">{$package.phone}</span>
++ {if $package.member.phone}
++ <span class="phone">{$package.member.phone}</span>
{/if}
-- {if $package.url}
-- <span class="url">{$package.url}</span>
++ {if $package.member.url}
++ <span class="url">{$package.member.url}</span>
{/if}
-- {if $package.email}
-- <span class="email">{$package.email}</span>
++ {if $package.member.email}
++ <span class="email">{$package.member.email}</span>
{/if}
</div>
</div>
<img src="{$glmPluginMediaURL}/images/small/{$package.image}">
{/if}
{if $package.descr}
-- <span class="descr">{$package.descr}</span>
++ <span class="descr">{$package.descr|nl2br}</span>
{else if $package.short_descr}
<span class="descr">{$package.short_descr}</span>
{/if}
-->
<!-- Container for entire list of packages -->
- <div class="glm-member-package-container">
+ <div class="glm-member-package-wrapper">
{if $havePackages}
-
- {foreach $packages as $p}
- {if $byMember && $p.firstForMember}
- <!-- Container for member information if multiple packages are listed under one member. - Only shows before first package for this member -->
- <div class="member">
- <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member_slug}/">{$p.ref_dest_name}</a></h2>
-
- {if $p.logo}
- <img src="{$glmPluginMediaURL}/images/medium/{$p.logo}">
- {/if}
- <div class="address">
- <div class="addr1">{$p.addr1}</div>
- {if $p.addr2}
- <div class="addr2">{$p.addr2}</div>
- {/if}
- <div class="citystatezip">{if $p.city}{$p.city}, {/if}{if $p.state.name}{$p.state.name} {/if}{if $p.zip}{$p.zip}{/if}</div>
- {if $p.country.name}
- <div class="country">{$p.country.name}</div>
- {/if}
- {if $p.toll_free}
- <div class="phone">{$p.toll_free}</div>
- {/if}
- {if $p.phone}
- <div class="phone">{$p.phone}</div>
- {/if}
- {if $p.url}
- <div><a class="url" title="url" href={$p.url}>{$p.url}</a></div>
- {/if}
- {if $p.email}
- <div><a class="email" title="Email" href={$p.email}>{$p.email}</a></div>
+ <!-- If pacakges are listed by member, use this block -->
+
+ {if $byMember}
+ {foreach $members as $m}
+ <div class="glm-member-package-container">
+
+ <!-- Container for member information if multiple packages are listed under one member. - Only shows before first package for this member -->
+ <div class="member">
- {if $m.logo}
++ {if $m.logo}
+ <img src="{$glmPluginMediaURL}/images/medium/{$m.logo}">
{/if}
- <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member_name}</a></h2>
++ <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member_name} this is a test</a></h2>
+ <div class="address">
+ <div class="addr1">{$m.addr1}</div>
+ {if $m.addr2}
+ <div class="addr2">{$m.addr2}</div>
+ {/if}
+ <div class="citystatezip">{if $m.city}{$m.city}, {/if}{if $m.state.name}{$m.state.name} {/if}{if $m.zip}{$m.zip}{/if}</div>
+ {if $m.country.name}
+ <div class="country">{$m.country.name}</div>
+ {/if}
+ {if $m.toll_free}
+ <div class="phone">{$m.toll_free}</div>
+ {/if}
+ {if $m.phone}
+ <div class="phone">{$m.phone}</div>
+ {/if}
+ {if $m.url}
+ <div><a class="url" title="url" href={$m.url}>{$m.url}</a></div>
+ {/if}
+ {if $m.email}
+ <div><a class="email" title="Email" href={$m.email}>Email</a></div>
+ {/if}
+ </div>
</div>
- </div>
- {/if}
+
+ {foreach $m.packages as $p}
+ <!-- Container for each package -->
+ <div class="package">
+
+ <!-- Container for package information -->
+ <div class="package-info">
+
+ {if $p.image}
+ <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+ {/if}
- <h3 class="package-title"><a href="{$thisURL}?glm_action=detail&packageID={$p.id}">{$p.title}</a></h3>
- {if $p.descr}
- {$p.descr}
- {else if $p.short_descr}
++ <h3 class="package-title"><a href="{$siteBaseUrl}{$settings.canonical_package_page}/{$p.package_slug}/">{$p.title}</a></h3>
+ {$p.short_descr}
- {/if}
+ <div class="details">
+ <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+ <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+ </div>
+ </div>
+
+ </div>
+ {/foreach} <!-- /package -->
+
+ </div> <!-- /member -->
+ {/foreach}
+
+ <!-- If packages are listed by package, use this block -->
+ {else}
+
+ {foreach $packages as $p}
- <!-- Container for each package -->
- <div class="package">
+ <div class="glm-member-package-container">
- {if !$byMember}
+
<!-- Container for member information if displayed with each package -->
<div class="member">
- {if $p.logo}
- <img src="{$glmPluginMediaURL}/images/medium/{$p.logo}">
+ {if $p.member.logo}
+ <img src="{$glmPluginMediaURL}/images/medium/{$p.member.logo}">
{/if}
- <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member_slug}/">{$p.ref_dest_name}</a></h2>
+ <h2 class="member-title"><a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$p.member.member_slug}/">{$p.member.member_name}</a></h2>
<div class="address">
- <div class="addr1">{$p.addr1}</div>
- {if $p.addr2}
- <div class="addr2">{$p.addr2}</div>
+ <div class="addr1">{$p.member.addr1}</div>
+ {if $p.member.addr2}
+ <div class="addr2">{$p.member.addr2}</div>
{/if}
- <div class="citystatezip">{if $p.city}{$p.city}, {/if}{if $p.state.name}{$p.state.name} {/if}{if $p.zip}{$p.zip}{/if}</div>
- {if $p.country.name}
- <div class="country">{$p.country.name}</div>
+ <div class="citystatezip">{if $p.member.city}{$p.member.city}, {/if}{if $p.member.state.name}{$p.member.state.name} {/if}{if $p.member.zip}{$p.member.zip}{/if}</div>
+ {if $p.member.country.name}
+ <div class="country">{$p.member.country.name}</div>
{/if}
- {if $p.toll_free}
- <div class="phone">{$p.toll_free}</div>
+ {if $p.member.toll_free}
+ <div class="phone">{$p.member.toll_free}</div>
{/if}
- {if $p.phone}
- <div class="phone">{$p.phone}</div>
+ {if $p.member.phone}
+ <div class="phone">{$p.member.phone}</div>
{/if}
- {if $p.url}
- <a class="url" title="url" href={$p.url}>{$p.url}</a>
+ {if $p.member.url}
+ <a class="url" title="url" href={$p.member.url}>{$p.member.url}</a>
{/if}
- {if $p.email}
- <a class="email" title="Email" href={$p.email}>Email</a>
+ {if $p.member.email}
+ <a class="email" title="Email" href={$p.member.email}>Email</a>
{/if}
</div>
</div>
- {/if}
<!-- Container for package information -->
- <div class="package-info">
-
- {if $p.image}
- <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
- {/if}
- <h3 class="package-title"><a href="{$thisURL}{$settings.canonical_package_page}/{$p.package_slug}/">{$p.title}</a></h3>
- {if $p.descr}
- {$p.descr}
- {else if $p.short_descr}
- {$p.short_descr}
- {/if}
- <div class="details">
- <span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span>
- <span class="title">Pricing: </span><span class="data">{$p.pricing}</span>
+ <div class="package">
+ <div class="package-info">
+
+ {if $p.image}
+ <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+ {/if}
- <h3 class="package-title"><a href="{$thisURL}?glm_action=detail&packageID={$p.id}">{$p.title}</a></h3>
++ <h3 class="package-title"><a href="{$siteBaseUrl}{$settings.canonical_package_page}/{$p.package_slug}/">{$p.title}</a></h3>
+ {if $p.descr}
- {$p.descr}
++ {$p.descr|nl2br}
+ {else if $p.short_descr}
+ {$p.short_descr}
+ {/if}
+ <div class="details">
+ <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+ <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+ </div>
</div>
</div>
+ </div>
- </div> <!-- /package -->
-
- {/foreach}
+ {/foreach}
+
+ {/if} <!-- if by member -->
+
{else}
(Sorry, no packages currently listed.)