diff --git a/e107_admin/library.php b/e107_admin/library.php new file mode 100644 index 000000000..e182851ff --- /dev/null +++ b/e107_admin/library.php @@ -0,0 +1,180 @@ + array( + 'controller' => 'library_list_ui', + 'path' => null, + ), + ); + + /** + * @var array + */ + protected $adminMenu = array( + 'list/libraries' => array( + 'caption' => LAN_LIBRARY_MANAGER_12, + 'perm' => 'P', + ), + ); + + /** + * @var string + */ + protected $menuTitle = LAN_LIBRARY_MANAGER_25; + +} + + +/** + * Class library_list_ui. + */ +class library_list_ui extends e_admin_ui +{ + + /** + * @var string + */ + protected $pluginTitle = LAN_LIBRARY_MANAGER_25; + + + /** + * List libraries. + */ + function librariesPage() + { + $tp = e107::getParser(); + $libraries = e107::library('info'); + + $html = ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + foreach($libraries as $machineName => $library) + { + $details = e107::library('detect', $machineName); + + if(empty($details['name'])) + { + continue; + } + + $provider = $this->getProvider($details); + $status = $this->getStatus($details); + $homepage = $this->getHomepage($details); + $download = $this->getDownload($details); + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + } + + $html .= ''; + $html .= '
' . LAN_LIBRARY_MANAGER_13 . '' . LAN_LIBRARY_MANAGER_21 . '' . LAN_LIBRARY_MANAGER_14 . '' . LAN_LIBRARY_MANAGER_18 . '' . LAN_LIBRARY_MANAGER_19 . '
' . $details['name'] . '' . $provider . '' . $details['version'] . '' . $status . '' . $details['error_message'] . '' . $homepage . ' | ' . $download . '
'; + + return '
' . $html . '
'; + } + + /** + * Helper function to get homepage link. + */ + private function getHomepage($details) + { + $href = $details['vendor_url']; + $title = $details['name']; + + return '' . LAN_LIBRARY_MANAGER_15 . ''; + } + + /** + * Helper function to get download link. + */ + private function getDownload($details) + { + $href = $details['download_url']; + $title = $details['name']; + + return '' . LAN_LIBRARY_MANAGER_16 . ''; + } + + /** + * Helper function to get provider. + */ + private function getProvider($details) + { + $provider = LAN_LIBRARY_MANAGER_24; + + if(varset($details['plugin'], false) == true) + { + $provider = LAN_LIBRARY_MANAGER_22; + } + + if(varset($details['theme'], false) == true) + { + $provider = LAN_LIBRARY_MANAGER_23; + } + + return $provider; + } + + /** + * Helper function to get status. + */ + private function getStatus($details) + { + if($details['installed'] == true) + { + return '' . LAN_OK . ''; + } + + return '' . $details['error'] . ''; + } + +} + + +new library_admin(); + +require_once(e_ADMIN . "auth.php"); +e107::getAdminUI()->runPage(); +require_once(e_ADMIN . "footer.php"); +exit; diff --git a/e107_core/templates/admin_icons_template.php b/e107_core/templates/admin_icons_template.php index 9ee81afa9..ddaa6baa2 100644 --- a/e107_core/templates/admin_icons_template.php +++ b/e107_core/templates/admin_icons_template.php @@ -146,6 +146,9 @@ if (!defined('E_32_PLUGMANAGER')) { if (!defined('E_32_MAIN')) { define('E_32_MAIN', " "); } +if (!defined('E_32_LIBMANAGER')) { + define('E_32_LIBMANAGER', " "); // TODO CSS class. +} if (!defined('E_32_THEMEMANAGER')) { define('E_32_THEMEMANAGER', " "); @@ -411,6 +414,9 @@ if (!defined('E_16_PLUGMANAGER')) { if (!defined('E_16_THEMEMANAGER')) { define('E_16_THEMEMANAGER', ""); } +if (!defined('E_16_LIBMANAGER')) { + define('E_16_LIBMANAGER', ""); // TODO CSS class. +} // Small Admin Other Images if (!defined('E_16_ADMINLOG')) { diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index bdafa7ce2..040933aa5 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -1713,7 +1713,7 @@ class e107 * $name, or FALSE if the library $name is not registered. * - In case of 'load': An associative array of the library information. */ - public static function library($action, $library) + public static function library($action = '', $library = '') { $libraryHandler = e107::getLibrary(); @@ -1726,6 +1726,10 @@ class e107 case 'load': return $libraryHandler->load($library); break; + + case 'info': + return $libraryHandler->info(); + break; } } diff --git a/e107_handlers/library_manager.php b/e107_handlers/library_manager.php index d4080ebef..379b02308 100644 --- a/e107_handlers/library_manager.php +++ b/e107_handlers/library_manager.php @@ -433,7 +433,7 @@ class e_library_manager * An associative array containing registered information for all libraries, the registered information for the * library specified by $name, or FALSE if the library $name is not registered. */ - private function &info($library = null) + public function &info($library = null) { // This static cache is re-used by detect() to save memory. static $libraries; diff --git a/e107_handlers/sitelinks_class.php b/e107_handlers/sitelinks_class.php index e0256b3e5..3f13b813f 100644 --- a/e107_handlers/sitelinks_class.php +++ b/e107_handlers/sitelinks_class.php @@ -829,7 +829,9 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; } // 35 => array('#TODO', 'System Info', 'System Information', '', 20, '', ''), 36 => array(e_ADMIN_ABS.'credits.php', LAN_CREDITS, LAN_CREDITS, '', 20, E_16_E107, E_32_E107), // 37 => array(e_ADMIN.'custom_field.php', ADLAN_161, ADLAN_162, 'U', 4, E_16_CUSTOMFIELD, E_32_CUSTOMFIELD), - 38 => array(e_ADMIN_ABS.'comment.php', LAN_COMMENTMAN, LAN_COMMENTMAN, 'B', 5, E_16_COMMENT, E_32_COMMENT) + 38 => array(e_ADMIN_ABS.'comment.php', LAN_COMMENTMAN, LAN_COMMENTMAN, 'B', 5, E_16_COMMENT, E_32_COMMENT), + + 39 => array(e_ADMIN_ABS.'library.php', ADLAN_164, ADLAN_165, 'Z', 5 , E_16_LIBMANAGER, E_32_LIBMANAGER), ); if($mode == 'legacy') diff --git a/e107_languages/English/admin/lan_admin.php b/e107_languages/English/admin/lan_admin.php index 22452335d..86974009c 100644 --- a/e107_languages/English/admin/lan_admin.php +++ b/e107_languages/English/admin/lan_admin.php @@ -182,7 +182,10 @@ define("ADLAN_159", "URL Configuration"); define("ADLAN_160", "Configure Site URLs"); define("ADLAN_161", "Custom Fields?"); define("ADLAN_162", "A newer version of your site-theme is available:"); -define("ADLAN_163", "A newer version of an installed plugin is available:"); +define("ADLAN_163", "A newer version of an installed plugin is available:"); + +define("ADLAN_164", "Library Manager"); +define("ADLAN_165", "Click here to see externally developed and distributed libraries."); // define("ADLAN_CL_1", "Settings"); define("ADLAN_CL_2", "Users"); diff --git a/e107_languages/English/lan_library_manager.php b/e107_languages/English/lan_library_manager.php index 4359c437c..2399646e8 100644 --- a/e107_languages/English/lan_library_manager.php +++ b/e107_languages/English/lan_library_manager.php @@ -16,3 +16,18 @@ define('LAN_LIBRARY_MANAGER_08', 'incompatible dependency'); define('LAN_LIBRARY_MANAGER_09', 'not found'); define('LAN_LIBRARY_MANAGER_10', 'not detected'); define('LAN_LIBRARY_MANAGER_11', 'not supported'); + +define('LAN_LIBRARY_MANAGER_12', 'List'); +define('LAN_LIBRARY_MANAGER_13', 'Library'); +define('LAN_LIBRARY_MANAGER_14', 'Version'); +define('LAN_LIBRARY_MANAGER_15', 'Homepage'); +define('LAN_LIBRARY_MANAGER_16', 'Download'); +define('LAN_LIBRARY_MANAGER_17', 'Installed'); +define('LAN_LIBRARY_MANAGER_18', 'Status'); +define('LAN_LIBRARY_MANAGER_19', 'Message'); +define('LAN_LIBRARY_MANAGER_20', 'link'); +define('LAN_LIBRARY_MANAGER_21', 'Provider'); +define('LAN_LIBRARY_MANAGER_22', 'plugin'); +define('LAN_LIBRARY_MANAGER_23', 'theme'); +define('LAN_LIBRARY_MANAGER_24', 'core'); +define('LAN_LIBRARY_MANAGER_25', 'Library Manager');