From 74768e4cea35051b346eb8009e016f71cd02d0bf Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 13 Mar 2009 22:15:16 +0000 Subject: The first incarnation of the developer tools. This allows the user to enter a module name, a description and pick the call backs and or events they want to support and generate the basic module skeleton with one click. @todo: clone a module, clone a theme, generate skeleton controller, view, --- modules/developer/helpers/developer_task.php | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 modules/developer/helpers/developer_task.php (limited to 'modules/developer/helpers/developer_task.php') diff --git a/modules/developer/helpers/developer_task.php b/modules/developer/helpers/developer_task.php new file mode 100644 index 00000000..3fff6fc2 --- /dev/null +++ b/modules/developer/helpers/developer_task.php @@ -0,0 +1,93 @@ +context); + $module_path = (MODPATH . "{$context['name']}"); + + switch ($context["step"]) { + case 0: // Create directory tree + foreach (array("", "controllers", "helpers", "js", "views") as $dir) { + $path = "$module_path/$dir"; + if (!file_exists($path)) { + mkdir($path, 0774); + } + } + break; + case 1: // Generate installer + ob_start(); + $v = new View("installer.txt"); + $v->module_name = $context['name']; + $v->callbacks = $context["theme"]; + print $v->render(); + file_put_contents("$module_path/helpers/{$context['name']}_installer.php", ob_get_contents()); + ob_end_clean(); + break; + case 2: // Generate theme helper + self::_render_helper_file($context, "theme"); + break; + case 3: // Generate block helper + self::_render_helper_file($context, "block"); + break; + case 4: // Generate menu helper + self::_render_helper_file($context, "menu"); + break; + case 5: // Generate event helper + self::_render_helper_file($context, "event"); + break; + case 6: // Generate module.info (do last) + ob_start(); + $v = new View("module_info.txt"); + $v->module_name = $context['name']; + $v->module_description = $context["description"]; + print $v->render(); + file_put_contents("$module_path/module.info", ob_get_contents()); + ob_end_clean(); + break; + } + $task->done = (++$context["step"]) >= 7; + $task->context = serialize($context); + $task->state = "success"; + $task->percent_complete = ($context["step"] / 7.0) * 100; + } + + private static function _render_helper_file($context, $helper) { + if (!empty($context[$helper])) { + $config = Kohana::config("developer.methods"); + ob_start(); + $v = new View("helpers.txt"); + $v->helper = $helper; + $v->module_name = $context['name']; + $v->callbacks = array(); + foreach ($context[$helper] as $callback) { + $v->callbacks[$callback] = $config[$helper][$callback]; + } + print $v->render(); + file_put_contents(MODPATH . "{$context['name']}/helpers/{$context['name']}_{$helper}.php", + ob_get_contents()); + ob_end_clean(); + } + } +} \ No newline at end of file -- cgit v1.2.3