Adjust copyrights years
<?php
/**
* SeekQuarry/Yioop --
* Open Source Pure PHP Search Engine, Crawler, and Indexer
*
* Copyright (C) 2009 - 2020 Chris Pollett chris@pollett.org
*
* LICENSE:
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* END LICENSE
*
* @author Chris Pollett chris@pollett.org
* @license https://www.gnu.org/licenses/ GPL3
* @link https://www.seekquarry.com/
* @copyright 2009 - 2020
* @filesource
*/
namespace seekquarry\yioop\views;
use seekquarry\yioop as B;
use seekquarry\yioop\configs as C;
use seekquarry\yioop\library\CrawlConstants;
use seekquarry\yioop\library\UrlParser;
use seekquarry\yioop\views\elements\Element;
/**
*
*
* @author Chris Pollett
*/
class ComponentView extends View
{
/** This view is drawn on a web layout
* @var string
*/
public $layout = "web";
/**
* Containers for Elements that this ComponentView has
* @var Array
*/
private $containers = [];
/**
*
*/
public function renderView($data)
{
$container_labels = ["top", "sub-top", "same", "opposite", "center",
"bottom"];
$css_classes = empty($data['CSS_CLASSES']) ? "" : $data['CSS_CLASSES'];
foreach ($container_labels as $container_label) {
if (!$this->emptyContainer($container_label)) {
?><div id="<?=$container_label;
?>-container" class="<?=$container_label;
?>-container <?=$css_classes?>"><?php
$this->renderContainer($container_label, $data);
?></div><?php
}
}
}
/**
* Adds an Element object to the ComponentView container so it can be
* drawn in that container later.
*
* @param string $label name of the container on this component view to
* add the element to
* @param string $element_name name of the Element (for example, for
* a GroupoptionsElement this name would be groupoptions) to
* instantiate and add to the container
*/
public function addContainer($label, $element_name)
{
if (!isset($this->containers[$label])) {
$this->containers[$label] = [];
}
$element = $this->element($element_name);
if ($element instanceof Element) {
$this->containers[$label][] = $element;
} else {
throw new InvalidArgumentException("not valid element name");
}
}
/**
* Checks if one the top, sub-top,smae, opposite, center or bottom contains
* has anything in it or not.
*
* @param string $label one of labels top, sub-top, etc
* @return bool whether that container is empty or not
*/
public function emptyContainer($label)
{
return empty($this->containers[$label]);
}
/**
* Draws one of the container labels onto the view using data provided by
* the controller
*
* @param string $label container to draw
* @param array $data field data from the controller for use during drawing
*/
public function renderContainer($label, $data)
{
if (!$this->emptyContainer($label)) {
foreach($this->containers[$label] as $element) {
$data['CONTAINER_LABEL'] = $label;
$element->render($data);
}
}
}
}