Файл: concrete5.7.5.6/concrete/src/Attribute/View.php
Строк: 138
<?php
namespace ConcreteCoreAttribute;
use View as ConcreteView;
use Loader;
use ConcreteCoreAttributeValueValue as AttributeValue;
use ConcreteCoreAttributeKeyKey as AttributeKey;
use Environment;
use ConcreteCoreViewAbstractView;
class View extends AbstractView {
protected $attributeValue;
protected $attributeKey;
protected $attributeType;
protected $attributePkgHandle;
protected $initialViewToRender;
protected $viewToRender;
protected function getValue() {return $this->attributeValue;}
protected function getAttributeKey() {return $this->attributeKey;}
protected function constructView($mixed) {
if ($mixed instanceof AttributeValue) {
$this->attributeValue = $mixed;
$this->attributeKey = $mixed->getAttributeKey();
$this->attributeType = $mixed->getAttributeTypeObject();
} else if ($mixed instanceof AttributeKey) {
$this->attributeKey = $mixed;
$this->attributeType = $this->attributeKey->getAttributeType();
} else {
$this->attributeType = $mixed;
}
$this->attributePkgHandle = $this->attributeType->getPackageHandle();
$this->controller = $this->attributeType->getController();
$this->controller->setAttributeKey($this->attributeKey);
$this->controller->setAttributeValue($this->attributeValue);
if (is_object($this->attributeKey)) {
$this->controller->set('akID', $this->attributeKey->getAttributeKeyID());
}
}
public function start($state) {
$this->initialViewToRender = $state;
$this->viewToRender = $state;
$env = Environment::get();
$atHandle = $this->attributeType->getAttributeTypeHandle();
$r = $env->getRecord(DIRNAME_ATTRIBUTES . '/' . $atHandle . '/' . $this->viewToRender . '.php', $this->attributePkgHandle);
if ($this->initialViewToRender == 'composer' && !$r->exists()) {
$this->viewToRender = 'form';
}
}
public function startRender() {
$js = $this->attributeType->getAttributeTypeFileURL($this->viewToRender . '.js');
$css = $this->attributeType->getAttributeTypeFileURL($this->viewToRender . '.css');
$html = Loader::helper('html');
if ($js != false) {
$this->addOutputAsset($html->javascript($js));
}
if ($css != false) {
$this->addOutputAsset($html->css($css));
}
}
public function setupRender() {
$this->runControllerTask();
$atHandle = $this->attributeType->getAttributeTypeHandle();
$env = Environment::get();
$r = $env->getRecord(DIRNAME_ATTRIBUTES . '/' . $atHandle . '/' . $this->viewToRender . '.php', $this->attributePkgHandle);
$file = $r->file;
$this->setViewTemplate($file);
}
public function setupController() {
if (!$this->controller) {
$this->controller = $this->attributeType->getController();
$this->controller->setAttributeKey($this->attributeKey);
$this->controller->setAttributeValue($this->attributeValue);
if (is_object($this->attributeKey)) {
$this->controller->set('akID', $this->attributeKey->getAttributeKeyID());
}
}
}
public function runControllerTask() {
$this->controller->on_start();
$action = $this->initialViewToRender;
if ($action == 'composer' && !method_exists($this->controller, 'composer')) {
$action = 'form';
}
$this->controller->runAction($action);
$this->controller->on_before_render();
}
public function action($action) {
$uh = Loader::helper('concrete/urls');
$a = func_get_args();
$args = '';
for ($i = 1; $i < count($a); $i++) {
$args .= '&args[]=' . $a[$i];
}
$url = $uh->getToolsURL('attribute_type_actions') . '?atID=' . $this->controller->attributeType->getAttributeTypeID();
if (is_object($this->attributeKey)) {
$url .= '&akID=' . $this->attributeKey->getAttributeKeyID();
}
$url .= '&action=' . $action . $args;
return $url;
}
public function finishRender($contents) {
print $contents;
}
protected function onBeforeGetContents() {
@Loader::element(DIRNAME_ATTRIBUTES . '/' . $view . '_header', array('type' => $this->attributeType));
}
protected function onAfterGetContents() {
@Loader::element(DIRNAME_ATTRIBUTES . '/' . $view . '_footer', array('type' => $this->attributeType));
}
public function field($fieldName) {
return $this->controller->field($fieldName);
}
}