';
}
$alm_filters_page = add_submenu_page(
'ajax-load-more',
__('Filters', 'ajax-load-more'),
$before_link . ' '. __('Filters', 'ajax-load-more') . $after_link,
'edit_theme_options',
'ajax-load-more-filters',
'alm_filters_page'
);
add_action( 'load-' . $alm_filters_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_filters_page, 'alm_load_filters_admin_scripts' );
add_action( 'load-' . $alm_filters_page, 'alm_set_admin_nonce' );
}
//Add our admin scripts
add_action( 'load-' . $alm_settings_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_settings_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_template_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_template_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_shortcode_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_shortcode_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_help_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_help_page, 'alm_set_admin_nonce' );
// Pro
if(has_action('alm_pro_installed')){
add_action( 'load-' . $alm_pro_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_pro_page, 'alm_load_pro_admin_js' );
add_action( 'load-' . $alm_pro_page, 'alm_set_admin_nonce' );
} else {
add_action( 'load-' . $alm_addons_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_addons_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_go_pro_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_go_pro_page, 'alm_set_admin_nonce' );
}
add_action( 'load-' . $alm_extensions_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_extensions_page, 'alm_set_admin_nonce' );
add_action( 'load-' . $alm_licenses_page, 'alm_load_admin_js' );
add_action( 'load-' . $alm_licenses_page, 'alm_set_admin_nonce' );
}
/*
* alm_settings_page
* Settings page
*
* @since 2.0.0
*/
function alm_settings_page(){
include_once( ALM_PATH . 'admin/views/settings.php');
}
/*
* alm_repeater_page
* Custom Repeaters
*
* @since 2.0.0
*/
function alm_repeater_page(){
include_once( ALM_PATH . 'admin/views/repeater-templates.php');
}
/*
* alm_shortcode_builder_page
* Shortcode Builder
*
* @since 2.0.0
*/
function alm_shortcode_builder_page(){
include_once( ALM_PATH . 'admin/views/shortcode-builder.php');
}
/*
* alm_add_ons_page
* Ajax Load More Add-ons
*
* @since 2.0.0
*/
function alm_add_ons_page(){
include_once( ALM_PATH . 'admin/views/add-ons.php');
}
/*
* alm_extensions_ons_page
* Ajax Load More Add-ons
*
* @since 3.0.0
*/
function alm_extensions_page(){
include_once( ALM_PATH . 'admin/views/extensions.php');
}
/*
* alm_extensions_ons_page
* Ajax Load More Add-ons
*
* @since 4.0.0
*/
function alm_go_pro_page(){
include_once( ALM_PATH . 'admin/views/go-pro.php');
}
/*
* alm_example_page
* Examples Page
*
* @since 2.0.0
*/
function alm_examples_page(){
include_once( ALM_PATH . 'admin/views/examples.php');
}
/*
* alm_help_page
* Help Page (Implementation Inforgraphic)
*
* @since 2.8.7
*/
function alm_help_page(){
include_once( ALM_PATH . 'admin/views/help.php');
}
/*
* alm_licenses_page
* Ajax Load More Licenses
*
* @since 2.7.0
*/
function alm_licenses_page(){
include_once( ALM_PATH . 'admin/views/licenses.php');
}
/*
* alm_cache_page
* Cache Add-on page
*
* @since 3.6.0
*/
function alm_pro_page(){
include_once( ALM_PRO_ADMIN_PATH . 'admin/views/pro.php');
}
/*
* alm_cache_page
* Cache Add-on page
*
* @since 2.6.0
*/
function alm_cache_page(){
include_once( ALM_CACHE_ADMIN_PATH . 'admin/views/cache.php');
}
/*
* alm_filters_page
* Filters Add-on page
*
* @since 3.4.0
*/
function alm_filters_page(){
include_once( ALM_FILTERS_PATH . 'admin/functions.php');
include_once( ALM_FILTERS_PATH . 'admin/views/filters.php');
}
/**
* alm_load_admin_js
* Load Admin JS
*
* @since 2.0.15
*/
function alm_load_admin_js(){
add_action( 'admin_enqueue_scripts', 'alm_enqueue_admin_scripts' );
}
// Pro Scripts
function alm_load_pro_admin_js(){
if(class_exists('ALMPro')){
ALMPro::alm_enqueue_pro_admin_scripts();
}
}
// Cache Scripts
function alm_load_cache_admin_js(){
if(class_exists('ALMCache')){
ALMCache::alm_enqueue_cache_admin_scripts();
}
}
// Filters Scripts
function alm_load_filters_admin_scripts(){
if(class_exists('ALMFilters')){
ALMFilters::alm_enqueue_filters_admin_scripts();
}
}
/**
* alm_enqueue_admin_scripts
* Enqueue Admin JS
*
* @since 2.0.15
*/
function alm_enqueue_admin_scripts(){
// Admin CSS
wp_enqueue_style( 'alm-admin', ALM_ADMIN_URL. 'dist/css/admin.css', '', ALM_VERSION);
wp_enqueue_style( 'alm-core', ALM_URL. '/core/dist/css/ajax-load-more.css', '', ALM_VERSION);
// disable ACF select2 on ALM pages
wp_dequeue_style( 'acf-input' );
// CodeMirror Syntax Highlighting if on Repater Template page
$screen = get_current_screen();
if ( in_array( $screen->id, array( 'ajax-load-more_page_ajax-load-more-repeaters') ) ){
//CodeMirror CSS
wp_enqueue_style( 'alm-codemirror-css', ALM_ADMIN_URL. 'codemirror/lib/codemirror.css' );
//CodeMirror JS
wp_enqueue_script( 'alm-codemirror', ALM_ADMIN_URL. 'codemirror/lib/codemirror.js');
wp_enqueue_script( 'alm-codemirror-matchbrackets', ALM_ADMIN_URL. 'codemirror/addon/edit/matchbrackets.js' );
wp_enqueue_script( 'alm-codemirror-htmlmixed', ALM_ADMIN_URL. 'codemirror/mode/htmlmixed/htmlmixed.js' );
wp_enqueue_script( 'alm-codemirror-xml', ALM_ADMIN_URL. 'codemirror/mode/xml/xml.js' );
wp_enqueue_script( 'alm-codemirror-javascript', ALM_ADMIN_URL. 'codemirror/mode/javascript/javascript.js' );
wp_enqueue_script( 'alm-codemirror-mode-css', ALM_ADMIN_URL. 'codemirror/mode/css/css.js' );
wp_enqueue_script( 'alm-codemirror-clike', ALM_ADMIN_URL. 'codemirror/mode/clike/clike.js' );
wp_enqueue_script( 'alm-codemirror-php', ALM_ADMIN_URL. 'codemirror/mode/php/php.js' );
}
// Admin JS
wp_enqueue_script( 'jquery-form' );
wp_enqueue_script( 'alm-admin', ALM_ADMIN_URL. 'dist/js/admin.js', array( 'jquery' ), ALM_VERSION);
wp_enqueue_script( 'alm-shortcode-builder', ALM_ADMIN_URL. 'shortcode-builder/js/shortcode-builder.js', array( 'jquery' ), ALM_VERSION);
}
/*
* alm_save_repeater
* Repeater Save function
*
* @return response
* @since 2.0.0
* @updated 3.5
*/
function alm_save_repeater(){
if (current_user_can( 'edit_theme_options' )){
global $wpdb;
$table_name = $wpdb->prefix . "alm";
$blog_id = $wpdb->blogid;
$options = get_option( 'alm_settings' ); //Get plugin options
$nonce = $_POST["nonce"];
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' )){ // Check our nonce
die('Error - unable to verify nonce, please try again.');
}
// Get _POST Vars
$c = Trim(stripslashes($_POST["value"])); // Repeater Value
$n = Trim(stripslashes($_POST["repeater"])); // Repeater name
$t = Trim(stripslashes($_POST["type"])); // Repeater name
$a = Trim(stripslashes($_POST["alias"])); // Repeater alias
// Default
if($t === 'default'){
// Create Base Repeater Dir (alm-templates)
$base_dir = AjaxLoadMore::alm_get_repeater_path();
AjaxLoadMore::alm_mkdir($base_dir);
$f = $base_dir .'/default.php';
}
// Custom Repeaters v2
elseif($t === 'unlimited'){
// Custom Repeaters 2.5+
if(ALM_UNLIMITED_VERSION >= '2.5'){
// Get path to repeater dir (alm_templates)
$base_dir = AjaxLoadMore::alm_get_repeater_path();
AjaxLoadMore::alm_mkdir($base_dir);
$f = $base_dir .'/'. $n .'.php';
} else {
$f = ($blog_id > 1) ? ALM_UNLIMITED_PATH. 'repeaters/'. $blog_id .'/'. $n .'.php' : ALM_UNLIMITED_PATH. 'repeaters/'. $n .'.php';
}
}
// Custom Repeaters v1
else{
$f = ALM_REPEATER_PATH. 'repeaters/'.$n .'.php';
}
// Write Repeater Template
try {
$o = fopen($f, 'w+'); //Open file
if ( !$o ) {
throw new Exception(__('[Ajax Load More] Unable to open repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', 'ajax-load-more'));
}
$w = fwrite($o, $c); //Save the file
if ( !$w ) {
throw new Exception(__('[Ajax Load More] Error saving repeater template - '.$f.' - Please check your file path and ensure your server is configured to allow Ajax Load More to read and write files.', 'ajax-load-more'));
}
fclose($o); //now close it
} catch ( Exception $e ) {
// Display error message in console.
if(!isset($options['_alm_error_notices']) || $options['_alm_error_notices'] == '1'){
echo '';
}
}
// Save to database
if($t === 'default') {
$data_update = array('repeaterDefault' => "$c", 'pluginVersion' => ALM_VERSION);
$data_where = array('name' => "default");
}
elseif($t === 'unlimited'){ // Custom Repeaters v2
$table_name = $wpdb->prefix . "alm_unlimited";
$data_update = array('repeaterDefault' => "$c", 'alias' => "$a", 'pluginVersion' => ALM_UNLIMITED_VERSION);
$data_where = array('name' => $n);
}
else{ // Custom Repeaters
$data_update = array('repeaterDefault' => "$c", 'alias' => "$a", 'pluginVersion' => ALM_REPEATER_VERSION);
$data_where = array('name' => $n);
}
$wpdb->update($table_name , $data_update, $data_where);
//Our results
if($w){
echo ''. __('Template Saved Successfully', 'ajax-load-more') .'';
} else {
echo ''. __('Error Writing File', 'ajax-load-more') .'
'. __('Something went wrong and the data could not be saved.', 'ajax-load-more');
}
wp_die();
}else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_update_repeater
* Update repeater template from database
* User case: User deletes plugin, then installs again and the version has not change. Click 'Update from DB' option to load template.
*
* @return Database value
* @since 2.5.0
*/
function alm_update_repeater(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_POST["nonce"];
// Check our nonce
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' )){ // Check our nonce
die('Error - unable to verify nonce, please try again.');
}
// Get _POST Vars
$n = Trim(stripslashes($_POST["repeater"])); // Repeater name
$t = Trim(stripslashes($_POST["type"])); // Repeater type (default | unlimited)
// Get value from database
global $wpdb;
$table_name = $wpdb->prefix . "alm";
if($t === 'default') $n = 'default';
if($t === 'unlimited') $table_name = $wpdb->prefix . "alm_unlimited";
$the_repeater = $wpdb->get_var("SELECT repeaterDefault FROM " . $table_name . " WHERE name = '$n'");
echo $the_repeater; // Return repeater value
die();
} else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_get_tax_terms
* Get taxonomy terms for shortcode builder
*
* @return Taxonomy Terms
* @since 2.1.0
*/
function alm_get_tax_terms(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_GET["nonce"];
// Check our nonce, if they don't match then bounce!
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
die('Get Bounced!');
$taxonomy = (isset($_GET['taxonomy'])) ? $_GET['taxonomy'] : '';
$index = (isset($_GET['index'])) ? $_GET['index'] : '1';
$tax_args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false
);
$terms = get_terms($taxonomy, $tax_args);
$returnVal = '';
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
$returnVal .= '';
echo $returnVal;
die();
}else{
echo "No terms exist within this taxonomy
";
die();
}
} else {
echo __('You don\'t belong here.', 'ajax-load-more');
}
}
/*
* alm_layouts_dismiss
* Dismiss Add Layouts CTA in repeater templates.
*
* @since 2.8.2.1
*/
function alm_layouts_dismiss(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_POST["nonce"];
// Check our nonce, if they don't match then bounce!
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
die('Error - unable to verify nonce, please try again.');
update_option('alm_layouts_dismiss', 'true');
echo 'Success';
die();
}
}
/*
* alm_dismiss_sharing
* Dismiss sharing widget on plugin settings page.
*
* @since 2.8.2.1
*/
function alm_dismiss_sharing(){
if (current_user_can( 'edit_theme_options' )){
$nonce = $_POST["nonce"];
// Check our nonce, if they don't match then bounce!
if (! wp_verify_nonce( $nonce, 'alm_repeater_nonce' ))
die(__('Error - unable to verify nonce, please try again.', 'ajax-load-more'));
set_transient( 'alm_dismiss_sharing', 'true', YEAR_IN_SECONDS );
echo 'ALM sharing dismissed successfully.';
wp_die();
}
}
/*
* alm_filter_admin_footer_text
* Filter the WP Admin footer text only on ALM pages
*
* @since 2.12.0
*/
function alm_filter_admin_footer_text( $text ) {
$screen = alm_is_admin_screen();
if(!$screen){
return;
}
echo 'Ajax Load More is made with ♥ by Connekt | Leave a Review | Get Support';
if(!has_action('alm_pro_installed')){
echo ' | Go Pro';
}
}
/*
* admin_init
* Initiate the plugin, create our setting variables.
*
* @since 2.0.0
*/
add_action( 'admin_init', 'alm_admin_init');
function alm_admin_init(){
register_setting(
'alm-setting-group',
'alm_settings',
'alm_sanitize_settings'
);
add_settings_section(
'alm_general_settings',
'Global Settings',
'alm_general_settings_callback',
'ajax-load-more'
);
add_settings_section(
'alm_admin_settings',
'Admin Settings',
'alm_admin_settings_callback',
'ajax-load-more'
);
add_settings_field( // Container type
'_alm_container_type',
__('Container Type', 'ajax-load-more' ),
'alm_container_type_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Classnames
'_alm_classname',
__('Container Classes', 'ajax-load-more' ),
'alm_class_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Disbale CSS
'_alm_disable_css',
__('Disable CSS', 'ajax-load-more' ),
'alm_disable_css_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Btn color
'_alm_btn_color',
__('Button/Loading Style', 'ajax-load-more' ),
'alm_btn_color_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Button classes
'_alm_btn_classname',
__('Button Classes', 'ajax-load-more' ),
'alm_btn_class_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Inline CSS
'_alm_inline_css',
__('Load CSS Inline', 'ajax-load-more' ),
'alm_inline_css_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Scroll to top on load
'_alm_scroll_top',
__('Top of Page', 'ajax-load-more' ),
'_alm_scroll_top_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Uninstall
'_alm_uninstall',
__('Delete on Uninstall', 'ajax-load-more' ),
'_alm_uninstall_callback',
'ajax-load-more',
'alm_general_settings'
);
add_settings_field( // Load dynamic queries
'_alm_disable_dynamic',
__('Dynamic Content', 'ajax-load-more' ),
'alm_disable_dynamic_callback',
'ajax-load-more',
'alm_admin_settings'
);
add_settings_field( // Hide btn
'_alm_hide_btn',
__('Editor Button', 'ajax-load-more' ),
'alm_hide_btn_callback',
'ajax-load-more',
'alm_admin_settings'
);
add_settings_field( // Display error notices
'_alm_error_notices',
__('Error Notices', 'ajax-load-more' ),
'_alm_error_notices_callback',
'ajax-load-more',
'alm_admin_settings'
);
// CACHE
if(has_action('alm_cache_settings')){
do_action('alm_cache_settings');
}
// CUSTOM REPEATERS
if(has_action('alm_unlimited_settings')){
do_action('alm_unlimited_settings');
}
// FILTERS
if(has_action('alm_filters_settings')){
do_action('alm_filters_settings');
}
// LAYOUTS
if(has_action('alm_layouts_settings')){
do_action('alm_layouts_settings');
}
// PAGINATION
if(has_action('alm_paging_settings')){
do_action('alm_paging_settings');
}
// PRELOADED
if(has_action('alm_preloaded_settings')){
do_action('alm_preloaded_settings');
}
// REST API
if(has_action('alm_rest_api_settings')){
do_action('alm_rest_api_settings');
}
// SEO
if(has_action('alm_seo_settings')){
do_action('alm_seo_settings');
}
// SINGLE POST
if(has_action('alm_prev_post_settings')){
do_action('alm_prev_post_settings');
}
// THEME REPEATERS
if(has_action('alm_theme_repeaters_settings')){
do_action('alm_theme_repeaters_settings');
}
}
/*
* alm_general_settings_callback
* Some general settings text
*
* @since 2.0.0
*/
function alm_general_settings_callback() {
echo '' . __('Customize the user experience of Ajax Load More by updating the fields below.', 'ajax-load-more') . '
';
}
/*
* alm_admin_settings_callback
* Some general admin settings text
*
* @since 2.0.0
*/
function alm_admin_settings_callback() {
echo '' . __('The following settings affect the WordPress admin area only.', 'ajax-load-more') . '
';
}
/*
* alm_sanitize_settings
* Sanitize our form fields
*
* @since 2.0.0
*/
function alm_sanitize_settings( $input ) {
return $input;
}
/*
* alm_disable_css_callback
* Diabale Ajax Load More CSS.
*
* @since 2.0.0
*/
function alm_disable_css_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_disable_css']))
$options['_alm_disable_css'] = '0';
$html = '';
$html .= '';
$html .= '';
echo $html;
}
/*
* alm_hide_btn_callback
* Disbale the ALM shortcode button in the WordPress content editor
*
* @since 2.2.1
*/
function alm_hide_btn_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_hide_btn']))
$options['_alm_hide_btn'] = '0';
$html = '';
$html .= '';
echo $html;
}
/*
* _alm_error_notices_callback
* Display admin error notices in browser console.
*
* @since 2.7.2
*/
function _alm_error_notices_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_error_notices']))
$options['_alm_error_notices'] = '1';
$html = '';
$html .= '';
$html .= '';
echo $html;
}
/*
* alm_disable_dynamic_callback
* Disable the dynamic population of categories, tags and authors
*
* @since 2.6.0
*/
function alm_disable_dynamic_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_disable_dynamic']))
$options['_alm_disable_dynamic'] = '0';
$html = '';
$html .= '';
$html .= '';
echo $html;
}
/*
* alm_container_type_callback
* The type of container ul or div
*
* @since 2.0.0
*/
function alm_container_type_callback() {
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_container_type']))
$options['_alm_container_type'] = '1';
$html = '';
$html .= '
';
$html .= '';
$html .= '';
$html .= '';
echo $html;
}
/*
* alm_class_callback
* Add classes to the Ajax Load More wrapper
*
* @since 2.0.0
*/
function alm_class_callback(){
$options = get_option( 'alm_settings' );
$html = '
';
$html .= ' ';
echo $html;
}
/*
* alm_btn_color_callback
* Get button color
*
* @since 2.0.0
*/
function alm_btn_color_callback() {
$options = get_option( 'alm_settings' );
$type = $options['_alm_btn_color'];
if(!isset($type))
$options['_alm_btn_color'] = '0';
$selected0 = '';
if($type == 'default') $selected0 = 'selected="selected"';
$selected1 = '';
if($type == 'blue') $selected1 = 'selected="selected"';
$selected2 = '';
if($type == 'green') $selected2 = 'selected="selected"';
$selected3 = '';
if($type == 'red') $selected3 = 'selected="selected"';
$selected4 = '';
if($type == 'purple') $selected4 = 'selected="selected"';
$selected5 = '';
if($type == 'grey') $selected5 = 'selected="selected"';
$selected6 = '';
if($type == 'white') $selected6 = 'selected="selected"';
$selected7 = '';
if($type == 'infinite classic') $selected7 = 'selected="selected"';
$selected8 = '';
if($type == 'infinite skype') $selected8 = 'selected="selected"';
$selected9 = '';
if($type == 'infinite ring') $selected9 = 'selected="selected"';
$selected10 = '';
if($type == 'infinite fading-blocks') $selected10 = 'selected="selected"';
$selected11 = '';
if($type == 'infinite fading-circles') $selected11 = 'selected="selected"';
$selected12 = '';
if($type == 'infinite chasing-arrows') $selected12 = 'selected="selected"';
$html = '';
$html .= '';
$html .= '';
$html .= '';
$html .= '
'.__('Preview', 'ajax-load-more') .'
';
$html .= '
';
echo $html;
}
/*
* alm_inline_css_callback
* Load CSS Inline vs the head
*
* @since 3.3.1
*/
function alm_inline_css_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_inline_css']))
$options['_alm_inline_css'] = '1';
$html = '';
$html .= '';
$html .= '';
echo $html;
}
/*
* alm_btn_class_callback
* Add classes to the Ajax Load More button
*
* @since 2.4.1
*/
function alm_btn_class_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_btn_classname']))
$options['_alm_btn_classname'] = '';
$html = '';
$html .= ' ';
echo $html;
?>
';
$html .= '';
$html .= '';
echo $html;
}
/*
* _alm_uninstall_callback
* Remove all ALM data on uninstall
*
* @since 4.1.0
*/
function _alm_uninstall_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_uninstall']))
$options['_alm_uninstall'] = '0';
$html = '';
$html .= '';
$html .= '';
echo $html;
}
/*
* _alm_nonce_security_callback
* Move window to top of screen on page load
*
* @since 2.6.3
*/
function _alm_nonce_security_callback(){
$options = get_option( 'alm_settings' );
if(!isset($options['_alm_nonce_security']))
$options['_alm_nonce_security'] = '0';
$html = '';
$html .= '';
$html .= '';
echo $html;
}