mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 07:00:29 +01:00
774 lines
24 KiB
PHP
774 lines
24 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||
|
*
|
||
|
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
||
|
*
|
||
|
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
||
|
*
|
||
|
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
||
|
* to obtain the text of the corresponding license version.
|
||
|
*
|
||
|
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
||
|
*/
|
||
|
?>
|
||
|
<?php
|
||
|
|
||
|
/****************************************************************************
|
||
|
1. zu jedem Template muss es in einem anderen Template eine Variable geben
|
||
|
in htmlheader.tpl PAGE fuer page.tpl
|
||
|
****************************************************************************/
|
||
|
|
||
|
/// represent a template (file.tpl)
|
||
|
class ThemeTemplate {
|
||
|
var $NAME; //Name des Templates
|
||
|
var $PATH; //PFAD des Templates
|
||
|
var $parsed; //Zustand
|
||
|
var $ORIGINAL; //Parse - Text Vorlage
|
||
|
var $VARS; //assoziatives Array mit Variablennamen als Index
|
||
|
var $Elements;
|
||
|
var $vararraycreated;
|
||
|
function __construct($_path, $_file){
|
||
|
|
||
|
/*
|
||
|
$fp=@fopen($_path.$_file,"r");
|
||
|
if($fp){
|
||
|
if(filesize($_path.$_file)>0)
|
||
|
$contents = fread ($fp, filesize($_path.$_file));
|
||
|
fclose($fp);
|
||
|
}*/
|
||
|
$this->vararraycreated = false;
|
||
|
$this->PATH=$_path;
|
||
|
$this->NAME=$_file;
|
||
|
$this->readFile();
|
||
|
}
|
||
|
|
||
|
function readFile()
|
||
|
{
|
||
|
$_path = $this->PATH;
|
||
|
$_file = $this->NAME;
|
||
|
$fp=@fopen($_path.$_file,"r");
|
||
|
if($fp){
|
||
|
if(filesize($_path.$_file)>0)
|
||
|
$contents = fread ($fp, filesize($_path.$_file));
|
||
|
fclose($fp);
|
||
|
}
|
||
|
$this->ORIGINAL=isset($contents)?$contents:'';
|
||
|
//$this->CreateVarArray();
|
||
|
}
|
||
|
|
||
|
|
||
|
function CreateVarArray(){
|
||
|
$this->vararraycreated = true;
|
||
|
$this->SetVar("",'');
|
||
|
$pattern = '/((\[[A-Z0-9_]+\]))/';
|
||
|
preg_match_all($pattern,$this->ORIGINAL,$matches, PREG_OFFSET_CAPTURE);
|
||
|
if(!$matches)return;
|
||
|
//TODO Parser umbauen, damit Variablen nicht doppelt genommen werden.
|
||
|
if(count($matches[0]) > 0)
|
||
|
{
|
||
|
$cmatches = count($matches[0]);
|
||
|
for($i=0;$i<$cmatches;$i++)
|
||
|
{
|
||
|
$this->Elements[$i]['before'] = substr($this->ORIGINAL, $i==0?0:($matches[0][$i-1][1] +strlen($matches[0][$i-1][0]) ), $matches[0][$i][1] - ($i==0 ?0 : ($matches[0][$i-1][1]+strlen($matches[0][$i-1][0])) ) );
|
||
|
$this->Elements[$i]['el'] = $matches[0][$i][0];
|
||
|
$this->Elements[$i]['el'] = str_replace('[','',$this->Elements[$i]['el']);
|
||
|
$this->Elements[$i]['el'] = str_replace(']','',$this->Elements[$i]['el']);
|
||
|
if($i > 0)$this->Elements[$i-1]['nach'] = $this->Elements[$i]['before'];
|
||
|
}
|
||
|
$this->Elements[count($matches[0])-1]['nach'] = substr($this->ORIGINAL, $matches[0][count($matches[0])-1][1]+strlen($matches[0][count($matches[0])-1][0]));
|
||
|
for($i=0;$i<$cmatches;$i++)
|
||
|
{
|
||
|
$matches[0][$i][0] = str_replace('[','',$matches[0][$i][0]);
|
||
|
$matches[0][$i][0] = str_replace(']','',$matches[0][$i][0]);
|
||
|
if(!isset($this->VARS[$matches[0][$i][0]]))
|
||
|
{
|
||
|
$this->SetVar($matches[0][$i][0],'');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function Parsed()
|
||
|
{
|
||
|
return 1;
|
||
|
if($this->parsed!=1)
|
||
|
{
|
||
|
$fp=@fopen($this->PATH.$this->NAME,"r");
|
||
|
if($fp){
|
||
|
$contents = fread ($fp, filesize($this->PATH.$this->FILE));
|
||
|
fclose($fp);
|
||
|
}
|
||
|
$this->ORIGINAL=$contents;
|
||
|
$this->CreateVarArray();
|
||
|
|
||
|
}
|
||
|
$this->parsed=1;
|
||
|
}
|
||
|
|
||
|
function AddVar($_var, $_value){ $this->VARS[$_var]=$this->VARS[$_var].$_value; }
|
||
|
function SetVar($_var, $_value){ $this->VARS[$_var]=$_value; }
|
||
|
|
||
|
}
|
||
|
|
||
|
/*********************** Class PcmsTemplate ****************************/
|
||
|
/// Main Parser for building the html skin (gui)
|
||
|
class TemplateParser {
|
||
|
var $TEMPLATELIST;
|
||
|
var $VARARRAY;
|
||
|
var $VARVARARRAY;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* TemplateParser constructor.
|
||
|
*
|
||
|
* @param Application $app
|
||
|
*/
|
||
|
public function __construct($app){
|
||
|
$this->app = $app;
|
||
|
$this->TEMPLATELIST=null;
|
||
|
$this->VARVARARRAY = null;
|
||
|
}
|
||
|
|
||
|
public function htmlspecialchars($value)
|
||
|
{
|
||
|
$value = str_replace(array('ö','ä','ü','Ö','&Auuml;','Ü','ß'),array('ö','ä','ü','Ö','Ä','Ü','ß'),$value);
|
||
|
$value = htmlspecialchars($value);
|
||
|
return $value;
|
||
|
}
|
||
|
|
||
|
public function addTextLink($_var, $link, $text, $target = null)
|
||
|
{
|
||
|
$ret = '<a href="'.$link.'"'.($target?' target="'.$target.'"':'').'>'.$this->htmlspecialchars($text).'</a>';
|
||
|
if($_var === 'return')
|
||
|
{
|
||
|
return $ret;
|
||
|
}
|
||
|
return $this->Add($_var, $ret);
|
||
|
}
|
||
|
|
||
|
public function addInput($_var, $value, $type = 'text', $class = '', $id = '', $name = '')
|
||
|
{
|
||
|
$options = array('type'=>$type);
|
||
|
if($id != '')
|
||
|
{
|
||
|
$options['id'] = $id;
|
||
|
}
|
||
|
if($name != '')
|
||
|
{
|
||
|
$options['name'] = $name;
|
||
|
}
|
||
|
return $this->addButton($_var, $value, null, null, $class, $options);
|
||
|
}
|
||
|
|
||
|
public function addMessage($class, $text, $html = false, $_var = 'MESSAGE')
|
||
|
{
|
||
|
$ret = '';
|
||
|
switch($class)
|
||
|
{
|
||
|
case 'error':
|
||
|
case 'warning':
|
||
|
case 'info':
|
||
|
|
||
|
break;
|
||
|
default:
|
||
|
$class = 'info';
|
||
|
break;
|
||
|
}
|
||
|
if(!$html)
|
||
|
{
|
||
|
$text = $this->htmlspecialchars($text);
|
||
|
}
|
||
|
$ret .= '<div class="'.$class.'">'.$text.'</div>';
|
||
|
if($_var === 'return')
|
||
|
{
|
||
|
return $ret;
|
||
|
}
|
||
|
return $this->app->Tpl->Add($_var, $ret);
|
||
|
}
|
||
|
|
||
|
public function addSelect($_var, $id, $name, $options, $selected = '', $class = '')
|
||
|
{
|
||
|
$extra = '';
|
||
|
foreach(array('id','name','class') as $k)
|
||
|
{
|
||
|
if($$k != '')
|
||
|
{
|
||
|
$extra .= ' '.$k.'="'.str_replace('"','"',$$k).'"';
|
||
|
}
|
||
|
}
|
||
|
$ret = '<select'.$extra.'>';
|
||
|
if(is_array($options))
|
||
|
{
|
||
|
foreach($options as $k => $v)
|
||
|
{
|
||
|
$ret .= '<option'.
|
||
|
($k == $selected?' selected="selected"':'').' value="'.str_replace('"','"',$k).
|
||
|
'">'.$this->htmlspecialchars($v).
|
||
|
'</option>';
|
||
|
}
|
||
|
}
|
||
|
$ret .= '</select>';
|
||
|
if($_var === 'return')
|
||
|
{
|
||
|
return $ret;
|
||
|
}
|
||
|
return $this->app->Tpl->Add($_var, $ret);
|
||
|
}
|
||
|
|
||
|
public function addButton($_var, $text, $link = null, $target = null, $class = '', $options = null)
|
||
|
{
|
||
|
$ret = '';
|
||
|
$type = 'button';
|
||
|
$extra = '';
|
||
|
$extraa = array();
|
||
|
if(isset($options['type'])) {
|
||
|
$type = $options['type'];
|
||
|
}
|
||
|
if($link) {
|
||
|
$ret .= '<a href="'.$link.'"'.($target?' target="'.$target.'"':'').'>';
|
||
|
}
|
||
|
if(is_array($options)) {
|
||
|
foreach($options as $k => $v) {
|
||
|
switch($k) {
|
||
|
case 'name':
|
||
|
case 'id':
|
||
|
$extraa[] = $k.'="'.str_replace('"','"',(String)$v).'"';
|
||
|
break;
|
||
|
default:
|
||
|
if(strpos($k,'data-') === 0) {
|
||
|
$extraa[] = $k.'="'.str_replace('"','"',(String)$v).'"';
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if(count($extraa) > 0){
|
||
|
$extra = ' ' . implode(' ', $extraa);
|
||
|
}
|
||
|
|
||
|
$ret .= '<input type="'.$type.'" value="'.str_replace('"','"',$text).'" '.
|
||
|
($class!=''?' class="'.str_replace('"','',$class).'"':'').
|
||
|
$extra.' />';
|
||
|
if($link) {
|
||
|
$ret .= '</a>';
|
||
|
}
|
||
|
if($_var === 'return') {
|
||
|
return $ret;
|
||
|
}
|
||
|
$this->app->Tpl->Add($_var, $ret);
|
||
|
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
function GetVars($tplfile)
|
||
|
{
|
||
|
$fp=@fopen($tplfile,"r");
|
||
|
if($fp){
|
||
|
$contents = fread ($fp, filesize($tplfile));
|
||
|
fclose($fp);
|
||
|
}
|
||
|
$suchmuster = '/[\[][A-Z_]+[\]]/';
|
||
|
preg_match_all($suchmuster, $contents, $treffer);
|
||
|
return $treffer[0];
|
||
|
}
|
||
|
|
||
|
function ResetParser()
|
||
|
{
|
||
|
unset($this->TEMPLATELIST);
|
||
|
unset($this->VARARRAY);
|
||
|
}
|
||
|
|
||
|
function ReadTemplatesFromPath($_path){
|
||
|
|
||
|
$this->loadUebersetzung();
|
||
|
|
||
|
$this->addPath($_path);
|
||
|
$directory=opendir($_path);
|
||
|
$i = 1;
|
||
|
while ($file=readdir($directory)){
|
||
|
if(strstr($file, '.tpl')){
|
||
|
$i++;
|
||
|
$this->TEMPLATELIST[$file] = new ThemeTemplate($_path,$file);
|
||
|
}
|
||
|
}
|
||
|
closedir($directory);
|
||
|
}
|
||
|
|
||
|
private function loadUebersetzung(){
|
||
|
}
|
||
|
|
||
|
protected function addPath($_path)
|
||
|
{
|
||
|
$rpos = strrpos($_path, '/www/');
|
||
|
if($rpos !== false)
|
||
|
{
|
||
|
$this->pathes[] = substr($_path, $rpos);
|
||
|
}else{
|
||
|
$this->pathes[] = $_path;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function pathLoaded($_path)
|
||
|
{
|
||
|
if(!$this->pathes)return false;
|
||
|
$rpos = strrpos($_path, '/www/');
|
||
|
if($rpos !== false)
|
||
|
{
|
||
|
$_path = substr($_path, $rpos);
|
||
|
}
|
||
|
if(in_array($_path, $this->pathes))return true;
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
function LoadPathes()
|
||
|
{
|
||
|
$pathes = array(dirname(dirname(__DIR__))."/www/widgets/templates/_gen/",
|
||
|
dirname(dirname(__DIR__))."/www/widgets/templates/",
|
||
|
dirname(dirname(__DIR__))."/www/themes/".$this->app->Conf->WFconf['defaulttheme']."/templates/",
|
||
|
dirname(dirname(__DIR__))."/www/pages/content/_gen/",
|
||
|
dirname(dirname(__DIR__))."/www/pages/content/"
|
||
|
);
|
||
|
foreach($pathes as $path)
|
||
|
{
|
||
|
if(!$this->pathLoaded($path))$this->ReadTemplatesFromPath($path);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function CreateVarArray(){
|
||
|
foreach($this->TEMPLATELIST as $template=>$templatename){
|
||
|
if(count($this->TEMPLATELIST[$template]->VARS) > 0){
|
||
|
foreach($this->TEMPLATELIST[$template]->VARS as $key=>$value){
|
||
|
$this->VARARRAY[$key]=$value;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function ShowVariables(){
|
||
|
foreach($this->VARARRAY as $key=>$value)
|
||
|
echo "<b>$key =></b>".htmlspecialchars($value)."<br>";
|
||
|
}
|
||
|
|
||
|
function ParseVariables($text){
|
||
|
foreach($this->VARARRAY as $key=>$value)
|
||
|
{
|
||
|
if($key=!"")
|
||
|
$text = str_replace('['.$key.']',$value,$text);
|
||
|
}
|
||
|
// fill empty vars
|
||
|
return $text;
|
||
|
}
|
||
|
|
||
|
function ShowTemplates(){
|
||
|
foreach ($this->TEMPLATELIST as $key=> $value){
|
||
|
foreach ($value as $key1=> $text){
|
||
|
if(!is_array($text))echo "$key ".htmlspecialchars($text)."<br>";
|
||
|
if(is_array($text))foreach($text as $key2=>$value2) echo $key2." ".$value2;
|
||
|
}
|
||
|
echo '<br><br>';
|
||
|
}
|
||
|
}
|
||
|
function SetText($_var, $_value)
|
||
|
{
|
||
|
$this->VARARRAY[$_var]= $this->htmlspecialchars($_value);
|
||
|
}
|
||
|
|
||
|
function AddText($_var,$_value, $variable = false){
|
||
|
$this->VARARRAY[$_var]=isset($this->VARARRAY[$_var])?$this->VARARRAY[$_var].$this->htmlspecialchars($_value):$this->htmlspecialchars($_value);
|
||
|
if($variable)
|
||
|
$this->VARVARARRAY[$_var] = $variable;
|
||
|
}
|
||
|
|
||
|
function Set($_var,$_value, $variable = false){
|
||
|
$this->VARARRAY[$_var]=$_value;
|
||
|
if($variable)
|
||
|
$this->VARVARARRAY[$_var] = $variable;
|
||
|
}
|
||
|
|
||
|
function Add($_var,$_value, $variable = false){
|
||
|
$this->VARARRAY[$_var]=isset($this->VARARRAY[$_var])?$this->VARARRAY[$_var].$_value:$_value;
|
||
|
if($variable)
|
||
|
$this->VARVARARRAY[$_var] = $variable;
|
||
|
}
|
||
|
|
||
|
function Get($_var){
|
||
|
return $this->VARARRAY[$_var]." ";
|
||
|
}
|
||
|
|
||
|
function Output($_template)
|
||
|
{
|
||
|
echo $this->app->erp->ClearDataBeforeOutput($this->ParseTranslation($this->Parse("",$_template,1)));
|
||
|
}
|
||
|
|
||
|
|
||
|
function OutputAsString($_template)
|
||
|
{
|
||
|
return $this->app->erp->ClearDataBeforeOutput($this->Parse("",$_template,1));
|
||
|
}
|
||
|
|
||
|
|
||
|
function pruefeuebersetzung($text, $_type = 'page', $element = null, $withspan = true)
|
||
|
{
|
||
|
if(is_null($this->uebersetzungmodulvorhanden))
|
||
|
{
|
||
|
$this->uebersetzungmodulvorhanden = true;
|
||
|
if(!$this->app->erp->ModulVorhanden('wawision_uebersetzung'))$this->uebersetzungmodulvorhanden = false;
|
||
|
}
|
||
|
if(!$this->uebersetzungmodulvorhanden)return $text;
|
||
|
if(is_array($text))
|
||
|
{
|
||
|
foreach($text as $k => $v)
|
||
|
{
|
||
|
$text[$k] = $this->pruefeuebersetzung($v, $_type, $element, $withspan);
|
||
|
}
|
||
|
return $text;
|
||
|
}
|
||
|
if($text === '')return '';
|
||
|
if(is_null($element) && isset($this->app->Secure) && method_exists($this->app->Secure, 'GetGET'))$element = $this->app->Secure->GetGET('module');
|
||
|
$start = '';
|
||
|
$end = '';
|
||
|
|
||
|
return $start.$text.$end;
|
||
|
}
|
||
|
|
||
|
|
||
|
function ParseTranslation($text)
|
||
|
{
|
||
|
$pattern = '/((\{\|)(.*?)(\|\}))/s';
|
||
|
$ok = preg_match_all($pattern,$text,$matches, PREG_OFFSET_CAPTURE);
|
||
|
if(!$ok)return $text;
|
||
|
//TODO Parser umbauen, damit Variablen nicht doppelt genommen werden.
|
||
|
if(count($matches[0]) > 0)
|
||
|
{
|
||
|
$cmatches = count($matches[0]);
|
||
|
for($i=0;$i<$cmatches;$i++)
|
||
|
{
|
||
|
$Elements[$i]['before'] = substr($text, $i==0?0:($matches[0][$i-1][1] +strlen($matches[0][$i-1][0]) ), $matches[0][$i][1] - ($i==0 ?0 : ($matches[0][$i-1][1]+strlen($matches[0][$i-1][0])) ) );
|
||
|
$Elements[$i]['el'] = $matches[0][$i][0];
|
||
|
$Elements[$i]['el'] = str_replace('{|','',$Elements[$i]['el']);
|
||
|
$Elements[$i]['el'] = str_replace('|}','',$Elements[$i]['el']);
|
||
|
if($i > 0)$Elements[$i-1]['nach'] = $Elements[$i]['before'];
|
||
|
}
|
||
|
$Elements[count($matches[0])-1]['nach'] = substr($text, $matches[0][count($matches[0])-1][1]+strlen($matches[0][count($matches[0])-1][0]));
|
||
|
}else return $text;
|
||
|
$cmatches = count($matches[0]);
|
||
|
for($i=0;$i<$cmatches;$i++)
|
||
|
{
|
||
|
$matches[0][$i][0] = str_replace('{|','',$matches[0][$i][0]);
|
||
|
$matches[0][$i][0] = str_replace('|}','',$matches[0][$i][0]);
|
||
|
}
|
||
|
$ret = "";
|
||
|
if($Elements){
|
||
|
foreach($Elements as $k => $v)
|
||
|
{
|
||
|
if(isset($v['before']) && $k == 0)$ret .= $v['before'];
|
||
|
|
||
|
if(isset($v['before']) && strlen((String)$v['before']) > 0 && substr($v['before'],-1) == '"')
|
||
|
{
|
||
|
|
||
|
$pos1 = strripos($v['before'],'input');
|
||
|
$pos2 = strripos($v['before'],'<');
|
||
|
|
||
|
if($pos2 !== false && $pos1 !== false && $pos2 < $pos1)
|
||
|
{
|
||
|
$ret .= $this->pruefeuebersetzung($v['el'],'page',null, '****');
|
||
|
}else{
|
||
|
$ret .= $this->pruefeuebersetzung($v['el'],'page',null, false);
|
||
|
}
|
||
|
}else{
|
||
|
$ret .= $this->pruefeuebersetzung($v['el']);
|
||
|
}
|
||
|
if(isset($v['nach']))$ret .= $v['nach'];
|
||
|
}
|
||
|
}
|
||
|
return $ret;
|
||
|
}
|
||
|
|
||
|
function Parse($_var, $_template,$return=0){
|
||
|
if(!isset($this->TEMPLATELIST[$_template]))
|
||
|
{
|
||
|
$this->LoadPathes();
|
||
|
}
|
||
|
// check if custom template exists_template
|
||
|
$checkcustom = str_replace('.tpl','_custom.tpl',$_template);
|
||
|
if(isset($this->TEMPLATELIST[$checkcustom])) $_template = $checkcustom;
|
||
|
|
||
|
//$this->AjaxParse();
|
||
|
if($_var == 'PAGE')$this->app->erp->ParseMenu();
|
||
|
$this->ParseVarVars();
|
||
|
if($_template!=""){
|
||
|
if(isset($this->TEMPLATELIST[$_template]) && !($this->TEMPLATELIST[$_template]->vararraycreated))
|
||
|
{
|
||
|
$this->TEMPLATELIST[$_template]->CreateVarArray();
|
||
|
}
|
||
|
|
||
|
//alle template variablen aufuellen mit den werten aus VARARRAY
|
||
|
if(isset($this->TEMPLATELIST[$_template]) && isset($this->TEMPLATELIST[$_template]->VARS) && count($this->TEMPLATELIST[$_template]->VARS)>0){
|
||
|
foreach ($this->TEMPLATELIST[$_template]->VARS as $key=> $value){
|
||
|
$this->TEMPLATELIST[$_template]->SetVar($key,isset($this->VARARRAY[$key])?$this->VARARRAY[$key]:'');
|
||
|
}
|
||
|
|
||
|
//ORIGINAL auffuellen
|
||
|
$tmptpl = $this->TEMPLATELIST[$_template]->ORIGINAL;
|
||
|
foreach ($this->TEMPLATELIST[$_template]->VARS as $key=>$value){
|
||
|
if(!is_numeric($key) && $key!="")
|
||
|
$tmptpl = str_replace("[".$key."]",$value, $tmptpl);
|
||
|
}
|
||
|
} else $tmptpl = '';
|
||
|
//aufgefuelltes ORIGINAL in $t_var add($_var,ORIGINAL)
|
||
|
if($return==1)
|
||
|
return $tmptpl;
|
||
|
else
|
||
|
$this->Add($_var,$tmptpl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function AddAndParse($_var, $_value, $_varparse, $_templateparse){
|
||
|
$this->Set($_var, $_value);
|
||
|
$this->Parse($_varparse,$_templateparse);
|
||
|
}
|
||
|
|
||
|
function ParseVarVars()
|
||
|
{
|
||
|
$pattern = '/((\[[A-Z0-9_]+\]))/';
|
||
|
if(!empty($this->VARVARARRAY) && is_array($this->VARVARARRAY))
|
||
|
{
|
||
|
foreach($this->VARVARARRAY as $k => $el)
|
||
|
{
|
||
|
preg_match_all($pattern,$this->VARARRAY[$k],$matches, PREG_OFFSET_CAPTURE);
|
||
|
|
||
|
$cmatches = $matches?count($matches[0]):0;
|
||
|
for($i=0;$i<$cmatches;$i++)
|
||
|
{
|
||
|
$matches[0][$i][0] = str_replace('[','',$matches[0][$i][0]);
|
||
|
$matches[0][$i][0] = str_replace(']','',$matches[0][$i][0]);
|
||
|
if(isset($this->VARARRAY[$matches[0][$i][0]]))
|
||
|
{
|
||
|
$this->VARARRAY[$k] = str_replace('['.$matches[0][$i][0].']',$this->VARARRAY[$matches[0][$i][0]],$this->VARARRAY[$k]);
|
||
|
}
|
||
|
}
|
||
|
unset($matches);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function FinalParse($_template){
|
||
|
$printtype = '';
|
||
|
if(isset($this->TEMPLATELIST[substr($_template,0,strlen($_template)-4).'_custom.tpl']))
|
||
|
{
|
||
|
$_template = substr($_template,0,strlen($_template)-4).'_custom.tpl';
|
||
|
}
|
||
|
$this->app->erp->ParseMenu();
|
||
|
$this->ParseVarVars();
|
||
|
if(isset($this->TEMPLATELIST[$_template]) && !($this->TEMPLATELIST[$_template]->vararraycreated))
|
||
|
{
|
||
|
$this->TEMPLATELIST[$_template]->CreateVarArray();
|
||
|
}
|
||
|
$print = $this->app->Secure->GetGET("print");
|
||
|
$printcontent = $this->app->Secure->GetGET("printcontent");
|
||
|
|
||
|
if($printcontent=="") $printcontent="TAB1";
|
||
|
if($print=="true") {
|
||
|
|
||
|
switch($printtype)
|
||
|
{
|
||
|
default:
|
||
|
$out = str_replace("[PRINT]",$this->VARARRAY[$printcontent],$this->TEMPLATELIST['print.tpl']->ORIGINAL);
|
||
|
echo $this->ParseTranslation($out);
|
||
|
}
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
if($_template!="" && isset($this->TEMPLATELIST)){
|
||
|
//alle template variablen aufuellen mit den werten aus VARARRAY
|
||
|
if(count($this->TEMPLATELIST[$_template]->VARS)>0){
|
||
|
foreach ($this->TEMPLATELIST[$_template]->VARS as $key=> $value)
|
||
|
{
|
||
|
$this->TEMPLATELIST[$_template]->SetVar($key,(isset($this->VARARRAY[$key])?$this->VARARRAY[$key]:''));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//ORIGINAL auffuellen
|
||
|
|
||
|
|
||
|
$new = false;
|
||
|
if($new)
|
||
|
{
|
||
|
//macht Noch Probleme
|
||
|
$tmptpl = '';
|
||
|
if(!empty($this->TEMPLATELIST[$_template]->Elements))
|
||
|
{
|
||
|
foreach($this->TEMPLATELIST[$_template]->Elements as $k)
|
||
|
{
|
||
|
$tmptpl .= $this->ParseTranslation($k['before']);
|
||
|
if(!empty($this->TEMPLATELIST[$_template]->VARS[$k['el']]))
|
||
|
{
|
||
|
$tmptpl .= $this->TEMPLATELIST[$_template]->VARS[$k['el']];
|
||
|
}
|
||
|
}
|
||
|
$tmptpl .= $this->ParseTranslation($this->TEMPLATELIST[$_template]->Elements[count($this->TEMPLATELIST[$_template]->Elements)-1]['nach']);
|
||
|
}else $tmptpl = $this->TEMPLATELIST[$_template]->ORIGINAL;
|
||
|
}else
|
||
|
{
|
||
|
$tmptpl = isset($this->TEMPLATELIST[$_template]->ORIGINAL)?$this->TEMPLATELIST[$_template]->ORIGINAL:'';
|
||
|
if(isset($this->TEMPLATELIST[$_template]->VARS) && count($this->TEMPLATELIST[$_template]->VARS)>0){
|
||
|
foreach ($this->TEMPLATELIST[$_template]->VARS as $key=>$value)
|
||
|
{
|
||
|
if($key!="")
|
||
|
$tmptpl = str_replace("[".$key."]",$value, $tmptpl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(count($this->VARARRAY)>0)
|
||
|
foreach($this->VARARRAY as $key=>$value)
|
||
|
{
|
||
|
if($key!="")
|
||
|
$tmptpl = str_replace('['.$key.']',$value,$tmptpl);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// In Auftrags-Positionen-IFrame: Leere Form-Actions nicht durch # ersetzen; ansonsten springt das IFrame im Chrome
|
||
|
$replaceEmptyFormAction = !$this->IsVorgangPositionenIframe();
|
||
|
|
||
|
$tmptpl = $this->ParseTranslation($this->app->erp->ClearDataBeforeOutput($tmptpl, $replaceEmptyFormAction));
|
||
|
if(isset($this->edittranslation) && $this->edittranslation)$tmptpl = $this->FormatTranslation($tmptpl);
|
||
|
return $tmptpl;
|
||
|
}
|
||
|
|
||
|
function FormatTranslation($text)
|
||
|
{
|
||
|
$start = '<span class="edittranslation">';
|
||
|
//$end = '</span>';
|
||
|
$texta = explode($start, $text);
|
||
|
//$anz = count($texta);
|
||
|
$script = false;
|
||
|
$textres = '';
|
||
|
foreach($texta as $k => $v)
|
||
|
{
|
||
|
$scriptpos = strripos($v, '<script');
|
||
|
$scriptendpos = strripos($v, '</script>');
|
||
|
if($scriptpos !== false && $scriptendpos !== false)
|
||
|
{
|
||
|
if($scriptendpos > $scriptpos)
|
||
|
{
|
||
|
$script = false;
|
||
|
}else{
|
||
|
$script = true;
|
||
|
}
|
||
|
}elseif($scriptpos !== false)
|
||
|
{
|
||
|
$script = true;
|
||
|
}elseif($scriptendpos !== false)
|
||
|
{
|
||
|
$script = false;
|
||
|
}else{
|
||
|
//Keine Aenderung
|
||
|
}
|
||
|
|
||
|
if($k > 0)
|
||
|
{
|
||
|
$pipe1 = (int)strpos($v, '|');
|
||
|
$pipe2 = (int)strpos($v, '|', (int)$pipe1+1);
|
||
|
$pipe3 = (int)strpos($v, '|', (int)$pipe2+1);
|
||
|
$pipe4 = (int)strpos($v, '|', (int)$pipe3+1);
|
||
|
$spos = 0;
|
||
|
$_text = '';
|
||
|
$_type = '';
|
||
|
$_elem = '';
|
||
|
if($pipe4 > $pipe3 && $pipe3 > $pipe2 && $pipe2 > $pipe1)
|
||
|
{
|
||
|
$_text = substr($v,$pipe1+1, $pipe2 - $pipe1 - 1);
|
||
|
$_type = substr($v,$pipe2+1, $pipe3 - $pipe2 - 1);
|
||
|
$_elem = substr($v,$pipe3+1, $pipe4 - $pipe3 - 1);
|
||
|
$spos = $pipe4 + 1;
|
||
|
}
|
||
|
|
||
|
$endespan = strpos($v, '</span>');
|
||
|
$erlaubt = true;
|
||
|
$starttag = strpos($v, '<', $endespan+6);
|
||
|
$startquote = strpos($v, '"', $endespan+6);
|
||
|
if($starttag && strtolower(substr($v,$starttag,5)) != '</td>' && strtolower(substr($v,$starttag,5)) != '</th>' && strtolower(substr($v,$starttag,4)) != '</a>' && strtolower(substr($v,$starttag,6)) != '</div>' && strtolower(substr($v,$starttag,4)) != '</i>' && strtolower(substr($v,$starttag,9)) != '</legend>' && strtolower(substr($v,$starttag,8)) != '</label>')
|
||
|
{
|
||
|
$erlaubt = false;
|
||
|
}
|
||
|
if(substr($v,$endespan+8,1) == '"' || substr($v,$endespan+7,1) == '"')
|
||
|
{
|
||
|
$erlaubt = false;
|
||
|
}
|
||
|
if($endespan !== false && $starttag !== false && $startquote !== false && $startquote < $starttag)
|
||
|
{
|
||
|
$erlaubt = false;
|
||
|
}
|
||
|
|
||
|
if($script || !$erlaubt)
|
||
|
{
|
||
|
if(!$script)
|
||
|
{
|
||
|
$substr = $texta[$k-1];
|
||
|
|
||
|
$pos1 = strripos($substr, 'input');
|
||
|
$pos2 = strrpos($substr, '<');
|
||
|
if($pos1 !== false && $pos2 !== false && $pos2 < $pos1)
|
||
|
{
|
||
|
$textres .= '****'.substr($v,$spos, $endespan - $spos).substr($v,$endespan+7);
|
||
|
}else{
|
||
|
$textres .= substr($v,$spos, $endespan - $spos).substr($v,$endespan+7);
|
||
|
}
|
||
|
}else{
|
||
|
$textres .= substr($v,$spos, $endespan - $spos).substr($v,$endespan+7);
|
||
|
}
|
||
|
}else{
|
||
|
$textres .= $start.substr($v,$spos, $endespan - $spos).'</span><span><input type="hidden" class="wawision_uebersetzung_text" value="'.base64_encode($_text).'" /><input type="hidden" class="wawision_uebersetzung_type" value="'.base64_encode($_type).'" /><input type="hidden" class="wawision_uebersetzung_elem" value="'.base64_encode($_elem).'" /></span>'.substr($v,$endespan+7);
|
||
|
}
|
||
|
}else{
|
||
|
$textres .= $v;
|
||
|
}
|
||
|
}
|
||
|
return $textres;
|
||
|
}
|
||
|
|
||
|
function AjaxParse()
|
||
|
{
|
||
|
|
||
|
foreach($this->TEMPLATELIST as $key=>$value)
|
||
|
{
|
||
|
foreach ($this->TEMPLATELIST[$key]->VARS as $var=>$tmp)
|
||
|
{
|
||
|
if(strstr($var,"AJAX"))
|
||
|
{
|
||
|
//$this->Set(AJAX_SELECT_PROJEKT,"Hallo");
|
||
|
//$this->VARARRAY[$var]="XVZ";
|
||
|
//print_r($this->VARARRAY);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function KeywordParse()
|
||
|
{
|
||
|
|
||
|
foreach($this->TEMPLATELIST as $key=>$value)
|
||
|
{
|
||
|
foreach ($this->TEMPLATELIST[$key]->VARS as $var=>$tmp)
|
||
|
if(strstr($var,"AJAX"))
|
||
|
{
|
||
|
echo $var;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function IsVorgangPositionenIframe()
|
||
|
{
|
||
|
$vorgaenge = ['anfrage','angebot','arbeitsnachweis','auftrag','bestellung','gutschrift','kalkulation','lieferschein','preisanfrage','produktion','proformarechnung','rechnung','reisekosten','verbindlichkeit'];
|
||
|
|
||
|
$isPopup = ($this->app->BuildNavigation !== true);
|
||
|
$isVorgangModule = in_array($this->app->Secure->GetGET('module'), $vorgaenge);
|
||
|
$isPositionenAction = (strpos($this->app->Secure->GetGET('action'), 'position') !== false);
|
||
|
|
||
|
return ($isPopup && $isVorgangModule && $isPositionenAction) ? true : false;
|
||
|
}
|
||
|
|
||
|
}
|