Меню KDT

Страница "Каталог файлов (библиотека)"

Пример её создания.

Для отображения электронной библиотеки для начала нужно в панели управления сайтом создать страницу каталога файлов, с произвольным адресом страницы (например /files) и с шаблоном страницы Каталог файлов (files.html). В settings.xml необходимо добавить следующее:

<!-- Каталог файлов (библиотека) -->
<widget>
	<type>dynamiclist</type>
	<name>fileslist</name>
	<label>Каталог файлов</label>
	<search>1</search>
	<fields>
		<datatype>text</datatype>
		<name>name</name>
		<label>Название файла</label>
		<search>1</search>
	</fields>	
	<fields>
		<datatype>file</datatype>
		<name>document</name>
		<label>Файл</label>
		<maxSize>10485760</maxSize>
		<extensions>png</extensions>
		<extensions>jpeg</extensions>
		<extensions>jpg</extensions>
		<extensions>gif</extensions>
		<extensions>bmp</extensions>
		<extensions>svg</extensions>
		<extensions>doc</extensions>
		<extensions>docx</extensions>
		<extensions>xls</extensions>
		<extensions>xlsx</extensions>
		<extensions>ppt</extensions>
		<extensions>pptx</extensions>
		<extensions>pdf</extensions>
		<extensions>rtf</extensions>
		<extensions>odt</extensions>
		<extensions>txt</extensions>
		<extensions>rar</extensions>
		<extensions>zip</extensions>
	</fields>
	<uq>0</uq>
</widget>

Затем в шаблоне files.html в месте, где необходимо вывести каталог файлов, нужно прописать следующий код:

{% set onpage = 30 %}
{% set start = (xget('page', 1) - 1) * onpage %}

{% if xget('pkid') != '' %}
{% else %}
	{% set filter = {} %}
	{% set text = xget('text') %}
	
	{% if text != '' and text is not null %}
		{% set filter = xadd(filter, '%text', text) %}
	{% endif %}
	
	{% set filter = xadd(filter, 'lang', {0: site.lang}) %}
	
	
	{% set widgetname = 'fileslist' %}
	{% set res = widgetDataByType(
		'dynamiclist', {
			widget_name: widgetname,
			filter: filter,
			start: start,
			limit: onpage,
			format: 2,
			order: {
				pos: 'desc',
			},
		}
	) %}
	{% set list = res.data %}
	{% set list_count = res.count %}
	
	{% if list|length == 0 %}
		<div data-widget-name="{{widgetname}}"{% if user.isAdmin %} class="widget-render" data-href="{{link(urlGetAdd('/options/widget/settings/'~page.pkid~'/'~widgetname, 'account', user.adminAccount))}}"{% endif %}>
			<center><i>{{translate['site.files.listempty']}}</i></center>
		</div>
	{% else %}
		<div data-widget-name="{{widgetname}}"{% if user.isAdmin %} class="widget-render" data-href="{{link(urlGetAdd('/options/widget/settings/'~page.pkid~'/'~widgetname, 'account', user.adminAccount))}}"{% endif %}>
			<style type="text/css">
			.gbtn {
				float: right;
				margin: 0 3px;
				padding: 5px 10px;
				-webkit-border-radius: 4px;
				-moz-border-radius: 4px;
				border-radius: 4px;
				color: #fff;
			}
			.gbtn.download {
				background: #008d0a;
				color: #fff;
			}
			.gbtn.download:hover {
				background: #06ac12;
				color: #fff;
			}
			.gbtn.view {
				background: #036096;
				color: #fff;
			}
			.gbtn.view:hover {
				background: #0075b9;
				color: #fff;
			}
			</style>
			<table style="width: 100%; border: none;" class="lib_tab">
				{% for dt in list %}
					{% set data = getLangData(dt) %}
					{% if gettype(data.document) == 'string' %} 
						<tr class="sites2" style="border-bottom: 1px solid #ccc; padding: 5px 0; margin: 5px 0;"> 
							<td style="width: 55px;"> 
								<div class="img_wr"> 
									<a href="{{data.document}}" target="_blank"> 
										<img src="/img/fileformats/{{getExtensionsByString(data.document|lower)}}.png" width="50" height="50"> 
									</a> 
								</div> 
							</td> 
							<td>
								<b>{{data.name}}</b><br/>
								<small>{{translate['site.files.lastchange']}}: {{dt.gmtimeChange | iostrtodate('d.m.Y', 'Asia/Almaty')}}</small>
								<small>{{translate['site.files.filesize']}}: {{formatSizeUnits(data.document|filesize, 2, ['B', 'KB', 'MB', 'GB', 'TB', 'PB'])}}</small>
							</td>
							<td style="width: 75px;">
								{% if(checkExtensionsByString(['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'odt'], data.document|lower)) %} 
									{% set dohref = "http://view.officeapps.live.com/op/view.aspx?src=" %} 
									<a href="{{dohref}}//{{site.domain}}{{data.document}}" class="gbtn view" target="_blank" style="color: #fff">{{translate['site.files.view']}}</a> 
								{% endif %}
								{% if(checkExtensionsByString(['pdf'], data.document|lower)) %} 
									<a href="//{{site.domain}}{{data.document}}" class="gbtn view" target="_blank" style="color: #fff">{{translate['site.files.view']}}</a> 
								{% endif %}
							</td>
							<td style="width: 75px;">
								<a href="{{data.document}}" class="gbtn download" style="color: #fff" download>{{translate['site.files.download']}}</a>
							</td>
						</tr>
					{% endif %}
					{% if i == 5 %}<div class="clr"></div>{% endif %}
					{% set i = i + 1 %}
				{% endfor %}
			</table>
		</div>
		
		{% set page = max(xget('page', 0), 1) %}
		{% set alfa = 1 %}
		{% set count = (list_count / onpage) | ceil %}
		
		{% if count > 1 %}
			<div class="pagination">
				<center>
					<ul>
						<li class="cursor" data-page="{{max(page - 1, 1)}}"><a><<</a></li>
						{% set class="cursor" %}
						{% if 1 == page %}
							{% set class="disabled" %}
						{% endif %}
						<li class="{{class}}" data-page="1">
							<a href="{{link(urlGetAdd(site.fulluri, 'page', 1))}}">1</a>
						</li>
						
						{% if (page - alfa > 2) %}
							<li class="disabled"><a>...</a></li>
						{% endif %}
						
						{% set a1 = max(page - alfa, 2) %}
						{% set a2 = min(page + alfa, count - 1) %}
						{% if a2 >= a1 %}
							{% for i in range(a1, a2) %}
								{% set class="cursor" %}
								{% if i == page %}
									{% set class="disabled" %}
								{% endif %}
								<li class="{{class}}" data-page="{{i}}">
									<a href="{{link(urlGetAdd(site.fulluri, 'page', i))}}">{{i}}</a>
								</li>
							{% endfor %}
						{% endif %}
						
						{% if (page + alfa < count - 1) %}
							<li class="disabled"><a>...</a></li>
						{% endif %}
						
						{% if (count > 1) %}
							{% set class="cursor" %}
							{% if (count == page) %}
								{% set class="disabled" %}
							{% endif %}
							<li class="{{class}}" data-page="{{count}}">
								<a href="{{link(urlGetAdd(site.fulluri, 'page', count))}}">{{count}}</a>
							</li>
						{% endif %}
						<li class="cursor" data-page="{{page + 1}}">
							<a href="{{link(urlGetAdd(site.fulluri, 'page', page + 1))}}">>></a>
						</li>
					</ul>
				</center>  
			</div>
		{% endif %}
	{% endif %}
{% endif %}

Добавить в словарь фраз:

{
	"ru": {
		"site.files.download": "Скачать",
		"site.files.view": "Просмотр",
		"site.files.lastchange": "Последнее изменение",
		"site.files.filesize": "Размер файла",
		"site.files.listempty": "Список пуст"
	},
	"kz": {
		"site.files.download": "Көшіріп алу",
		"site.files.view": "Қарап шығу",
		"site.files.lastchange": "Соңғы өзгеріс",
		"site.files.filesize": "Файл өлшемі",
		"site.files.listempty": "Тізім бос"
	},
	"en": {
		"site.files.download": "Download",
		"site.files.view": "View",
		"site.files.lastchange": "Last change",
		"site.files.filesize": "File size",
		"site.files.listempty": "List is empty"
	}
}
Код обязательно должен обладать отступом (tabs).