GuideRenderer.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * @link http://www.yiiframework.com/
  4. * @copyright Copyright (c) 2008 Yii Software LLC
  5. * @license http://www.yiiframework.com/license/
  6. */
  7. namespace yii\apidoc\templates\bootstrap;
  8. use Yii;
  9. use yii\apidoc\helpers\ApiIndexer;
  10. use yii\helpers\Console;
  11. use yii\helpers\FileHelper;
  12. /**
  13. *
  14. * @author Carsten Brandt <mail@cebe.cc>
  15. * @since 2.0
  16. */
  17. class GuideRenderer extends \yii\apidoc\templates\html\GuideRenderer
  18. {
  19. use RendererTrait;
  20. public $layout = '@yii/apidoc/templates/bootstrap/layouts/guide.php';
  21. /**
  22. * @inheritDoc
  23. */
  24. public function render($files, $targetDir)
  25. {
  26. $types = array_merge($this->apiContext->classes, $this->apiContext->interfaces, $this->apiContext->traits);
  27. $extTypes = [];
  28. foreach ($this->extensions as $k => $ext) {
  29. $extType = $this->filterTypes($types, $ext);
  30. if (empty($extType)) {
  31. unset($this->extensions[$k]);
  32. continue;
  33. }
  34. $extTypes[$ext] = $extType;
  35. }
  36. parent::render($files, $targetDir);
  37. if ($this->controller !== null) {
  38. $this->controller->stdout('generating search index...');
  39. }
  40. $indexer = new ApiIndexer();
  41. $indexer->indexFiles(FileHelper::findFiles($targetDir, ['only' => ['*.html']]), $targetDir);
  42. $js = $indexer->exportJs();
  43. file_put_contents($targetDir . '/jssearch.index.js', $js);
  44. if ($this->controller !== null) {
  45. $this->controller->stdout('done.' . PHP_EOL, Console::FG_GREEN);
  46. }
  47. }
  48. }