public static function uri($item = NULL, $action = NULL) { $route_name = 'tart'; if ($item instanceof Jam_Validated) { $params = array('controller' => Inflector::plural($item->meta()->model())); if ($item->loaded()) { $params['id'] = $item->id(); } if (is_array($action)) { $params = Arr::merge($params, $action); } elseif ($action) { $params['action'] = $action; } if (!$action or is_array($action) and !isset($action['action'])) { $params['action'] = $item->loaded() ? 'edit' : 'new'; } $params['category'] = Arr::get($params, 'category', Tart::category($params['controller'])); if ($params['category']) { $route_name = 'tart_category'; } return Route::url($route_name, $params); } else { $params = array('controller' => $item); if (is_array($action)) { $params = Arr::merge($params, $action); } elseif ($action) { $params['action'] = $action; } $params['category'] = Arr::get($params, 'category', Tart::category($params['controller'])); if ($params['category']) { $route_name = 'tart_category'; } return Route::url($route_name, $params); } }