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 ++++++++++++--------- modules/atom/module.info | 3 +++ modules/comment/module.info | 3 +++ modules/forge/module.info | 3 +++ modules/gallery_unit_test/module.info | 3 +++ modules/gmaps/module.info | 3 +++ modules/info/module.info | 3 +++ modules/media_rss/module.info | 3 +++ modules/polar_rose/module.info | 3 +++ modules/rearrange/module.info | 3 +++ modules/search/module.info | 3 +++ modules/tag/module.info | 3 +++ modules/unit_test/module.info | 3 +++ modules/user/module.info | 3 +++ modules/watermark/module.info | 3 +++ 21 files changed, 116 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 create mode 100644 modules/atom/module.info create mode 100644 modules/comment/module.info create mode 100644 modules/forge/module.info create mode 100644 modules/gallery_unit_test/module.info create mode 100644 modules/gmaps/module.info create mode 100644 modules/info/module.info create mode 100644 modules/media_rss/module.info create mode 100644 modules/polar_rose/module.info create mode 100644 modules/rearrange/module.info create mode 100644 modules/search/module.info create mode 100644 modules/tag/module.info create mode 100644 modules/unit_test/module.info create mode 100644 modules/user/module.info create mode 100644 modules/watermark/module.info 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): ?> - + + diff --git a/modules/atom/module.info b/modules/atom/module.info new file mode 100644 index 00000000..d4b7898b --- /dev/null +++ b/modules/atom/module.info @@ -0,0 +1,3 @@ +name = Atom Publishing +description = Enables publishing Gallery resources in ATOM format +version = 1 diff --git a/modules/comment/module.info b/modules/comment/module.info new file mode 100644 index 00000000..08a800a6 --- /dev/null +++ b/modules/comment/module.info @@ -0,0 +1,3 @@ +name = Comments +description = Allows users and guests to leave comments on photos and albums. +version = 1 diff --git a/modules/forge/module.info b/modules/forge/module.info new file mode 100644 index 00000000..9d2387f3 --- /dev/null +++ b/modules/forge/module.info @@ -0,0 +1,3 @@ +name = Forge +description = Form generation and validation framework +version = 1 diff --git a/modules/gallery_unit_test/module.info b/modules/gallery_unit_test/module.info new file mode 100644 index 00000000..e22df5fc --- /dev/null +++ b/modules/gallery_unit_test/module.info @@ -0,0 +1,3 @@ +name = Gallery Unit Test +description = Gallery extension to the unit test framework +version = 1 diff --git a/modules/gmaps/module.info b/modules/gmaps/module.info new file mode 100644 index 00000000..32d7570f --- /dev/null +++ b/modules/gmaps/module.info @@ -0,0 +1,3 @@ +name = Google Maps +description = Integrate with the Google Maps service +version = 1 diff --git a/modules/info/module.info b/modules/info/module.info new file mode 100644 index 00000000..ce03473e --- /dev/null +++ b/modules/info/module.info @@ -0,0 +1,3 @@ +name = Info +description = Display extra information about photos and albums +version = 1 diff --git a/modules/media_rss/module.info b/modules/media_rss/module.info new file mode 100644 index 00000000..09b12c27 --- /dev/null +++ b/modules/media_rss/module.info @@ -0,0 +1,3 @@ +name = Media RSS +description = Provide a Media RSS feed for albums +version = 1 diff --git a/modules/polar_rose/module.info b/modules/polar_rose/module.info new file mode 100644 index 00000000..45d02421 --- /dev/null +++ b/modules/polar_rose/module.info @@ -0,0 +1,3 @@ +name = Polar Rose +description = Integrate Gallery with the Polar Rose facial recognition service. +version = 1 diff --git a/modules/rearrange/module.info b/modules/rearrange/module.info new file mode 100644 index 00000000..67c626b5 --- /dev/null +++ b/modules/rearrange/module.info @@ -0,0 +1,3 @@ +name = Rearrange +description = Allows users to rearrange photos and albums in their Gallery +version = 1 diff --git a/modules/search/module.info b/modules/search/module.info new file mode 100644 index 00000000..cc6f4391 --- /dev/null +++ b/modules/search/module.info @@ -0,0 +1,3 @@ +name = Search +description = Allows users to view a slideshow of photos +version = 1 diff --git a/modules/tag/module.info b/modules/tag/module.info new file mode 100644 index 00000000..562d5c32 --- /dev/null +++ b/modules/tag/module.info @@ -0,0 +1,3 @@ +name = Tags +description = Allows users to tag photos and albums +version = 1 diff --git a/modules/unit_test/module.info b/modules/unit_test/module.info new file mode 100644 index 00000000..6a2c1dee --- /dev/null +++ b/modules/unit_test/module.info @@ -0,0 +1,3 @@ +name = Unit Test +description = Unit test framework +version = 1 diff --git a/modules/user/module.info b/modules/user/module.info new file mode 100644 index 00000000..2dba517d --- /dev/null +++ b/modules/user/module.info @@ -0,0 +1,3 @@ +name = Users and Groups +description = Provides user and group management +version = 1 diff --git a/modules/watermark/module.info b/modules/watermark/module.info new file mode 100644 index 00000000..7f866695 --- /dev/null +++ b/modules/watermark/module.info @@ -0,0 +1,3 @@ +name = Watermarks +description = Allows users to watermark their photos +version = 1 -- cgit v1.2.3
NameVersionInstalledAvailable Action
core
installed ?>version ?> - - + installed): ?> + - - + +