From 1289d3fafa1e1c23445a8d23f659fce6cb1f1a7b Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Wed, 19 Nov 2014 16:49:24 -0500 Subject: [PATCH] initial commit --- controllers/Admin.php | 345 +++++++++++++++++++++++++++++++++++ controllers/Front.php | 60 ++++++ index.php | 31 ++++ models/PrestonInfoWidget.php | 88 +++++++++ views/deniedAccess.php | 1 + views/hours.php | 10 + views/optionsPage.php | 10 + views/stateSelect.php | 9 + views/text.php | 2 + views/textArea.php | 1 + views/vCard.php | 29 +++ 11 files changed, 586 insertions(+) create mode 100644 controllers/Admin.php create mode 100644 controllers/Front.php create mode 100644 index.php create mode 100644 models/PrestonInfoWidget.php create mode 100644 views/deniedAccess.php create mode 100644 views/hours.php create mode 100644 views/optionsPage.php create mode 100644 views/stateSelect.php create mode 100644 views/text.php create mode 100644 views/textArea.php create mode 100644 views/vCard.php diff --git a/controllers/Admin.php b/controllers/Admin.php new file mode 100644 index 0000000..610d9d0 --- /dev/null +++ b/controllers/Admin.php @@ -0,0 +1,345 @@ + + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @version SVN: (0.1) + * @link <> + */ + +/** + * Toolkit_Package_Admin + * + * Description of Admin + * + * @category Toolkit + * @package Package + * @author Steve Sutton + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @release Release: (0.1) + * @link <> + */ +class Preston_Info_Admin_Controller +{ + public $path; + + public function __construct($path) + { + $this->path = $path; + add_action('admin_menu', array($this, 'prestonclientinfo_add_admin_menu')); + add_action('admin_init', array($this, 'prestonclientinfo_settings_init')); + + } + + static public function activate_plugin() + { + Preston_Info_Admin_Controller::add_capability(); + Preston_Info_Admin_Controller::glm_add_state_list_option(); + } + + static public function deactivate_plugin() + { + Preston_Info_Admin_Controller::remove_capability(); + } + + static public function add_capability() + { + $roles = get_editable_roles(); + foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) { + if (isset($roles[$key]) && $role->has_cap(PF_BUILT_IN_CAPABILITY)) { + $role->add_cap(GLM_PRESTON_CAPABILITY); + } + } + } + + static public function remove_capability() + { + $roles = get_editable_roles(); + foreach ($GLOBALS['wp_roles']->role_objects as $key => $role) { + if (isset($roles[$key]) && $role->has_cap(GLM_PRESTON_CAPABILITY)) { + $role->remove_cap(GLM_PRESTON_CAPABILITY); + } + } + } + + static public function prestonclientinfo_uninstall() + { + delete_option(GLM_PRESTONINFO_SETTINGS); + delete_option(GLM_PRESTONINFO_STATES); + } + + static public function glm_add_state_list_option() + { + //echo 'called glm_add_state_list_option'; + if (get_option(GLM_PRESTONINFO_STATES)) { + delete_option(GLM_PRESTONINFO_STATES); + } + // [status_US] array of states and their abbr. + $states_US[''] = '-- Select --'; // {{{ + $states_US['AL'] = 'Alabama'; + $states_US['AK'] = 'Alaska'; + $states_US['AZ'] = 'Arizona'; + $states_US['AR'] = 'Arkansas'; + $states_US['CA'] = 'California'; + $states_US['CO'] = 'Colorado'; + $states_US['CT'] = 'Connecticut'; + $states_US['DE'] = 'Delaware'; + $states_US['DC'] = 'District of Columbia'; + $states_US['FL'] = 'Florida'; + $states_US['GA'] = 'Georgia'; + $states_US['HI'] = 'Hawaii'; + $states_US['ID'] = 'Idaho'; + $states_US['IL'] = 'Illinois'; + $states_US['IN'] = 'Indiana'; + $states_US['IA'] = 'Iowa'; + $states_US['KS'] = 'Kansas'; + $states_US['KY'] = 'Kentucky'; + $states_US['LA'] = 'Louisiana'; + $states_US['ME'] = 'Maine'; + $states_US['MD'] = 'Maryland'; + $states_US['MA'] = 'Massachusetts'; + $states_US['MI'] = 'Michigan'; + $states_US['MN'] = 'Minnesota'; + $states_US['MS'] = 'Mississippi'; + $states_US['MO'] = 'Missouri'; + $states_US['MT'] = 'Montana'; + $states_US['NE'] = 'Nebraska'; + $states_US['NV'] = 'Nevada'; + $states_US['NH'] = 'New Hampshire'; + $states_US['NJ'] = 'New Jersey'; + $states_US['NM'] = 'New Mexico'; + $states_US['NY'] = 'New York'; + $states_US['NC'] = 'North Carolina'; + $states_US['ND'] = 'North Dakota'; + $states_US['OH'] = 'Ohio'; + $states_US['OK'] = 'Oklahoma'; + $states_US['OR'] = 'Oregon'; + $states_US['PA'] = 'Pennsylvania'; + $states_US['RI'] = 'Rhode Island'; + $states_US['SC'] = 'South Carolina'; + $states_US['SD'] = 'South Dakota'; + $states_US['TN'] = 'Tennessee'; + $states_US['TX'] = 'Texas'; + $states_US['UT'] = 'Utah'; + $states_US['VT'] = 'Vermont'; + $states_US['VA'] = 'Virginia'; + $states_US['WA'] = 'Washington'; + $states_US['WV'] = 'West Virginia'; + $states_US['WI'] = 'Wisconsin'; + $states_US['WY'] = 'Wyoming'; // }}} + // [states] extended states array + $states['AB'] = 'Alberta'; // {{{ + $states['AS'] = 'American Samoa'; + $states['BC'] = 'British Columbia'; + $states['DC'] = 'District of Columbia'; + $states['FM'] = 'Federated States of Micronesia'; + $states['GU'] = 'Guam'; + $states['MB'] = 'Manitoba'; + $states['MH'] = 'Marshall Islands'; + $states['NB'] = 'New Brunswick'; + $states['NF'] = 'Newfoundland'; + $states['MP'] = 'Northern Mariana Islands'; + $states['NT'] = 'Northwest Territories'; + $states['NS'] = 'Nova Scotia'; + $states['ON'] = 'Ontario'; + $states['PW'] = 'Palau'; + $states['PE'] = 'Prince Edward Island'; + $states['PR'] = 'Puerto Rico'; + $states['QC'] = 'Quebec'; + $states['SK'] = 'Saskatchewan'; + $states['VI'] = 'Virgin Islands'; + $states['YT'] = 'Yukon'; // }}} + // Merge the 50 US states together with some of the extended + // provinces / territories and then sort them on their keys + // Then add the remaining countries and areas at the end + // of the array. + $states = $states_US + $states; + ksort($states); + add_option(GLM_PRESTONINFO_STATES, $states); + //echo 'called add_option'; + } + + public function prestonclientinfo_add_admin_menu() + { + add_menu_page( + 'Locations', + 'Locations', + GLM_PRESTON_CAPABILITY, + 'prestonclientinfo', + array($this, 'prestonclientinfo_options_page'), + 'dashicons-id' + ); + } + + public function prestonclientinfo_settings_exist() + { + if (false == get_option(GLM_PRESTONINFO_SETTINGS)) { + add_option(GLM_PRESTONINFO_SETTINGS); + } + } + + public function prestonclientinfoAddSettingTextField($name, $label, $type) + { + switch ($type) { + case 'text': + $callback = 'prestonclientinfoRenderText'; + break; + case 'hours': + $callback = 'prestonclientinfoRenderHours'; + break; + case 'textarea': + $callback = 'prestonclientinfoRenderTextArea'; + break; + case 'state': + $callback = 'prestonclientinfoRenderStateSelect'; + break; + default: + return false; + break; + } + add_settings_field( + $name, + __($label, 'wordpress'), + array($this, $callback), + 'pluginPage', + 'prestonclientinfo_pluginPage_section', + $name + ); + } + + public function prestonclientinfo_settings_init() + { + register_setting('pluginPage', 'prestonclientinfo_settings'); + add_filter('option_page_capability_pluginPage', + 'prestonclientinfo_option_page_capability'); + + add_settings_section( + 'prestonclientinfo_pluginPage_section', + __('Edit your Locations', 'wordpress'), + array($this, 'prestonclientinfo_settings_section_callback'), + 'pluginPage' + ); + $fieldNames = array(); + for ($i = 1; $i <= 4; ++$i) { + $fieldNames[] = array( + 'name' => 'location' . $i, + 'label' => 'Location '. $i, + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'address' . $i, + 'label' => 'Address', + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'city' . $i, + 'label' => 'City', + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'state' . $i, + 'label' => 'State', + 'type' => 'state' + ); + $fieldNames[] = array( + 'name' => 'zip' . $i, + 'label' => 'Zip', + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'phone' . $i, + 'label' => 'Phone', + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'tfree' . $i, + 'label' => 'Toll Free', + 'type' => 'text' + ); + $fieldNames[] = array( + 'name' => 'hours' . $i. 'a', + 'label' => 'Hours', + 'type' => 'hours' + ); + $fieldNames[] = array( + 'name' => 'hours' . $i . 'b', + 'label' => 'Hours', + 'type' => 'hours' + ); + $fieldNames[] = array( + 'name' => 'hours' . $i . 'c', + 'label' => 'Hours', + 'type' => 'hours' + ); + } + + foreach ($fieldNames as $field) { + $this->prestonclientinfoAddSettingTextField( + $field['name'], + $field['label'], + $field['type'] + ); + } + } + + public function prestonclientinfoRenderText($fieldName) + { + static $options; + if (!$options) { + $options = get_option(GLM_PRESTONINFO_SETTINGS); + } + include $this->path . 'views/text.php'; + } + + public function prestonclientinfoRenderHours($fieldName) + { + static $options; + if (!$options) { + $options = get_option(GLM_PRESTONINFO_SETTINGS); + } + include $this->path . 'views/hours.php'; + } + + public function prestonclientinfoRenderTextArea($fieldName) + { + static $options; + $options = get_option(GLM_PRESTONINFO_SETTINGS); + include $this->path . 'views/textArea.php'; + } + + public function prestonclientinfoRenderStateSelect($fieldName) + { + static $options; + $options = get_option(GLM_PRESTONINFO_SETTINGS); + $states = get_option(GLM_PRESTONINFO_STATES); + include $this->path . 'views/stateSelect.php'; + } + + public function prestonclientinfo_settings_section_callback() + { + echo __('4 Locations', 'wordpress'); + } + + public function prestonclientinfo_option_page_capability($capability) + { + return GLM_PRESTON_CAPABILITY; + } + + public function prestonclientinfo_options_page() + { + if (current_user_can(GLM_PRESTON_CAPABILITY)) { + include $this->path . 'views/optionsPage.php'; + } else { + include $this->path . 'views/deniedAccess.php'; + } + } + +} diff --git a/controllers/Front.php b/controllers/Front.php new file mode 100644 index 0000000..5882177 --- /dev/null +++ b/controllers/Front.php @@ -0,0 +1,60 @@ + + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @version SVN: (0.1) + * @link <> + */ + +/** + * Toolkit_Package_Front + * + * Description of Front + * + * @category Toolkit + * @package Package + * @author Steve Sutton + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @release Release: (0.1) + * @link <> + */ +class Preston_Info_Front_controller +{ + + /** + * Plugin Path + * + * @var type String + */ + public $path; + + /** + * Initializes Front Controller class + * + * @param type $path Plugin path + */ + function __construct($path) + { + $this->path = $path; + add_action('widgets_init', array($this, 'prestonclientinfo_register_widget')); + } + + /** + * Register the Client Info Widget with WordPress + */ + function prestonclientinfo_register_widget() + { + include $this->path . 'models/PrestonInfoWidget.php'; + register_widget('PrestonInfoWidget'); + } + +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..151b4c9 --- /dev/null +++ b/index.php @@ -0,0 +1,31 @@ + + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @version SVN: (0.1) + * @link <> + */ + +/** + * Toolkit_Package_QuickSite_Widget + * + * Description of QuickSite_Widget + * + * @category Toolkit + * @package Package + * @author Steve Sutton + * @copyright 2013 Gaslight Media + * @license Gaslight Media + * @release Release: (0.1) + * @link <> + */ +class PrestonInfoWidget + extends WP_widget +{ + + private $pluginDirPath; + + /** + * Class Initializer + */ + public function __construct() + { + parent::__construct( + 'PrestonInfoWidget', + __('Locations Info Widget', 'text_domain'), + array('description' => __('Locations Widget', 'text_domain')) + ); + } + + /** + * Output widget + * + * Includes the template file for the widget. + * Template file is plain old php for your fastest template engine yet! + * + * @param type $args Widget Args + * @param type $instance Widget Instance + * + * @return string + */ + public function widget($args, $instance) + { + $path = plugin_dir_path(__FILE__); + include $path . '../views/vCard.php'; + } + + /** + * Return the quicksite option for the given key + * + * @param type $name Name of the quicksite option to return + * + * @return string Option + */ + function show_option($name, $key) + { + $settings = get_option('prestonclientinfo_settings'); + $states = get_option('prestonclientinfo_states'); + if ($key) { + return ($settings[$name][$key]) + ? $settings[$name][$key] + : null; + } else { + return ($settings && $settings[$name]) + ? $settings[$name] + : null; + } + + } + +} diff --git a/views/deniedAccess.php b/views/deniedAccess.php new file mode 100644 index 0000000..d8b6753 --- /dev/null +++ b/views/deniedAccess.php @@ -0,0 +1 @@ +

You do not have permission to edit Client Info

\ No newline at end of file diff --git a/views/hours.php b/views/hours.php new file mode 100644 index 0000000..b74633a --- /dev/null +++ b/views/hours.php @@ -0,0 +1,10 @@ +Days: +"> +Times: +"> + +'.print_r($options, true).''; +?> \ No newline at end of file diff --git a/views/optionsPage.php b/views/optionsPage.php new file mode 100644 index 0000000..87c657f --- /dev/null +++ b/views/optionsPage.php @@ -0,0 +1,10 @@ +
+
+

Preston Feather Locations

+ +
+
\ No newline at end of file diff --git a/views/stateSelect.php b/views/stateSelect.php new file mode 100644 index 0000000..7fd6efe --- /dev/null +++ b/views/stateSelect.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/views/text.php b/views/text.php new file mode 100644 index 0000000..2d854aa --- /dev/null +++ b/views/text.php @@ -0,0 +1,2 @@ +"> \ No newline at end of file diff --git a/views/textArea.php b/views/textArea.php new file mode 100644 index 0000000..05059ef --- /dev/null +++ b/views/textArea.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/views/vCard.php b/views/vCard.php new file mode 100644 index 0000000..52f582d --- /dev/null +++ b/views/vCard.php @@ -0,0 +1,29 @@ + +
+
+

show_option('location' . $i);?>

+

show_option('address' . $i);?>

+

show_option('city' . $i);?>, show_option('state' . $i);?> show_option('zip' . $i);?>

+

show_option('phone' . $i);?> + show_option('tfree' . $i)):?>⋅ show_option('tfree' . $i);?>

+ show_option('hours' . $i . 'a', 'days')):?> +

show_option('hours' . $i . 'a', 'days'));?>

+ + show_option('hours' . $i . 'a', 'times')):?> +

show_option('hours' . $i . 'a', 'times'));?>

+ + show_option('hours' . $i . 'b', 'days')):?> +

show_option('hours' . $i . 'b', 'days'));?>

+ + show_option('hours' . $i . 'b', 'times')):?> +

show_option('hours' . $i . 'b', 'times'));?>

+ + show_option('hours' . $i . 'c', 'days')):?> +

show_option('hours' . $i . 'c', 'days'));?>

+ + show_option('hours' . $i . 'c', 'times')):?> +

show_option('hours' . $i . 'c', 'times'));?>

+ +
+
+ -- 2.17.1