diff --git a/extensions/apidoc/models/TypeDoc.php b/extensions/apidoc/models/TypeDoc.php index 6561fc7217..1d99217477 100644 --- a/extensions/apidoc/models/TypeDoc.php +++ b/extensions/apidoc/models/TypeDoc.php @@ -154,7 +154,7 @@ class TypeDoc extends BaseDoc { parent::__construct($reflector, $config); - $this->namespace = StringHelper::basename($this->name); + $this->namespace = StringHelper::dirname($this->name); if ($reflector === null) { return; diff --git a/extensions/apidoc/templates/html/Renderer.php b/extensions/apidoc/templates/html/Renderer.php index 97ecd974ee..df7d18eda0 100644 --- a/extensions/apidoc/templates/html/Renderer.php +++ b/extensions/apidoc/templates/html/Renderer.php @@ -96,7 +96,7 @@ abstract class Renderer extends BaseRenderer implements ViewContextInterface $this->context = $context; $dir = Yii::getAlias($this->targetDir); if (!is_dir($dir)) { - mkdir($dir); + mkdir($dir, 0777, true); } $types = array_merge($context->classes, $context->interfaces, $context->traits); @@ -166,7 +166,7 @@ abstract class Renderer extends BaseRenderer implements ViewContextInterface $links[] = Html::a( $type->name, null, - ['href' => $this->generateFileName($type->name)] + ['href' => $this->generateLink($type->name)] ) . $postfix; } } @@ -191,7 +191,7 @@ abstract class Renderer extends BaseRenderer implements ViewContextInterface if (($type = $this->context->getType($subject->definedBy)) === null) { return $subject->name; } else { - $link = $this->generateFileName($type->name); + $link = $this->generateLink($type->name); if ($subject instanceof MethodDoc) { $link .= '#' . $subject->name . '()'; } else { @@ -336,6 +336,11 @@ abstract class Renderer extends BaseRenderer implements ViewContextInterface . ' )'; } + protected function generateLink($typeName) + { + return $this->generateFileName($typeName); + } + protected function generateFileName($typeName) { return strtolower(str_replace('\\', '_', $typeName)) . '.html'; diff --git a/extensions/apidoc/templates/online/Renderer.php b/extensions/apidoc/templates/online/Renderer.php new file mode 100644 index 0000000000..cc599e12b2 --- /dev/null +++ b/extensions/apidoc/templates/online/Renderer.php @@ -0,0 +1,68 @@ + + * @since 2.0 + */ +class Renderer extends \yii\apidoc\templates\html\Renderer +{ + public $layout = false;//'@yii/apidoc/templates/offline/views/offline.php'; + public $indexView = '@yii/apidoc/templates/offline/views/index.php'; + + public $pageTitle = 'Yii Framework 2.0 API Documentation'; + + /** + * Renders a given [[Context]]. + * + * @param Context $context the api documentation context to render. + * @param Controller $controller the apidoc controller instance. Can be used to control output. + */ + public function render($context, $controller) + { + parent::render($context, $controller); + $dir = Yii::getAlias($this->targetDir); + $controller->stdout("writing packages file..."); + $packages = []; + $notNamespaced = []; + foreach(array_merge($context->classes, $context->interfaces, $context->traits) as $type) { + /** @var TypeDoc $type */ + if (empty($type->namespace)) { + $notNamespaced[] = str_replace('\\', '-', $type->name); + } else { + $packages[$type->namespace][] = str_replace('\\', '-', $type->name); + } + } + ksort($packages); + $packages = array_merge(['Not namespaced' => $notNamespaced], $packages); + foreach($packages as $name => $classes) { + sort($packages[$name]); + } + file_put_contents($dir . '/packages.txt', serialize($packages)); + $controller->stdout('done.' . PHP_EOL, Console::FG_GREEN); + } + + protected function generateLink($typeName) + { + return strtolower(str_replace('\\', '-', $typeName)); + } + + protected function generateFileName($typeName) + { + return $this->generateLink($typeName) . '.html'; + } +} \ No newline at end of file diff --git a/extensions/apidoc/templates/online/views/index.php b/extensions/apidoc/templates/online/views/index.php new file mode 100644 index 0000000000..246271c357 --- /dev/null +++ b/extensions/apidoc/templates/online/views/index.php @@ -0,0 +1,32 @@ +
Class | +Description | +
---|---|
= $this->context->typeLink($class, $class->name) ?> | += \yii\apidoc\helpers\Markdown::process($class->shortDescription, $class) ?> | +