<?php
/*
	Copyright © Eleanor CMS
	URL: http://eleanor-cms.ru, http://eleanor-cms.com
	E-mail: support@eleanor-cms.ru
	Developing: Alexander Sunvas*
	Interface: Rumin Sergey
	=====
	*Pseudonym

	Шаблоны для админки модуля аккаунт пользователя
*/
class TPLAdminAccount
{
	public static
		$lang;

	/*
		Меню модуля
	*/
	protected static function Menu($act='')
	{
		$lang=Eleanor::$Language[$GLOBALS['Eleanor']->module['config']['n']];
		$links=&$GLOBALS['Eleanor']->module['links'];

		$options=isset($GLOBALS['Eleanor']->module['navigation']['options']) ? $GLOBALS['Eleanor']->module['navigation']['options'] : false;
		$GLOBALS['Eleanor']->module['navigation']=array(
			array($links['inactives'],$lang['inactives'],'act'=>$act=='list'),
			array($links['letters'],$lang['letters'],'act'=>$act=='letters'),
			$options ? $options : array($links['options'],Eleanor::$Language['main']['options'],'act'=>$act=='options'),
		);
	}

	/*
		Шаблон отображения списка пользователей, ожидающих модерации
		$items Массив пользователей. Формат: ID=>array(), ключи внутреннего массива:
			full_name Полное имя пользователя
			name Имя пользователя (небезопасный HTML!)
			email E-mail пользователя
			ip IP адрес пользователя
			_aact Ссылка на активацию пользователя
			_aedit Ссылка на редактирование пользователя (системное)
			_adel Ссылка на удаление пользователя (системное)
			_adelr Ссылка на удаление пользователя с указание причины
		$sletters Массив ID пользователей, которым отправлено письмо
		$cnt Количество пользователей, ожидающих модерации страниц всего
		$pp Количество пользователей, ожидающих модерации на страницу
		$page Номер текущей страницы, на которой мы сейчас находимся
		$qs Массив параметров адресной строки для каждого запроса
		$links Перечень необходимых ссылок, массив с ключами:
			sort_name Ссылка на сортировку списка $items по имени пользователя (возрастанию/убыванию в зависимости от текущей сортировки)
			sort_email Ссылка на сортировку списка $items по email (возрастанию/убыванию в зависимости от текущей сортировки)
			sort_ip Ссылка на сортировку списка $items по ip адресу (возрастанию/убыванию в зависимости от текущей сортировки)
			sort_id Ссылка на сортировку списка $items по ID (возрастанию/убыванию в зависимости от текущей сортировки)
			form_items Ссылка для параметра action формы, внутри которой происходит отображение перечня $items
			pp Фукнция-генератор ссылок на изменение количества пользователей отображаемых на странице
			first_page Ссылка на первую страницу пагинатора
			pages Функция-генератор ссылок на остальные страницы
	*/
	public static function InactiveUsers($items,$sletters,$cnt,$pp,$page,$qs,$links)
	{
		static::Menu('list');
		$ltpl=Eleanor::$Language['tpl'];
		$GLOBALS['jscripts'][]='js/checkboxes.js';

		$qs+=array(''=>array());
		$qs['']+=array('fi'=>array());
		$fs=(bool)$qs['']['fi'];
		$qs['']['fi']+=array(
			'name'=>false,
			'namet'=>false,
			'id'=>false,
			'regto'=>false,
			'regfrom'=>false,
			'ip'=>false,
			'email'=>false,
		);

		$finamet='';
		$namet=array(
			'b'=>static::$lang['begins'],
			'q'=>static::$lang['match'],
			'e'=>static::$lang['endings'],
			'm'=>static::$lang['contains'],
		);
		foreach($namet as $k=>&$v)
			$finamet.=Eleanor::Option($v,$k,$qs['']['fi']['namet']==$k);

		$Lst=Eleanor::LoadListTemplate('table-list',5)
			->begin(
				array(static::$lang['user_name'],'href'=>$links['sort_name']),
				array('E-mail','href'=>$links['sort_email']),
				array('IP','href'=>$links['sort_ip']),
				array($ltpl['functs'],'href'=>$links['sort_id']),
				array(Eleanor::Check('mass',false,array('id'=>'mass-check')),20)
			);

		if($items)
		{
			$images=Eleanor::$Template->default['theme'].'images/';
			foreach($items as $k=>&$v)
				$Lst->item(
					'<a href="'.$v['_aedit'].'">'.$v['name'].'</a>'.($v['name']==$v['full_name'] ? '' : '<br /><i>'.$v['full_name'].'</i>').(in_array($k,$sletters) ? '<br /><b style="color:green">'.static::$lang['lettersent'].'</b>' : ''),
					array($v['email'],'center'),
					array($v['ip'],'center','href'=>'http://eleanor-cms.ru/whois/'.$v['ip'],'hrefextra'=>array('target'=>'_blank')),
					$Lst('func',
						array($v['_aact'],$ltpl['activate'],$images.'active.png'),
						array($v['_aedit'],$ltpl['edit'],$images.'edit.png'),
						$v['_adel'] ? array($v['_adel'],$ltpl['delete'],$images.'delete.png') : false,
						$v['_adelr'] ? array($v['_adelr'],static::$lang['delr'],$images.'delete.png') : false
					),
					Eleanor::Check('mass[]',false,array('value'=>$k))
				);
		}
		else
			$Lst->empty(static::$lang['not_found']);

		return Eleanor::$Template->Cover(
		'<form method="post">
			<table class="tabstyle tabform" id="ftable">
				<tr class="infolabel"><td colspan="2"><a href="#">'.$ltpl['filters'].'</a></td></tr>
				<tr>
					<td><b>'.static::$lang['user_name'].'</b><br />'.Eleanor::Select('fi[namet]',$finamet,array('style'=>'width:30%')).Eleanor::Input('fi[name]',$qs['']['fi']['name'],array('style'=>'width:68%')).'</td>
					<td><b>E-mail</b><br />'.Eleanor::Input('fi[email]',$qs['']['fi']['email']).'</td>
				</tr>
				<tr>
					<td><b>IDs</b><br />'.Eleanor::Input('fi[id]',$qs['']['fi']['id']).'</td>
					<td><b>IP</b><br />'.Eleanor::Input('fi[ip]',$qs['']['fi']['ip']).'</td>
				</tr>
				<tr>
					<td><b>'.static::$lang['register'].'</b> '.static::$lang['from-to'].'<br />'.Dates::Calendar('fi[regfrom]',$qs['']['fi']['regfrom'],true,array('style'=>'width:35%')).' - '.Dates::Calendar('fi[regto]',$qs['']['fi']['regto'],true,array('style'=>'width:35%')).'</td>
					<td style="text-align:center;vertical-align:middle">'.Eleanor::Button($ltpl['apply']).'</td>
				</tr>
			</table>
<script type="text/javascript">//<![CDATA[
$(function(){
	var fitrs=$("#ftable tr:not(.infolabel)");
	$("#ftable .infolabel a").click(function(){
		fitrs.toggle();
		$("#ftable .infolabel a").toggleClass("selected");
		return false;
	})'.($fs ? '' : '.click()').';
	One2AllCheckboxes("#checks-form","#mass-check","[name=\"mass[]\"]",true);
});//]]></script>
		</form>
		<form id="checks-form" action="'.$links['form_items'].'" method="post" onsubmit="return (CheckGroup(this) && ($(\'select\',this).val()==\'dr\' || confirm(\''.$ltpl['are_you_sure'].'\')))">'
		.$Lst->end()
		.'<div class="submitline" style="text-align:right"><div style="float:left">'.sprintf(static::$lang['to_pages'],$Lst->perpage($pp,$links['pp'])).'</div>'.$ltpl['with_selected'].Eleanor::Select('op',Eleanor::Option($ltpl['activate'],'a').Eleanor::Option(static::$lang['sendlet'],'s').Eleanor::Option($ltpl['delete'],'d').Eleanor::Option(static::$lang['delr'],'dr')).Eleanor::Button('Ok').'</div></form>'
		.Eleanor::$Template->Pages($cnt,$pp,$page,array($links['pages'],$links['first_page'])));
	}

	/**
	 * Шаблон страницы удаления пользователей с указанием причины
	 * @param array $users Массив пользователей id=>имя пользователя
	 * @param string $back URI возврата
	 */
	public static function ToDelete($users,$back)
	{
		static::Menu();
		if($back)
			$back=Eleanor::Input('back',$back,array('type'=>'hidden'));
		$ltpl=Eleanor::$Language['tpl'];
		$tusers='';
		foreach($users as $k=>&$v)
			$tusers.='<label>'.Eleanor::Check('ids[]',true,array('value'=>$k)).' '.htmlspecialchars($v['name'],ELENT,CHARSET).($v['name']==$v['full_name'] ? '' : ' ('.htmlspecialchars($v['name'],ELENT,CHARSET).')').'</label><br />';
		return Eleanor::$Template->Cover('<div class="wbpad"><div class="warning"><img src="'.Eleanor::$Template->default['theme'].'/images/confirm.png" class="info" alt="" /><div><form method="post" action="">'
			.$back.'<h4>'.static::$lang['del_users'].'</h4><hr />'.$tusers.'<br /><h4>'.static::$lang['dreason'].'</h4><hr />'.$GLOBALS['Eleanor']->Editor->Area('reason').'<div style="text-align:center"><input class="button" type="submit" value="'.$ltpl['yes'].'" /><input class="button" type="button" value="'.$ltpl['no'].'" onclick="history.go(-1); return false;" /></div></form></div><div class="clr"></div></div></div>');
	}

	/**
	 * Шаблон страницы с редактированием форматов писем
	 * @param array $controls Перечень контролов в соответствии с классом контролов. Если какой-то элемент массива не является массивом, значит это заголовок подгруппы контролов
	 * @param array $values Результирующий HTML код контролов, который необходимо вывести на странице. Ключи данного массива совпадают с ключами $controls
	 */
	public static function Letters($controls,$values)
	{
		static::Menu('letters');
		$Lst=Eleanor::LoadListTemplate('table-form')->form()->begin();
		foreach($controls as $k=>&$v)
			if($v)
				if(is_array($v) and !empty($values[$k]))
					$Lst->item(array($v['title'],Eleanor::$Template->LangEdit($values[$k],null),'tip'=>$v['descr']));
				elseif(is_string($v))
					$Lst->head($v);

		return Eleanor::$Template->Cover($Lst->button(Eleanor::Button(Eleanor::$Language['tpl']['save']))->end()->endform());
	}

	/**
	 * Обертка для настроек
	 * @param string $c Интерфейс настроек
	 */
	public static function Options($c)
	{
		static::Menu('options');
		return$c;
	}
}
TplAdminAccount::$lang=Eleanor::$Language->Load(Eleanor::$Template->default['theme'].'langs/account-*.php',false);