1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-14 18:44:27 +02:00

Admin-ui: readParm['url'] added and other url fixes.

This commit is contained in:
Cameron
2017-03-30 13:53:06 -07:00
parent 7ab368076f
commit 525a097517
4 changed files with 103 additions and 24 deletions

View File

@@ -4008,6 +4008,67 @@ class e_form
return $text;
}
/**
* Check if a value should be linked and wrap in <a> tag if required.
* @todo global pref for the target option?
* @param mixed $value
* @param array $parms
* @param $id
* @return string
*/
private function renderLink($value, $parms, $id=null)
{
if(empty($parms['link']) && empty($parms['url']))
{
return $value;
}
$dialog = vartrue($parms['target']) =='dialog' ? " e-modal" : ""; // iframe
$ext = vartrue($parms['target']) =='blank' ? " rel='external' " : ""; // new window
$modal = vartrue($parms['target']) =='modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : "";
if(!empty($parms['url'])) // ie. use e_url.php
{
$plugin = $this->getController()->getPluginName();
$data = $this->getController()->getListModel()->getData();
$link = e107::url($plugin,$parms['url'],$data);
}
else // old way.
{
$tp = e107::getParser();
$link = str_replace('[id]',$id,$parms['link']);
$link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin.
if($parms['link'] === 'sef' && $this->getController()->getListModel())
{
$model = $this->getController()->getListModel();
if(!$model->getUrl())
{
$model->setUrl($this->getController()->getUrl());
}
// assemble the url
$link = $model->url(null);
}
elseif(!empty($data[$parms['link']])) // support for a field-name as the link. eg. link_url.
{
$data = $this->getController()->getListModel()->getData();
$link = $tp->replaceConstants(vartrue($data[$parms['link']]));
}
}
// in case something goes wrong...
if($link)
{
return "<a class='e-tip{$dialog}' {$ext} href='".$link."' {$modal} title='".LAN_EFORM_010."' >".$value."</a>";
}
return $value;
}
/**
@@ -4048,6 +4109,9 @@ class e_form
$attributes['type'] = $parms['type'];
}
$this->renderValueTrigger($field, $value, $parms, $id);
$tp = e107::getParser();
@@ -4166,11 +4230,16 @@ class e_form
}
if(!vartrue($attributes['noedit']) && vartrue($parms['editable']) && !vartrue($parms['link'])) // avoid bad markup, better solution coming up
if(empty($attributes['noedit']) && !empty($parms['editable']) && empty($parms['link'])) // avoid bad markup, better solution coming up
{
$mode = preg_replace('/[^\w]/', '', vartrue($_GET['mode'], ''));
$value = "<a class='e-tip e-editable editable-click' data-name='".$field."' title=\"".LAN_EDIT." ".$attributes['title']."\" data-type='text' data-pk='".$id."' data-url='".e_SELF."?mode={$mode}&action=inline&id={$id}&ajax_used=1' href='#'>".$value."</a>";
}
else
{
$value = $this->renderLink($value,$parms,$id);
}
$value = vartrue($parms['pre']).$value.vartrue($parms['post']);
// else same
@@ -4317,19 +4386,22 @@ class e_form
$value = defset($value, $value);
}
if(vartrue($parms['truncate']))
if(!empty($parms['truncate']))
{
$value = $tp->text_truncate($value, $parms['truncate'], '...');
}
elseif(vartrue($parms['htmltruncate']))
elseif(!empty($parms['htmltruncate']))
{
$value = $tp->html_truncate($value, $parms['htmltruncate'], '...');
}
if(vartrue($parms['wrap']))
if(!empty($parms['wrap']))
{
$value = $tp->htmlwrap($value, (int) $parms['wrap'], varset($parms['wrapChar'], ' '));
}
if(vartrue($parms['link']) && $id/* && is_numeric($id)*/)
$value = $this->renderLink($value,$parms,$id);
/*
if(!empty($parms['link']) && $id)
{
$link = str_replace('[id]', $id, $parms['link']);
$link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin.
@@ -4338,9 +4410,7 @@ class e_form
$ext = vartrue($parms['target']) == 'blank' ? " rel='external' " : ""; // new window
$modal = vartrue($parms['target']) == 'modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : "";
if($parms['link'] == 'sef' && $this->getController()
->getListModel()
)
if($parms['link'] == 'sef' && $this->getController()->getListModel())
{
$model = $this->getController()->getListModel();
// copy url config
@@ -4351,6 +4421,7 @@ class e_form
// assemble the url
$link = $model->url();
}
elseif(vartrue($data[$parms['link']])) // support for a field-name as the link. eg. link_url.
{
$link = $tp->replaceConstants(vartrue($data[$parms['link']]));
@@ -4361,7 +4432,7 @@ class e_form
{
$value = "<a class='e-tip{$dialog}' {$ext} href='" . $link . "' {$modal} title='".LAN_EFORM_010."' >" . $value . "</a>";
}
}
}*/
if(empty($value))
{
@@ -4417,7 +4488,11 @@ class e_form
{
$value = $tp->htmlwrap($value, (int)$parms['wrap'], varset($parms['wrapChar'], ' '));
}
if(vartrue($parms['link']) && $id/* && is_numeric($id)*/)
$value = $this->renderLink($value,$parms,$id);
/*
if(vartrue($parms['link']) && $id)
{
$link = str_replace('[id]',$id,$parms['link']);
$link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin.
@@ -4441,7 +4516,7 @@ class e_form
// in case something goes wrong...
if($link) $value = "<a class='e-tip{$dialog}' {$ext} href='".$link."' {$modal} title='".LAN_EFORM_010."' >".$value."</a>";
}
}*/
if(empty($value))
{
@@ -4993,6 +5068,7 @@ class e_form
//TODO - order
default:
$value = $this->renderLink($value,$parms,$id);
//unknown type
break;
}