<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace yii\widgets;

use Yii;
use yii\base\Widget;
use yii\helpers\Json;

/**
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class Pjax extends Widget
{
	public $links = 'a';

	public function init()
	{
		ob_start();
		ob_implicit_flush(false);
		echo '<div id="' . $this->getId() . '">';
	}

	public function run()
	{
		echo '</div>';
		$content = ob_get_clean();

		$headers = Yii::$app->getRequest()->getHeaders();
		if ($headers->get('X-Pjax') && ($selector = $headers->get('X-PJax-Container')) === '#' . $this->getId()) {
			// todo: send the response and terminate the application
		} else {
			$this->registerClientScript();
			return $content;
		}
	}

	/**
	 * Registers the needed JavaScript.
	 */
	public function registerClientScript()
	{
		$view = $this->getView();
		PjaxAsset::register($view);
		$js = 'jQuery(document).pjax("' . Json::encode($this->links) . '", "#' . $this->getId() . '");';
		$view->registerJs($js);
	}
}