);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice("Category added: name = $name, parent = $parent, ID = $categoryID", 'DataBlock', "addCategory()");
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
;";
$list = $this->wpdb->get_results($sql, ARRAY_A);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - getListWithParents() query");
glmMembersAdmin::addNotice($list, 'DataBlock', 'getListWithParents() data');
}
// Get new list and return it
$current = $this->getList($memberInfoID);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($current, 'DataBlock', 'Currently Selected Member Categories');
}
* @package GLM Member-DB
* @author Chuck Scott <cscott@gaslightmedia.com>
* @license http://www.gaslightmedia.com Gaslightmedia
- * @release SVN: $Id: dataMemberType.php,v 1.0 2011/01/25 19:31:47 cscott Exp $
+ * @release SVN: $Id: dataCities.php,v 1.0 2011/01/25 19:31:47 cscott Exp $
*/
/**
* @package EventManagement
* @author Chuck Scott <cscott@gaslightmedia.com>
* @license http://www.gaslightmedia.com Gaslightmedia
- * @release SVN: $Id: dataMembers.php,v 1.0 2011/01/25 19:31:47 cscott
- * Exp $
+ * @release SVN: $Id: dataCities.php,v 1.0 2011/01/25 19:31:47 cscott
+ * Exp $
*/
class GlmDataCities extends GlmDataAbstract
{
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
--- /dev/null
+<?php
+
+/**
+ * GLM Member-DB WordPress Plugin
+ * Images data class
+ *
+ * PHP version 5.3
+ *
+ * @category Data
+ * @package GLM Member-DB
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @release SVN: $Id: dataImages.php,v 1.0 2011/01/25 19:31:47 cscott Exp $
+ */
+
+/**
+ * EventManagementDataImages class
+ *
+ * PHP version 5
+ *
+ * @category Data
+ * @package EventManagement
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @release SVN: $Id: dataImages.php,v 1.0 2011/01/25 19:31:47 cscott
+ * Exp $
+ */
+class GlmDataImages extends GlmDataAbstract
+{
+
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+ /**
+ * Field definitions
+ *
+ * @var $ini
+ * @access public
+ */
+ public $table;
+
+ /**
+ * Field definitions
+ *
+ * 'type' is type of field as defined by the application
+ * text Regular text field
+ * pointer Pointer to an entry in another table
+ * 'filters' is the filter name for a particular filter ID in PHP filter
+ * functions
+ * See PHP filter_id()
+ *
+ * 'use' is when to use the field
+ * l = List
+ * g = Get
+ * n = New
+ * i = Insert
+ * e = Edit
+ * u = Update
+ * d = Delete
+ * a = All
+ *
+ * @var $ini
+ * @access public
+ */
+ public $fields = false;
+
+ /**
+ * Constructor
+ *
+ * @param object $d
+ * database connection
+ *
+ * @return void
+ * @access public
+ */
+ function __construct ($wpdb, $config)
+ {
+
+ // If this class is not being extended along with existing $wpdb and $config
+ if (!$this->wpdb) {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ }
+
+ /*
+ * Table Name
+ */
+ $this->table = GLM_MEMBERS_PLUGIN_DB_PREFIX . 'images';
+
+ /*
+ * Table Data Fields
+ */
+ $this->fields = array(
+
+ 'id' => array(
+ 'field' => 'id',
+ 'type' => 'integer',
+ 'view_only' => true,
+ 'use' => 'a'
+ ),
+
+ // Status
+ 'status' => array (
+ 'field' => 'status',
+ 'type' => 'list',
+ 'list' => $this->config['status'],
+ 'required' => true,
+ 'default' => $this->config['status_numb']['Pending'],
+ 'force_list' => true,
+ 'use' => 'a'
+ ),
+
+ // File Name
+ 'file_name' => array(
+ 'field' => 'file_name',
+ 'type' => 'text',
+ 'required' => true,
+ 'use' => 'a'
+ ),
+
+ // Description
+ 'descr' => array(
+ 'field' => 'descr',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Caption
+ 'caption' => array(
+ 'field' => 'caption',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Position
+ 'position' => array(
+ 'field' => 'position',
+ 'type' => 'integer',
+ 'use' => 'a'
+ ),
+
+ // Reference Type - Which table this entry is associated with
+ 'ref_type' => array (
+ 'field' => 'ref_type',
+ 'type' => 'list',
+ 'list' => $this->config['ref_type'],
+ 'required' => true,
+ 'default' => $this->config['ref_type_numb']['None'],
+ 'force_list' => true,
+ 'use' => 'a'
+ ),
+
+ // Reference Destination - Which entry in the table is it associated with
+ 'position' => array(
+ 'field' => 'position',
+ 'type' => 'integer',
+ 'use' => 'a'
+ )
+
+ );
+
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
+ }
+
+ }
+
+
+ /*
+ * Get an Image Gallery
+ *
+ * Retrieves all images for a specific refernce type and ID
+ *
+ * Reference types point to a particuarl table of data, such as
+ * the member_info table. The ID points to a particular entry,
+ * such as a specific member information record (Reference
+ * Destination).
+ *
+ * @param int $refType Reference Type
+ * @param int $refID Reference entry ID
+ *
+ * @return object Class object
+ *
+ */
+ public function getGallery($refType, $refID )
+ {
+
+ // Check for a valid reference type
+ if (!isset($this->config['ref_type'][$refType])) {
+
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ glmMembersAdmin::addNotice("<b>dataImages.php - getGallery()</b><br> Specified reference type ($refType) is invalid.", 'Alert');
+ }
+
+ return false;
+ }
+
+ // Make sure $refID is a positive integer - If it's not a valid reference, nothing will be returned anyway.
+ $refID = $refID -0;
+ if ($refID <= 0) {
+
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ glmMembersAdmin::addNotice("<b>dataImages.php - getGallery()</b><br> Specified reference destination ($refID) is invalid.", 'Alert');
+ }
+
+ return false;
+ }
+
+
+ // Get all images matching $refType and $refID ordered by "position" number
+ $where = "T.ref_type = $refType AND T.ref_dest = $refID";
+ $imageGallery = $this->getList($where, 'T.position');
+
+ // Check if we found anything
+ if (!is_array($imageGallery) || count($imageGallery) == 0) {
+ return false;
+ }
+
+ return $imageGallery;
+
+ }
+}
+
+?>
\ No newline at end of file
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
// Adming Debug
'admin_debug' => array(
'field' => 'admin_debug',
- 'type' => 'boolean',
+ 'type' => 'checkbox',
'use' => 'a'
),
// Adming Debug Verbose
'admin_debug_verbose' => array(
'field' => 'admin_debug_verbose',
- 'type' => 'boolean',
+ 'type' => 'checkbox',
'use' => 'a'
),
// Front-end Debug
'front_debug' => array(
'field' => 'front_debug',
- 'type' => 'boolean',
+ 'type' => 'checkbox',
'use' => 'a'
),
'field' => 'list_logo_size',
'type' => 'list',
'list' => $this->config['image_sizes'],
- 'required' => true,
+ 'force_list' => true,
'use' => 'a'
),
// Front-end Listings - Show Street
'list_show_street' => array(
- 'field' => 'list_show_Street',
+ 'field' => 'list_show_street',
'type' => 'checkbox',
'use' => 'a'
),
),
// Front-end Listings - Show Credit Cards
- 'list_show_logo' => array(
+ 'list_show_creditcards' => array(
'field' => 'list_show_creditcards',
'type' => 'checkbox',
'default' => true,
'field' => 'list_map_logo_size',
'type' => 'list',
'list' => $this->config['image_sizes'],
- 'required' => true,
+ 'force_list' => true,
'use' => 'a'
),
// Front-end Listings - Map Show Description
- 'list_map_show_description' => array(
- 'field' => 'list_map_show_description',
+ 'list_map_show_descr' => array(
+ 'field' => 'list_map_show_descr',
'type' => 'checkbox',
'default' => false,
'use' => 'a'
),
// Front-end Listings - Map Show Street
- 'list_map_show_Street' => array(
+ 'list_map_show_street' => array(
'field' => 'list_map_show_street',
'type' => 'checkbox',
'default' => false,
'field' => 'detail_logo_size',
'type' => 'list',
'list' => $this->config['image_sizes'],
- 'required' => true,
+ 'force_list' => true,
'use' => 'a'
),
// Front-end Member Detail - Show Description
- 'detail_show_description' => array(
- 'field' => 'detail_show_description',
+ 'detail_show_descr' => array(
+ 'field' => 'detail_show_descr',
'type' => 'checkbox',
'default' => false,
'use' => 'a'
'type' => 'checkbox',
'default' => false,
'use' => 'a'
- )
+ ),
+
+ /*
+ * Front-end Member Detail Map Options
+ */
+
+ // Front-end Detail - Map Show Logo
+ 'detail_map_show_logo' => array(
+ 'field' => 'detail_map_show_logo',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Logo Size
+ 'detail_map_logo_size' => array(
+ 'field' => 'detail_map_logo_size',
+ 'type' => 'list',
+ 'list' => $this->config['image_sizes'],
+ 'force_list' => true,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Description
+ 'detail_map_show_descr' => array(
+ 'field' => 'detail_map_show_descr',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Short Description
+ 'detail_map_show_short_descr' => array(
+ 'field' => 'detail_map_show_short_descr',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Address
+ 'detail_map_show_address' => array(
+ 'field' => 'detail_map_show_address',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Street
+ 'detail_map_show_street' => array(
+ 'field' => 'detail_map_show_street',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show City, State, ZIP
+ 'detail_map_show_citystatezip' => array(
+ 'field' => 'detail_map_show_citystatezip',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Country
+ 'detail_map_show_country' => array(
+ 'field' => 'detail_map_show_country',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Region
+ 'detail_map_show_region' => array(
+ 'field' => 'detail_map_show_region',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Phone
+ 'detail_map_show_phon' => array(
+ 'field' => 'detail_map_show_phone',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Toll Free
+ 'detail_map_show_tollfree' => array(
+ 'field' => 'detail_map_show_tollfree',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show URL
+ 'detail_map_show_url' => array(
+ 'field' => 'detail_map_show_url',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show URL With New Target
+ 'detail_map_show_url_newtarget' => array(
+ 'field' => 'detail_map_show_url_newtarget',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Categories
+ 'detail_map_show_categories' => array(
+ 'field' => 'detail_map_show_categories',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show Credit Cards
+ 'detail_map_show_creditcards' => array(
+ 'field' => 'detail_map_show_creditcards',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+ // Front-end Detail - Map Show amenities
+ 'detail_map_show_amenities' => array(
+ 'field' => 'detail_map_show_amenities',
+ 'type' => 'checkbox',
+ 'default' => false,
+ 'use' => 'a'
+ ),
+
+
+
+
);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
}
--- /dev/null
+<?php
+
+/**
+ * GLM Member-DB WordPress Plugin
+ * Terms and Phrases Settings data class
+ *
+ * PHP version 5.3
+ *
+ * @category Data
+ * @package GLM Member-DB
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @release SVN: $Id: dataSettingsTerms.php,v 1.0 2011/01/25 19:31:47 cscott Exp $
+ */
+
+/**
+ * EventManagementDataSettingsGeneral class
+ *
+ * PHP version 5
+ *
+ * @category Data
+ * @package EventManagement
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @release SVN: $Id: dataMembers.php,v 1.0 2011/01/25 19:31:47 cscott
+ * Exp $
+ */
+class GlmDataSettingsTerms extends GlmDataAbstract
+{
+
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+ /**
+ * Field definitions
+ *
+ * @var $ini
+ * @access public
+ */
+ public $table;
+
+ /**
+ * Field definitions
+ *
+ * 'type' is type of field as defined by the application
+ * text Regular text field
+ * pointer Pointer to an entry in another table
+ * 'filters' is the filter name for a particular filter ID in PHP filter
+ * functions
+ * See PHP filter_id()
+ *
+ * 'use' is when to use the field
+ * l = List
+ * g = Get
+ * n = New
+ * i = Insert
+ * e = Edit
+ * u = Update
+ * d = Delete
+ * a = All
+ *
+ * @var $ini
+ * @access public
+ */
+ public $fields = false;
+
+ /**
+ * Constructor
+ *
+ * @param object $d
+ * database connection
+ *
+ * @return void
+ * @access public
+ */
+ function __construct ($wpdb, $config)
+ {
+
+ // If this class is not being extended along with existing $wpdb and $config
+ if (!$this->wpdb) {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ }
+
+ /*
+ * Table Name
+ */
+ $this->table = GLM_MEMBERS_PLUGIN_DB_PREFIX . 'settings_terms';
+
+ /*
+ * Table Data Fields
+ */
+ $this->fields = array(
+
+ 'id' => array(
+ 'field' => 'id',
+ 'type' => 'integer',
+ 'view_only' => true,
+ 'use' => 'a'
+ ),
+
+ /*
+ * Admin Menu Names
+ */
+
+ // Menu Members
+ 'term_admin_menu_members' => array(
+ 'field' => 'term_admin_menu_members',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Sub Menu Member List
+ 'term_admin_menu_members_list' => array(
+ 'field' => 'term_admin_menu_member_list',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Menu Member
+ 'term_admin_menu_member' => array(
+ 'field' => 'term_admin_menu_member',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Menu Configure
+ 'term_admin_menu_configure' => array(
+ 'field' => 'term_admin_menu_configure',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Menu Settings
+ 'term_admin_menu_settings' => array(
+ 'field' => 'term_admin_menu_settings',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Menu Shortcodes
+ 'term_admin_menu_shortcodes' => array(
+ 'field' => 'term_admin_menu_shortcodes',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ /*
+ * Admin Page Tabs
+ */
+
+ // Tab Members/Main Dashboard
+ 'term_admin_menu_members_dashboard' => array(
+ 'field' => 'term_admin_menu_members_dashboard',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Members/List of Members
+ 'term_admin_menu_members_list' => array(
+ 'field' => 'term_admin_menu_members_list',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Members/Reports
+ 'term_admin_menu_members_reports' => array(
+ 'field' => 'term_admin_menu_members_reports',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Member Dashboard
+ 'term_admin_menu_member_dashboard' => array(
+ 'field' => 'term_admin_menu_member_dashboard',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Member Info
+ 'term_admin_menu_member_info' => array(
+ 'field' => 'term_admin_menu_member_info',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Locations
+ 'term_admin_menu_member_locations' => array(
+ 'field' => 'term_admin_menu_member_locations',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Facilities
+ 'term_admin_menu_member_facilities' => array(
+ 'field' => 'term_admin_menu_member_facilities',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Attractions
+ 'term_admin_menu_member_attractions' => array(
+ 'field' => 'term_admin_menu_member_attractions',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Member/Contacts
+ 'term_admin_menu_member_contacts' => array(
+ 'field' => 'term_admin_menu_member_contacts',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Member Types
+ 'term_admin_menu_configure_member_types' => array(
+ 'field' => 'term_admin_menu_configure_member_types',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Member Categories
+ 'term_admin_menu_configure_member_cats' => array(
+ 'field' => 'term_admin_menu_configure_member_cats',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Accommodation Types
+ 'term_admin_menu_configure_accom_types' => array(
+ 'field' => 'term_admin_menu_configure_accom_types',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Amenities
+ 'term_admin_menu_configure_amenities' => array(
+ 'field' => 'term_admin_menu_configure_amenities',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Cities
+ 'term_admin_menu_configure_cities' => array(
+ 'field' => 'term_admin_menu_configure_cities',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Configure/Regions
+ 'term_admin_menu_configure_regions' => array(
+ 'field' => 'term_admin_menu_configure_regions',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Settings/General Settings
+ 'term_admin_menu_settings_general' => array(
+ 'field' => 'term_admin_menu_settings_general',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Settings/Terms and Phrases
+ 'term_admin_menu_settings_terms' => array(
+ 'field' => 'term_admin_menu_settings_terms',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Tab Settings/Development
+ 'term_admin_menu_settings_development' => array(
+ 'field' => 'term_admin_menu_settings_development',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ /*
+ * General Terms
+ */
+
+ // Member
+ 'term_member' => array(
+ 'field' => 'term_member',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Member Cap
+ 'term_member_cap' => array(
+ 'field' => 'term_member_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Member Plural
+ 'term_member_plur' => array(
+ 'field' => 'term_member_plur',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Member Plural Cap
+ 'term_member_plur_cap' => array(
+ 'field' => 'term_member_plur_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Location
+ 'term_location' => array(
+ 'field' => 'term_location',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Location Cap
+ 'term_location_cap' => array(
+ 'field' => 'term_location_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Location Plur
+ 'term_location_plur' => array(
+ 'field' => 'term_location_plur',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Location Plur Cap
+ 'term_location_plur_cap' => array(
+ 'field' => 'term_location_plur_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Facility
+ 'term_facility' => array(
+ 'field' => 'term_facility',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Facility Cap
+ 'term_facility_cap' => array(
+ 'field' => 'term_facility_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Facility Plur
+ 'term_facility_plur' => array(
+ 'field' => 'term_facility_plur',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Facility Plur Cap
+ 'term_facility_plur_cap' => array(
+ 'field' => 'term_facility_plur_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Attraction
+ 'term_attraction' => array(
+ 'field' => 'term_attraction',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Attraction Cap
+ 'term_attraction_cap' => array(
+ 'field' => 'term_attraction_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Attraction Plur
+ 'term_attraction_plur' => array(
+ 'field' => 'term_attraction_plur',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Attraction Plur Cap
+ 'term_attraction_plur_cap' => array(
+ 'field' => 'term_attraction_plur_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Contact
+ 'term_contact' => array(
+ 'field' => 'term_contact',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Contact Cap
+ 'term_contact_cap' => array(
+ 'field' => 'term_contact_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Contact Plur
+ 'term_contact_plur' => array(
+ 'field' => 'term_contact_plur',
+ 'type' => 'text',
+ 'use' => 'a'
+ ),
+
+ // Contact Plur Cap
+ 'term_contact_plur_cap' => array(
+ 'field' => 'term_contact_plur_cap',
+ 'type' => 'text',
+ 'use' => 'a'
+ )
+
+
+ );
+
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ glmMembersAdmin::addNotice($this->fields, 'DataBlock', 'Table Fields: '.$this->table);
+ }
+
+ }
+}
+
+?>
\ No newline at end of file
[chuck:common]
admin_debug = true
+admin_debug_verbose = true
front_debug = true
googleMapsApiKey = ''
'locations',
'facilities',
'activities',
- 'accommodations'
+ 'accommodations',
+ 'memberImage', // Member Image Processing via AJAX
)
,
'configure' => array(
),
'settings' => array(
'index', // General Options
+ 'terms', // Terms and Phrases
'development'
),
'shortcodes' => array(
));
-/*
- add_action( 'admin_init',
- array(
- $this,
- 'glmMembersAdminSettingsInit'
- ));
-*/
+ // Add AJAX image upload action
+ add_action( 'wp_ajax_glm_members_image_upload',
+ array(
+ $this,
+ 'glmMembersImageUpload'
+ )
+ );
+
+
+ }
+
+ /**
+ * Image Upload AJAX Target
+ *
+ * Acccepts image uploads and routes them to the appropriate
+ * model file.
+ *
+ * @return void
+ * @access public
+ */
+ public function glmMembersImageUpload()
+ {
+ // Get the model menu
+ if (isset($_REQUEST['glm_menu']) && $_REQUEST['glm_menu'] != '') {
+ $a = sanitize_text_field($_REQUEST['glm_menu']);
+ if ($a != '') {
+ $menuItem = $a;
+ } else {
+ // No menu provided - terminating
+ trigger_error ( 'ERROR: No "glm_menu" string provided in POST array.', E_USER_ERROR);
+ }
+ } else {
+ // Missing glm_menu Item in post array.
+ trigger_error ( 'ERROR: No "glm_menu" item in POST array.', E_USER_ERROR);
+ }
+
+ // Get the model action
+ if (isset($_REQUEST['glm_action']) && $_REQUEST['glm_action'] != '') {
+ $a = sanitize_text_field($_REQUEST['glm_action']);
+ if ($a != '') {
+ $Action = $a;
+ } else {
+ // No menu provided - terminating
+ trigger_error ( 'ERROR: No "glm_action" string provided in POST array.', E_USER_ERROR);
+ }
+
+ } else {
+ trigger_error ( 'ERROR: No "glm_action" itme in POST array.', E_USER_ERROR);
+ }
+
+ // If menu item and action aren't valid, quit now.
+ if (! isset($GLOBALS['glmMembersAdminValidActions'][$menuItem]) ||
+ ! in_array($Action, $GLOBALS['glmMembersAdminValidActions'][$menuItem])) {
+
+ // Menu item/Action not in valid actions array
+ trigger_error ( 'ERROR: The specified menu item and action are not valid.', E_USER_ERROR);
+ }
+
+ // Build model and path and class names
+ $modelName = GLM_MEMBERS_PLUGIN_PATH . '/models/admin/' . $menuItem .
+ '/' . $Action . '.php';
+ $className = 'GlmMembersAdmin_' . $menuItem . '_' . $Action;
+
+ // If model file doesn't exist - we have an error
+ if (!file_exists($modelName)) {
+ trigger_error ( "ERROR: The specified model file doesn't exist. ($modelName)", E_USER_ERROR);
+ }
+
+ // Load the model file
+ require_once ($modelName);
+
+ // check for an invalid model class name
+ if (!class_exists($className)) {
+ trigger_error ( "ERROR: The specified class naeme doesn't exist. ($className)", E_USER_ERROR);
+ }
+
+ // Instantiate the model and ask it to perform the work
+ $model = new $className($this->wpdb, $this->config);
+ $model->modelAction();
+
+ wp_die();
+
}
/**
* Setup inclusion of admin scripts and css
*
* This method is called by an add_action() hook setup in the contructor.
- *
+ *FormData
* (no prameters)
*
* @return void
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_media();
+
+ // Scripts included with this plugin
wp_register_script('glm-members-admin-js',
GLM_MEMBERS_PLUGIN_URL . 'js/admin.js',
array(
GLM_MEMBERS_PLUGIN_URL . 'css/admin.css');
wp_enqueue_style('glmMembersAdminStyle');
+ // Image Upload scripts and css for Member DB and perhaps other
+ wp_register_script('glm-members-admin-image-upload',
+ GLM_MEMBERS_PLUGIN_URL . 'js/imageUpload/imageUpload.js',
+ array(
+ 'jquery'
+ ));
+ wp_enqueue_script('glm-members-admin-image-upload');
+ wp_register_style('glm-members-admin-image-upload-css',
+ GLM_MEMBERS_PLUGIN_URL . 'js/imageUpload/imageUpload.css');
+ wp_enqueue_style('glm-members-admin-image-upload-css');
}
}
}
- delete_option('glmMembersAdminNoticeDataBlocks');
-
echo $output.'
</body>
</html>
echo $output.'</p></div>';
- // Delete the option containing the notices to indicate they have been sent
- delete_option('glmMembersAdminNotices');
}
+ delete_option('glmMembersAdminNoticeAlerts');
+ delete_option('glmMembersAdminNotices');
+ delete_option('glmMembersAdminNoticeProcess');
+ delete_option('glmMembersAdminNoticeDataBlocks');
+
}
/*
--- /dev/null
+/*
+ * HTML5 Image Upload Support
+ *
+ * Developed from information in http://www.sitepoint.com/html5-file-drag-and-drop/
+ */
+
+jQuery(document).ready(function($) {
+
+ // output information
+ function Output(msg) {
+ var m = $id("imageDragMessages");
+ m.innerHTML = msg + m.innerHTML;
+ }
+
+ // Setup Drag and Drop when Add and
+ $('#newImageButton').click( function() {
+ //call initialization function if drag/drop supported by browser
+ if (window.File && window.FileList && window.FileReader) {
+ ImageDragInit();
+ }
+ });
+
+ //initialize
+ function ImageDragInit() {
+
+ // is XHR2 available?
+ var xhr = new XMLHttpRequest();
+ if (xhr.upload) {
+
+ // Change from Drag/Drop not supported to drop here display
+ $('#noImageDrop').css('display', 'none');
+ $('#noImageDrop').css('display', 'none');
+ $('#imageDrop').css('display', 'block');
+
+ // file drop
+// imageDrop.addEventListener("dragover", FileDragHover, false);
+// imageDrop.addEventListener("dragleave", FileDragHover, false);
+// imageDrop.addEventListener("drop", FileSelectHandler, false);
+
+ // remove submit button
+ newImageSubmit.style.display = "none";
+
+ }
+
+ }
+
+ /*
+ $(window).on('dragenter', function(){
+ $(this).preventDefault();
+ });
+*/
+
+ // Change drop destination appearance only when dragging over a file.
+ $('#imageDrop').on('dragenter', function(){
+ $('#imageDropText').css('display', 'none');
+ $('#imageDrop').addClass('imageDropDragOver');
+ });
+
+ $('#imageDrop').on('dragleave', function(){
+ $('#imageDropText').css('display', 'block');
+ $('#imageDrop').removeClass('imageDropDragOver');
+ });
+
+ // file drag hover
+ $('#imageDrop').mouseover( function(e) {
+ e.stopPropagation();
+// e.preventDefault();
+// $('#imageDrop').css('display', 'block');
+ e.target.className = (e.type == "dragover" ? "hover" : "");
+ });
+
+ // file selection
+ $('#newImage').change( function() {
+
+ // cancel event and hover styling
+ FileDragHover(e);
+
+ // fetch FileList object
+ var files = e.target.files || e.dataTransfer.files;
+
+ // process all File objects
+ for (var i = 0, f; f = files[i]; i++) {
+ ParseFile(f);
+ }
+
+ });
+
+});
--- /dev/null
+.glm-imageGalleryContainer
+{
+ margin: .5em 1em 1em 1em;
+ padding: .5em;
+ border: 2px solid #ccc;
+ text-align: center;
+}
+
+.glm-imageDropContainer
+{
+ position: relative;
+ text-align: center;
+ padding: 0 1em 1em 1em;
+ background-color: #eee;
+ border: 2px solid #ccc;
+ border-radius: 7px;
+ cursor: default;
+ margin-left: auto;
+ margin-right: auto;
+ width: 75%;
+ height: 5em;
+}
+.glm-imageDrop
+{
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 10;
+ border-radius: 7px;
+ height: 100%;
+ background-color: #000;
+ opacity: .0;
+ filter: alpha(opacity=0); /* For IE8 and earlier */
+
+}
+.glm-imageDropText
+{
+ color: #666;
+ z-index: 9;
+}
+.glm-noImageDropText
+{
+ color: #666;
+}
+.glm-imageItemHidden
+{
+ display: none;
+ z-index: 9;
+}
+.glm-imageDropDragOver
+{
+ border: 2px solid #000 important;
+ background-color: #fff;
+}
+.glm-imageUploadStatus
+{
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 20px;
+ left: 10px;
+ z-index: 11;
+ border: 2px solid black;
+ border-radius: 7px;
+ height: 8em;
+ background-color: #fff;
+ box-shadow: 10px 10px 5px grey;
+}
+
+.glm-imageGalleryImages
+{
+}
+
+.glm-statusTable
+{
+ width: 100%;
+/* table-layout: fixed; */
+ line-height: 80%;
+}
+.glm-statusImageTD
+{
+/* width: 25%; */
+ max-width: 100%;
+ overflow: hidden;
+ padding: 3px;
+ display: table-cell;
+ vertical-align: middle;
+}
+.glm-statusPrompt
+{
+ width: 10%;
+ padding: 0px;
+ font-weight: bold;
+ text-align: right;
+}
+.glm-statusValue
+{
+ width: 65%;
+ padding: 0px;
+ text-align: left;
+}
+.glm-statusImageContainer
+{
+ display: block;
+ width: 100px;
+}
+.glm-statusImage
+{
+ height: 5.1em;
+ width: auto;
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.glm-progressBarContainer
+{
+ height: 100%;
+ width: 95%;
+ background-color: #ccc;
+ border: 1px solid black;
+ line-height: 1em;
+}
+.glm-progressBar
+{
+ height: 1em;
+ background-color: blue;
+ width: 0%;
+}
+
--- /dev/null
+/*
+ * HTML5 Image Upload Support
+ *
+ * Developed from information in
+ * http://www.sitepoint.com/html5-file-drag-and-drop/
+ * http://hayageek.com/drag-and-drop-file-upload-jquery/
+ */
+
+
+/****** NEED TO ADD FILE SIZE TEST AND USER NOTICE ALERT *******/
+
+jQuery(document).ready(function($) {
+
+
+ var drop;
+ var recordID;
+ var menuItem;
+ var action;
+ var files;
+
+ // Setup Drag and Drop when Add and
+ if (window.File && window.FileList && window.FileReader) {
+
+ // is XHR2 available?
+ var xhr = new XMLHttpRequest();
+ if (xhr.upload) {
+
+ // Change from Drag/Drop not supported to drop here text
+ $('.glm-imageBrowseButton').addClass('glm-imageItemHidden');
+ $('.glm-imageDropText').removeClass('glm-imageItemHidden');
+ $('.glm-imageDrop').removeClass('glm-imageItemHidden');
+
+ // Prevent dropping on the document
+ $(document).on('dragenter', function (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ });
+ $(document).on('dragover', function (e) {
+ e.stopPropagation();
+ e.preventDefault();
+ });
+ $(document).on('drop', function (e) {
+ e.preventDefault();
+ });
+
+ // For each image drop area
+ $('.glm-imageDrop').each(function() {
+ drop = $(this);
+ initDrop();
+
+ // **** NEED TO DEAL WITH DELAY TILL THE PRIOR DROP AREA HAS BEEN PROCESSED ***
+
+ });
+
+ } else {
+ $('.glm-noImageDropText').removeClass('glm-imageItemHidden');
+ }
+
+ }
+
+ // Setup a single drop area
+ function initDrop() {
+
+ // Get ID for the record number to which these images belong.
+ recordID = drop.attr("data-id");
+ menuItem = drop.attr("data-menuItem");
+ action = drop.attr("data-action");
+
+ // Change drop destination appearance only when dragging over a file.
+ drop.on('dragenter', function(e){
+ e.stopPropagation();
+ e.preventDefault();
+ drop.parent().addClass('glm-imageDropDragOver');
+ });
+ drop.on('dragover', function(e){
+ e.stopPropagation();
+ e.preventDefault();
+ });
+ drop.on('dragleave', function(e){
+ e.stopPropagation();
+ e.preventDefault();
+ drop.parent().removeClass('glm-imageDropDragOver');
+ });
+
+ // File drop action
+ $('.glm-imageDrop').on('drop', function (e) {
+ e.preventDefault();
+ files = e.originalEvent.dataTransfer.files;
+ handleFileDrop();
+ drop.parent().removeClass('glm-imageDropDragOver');
+ });
+
+ }
+
+ /*
+ * This function sets up AJAX processing of the list of files.
+ * It then fires off the processFile() function to do the first
+ * file. When the AJAX call in sendFileToServer() completes,
+ * the complete: function will call processFile() again to
+ * do the next file, if one exists.
+ */
+ var thisFile = 0;
+ var numbFiles = 0;
+
+ function handleFileDrop() {
+
+ // Reset file pointer and set number of last file
+ thisFile = 0;
+ numbFiles = files.length;
+
+ // Start with the first file
+ processFile();
+
+/* var fd = new FormData();
+ fd.append('file', file);
+
+ var status = new createStatusbar(file, drop);
+ statusArea.fadeIn( function() {
+ sendFileToServer(fd,status);
+ });
+*/
+// statusArea.addClass('glm-imageItemHidden');
+
+ }
+
+ /*
+ * Process the current file - AJAX complete: will call back to this
+ * function for the next file
+ */
+ function processFile() {
+
+ // If we still have files to process
+ if (thisFile < numbFiles) {
+
+ file = files[thisFile];
+
+ // Setup field pairs for sending in request
+ var fd = new FormData();
+ fd.append('file', file);
+
+ // Setup status display area
+ var status = new createStatusbar(file, thisFile, numbFiles);
+ statusArea.fadeIn( function() {
+
+ // When status has faded in, Send the files
+ sendFileToServer(fd, status, recordID);
+
+ });
+
+ thisFile++;
+
+ } else {
+
+ // done
+
+ }
+
+ }
+
+ function createStatusbar(file, thisFile, numbFiles)
+ {
+ var statusDone = false;
+
+ /*
+ * We need to redefine these values inside this function
+ * so the reader.onload function can see them.
+ */
+ var curFile = thisFile + 1;
+ var lastFile = numbFiles;
+
+ // Get status area for this drop area
+ statusArea = drop.siblings('.glm-imageUploadStatus');
+
+ // Make status area visible (overlay) and clear contents
+ statusArea.html('');
+
+ // If file is an image
+ var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.jpg|.jpeg|.gif|.png|.bmp)$/;
+
+ if (regex.test(file.name.toLowerCase())) {
+
+ // Create HTML5 file reader and load image
+ var reader = new FileReader();
+ reader.onload = function (e) {
+
+ // Add file information to status area
+ statusbar =
+ '<b><u>Uploading Image {thisFile} of {numbFiles}</u></b>' +
+ '<table class="glm-statusTable">' +
+ ' <tr><td class="glm-statusImageTD" rowspan="5"><div class="glm-statusImageContainer"><img class="glm-statusImage" src="{fileImage}"></div></td></tr>' +
+ ' <tr><td class="glm-statusPrompt">Name: </td><td class="glm-statusValue">{fileName}</td></tr>' +
+ ' <tr><td class="glm-statusPrompt">Type: </td><td class="glm-statusValue">{fileType}</td></tr>' +
+ ' <tr><td class="glm-statusPrompt">Size: </td><td class="glm-statusValue">{fileSize}</td></tr>' +
+ ' <tr><td class="glm-statusPrompt">Progress: </td><td class="glm-statusValue"><div class="glm-progressBarContainer"><div class="glm-progressBar"></div></div></td></tr>' +
+ '</table>'
+ ;
+ statusbar = statusbar.replace('{thisFile}', curFile);
+ statusbar = statusbar.replace('{numbFiles}', lastFile);
+ statusbar = statusbar.replace('{fileImage}', e.target.result);
+ statusbar = statusbar.replace('{fileName}', file.name);
+ statusbar = statusbar.replace('{fileType}', file.type);
+
+ // Fix up file size string and replace that
+ var sizeStr="";
+ var sizeKB = file.size/1024;
+ if(parseInt(sizeKB) > 1024)
+ {
+ var sizeMB = sizeKB/1024;
+ sizeStr = sizeMB.toFixed(2)+" MB";
+ }
+ else
+ {
+ sizeStr = sizeKB.toFixed(2)+" KB";
+ }
+ statusbar = statusbar.replace('{fileSize}', sizeStr);
+
+ // Assign the HTML to the status area
+ statusArea.html(statusbar);
+
+ }
+ reader.readAsDataURL(file);
+ } else {
+ alert(file.name + " is not a valid image file.");
+ statusArea.addClass('glm-imageItemHidden');
+ return false;
+ }
+
+ this.setProgress = function(progress)
+ {
+ statusArea.find('.glm-progressBar').css('width', progress + '%');
+
+/*
+ var progressBarWidth =progress*this.progressBar.width()/ 100;
+ this.progressBar.find('div').animate({ width: progressBarWidth }, 10).html(progress + "% ");
+ if(parseInt(progress) >= 100)
+ {
+ this.abort.hide();
+ }
+*/
+ }
+
+ this.setAbort = function(jqxhr)
+ {
+ var sb = this.statusbar;
+ this.abort.click(function()
+ {
+ jqxhr.abort();
+ sb.hide();
+ });
+ }
+ }
+
+ /*
+ * Sends file to image plugin via AJAX submission targeting
+ * WordPress AJAX handling. An image upload processor has been
+ * declared with an add_action() in the admin controller
+ * specifying the function containing that processor. We tell
+ * WordPress how to route the submission using the "action"
+ * post parameter. This matches everything after "wp_ajax_"
+ * in the action name.
+ */
+ function sendFileToServer(fd, status, recordID)
+ {
+
+ fd.append( 'action', 'glm_members_image_upload' );
+
+ var jqXHR=$.ajax({
+ xhr: function() {
+ var xhrobj = $.ajaxSettings.xhr();
+ if (xhrobj.upload) {
+ xhrobj.upload.addEventListener('progress', function(event) {
+ var percent = 0;
+ var position = event.loaded || event.position;
+ var total = event.total;
+ if (event.lengthComputable) {
+ percent = Math.ceil(position / total * 100);
+ }
+ status.setProgress(percent);
+ }, false);
+
+ }
+ return xhrobj;
+ },
+ url: ajaxurl + '?glm_menu=' + menuItem + '&glm_action=' + action + '&memberInfoID=' + recordID, // WordPress admin AJAX url
+ type: "POST",
+ contentType:false,
+ processData: false,
+ cache: false,
+ data: fd,
+ success: function(data){
+alert(data);
+// status.clearStatus();
+// status.setProgress(100);
+
+// $("#status1").append("File upload Done<br>");
+ },
+ complete: function() {
+
+ // When status area has faded
+ statusArea.fadeOut( function() {
+
+ // Process the next file, if one exists.
+ processFile();
+
+ });
+
+ }
+ });
+
+ return jqXHR;
+// status.setAbort(jqXHR);
+ }
+
+});
--- /dev/null
+; http://editorconfig.org
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
\ No newline at end of file
--- /dev/null
+node_modules
+tmp
+
+.DS_Store
+._*
\ No newline at end of file
--- /dev/null
+language: node_js
+node_js:
+ - 0.10
+
+before_script:
+ - npm install -g grunt-cli
+
+script: "grunt test"
--- /dev/null
+ezdz-multiple
+
+jQuery File Input plugin ezdz multiple files and grid preview
+
+It is based on Ezdz jQuery File Input plugin. new features have been added as follows.
+
+ support multiple file upload.
+ support grid preview of image.
+
+All other settings pls refer to ezdz documentation https://github.com/jaysalvat/ezdz
+
+index.html file demostrates multiple file upload features and preview of image features.
+
+remember add multiple attribute to input tag.
+Sample Usage
+
+in the html head section
+
+<link rel="stylesheet" href="src/jquery.ezdz.css">
+<script type="text/javascript" src= "node_modules/jquery/dist/jquery.min.js"></script>
+<script src="src/jquery.ezdz.js"></script>
+
+in the body section, simply add normal input tag, the plugin will automatically convert it into dropzone.
+
+<input type="file" name="file_upload[]" accept="image/png, image/jpeg" multiple/>
+
+add javascript pointing to input tag, add customize configuration.
+
+$('input[type="file"]').ezdz({
+ text: 'drop cover photos',
+ validators: {
+ maxWidth: 2000,
+ maxHeight: 2000,
+ maxNumber: 6
+ },
+ reject: function(file, errors) {
+ if (errors.mimeType) {
+ alert(file.name + ' must be an image.');
+ return;
+ }
+
+ if (errors.maxWidth) {
+ alert(file.name + ' must be width:2000px max.');
+ return;
+ }
+
+ if (errors.maxHeight) {
+ alert(file.name + ' must be height:2000px max.');
+ return;
+ }
+
+ if (errors.maxNumber) {
+ alert('you can upload maximum of 6 images');
+ return;
+ }
+ }
+ });
+
+if you looking for modify preview image grid, editing jquery.ezdz.css, for example, the code represent 3 columns grid.
+
+.image-g li {
+ float: left;
+ max-width: 32%;
+ max-height: 48%;
+ padding: 0.10em;
+}
+
+.image-g li:nth-child(3n+1) {
+ clear: left;
+}
--- /dev/null
+/* ----------------------------------------------------------------------------
+// Ezdz [izy-dizy]
+// Licensed under the MIT license.
+// http://github.com/jaysalvat/ezdz/
+// ----------------------------------------------------------------------------
+// Copyright (C) 2014 Jay Salvat
+// http://jaysalvat.com/
+// --------------------------------------------------------------------------*/
+
+.ezdz-dropzone {
+ position: relative;
+/* font: bold 24px arial; */
+ text-align: center;
+ width: 100%;
+ height: 400px; /* Width of entire drop area */
+ line-height: 100px;
+ color: #;
+ overflow: hidden;
+}
+
+.ezdz-dropzone div {
+ color: lightgray;
+/* font: bold 24px arial; */
+ line-height: 100px;
+ /* */
+}
+
+.ezdz-dropzone span {
+ border-radius: 20px;
+ background: black;
+ background: rgba(0,0,0,0.7);
+ color: white;
+ font-size: 13px;
+ font-weight: normal;
+ max-width: 90%;
+ vertical-align: middle;
+ padding: 4%;
+ line-height: 10px;
+ display: inline-block;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+.ezdz-dropzone img {
+ border-radius: 5px;
+
+}
+
+.ezdz-dropzone [type="file"] {
+ cursor: pointer;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ margin: 0;
+ padding: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+}
+
+.ezdz-focus {
+/* border: 10px dotted darkgray; */
+ color: darkgray;
+}
+
+.ezdz-focus div {
+ color: darkgray;
+
+}
+
+.ezdz-enter {
+/* border: 10px solid black; */
+ color: black;
+}
+
+.ezdz-enter div {
+ color: black;
+
+}
+.ezdz-accept {
+/* border: 10px solid gray; */
+ color: gray;
+}
+
+.ezdz-accept div {
+ color: gray;
+}
+
+.ezdz-reject {
+/* border: 10px solid darkred; */
+ color: darkred;
+}
+
+.ezdz-reject div {
+ color: darkred;
+}
+
+.image-g {
+ list-style-type: none;
+ padding: 0.25em;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.image-g li {
+ float: left;
+ width: 360px;
+/* max-width: 32%;
+ max-height: 48%; */
+ padding: 0.10em;
+}
+
+.image-g img {
+ display: block;
+ width: 40%;
+ height: auto;
+ border: 2px solid black;
+}
+
+.image-g li:nth-child(3n+1) {
+ clear: left;
+}
+
\ No newline at end of file
--- /dev/null
+/* ----------------------------------------------------------------------------
+// Ezdz [izy-dizy]
+// Licensed under the MIT license.
+// http://github.com/jaysalvat/ezdz/
+// ----------------------------------------------------------------------------
+// Copyright (C) 2014 Jay Salvat
+// http://jaysalvat.com/
+// --------------------------------------------------------------------------*/
+
+/* global define: true, require: true, jQuery */
+
+(function (factory) {
+ "use strict";
+
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ factory(require('jquery'));
+ } else {
+ factory(jQuery);
+ }
+}(function ($) {
+ "use strict";
+
+ // Default settings
+ var defaults = {
+ className: '',
+ text: 'Drop a file',
+ previewImage: true,
+ value: null,
+ classes: {
+ main: 'ezdz-dropzone',
+ enter: 'ezdz-enter',
+ reject: 'ezdz-reject',
+ accept: 'ezdz-accept',
+ focus: 'ezdz-focus'
+ },
+ validators: {
+ maxSize: null,
+ width: null,
+ maxWidth: null,
+ minWidth: null,
+ height: null,
+ maxHeight: null,
+ minHeight: null,
+ maxNumber: null
+ },
+ init: function() {},
+ enter: function() {},
+ leave: function() {},
+ reject: function() {},
+ accept: function() {},
+ format: function(filename) {
+ return filename;
+ }
+ };
+
+ // Main plugin
+ $.ezdz = function(element, options) {
+ this.settings = $.extend(true, {}, defaults, $.ezdz.defaults, options);
+ this.$input = $(element);
+
+ var self = this,
+ settings = self.settings,
+ $input = self.$input;
+
+ if (!$input.is('input[type="file"]')) {
+ return;
+ }
+
+ // Stop if not compatible with HTML5 file API
+ if (!$.ezdz.isBrowserCompatible()) {
+ return;
+ }
+
+ // private: Init the plugin
+ var init = function() {
+ var $ezdz, $container, value;
+
+ // Build the container
+ $container = $('<div class="' + settings.classes.main + '" />')
+
+ .on('dragover.ezdz', function() {
+ $(this).addClass(settings.classes.enter);
+
+ if ($.isFunction(settings.enter)) {
+ settings.enter.apply(this);
+ }
+ })
+
+ .on('dragleave.ezdz', function() {
+ $(this).removeClass(settings.classes.enter);
+
+ if ($.isFunction(settings.leaved)) {
+ settings.leaved.apply(this);
+ }
+ })
+
+ .addClass(settings.className);
+
+ // Build the whole dropzone
+ $input
+ .wrap($container)
+ .before('<div>' + settings.text + '</div>');
+
+ $ezdz = $input.parent('.' + settings.classes.main);
+
+ // Preview a file at start if it's defined
+ value = settings.value || $input.data('value');
+
+ if (value) {
+ self.preview(value);
+ }
+
+ // Trigger the init callback
+ if ($.isFunction(settings.init)) {
+ settings.init.apply($input, [ value ]);
+ }
+
+ // Events on the input
+ $input
+
+ .on('focus.ezdz', function() {
+ $ezdz.addClass(settings.classes.focus);
+ })
+
+ .on('blur.ezdz', function() {
+ $ezdz.removeClass(settings.classes.focus);
+ })
+
+ .on('change.ezdz', function() {
+
+
+ // No file, so user has cancelled
+ if (this.files.length == 0) {
+ return;
+ }
+
+ // Mime-Types
+ var allowed = $input.attr('accept'),
+ accepted = false,
+ valid = true,
+ errors = {
+ 'mimeType': false,
+ 'maxSize': false,
+ 'width': false,
+ 'minWidth': false,
+ 'maxWidth': false,
+ 'height': false,
+ 'minHeight': false,
+ 'maxHeight': false,
+ 'maxNumber': false
+ };
+
+ //Check the maximum number of files
+
+ if (settings.validators.maxNumber && this.files.length > settings.validators.maxNumber) {
+ valid = false;
+ errors.maxNumber = true;
+ }
+
+ var imgArr = new Array();
+ var isImage = true;
+
+ var i=0;
+ for(i=0;i<this.files.length;i++){
+
+ var file = this.files[i];
+
+
+ // Info about the dropped or selected file
+ var basename = file.name.replace(/\\/g,'/').replace( /.*\//, ''),
+ extension = file.name.split('.').pop(),
+ formatted = settings.format(basename);
+
+ file.extension = extension;
+
+
+ // Check the accepted Mime-Types from the input file
+ if (allowed) {
+ var types = allowed.split(/[,|]/);
+
+ $.each(types, function(i, type) {
+ type = $.trim(type);
+
+ if (file.type === type) {
+ accepted = true;
+ return false;
+ }
+
+ // Mime-Type with wildcards ex. image/*
+ if (type.indexOf('/*') !== false) {
+ var a = type.replace('/*', ''),
+ b = file.type.replace(/(\/.*)$/g, '');
+
+ if (a === b) {
+ accepted = true;
+ return false;
+ }
+ }
+ });
+
+ if (accepted === false) {
+ errors.mimeType = true;
+ }
+ } else {
+ accepted = true;
+ }
+
+ // Reset the accepted / rejected classes
+ $ezdz.removeClass(settings.classes.reject + ' ' + settings.classes.accept);
+
+ // If the Mime-Type is not accepted
+ if (accepted !== true) {
+ $input.val('');
+
+ $ezdz.addClass(settings.classes.reject);
+
+ // Trigger the reject callback
+ if ($.isFunction(settings.reject)) {
+ settings.reject.apply($input, [ file, errors ]);
+ }
+ return false;
+ }
+
+ // Read the added file
+ var reader = new FileReader(file);
+
+ reader.readAsDataURL(file);
+
+ reader.onload = function(e) {
+ var img = new Image();
+
+ imgArr.push(img);
+
+ file.data = e.target.result;
+ img.src = file.data;
+
+ setTimeout(function() {
+ if(img.width && img.height){
+
+ }else{
+ isImage = false;
+ }
+
+ // Validator
+ if (settings.validators.maxSize && file.size > settings.validators.maxSize) {
+ valid = false;
+ errors.maxSize = true;
+ }
+
+ if (isImage) {
+ file.width = img.width;
+ file.height = img.height;
+
+ if (settings.validators.width && img.width !== settings.validators.width) {
+ valid = false;
+ errors.width = true;
+ }
+
+ if (settings.validators.maxWidth && img.width > settings.validators.maxWidth) {
+ valid = false;
+ errors.maxWidth = true;
+ }
+
+ if (settings.validators.minWidth && img.width < settings.validators.minWidth) {
+ valid = false;
+ errors.minWidth = true;
+ }
+
+ if (settings.validators.height && img.height !== settings.validators.height) {
+ valid = false;
+ errors.height = true;
+ }
+
+ if (settings.validators.maxHeight && img.height > settings.validators.maxHeight) {
+ valid = false;
+ errors.maxHeight = true;
+ }
+
+ if (settings.validators.minHeight && img.height < settings.validators.minHeight) {
+ valid = false;
+ errors.minHeight = true;
+ }
+ }
+
+
+ }, 100);
+ };
+ }
+
+ setTimeout(function() {
+
+ // The file is validated, so added to input
+ if (valid === true) {
+ $ezdz.find('img').remove();
+
+ if (isImage && settings.previewImage === true) {
+ var $image_wrapper = $("<ul></ul>");
+ $image_wrapper.addClass("image-g");
+ var i;
+ for (i=0;i<imgArr.length;i++){
+ var img_obj = imgArr[i];
+ var $image_item = $("<li></li>").append(img_obj);
+ $image_wrapper.append($image_item);
+ }
+ $ezdz.find('div').html($image_wrapper.fadeIn());
+ } else {
+ $ezdz.find('div').html('<span>' + formatted + '</span>');
+ }
+
+ $ezdz.addClass(settings.classes.accept);
+
+ // Trigger the accept callback
+ if ($.isFunction(settings.accept)) {
+ settings.accept.apply($input, [ file ]);
+ }
+
+ // The file is invalidated, so rejected
+ } else {
+ $input.val('');
+
+ $ezdz.addClass(settings.classes.reject);
+
+ // Trigger the reject callback
+ if ($.isFunction(settings.reject)) {
+ settings.reject.apply($input, [ file, errors ]);
+ }
+ }
+
+ }, 1000);
+
+
+ });
+ };
+
+ init();
+ };
+
+ // Inject a file or image in the preview
+ $.ezdz.prototype.preview = function(path, callback) {
+ var settings = this.settings,
+ $input = this.$input,
+ $ezdz = $input.parent('.' + settings.classes.main),
+ basename = path.replace(/\\/g,'/').replace( /.*\//, ''),
+ formatted = settings.format(basename);
+
+ var img = new Image();
+ img.src = path;
+
+ // Is an image
+ img.onload = function() {
+ $ezdz.find('div').html($(img).fadeIn());
+
+ if ($.isFunction(callback)) {
+ callback.apply(this);
+ }
+ };
+
+ // Is not an image
+ img.onerror = function() {
+ $ezdz.find('div').html('<span>' + formatted + '</span>');
+
+ if ($.isFunction(callback)) {
+ callback.apply(this);
+ }
+ };
+
+ $ezdz.addClass(settings.classes.accept);
+ };
+
+ // Destroy ezdz
+ $.ezdz.prototype.destroy = function() {
+ var settings = this.settings,
+ $input = this.$input;
+
+ $input.parent('.' + settings.classes.main).replaceWith($input);
+ $input.off('*.ezdz');
+ $input.removeData('ezdz');
+ };
+
+ // Extend settings
+ $.ezdz.prototype.options = function(options) {
+ var settings = this.settings;
+
+ if (!options) {
+ return settings;
+ }
+
+ $.extend(true, this.settings, options);
+ };
+
+ // Get input container
+ $.ezdz.prototype.container = function() {
+ var settings = this.settings,
+ $input = this.$input;
+
+ return $input.parent('.' + settings.classes.main);
+ };
+
+ // Is browser compatible
+ $.ezdz.isBrowserCompatible = function() {
+ return !!(window.File && window.FileList && window.FileReader);
+ };
+
+ // Default options
+ $.ezdz.defaults = defaults;
+
+ // jQuery plugin
+ $.fn.ezdz = function(options) {
+ var args = arguments,
+ plugin = $(this).data('ezdz');
+
+ if (!plugin) {
+ return $(this).data('ezdz', new $.ezdz(this, options));
+ } if (plugin[options]) {
+ return plugin[options].apply(plugin, Array.prototype.slice.call(args, 1));
+ } else {
+ $.error('Ezdz error - Method ' + options + ' does not exist.');
+ }
+ };
+}));
} else {
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($newImage, 'DataBlock', "DataAbstract - imageInput() wp_get_image_editor($tmpFile) Error");
}
$this->select = '';
$sep = ''; // Used as separator for $select list
+ // Check that we have a fields list
+ if (!is_array($this->fields) || count($this->fields) == 0) {
+ echo "ALERT: Empty Fields List in data abstract buildFieldsList()! Likely programming error.";
+ return false;
+ }
+
// For each possible field
reset($this->fields);
while (list($k, $v) = each($this->fields )) {
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($this->fieldData, 'DataBlock', "buildFieldsList() data");
}
$stats = $this->wpdb->get_row($sql, ARRAY_A);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - getStats() query");
glmMembersAdmin::addNotice($stats, 'DataBlock', "Stats Data");
}
";
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - getList() query");
}
$newList[$v['id']] = $this->processOutputData($v, 'l');
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($newList, 'DataBlock', "getList() data");
}
$detail = $this->processOutputData($detail, 'g', $fieldVals);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - getEntry() query");
glmMembersAdmin::addNotice($detail, 'DataBlock', "getEntry() data");
}
// Check if there's a function to do other checks
$r = $this->checkOther($r, 'n');
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($r, 'DataBlock', "newEntry() data");
}
( $fields ) VALUES ( $vals );
";
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "insertEntry() Query");
}
// Now store the field data
$this->wpdb->query($sql);
- $queryError = $this->wpdb->last_error;
-
- // If there were no errors
- if (trim($queryError) != '') {
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ // Check for query errors
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ $queryError = $this->wpdb->last_error;
+ if (trim($queryError) != '') {
glmMembersAdmin::addNotice(
- 'insertEntry() Query Failure<br>'
+ '<b>insertEntry() Query Failure</b><br>'
.' Error Message: '.$queryError.'<br>'
.' Table: '.$this->table, 'Alert');
}
}
-
// Get the current ID value and set that in the session
$r['fieldData']['id'] = $this->wpdb->insert_id;
} else {
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice(' insertEntry() requested to NOT store new entry!', 'Process');
}
}
} else {
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice('  checkOther() returned bad status.', 'Process');
}
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($r, 'DataBlock', "DataAbstract - insertEntry() data");
}
;";
$detail = $this->wpdb->get_row($sql, ARRAY_A);
+ // Check for Errors
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ $queryError = $this->wpdb->last_error;
+ if (trim($queryError) != '') {
+ glmMembersAdmin::addNotice(
+ '<b>editEntry() Query Failure</b><br>'
+ .' Error Message: '.$queryError.'<br>'
+ .' Table: '.$this->table, 'Alert');
+ }
+ }
+
// Check for failure retrieving data
if (!$detail) {
return false;
// Process individual fields
$detail = $this->processOutputData($detail, 'e', true, $id, $idField);
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - editEntry() query");
glmMembersAdmin::addNotice($detail, 'DataBlock', "editEntry() data");
}
// Now store the field data
$this->wpdb->query($sql, ARRAY_A);
+ // Check for Errors
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ $queryError = $this->wpdb->last_error;
+ if (trim($queryError) != '') {
+ glmMembersAdmin::addNotice(
+ '<b>updateEntry() Query Failure</b><br>'
+ .' Error Message: '.$queryError.'<br>'
+ .' Table: '.$this->table, 'Alert');
+ }
+ }
+
// Get the data again for output
$r['fieldData'] = $this->getEntry($id, $idField);
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($r, 'DataBlock', "updateEntry() data");
}
WHERE $idField = $id;
";
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($sql, 'DataBlock', "DataAbstract - deleteEntry() query");
}
}
}
- if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
+ if (is_admin() && GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
glmMembersAdmin::addNotice($detail, 'DataBlock', "deleteEntry() data");
}
--- /dev/null
+/*-------------------------\r
+ Simple reset\r
+--------------------------*/\r
+\r
+\r
+/*\r
+*{\r
+ margin:0;\r
+ padding:0;\r
+}\r
+*/\r
+\r
+\r
+/*-------------------------\r
+ General Styles\r
+--------------------------*/\r
+\r
+/*\r
+\r
+html{\r
+ background:url('../img/background_tile_2.jpg');\r
+ min-height:100%;\r
+ position:relative;\r
+ \r
+}\r
+\r
+body{\r
+ color:#fff;\r
+ min-height:600px;\r
+ font:14px/1.3 'Segoe UI',Arial, sans-serif;\r
+}\r
+\r
+a, a:visited {\r
+ text-decoration:none;\r
+ outline:none;\r
+ color:#54a6de;\r
+}\r
+\r
+a:hover{\r
+ text-decoration:underline;\r
+}\r
+\r
+header, footer{\r
+ display:block;\r
+}\r
+\r
+*/\r
+\r
+/*-------------------------\r
+ Header Styles\r
+--------------------------*/\r
+\r
+/*\r
+\r
+header{\r
+ background:url('../img/background_tile_1.jpg');\r
+ padding:75px;\r
+ position: relative;\r
+}\r
+\r
+header:before,\r
+#dropbox:before{\r
+ display: block;\r
+ content:'';\r
+ height:4px;\r
+ width:100%;\r
+ background:url('../img/blue_line.jpg');\r
+ position: absolute;\r
+ top:0;\r
+ left:0;\r
+ box-shadow:0 2px 2px rgba(0,0,0,0.4);\r
+}\r
+\r
+\r
+h1{\r
+ background:url('../img/logo.jpg') no-repeat top center;\r
+ height:92px;\r
+ overflow: hidden;\r
+ text-indent: -99999px;\r
+ text-align: center;\r
+}\r
+\r
+*/\r
+\r
+/*-------------------------\r
+ Dropbox Element\r
+--------------------------*/\r
+\r
+\r
+\r
+#dropbox{\r
+/* \r
+ background:url('../img/background_tile_3.jpg');\r
+ \r
+ border-radius:3px;\r
+ position: relative;\r
+ margin:80px auto 90px;\r
+ min-height: 290px;\r
+ overflow: hidden;\r
+ padding-bottom: 40px;\r
+ width: 990px;\r
+ \r
+ box-shadow:0 0 4px rgba(0,0,0,0.3) inset,0 -3px 2px rgba(0,0,0,0.1);\r
+*/\r
+}\r
+\r
+\r
+#dropbox .message{\r
+ font-size: 11px;\r
+ text-align: center;\r
+ padding-top:160px;\r
+ display: block;\r
+}\r
+\r
+#dropbox .message i{\r
+ color:#ccc;\r
+ font-size:10px;\r
+}\r
+\r
+#dropbox:before{\r
+ border-radius:3px 3px 0 0;\r
+}\r
+\r
+\r
+\r
+/*-------------------------\r
+ Image Previews\r
+--------------------------*/\r
+\r
+\r
+\r
+#dropbox .preview{\r
+ width:245px;\r
+ height: 215px;\r
+ float:left;\r
+ margin: 55px 0 0 60px;\r
+ position: relative;\r
+ text-align: center;\r
+}\r
+\r
+#dropbox .preview img{\r
+ max-width: 240px;\r
+ max-height:180px;\r
+ border:3px solid #fff;\r
+ display: block;\r
+ \r
+ box-shadow:0 0 2px #000;\r
+}\r
+\r
+#dropbox .imageHolder{\r
+ display: inline-block;\r
+ position:relative;\r
+}\r
+\r
+#dropbox .uploaded{\r
+ position: absolute;\r
+ top:0;\r
+ left:0;\r
+ height:100%;\r
+ width:100%;\r
+ background: url('../img/done.png') no-repeat center center rgba(255,255,255,0.5);\r
+ display: none;\r
+}\r
+\r
+#dropbox .preview.done .uploaded{\r
+ display: block;\r
+}\r
+\r
+\r
+\r
+/*-------------------------\r
+ Progress Bars\r
+--------------------------*/\r
+\r
+\r
+\r
+#dropbox .progressHolder{\r
+ position: absolute;\r
+ background-color:#252f38;\r
+ height:12px;\r
+ width:100%;\r
+ left:0;\r
+ bottom: 0;\r
+ \r
+ box-shadow:0 0 2px #000;\r
+}\r
+\r
+#dropbox .progress{\r
+ background-color:#2586d0;\r
+ position: absolute;\r
+ height:100%;\r
+ left:0;\r
+ width:0;\r
+ \r
+ box-shadow: 0 0 1px rgba(255, 255, 255, 0.4) inset;\r
+ \r
+ -moz-transition:0.25s;\r
+ -webkit-transition:0.25s;\r
+ -o-transition:0.25s;\r
+ transition:0.25s;\r
+}\r
+\r
+#dropbox .preview.done .progress{\r
+ width:100% !important;\r
+}\r
+\r
+\r
+\r
+/*----------------------------\r
+ The Footer\r
+-----------------------------*/\r
+\r
+/*\r
+\r
+footer{\r
+ display:block;\r
+ background-color: #151517;\r
+ \r
+ position:fixed;\r
+ width:100%;\r
+ height:70px;\r
+ bottom:0;\r
+ left:0;\r
+ z-index: 100000;\r
+ \r
+ box-shadow: 0 -1px 2px #171717;\r
+ -webkit-box-shadow: 0 -1px 2px #171717;\r
+ -moz-box-shadow: 0 -1px 2px #171717;\r
+}\r
+\r
+footer h2{\r
+ font-size:20px;\r
+ font-weight:normal;\r
+ left:50%;\r
+ margin-left:-400px;\r
+ padding:22px 0;\r
+ position:absolute;\r
+ width: 540px;\r
+ color:#eee;\r
+}\r
+\r
+footer a.tzine,a.tzine:visited{\r
+ background:url("../img/tzine.png") no-repeat right top;\r
+ border:none;\r
+ text-decoration:none;\r
+ color:#FCFCFC;\r
+ font-size:12px;\r
+ height:70px;\r
+ left:50%;\r
+ line-height:31px;\r
+ margin:23px 0 0 110px;\r
+ position:absolute;\r
+ top:0;\r
+ width:290px;\r
+}\r
+*/
\ No newline at end of file
--- /dev/null
+/*\r
+ * Default text - jQuery plugin for html5 dragging files from desktop to browser\r
+ *\r
+ * Author: Weixi Yen\r
+ *\r
+ * Email: [Firstname][Lastname]@gmail.com\r
+ * \r
+ * Copyright (c) 2010 Resopollution\r
+ * \r
+ * Licensed under the MIT license:\r
+ * http://www.opensource.org/licenses/mit-license.php\r
+ *\r
+ * Project home:\r
+ * http://www.github.com/weixiyen/jquery-filedrop\r
+ *\r
+ * Version: 0.1.0\r
+ *\r
+ * Features:\r
+ * Allows sending of extra parameters with file.\r
+ * Works with Firefox 3.6+\r
+ * Future-compliant with HTML5 spec (will work with Webkit browsers and IE9)\r
+ * Usage:\r
+ * See README at project homepage\r
+ *\r
+ */\r
+(function($){\r
+\r
+ jQuery.event.props.push("dataTransfer");\r
+ var opts = {},\r
+ default_opts = {\r
+ url: '',\r
+ refresh: 1000,\r
+ paramname: 'userfile',\r
+ maxfiles: 25,\r
+ maxfilesize: 1, // MBs\r
+ data: {},\r
+ drop: empty,\r
+ dragEnter: empty,\r
+ dragOver: empty,\r
+ dragLeave: empty,\r
+ docEnter: empty,\r
+ docOver: empty,\r
+ docLeave: empty,\r
+ beforeEach: empty,\r
+ afterAll: empty,\r
+ rename: empty,\r
+ error: function(err, file, i){alert(err);},\r
+ uploadStarted: empty,\r
+ uploadFinished: empty,\r
+ progressUpdated: empty,\r
+ speedUpdated: empty\r
+ },\r
+ errors = ["BrowserNotSupported", "TooManyFiles", "FileTooLarge"],\r
+ doc_leave_timer,\r
+ stop_loop = false,\r
+ files_count = 0,\r
+ files;\r
+\r
+ $.fn.filedrop = function(options) {\r
+ opts = $.extend( {}, default_opts, options );\r
+ \r
+ this.bind('drop', drop).bind('dragenter', dragEnter).bind('dragover', dragOver).bind('dragleave', dragLeave);\r
+ $(document).bind('drop', docDrop).bind('dragenter', docEnter).bind('dragover', docOver).bind('dragleave', docLeave);\r
+ };\r
+ \r
+ function drop(e) {\r
+ opts.drop(e);\r
+ files = e.dataTransfer.files;\r
+ if (files === null || files === undefined) {\r
+ opts.error(errors[0]);\r
+ return false;\r
+ }\r
+ \r
+ files_count = files.length;\r
+ upload();\r
+ e.preventDefault();\r
+ return false;\r
+ }\r
+ \r
+ function getBuilder(filename, filedata, boundary) {\r
+ var dashdash = '--',\r
+ crlf = '\r\n',\r
+ builder = '';\r
+\r
+ $.each(opts.data, function(i, val) {\r
+ if (typeof val === 'function') val = val();\r
+ builder += dashdash;\r
+ builder += boundary;\r
+ builder += crlf;\r
+ builder += 'Content-Disposition: form-data; name="'+i+'"';\r
+ builder += crlf;\r
+ builder += crlf;\r
+ builder += val;\r
+ builder += crlf;\r
+ });\r
+ \r
+ builder += dashdash;\r
+ builder += boundary;\r
+ builder += crlf;\r
+ builder += 'Content-Disposition: form-data; name="'+opts.paramname+'"';\r
+ builder += '; filename="' + filename + '"';\r
+ builder += crlf;\r
+ \r
+ builder += 'Content-Type: application/octet-stream';\r
+ builder += crlf;\r
+ builder += crlf; \r
+ \r
+ builder += filedata;\r
+ builder += crlf;\r
+ \r
+ builder += dashdash;\r
+ builder += boundary;\r
+ builder += dashdash;\r
+ builder += crlf;\r
+ return builder;\r
+ }\r
+\r
+ function progress(e) {\r
+ if (e.lengthComputable) {\r
+ var percentage = Math.round((e.loaded * 100) / e.total);\r
+ if (this.currentProgress != percentage) {\r
+ \r
+ this.currentProgress = percentage;\r
+ opts.progressUpdated(this.index, this.file, this.currentProgress);\r
+ \r
+ var elapsed = new Date().getTime();\r
+ var diffTime = elapsed - this.currentStart;\r
+ if (diffTime >= opts.refresh) {\r
+ var diffData = e.loaded - this.startData;\r
+ var speed = diffData / diffTime; // KB per second\r
+ opts.speedUpdated(this.index, this.file, speed);\r
+ this.startData = e.loaded;\r
+ this.currentStart = elapsed;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ function upload() {\r
+ stop_loop = false;\r
+ if (!files) {\r
+ opts.error(errors[0]);\r
+ return false;\r
+ }\r
+ var filesDone = 0,\r
+ filesRejected = 0;\r
+ \r
+ if (files_count > opts.maxfiles) {\r
+ opts.error(errors[1]);\r
+ return false;\r
+ }\r
+\r
+ for (var i=0; i<files_count; i++) {\r
+ if (stop_loop) return false;\r
+ try {\r
+ if (beforeEach(files[i]) != false) {\r
+ if (i === files_count) return;\r
+ var reader = new FileReader(),\r
+ max_file_size = 1048576 * opts.maxfilesize;\r
+ \r
+ reader.index = i;\r
+ if (files[i].size > max_file_size) {\r
+ opts.error(errors[2], files[i], i);\r
+ filesRejected++;\r
+ continue;\r
+ }\r
+ \r
+ reader.onloadend = send;\r
+ reader.readAsBinaryString(files[i]);\r
+ } else {\r
+ filesRejected++;\r
+ }\r
+ } catch(err) {\r
+ opts.error(errors[0]);\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ function send(e) {\r
+ // Sometimes the index is not attached to the\r
+ // event object. Find it by size. Hack for sure.\r
+ if (e.target.index == undefined) {\r
+ e.target.index = getIndexBySize(e.total);\r
+ }\r
+ \r
+ var xhr = new XMLHttpRequest(),\r
+ upload = xhr.upload,\r
+ file = files[e.target.index],\r
+ index = e.target.index,\r
+ start_time = new Date().getTime(),\r
+ boundary = '------multipartformboundary' + (new Date).getTime(),\r
+ builder;\r
+ \r
+ newName = rename(file.name);\r
+ if (typeof newName === "string") {\r
+ builder = getBuilder(newName, e.target.result, boundary);\r
+ } else {\r
+ builder = getBuilder(file.name, e.target.result, boundary);\r
+ }\r
+ \r
+ upload.index = index;\r
+ upload.file = file;\r
+ upload.downloadStartTime = start_time;\r
+ upload.currentStart = start_time;\r
+ upload.currentProgress = 0;\r
+ upload.startData = 0;\r
+ upload.addEventListener("progress", progress, false);\r
+ \r
+ xhr.open("POST", opts.url, true);\r
+ xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' \r
+ + boundary);\r
+ \r
+ xhr.sendAsBinary(builder); \r
+ \r
+ opts.uploadStarted(index, file, files_count); \r
+ \r
+ xhr.onload = function() { \r
+ if (xhr.responseText) {\r
+ var now = new Date().getTime(),\r
+ timeDiff = now - start_time,\r
+ result = opts.uploadFinished(index, file, jQuery.parseJSON(xhr.responseText), timeDiff);\r
+ filesDone++;\r
+ if (filesDone == files_count - filesRejected) {\r
+ afterAll();\r
+ }\r
+ if (result === false) stop_loop = true;\r
+ }\r
+ };\r
+ }\r
+ }\r
+ \r
+ function getIndexBySize(size) {\r
+ for (var i=0; i < files_count; i++) {\r
+ if (files[i].size == size) {\r
+ return i;\r
+ }\r
+ }\r
+ \r
+ return undefined;\r
+ }\r
+ \r
+ function rename(name) {\r
+ return opts.rename(name);\r
+ }\r
+ \r
+ function beforeEach(file) {\r
+ return opts.beforeEach(file);\r
+ }\r
+ \r
+ function afterAll() {\r
+ return opts.afterAll();\r
+ }\r
+ \r
+ function dragEnter(e) {\r
+ clearTimeout(doc_leave_timer);\r
+ e.preventDefault();\r
+ opts.dragEnter(e);\r
+ }\r
+ \r
+ function dragOver(e) {\r
+ clearTimeout(doc_leave_timer);\r
+ e.preventDefault();\r
+ opts.docOver(e);\r
+ opts.dragOver(e);\r
+ }\r
+ \r
+ function dragLeave(e) {\r
+ clearTimeout(doc_leave_timer);\r
+ opts.dragLeave(e);\r
+ e.stopPropagation();\r
+ }\r
+ \r
+ function docDrop(e) {\r
+ e.preventDefault();\r
+ opts.docLeave(e);\r
+ return false;\r
+ }\r
+ \r
+ function docEnter(e) {\r
+ clearTimeout(doc_leave_timer);\r
+ e.preventDefault();\r
+ opts.docEnter(e);\r
+ return false;\r
+ }\r
+ \r
+ function docOver(e) {\r
+ clearTimeout(doc_leave_timer);\r
+ e.preventDefault();\r
+ opts.docOver(e);\r
+ return false;\r
+ }\r
+ \r
+ function docLeave(e) {\r
+ doc_leave_timer = setTimeout(function(){\r
+ opts.docLeave(e);\r
+ }, 200);\r
+ }\r
+ \r
+ function empty(){}\r
+ \r
+ try {\r
+ if (XMLHttpRequest.prototype.sendAsBinary) return;\r
+ XMLHttpRequest.prototype.sendAsBinary = function(datastr) {\r
+ function byteValue(x) {\r
+ return x.charCodeAt(0) & 0xff;\r
+ }\r
+ var ords = Array.prototype.map.call(datastr, byteValue);\r
+ var ui8a = new Uint8Array(ords);\r
+ this.send(ui8a.buffer);\r
+ }\r
+ } catch(e) {}\r
+ \r
+})(jQuery);
\ No newline at end of file
--- /dev/null
+$(function(){\r
+ \r
+ var dropbox = $('#dropbox'),\r
+ message = $('.message', dropbox);\r
+ \r
+ dropbox.filedrop({\r
+ // The name of the $_FILES entry:\r
+ paramname:'pic',\r
+ \r
+ maxfiles: 5,\r
+ maxfilesize: 2,\r
+ url: 'post_file.php',\r
+ \r
+ uploadFinished:function(i,file,response){\r
+ $.data(file).addClass('done');\r
+ // response is the JSON object that post_file.php returns\r
+ },\r
+ \r
+ error: function(err, file) {\r
+ switch(err) {\r
+ case 'BrowserNotSupported':\r
+ showMessage('Your browser does not support HTML5 file uploads!');\r
+ break;\r
+ case 'TooManyFiles':\r
+ alert('Too many files! Please select 5 at most! (configurable)');\r
+ break;\r
+ case 'FileTooLarge':\r
+ alert(file.name+' is too large! Please upload files up to 2mb (configurable).');\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ },\r
+ \r
+ // Called before each upload is started\r
+ beforeEach: function(file){\r
+ if(!file.type.match(/^image\//)){\r
+ alert('Only images are allowed!');\r
+ \r
+ // Returning false will cause the\r
+ // file to be rejected\r
+ return false;\r
+ }\r
+ },\r
+ \r
+ uploadStarted:function(i, file, len){\r
+ createImage(file);\r
+ },\r
+ \r
+ progressUpdated: function(i, file, progress) {\r
+ $.data(file).find('.progress').width(progress);\r
+ }\r
+ \r
+ });\r
+ \r
+ var template = '<div class="preview">'+\r
+ '<span class="imageHolder">'+\r
+ '<img />'+\r
+ '<span class="uploaded"></span>'+\r
+ '</span>'+\r
+ '<div class="progressHolder">'+\r
+ '<div class="progress"></div>'+\r
+ '</div>'+\r
+ '</div>'; \r
+ \r
+ \r
+ function createImage(file){\r
+\r
+ var preview = $(template), \r
+ image = $('img', preview);\r
+ \r
+ var reader = new FileReader();\r
+ \r
+ image.width = 100;\r
+ image.height = 100;\r
+ \r
+ reader.onload = function(e){\r
+ \r
+ // e.target.result holds the DataURL which\r
+ // can be used as a source of the image:\r
+ \r
+ image.attr('src',e.target.result);\r
+ };\r
+ \r
+ // Reading the file as a DataURL. When finished,\r
+ // this will trigger the onload function above:\r
+ reader.readAsDataURL(file);\r
+ \r
+ message.hide();\r
+ preview.appendTo(dropbox);\r
+ \r
+ // Associating a preview container\r
+ // with the file, using jQuery's $.data():\r
+ \r
+ $.data(file,preview);\r
+ }\r
+\r
+ function showMessage(msg){\r
+ message.html(msg);\r
+ }\r
+\r
+});
\ No newline at end of file
--- /dev/null
+<?php\r
+\r
+// If you want to ignore the uploaded files, \r
+// set $demo_mode to true;\r
+\r
+$demo_mode = false;\r
+$upload_dir = 'uploads/';\r
+$allowed_ext = array('jpg','jpeg','png','gif');\r
+\r
+\r
+if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){\r
+ exit_status('Error! Wrong HTTP method!');\r
+}\r
+\r
+\r
+if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){\r
+ \r
+ $pic = $_FILES['pic'];\r
+\r
+ if(!in_array(get_extension($pic['name']),$allowed_ext)){\r
+ exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');\r
+ } \r
+\r
+ if($demo_mode){\r
+ \r
+ // File uploads are ignored. We only log them.\r
+ \r
+ $line = implode(' ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));\r
+ file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);\r
+ \r
+ exit_status('Uploads are ignored in demo mode.');\r
+ }\r
+ \r
+ \r
+ // Move the uploaded file from the temporary \r
+ // directory to the uploads folder:\r
+ \r
+ if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){\r
+ exit_status('File was uploaded successfuly!');\r
+ }\r
+ \r
+}\r
+\r
+exit_status('Something went wrong with your upload!');\r
+\r
+\r
+// Helper functions\r
+\r
+function exit_status($str){\r
+ echo json_encode(array('status'=>$str));\r
+ exit;\r
+}\r
+\r
+function get_extension($file_name){\r
+ $ext = explode('.', $file_name);\r
+ $ext = array_pop($ext);\r
+ return strtolower($ext);\r
+}\r
+?>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html>\r
+<html>\r
+ <head>\r
+ <meta charset="utf-8" />\r
+ <title>HTML5 File Drag and Drop Upload with jQuery and PHP | Tutorialzine Demo</title>\r
+ \r
+ <!-- Our CSS stylesheet file -->\r
+ <link rel="stylesheet" href="assets/css/styles.css" />\r
+ \r
+ <!--[if lt IE 9]>\r
+ <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>\r
+ <![endif]-->\r
+ </head>\r
+ \r
+ <body>\r
+ \r
+ <header>\r
+ <h1>HTML5 File Upload with jQuery and PHP</h1>\r
+ </header>\r
+ \r
+ <div id="dropbox">\r
+ <span class="message">Drop images here to upload. <br /><i>(they will only be visible to you)</i></span>\r
+ </div>\r
+ \r
+ <footer>\r
+ <h2>HTML5 File Upload with jQuery and PHP</h2>\r
+ <a class="tzine" href="http://tutorialzine.com/2011/09/html5-file-upload-jquery-php/">Read & Download on</a>\r
+ </footer>\r
+ \r
+ <!-- Including The jQuery Library -->\r
+ <script src="http://code.jquery.com/jquery-1.6.3.min.js"></script>\r
+ \r
+ <!-- Including the HTML5 Uploader plugin -->\r
+ <script src="assets/js/jquery.filedrop.js"></script>\r
+ \r
+ <!-- The main script file -->\r
+ <script src="assets/js/script.js"></script>\r
+ \r
+ </body>\r
+</html>\r
+\r
CREATE TABLE {prefix}images (
id INT NOT NULL AUTO_INCREMENT,
name TINYTEXT NULL,
+ status TINYINT(1) NULL,
file_name TINYTEXT NULL,
descr TEXT NULL,
caption TINYTEXT NULL,
- pending TINYINT(1) NULL,
position INT NULL,
ref_type INT NULL,
ref_dest INT NULL,
CREATE TABLE {prefix}settings_general (
id INT NOT NULL AUTO_INCREMENT,
- admin_debug BOOLEAN NULL,
- admin_debug_verbose BOOLEAN NULL,
- front_debug BOOLEAN NULL,
- front_debug_verbose BOOLEAN NULL,
- google_maps_api_key TINYTEXT NULL,
- maps_default_lat FLOAT NULL,
- maps_default_lon FLOAT NULL,
+ admin_debug BOOLEAN DEFAULT true,
+ admin_debug_verbose BOOLEAN DEFAULT false,
+ front_debug BOOLEAN DEFAULT false,
+ front_debug_verbose BOOLEAN DEFAULT false,
+ google_maps_api_key TINYTEXT DEFAULT '',
+ maps_default_lat FLOAT DEFAULT 45.3749,
+ maps_default_lon FLOAT DEFAULT -84.9592,
time_zone TINYTEXT NULL,
- list_show_map BOOLEAN NULL,
- list_show_list BOOLEAN NULL,
- list_show_search BOOLEAN NULL,
- list_show_search_text BOOLEAN NULL,
- list_show_search_category BOOLEAN NULL,
- list_show_search_amenities BOOLEAN NULL,
- list_show_search_alphja BOOLEAN NULL,
- list_show_detail_link BOOLEAN NULL,
- list_show_logo BOOLEAN NULL,
+ list_show_map BOOLEAN DEFAULT true,
+ list_show_list BOOLEAN DEFAULT true,
+ list_show_search BOOLEAN DEFAULT true,
+ list_show_search_text BOOLEAN DEFAULT true,
+ list_show_search_category BOOLEAN DEFAULT true,
+ list_show_search_amenities BOOLEAN DEFAULT true,
+ list_show_search_alpha BOOLEAN DEFAULT true,
+ list_show_detail_link BOOLEAN DEFAULT true,
+ list_show_logo BOOLEAN DEFAULT true,
list_logo_size TINYTEXT NULL,
- list_show_address BOOLEAN NULL,
- list_show_street BOOLEAN NULL,
- list_show_citystatezip BOOLEAN NULL,
- list_show_country BOOLEAN NULL,
- list_show_region BOOLEAN NULL,
- list_show_descr BOOLEAN NULL,
- list_show_short_descr BOOLEAN NULL,
- list_show_phone BOOLEAN NULL,
- list_show_tollfree BOOLEAN NULL,
- list_show_url BOOLEAN NULL,
- list_show_url_newtarget BOOLEAN NULL,
- list_show_categories BOOLEAN NULL,
- list_show_creditcards BOOLEAN NULL,
- list_show_amenities BOOLEAN NULL,
- list_map_show_detaillink BOOLEAN NULL,
- list_map_show_logo BOOLEAN NULL,
+ list_show_address BOOLEAN DEFAULT true,
+ list_show_street BOOLEAN DEFAULT true,
+ list_show_citystatezip BOOLEAN DEFAULT true,
+ list_show_country BOOLEAN DEFAULT true,
+ list_show_region BOOLEAN DEFAULT true,
+ list_show_descr BOOLEAN DEFAULT false,
+ list_show_short_descr BOOLEAN DEFAULT true,
+ list_show_phone BOOLEAN DEFAULT true,
+ list_show_tollfree BOOLEAN DEFAULT true,
+ list_show_url BOOLEAN DEFAULT true,
+ list_show_url_newtarget BOOLEAN DEFAULT true,
+ list_show_categories BOOLEAN DEFAULT true,
+ list_show_creditcards BOOLEAN DEFAULT true,
+ list_show_amenities BOOLEAN DEFAULT false,
+ list_map_show_detaillink BOOLEAN DEFAULT true,
+ list_map_show_logo BOOLEAN DEFAULT false,
list_map_logo_size TINYTEXT NULL,
- list_map_show_description BOOLEAN NULL,
- list_map_show_short_description BOOLEAN NULL,
- list_map_show_address BOOLEAN NULL,
- list_map_show_street BOOLEAN NULL,
- list_map_show_citystatezip BOOLEAN NULL,
- list_map_show_country BOOLEAN NULL,
- list_map_show_region BOOLEAN NULL,
- list_map_show_phone BOOLEAN NULL,
- list_map_show_tollfree BOOLEAN NULL,
- list_map_show_url BOOLEAN NULL,
- list_map_show_url_newtarget BOOLEAN NULL,
- list_map_show_categories BOOLEAN NULL,
- list_map_show_creditcards BOOLEAN NULL,
- list_map_show_amenities BOOLEAN NULL,
- detail_show_map BOOLEAN NULL,
- detail_show_directions BOOLEAN NULL,
- detail_show_logo BOOLEAN NULL,
- detail_show_logo_size TINYTEXT NULL,
- detail_show_description BOOLEAN NULL,
- detail_show_short_description BOOLEAN NULL,
- detail_show_address BOOLEAN NULL,
- detail_show_street BOOLEAN NULL,
- detail_show_citystatezip BOOLEAN NULL,
- detail_show_country BOOLEAN NULL,
- detail_show_region BOOLEAN NULL,
- detail_show_phone BOOLEAN NULL,
- detail_show_tollfree BOOLEAN NULL,
- detail_show_url BOOLEAN NULL,
- detail_show_url_newtarget BOOLEAN NULL,
- detail_show_categories BOOLEAN NULL,
- detail_show_creditcards BOOLEAN NULL,
- detail_show_amenities BOOLEAN NULL,
+ list_map_show_descr BOOLEAN DEFAULT false,
+ list_map_show_short_descr BOOLEAN DEFAULT true,
+ list_map_show_address BOOLEAN DEFAULT true,
+ list_map_show_street BOOLEAN DEFAULT true,
+ list_map_show_citystatezip BOOLEAN DEFAULT true,
+ list_map_show_country BOOLEAN DEFAULT true,
+ list_map_show_region BOOLEAN DEFAULT true,
+ list_map_show_phone BOOLEAN DEFAULT true,
+ list_map_show_tollfree BOOLEAN DEFAULT true,
+ list_map_show_url BOOLEAN DEFAULT true,
+ list_map_show_url_newtarget BOOLEAN DEFAULT true,
+ list_map_show_categories BOOLEAN DEFAULT false,
+ list_map_show_creditcards BOOLEAN DEFAULT false,
+ list_map_show_amenities BOOLEAN DEFAULT false,
+ detail_show_map BOOLEAN DEFAULT true,
+ detail_show_directions BOOLEAN DEFAULT true,
+ detail_show_logo BOOLEAN DEFAULT true,
+ detail_logo_size TINYTEXT NULL,
+ detail_show_descr BOOLEAN DEFAULT true,
+ detail_show_short_descr BOOLEAN DEFAULT false,
+ detail_show_address BOOLEAN DEFAULT true,
+ detail_show_street BOOLEAN DEFAULT true,
+ detail_show_citystatezip BOOLEAN DEFAULT true,
+ detail_show_country BOOLEAN DEFAULT true,
+ detail_show_region BOOLEAN DEFAULT true,
+ detail_show_phone BOOLEAN DEFAULT true,
+ detail_show_tollfree BOOLEAN DEFAULT true,
+ detail_show_url BOOLEAN DEFAULT true,
+ detail_show_url_newtarget BOOLEAN DEFAULT true,
+ detail_show_categories BOOLEAN DEFAULT true,
+ detail_show_creditcards BOOLEAN DEFAULT true,
+ detail_show_amenities BOOLEAN DEFAULT true,
+ detail_map_show_logo BOOLEAN DEFAULT false,
+ detail_map_logo_size TINYTEXT NULL,
+ detail_map_show_descr BOOLEAN DEFAULT false,
+ detail_map_show_short_descr BOOLEAN DEFAULT true,
+ detail_map_show_address BOOLEAN DEFAULT true,
+ detail_map_show_street BOOLEAN DEFAULT true,
+ detail_map_show_citystatezip BOOLEAN DEFAULT true,
+ detail_map_show_country BOOLEAN DEFAULT true,
+ detail_map_show_region BOOLEAN DEFAULT true,
+ detail_map_show_phone BOOLEAN DEFAULT true,
+ detail_map_show_tollfree BOOLEAN DEFAULT true,
+ detail_map_show_url BOOLEAN DEFAULT true,
+ detail_map_show_url_newtarget BOOLEAN DEFAULT true,
+ detail_map_show_categories BOOLEAN DEFAULT false,
+ detail_map_show_creditcards BOOLEAN DEFAULT false,
+ detail_map_show_amenities BOOLEAN DEFAULT false,
PRIMARY KEY (id)
);
----
+INSERT INTO {prefix}settings_general
+ ( id, time_zone )
+ VALUES
+ ( 1, 'America/Detroit' )
+;
+
+----
+
CREATE TABLE {prefix}settings_terms (
id INT NOT NULL AUTO_INCREMENT,
+ term_admin_menu_members TINYTEXT NULL,
+ term_admin_menu_member_list TINYTEXT NULL,
+ term_admin_menu_member TINYTEXT NULL,
+ term_admin_menu_configure TINYTEXT NULL,
+ term_admin_menu_settings TINYTEXT NULL,
+ term_admin_menu_shortcodes TINYTEXT NULL,
+ term_admin_menu_members_dashboard TINYTEXT NULL,
+ term_admin_menu_members_list TINYTEXT NULL,
+ term_admin_menu_members_reports TINYTEXT NULL,
+ term_admin_menu_member_dashboard TINYTEXT NULL,
+ term_admin_menu_member_info TINYTEXT NULL,
+ term_admin_menu_member_locations TINYTEXT NULL,
+ term_admin_menu_member_facilities TINYTEXT NULL,
+ term_admin_menu_member_attractions TINYTEXT NULL,
+ term_admin_menu_member_contacts TINYTEXT NULL,
+ term_admin_menu_configure_member_types TINYTEXT NULL,
+ term_admin_menu_configure_member_cats TINYTEXT NULL,
+ term_admin_menu_configure_accom_types TINYTEXT NULL,
+ term_admin_menu_configure_amenities TINYTEXT NULL,
+ term_admin_menu_configure_cities TINYTEXT NULL,
+ term_admin_menu_configure_regions TINYTEXT NULL,
+ term_admin_menu_settings_general TINYTEXT NULL,
+ term_admin_menu_settings_terms TINYTEXT NULL,
+ term_admin_menu_settings_development TINYTEXT NULL,
+ term_member TINYTEXT NULL,
+ term_member_cap TINYTEXT NULL,
+ term_member_plur TINYTEXT NULL,
+ term_member_plur_cap TINYTEXT NULL,
+ term_location TINYTEXT NULL,
+ term_location_cap TINYTEXT NULL,
+ term_location_plur TINYTEXT NULL,
+ term_location_plur_cap TINYTEXT NULL,
+ term_facility TINYTEXT NULL,
+ term_facility_cap TINYTEXT NULL,
+ term_facility_plur TINYTEXT NULL,
+ term_facility_plur_cap TINYTEXT NULL,
+ term_attraction TINYTEXT NULL,
+ term_attraction_cap TINYTEXT NULL,
+ term_attraction_plur TINYTEXT NULL,
+ term_attraction_plur_cap TINYTEXT NULL,
+ term_contact TINYTEXT NULL,
+ term_contact_cap TINYTEXT NULL,
+ term_contact_plur TINYTEXT NULL,
+ term_contact_plur_cap TINYTEXT NULL,
PRIMARY KEY (id)
);
----
+INSERT INTO {prefix}settings_terms
+ (
+ id,
+ term_admin_menu_members,
+ term_admin_menu_member_list,
+ term_admin_menu_member,
+ term_admin_menu_configure,
+ term_admin_menu_settings,
+ term_admin_menu_shortcodes,
+ term_admin_menu_members_dashboard,
+ term_admin_menu_members_list,
+ term_admin_menu_members_reports,
+ term_admin_menu_member_dashboard,
+ term_admin_menu_member_info,
+ term_admin_menu_member_locations,
+ term_admin_menu_member_facilities,
+ term_admin_menu_member_attractions,
+ term_admin_menu_member_contacts,
+ term_admin_menu_configure_member_types,
+ term_admin_menu_configure_member_cats,
+ term_admin_menu_configure_accom_types,
+ term_admin_menu_configure_amenities,
+ term_admin_menu_configure_cities,
+ term_admin_menu_configure_regions,
+ term_admin_menu_settings_general,
+ term_admin_menu_settings_terms,
+ term_admin_menu_settings_development,
+ term_member,
+ term_member_cap,
+ term_member_plur,
+ term_member_plur_cap,
+ term_location,
+ term_location_cap,
+ term_location_plur,
+ term_location_plur_cap,
+ term_facility,
+ term_facility_cap,
+ term_facility_plur,
+ term_facility_plur_cap,
+ term_attraction,
+ term_attraction_cap,
+ term_attraction_plur,
+ term_attraction_plur_cap,
+ term_contact,
+ term_contact_cap,
+ term_contact_plur,
+ term_contact_plur_cap
+ )
+ VALUES
+ (
+ 1,
+ 'Members',
+ 'Member',
+ 'Add Member',
+ 'Configure',
+ 'Settings',
+ 'Shortcodes',
+ 'Dashboard',
+ 'Member List',
+ 'Reports',
+ 'Member Dashboard',
+ 'Member Info',
+ 'Locations',
+ 'Facilities',
+ 'Attractions',
+ 'Contacts',
+ 'Member Types',
+ 'Member Categories',
+ 'Accommodation Types',
+ 'Amenities',
+ 'Cities',
+ 'Regions',
+ 'General Settings',
+ 'Terms & Phrases',
+ 'Development',
+ 'member',
+ 'Member',
+ 'members',
+ 'Members',
+ 'location',
+ 'Location',
+ 'locations',
+ 'Locations',
+ 'facility',
+ 'Facility',
+ 'facilities',
+ 'Facilities',
+ 'attraction',
+ 'Attraction',
+ 'attractions',
+ 'Attractions',
+ 'contact',
+ 'Contact',
+ 'contacts',
+ 'Contacts'
+ )
+;
+
+----
+
CREATE TABLE {prefix}social_media (
id INT NOT NULL AUTO_INCREMENT,
name TINYTEXT NULL,
Development Notes
-----------------
+Database Updates
+
+* Added table settings_general
+* Added table settings_terms
+* ALTER TABLE wp_glm_members_images CHANGE pending status tinyint;
+
+
+TO-DO
+
+* Check all current_user_can() calls to make sure they're for the right capability.
+
ADMIN AREA
* Consider paginating certain lists
-<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-03-10 12:28:06
+<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-06-19 11:18:56
compiled from "/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/members/index.html" */ ?>
<?php /*%%SmartyHeaderCode:43313958054c05ab60b0587-71987387%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_valid = $_smarty_tpl->decodeProperties(array (
'081a36d97cdf30d438a1e104c26a275acc180da0' =>
array (
0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/members/index.html',
- 1 => 1426001139,
+ 1 => 1434727132,
2 => 'file',
),
),
'haveMemberTypes' => 0,
'thisURL' => 0,
'haveCategories' => 0,
- 'haveRegions' => 0,
'haveAccommodationTypes' => 0,
+ 'haveAmenities' => 0,
+ 'haveCities' => 0,
+ 'haveRegions' => 0,
'numbMembers' => 0,
'membersPending' => 0,
'pendingList' => 0,
<tr>
<th class="glm-error">You do not have any Member Types setup.</th>
<td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
-?page=glm-members-admin-menu-configure&glm_action=memberTypes">Click here to add Member Types.</a></td>
+?page=glm-members-admin-menu-configure&glm_action=index">Click here to add Member Types.</a></td>
</tr>
<?php }?>
<?php if (!$_smarty_tpl->tpl_vars['haveCategories']->value) {?>
?page=glm-members-admin-menu-configure&glm_action=categories">Click here to add Member Categories.</a></td>
</tr>
<?php }?>
-<?php if (!$_smarty_tpl->tpl_vars['haveRegions']->value) {?>
+<?php if (!$_smarty_tpl->tpl_vars['haveAccommodationTypes']->value) {?>
<tr>
- <th><span class="glm-error">You do not have any Regions setup.</span></th>
+ <th><span class="glm-error">You do not have any Accommodation Types setup.</span></th>
<td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
-?page=glm-members-admin-menu-configure&glm_action=regions">Click here to add Regions.</a></td>
+?page=glm-members-admin-menu-configure&glm_action=accommodationTypes">Click here to add Accommodation Types.</a></td>
</tr>
<?php }?>
-<?php if (!$_smarty_tpl->tpl_vars['haveAccommodationTypes']->value) {?>
+<?php if (!$_smarty_tpl->tpl_vars['haveAmenities']->value) {?>
+ <tr>
+ <th><span class="glm-error">You do not have any Amenities setup.</span></th>
+ <td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
+?page=glm-members-admin-menu-configure&glm_action=amenities">Click here to add Amenities.</a></td>
+ </tr>
+<?php }?>
+<?php if (!$_smarty_tpl->tpl_vars['haveCities']->value) {?>
<tr>
- <th><span class="glm-error">You do not have any AccommodationTypes setup.</span></th>
+ <th><span class="glm-error">You do not have any Cities setup.</span></th>
<td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
-?page=glm-members-admin-menu-configure&glm_action=accommodationTypes">Click here to add AccommodationTypes.</a></td>
+?page=glm-members-admin-menu-configure&glm_action=cities">Click here to add Cities.</a></td>
+ </tr>
+<?php }?>
+<?php if (!$_smarty_tpl->tpl_vars['haveRegions']->value) {?>
+ <tr>
+ <th><span class="glm-error">You do not have any Regions setup.</span></th>
+ <td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
+?page=glm-members-admin-menu-configure&glm_action=regions">Click here to add Regions.</a></td>
</tr>
<?php }?>
<?php if ($_smarty_tpl->tpl_vars['numbMembers']->value==0) {?>
+ <tr><td colspan="2"> </td></tr>
<tr>
<th> <span class="glm-error">You do not have any members listed.</span></th>
<td><a href="<?php echo $_smarty_tpl->tpl_vars['thisURL']->value;?>
</tr>
</thead>
<tbody>
- <?php $_smarty_tpl->tpl_vars["i"] = new Smarty_variable("0", null, 0);?>
+ <?php if (isset($_smarty_tpl->tpl_vars["i"])) {$_smarty_tpl->tpl_vars["i"] = clone $_smarty_tpl->tpl_vars["i"];
+$_smarty_tpl->tpl_vars["i"]->value = "0"; $_smarty_tpl->tpl_vars["i"]->nocache = null; $_smarty_tpl->tpl_vars["i"]->scope = 0;
+} else $_smarty_tpl->tpl_vars["i"] = new Smarty_variable("0", null, 0);?>
<?php $_smarty_tpl->tpl_vars['p'] = new Smarty_Variable; $_smarty_tpl->tpl_vars['p']->_loop = false;
$_from = $_smarty_tpl->tpl_vars['pendingList']->value; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');}
foreach ($_from as $_smarty_tpl->tpl_vars['p']->key => $_smarty_tpl->tpl_vars['p']->value) {
-<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-06-03 14:05:40
+<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-06-17 16:40:00
compiled from "/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/configure/index.html" */ ?>
<?php /*%%SmartyHeaderCode:135960089454c0496da6c5c6-30692976%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_valid = $_smarty_tpl->decodeProperties(array (
'47fb9b803e7138d215645f3c977b0b1dc2a9e718' =>
array (
0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/configure/index.html',
- 1 => 1433354735,
+ 1 => 1434554103,
2 => 'file',
),
),
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newMemberTypeCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new member type">
+ <input type="submit" value="Add new member type" class="button-primary">
</form>
</div>
-<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-01-22 05:12:19
+<?php /* Smarty version Smarty-3.1.21-dev, created on 2015-06-13 11:33:11
compiled from "/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/error/index.html" */ ?>
<?php /*%%SmartyHeaderCode:74342921254c086b3b0af86-22635380%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_valid = $_smarty_tpl->decodeProperties(array (
'60cbe99d19bbec013cbca4d9344f2fd4a4152f52' =>
array (
0 => '/var/www/server/wordpress/wp-content/plugins/glm-member-db/views/admin/error/index.html',
- 1 => 1421691086,
+ 1 => 1434209562,
2 => 'file',
),
),
'function' =>
array (
),
- 'has_nocache_code' => false,
'version' => 'Smarty-3.1.21-dev',
'unifunc' => 'content_54c086b3b1dd65_92948708',
+ 'has_nocache_code' => false,
),false); /*/%%SmartyHeaderCode%%*/?>
<?php if ($_valid && !is_callable('content_54c086b3b1dd65_92948708')) {function content_54c086b3b1dd65_92948708($_smarty_tpl) {?><?php echo $_smarty_tpl->getSubTemplate ('admin/error/header.html', $_smarty_tpl->cache_id, $_smarty_tpl->compile_id, 0, null, array(), 0);?>
$categoriesStats = $Categories->getStats();
$haveCategories = ($categoriesStats > 0);
- // Check for required Regions
- require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php');
- $Regions = new GlmDataRegions($this->wpdb, $this->config);
- $regionsStats = $Regions->getStats();
- $haveRegions = ($regionsStats > 0);
-
// Check for required Accommodation Types
require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAccommodationTypes.php');
$AccommodationTypes = new GlmDataAccommodationTypes($this->wpdb, $this->config);
$accommodationTypesStats = $AccommodationTypes->getStats();
$haveAccommodationTypes = ($accommodationTypesStats > 0);
+ // Check for required Amenities
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAmenities.php');
+ $Amenities = new GlmDataAmenities($this->wpdb, $this->config);
+ $amenitiesStats = $Amenities->getStats();
+ $haveAmenities = ($amenitiesStats > 0);
+
+ // Check for required Cities
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php');
+ $Cities = new GlmDataCities($this->wpdb, $this->config);
+ $citiesStats = $Cities->getStats();
+ $haveCities = ($citiesStats > 0);
+
+ // Check for required Regions
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php');
+ $Regions = new GlmDataRegions($this->wpdb, $this->config);
+ $regionsStats = $Regions->getStats();
+ $haveRegions = ($regionsStats > 0);
+
// Get number of member information records with pending updates
require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php');
$MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
'membersPending' => $membersPending,
'haveMemberTypes' => $haveMemberTypes,
'haveCategories' => $haveCategories,
- 'haveRegions' => $haveRegions,
'haveAccommodationTypes' => $haveAccommodationTypes,
+ 'haveAmenities' => $haveAmenities,
+ 'haveRegions' => $haveRegions,
+ 'haveCities' => $haveCities,
'pendingList' => $pendingList
);
--- /dev/null
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * Admin Member Info Image Upload by AJAX
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package glmMembersDatabase
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+// Load Members data abstract
+require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
+
+/*
+ * This class performs the work of handling images passed to it via
+ * an AJAX call that goes through the WorPress AJAX Handler.
+ *
+ */
+class GlmMembersAdmin_member_memberImage extends GlmDataImages
+{
+
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+
+ /*
+ * Constructor
+ *
+ * This contructor sets up this model. At this time that only includes
+ * storing away the WordPress data object.
+ *
+ * @return object Class object
+ *
+ */
+ public function __construct ($wpdb, $config)
+ {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ // Run constructor for members data class
+ parent::__construct(false, false);
+
+ }
+
+ /*
+ * Perform Model Action
+ *
+ * This method does the work for this model and returns any resulting data
+ *
+ * @return array Status and data array
+ *
+ * 'status'
+ *
+ * True if successfull and false if there was a fatal failure.
+ *
+ * 'menuItemRedirect'
+ *
+ * If not false, provides a menu item the controller should
+ * execute after this one. Normally if this is used, there would also be a
+ * modelRedirect value supplied as well.
+ *
+ * 'modelRedirect'
+ *
+ * If not false, provides an action the controller should execute after
+ * this one.
+ *
+ * 'view'
+ *
+ * A suggested view name that the contoller should use instead of the
+ * default view for this model or false to indicate that the default view
+ * should be used.
+ *
+ * 'data'
+ *
+ * Data that the model is returning for use in merging with the view to
+ * produce output.
+ *
+ */
+ public function modelAction ($actionData = false)
+ {
+
+ $return = array(
+ 'status' => false, // Assume we didn't get files or nothing works
+ 'files' => false, // Provide submitted data along with stored image data
+ 'message' => false
+ );
+
+
+ // Check for uploaded files
+ if (!isset($_FILES) || count($_FILES) == 0) {
+ $return['message'] = 'No image file provided!';
+ echo json_encode($return);
+ die();
+ }
+
+ // Include the incoming files data
+ $files = $_FILES;
+
+ // Check for Member Info record ID
+ if (!isset($_REQUEST['memberInfoID']) || trim($_REQUEST['memberInfoID']) == '') {
+ $return['message'] = 'No Member Info Record ID provided!';
+ echo json_encode($return);
+ die();
+ }
+echo "memberInfoID = ".$_REQUEST['memberInfoID']."\n\n";
+ // Store each file away
+
+ // Add stored image to return data
+
+ // Return stored image data
+ echo json_encode($return);
+ die();
+ }
+
+
+}
+?>
// Run constructor for members data class
parent::__construct(false, false);
- // Add scrips and css
- add_action('glm_members_memberInfo_enqueue_scripts',
- array(
- $this,
- 'glmMembersMemberInfoScripts'
- )
- );
-
-
- }
-
- /**
- * Setup inclusion of needed scripts
- *
- * This method is called by an add_action() hook setup in the contructor.
- *
- * (no prameters)
- *
- * @return void
- * @access public
- */
- public function glmMembersMemberInfoScripts ()
- {
-/* Not working at this time
- // Enqueue Geolocation Edit Script
- wp_register_script('glm-members-geo-js',
- GLM_MEMBERS_PLUGIN_URL . 'js/geolocation-edit/jquery.geolocation.edit.0.0.11.js',
- array(
- 'jquery'
- )
- );
- wp_enqueue_script('glm-members-geo-js');
-*/
}
/*
$haveMember = false;
$memberInfoID = 0;
$haveMemberInfo = false;
+ $haveImageGallery = false;
$isActive = false;
$noActive = false;
$categories = false;
// Edit the existing member
$memberInfo = $this->editEntry($memberInfoID);
- // If we have member data, say so
+ // If we have member data
if (is_array($memberInfo) && $memberInfo['status']) {
+ // Say we do
$haveMemberInfo = true;
+ // Also get any image gallery images
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
+ $Images = new GlmDataImages($this->wpdb, $this->config);
+ $imageGallery = $Images->getGallery($this->config['ref_type_numb']['Member'], $memberInfoID);
+
+ $haveImageGallery = ($imageGallery != false);
+
// Otherwise
} else {
$categoriesStats = $Categories->getStats();
$haveCategories = ($categoriesStats > 0);
- // Check for required Regions
- require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php');
- $Regions = new GlmDataRegions($this->wpdb, $this->config);
- $regionsStats = $Regions->getStats();
- $haveRegions = ($regionsStats > 0);
-
// Check for required Accommodation Types
require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAccommodationTypes.php');
$AccommodationTypes = new GlmDataAccommodationTypes($this->wpdb, $this->config);
$accommodationTypesStats = $AccommodationTypes->getStats();
$haveAccommodationTypes = ($accommodationTypesStats > 0);
+ // Check for required Amenities
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataAmenities.php');
+ $Amenities = new GlmDataAmenities($this->wpdb, $this->config);
+ $amenitiesStats = $Amenities->getStats();
+ $haveAmenities = ($amenitiesStats > 0);
+
+ // Check for required Cities
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCities.php');
+ $Cities = new GlmDataCities($this->wpdb, $this->config);
+ $citiesStats = $Cities->getStats();
+ $haveCities = ($citiesStats > 0);
+
+ // Check for required Regions
+ require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataRegions.php');
+ $Regions = new GlmDataRegions($this->wpdb, $this->config);
+ $regionsStats = $Regions->getStats();
+ $haveRegions = ($regionsStats > 0);
+
// Get number of member information records with pending updates
require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMemberInfo.php');
$MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
'membersPending' => $membersPending,
'haveMemberTypes' => $haveMemberTypes,
'haveCategories' => $haveCategories,
- 'haveRegions' => $haveRegions,
'haveAccommodationTypes' => $haveAccommodationTypes,
+ 'haveAmenities' => $haveAmenities,
+ 'haveRegions' => $haveRegions,
+ 'haveCities' => $haveCities,
'pendingList' => $pendingList
);
* @version 0.1
*/
+// Load Members data abstract
+require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsGeneral.php');
+
/*
* This class performs the work for the default action of the "Members" menu
* option, which is to display the members dashboard.
*
*/
-class GlmMembersAdmin_settings_index
+class GlmMembersAdmin_settings_index extends GlmDataSettingsGeneral
{
/**
// Save plugin configuration object
$this->config = $config;
+ // Run constructor for members data class
+ parent::__construct(false, false);
+
}
/*
*/
public function modelAction ($actionData = false)
{
+ // General settings are always stored in a record with ID=1.
+ $id = 1;
+
+ // Determine if current user can edit configurations
+ if (!current_user_can('glm_members_configure')) {
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'User does not have rights to make configuration changes.'
+ )
+ );
+ }
+
+ // Check for submission option
+ $option = '';
+ if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+ $option = $_REQUEST['option'];
+ }
+
+ switch($option) {
+
+ // Update the settings and redisplay the form
+ case 'submit':
+
+ // Update the general settings
+ $generalSettings = $this->updateEntry(1);
+
+ // Display admin message that the data has been updated
+ glmMembersAdmin::addNotice('General Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
+
+ break;
+
+ // Default is to get the current settings and display the form
+ default:
+
+ // Try to get the first (should be only) entry for general settings.
+ $generalSettings = $this->editEntry($id);
+
+ if ($generalSettings === false) {
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice("<b> /modesl/admin/settings/index.php: Unable to load General Settings.", 'Alert');
+ }
+
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'Unable to create general settings entry in database.'
+ )
+ );
+ }
+
+ break;
- // Determine if current user can add, edit, delete member data
- $canEdit = current_user_can('glm_members_edit');
+ }
// Compile template data
$templateData = array(
- 'canEdit' => $canEdit
+ 'reason' => '',
+ 'settings' => $generalSettings,
+ 'timezones' => DateTimeZone::listIdentifiers()
+// 'canEdit' => $canEdit
);
// Return status, suggested view, and data to controller
--- /dev/null
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * Admin Settings Terms
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package glmMembersDatabase
+ * @author Chuck Scott <cscott@gaslightmedia.com>
+ * @license http://www.gaslightmedia.com Gaslightmedia
+ * @version 0.1
+ */
+
+// Load Members data abstract
+require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/settings/dataSettingsTerms.php');
+
+/*
+ * This class performs the work for the default action of the "Members" menu
+ * option, which is to display the members dashboard.
+ *
+ */
+class GlmMembersAdmin_settings_terms extends GlmDataSettingsTerms
+{
+
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+
+ /*
+ * Constructor
+ *
+ * This contructor sets up this model. At this time that only includes
+ * storing away the WordPress data object.
+ *
+ * @return object Class object
+ *
+ */
+ public function __construct ($wpdb, $config)
+ {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ // Run constructor for members data class
+ parent::__construct(false, false);
+
+ }
+
+ /*
+ * Perform Model Action
+ *
+ * This method does the work for this model and returns any resulting data
+ *
+ * @return array Status and data array
+ *
+ * 'status'
+ *
+ * True if successfull and false if there was a fatal failure.
+ *
+ * 'menuItemRedirect'
+ *
+ * If not false, provides a menu item the controller should
+ * execute after this one. Normally if this is used, there would also be a
+ * modelRedirect value supplied as well.
+ *
+ * 'modelRedirect'
+ *
+ * If not false, provides an action the controller should execute after
+ * this one.
+ *
+ * 'view'
+ *
+ * A suggested view name that the contoller should use instead of the
+ * default view for this model or false to indicate that the default view
+ * should be used.
+ *
+ * 'data'
+ *
+ * Data that the model is returning for use in merging with the view to
+ * produce output.
+ *
+ */
+ public function modelAction ($actionData = false)
+ {
+ // General settings are always stored in a record with ID=1.
+ $id = 1;
+
+ // Determine if current user can edit configurations
+ if (!current_user_can('glm_members_configure')) {
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'User does not have rights to make configuration changes.'
+ )
+ );
+ }
+
+ // Check for submission option
+ $option = '';
+ if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') {
+ $option = $_REQUEST['option'];
+ }
+
+ switch($option) {
+
+ // Update the settings and redisplay the form
+ case 'submit':
+
+ // Update the general settings
+ $termsSettings = $this->updateEntry(1);
+
+ // Display admin message that the data has been updated
+ glmMembersAdmin::addNotice('Terms Settings for the '.GLM_MEMBERS_PLUGIN_NAME.' plugin have been updated.', 'AdminNotice');
+
+ break;
+
+ // Default is to get the current settings and display the form
+ default:
+
+ // Try to get the first (should be only) entry for general settings.
+ $termsSettings = $this->editEntry($id);
+
+ // Check that we actually have the terms
+ if ($termsSettings === false) {
+
+ if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
+ glmMembersAdmin::addNotice("<b>/modesl/admin/settings/terms.php:</b> Unable to load Terms Settings.", 'Alert');
+ }
+
+ return array(
+ 'status' => false,
+ 'menuItemRedirect' => 'error',
+ 'modelRedirect' => 'index',
+ 'view' => 'admin/error/index.html',
+ 'data' => array(
+ 'reason' => 'Unable to create terms settings entry in database.'
+ )
+ );
+ }
+
+ break;
+
+ }
+
+ // Compile template data
+ $templateData = array(
+ 'reason' => '',
+ 'settings' => $termsSettings,
+// 'canEdit' => $canEdit
+ );
+
+ // Return status, suggested view, and data to controller
+ return array(
+ 'status' => true,
+ 'menuItemRedirect' => false,
+ 'modelRedirect' => false,
+ 'view' => 'admin/settings/terms.html',
+ 'data' => $templateData
+ );
+
+ }
+
+}
+
+?>
\ No newline at end of file
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newAccommodationTypeCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new Accommodation Type">
+ <input type="submit" value="Add new Accommodation Type" class="button-primary">
</form>
</div>
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newAmenityCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new Amenity">
+ <input type="submit" value="Add new Amenity" class="button-primary">
</form>
</div>
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newCategoryCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new Category">
+ <input type="submit" value="Add new Category" class="button-primary">
</form>
</div>
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newCityCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Update this City">
+ <input type="submit" value="Update this City" class="button-primary">
</form>
</div>
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newMemberTypeCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new member type">
+ <input type="submit" value="Add new member type" class="button-primary">
</form>
</div>
</table>
<p><span class="glm-required">*</span> Required</p>
<a id="newRegionCancel" class="button-primary glm-right">Cancel</a>
- <input type="submit" value="Add new Region">
+ <input type="submit" value="Add new Region" class="button-primary">
</form>
</div>
<td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=categories" class="glm-right">Add</a></td>
</tr>
{/if}
-{if !$haveRegions}
- <tr>
- <th><span class="glm-error">No Regions</span></th>
- <td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=regions" class="glm-right">Add</a></td>
- </tr>
-{/if}
{if !$haveAccommodationTypes}
<tr>
<th><span class="glm-error">No Accommodation Types</span></th>
<td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=accommodationTypes" class="glm-right">Add</a></td>
</tr>
{/if}
+{if !$haveAmenities}
+ <tr>
+ <th><span class="glm-error">No Amenities</span></th>
+ <td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=amenities" class="glm-right">Add</a></td>
+ </tr>
+{/if}
+{if !$haveCities}
+ <tr>
+ <th><span class="glm-error">No Cities</span></th>
+ <td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=cities" class="glm-right">Add</a></td>
+ </tr>
+{/if}
+{if !$haveRegions}
+ <tr>
+ <th><span class="glm-error">No Regions</span></th>
+ <td><a href="{$adminURL}?page=glm-members-admin-menu-configure&glm_action=regions" class="glm-right">Add</a></td>
+ </tr>
+{/if}
{if $numbMembers == 0}
<tr>
<th> <span class="glm-error">No Members</span></th>
<script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$googleMapsBrowserApiKey}"></script>
+ <!--[if lt IE 9]>
+ <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+
{if $haveMemberInfo}
<!-- Delete Member Information dialog -->
<div id="deleteMemberInfoButton" class="button-primary glm-right">Archive this Member Information</div>
// 'media_buttons' => true,
// 'quicktags' => false,
'wpautop' => false,
- 'textarea_name' => 'descr',
+ 'textarea_name' => 'descr', </div>
+
'editor_height' => 200, // Height in px, overrides editor_rows
// 'textarea_rows' => 8
));
{if $memberInfo.fieldFail.notes}<p>{$memberInfo.fieldFail.notes}</p>{/if}
</td>
</tr>
+ <tr>
+ <th>Image Gallery</th>
+ <td class="glm-item-container glm-imageGalleryContainer">
+ <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000" />
+ <div class="glm-imageDropContainer">
+ <div class="glm-imageDrop glm-imageItemHidden" data-refType="" data-recordID="{$memberInfo.fieldData.id}" data-menuItem="member" data-action="memberImage"></div> <!-- Overlay of parent for drag detection -->
+ <div class="glm-imageUploadStatus glm-imageItemHidden"></div> <!-- Overlay for Upload Status Bars -->
+ <input id="newImage" type="file" name="newImage[]" multiple="multiple" class="glm-form-text-input glm-imageBrowseButton">
+ <div class="glm-imageDropText glm-imageItemHidden">Drag and drop new images here</div>
+ <div class="glm-noImageDropText glm-imageItemHidden">HTML5 file drag-and-drop not supported by your browser.<br>Use "Browse" button above to upload an image.</div>
+ </div>
+ </td>
+ </tr>
</table>
<p><span class="glm-required">*</span> Required</p>
<input type="submit" name="Add new member">
+
</form>
-
+
+<!--
+ <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000" />
+ <div id="newImageButton" class="button-primary glm-right">Add an Image</div>
+ <div id="newImageDialog" class="glm-dialog-box" title="Select a new image">
+ <table class="glm-admin-table">
+ <tr>
+ <th class="glm-required">Image:</th>
+ <td id="newImageTD">
+ <input id="newImage" type="file" name="newImage[]" multiple="multiple" class="glm-form-text-input">
+ <div id="imageDrop"><span id="imageDropText">or drop files here</span></div>
+ <div id="noImageDrop">HTML5 file drag-and-drop not supported by your browser.<br>Use "Browse" button above to upload an image.</div>
+ <div id="newImageRequired"></div>
+ </td>
+ </tr>
+ <tr>
+ <th class="glm-required">Image Caption:</th>
+ <td id="newImageNameTD">
+ <input id="newImageName" type="text" name="newImageName" class="glm-form-text-input">
+ <div id="newImageNameRequired"></div>
+ </td>
+ </tr>
+ <tr>
+ <th>Description:</th>
+ <td>
+ <textarea id="editImageDescr" name="descr" class="glm-form-textarea"></textarea>
+ </td>
+ </tr>
+ </table>
+ <div id="imageDragMessages">
+ <p>Status Messages</p>
+ </div>
+ <p><span class="glm-required">*</span> Required</p>
+ <a id="newImageCancel" class="button-primary glm-right">Cancel</a>
+ <input id="newImageSubmit" type="submit" value="Add new image">
+ </div>
+ -->
+
+
+
+ <!-- Include scripts for html5-File-Upload -->
+
<script type="text/javascript">
jQuery(document).ready(function($) {
});
// Submit new category
- $('#newCategorySubmit').click( function() {
-
+ $('#newCategorySubmit').click( function() {
// Assign new cat number
newCat--;
window.location.replace("{$thisURL}?page={$thisPage}&glm_action=index&member={$memberID}&deleteID={$memberInfo.fieldData.id}");
});
{/if}
+
+ /*
+ * New Image Dialog
+ */
+
+ // Setup dialog box for adding a new image
+ $("#newImageDialog").dialog({
+ autoOpen: false,
+ minWidth: 400,
+ dialogClass: "glm-dialog-no-close"
+ });
+ $('#newImageCancel').click( function() {
+ $("#newImageDialog").dialog("close");
+ });
+
+ // Ad a new image button action - pop-up dialog
+ $('#newImageButton').click( function() {
+ $("#newImageDialog").dialog("open");
+ });
+
+ // Submit new city
+ var newImageAdded = false;
+ $('#newImageSubmit').click( function() {
+
+/*
+ // Get new city name
+ var newImageName = $('#newImageName').val();
+
+ // If no name is supplied, notify used it's required
+ if (newImageName == '') {
+ $('#newImageNameTD').addClass('glm-form-bad-input');
+ $('#newImageNameRequired').text('An image name is required!');
+ return false;
+ }
+
+ // Add new image name to the hidden field that will pass the new name to PHP.
+ $('#imageName').val(newImageName);
+
+ // Add new image name to picklist and for storing - Only one permitted per submission
+ if (newImageAdded) {
+
+ // New image already added, so just update the name and select that one
+ $('#image').val(-1);
+ $('#image option:selected').text(newImageName);
+
+ } else {
+
+ // Add the new image name to the image picklist
+ $('#image').append('<option value="-1">' + newImageName + '</option>');
+ $('#image').val(-1);
+ $('#newImageNameTD').append('<input type="hidden" name="newImage" value="' + newImageName + '">');
+ newImageAdded = true;
+
+ }
+
+ // Clear new image name from form
+ $('#newImageName').val('');
+
+ $("#newImageDialog").dialog("close");
+*/
+
+ });
+
/*
* Map operations
*/
$('.glm-geocodeAction').change( function() {
glmGeocode();
});
+
+
});
</script>
{if !$haveMemberTypes}
<tr>
<th class="glm-error">You do not have any Member Types setup.</th>
- <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=memberTypes">Click here to add Member Types.</a></td>
+ <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=index">Click here to add Member Types.</a></td>
</tr>
{/if}
{if !$haveCategories}
<td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=categories">Click here to add Member Categories.</a></td>
</tr>
{/if}
-{if !$haveRegions}
+{if !$haveAccommodationTypes}
<tr>
- <th><span class="glm-error">You do not have any Regions setup.</span></th>
- <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=regions">Click here to add Regions.</a></td>
+ <th><span class="glm-error">You do not have any Accommodation Types setup.</span></th>
+ <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=accommodationTypes">Click here to add Accommodation Types.</a></td>
</tr>
{/if}
-{if !$haveAccommodationTypes}
+{if !$haveAmenities}
+ <tr>
+ <th><span class="glm-error">You do not have any Amenities setup.</span></th>
+ <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=amenities">Click here to add Amenities.</a></td>
+ </tr>
+{/if}
+{if !$haveCities}
<tr>
- <th><span class="glm-error">You do not have any AccommodationTypes setup.</span></th>
- <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=accommodationTypes">Click here to add AccommodationTypes.</a></td>
+ <th><span class="glm-error">You do not have any Cities setup.</span></th>
+ <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=cities">Click here to add Cities.</a></td>
+ </tr>
+{/if}
+{if !$haveRegions}
+ <tr>
+ <th><span class="glm-error">You do not have any Regions setup.</span></th>
+ <td><a href="{$thisURL}?page=glm-members-admin-menu-configure&glm_action=regions">Click here to add Regions.</a></td>
</tr>
{/if}
{if $numbMembers == 0}
+ <tr><td colspan="2"> </td></tr>
<tr>
<th> <span class="glm-error">You do not have any members listed.</span></th>
<td><a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=index&member_id=">Click here to create your first member.</a></td>
<h2 class="nav-tab-wrapper">
<a href="{$thisURL}?page={$thisPage}&glm_action=index" class="nav-tab{if $thisAction==index}-active{/if}">General Settings</a>
+ <a href="{$thisURL}?page={$thisPage}&glm_action=terms" class="nav-tab{if $thisAction==terms}-active{/if}">Terms and Phrases</a>
<a href="{$thisURL}?page={$thisPage}&glm_action=development" class="nav-tab{if $thisAction==development}-active{/if}">Development</a>
</h2>
<div id="glm-admin-content-container">
{include file='admin/settings/header.html'}
- <h2>General Settings</h2>
-
- <p>General settings go here.</p>
+ <h1>*** Not using these settings yet! ***</h1>
+ <form action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
+ <input type="hidden" name="glm_action" value="index">
+ <input type="hidden" name="option" value="submit">
+
+ <table class="glm-admin-table">
+
+ <!-- Debug Settings -->
+
+ <tr><td colspan="2"><h2>Debug Settings</h2></td></tr>
+ <tr>
+ <th>Admin Debug Information:</th>
+ <td>
+ <input type="checkbox" name="admin_debug"{if $settings.fieldData.admin_debug.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Admin Debug Verbose:</th>
+ <td>
+ <input type="checkbox" name="admin_debug_verbose"{if $settings.fieldData.admin_debug_verbose.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Front-End Debug Information:</th>
+ <td>
+ <input type="checkbox" name="front_debug"{if $settings.fieldData.front_debug.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Front-End Debug Verbose:</th>
+ <td>
+ <input type="checkbox" name="front_debug_verbose"{if $settings.fieldData.front_debug_verbose.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr><td colspan="2"><hr></td></tr>
+ <tr><td colspan="2"><h2>Misc. Settings</h2></td></tr>
+ <tr>
+ <th {if $settings.fieldRequired.google_maps_api_key}class="glm-required"{/if}>Google Maps API Key:</th>
+ <td {if $settings.fieldFail.google_maps_api_key}class="glm-form-bad-input"{/if}>
+ <input type="text" name="google_maps_api_key" value="{$settings.fieldData.google_maps_api_key}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.google_maps_api_key}<p>{$settings.fieldFail.google_maps_api_key}</p>{/if}
+ <br>Optional: See Google Maps JAVAscript API V3 documentation for information.
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.maps_default_lat}class="glm-required"{/if}>Default Map Location:</th>
+ <td {if $settings.fieldFail.maps_default_lat || $settings.fieldFail.maps_default_lon}class="glm-form-bad-input"{/if}>
+ <label for="maps_default_lat">Lat:</label>
+ <input type="text" name="maps_default_lat" value="{$settings.fieldData.maps_default_lat}" class="glm-form-text-input-small"><br>
+ <label for="maps_default_lon">Lon:</label>
+ <input type="text" name="maps_default_lon" value="{$settings.fieldData.maps_default_lon}" class="glm-form-text-input-small">
+ <br>Please enter values in decimal degrees.
+ {if $settings.fieldFail.maps_default_lat}<p>{$settings.fieldFail.maps_default_lat}</p>{/if}
+ {if $settings.fieldFail.maps_default_lon}<p>{$settings.fieldFail.maps_default_lon}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.time_zone}class="glm-required"{/if}>Time Zone:</th>
+ <td {if $settings.fieldFail.time_zone}class="glm-form-bad-input"{/if}>
+ <select name="time_zone">
+ {foreach $timezones as $tz}
+ <option value="{$tz}"{if $tz == $settings.fieldData.time_zone} selected="selected"{/if}>{$tz}</option>
+ {/foreach}
+ </select>
+ {if $settings.fieldFail.time_zone}<p>{$settings.fieldFail.time_zone}</p>{/if}
+ </td>
+ </tr>
+
+ <!-- Member List Page Options -->
+
+ <tr><td colspan="2"><hr></td></tr>
+ <tr><td colspan="2"><h2>Member List Page Options</h2></td></tr>
+ <tr>
+ <th>Show Map:</th>
+ <td>
+ <input type="checkbox" name="list_show_map"{if $settings.fieldData.list_show_map.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Map Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Member Name as Link to Detail:</th><td><input type="checkbox" name="list_map_show_detaillink"{if $settings.fieldData.list_map_show_detaillink.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Logo:</th><td><input type="checkbox" name="list_map_show_logo"{if $settings.fieldData.list_map_show_logo.value} checked="checked"{/if}></td></tr>
+
+ <tr>
+ <th>Logo Size:</th>
+ <td>
+ <select name="list_map_logo_size">
+ {foreach from=$settings.fieldData.list_map_logo_size.list item=v}
+ <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
+ {/foreach}
+ </select>
+ </td>
+ </tr>
+
+ <tr><th>Show Description:</th><td><input type="checkbox" name="list_map_show_descr"{if $settings.fieldData.list_map_show_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Short Description:</th><td><input type="checkbox" name="list_map_show_short_descr"{if $settings.fieldData.list_map_show_short_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Address:</th><td><input type="checkbox" name="list_map_show_address"{if $settings.fieldData.list_map_show_address.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Street:</th><td><input type="checkbox" name="list_map_show_street"{if $settings.fieldData.list_map_show_street.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show City, State, ZIP:</th><td><input type="checkbox" name="list_map_show_citystatezip"{if $settings.fieldData.list_map_show_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Country:</th><td><input type="checkbox" name="list_map_show_country"{if $settings.fieldData.list_map_show_country.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Region:</th><td><input type="checkbox" name="list_map_show_region"{if $settings.fieldData.list_map_show_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Phone:</th><td><input type="checkbox" name="list_map_show_phone"{if $settings.fieldData.list_map_show_phone.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Toll Free:</th><td><input type="checkbox" name="list_map_show_tollfree"{if $settings.fieldData.list_map_show_tollfree.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th>Show URL:</th>
+ <td>
+ <input type="checkbox" name="list_map_show_url"{if $settings.fieldData.list_map_show_url.value} checked="checked"{/if}>
+ Display URL as a link: <input type="checkbox" name="list_map_show_url_newtarget"{if $settings.fieldData.list_map_show_url_newtarget.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr><th>Show Categories:</th><td><input type="checkbox" name="list_map_show_categories"{if $settings.fieldData.list_map_show_categories.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Credit Cards:</th><td><input type="checkbox" name="list_map_show_creditcards"{if $settings.fieldData.list_map_show_creditcards.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Amenitiies:</th><td><input type="checkbox" name="list_map_show_amenities"{if $settings.fieldData.list_map_show_amenities.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Show Search Form:</th>
+ <td>
+ <input type="checkbox" name="list_show_search"{if $settings.fieldData.list_show_search.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Search Form Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Text Search:</th><td><input type="checkbox" name="list_show_search_text"{if $settings.fieldData.list_show_search_text.value} checked="checked"{/if}></td></tr>
+ <tr><th>Category Search:</th><td><input type="checkbox" name="list_show_search_category"{if $settings.fieldData.list_show_search_category.value} checked="checked"{/if}></td></tr>
+ <tr><th>Amenities Search:</th><td><input type="checkbox" name="list_show_search_amenities"{if $settings.fieldData.list_show_search_amenities.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Alpha Index:</th><td><input type="checkbox" name="list_show_search_alpha"{if $settings.fieldData.list_show_search_alpha.value} checked="checked"{/if}></td></tr>
+
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Show Member List:</th>
+ <td>
+ <input type="checkbox" name="list_show_list"{if $settings.fieldData.list_show_list.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Member List Options</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Member Name as Link to Detail:</th><td><input type="checkbox" name="list_show_detail_link"{if $settings.fieldData.list_show_detail_link.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Member Logo:</th><td><input type="checkbox" name="list_show_logo"{if $settings.fieldData.list_show_logo.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th {if $settings.fieldRequired.list_logo_size}class="glm-required"{/if}>Logo Size:</th>
+ <td {if $settings.fieldFail.list_logo_size}class="glm-form-bad-input"{/if}>
+ <select name="list_logo_size">
+ {foreach from=$settings.fieldData.list_logo_size.list item=v}
+ <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
+ {/foreach}
+ </select>
+ {if $settings.fieldFail.list_logo_size}<p>{$settings.fieldFail.list_logo_size}</p>{/if}
+ </td>
+ </tr>
+ <tr><th>Show Address:</th><td><input type="checkbox" name="list_show_address"{if $settings.fieldData.list_show_address.value} checked="checked"{/if}></td></tr>
+ </tr>
+ <tr>
+ <th>Address Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Street:</th><td><input type="checkbox" name="list_show_street"{if $settings.fieldData.list_show_street.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show City, State, ZIP:</th><td><input type="checkbox" name="list_show_citystatezip"{if $settings.fieldData.list_show_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Country:</th><td><input type="checkbox" name="list_show_country"{if $settings.fieldData.list_show_country.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr><th>Show Region:</th><td><input type="checkbox" name="list_show_region"{if $settings.fieldData.list_show_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Description:</th><td><input type="checkbox" name="list_show_descr"{if $settings.fieldData.list_show_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Short Description:</th><td><input type="checkbox" name="list_show_short_descr"{if $settings.fieldData.list_show_short_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Phone Number:</th><td><input type="checkbox" name="list_show_phone"{if $settings.fieldData.list_show_phone.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Toll Free Phone Number:</th><td><input type="checkbox" name="list_show_tollfree"{if $settings.fieldData.list_show_tollfree.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th>Show URL:</th>
+ <td>
+ <input type="checkbox" name="list_show_url"{if $settings.fieldData.list_show_url.value} checked="checked"{/if}>
+ Display URL as a link: <input type="checkbox" name="list_show_url_newtarget"{if $settings.fieldData.list_show_url_newtarget.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr><th>Show Categories:</th><td><input type="checkbox" name="list_show_categories"{if $settings.fieldData.list_show_categories.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Credit Cards Accepted:</th><td><input type="checkbox" name="list_show_creditcards"{if $settings.fieldData.list_show_creditcards.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Amenities:</th><td><input type="checkbox" name="list_show_amenities"{if $settings.fieldData.list_show_amenities.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+
+ <!-- Member Detail Page Options -->
+
+ <tr><td colspan="2"><hr></td></tr>
+ <tr><td colspan="2"><h2>Member Detail Page Options</h2></td></tr>
+ <tr>
+ <th>Show Map:</th>
+ <td>
+ <input type="checkbox" name="detail_show_map"{if $settings.fieldData.detail_show_map.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Map Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Logo:</th><td><input type="checkbox" name="detail_map_show_logo"{if $settings.fieldData.detail_map_show_logo.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th>Logo Size:</th>
+ <td>
+ <select name="detail_map_logo_size">
+ {foreach from=$settings.fieldData.detail_map_logo_size.list item=v}
+ <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
+ {/foreach}
+ </select>
+ </td>
+ </tr>
+ <tr><th>Show Description:</th><td><input type="checkbox" name="detail_map_show_descr"{if $settings.fieldData.detail_map_show_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Short Description:</th><td><input type="checkbox" name="detail_map_show_short_descr"{if $settings.fieldData.detail_map_show_short_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Address:</th><td><input type="checkbox" name="detail_map_show_address"{if $settings.fieldData.detail_map_show_address.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Street:</th><td><input type="checkbox" name="detail_map_show_street"{if $settings.fieldData.detail_map_show_street.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show City, State, ZIP:</th><td><input type="checkbox" name="detail_map_show_citystatezip"{if $settings.fieldData.detail_map_show_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Country:</th><td><input type="checkbox" name="detail_map_show_country"{if $settings.fieldData.detail_map_show_country.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Region:</th><td><input type="checkbox" name="detail_map_show_region"{if $settings.fieldData.detail_map_show_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Phone:</th><td><input type="checkbox" name="detail_map_show_phone"{if $settings.fieldData.detail_map_show_phone.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Toll Free:</th><td><input type="checkbox" name="detail_map_show_tollfree"{if $settings.fieldData.detail_map_show_tollfree.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th>Show URL:</th>
+ <td>
+ <input type="checkbox" name="detail_map_show_url"{if $settings.fieldData.detail_map_show_url.value} checked="checked"{/if}>
+ Display URL as a link: <input type="checkbox" name="detail_map_show_url_newtarget"{if $settings.fieldData.detail_map_show_url_newtarget.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr><th>Show Categories:</th><td><input type="checkbox" name="detail_map_show_categories"{if $settings.fieldData.detail_map_show_categories.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Credit Cards:</th><td><input type="checkbox" name="detail_map_show_creditcards"{if $settings.fieldData.detail_map_show_creditcards.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Amenitiies:</th><td><input type="checkbox" name="detail_map_show_amenities"{if $settings.fieldData.detail_map_show_amenities.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Show Directions:</th>
+ <td>
+ <input type="checkbox" name="detail_show_directions"{if $settings.fieldData.detail_show_directions.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr>
+ <th>Member Detail Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Member Logo:</th><td><input type="checkbox" name="detail_show_logo"{if $settings.fieldData.detail_show_logo.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th {if $settings.fieldRequired.detail_logo_size}class="glm-required"{/if}>Logo Size:</th>
+ <td {if $settings.fieldFail.detail_logo_size}class="glm-form-bad-input"{/if}>
+ <select name="detail_logo_size">
+ {foreach from=$settings.fieldData.detail_logo_size.list item=v}
+ <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
+ {/foreach}
+ </select>
+ {if $settings.fieldFail.detail_logo_size}<p>{$settings.fieldFail.detail_logo_size}</p>{/if}
+ </td>
+ </tr>
+ <tr><th>Show Address:</th><td><input type="checkbox" name="detail_show_address"{if $settings.fieldData.detail_show_address.value} checked="checked"{/if}></td></tr>
+ </tr>
+ <tr>
+ <th>Address Options:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr><th>Show Street:</th><td><input type="checkbox" name="detail_show_street"{if $settings.fieldData.detail_show_street.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show City, State, ZIP:</th><td><input type="checkbox" name="detail_show_citystatezip"{if $settings.fieldData.detail_show_citystatezip.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Country:</th><td><input type="checkbox" name="detail_show_country"{if $settings.fieldData.detail_show_country.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+ <tr><th>Show Region:</th><td><input type="checkbox" name="detail_show_region"{if $settings.fieldData.detail_show_region.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Description:</th><td><input type="checkbox" name="detail_show_descr"{if $settings.fieldData.detail_show_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Short Description:</th><td><input type="checkbox" name="detail_show_short_descr"{if $settings.fieldData.detail_show_short_descr.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Phone Number:</th><td><input type="checkbox" name="detail_show_phone"{if $settings.fieldData.detail_show_phone.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Toll Free Phone Number:</th><td><input type="checkbox" name="detail_show_tollfree"{if $settings.fieldData.detail_show_tollfree.value} checked="checked"{/if}></td></tr>
+ <tr>
+ <th>Show URL:</th>
+ <td>
+ <input type="checkbox" name="detail_show_url"{if $settings.fieldData.detail_show_url.value} checked="checked"{/if}>
+ Display URL as a link: <input type="checkbox" name="detail_show_url_newtarget"{if $settings.fieldData.detail_show_url_newtarget.value} checked="checked"{/if}>
+ </td>
+ </tr>
+ <tr><th>Show Categories:</th><td><input type="checkbox" name="detail_show_categories"{if $settings.fieldData.detail_show_categories.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Credit Cards Accepted:</th><td><input type="checkbox" name="detail_show_creditcards"{if $settings.fieldData.detail_show_creditcards.value} checked="checked"{/if}></td></tr>
+ <tr><th>Show Amenities:</th><td><input type="checkbox" name="detail_show_amenities"{if $settings.fieldData.detail_show_amenities.value} checked="checked"{/if}></td></tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <input type="submit" value="Update Settings" class="button-primary">
+ </form>
{include file='admin/footer.html'}
--- /dev/null
+{include file='admin/settings/header.html'}
+
+ <h1>*** Not using these settings yet! ***</h1>
+
+ <form action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
+ <input type="hidden" name="glm_action" value="terms">
+ <input type="hidden" name="option" value="submit">
+
+ <table class="glm-admin-table">
+
+ <!-- Admin Menus -->
+
+ <tr><td colspan="2"><h2>Admin Menu and Tab Names</h2></td></tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_members}class="glm-required"{/if}>Members Menu:</th>
+ <td {if $settings.fieldFail.term_admin_menu_members}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_members" value="{$settings.fieldData.term_admin_menu_members}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_members}<p>{$settings.fieldFail.term_admin_menu_members}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th>Members Menu Tabs:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_members_dashboard}class="glm-required"{/if}>Main Dashboard:</th>
+ <td {if $settings.fieldFail.term_admin_menu_members_dashboard}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_members_dashboard" value="{$settings.fieldData.term_admin_menu_members_dashboard}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_members_dashboard}<p>{$settings.fieldFail.term_admin_menu_members_dashboard}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_members_list}class="glm-required"{/if}>Member List:</th>
+ <td {if $settings.fieldFail.term_admin_menu_members_list}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_members_list" value="{$settings.fieldData.term_admin_menu_members_list}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_members_list}<p>{$settings.fieldFail.term_admin_menu_members_list}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_members_reports}class="glm-required"{/if}>Reports:</th>
+ <td {if $settings.fieldFail.term_admin_menu_members_reports}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_members_reports" value="{$settings.fieldData.term_admin_menu_members_reports}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_members_reports}<p>{$settings.fieldFail.term_admin_menu_members_reports}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member}class="glm-required"{/if}>Member Menu:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member" value="{$settings.fieldData.term_admin_menu_member}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member}<p>{$settings.fieldFail.term_admin_menu_member}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th>Member Menu Tabs:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_dashboard}class="glm-required"{/if}>Member Dashboard:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_dashboard}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_dashboard" value="{$settings.fieldData.term_admin_menu_member_dashboard}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_dashboard}<p>{$settings.fieldFail.term_admin_menu_member_dashboard}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_info}class="glm-required"{/if}>Member Info:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_info}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_info" value="{$settings.fieldData.term_admin_menu_member_info}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_info}<p>{$settings.fieldFail.term_admin_menu_member_info}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_locations}class="glm-required"{/if}>Locations:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_locations}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_locations" value="{$settings.fieldData.term_admin_menu_member_locations}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_locations}<p>{$settings.fieldFail.term_admin_menu_member_locations}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_facilities}class="glm-required"{/if}>Facilities:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_facilities}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_facilities" value="{$settings.fieldData.term_admin_menu_member_facilities}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_facilities}<p>{$settings.fieldFail.term_admin_menu_member_facilities}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_attractions}class="glm-required"{/if}>Attractions:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_attractions}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_attractions" value="{$settings.fieldData.term_admin_menu_member_attractions}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_attractions}<p>{$settings.fieldFail.term_admin_menu_member_attractions}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_member_contacts}class="glm-required"{/if}>Contacts:</th>
+ <td {if $settings.fieldFail.term_admin_menu_member_contacts}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_member_contacts" value="{$settings.fieldData.term_admin_menu_member_contacts}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_member_contacts}<p>{$settings.fieldFail.term_admin_menu_member_contacts}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure}class="glm-required"{/if}>Configure Menu:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure" value="{$settings.fieldData.term_admin_menu_configure}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure}<p>{$settings.fieldFail.term_admin_menu_configure}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th>Configure Menu Tabs:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_member_types}class="glm-required"{/if}>Member Types:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_member_types}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_member_types" value="{$settings.fieldData.term_admin_menu_configure_member_types}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_member_types}<p>{$settings.fieldFail.term_admin_menu_configure_member_types}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_member_cats}class="glm-required"{/if}>Member Categories:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_member_cats}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_member_cats" value="{$settings.fieldData.term_admin_menu_configure_member_cats}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_member_cats}<p>{$settings.fieldFail.term_admin_menu_configure_member_cats}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_accom_types}class="glm-required"{/if}>Accommodation Types:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_accom_types}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_accom_types" value="{$settings.fieldData.term_admin_menu_configure_accom_types}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_accom_types}<p>{$settings.fieldFail.term_admin_menu_configure_accom_types}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_amenities}class="glm-required"{/if}>Amenities:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_amenities}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_amenities" value="{$settings.fieldData.term_admin_menu_configure_amenities}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_amenities}<p>{$settings.fieldFail.term_admin_menu_configure_amenities}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_cities}class="glm-required"{/if}>Cities:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_cities}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_cities" value="{$settings.fieldData.term_admin_menu_configure_cities}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_cities}<p>{$settings.fieldFail.term_admin_menu_configure_cities}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_configure_regions}class="glm-required"{/if}>Regions:</th>
+ <td {if $settings.fieldFail.term_admin_menu_configure_regions}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_configure_regions" value="{$settings.fieldData.term_admin_menu_configure_regions}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_configure_regions}<p>{$settings.fieldFail.term_admin_menu_configure_regions}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_settings}class="glm-required"{/if}>Settings Menu:</th>
+ <td {if $settings.fieldFail.term_admin_menu_settings}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_settings" value="{$settings.fieldData.term_admin_menu_settings}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_settings}<p>{$settings.fieldFail.term_admin_menu_settings}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th>Settings Menu Tabs:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_settings_general}class="glm-required"{/if}>General Settings:</th>
+ <td {if $settings.fieldFail.term_admin_menu_settings_general}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_settings_general" value="{$settings.fieldData.term_admin_menu_settings_general}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_settings_general}<p>{$settings.fieldFail.term_admin_menu_settings_general}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_settings_terms}class="glm-required"{/if}>Terms & Phrases:</th>
+ <td {if $settings.fieldFail.term_admin_menu_settings_terms}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_settings_terms" value="{$settings.fieldData.term_admin_menu_settings_terms}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_settings_terms}<p>{$settings.fieldFail.term_admin_menu_settings_terms}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_admin_menu_settings_development}class="glm-required"{/if}>Development:</th>
+ <td {if $settings.fieldFail.term_admin_menu_settings_development}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_admin_menu_settings_development" value="{$settings.fieldData.term_admin_menu_settings_development}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_admin_menu_settings_development}<p>{$settings.fieldFail.term_admin_menu_settings_development}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr><td colspan="2"><hr></td></tr>
+ <tr><td colspan="2"><h2>Terms</h2></td></tr>
+ <tr>
+ <th>Member:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_member}class="glm-required"{/if}>Normal:</th>
+ <td {if $settings.fieldFail.term_member}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_member" value="{$settings.fieldData.term_member}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_member}<p>{$settings.fieldFail.term_member}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_member_cap}class="glm-required"{/if}>Capitalized:</th>
+ <td {if $settings.fieldFail.term_member_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_member_cap" value="{$settings.fieldData.term_member_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_member_cap}<p>{$settings.fieldFail.term_member_cap}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_member_plur}class="glm-required"{/if}>Plural:</th>
+ <td {if $settings.fieldFail.term_member_plur}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_member_plur" value="{$settings.fieldData.term_member_plur}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_member_plur}<p>{$settings.fieldFail.term_member_plur}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_member_plur_cap}class="glm-required"{/if}>Plural Capitalized:</th>
+ <td {if $settings.fieldFail.term_member_plur_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_member_plur_cap" value="{$settings.fieldData.term_member_plur_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_member_plur_cap}<p>{$settings.fieldFail.term_member_plur_cap}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Location:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_location}class="glm-required"{/if}>Normal:</th>
+ <td {if $settings.fieldFail.term_location}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_location" value="{$settings.fieldData.term_location}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_location}<p>{$settings.fieldFail.term_location}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_location_cap}class="glm-required"{/if}>Capitalized:</th>
+ <td {if $settings.fieldFail.term_location_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_location_cap" value="{$settings.fieldData.term_location_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_location_cap}<p>{$settings.fieldFail.term_location_cap}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_location_plur}class="glm-required"{/if}>Plural:</th>
+ <td {if $settings.fieldFail.term_location_plur}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_location_plur" value="{$settings.fieldData.term_location_plur}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_location_plur}<p>{$settings.fieldFail.term_location_plur}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_location_plur_cap}class="glm-required"{/if}>Plural Capitalized:</th>
+ <td {if $settings.fieldFail.term_location_plur_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_location_plur_cap" value="{$settings.fieldData.term_location_plur_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_location_plur_cap}<p>{$settings.fieldFail.term_location_plur_cap}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Facility:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_facility}class="glm-required"{/if}>Normal:</th>
+ <td {if $settings.fieldFail.term_facility}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_facility" value="{$settings.fieldData.term_facility}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_facility}<p>{$settings.fieldFail.term_facility}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_facility_cap}class="glm-required"{/if}>Capitalized:</th>
+ <td {if $settings.fieldFail.term_facility_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_facility_cap" value="{$settings.fieldData.term_facility_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_facility_cap}<p>{$settings.fieldFail.term_facility_cap}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_facility_plur}class="glm-required"{/if}>Plural:</th>
+ <td {if $settings.fieldFail.term_facility_plur}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_facility_plur" value="{$settings.fieldData.term_facility_plur}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_facility_plur}<p>{$settings.fieldFail.term_facility_plur}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_facility_plur_cap}class="glm-required"{/if}>Plural Capitalized:</th>
+ <td {if $settings.fieldFail.term_facility_plur_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_facility_plur_cap" value="{$settings.fieldData.term_facility_plur_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_facility_plur_cap}<p>{$settings.fieldFail.term_facility_plur_cap}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Attraction:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_attraction}class="glm-required"{/if}>Normal:</th>
+ <td {if $settings.fieldFail.term_attraction}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_attraction" value="{$settings.fieldData.term_attraction}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_attraction}<p>{$settings.fieldFail.term_attraction}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_attraction_cap}class="glm-required"{/if}>Capitalized:</th>
+ <td {if $settings.fieldFail.term_attraction_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_attraction_cap" value="{$settings.fieldData.term_attraction_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_attraction_cap}<p>{$settings.fieldFail.term_attraction_cap}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_attraction_plur}class="glm-required"{/if}>Plural:</th>
+ <td {if $settings.fieldFail.term_attraction_plur}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_attraction_plur" value="{$settings.fieldData.term_attraction_plur}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_attraction_plur}<p>{$settings.fieldFail.term_attraction_plur}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_attraction_plur_cap}class="glm-required"{/if}>Plural Capitalized:</th>
+ <td {if $settings.fieldFail.term_attraction_plur_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_attraction_plur_cap" value="{$settings.fieldData.term_attraction_plur_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_attraction_plur_cap}<p>{$settings.fieldFail.term_attraction_plur_cap}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Contact:</th>
+ <td>
+ <table class="glm-admin-table">
+ <tr>
+ <th {if $settings.fieldRequired.term_contact}class="glm-required"{/if}>Normal:</th>
+ <td {if $settings.fieldFail.term_contact}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_contact" value="{$settings.fieldData.term_contact}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_contact}<p>{$settings.fieldFail.term_contact}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_contact_cap}class="glm-required"{/if}>Capitalized:</th>
+ <td {if $settings.fieldFail.term_contact_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_contact_cap" value="{$settings.fieldData.term_contact_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_contact_cap}<p>{$settings.fieldFail.term_contact_cap}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_contact_plur}class="glm-required"{/if}>Plural:</th>
+ <td {if $settings.fieldFail.term_contact_plur}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_contact_plur" value="{$settings.fieldData.term_contact_plur}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_contact_plur}<p>{$settings.fieldFail.term_contact_plur}</p>{/if}
+ </td>
+ </tr>
+ <tr>
+ <th {if $settings.fieldRequired.term_contact_plur_cap}class="glm-required"{/if}>Plural Capitalized:</th>
+ <td {if $settings.fieldFail.term_contact_plur_cap}class="glm-form-bad-input"{/if}>
+ <input type="text" name="term_contact_plur_cap" value="{$settings.fieldData.term_contact_plur_cap}" class="glm-form-text-input-medium">
+ {if $settings.fieldFail.term_contact_plur_cap}<p>{$settings.fieldFail.term_contact_plur_cap}</p>{/if}
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <input type="submit" value="Update Settings" class="button-primary">
+ </form>
+{include file='admin/footer.html'}
--- /dev/null
+
+<div id="icon-themes" class="icon32"><br></div>
+<h2 class="nav-tab-wrapper">
+ <a class='{if $settingsTab=="tab1"}nav-tab-active{else}nav-tab{/if}' href='{$thisURL}?page=glm-member-db-settings&tab=tab1'>Tab 1</a>
+ <a class='{if $settingsTab=="tab2"}nav-tab-active{else}nav-tab{/if}' href='{$thisURL}?page=glm-member-db-settings&tab=tab2'>Tab 2</a>
+</h2>
+<div class="wrap">
+ <h2>My Plugin Options</h2>
+ <form action="options.php?tab={$settingsTab}" method="POST">
+ {php} settings_fields( 'glm-member-db-settings-group' ); {/php}
+ {php} do_settings_sections( 'glm-member-db-settings' ); {/php}
+ {php} submit_button(); {/php}
+ </form>
+</div>
+++ /dev/null
-
-<div id="icon-themes" class="icon32"><br></div>
-<h2 class="nav-tab-wrapper">
- <a class='{if $settingsTab=="tab1"}nav-tab-active{else}nav-tab{/if}' href='{$thisURL}?page=glm-member-db-settings&tab=tab1'>Tab 1</a>
- <a class='{if $settingsTab=="tab2"}nav-tab-active{else}nav-tab{/if}' href='{$thisURL}?page=glm-member-db-settings&tab=tab2'>Tab 2</a>
-</h2>
-<div class="wrap">
- <h2>My Plugin Options</h2>
- <form action="options.php?tab={$settingsTab}" method="POST">
- {php} settings_fields( 'glm-member-db-settings-group' ); {/php}
- {php} do_settings_sections( 'glm-member-db-settings' ); {/php}
- {php} submit_button(); {/php}
- </form>
-</div>