commit
5fcbce1647
@ -0,0 +1,114 @@
|
|||||||
|
=== Plugin Name ===
|
||||||
|
Contributors: (this should be a list of wordpress.org userid's)
|
||||||
|
Donate link: https://kolarix.com/biztime
|
||||||
|
Tags: comments, spam
|
||||||
|
Requires at least: 3.0.1
|
||||||
|
Tested up to: 3.4
|
||||||
|
Stable tag: 4.3
|
||||||
|
License: GPLv2 or later
|
||||||
|
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
|
||||||
|
Here is a short description of the plugin. This should be no more than 150 characters. No markup here.
|
||||||
|
|
||||||
|
== Description ==
|
||||||
|
|
||||||
|
This is the long description. No limit, and you can use Markdown (as well as in the following sections).
|
||||||
|
|
||||||
|
For backwards compatibility, if this section is missing, the full length of the short description will be used, and
|
||||||
|
Markdown parsed.
|
||||||
|
|
||||||
|
A few notes about the sections above:
|
||||||
|
|
||||||
|
* "Contributors" is a comma separated list of wp.org/wp-plugins.org usernames
|
||||||
|
* "Tags" is a comma separated list of tags that apply to the plugin
|
||||||
|
* "Requires at least" is the lowest version that the plugin will work on
|
||||||
|
* "Tested up to" is the highest version that you've *successfully used to test the plugin*. Note that it might work on
|
||||||
|
higher versions... this is just the highest one you've verified.
|
||||||
|
* Stable tag should indicate the Subversion "tag" of the latest stable version, or "trunk," if you use `/trunk/` for
|
||||||
|
stable.
|
||||||
|
|
||||||
|
Note that the `readme.txt` of the stable tag is the one that is considered the defining one for the plugin, so
|
||||||
|
if the `/trunk/readme.txt` file says that the stable tag is `4.3`, then it is `/tags/4.3/readme.txt` that'll be used
|
||||||
|
for displaying information about the plugin. In this situation, the only thing considered from the trunk `readme.txt`
|
||||||
|
is the stable tag pointer. Thus, if you develop in trunk, you can update the trunk `readme.txt` to reflect changes in
|
||||||
|
your in-development version, without having that information incorrectly disclosed about the current stable version
|
||||||
|
that lacks those changes -- as long as the trunk's `readme.txt` points to the correct stable tag.
|
||||||
|
|
||||||
|
If no stable tag is provided, it is assumed that trunk is stable, but you should specify "trunk" if that's where
|
||||||
|
you put the stable version, in order to eliminate any doubt.
|
||||||
|
|
||||||
|
== Installation ==
|
||||||
|
|
||||||
|
This section describes how to install the plugin and get it working.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
1. Upload `biztime.php` to the `/wp-content/plugins/` directory
|
||||||
|
1. Activate the plugin through the 'Plugins' menu in WordPress
|
||||||
|
1. Place `<?php do_action('plugin_name_hook'); ?>` in your templates
|
||||||
|
|
||||||
|
== Frequently Asked Questions ==
|
||||||
|
|
||||||
|
= A question that someone might have =
|
||||||
|
|
||||||
|
An answer to that question.
|
||||||
|
|
||||||
|
= What about foo bar? =
|
||||||
|
|
||||||
|
Answer to foo bar dilemma.
|
||||||
|
|
||||||
|
== Screenshots ==
|
||||||
|
|
||||||
|
1. This screen shot description corresponds to screenshot-1.(png|jpg|jpeg|gif). Note that the screenshot is taken from
|
||||||
|
the /assets directory or the directory that contains the stable readme.txt (tags or trunk). Screenshots in the /assets
|
||||||
|
directory take precedence. For example, `/assets/screenshot-1.png` would win over `/tags/4.3/screenshot-1.png`
|
||||||
|
(or jpg, jpeg, gif).
|
||||||
|
2. This is the second screen shot
|
||||||
|
|
||||||
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.0 =
|
||||||
|
* A change since the previous version.
|
||||||
|
* Another change.
|
||||||
|
|
||||||
|
= 0.5 =
|
||||||
|
* List versions from most recent at top to oldest at bottom.
|
||||||
|
|
||||||
|
== Upgrade Notice ==
|
||||||
|
|
||||||
|
= 1.0 =
|
||||||
|
Upgrade notices describe the reason a user should upgrade. No more than 300 characters.
|
||||||
|
|
||||||
|
= 0.5 =
|
||||||
|
This version fixes a security related bug. Upgrade immediately.
|
||||||
|
|
||||||
|
== Arbitrary section ==
|
||||||
|
|
||||||
|
You may provide arbitrary sections, in the same format as the ones above. This may be of use for extremely complicated
|
||||||
|
plugins where more information needs to be conveyed that doesn't fit into the categories of "description" or
|
||||||
|
"installation." Arbitrary sections will be shown below the built-in sections outlined above.
|
||||||
|
|
||||||
|
== A brief Markdown Example ==
|
||||||
|
|
||||||
|
Ordered list:
|
||||||
|
|
||||||
|
1. Some feature
|
||||||
|
1. Another feature
|
||||||
|
1. Something else about the plugin
|
||||||
|
|
||||||
|
Unordered list:
|
||||||
|
|
||||||
|
* something
|
||||||
|
* something else
|
||||||
|
* third thing
|
||||||
|
|
||||||
|
Here's a link to [WordPress](http://wordpress.org/ "Your favorite software") and one to [Markdown's Syntax Documentation][markdown syntax].
|
||||||
|
Titles are optional, naturally.
|
||||||
|
|
||||||
|
[markdown syntax]: http://daringfireball.net/projects/markdown/syntax
|
||||||
|
"Markdown is what the parser uses to process much of the readme file"
|
||||||
|
|
||||||
|
Markdown uses email style notation for blockquotes and I've been told:
|
||||||
|
> Asterisks for *emphasis*. Double it up for **strong**.
|
||||||
|
|
||||||
|
`<?php code(); // goes in backticks ?>`
|
@ -0,0 +1,358 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The admin-specific functionality of the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/admin
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The admin-specific functionality of the plugin.
|
||||||
|
*
|
||||||
|
* Defines the plugin name, version, and two examples hooks for how to
|
||||||
|
* enqueue the admin-specific stylesheet and JavaScript.
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/admin
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime_Admin {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ID of this plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
* @var string $plugin_name The ID of this plugin.
|
||||||
|
*/
|
||||||
|
private $plugin_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The version of this plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
* @var string $version The current version of this plugin.
|
||||||
|
*/
|
||||||
|
private $version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the class and set its properties.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @param string $plugin_name The name of this plugin.
|
||||||
|
* @param string $version The version of this plugin.
|
||||||
|
*/
|
||||||
|
public function __construct( $plugin_name, $version ) {
|
||||||
|
|
||||||
|
$this->plugin_name = $plugin_name;
|
||||||
|
$this->version = $version;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the stylesheets for the admin area.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function enqueue_styles() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is provided for demonstration purposes only.
|
||||||
|
*
|
||||||
|
* An instance of this class should be passed to the run() function
|
||||||
|
* defined in Biztime_Loader as all of the hooks are defined
|
||||||
|
* in that particular class.
|
||||||
|
*
|
||||||
|
* The Biztime_Loader will then create the relationship
|
||||||
|
* between the defined hooks and the functions defined in this
|
||||||
|
* class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/biztime-admin.css', array(), $this->version, 'all' );
|
||||||
|
wp_enqueue_style( $this->plugin_name . '-timepicker', plugin_dir_url( __FILE__ ) . 'css/timepicker.min.css', array(), $this->version, 'all' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the JavaScript for the admin area.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function enqueue_scripts() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is provided for demonstration purposes only.
|
||||||
|
*
|
||||||
|
* An instance of this class should be passed to the run() function
|
||||||
|
* defined in Biztime_Loader as all of the hooks are defined
|
||||||
|
* in that particular class.
|
||||||
|
*
|
||||||
|
* The Biztime_Loader will then create the relationship
|
||||||
|
* between the defined hooks and the functions defined in this
|
||||||
|
* class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/biztime-admin.js', array( 'jquery' ), $this->version, false );
|
||||||
|
wp_enqueue_script( $this->plugin_name . '-timepicker', plugin_dir_url( __FILE__ ) . 'js/timepicker.min.js', array( 'jquery' ), $this->version, false );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the settings page for the admin area.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function register_settings_page() {
|
||||||
|
|
||||||
|
add_submenu_page(
|
||||||
|
'options-general.php',
|
||||||
|
__( 'Biztime', 'biztime' ),
|
||||||
|
__( 'Biztime', 'biztime' ),
|
||||||
|
'manage_options',
|
||||||
|
'biztime',
|
||||||
|
array( $this, 'display_settings_page' )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display the settings page content for the page we have created.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function display_settings_page() {
|
||||||
|
|
||||||
|
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/biztime-admin-display.php';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the settings for our settings page.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function register_settings() {
|
||||||
|
|
||||||
|
register_setting(
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
array( $this, 'biztime_register_availability' )
|
||||||
|
);
|
||||||
|
|
||||||
|
add_settings_section(
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
__('Availability', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_section' ),
|
||||||
|
$this->plugin_name . '-availability'
|
||||||
|
);
|
||||||
|
|
||||||
|
$days = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
|
||||||
|
|
||||||
|
foreach ( $days as $day ) {
|
||||||
|
add_settings_field(
|
||||||
|
$day,
|
||||||
|
__( ucfirst( $day ), 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_fields' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => $day,
|
||||||
|
'description' => __( 'Available', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
add_settings_field(
|
||||||
|
'phone-number',
|
||||||
|
__( 'Phone number', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_input' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => 'phone-number',
|
||||||
|
'description' => __('Number to be shown in modal', 'biztime' ),
|
||||||
|
'default' => __( '+01 123 4567', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
add_settings_field(
|
||||||
|
'true-msg',
|
||||||
|
__( 'Message when available', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_textarea' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => 'true-msg',
|
||||||
|
'description' => __('Message to be displayed when user visits page during available hours', 'biztime' ),
|
||||||
|
'default' => __( 'We are open!', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
add_settings_field(
|
||||||
|
'false-msg',
|
||||||
|
__( 'Message when not available', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_textarea' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => 'false-msg',
|
||||||
|
'description' => __('Message to be displayed when user visits page during unavailable hours', 'biztime' ),
|
||||||
|
'default' => __( 'We are currently closed!', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
add_settings_field(
|
||||||
|
'show-next',
|
||||||
|
__( 'Next available day', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_checkbox' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => 'show-next',
|
||||||
|
'description' => __('Show the next available day?', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
add_settings_field(
|
||||||
|
'next-msg',
|
||||||
|
__( 'Next available day message', 'biztime' ),
|
||||||
|
array( $this, 'biztime_add_availability_textarea' ),
|
||||||
|
$this->plugin_name . '-availability',
|
||||||
|
$this->plugin_name . '-availability-section',
|
||||||
|
array(
|
||||||
|
'label_for' => 'next-msg',
|
||||||
|
'description' => __('Message to be displayed with the next available day', 'biztime' ),
|
||||||
|
'default' => __( 'We are back in business on:', 'biztime' )
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Section for the settings.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function biztime_add_availability_section() {
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Availability fields, checkbox and two inputs with timepicker.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function biztime_add_availability_fields( $args ) {
|
||||||
|
|
||||||
|
$field_id = $args['label_for'];
|
||||||
|
$options = get_option( $this->plugin_name . '-availability', array(), 'no' );
|
||||||
|
$to = '';
|
||||||
|
$from = '';
|
||||||
|
|
||||||
|
if ( !empty( $options[$field_id]['check'] ) ) {
|
||||||
|
$to = !empty( $options[$field_id]['to'] ) ? esc_attr( $options[$field_id]['to'] ) : '';
|
||||||
|
$from = !empty( $options[$field_id]['from'] ) ? esc_attr( $options[$field_id]['from'] ) : '';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<input class="day-checkbox" type="checkbox" name="<?php echo $this->plugin_name . '-availability[' . $field_id . '][check]'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . '][check]'; ?>" <?php checked( !empty( $options[$field_id]['check'] ), true ); ?> />
|
||||||
|
|
||||||
|
<label class="label" for="<?php echo $this->plugin_name . '-availability[' . $field_id . '][from]'; ?>">
|
||||||
|
From:
|
||||||
|
<input class="timepicker" type="text" name="<?php echo $this->plugin_name . '-availability[' . $field_id . '][from]'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . '][from]'; ?>" value="<?php echo $from; ?>" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label class="label" for="<?php echo $this->plugin_name . '-availability[' . $field_id . '][to]'; ?>">
|
||||||
|
To:
|
||||||
|
<input class="timepicker" type="text" name="<?php echo $this->plugin_name . '-availability[' . $field_id . '][to]'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . '][to]'; ?>" value="<?php echo $to; ?>" />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Phone number input
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function biztime_add_availability_input( $args ) {
|
||||||
|
|
||||||
|
$field_id = $args['label_for'];
|
||||||
|
$field_description = $args['description'];
|
||||||
|
$field_default = $args['default'];
|
||||||
|
|
||||||
|
$options = get_option( $this->plugin_name . '-availability', array(), 'no' );
|
||||||
|
$option = $field_default;
|
||||||
|
|
||||||
|
if ( ! empty( $options[ $field_id ] ) ) {
|
||||||
|
|
||||||
|
$option = $options[ $field_id ];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<input type="text" name="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" value="<?php echo esc_attr( $option ); ?>" class="regular-text" />
|
||||||
|
<p class="description"><?php echo esc_html( $field_description ); ?></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Availability messages textarea
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function biztime_add_availability_textarea( $args ) {
|
||||||
|
|
||||||
|
$field_id = $args['label_for'];
|
||||||
|
$field_description = $args['description'];
|
||||||
|
$field_default = $args['default'];
|
||||||
|
|
||||||
|
$options = get_option( $this->plugin_name . '-availability', array(), 'no' );
|
||||||
|
$option = $field_default;
|
||||||
|
|
||||||
|
if ( ! empty( $options[ $field_id ] ) ) {
|
||||||
|
|
||||||
|
$option = $options[ $field_id ];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<textarea name="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" class="regular-text" rows="4"><?php echo esc_textarea( $option ); ?></textarea>
|
||||||
|
<p class="description"><?php echo esc_html( $field_description ); ?></p>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Next available day checkbox.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function biztime_add_availability_checkbox( $args ) {
|
||||||
|
$field_id = $args['label_for'];
|
||||||
|
$field_description = $args['description'];
|
||||||
|
$options = get_option( $this->plugin_name . '-availability', array(), 'no' );
|
||||||
|
$option = isset( $options[ $field_id ] ) ? $options[ $field_id ] : 0;
|
||||||
|
?>
|
||||||
|
|
||||||
|
<label for="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>">
|
||||||
|
<input type="checkbox" name="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" id="<?php echo $this->plugin_name . '-availability[' . $field_id . ']'; ?>" <?php checked( $option, 1 ); ?> value="1" />
|
||||||
|
<?php echo esc_html( $field_description ); ?>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* All of the CSS for your admin-specific functionality should be
|
||||||
|
* included in this file.
|
||||||
|
*/
|
||||||
|
.label {
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
.day-checkbox:checked ~ .label {
|
||||||
|
pointer-events: initial;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
.ui-timepicker-container{position:absolute;overflow:hidden;box-sizing:border-box}.ui-timepicker,.ui-timepicker-viewport{box-sizing:content-box;height:205px;display:block;margin:0}.ui-timepicker{list-style:none;padding:0 1px;text-align:center}.ui-timepicker-viewport{padding:0;overflow:auto;overflow-x:hidden}.ui-timepicker-standard{font-family:Verdana,Arial,sans-serif;font-size:1.1em;background-color:#FFF;border:1px solid #AAA;color:#222;margin:0;padding:2px}.ui-timepicker-standard a{border:1px solid transparent;color:#222;display:block;padding:.2em .4em;text-decoration:none}.ui-timepicker-standard .ui-state-hover{background-color:#DADADA;border:1px solid #999;font-weight:400;color:#212121}.ui-timepicker-standard .ui-menu-item{margin:0;padding:0}.ui-timepicker-corners,.ui-timepicker-corners .ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-timepicker-hidden{display:none}.ui-timepicker-no-scrollbar .ui-timepicker{border:none}
|
@ -0,0 +1 @@
|
|||||||
|
<?php // Silence is golden
|
@ -0,0 +1,32 @@
|
|||||||
|
(function( $ ) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All of the code for your admin-facing JavaScript source
|
||||||
|
* should reside in this file.
|
||||||
|
*
|
||||||
|
* Note: It has been assumed you will write jQuery code here, so the
|
||||||
|
* $ function reference has been prepared for usage within the scope
|
||||||
|
* of this function.
|
||||||
|
*
|
||||||
|
* This enables you to define handlers, for when the DOM is ready:
|
||||||
|
*
|
||||||
|
* $(function() {
|
||||||
|
*
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* When the window is loaded:
|
||||||
|
*
|
||||||
|
* $( window ).load(function() {
|
||||||
|
*
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* ...and/or other possibilities.
|
||||||
|
*
|
||||||
|
* Ideally, it is not considered best practise to attach more than a
|
||||||
|
* single DOM-ready or window-load handler for a particular page.
|
||||||
|
* Although scripts in the WordPress core, Plugins and Themes may be
|
||||||
|
* practising this, we should strive to set a better example in our own work.
|
||||||
|
*/
|
||||||
|
|
||||||
|
})( jQuery );
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a admin area view for the plugin
|
||||||
|
*
|
||||||
|
* This file is used to markup the admin-facing aspects of the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/admin/partials
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!-- This file should primarily consist of HTML with a little bit of PHP. -->
|
||||||
|
|
||||||
|
<div id="wrap">
|
||||||
|
<form method="post" action="options.php">
|
||||||
|
<?php
|
||||||
|
settings_fields( 'biztime-availability' );
|
||||||
|
do_settings_sections( 'biztime-availability' );
|
||||||
|
submit_button();
|
||||||
|
?>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" defer>
|
||||||
|
jQuery(document).ready(function($) {
|
||||||
|
$('.timepicker').timepicker({
|
||||||
|
timeFormat: 'h:mm p',
|
||||||
|
interval: 30,
|
||||||
|
startTime: '05:00',
|
||||||
|
dynamic: false,
|
||||||
|
dropdown: true,
|
||||||
|
scrollbar: true
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The plugin bootstrap file
|
||||||
|
*
|
||||||
|
* This file is read by WordPress to generate the plugin information in the plugin
|
||||||
|
* admin area. This file also includes all of the dependencies used by the plugin,
|
||||||
|
* registers the activation and deactivation functions, and defines a function
|
||||||
|
* that starts the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
* @package BizTime
|
||||||
|
*
|
||||||
|
* @wordpress-plugin
|
||||||
|
* Plugin Name: BizTime
|
||||||
|
* Plugin URI: https://kolarix.com/biztime
|
||||||
|
* Description: The plugin shows available times and displays different messages depending on availability.
|
||||||
|
* Version: 1.0.0
|
||||||
|
* Author: Kolarix
|
||||||
|
* Author URI: https://kolarix.com/biztime
|
||||||
|
* License: GPL-2.0+
|
||||||
|
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||||
|
* Text Domain: biztime
|
||||||
|
* Domain Path: /languages
|
||||||
|
*/
|
||||||
|
|
||||||
|
// If this file is called directly, abort.
|
||||||
|
if ( ! defined( 'WPINC' ) ) {
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Currently plugin version.
|
||||||
|
* Start at version 1.0.0 and use SemVer - https://semver.org
|
||||||
|
* Rename this for your plugin and update it as you release new versions.
|
||||||
|
*/
|
||||||
|
define( 'BIZTIME_VERSION', '1.0.0' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The code that runs during plugin activation.
|
||||||
|
* This action is documented in includes/class-biztime-activator.php
|
||||||
|
*/
|
||||||
|
function activate_biztime() {
|
||||||
|
require_once plugin_dir_path( __FILE__ ) . 'includes/class-biztime-activator.php';
|
||||||
|
Biztime_Activator::activate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The code that runs during plugin deactivation.
|
||||||
|
* This action is documented in includes/class-biztime-deactivator.php
|
||||||
|
*/
|
||||||
|
function deactivate_biztime() {
|
||||||
|
require_once plugin_dir_path( __FILE__ ) . 'includes/class-biztime-deactivator.php';
|
||||||
|
Biztime_Deactivator::deactivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
register_activation_hook( __FILE__, 'activate_biztime' );
|
||||||
|
register_deactivation_hook( __FILE__, 'deactivate_biztime' );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The core plugin class that is used to define internationalization,
|
||||||
|
* admin-specific hooks, and public-facing site hooks.
|
||||||
|
*/
|
||||||
|
require plugin_dir_path( __FILE__ ) . 'includes/class-biztime.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Begins execution of the plugin.
|
||||||
|
*
|
||||||
|
* Since everything within the plugin is registered via hooks,
|
||||||
|
* then kicking off the plugin from this point in the file does
|
||||||
|
* not affect the page life cycle.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
function run_biztime() {
|
||||||
|
|
||||||
|
$plugin = new Biztime();
|
||||||
|
$plugin->run();
|
||||||
|
|
||||||
|
}
|
||||||
|
run_biztime();
|
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired during plugin activation
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired during plugin activation.
|
||||||
|
*
|
||||||
|
* This class defines all code necessary to run during the plugin's activation.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime_Activator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Short Description. (use period)
|
||||||
|
*
|
||||||
|
* Long Description.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public static function activate() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired during plugin deactivation
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired during plugin deactivation.
|
||||||
|
*
|
||||||
|
* This class defines all code necessary to run during the plugin's deactivation.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
* @author Kolarix <hello@Kolarix.io>
|
||||||
|
*/
|
||||||
|
class Biztime_Deactivator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Short Description. (use period)
|
||||||
|
*
|
||||||
|
* Long Description.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public static function deactivate() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the internationalization functionality
|
||||||
|
*
|
||||||
|
* Loads and defines the internationalization files for this plugin
|
||||||
|
* so that it is ready for translation.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the internationalization functionality.
|
||||||
|
*
|
||||||
|
* Loads and defines the internationalization files for this plugin
|
||||||
|
* so that it is ready for translation.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime_i18n {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the plugin text domain for translation.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function load_plugin_textdomain() {
|
||||||
|
|
||||||
|
load_plugin_textdomain(
|
||||||
|
'biztime',
|
||||||
|
false,
|
||||||
|
dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages/'
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,157 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register all actions and filters for the plugin
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register all actions and filters for the plugin.
|
||||||
|
*
|
||||||
|
* Maintain a list of all hooks that are registered throughout
|
||||||
|
* the plugin, and register them with the WordPress API. Call the
|
||||||
|
* run function to execute the list of actions and filters.
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime_Loader {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of actions registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var array $actions The actions registered with WordPress to fire when the plugin loads.
|
||||||
|
*/
|
||||||
|
protected $actions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of filters registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var array $filters The filters registered with WordPress to fire when the plugin loads.
|
||||||
|
*/
|
||||||
|
protected $filters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of shortcodes registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var array $shortcodes The shortcodes registered with WordPress to fire when the plugin loads.
|
||||||
|
*/
|
||||||
|
protected $shortcodes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the collections used to maintain the actions and filters.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
|
||||||
|
$this->actions = array();
|
||||||
|
$this->filters = array();
|
||||||
|
$this->shortcodes = array();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new action to the collection to be registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @param string $hook The name of the WordPress action that is being registered.
|
||||||
|
* @param object $component A reference to the instance of the object on which the action is defined.
|
||||||
|
* @param string $callback The name of the function definition on the $component.
|
||||||
|
* @param int $priority Optional. The priority at which the function should be fired. Default is 10.
|
||||||
|
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1.
|
||||||
|
*/
|
||||||
|
public function add_action( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
|
||||||
|
$this->actions = $this->add( $this->actions, $hook, $component, $callback, $priority, $accepted_args );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new filter to the collection to be registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @param string $hook The name of the WordPress filter that is being registered.
|
||||||
|
* @param object $component A reference to the instance of the object on which the filter is defined.
|
||||||
|
* @param string $callback The name of the function definition on the $component.
|
||||||
|
* @param int $priority Optional. The priority at which the function should be fired. Default is 10.
|
||||||
|
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1
|
||||||
|
*/
|
||||||
|
public function add_filter( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
|
||||||
|
$this->filters = $this->add( $this->filters, $hook, $component, $callback, $priority, $accepted_args );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new shortcode to the collection to be registered with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @param string $hook The name of the WordPress shortcode that is being registered.
|
||||||
|
* @param object $component A reference to the instance of the object on which the shortcode is defined.
|
||||||
|
* @param string $callback The name of the function definition on the $component.
|
||||||
|
* @param int $priority Optional. he priority at which the function should be fired. Default is 10.
|
||||||
|
* @param int $accepted_args Optional. The number of arguments that should be passed to the $callback. Default is 1
|
||||||
|
*/
|
||||||
|
public function add_shortcode( $hook, $component, $callback, $priority = 10, $accepted_args = 1 ) {
|
||||||
|
$this->shortcodes = $this->add( $this->shortcodes, $hook, $component, $callback, $priority, $accepted_args );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A utility function that is used to register the actions and hooks into a single
|
||||||
|
* collection.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
* @param array $hooks The collection of hooks that is being registered (that is, actions or filters).
|
||||||
|
* @param string $hook The name of the WordPress filter that is being registered.
|
||||||
|
* @param object $component A reference to the instance of the object on which the filter is defined.
|
||||||
|
* @param string $callback The name of the function definition on the $component.
|
||||||
|
* @param int $priority The priority at which the function should be fired.
|
||||||
|
* @param int $accepted_args The number of arguments that should be passed to the $callback.
|
||||||
|
* @return array The collection of actions and filters registered with WordPress.
|
||||||
|
*/
|
||||||
|
private function add( $hooks, $hook, $component, $callback, $priority, $accepted_args ) {
|
||||||
|
|
||||||
|
$hooks[] = array(
|
||||||
|
'hook' => $hook,
|
||||||
|
'component' => $component,
|
||||||
|
'callback' => $callback,
|
||||||
|
'priority' => $priority,
|
||||||
|
'accepted_args' => $accepted_args
|
||||||
|
);
|
||||||
|
|
||||||
|
return $hooks;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the filters and actions with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function run() {
|
||||||
|
|
||||||
|
foreach ( $this->filters as $hook ) {
|
||||||
|
add_filter( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( $this->actions as $hook ) {
|
||||||
|
add_action( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( $this->shortcodes as $hook ) {
|
||||||
|
add_shortcode( $hook['hook'], array( $hook['component'], $hook['callback'] ), $hook['priority'], $hook['accepted_args'] );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,222 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The file that defines the core plugin class
|
||||||
|
*
|
||||||
|
* A class definition that includes attributes and functions used across both the
|
||||||
|
* public-facing side of the site and the admin area.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The core plugin class.
|
||||||
|
*
|
||||||
|
* This is used to define internationalization, admin-specific hooks, and
|
||||||
|
* public-facing site hooks.
|
||||||
|
*
|
||||||
|
* Also maintains the unique identifier of this plugin as well as the current
|
||||||
|
* version of the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/includes
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The loader that's responsible for maintaining and registering all hooks that power
|
||||||
|
* the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var Biztime_Loader $loader Maintains and registers all hooks for the plugin.
|
||||||
|
*/
|
||||||
|
protected $loader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The unique identifier of this plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var string $plugin_name The string used to uniquely identify this plugin.
|
||||||
|
*/
|
||||||
|
protected $plugin_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current version of the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access protected
|
||||||
|
* @var string $version The current version of the plugin.
|
||||||
|
*/
|
||||||
|
protected $version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the core functionality of the plugin.
|
||||||
|
*
|
||||||
|
* Set the plugin name and the plugin version that can be used throughout the plugin.
|
||||||
|
* Load the dependencies, define the locale, and set the hooks for the admin area and
|
||||||
|
* the public-facing side of the site.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function __construct() {
|
||||||
|
if ( defined( 'BIZTIME_VERSION' ) ) {
|
||||||
|
$this->version = BIZTIME_VERSION;
|
||||||
|
} else {
|
||||||
|
$this->version = '1.0.0';
|
||||||
|
}
|
||||||
|
$this->plugin_name = 'biztime';
|
||||||
|
|
||||||
|
$this->load_dependencies();
|
||||||
|
$this->set_locale();
|
||||||
|
$this->define_admin_hooks();
|
||||||
|
$this->define_public_hooks();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the required dependencies for this plugin.
|
||||||
|
*
|
||||||
|
* Include the following files that make up the plugin:
|
||||||
|
*
|
||||||
|
* - Biztime_Loader. Orchestrates the hooks of the plugin.
|
||||||
|
* - Biztime_i18n. Defines internationalization functionality.
|
||||||
|
* - Biztime_Admin. Defines all hooks for the admin area.
|
||||||
|
* - Biztime_Public. Defines all hooks for the public side of the site.
|
||||||
|
*
|
||||||
|
* Create an instance of the loader which will be used to register the hooks
|
||||||
|
* with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
private function load_dependencies() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class responsible for orchestrating the actions and filters of the
|
||||||
|
* core plugin.
|
||||||
|
*/
|
||||||
|
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-biztime-loader.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class responsible for defining internationalization functionality
|
||||||
|
* of the plugin.
|
||||||
|
*/
|
||||||
|
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/class-biztime-i18n.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class responsible for defining all actions that occur in the admin area.
|
||||||
|
*/
|
||||||
|
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'admin/class-biztime-admin.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class responsible for defining all actions that occur in the public-facing
|
||||||
|
* side of the site.
|
||||||
|
*/
|
||||||
|
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'public/class-biztime-public.php';
|
||||||
|
|
||||||
|
$this->loader = new Biztime_Loader();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define the locale for this plugin for internationalization.
|
||||||
|
*
|
||||||
|
* Uses the Biztime_i18n class in order to set the domain and to register the hook
|
||||||
|
* with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
private function set_locale() {
|
||||||
|
|
||||||
|
$plugin_i18n = new Biztime_i18n();
|
||||||
|
|
||||||
|
$this->loader->add_action( 'plugins_loaded', $plugin_i18n, 'load_plugin_textdomain' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register all of the hooks related to the admin area functionality
|
||||||
|
* of the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
private function define_admin_hooks() {
|
||||||
|
|
||||||
|
$plugin_admin = new Biztime_Admin( $this->get_plugin_name(), $this->get_version() );
|
||||||
|
|
||||||
|
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
|
||||||
|
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
|
||||||
|
$this->loader->add_action( 'admin_menu', $plugin_admin, 'register_settings_page' );
|
||||||
|
$this->loader->add_action( 'admin_init', $plugin_admin, 'register_settings' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register all of the hooks related to the public-facing functionality
|
||||||
|
* of the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
*/
|
||||||
|
private function define_public_hooks() {
|
||||||
|
|
||||||
|
$plugin_public = new Biztime_Public( $this->get_plugin_name(), $this->get_version() );
|
||||||
|
|
||||||
|
$this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
|
||||||
|
$this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
|
||||||
|
$this->loader->add_shortcode( 'biztime_availability_checker', $plugin_public, 'biztime_availability_checker_shortcode' );
|
||||||
|
$this->loader->add_shortcode( 'biztime_show_availability', $plugin_public,'biztime_show_availability_shortcode' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the loader to execute all of the hooks with WordPress.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function run() {
|
||||||
|
$this->loader->run();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The name of the plugin used to uniquely identify it within the context of
|
||||||
|
* WordPress and to define internationalization functionality.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @return string The name of the plugin.
|
||||||
|
*/
|
||||||
|
public function get_plugin_name() {
|
||||||
|
return $this->plugin_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The reference to the class that orchestrates the hooks with the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @return Biztime_Loader Orchestrates the hooks of the plugin.
|
||||||
|
*/
|
||||||
|
public function get_loader() {
|
||||||
|
return $this->loader;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the version number of the plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @return string The version number of the plugin.
|
||||||
|
*/
|
||||||
|
public function get_version() {
|
||||||
|
return $this->version;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<?php // Silence is golden
|
@ -0,0 +1,126 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The public-facing functionality of the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/public
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The public-facing functionality of the plugin.
|
||||||
|
*
|
||||||
|
* Defines the plugin name, version, and two examples hooks for how to
|
||||||
|
* enqueue the public-facing stylesheet and JavaScript.
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/public
|
||||||
|
* @author Kolarix <biztime@kolarix.com>
|
||||||
|
*/
|
||||||
|
class Biztime_Public {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ID of this plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
* @var string $plugin_name The ID of this plugin.
|
||||||
|
*/
|
||||||
|
private $plugin_name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The version of this plugin.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @access private
|
||||||
|
* @var string $version The current version of this plugin.
|
||||||
|
*/
|
||||||
|
private $version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the class and set its properties.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
* @param string $plugin_name The name of the plugin.
|
||||||
|
* @param string $version The version of this plugin.
|
||||||
|
*/
|
||||||
|
public function __construct( $plugin_name, $version ) {
|
||||||
|
|
||||||
|
$this->plugin_name = $plugin_name;
|
||||||
|
$this->version = $version;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the stylesheets for the public-facing side of the site.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function enqueue_styles() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is provided for demonstration purposes only.
|
||||||
|
*
|
||||||
|
* An instance of this class should be passed to the run() function
|
||||||
|
* defined in Biztime_Loader as all of the hooks are defined
|
||||||
|
* in that particular class.
|
||||||
|
*
|
||||||
|
* The Biztime_Loader will then create the relationship
|
||||||
|
* between the defined hooks and the functions defined in this
|
||||||
|
* class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/biztime-public.css', array(), $this->version, 'all' );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the JavaScript for the public-facing side of the site.
|
||||||
|
*
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public function enqueue_scripts() {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is provided for demonstration purposes only.
|
||||||
|
*
|
||||||
|
* An instance of this class should be passed to the run() function
|
||||||
|
* defined in Biztime_Loader as all of the hooks are defined
|
||||||
|
* in that particular class.
|
||||||
|
*
|
||||||
|
* The Biztime_Loader will then create the relationship
|
||||||
|
* between the defined hooks and the functions defined in this
|
||||||
|
* class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/biztime-public.js', array( 'jquery' ), $this->version, false );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function biztime_availability_checker_shortcode( $atts ) {
|
||||||
|
$options = get_option( 'biztime-availability', array(), 'no' );
|
||||||
|
$days = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
include( plugin_dir_path( __FILE__ ) . 'partials/biztime-modal-public-display.php' );
|
||||||
|
$output = ob_get_clean();
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
function biztime_show_availability_shortcode() {
|
||||||
|
$options = get_option( 'biztime-availability', array(), 'no' );
|
||||||
|
$days = array( 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday');
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
include( plugin_dir_path( __FILE__ ) . 'partials/biztime-availability-public-display.php' );
|
||||||
|
$output = ob_get_clean();
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
/**
|
||||||
|
* All of the CSS for your public-facing functionality should be
|
||||||
|
* included in this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.modal {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid hsl(230, 11%, 40%);
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0 0 10px 5px hsl(230, 11%, 40%);
|
||||||
|
margin: 10% auto;
|
||||||
|
padding: 30px;
|
||||||
|
width: 80%;
|
||||||
|
max-width: 1440px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content__wrapper {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content__wrapper p {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content__wrapper .available p {
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 2px solid hsla(119, 72%, 55%, 0.8);
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content__wrapper .available p span {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content__wrapper .not-available p{
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 2px solid hsla(0, 72.1%, 55.1%, 0.8);
|
||||||
|
margin-bottom: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-available {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#close-modal {
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-size: 36px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Available hours table */
|
||||||
|
.table-availability {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 300px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-availability tr:nth-child(odd) {
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-availability td {
|
||||||
|
text-transform: capitalize;
|
||||||
|
padding: 5px 10px;
|
||||||
|
color: #666666;
|
||||||
|
border-bottom: 1px solid #CCCCCC;
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<?php // Silence is golden
|
@ -0,0 +1,21 @@
|
|||||||
|
(function( $ ) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Modal toggling
|
||||||
|
$(document).ready(function($) {
|
||||||
|
$('#availability-modal').appendTo('body');
|
||||||
|
|
||||||
|
$('#open-modal').click(function() {
|
||||||
|
$('#availability-modal').fadeIn();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#close-modal, #modal').click(function() {
|
||||||
|
$('#availability-modal').fadeOut();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.modal-content').click(function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
})( jQuery );
|
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a public-facing view for the plugin
|
||||||
|
*
|
||||||
|
* This file is used to markup the public-facing aspects of the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/public/partials
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
|
||||||
|
<table class="table table-availability">
|
||||||
|
<caption><?php esc_html_e( 'Business hours', 'biztime' ); ?></caption>
|
||||||
|
<?php
|
||||||
|
foreach ( $days as $day ) {
|
||||||
|
$from = ! empty( $options[ $day ]['from'] ) ? esc_attr( $options[ $day ]['from'] ) : '';
|
||||||
|
$to = ! empty( $options[ $day ]['to'] ) ? esc_attr( $options[ $day ]['to'] ) : '';
|
||||||
|
echo '<tr class="table-row"><td class="col day">' . $day . '</td><td class="col from">' . $from . '</td><td class="col to">' . $to . '</td></tr>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide a public-facing view for the plugin
|
||||||
|
*
|
||||||
|
* This file is used to markup the public-facing aspects of the plugin.
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
* @subpackage BizTime/public/partials
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$current_day = strtolower(date("l"));
|
||||||
|
$current_time = date('H:i');
|
||||||
|
$is_available = false;
|
||||||
|
$true_msg = $options['true-msg'];
|
||||||
|
$false_msg = $options['false-msg'];
|
||||||
|
$show_next = $options['show-next'];
|
||||||
|
$next_msg = $options['next-msg'];
|
||||||
|
|
||||||
|
foreach ($days as $day) {
|
||||||
|
// Convert the availability range to 24 hour format
|
||||||
|
$from = date("H:i", strtotime($options[$day]['from']));
|
||||||
|
$to = date("H:i", strtotime($options[$day]['to']));
|
||||||
|
if (!empty($options[$day]['check']) && strtotime($from) <= strtotime($current_time) && strtotime($current_time) <= strtotime($to)) {
|
||||||
|
$is_available = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="checker-demo">
|
||||||
|
<button id="open-modal" type="button" class="button primary"><?php esc_html_e( 'CHECK AVAILABILITY', 'biztime' ); ?></button>
|
||||||
|
<span class="sm-grey"><?php esc_html_e( 'TO SEE A PREVIEW', 'biztime' ); ?></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="availability-modal" class="modal">
|
||||||
|
<div class="modal-content">
|
||||||
|
<span id="close-modal">×</span>
|
||||||
|
<div class="modal-content__wrapper">
|
||||||
|
<?php
|
||||||
|
if ($is_available) {
|
||||||
|
$phone_number = $options['phone-number'];
|
||||||
|
echo "<div class='available'><p>" . $true_msg . "</p><div class='only-when-available'>" . $phone_number . "</div></div>";
|
||||||
|
} else {
|
||||||
|
echo "<div class='not-available'><p>" . $false_msg . "</p></div>";
|
||||||
|
$next_day = null;
|
||||||
|
$start_searching = false;
|
||||||
|
|
||||||
|
foreach ($days as $day) {
|
||||||
|
if ($day === $current_day) {
|
||||||
|
$start_searching = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($start_searching && !empty($options[$day]['check'])) {
|
||||||
|
$next_day = $day;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if still not found, start from Monday again
|
||||||
|
if (!$next_day) {
|
||||||
|
foreach ($days as $day) {
|
||||||
|
if (!empty($options[$day]['check'])) {
|
||||||
|
$next_day = $day;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($next_day && $show_next) {
|
||||||
|
echo "<p class='next-available'>" . $next_msg . ucfirst($next_day) . " from " . $options[$next_day]['from'] . " to " . $options[$next_day]['to'] . ".</p>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<pre><br><span>Current:<?php print_r(date("l"));?>, <?php print_r(date('H:i'));?></span></pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fired when the plugin is uninstalled.
|
||||||
|
*
|
||||||
|
* When populating this file, consider the following flow
|
||||||
|
* of control:
|
||||||
|
*
|
||||||
|
* - This method should be static
|
||||||
|
* - Check if the $_REQUEST content actually is the plugin name
|
||||||
|
* - Run an admin referrer check to make sure it goes through authentication
|
||||||
|
* - Verify the output of $_GET makes sense
|
||||||
|
* - Repeat with other user roles. Best directly by using the links/query string parameters.
|
||||||
|
* - Repeat things for multisite. Once for a single site in the network, once sitewide.
|
||||||
|
*
|
||||||
|
* This file may be updated more in future version of the Boilerplate; however, this is the
|
||||||
|
* general skeleton and outline for how the file should work.
|
||||||
|
*
|
||||||
|
* For more information, see the following discussion:
|
||||||
|
* https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/pull/123#issuecomment-28541913
|
||||||
|
*
|
||||||
|
* @link https://kolarix.com/biztime
|
||||||
|
* @since 1.0.0
|
||||||
|
*
|
||||||
|
* @package BizTime
|
||||||
|
*/
|
||||||
|
|
||||||
|
// If uninstall not called from WordPress, then exit.
|
||||||
|
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||||
|
exit;
|
||||||
|
}
|
Loading…
Reference in new issue