NavigationItem: Add property $target

refs #5600
This commit is contained in:
Johannes Meyer 2015-09-21 10:18:46 +02:00
parent af3f80f873
commit 76cf01869e
3 changed files with 68 additions and 33 deletions

View File

@ -29,6 +29,22 @@ class NavigationItemForm extends Form
*/
public function createElements(array $formData)
{
$this->addElement(
'select',
'target',
array(
'allowEmpty' => true,
'label' => $this->translate('Target'),
'description' => $this->translate('The target where to open this navigation item\'s url'),
'multiOptions' => array(
'_blank' => $this->translate('New Window'),
'_next' => $this->translate('New Column'),
'_main' => $this->translate('Single Column'),
'_self' => $this->translate('Current Column')
)
)
);
$this->addElement(
'text',
'url',
@ -36,7 +52,7 @@ class NavigationItemForm extends Form
'allowEmpty' => true,
'label' => $this->translate('Url'),
'description' => $this->translate(
'The url of this navigation item. Leave blank if you only want the name being displayed.'
'The url of this navigation item. Leave blank if you only want the name being displayed'
)
)
);
@ -48,7 +64,7 @@ class NavigationItemForm extends Form
'allowEmpty' => true,
'label' => $this->translate('Icon'),
'description' => $this->translate(
'The icon of this navigation item. Leave blank if you do not want a icon being displayed.'
'The icon of this navigation item. Leave blank if you do not want a icon being displayed'
)
)
);

View File

@ -94,6 +94,13 @@ class NavigationItem implements IteratorAggregate
*/
protected $url;
/**
* This item's url target
*
* @var string
*/
protected $target;
/**
* Additional parameters for this item's url
*
@ -445,6 +452,29 @@ class NavigationItem implements IteratorAggregate
return $this;
}
/**
* Set this item's url target
*
* @param string $target
*
* @return $this
*/
public function setTarget($target)
{
$this->target = $target;
return $this;
}
/**
* Return this item's url target
*
* @return string
*/
public function getTarget()
{
return $this->target;
}
/**
* Return this item's url
*

View File

@ -28,13 +28,6 @@ class NavigationItemRenderer
*/
protected $item;
/**
* The link target
*
* @var string
*/
protected $target;
/**
* Create a new NavigationItemRenderer
*
@ -124,29 +117,6 @@ class NavigationItemRenderer
return $this->item;
}
/**
* Set the link target
*
* @param string $target
*
* @return $this
*/
public function setTarget($target)
{
$this->target = $target;
return $this;
}
/**
* Return the link target
*
* @return string
*/
public function getTarget()
{
return $this->target;
}
/**
* Render the given navigation item as HTML anchor
*
@ -175,7 +145,7 @@ class NavigationItemRenderer
'<a%s href="%s"%s>%s</a>',
$this->view()->propertiesToString($item->getAttributes()),
$this->view()->url($url, $item->getUrlParameters()),
$this->target ? ' target="' . $this->view()->escape($this->target) . '"' : '',
$this->renderTargetAttribute(),
$label
);
} else {
@ -189,4 +159,23 @@ class NavigationItemRenderer
return $content;
}
/**
* Render and return the attribute to provide a non-default target for the url
*
* @return string
*/
protected function renderTargetAttribute()
{
$target = $this->getItem()->getTarget();
if ($target === null) {
return '';
}
if (! in_array($target, array('_main', '_self', '_next'))) {
return ' target="' . $this->view()->escape($target) . '"';
}
return ' data-base-target="' . $target . '"';
}
}