| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | 
							- <?php
 
- /**
 
-  * @link http://www.yiiframework.com/
 
-  * @copyright Copyright (c) 2008 Yii Software LLC
 
-  * @license http://www.yiiframework.com/license/
 
-  */
 
- namespace yii\apidoc\templates\html;
 
- use yii\apidoc\helpers\ApiMarkdown;
 
- use yii\console\Controller;
 
- use yii\helpers\Console;
 
- use yii\apidoc\renderers\GuideRenderer as BaseGuideRenderer;
 
- use Yii;
 
- use yii\helpers\Html;
 
- use yii\helpers\Markdown;
 
- use yii\web\AssetManager;
 
- use yii\web\View;
 
- /**
 
-  *
 
-  * @property View $view The view instance. This property is read-only.
 
-  *
 
-  * @author Carsten Brandt <mail@cebe.cc>
 
-  * @since 2.0
 
-  */
 
- abstract class GuideRenderer extends BaseGuideRenderer
 
- {
 
-     public $layout;
 
-     /**
 
-      * @var View
 
-      */
 
-     private $_view;
 
-     private $_targetDir;
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function init()
 
-     {
 
-         parent::init();
 
-         if ($this->pageTitle === null) {
 
-             $this->pageTitle = 'The Definitive Guide to Yii 2.0';
 
-         }
 
-     }
 
-     /**
 
-      * @return View the view instance
 
-      */
 
-     public function getView()
 
-     {
 
-         if ($this->_view === null) {
 
-             $this->_view = new View();
 
-             $assetPath = Yii::getAlias($this->_targetDir) . '/assets';
 
-             if (!is_dir($assetPath)) {
 
-                 mkdir($assetPath);
 
-             }
 
-             $this->_view->assetManager = new AssetManager([
 
-                 'basePath' => $assetPath,
 
-                 'baseUrl' => './assets',
 
-             ]);
 
-         }
 
-         return $this->_view;
 
-     }
 
-     /**
 
-      * Renders a set of files given into target directory.
 
-      *
 
-      * @param array $files
 
-      * @param string $targetDir
 
-      */
 
-     public function render($files, $targetDir)
 
-     {
 
-         $this->_targetDir = $targetDir;
 
-         $fileCount = count($files) + 1;
 
-         if ($this->controller !== null) {
 
-             Console::startProgress(0, $fileCount, 'Rendering markdown files: ', false);
 
-         }
 
-         $done = 0;
 
-         $fileData = [];
 
-         $chapters = $this->loadGuideStructure($files);
 
-         foreach ($files as $file) {
 
-             $fileData[$file] = file_get_contents($file);
 
-             if (basename($file) == 'README.md') {
 
-                 continue; // to not add index file to nav
 
-             }
 
-         }
 
-         foreach ($fileData as $file => $content) {
 
-             $output = ApiMarkdown::process($content); // TODO generate links to yiiframework.com by default
 
-             $output = $this->afterMarkdownProcess($file, $output, Markdown::$flavors['api']);
 
-             if ($this->layout !== false) {
 
-                 $params = [
 
-                     'chapters' => $chapters,
 
-                     'currentFile' => $file,
 
-                     'content' => $output,
 
-                 ];
 
-                 $output = $this->getView()->renderFile($this->layout, $params, $this);
 
-             }
 
-             $fileName = $this->generateGuideFileName($file);
 
-             file_put_contents($targetDir . '/' . $fileName, $output);
 
-             if ($this->controller !== null) {
 
-                 Console::updateProgress(++$done, $fileCount);
 
-             }
 
-         }
 
-         if ($this->controller !== null) {
 
-             Console::updateProgress(++$done, $fileCount);
 
-             Console::endProgress(true);
 
-             $this->controller->stdout('done.' . PHP_EOL, Console::FG_GREEN);
 
-         }
 
-     }
 
-     /**
 
-      * Callback that is called after markdown is processed.
 
-      *
 
-      * You may override it to do some post processing.
 
-      * The default implementation fixes some markdown links using [[fixMarkdownLinks]] on the output.
 
-      *
 
-      * @param string $file the file that has been processed.
 
-      * @param string $output the rendered HTML output.
 
-      * @param ApiMarkdown $renderer the renderer instance.
 
-      * @return string
 
-      * @since 2.0.5
 
-      */
 
-     protected function afterMarkdownProcess($file, $output, $renderer)
 
-     {
 
-         return $this->fixMarkdownLinks($output);
 
-     }
 
-     /**
 
-      * Given markdown file name generates resulting html file name
 
-      * @param string $file markdown file name
 
-      * @return string
 
-      */
 
-     protected function generateGuideFileName($file)
 
-     {
 
-         return $this->guidePrefix . basename($file, '.md') . '.html';
 
-     }
 
-     public function getGuideReferences()
 
-     {
 
-         // TODO implement for api docs
 
- //		$refs = [];
 
- //		foreach ($this->markDownFiles as $file) {
 
- //			$refName = 'guide-' . basename($file, '.md');
 
- //			$refs[$refName] = ['url' => $this->generateGuideFileName($file)];
 
- //		}
 
- //		return $refs;
 
-     }
 
-     /**
 
-      * Adds guide name to link URLs in markdown
 
-      * @param string $content
 
-      * @return string
 
-      */
 
-     protected function fixMarkdownLinks($content)
 
-     {
 
-         $content = preg_replace('/href\s*=\s*"([^"\/]+)\.md(#.*)?"/i', 'href="' . $this->guidePrefix . '\1.html\2"', $content);
 
-         return $content;
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     protected function generateLink($text, $href, $options = [])
 
-     {
 
-         $options['href'] = $href;
 
-         return Html::a($text, null, $options);
 
-     }
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function generateApiUrl($typeName)
 
-     {
 
-         return rtrim($this->apiUrl, '/') . '/' . strtolower(str_replace('\\', '-', $typeName)) . '.html';
 
-     }
 
- }
 
 
  |