public static function scaffold($app, $model, $controller) { self::try_define('APP', $app); self::try_define('CONTROLLER', $controller); if (moojon_routes::has_rest_route($model)) { $route = moojon_routes::get_rest_route($model); if (APP != $route->get_app()) { throw new moojon_exception("Scaffold app & route app must be the same (" . APP . ' != ' . $route->get_app() . ")"); } $id_property = $route->get_id_property(); } else { $id_property = moojon_primary_key::NAME; self::add_route("new moojon_rest_route('{$model}', array('app' => '" . APP . "')),"); } $swaps = array(); $swaps['plural'] = moojon_inflect::pluralize($model); $swaps['singular'] = moojon_inflect::singularize($model); $swaps['Human'] = str_replace('_', ' ', ucfirst(moojon_inflect::singularize($model))); $swaps['human'] = str_replace('_', ' ', moojon_inflect::singularize($model)); $swaps['Humans'] = str_replace('_', ' ', ucfirst(moojon_inflect::pluralize($model))); $swaps['humans'] = str_replace('_', ' ', moojon_inflect::pluralize($model)); $swaps['id_property'] = $id_property; $views_path = moojon_paths::get_project_views_app_controller_directory(APP, CONTROLLER); moojon_files::attempt_mkdir($views_path); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'controller.template', moojon_paths::get_project_controllers_app_directory(APP, CONTROLLER) . "{$controller}.controller.class.php", $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . '_form.template', $views_path . '_form.php', $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'new.view.template', $views_path . 'new.view.php', $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'delete.view.template', $views_path . 'delete.view.php', $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'index.view.template', $views_path . 'index.view.php', $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'show.view.template', $views_path . 'show.view.php', $swaps, false, true); self::run(moojon_paths::get_moojon_templates_scaffolds_directory() . 'edit.view.template', $views_path . 'edit.view.php', $swaps, false, true); }
function rest_actions(moojon_base_model $model, moojon_rest_route $route = null, $action = null, $attributes = array()) { $action = $action ? $action : strtolower(ACTION); $route = $route ? $route : moojon_routes::get_rest_route($model->get_table()); $actions = $route->get_actions(); $lis = array(); switch ($action) { case 'index': if (in_array('_new', $actions)) { $lis[] = li_tag(new_member_tag($model)); } break; case '_new': if (in_array('index', $actions)) { $lis[] = li_tag(collection_tag($model)); } break; case 'show': if (in_array('edit', $actions)) { $lis[] = li_tag(edit_member_tag($model)); } if (in_array('delete', $actions)) { $lis[] = li_tag(delete_member_tag($model)); } break; case 'edit': if (in_array('show', $actions)) { $lis[] = li_tag(member_tag($model)); } if (in_array('delete', $actions)) { $lis[] = li_tag(delete_member_tag($model)); } break; case 'delete': if (in_array('show', $actions)) { $lis[] = li_tag(member_tag($model)); } if (in_array('edit', $actions)) { $lis[] = li_tag(edit_member_tag($model)); } break; default: $lis = array(); break; } return div_tag(ul_tag($lis), $attributes); }
function get_primary_key_id_property(moojon_base_model $model) { $resource = moojon_inflect::pluralize(get_class($model)); if (moojon_routes::has_rest_route($resource)) { $rest_route = moojon_routes::get_rest_route($resource); return $rest_route->get_id_property(); } else { return moojon_primary_key::NAME; } }
private function get_relationship_routes() { $relationship_routes = array(); $model_class = moojon_inflect::singularize($this->resource); if ($path = moojon_paths::get_model_path($model_class)) { require_once $path = moojon_paths::get_model_path($model_class); $model = new $model_class(); foreach ($model->get_relationships() as $relationship) { $foreign_table = $relationship->get_foreign_table(); if (moojon_routes::has_rest_route($foreign_table)) { $relationship_route = moojon_routes::get_rest_route($foreign_table); } else { $relationship_route = new moojon_rest_route($foreign_table, array_merge($this->params, array('controller' => $foreign_table))); } $relationship_routes[] = $relationship_route; } } return $relationship_routes; }