diff options
author | Tim Almdal <tnalmdal@shaw.ca> | 2009-03-13 22:15:16 +0000 |
---|---|---|
committer | Tim Almdal <tnalmdal@shaw.ca> | 2009-03-13 22:15:16 +0000 |
commit | 74768e4cea35051b346eb8009e016f71cd02d0bf (patch) | |
tree | c3cce77d4ffa1bce1553e2edac012e61024a5622 /modules/developer/helpers/developer_task.php | |
parent | 70390e83f867716d4bc919c4937b649ce7a3fdfb (diff) |
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,
Diffstat (limited to 'modules/developer/helpers/developer_task.php')
-rw-r--r-- | modules/developer/helpers/developer_task.php | 93 |
1 files changed, 93 insertions, 0 deletions
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 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class developer_task_Core { + static function available_tasks() { + // Return empty array so nothing appears in the maintenance screen + return array(); + } + + static function create_module($task) { + $context = unserialize($task->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 |