示例#1
0
文件: Yml.php 项目: infrajs/yml
 public static function parse($data)
 {
     $gid = 0;
     $pid = 0;
     $groups = array();
     $poss = array();
     $conf = static::$conf;
     if (!$conf['name']) {
         throw new \Exception('В конфиге yml требуется указать name. Наименование компании без организационный формы');
     }
     if (!$conf['company']) {
         throw new \Exception('В конфиге yml требуется указать company, название компании с организационной формой ООО');
     }
     Xlsx::runPoss($data, function (&$pos) {
         $pos['Описание'] = Yml::tostr($pos['Описание']);
     });
     Xlsx::runGroups($data, function (&$group, $i, &$parent) use(&$gid, &$groups) {
         $group['id'] = ++$gid;
         if ($parent) {
             $group['parentId'] = $parent['id'];
         }
         $groups[] =& $group;
     });
     Xlsx::runPoss($data, function (&$pos, $i, &$group) use(&$pid, &$poss) {
         $pos['id'] = ++$pid;
         $pos['categoryId'] = $group['id'];
         $poss[] =& $pos;
     });
     $d = array("conf" => $conf, "support" => Access::$conf["admin"]["support"], "site" => View::getPath(), "poss" => $poss, "groups" => $groups);
     $html = Template::parse('-yml/yml.tpl', $d);
     return $html;
 }
示例#2
0
 public function check(&$layer)
 {
     if (!empty($layer['seojsontpl'])) {
         $layer['seojson'] = Template::parse(array($layer['seojsontpl']), $layer);
     }
     if (empty($layer['seojson'])) {
         return;
     }
     $item = self::load($layer['seojson']);
     if (!$item) {
         return;
     }
     $html = View::html();
     if (!empty($item['image_src'])) {
         self::meta($html, $item, 'link', 'image_src');
         self::meta($html, $item, 'property', 'og:image', $item['image_src']);
         self::meta($html, $item, 'name', 'twitter:image', $item['image_src']);
         //self::meta($html, $item, 'itemprop', 'image', $item['image_src']);
     }
     if (!empty($item['canonical'])) {
         self::meta($html, $item, 'link', 'canonical');
         self::meta($html, $item, 'name', 'twitter:site', $item['canonical']);
         self::meta($html, $item, 'property', 'og:url', $item['canonical']);
         //self::meta($html, $item, 'property', 'business:contact_data:website', $item['canonical']);
     }
     if (!empty($item['description'])) {
         self::meta($html, $item, 'name', 'description');
         self::meta($html, $item, 'property', 'og:description', $item['description']);
         self::meta($html, $item, 'name', 'twitter:description', $item['description']);
     }
     self::meta($html, $item, 'name', 'keywords');
     if (!empty($item['title'])) {
         self::meta($html, $item, 'title', 'title');
         self::meta($html, $item, 'property', 'og:title', $item['title']);
         self::meta($html, $item, 'name', 'twitter:title', $item['title']);
     }
     if (!empty($item['site_name'])) {
         self::meta($html, $item, 'property', 'site_name');
         self::meta($html, $item, 'itemprop', 'name', $item['site_name']);
         self::meta($html, $item, 'property', 'og:site_name', $item['site_name']);
     }
     if (!empty($item['properties'])) {
         foreach ($item['properties'] as $k => $v) {
             self::meta($html, $item['properties'], 'property', $k);
         }
     }
     if (!empty($item['names'])) {
         foreach ($item['names'] as $k => $v) {
             self::meta($html, $item['names'], 'name', $k);
         }
     }
     if (!empty($item['itemprops'])) {
         foreach ($item['itemprops'] as $k => $v) {
             self::meta($html, $item['itemprops'], 'itemprop', $k);
         }
     }
     View::html($html, true);
 }
示例#3
0
 public static function configtpl(&$layer)
 {
     $name = 'config';
     //stencil//
     $nametpl = $name . 'tpl';
     if (isset($layer[$nametpl])) {
         if (!isset($layer[$name])) {
             $layer[$name] = array();
         }
         foreach ($layer[$nametpl] as $i => $v) {
             $layer[$name][$i] = Template::parse(array($layer[$nametpl][$i]), $layer);
         }
     }
 }
示例#4
0
                }
                if (!is_file($dir . $file)) {
                    return;
                }
                $ext = Path::getExt($file);
                if ($ext != 'md') {
                    return;
                }
                $res = array('src' => $dir . $file, 'vendor' => $vendor, 'name' => $name, 'file' => $file);
                $map['vendors'][$vendor][$name]['list'][] = $res;
                $map['names'][$dir] =& $map['vendors'][$vendor][$name];
            }, scandir($dir));
        }, scandir($dir));
    }, scandir($dir));
    return $map;
});
$fd = Load::srcInfo($src);
if (isset($map['names'][$fd['folder']])) {
    $namedata = $map['names'][$fd['folder']];
} else {
    $namedata = array();
}
$text = file_get_contents(Path::theme($src));
$body = Markdown::defaultTransform($text);
//$data['files']=$files;
$data['map'] = $map;
$data['src'] = $src;
$data['namedata'] = $namedata;
$data['body'] = $body;
$html = Template::parse(Path::theme('-mdreader/index.tpl'), $data);
echo $html;
示例#5
0
    public static function parse($html, $soft = false)
    {
        if (!$soft) {
            $html = preg_replace('/<table>/', '<table class="table table-striped">', $html);
        }
        if (!$soft) {
            $html = preg_replace('/<img/', '<img alt="" class="img-thumbnail"', $html);
        }
        $html = preg_replace("/<\\/a>/", "</a>\n", $html);
        //youtube
        $ptube = rub_ptube();
        $pattern = '/<a[^>]*>' . $ptube . '(<\\/a>)/i';
        $youtpl = <<<END
\t\t<center><div class="embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" width="640" height="480" src="https://www.youtube.com/embed/{3}" frameborder="0" allowfullscreen></iframe></div></center>
END;
        do {
            $match = array();
            preg_match($pattern, $html, $match);
            if (sizeof($match) > 1) {
                $a = $match[1];
                $aa = $match[4];
                $files[] = $match[2];
                $youhtml = Template::parse(array($youtpl), $match);
                $html = preg_replace($pattern, $youhtml, $html, 1);
            }
        } while (sizeof($match) > 1);
        //youtube2
        $ptube = rub_ptube2();
        $pattern = '/<a[^>]*>' . $ptube . '(<\\/a>)/i';
        $youtpl = <<<END
\t\t<center><div class="embed-responsive embed-responsive-16by9"><iframe class="embed-responsive-item" width="640" height="480" src="https://www.youtube.com/embed/{1}" frameborder="0" allowfullscreen></iframe></div></center>
END;
        do {
            $match = array();
            preg_match($pattern, $html, $match);
            if (sizeof($match) > 1) {
                $a = $match[1];
                $aa = $match[4];
                $files[] = $match[2];
                $youhtml = Template::parse(array($youtpl), $match);
                $html = preg_replace($pattern, $youhtml, $html, 1);
            }
        } while (sizeof($match) > 1);
        //files
        //setlocale(LC_ALL, 'ru_RU.UTF-8');
        $files = array();
        $pattern = '/(<a.*href="\\/\\-rubrics\\/?[^"]*id=(\\w+)&type=(\\w+)&[^"]*load".*>)([^~<]*?)(<\\/a>)/u';
        do {
            $match = array();
            preg_match($pattern, $html, $match);
            if (sizeof($match) > 1) {
                $a = $match[1];
                $id = $match[2];
                $type = $match[3];
                $title = $match[4];
                $aa = $match[5];
                $files[] = array('id' => $id, 'type' => $type);
                $html = preg_replace($pattern, $a . '~' . $title . $aa, $html, 1);
            }
        } while (sizeof($match) > 1);
        $filesd = array();
        foreach ($files as $f) {
            $filed = rub_get($f['type'], $f['id'], array());
            if ($filed) {
                $filed['type'] = $f['type'];
                $filesd[$f['id']] = $filed;
            }
        }
        $pattern = '/(<a.*href="\\/\\-rubrics\\/\\?[^"]*id=(\\w+)&type=(\\w+)&[^"]*load".*>)~([^~<]*?)(<\\/a>)/u';
        $tpl = <<<END
\t\t\t<nobr><a href="/-rubrics/?id={id}&type={type}&load" title="{name}">{title}</a>&nbsp;<img alt="" style="margin-right:3px;" src="/-imager/?src=-autoedit/icons/{ext}.png&w=16" title="{name}"> {size} Мб</nobr>
END;
        do {
            preg_match($pattern, $html, $match);
            if (sizeof($match) > 1) {
                $a = $match[1];
                $title = $match[4];
                $aa = $match[5];
                $type = $match[3];
                $id = $match[2];
                if ($filesd[$id]) {
                    $d = $filesd[$id];
                    $d['title'] = $title;
                    $t = Template::parse(array($tpl), $d);
                    $html = preg_replace($pattern, $t, $html, 1);
                } else {
                    $html = preg_replace($pattern, $a . $title . $aa, $html, 1);
                }
            }
        } while (sizeof($match) > 1);
        $html = preg_replace("/<\\/a>\n/", '</a>', $html);
        return $html;
    }
示例#6
0
<?php

namespace infrajs\infra;

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\sequence\Sequence;
use infrajs\load\Load;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array('title' => 'Проверяем простые функции шаблонизатора');
$data = array('Artur' => 'Yanturin', 'company' => array('UzDaewoo' => array(array('title' => 'Cobalt', 'year' => 2033, 'mileage' => 1000), array('title' => 'Malibu', 'year' => 2014, 'mileage' => 100), array('title' => 'Nexia', 'year' => 2012, 'mileage' => 100000)), 'Lada' => array(array('title' => 'Vesta', 'year' => 2006, 'mileage' => 65452), array('title' => 'Largus', 'year' => 2010, 'mileage' => 36974), array('title' => 'Priora', 'year' => 2008, 'mileage' => 7852)), 'Mercedes' => array(array('title' => 'CLA 45 AMG', 'year' => 2010, 'mileage' => 78674), array('title' => 'МL 63 AMG ', 'year' => 2011, 'mileage' => 852126), array('title' => 'A 45 AMG', 'year' => 2011, 'mileage' => 654212))));
$html = Template::parse('-template/tests/resources/simpletpl.html', $data, 'text', 'company.UzDaewoo');
if ($html == 'title:MalibuVestayear:2014Vestamileage:100Vesta') {
    $ans['result'] = 1;
} else {
    $ans['result'] = 0;
}
return $ans;
<?php

namespace infrajs\controller;

use infrajs\controller\Controller;
use infrajs\controller\Run;
use infrajs\view\View;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\path\Path;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$obj = array();
$obj['tpl'] = array('1{:add}');
$obj['tplsm'] = array('{add:}2');
$obj['data'] = array('asdf' => 1);
$tpls = Template::make($obj['tpl']);
//С кэшем перепарсивания
$repls = array();
$t = Template::make($obj['tplsm']);
$repls[] = $t;
$alltpls = array(&$repls, &$tpls);
$html = Template::exec($alltpls, $obj['data']);
if ($html != '12') {
    return Ans::err($ans, 'err');
}
return Ans::ret($ans, 'ret');
示例#8
0
        }
        if (mb_strlen($cop) > 2) {
            $cop = mb_substr($cop, 0, 3);
            $cop = round($cop / 10);
        }
        if ($cop == '00') {
            $cop = '';
        }
    }
    if ($text) {
        $inp = ' ';
    } else {
        $inp = '&nbsp;';
    }
    if (mb_strlen($cost) > 4) {
        //1000
        $l = mb_strlen($cost);
        $cost = mb_substr($cost, 0, $l - 3) . $inp . mb_substr($cost, $l - 3, $l);
    }
    if ($cop) {
        if ($text) {
            $cost = $cost . ',' . $cop;
        } else {
            $cost = $cost . '<small>,' . $cop . '</small>';
        }
    }
    return $cost;
});
Template::$fs = array("load" => function ($src) {
    return file_get_contents($src);
});
示例#9
0
        echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
        echo '</td><td>';
        echo @$t['com'];
        echo '</td><tr>';
    }
    echo '</table>';
} else {
    $ans = array();
    $ans['title'] = 'Тест шаблонизатора. Без 3х известных ошибок.';
    $ans['class'] = 'bg-warning';
    foreach ($tpls as $key => $t) {
        if ($key < 3) {
            continue;
        }
        if (@is_null($t['data'])) {
            $data = array();
        } else {
            $data = $t['data'];
        }
        $r = Template::parse(array($t['tpl']), $data);
        if ($r !== $t['res']) {
            $ans['msg'] = 'Ошибка ' . $t['tpl'];
            echo json_encode($ans, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
            return;
        }
    }
    $ans['msg'] = 'Всё ок';
    $ans['result'] = 1;
    echo json_encode($ans, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    return;
}
示例#10
0
文件: index.php 项目: infrajs/admin
} elseif (isset($_REQUEST['logout'])) {
    Access::admin(false);
    ?>

		<div style="padding:50px 100px">

			<p>Вы обычный посетитель</p>
			<p><a href="?">Проверить</a></p>
		</div>

<?php 
} else {
    $r = Access::admin();
    if ($r) {
        Config::get('template');
        echo Template::parse('-admin/index.tpl');
        ?>
		<div style="padding:50px 100px">
			<p>Вы администратор</p>
			<p><a href="?logout">Выход</a></p>
		</div>
<?php 
    } else {
        ?>
		<div style="padding:50px 100px">
			<p>Вы обычный посетитель</p>
			<p><a href="?login">Вход</a></p>
		</div>
<?php 
    }
}
示例#11
0
<?php

namespace infrajs\infra;

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\path\Path;
use infrajs\sequence\Sequence;
use infrajs\load\Load;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array('title' => 'Тест 0 элемента в массиве. Известная проблема.', 'class' => 'bg-warning');
$tpl = '{root:}{0:test}{test:}{title}';
$data = array(array('title' => 'good'));
$html = Template::parse(array($tpl), $data, 'root');
echo $html;
$ans['class'] = 'bg-warning';
if ($html != 'good') {
    return Ans::ret($ans, '0 элемент принят за false как будто его нет');
}
return Ans::ret($ans, 'Теcт пройдены. Получился ожидаемый результат поле распарсивания шаблона.');
示例#12
0
文件: test.php 项目: infrajs/rubrics
use infrajs\ans\Ans;
use infrajs\load\Load;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../');
    require_once 'vendor/autoload.php';
    Config::init();
}
$ans = array('title' => 'Запуск шаблонизатора');
$tpl = '{infra.config(name).main}';
$data = array('name' => 'rubrics');
$html = Template::parse(array($tpl), $data);
if (!$html) {
    return Ans::err($ans, $tpl . ' возрващает пустую строку ' . $html);
}
$tpl = '{infra.config(:rubrics).main}';
$data = true;
$html = Template::parse(array($tpl), $data);
if (!$html) {
    return Ans::err($ans, $tpl . ' возрващает пустую строку ' . $html);
}
$conf = Config::get('rubrics');
$tpl = '{list::test}{test:}1{:date}{date:}{~date(:F,~true)}';
$data = Load::loadJSON('-rubrics/?type=' . $conf['main'] . '&list');
if (sizeof($data['list'])) {
    //Это если есть данные иначе тест этот не проводим
    $html = Template::parse(array($tpl), $data);
    if (!$html) {
        return Ans::err($ans, ' возрващает пустую строку ' . $html);
    }
}
return Ans::ret($ans);
示例#13
0
<?php

namespace infrajs\infra;

use infrajs\access\Access;
use infrajs\event\Event;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\path\Path;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
/*
	Пустой шаблон также содержи подшаблон root, ошибка что возвращается слово root
*/
$ans = array('title' => 'Проверка что пустой шаблон не возвращает слово root');
$ans['res'] = Template::parse(array(''), true);
if ($ans['res'] !== '') {
    return Ans::err($ans, 'Непройден тест 1 {res}');
}
$ans['res'] = Template::parse(array(''));
if ($ans['res'] !== '') {
    return Ans::err($ans, 'Непройден тест 2 {res}');
}
return Ans::ret($ans, 'Все теcты пройдены');
示例#14
0
 public static function check(&$layer)
 {
     if (!empty($layer['seojsontpl'])) {
         $layer['seojson'] = Template::parse(array($layer['seojsontpl']), $layer);
     }
     if (empty($layer['seojson'])) {
         return;
     }
     $item = self::load($layer['seojson']);
     if (!$item) {
         return;
     }
     $html = View::html();
     if (!empty($item['image_src'])) {
         self::meta($html, $item, 'link', 'image_src');
         self::meta($html, $item, 'property', 'og:image', $item['image_src']);
         self::meta($html, $item, 'name', 'twitter:image', $item['image_src']);
         //self::meta($html, $item, 'itemprop', 'image', $item['image_src']);
     }
     if (empty($item['canonical'])) {
         $query = preg_replace('/^\\//', '', $_SERVER['REQUEST_URI']);
         $item['canonical'] = View::getPath() . $query;
     }
     if (!empty($item['canonical'])) {
         self::meta($html, $item, 'link', 'canonical');
         self::meta($html, $item, 'name', 'twitter:site', $item['canonical']);
         self::meta($html, $item, 'property', 'og:url', $item['canonical']);
         //self::meta($html, $item, 'property', 'business:contact_data:website', $item['canonical']);
     }
     if (!empty($item['description'])) {
         self::meta($html, $item, 'name', 'description');
         self::meta($html, $item, 'property', 'og:description', $item['description']);
         self::meta($html, $item, 'name', 'twitter:description', $item['description']);
     }
     self::meta($html, $item, 'name', 'keywords');
     if (!empty($item['title'])) {
         self::meta($html, $item, 'title', 'title');
         self::meta($html, $item, 'property', 'og:title', $item['title']);
         self::meta($html, $item, 'name', 'twitter:title', $item['title']);
     }
     if (!empty($item['site_name'])) {
         self::meta($html, $item, 'property', 'site_name');
         self::meta($html, $item, 'itemprop', 'name', $item['site_name']);
         self::meta($html, $item, 'property', 'og:site_name', $item['site_name']);
     }
     if (empty($item['properties']['og:type'])) {
         self::meta($html, $item, 'property', 'og:type', 'website');
     }
     if (!empty($item['properties'])) {
         foreach ($item['properties'] as $k => $v) {
             self::meta($html, $item['properties'], 'property', $k, $v);
         }
     }
     if (!empty($item['names'])) {
         foreach ($item['names'] as $k => $v) {
             self::meta($html, $item['names'], 'name', $k, $v);
         }
     }
     if (!empty($item['itemprops'])) {
         foreach ($item['itemprops'] as $k => $v) {
             self::meta($html, $item['itemprops'], 'itemprop', $k, $v);
         }
     }
     View::html($html, true);
 }
示例#15
0
$conf = Config::get('subscribe');
if (empty($_REQUEST['email'])) {
    return Ans::err($ans, $conf['msg']);
}
if (strlen($_REQUEST['email']) > 1000) {
    return Ans::err($ans, 'Слишком много данных. ' . $conf['msg']);
}
$email = strip_tags($_REQUEST['email']);
$email = trim($email);
$email = Path::encode($email);
$agent = $_SERVER['HTTP_USER_AGENT'];
$ip = $_SERVER['REMOTE_ADDR'];
session_start();
if (empty($_SESSION['submit_time'])) {
    $_SESSION['submit_time'] = 0;
}
if (time() - $_SESSION['submit_time'] < 60) {
    return Ans::err($ans, 'Письмо уже отправлено! Новое сообщение можно будет отправить через 1 минуту!');
}
$_SESSION['submit_time'] = time();
$data = array('email' => $email, 'agent' => $agent, 'ip' => $ip, 'host' => $_SERVER['HTTP_HOST']);
$body = Template::parse('-subscribe/subscribe.mail.tpl', $data);
Mail::toAdmin('Запрос ' . $data['host'] . ' ' . $email, 'noreplay@' . $data['host'], $body);
$src = Path::resolve('~.subscribe.json');
$subs = Load::loadJSON($src);
if (!$subs) {
    $subs = array();
}
$subs[$email] = date('d.m.Y');
file_put_contents($src, Load::json_encode($subs));
return Ans::ret($ans, 'Ваша заявка принята');
示例#16
0
文件: index.php 项目: infrajs/tester
            }
        }
        $res['src'] = $finfo['src'];
        $res['name'] = $finfo['file'];
        //имя тестируемого файла
        if (!$res['result']) {
            $errors[] = $name . ' ' . $res['name'] . ' ' . $res['msg'];
        }
        if ($type == 'errors') {
            if (!$res['result']) {
                $data['list'][$name][] = $res;
            }
        } else {
            $data['list'][$name][] = $res;
        }
    }
}
/*if ($type=='errors' && !sizeof($data['list'])) {
	header('Location: '.View::getPath().'-tester/');
	exit;
}*/
if ($type == 'auto') {
    $ans['result'] = !$errors;
    if (!$ans['result']) {
        $ans['msg'] = implode(', ', $errors) . '.';
    }
    return Ans::ans($ans);
}
$data['type'] = $type;
$html = Template::parse('-tester/index.tpl', $data);
echo $html;
示例#17
0
    }
    $r = View::html($layer['html'], $div);
    if (!$r && (!isset($layer['divcheck']) || !$layer['divcheck'])) {
        echo 'Не найден div ' . $layer['div'] . ' infra_html<br>';
    }
    unset($layer['html']);
    //нефиг в памяти весеть
}, 'tpl:div');
Run::runAddList('layers');
Layer::parsedAdd('is');
Event::handler('Layer.isshow', function (&$layer) {
    $prop = 'is';
    $proptpl = $prop . 'tpl';
    if (isset($layer[$proptpl])) {
        $p = $layer[$proptpl];
        $p = Template::parse(array($p), $layer);
        $layer[$prop] = $p;
    }
    if (!isset($layer['is']) || is_null($layer['is'])) {
        $is = true;
    } else {
        $is = $layer['is'];
    }
    if ($is == '0') {
        $is = false;
    }
    //В шаблоне false не удаётся вернуть
    return $is;
}, 'is:div');
Event::handler('Layer.isshow', function (&$layer) {
    //tpl depricated
示例#18
0
<?php

use infrajs\template\Template;
require_once __DIR__ . '/../../../../vendor/autoload.php';
$ans = array('title' => 'Простой тест');
$res = Template::parse(array('as{test}df'), array('test' => 1));
if ($res == 'as1df') {
    $ans['result'] = true;
}
echo json_encode($ans, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
示例#19
0
    $_SESSION['submit_time'] = time();
}
$ans['testmail'] = $mdata['testmail'];
if ($maildir) {
    $folder = Path::theme($maildir);
    $name = Path::tofs(Path::encode($data['name']));
    $fname = date('Y F j H-i') . ' ' . $name . ' ' . time();
    if ($conf['file'] && $file) {
        $src = $folder . $fname . '.' . Path::tofs($file['name']);
        $r = move_uploaded_file($file['tmp_name'], $src);
        if (!$r) {
            return Ans::err($ans, 'Неудалось загрузить файл');
        }
        $data['file'] = Path::toutf(Path::pretty($src));
    }
}
$body = Template::parse('-contacts/mail.tpl', $data);
if (!$body) {
    $body = 'Ошибка. Не найден шаблон письма!';
}
if ($maildir) {
    file_put_contents($folder . $fname . '.txt', print_r($body, true) . "\n\n\n\n\n" . print_r($mdata, true));
}
if (!isset($mdata['email_from'])) {
    return Ans::err($ans, 'Ошибка с адресом получателя!');
}
$r = Mail::toAdmin($mdata['subject'], $mdata['email_from'], $body, $mdata['testmail']);
if (!$r) {
    return Ans::err($ans, "Неудалось отправить письмо из-за ошибки на сервере!");
}
return Ans::ret($ans, "Письмо отправлено!<blockquote>" . $data['text'] . "</blockquote>");
示例#20
0
 public static function _getHtml(&$layer)
 {
     //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js
     if (@$layer['data'] || @$layer['json'] || @$layer['tpls'] || @$layer['tplroot']) {
         $tpls = Template::make($layer['tpl']);
         //С кэшем перепарсивания
         Template::includes($tpls);
         $repls = array();
         //- подшаблоны для замены, Важно, что оригинальный распаршеный шаблон не изменяется
         Each::fora($layer['tplsm'], function &($tm) use(&$repls) {
             //mix tpl
             $t = Template::make($tm);
             //С кэшем перепарсивания
             array_push($repls, $t);
             //for(var i in t)repls[i]=t[i];//Нельзя подменять в оригинальном шаблоне, который в других местах может использоваться без подмен
             //^ из-за этого обработчики указанные в tplsm срабатывают постоянно, так как нельзя поставить отметку о том что обработчик сохранён
             $r = null;
             return $r;
         });
         $layer['data'] =& self::getData($layer);
         //подменили строку data на объект data
         $alltpls = array(&$repls, &$tpls);
         $html = Template::exec($alltpls, $layer, @$layer['tplroot'], @$layer['dataroot']);
     } else {
         $tpl = self::getTpl($layer);
         $html = $tpl;
     }
     if (!$html) {
         $html = '';
     }
     return $html;
 }
示例#21
0
        $layer['div'] = $layer['parent']['div'];
    }
}, 'div');
Event::handler('layer.oncheck', function (&$layer) {
    //Без этого не показывается окно cо стилями.. только его заголовок..
    Each::forx($layer['divs'], function (&$l, $div) {
        if (@(!$l['div'])) {
            $l['div'] = $div;
        }
    });
}, 'div');
Event::handler('layer.oncheck', function (&$layer) {
    if (!isset($layer['divtpl'])) {
        return;
    }
    $layer['div'] = Template::parse(array($layer['divtpl']), $layer);
}, 'div:env,config,external');
Event::handler('layer.isshow', function (&$layer) {
    if (empty($layer['div']) && !empty($layer['parent'])) {
        return false;
    }
    //Такой слой игнорируется, события onshow не будет, но обработка пройдёт дальше у других дивов
    $start = false;
    if (Run::exec(Controller::$layers, function (&$l) use(&$layer, &$start) {
        //Пробежка не по слоям на ветке, а по всем слоям обрабатываемых после.. .то есть и на других ветках тоже
        if (!$start) {
            if (Each::isEqual($layer, $l)) {
                $start = true;
            }
            return;
        }
示例#22
0
<?php

namespace infrajs\template;

use infrajs\template\Template;
use infrajs\config\Config;
/*
	В infra все пути относительные... относительно корня, несмотря на то где реально находится файл
*/
$isinfra = is_file('vendor/autoload.php');
if (!$isinfra) {
    require_once '../../../../vendor/autoload.php';
    $tpl = "{:inc.test}{inc::}resources/inc.tpl";
} else {
    $tpl = "{:inc.test}{inc::}-template/tests/resources/inc.tpl";
}
$data = array();
$res = Template::parse(array($tpl), $data);
$ans['res'] = $res;
if ($res != 'Привет!') {
    $ans['result'] = false;
    $ans['msg'] = 'Неожиданный резльтат';
    echo json_encode($ans, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
    return;
}
$ans['result'] = true;
echo json_encode($ans, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
return;