/** * display plugin row */ public function display_rows() { $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array()); $plugins_group_titles = array('Performance' => _x('Performance', 'Plugin installer group title'), 'Social' => _x('Social', 'Plugin installer group title'), 'Tools' => _x('Tools', 'Plugin installer group title')); $group = null; foreach ((array) $this->items as $plugin) { if (is_object($plugin)) { $plugin = (array) $plugin; } if (isset($plugin['desc'])) { $plugin['description'] = $plugin['desc']; } else { $plugin['description'] = ''; } //author if (!isset($plugin['author'])) { $plugin['author'] = 'Hoangweb'; } // Display the group heading if there is one /*if ( isset( $plugin['group'] ) && $plugin['group'] != $group ) { if ( isset( $this->groups[ $plugin['group'] ] ) ) { $group_name = $this->groups[ $plugin['group'] ]; if ( isset( $plugins_group_titles[ $group_name ] ) ) { $group_name = $plugins_group_titles[ $group_name ]; } } else { $group_name = $plugin['group']; } // Starting a new group, close off the divs of the last one if ( ! empty( $group ) ) { echo '</div></div>'; } echo '<div class="plugin-group"><h3>' . esc_html( $group_name ) . '</h3>'; // needs an extra wrapping div for nth-child selectors to work echo '<div class="plugin-items">'; $group = $plugin['group']; }*/ $title = wp_kses($plugin['name'], $plugins_allowedtags); // Remove any HTML from the description. $description = strip_tags($plugin['description']); $version = wp_kses($plugin['version'], $plugins_allowedtags); $name = strip_tags($title . ' ' . $version); $author = wp_kses($plugin['author'], $plugins_allowedtags); if (!empty($author)) { $author = ' <cite>' . sprintf(__('By %s'), $author) . '</cite>'; } $action_links = array(); if (current_user_can('install_plugins') || current_user_can('update_plugins')) { $status = _install_plugin_install_status($plugin); $nonce = wp_create_nonce('install-module_' . $plugin['slug']); $status['url'] = '?page=hw_install_module&action=install-module&module=' . $plugin['slug'] . '&_wpnonce=' . $nonce; //by hoangweb switch ($status['status']) { case 'install': if ($status['url']) { /* translators: 1: Plugin name and version. */ $action_links[] = '<a class="install-now button" data-slug="' . esc_attr($plugin['slug']) . '" href="' . esc_url($status['url']) . '" aria-label="' . esc_attr(sprintf(__('Install %s now'), $name)) . '" data-name="' . esc_attr($name) . '">' . __('Install Now') . '</a>'; } break; case 'update_available': if ($status['url']) { /* translators: 1: Plugin name and version */ $action_links[] = '<a class="update-now button" data-plugin="' . esc_attr($status['file']) . '" data-slug="' . esc_attr($plugin['slug']) . '" href="' . esc_url($status['url']) . '" aria-label="' . esc_attr(sprintf(__('Update %s now'), $name)) . '" data-name="' . esc_attr($name) . '">' . __('Update Now') . '</a>'; } break; case 'latest_installed': case 'newer_installed': $action_links[] = '<span class="button button-disabled" title="' . esc_attr__('This plugin is already installed and is up to date') . ' ">' . _x('Installed', 'plugin') . '</span>'; break; } } $details_link = HW_ADMIN_URL . ('/module-install.php?tab=module-information&module=' . $plugin['slug'] . '&TB_iframe=true&width=600&height=550&_root=' . base64_encode(ABSPATH)); //$module_info = HW_ADMIN_URL. '/module-install.php?tab=module-information&module='.$module['slug'].'&TB_iframe=true&width=772&height=641&_root='. base64_encode((ABSPATH)); /* translators: 1: Plugin name and version. */ $action_links[] = '<a href="' . esc_url($details_link) . '" class="thickbox" aria-label="' . esc_attr(sprintf(__('More information about %s'), $name)) . '" data-title="' . esc_attr($name) . '">' . __('More Details') . '</a>'; if (!empty($plugin['icons']['svg'])) { $plugin_icon_url = $plugin['icons']['svg']; } elseif (!empty($plugin['icons']['2x'])) { $plugin_icon_url = $plugin['icons']['2x']; } elseif (!empty($plugin['icons']['1x'])) { $plugin_icon_url = $plugin['icons']['1x']; } else { if (!empty($plugin['icons']['default'])) { $plugin_icon_url = $plugin['icons']['default']; } else { $plugin_icon_url = HW_HOANGWEB_IMAGES . '/module-box.png'; } } /** * Filter the install action links for a plugin. * * @since 2.7.0 * * @param array $action_links An array of plugin action hyperlinks. Defaults are links to Details and Install Now. * @param array $plugin The plugin currently being listed. */ $action_links = apply_filters('hw_module_install_action_links', $action_links, $plugin); $date_format = __('M j, Y @ H:i'); //$last_updated_timestamp = strtotime( $plugin['last_updated'] ); ?> <div class="plugin-card module-box module-repository plugin-card-<?php echo sanitize_html_class($plugin['slug']); ?> "> <div class="plugin-card-top"> <a href="<?php echo esc_url($details_link); ?> " class="thickbox plugin-icon"><img src="<?php echo esc_attr($plugin_icon_url); ?> " /></a> <div class="name column-name"> <h4><a href="<?php echo esc_url($details_link); ?> " class="thickbox"><?php echo $title; ?> </a></h4> </div> <div class="action-links"> <?php if ($action_links) { echo '<ul class="plugin-action-buttons"><li>' . implode('</li><li>', $action_links) . '</li></ul>'; } ?> </div> <div class="desc column-description"> <p><?php echo $description; ?> </p> <p class="authors"><?php echo $author; ?> </p> </div> </div> <div class="plugin-card-bottom"> <div class="vers column-rating"> </div> <div class="column-updated"> </div> <div class="column-downloaded"> </div> </div> </div> <?php } // Close off the group divs of the last one /*if ( ! empty( $group ) ) { echo '</div></div>'; }*/ }
/** * Display plugin information in dialog box form. * @hook install_plugins_pre_plugin-information */ function hw_install_module_information() { global $tab; if (empty($_REQUEST['module'])) { return; } $api = modules_api('module_information', array('slug' => wp_unslash($_REQUEST['module']), 'is_ssl' => is_ssl(), 'fields' => array('banners' => true, 'reviews' => true, 'downloaded' => false, 'active_installs' => true))); //for testing $api = (object) array('name' => 'HW YARPP', 'version' => '1.0', 'author' => 'hoangweb', 'slug' => 'hw-yarpp', 'last_updated' => time()); if (is_wp_error($api)) { wp_die($api); } $plugins_section_titles = array('description' => _x('Description', 'Plugin installer section title'), 'installation' => _x('Installation', 'Plugin installer section title')); $section = 'description'; // Default to the Description tab, $_tab = 'plugin-information'; //esc_attr( $tab ); because avaiable exists css for 'plugin-information' iframe_header(__('HW Module Install')); echo '<div id="plugin-information-scrollable">'; echo "<div id='{$_tab}-title' class=''><div class='vignette'></div><h2>{$api->name}</h2></div>"; //tabs echo "<div id='{$_tab}-tabs' class=''>\n"; echo "<a href='#' class=''>Tab</a>"; echo "<a href='#' class=''>Tab 1</a>"; echo "</div>\n"; $date_format = __('M j, Y @ H:i'); $last_updated_timestamp = strtotime($api->last_updated); ?> <div id="<?php echo $_tab; ?> -content" class='<?php ?> '> <!-- right info --> <div class="fyi"> <ul> <?php if (!empty($api->version)) { ?> <li><strong><?php _e('Version:'); ?> </strong> <?php echo $api->version; ?> </li> <?php } if (!empty($api->author)) { ?> <li><strong><?php _e('Author:'); ?> </strong> <?php echo links_add_target($api->author, '_blank'); ?> </li> <?php } if (!empty($api->last_updated)) { ?> <li><strong><?php _e('Last Updated:'); ?> </strong> <span title="<?php echo esc_attr(date_i18n($date_format, $last_updated_timestamp)); ?> "> <?php printf(__('%s ago'), human_time_diff($last_updated_timestamp)); ?> </span></li> <?php } if (!empty($api->slug) && empty($api->external)) { ?> <li><a target="_blank" href="https://develop.hoangweb.com/plugins/<?php echo $api->slug; ?> /"><?php _e('Hoangweb.com Plugin Page »'); ?> </a></li> <?php } ?> </ul> </div> <!-- tabs content --> <div id="section-holder" class="wrap"> <?php if (!empty($api->sections)) { foreach ((array) $api->sections as $section_name => $content) { $content = links_add_base_url($content, 'https://develop.hoangweb.com/modules/' . $api->slug . '/'); $content = links_add_target($content, '_blank'); $san_section = esc_attr($section_name); $display = $section_name === $section ? 'block' : 'none'; echo "\t<div id='section-{$san_section}' class='section' style='display: {$display};'>\n"; echo $content; echo "\t</div>\n"; } } ?> </div> </div> <?php echo '</div>'; #plugin-information-scrollable echo "<div id='{$tab}-footer'>\n"; if (!empty($api->download_link) && (current_user_can('install_plugins') || current_user_can('update_plugins'))) { $status = _install_plugin_install_status($api); switch ($status['status']) { case 'install': if ($status['url']) { echo '<a class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __('Install Now') . '</a>'; } break; case 'update_available': if ($status['url']) { echo '<a data-slug="' . esc_attr($api->slug) . '" id="plugin_update_from_iframe" class="button button-primary right" href="' . $status['url'] . '" target="_parent">' . __('Install Update Now') . '</a>'; } break; } } echo "</div>\n"; iframe_footer(); exit; }