From fe27bd1eb34efe95da6ffe8b6f6c137fe8a18306 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Mon, 22 Dec 2008 03:41:33 +0000 Subject: Change the way that we track modules. Each module now has a "module.info" file that has information about the module, including the core. We can display the installed version, and the version in the code. Also take a first shot at a modules admin page. --- core/controllers/admin_modules.php | 27 +++++++++++++++++++++++++++ core/controllers/welcome.php | 3 ++- core/helpers/core_menu.php | 2 +- core/helpers/module.php | 18 ++++++++++-------- core/module.info | 3 +++ core/views/admin_modules.html.php | 19 +++++++++++++++++++ core/views/welcome_syscheck.html.php | 21 ++++++++++++--------- 7 files changed, 74 insertions(+), 19 deletions(-) create mode 100644 core/controllers/admin_modules.php create mode 100644 core/module.info create mode 100644 core/views/admin_modules.html.php (limited to 'core') diff --git a/core/controllers/admin_modules.php b/core/controllers/admin_modules.php new file mode 100644 index 00000000..12686f87 --- /dev/null +++ b/core/controllers/admin_modules.php @@ -0,0 +1,27 @@ +available = module::available(); + return $view; + } +} + diff --git a/core/controllers/welcome.php b/core/controllers/welcome.php index d6c40850..b253f13f 100644 --- a/core/controllers/welcome.php +++ b/core/controllers/welcome.php @@ -425,12 +425,13 @@ class Welcome_Controller extends Template_Controller { $modules = module::available(); try { foreach (module::installed() as $installed_module) { - $modules[$installed_module->name] = $installed_module->version; + $modules->$installed_module->version = $installed_module->version; } } catch (Exception $e) { // The database may not be installed } ksort($modules); + return $modules; } diff --git a/core/helpers/core_menu.php b/core/helpers/core_menu.php index 5ed88700..a30151c7 100644 --- a/core/helpers/core_menu.php +++ b/core/helpers/core_menu.php @@ -78,7 +78,7 @@ class core_menu_Core { ->append(Menu::factory("link") ->id("modules") ->label(_("Modules")) - ->url("#")) + ->url("admin/modules")) ->append(Menu::factory("submenu") ->id("content_menu") ->label(_("Content"))) diff --git a/core/helpers/module.php b/core/helpers/module.php index fed01921..bb6e8dad 100644 --- a/core/helpers/module.php +++ b/core/helpers/module.php @@ -74,7 +74,7 @@ class module_Core { * @param string $module_name */ public static function is_installed($module_name) { - return in_array($module_name, self::$module_names); + return !empty(self::$module_names[$module_name]); } /** @@ -88,11 +88,13 @@ class module_Core { * Return the list of available modules. */ public static function available() { - $modules = array(); - foreach (glob(MODPATH . "*/helpers/*_installer.php") as $file) { - if (empty($modules[basename(dirname(dirname($file)))])) { - $modules[basename(dirname(dirname($file)))] = 0; - } + $modules = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); + foreach (array_merge(array("core/module.info"), glob(MODPATH . "*/module.info")) as $file) { + $module_name = basename(dirname($file)); + $modules->$module_name = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); + $modules->$module_name->installed = + empty(self::$modules[$module_name]) ? + null : self::$modules[$module_name]->version; } return $modules; @@ -152,8 +154,8 @@ class module_Core { try { foreach ($modules as $module) { - self::$module_names[] = $module->name; - self::$modules[] = $module; + self::$module_names[$module->name] = $module->name; + self::$modules[$module->name] = $module; $kohana_modules[] = MODPATH . $module->name; } diff --git a/core/module.info b/core/module.info new file mode 100644 index 00000000..ff7da82d --- /dev/null +++ b/core/module.info @@ -0,0 +1,3 @@ +name = Gallery 3 +description = Gallery core application +version = 1 diff --git a/core/views/admin_modules.html.php b/core/views/admin_modules.html.php new file mode 100644 index 00000000..d0a0f613 --- /dev/null +++ b/core/views/admin_modules.html.php @@ -0,0 +1,19 @@ + +
+ + + + + + + + $module_info): ?> + + + + + + + +
+
diff --git a/core/views/welcome_syscheck.html.php b/core/views/welcome_syscheck.html.php index e46a179b..2908f8bd 100644 --- a/core/views/welcome_syscheck.html.php +++ b/core/views/welcome_syscheck.html.php @@ -18,7 +18,7 @@
- +

Your system is ready, but Gallery is not yet installed.

@@ -32,25 +32,28 @@ - + + - + + - $module_version): ?> + $info): ?> - + + -- cgit v1.2.3
NameVersionInstalledAvailable Action
core
installed ?>version ?> - - + installed): ?> + - - + +