Этот тип шаблона является главным для раздела, он содержит данные о категориях форума.
Массив записей с данными о категориях. Каждая запись представляет собой массив с ключами:
Название категории.
Строковой идентификатор URL категории.
Массив записей с данными о подкатегориях. Каждая запись представляет собой массив с ключами:
<h1>{$section_name}</h1> <br> <table class="forum_grid"> {section name=i loop=$categories} <tr> <th align="left">{$categories[i].name}</th> <th width="80">Темы</th> <th width="80">Сообщения</th> <th align="left" width="180">Последнее сообщение</th> </tr> {section name=j loop=$categories[i].subcategories} <tr> <td align="left"> <a href="{$categories[i].subcategories[j].link}">{$categories[i].subcategories[j].name}</a><br> <div class="note">{$categories[i].subcategories[j].description}</div> </td> <td class="colctop">{$categories[i].subcategories[j].topics}</td> <td class="colcmes">{$categories[i].subcategories[j].messages}</td> <td> {if $categories[i].subcategories[j].lastmess} {$categories[i].subcategories[j].lastmess.date|date_format:"%d.%m.%Y %T"}<br> <a href="{$categories[i].subcategories[j].lastmess.link}" title="Последнее сообщение">{$categories[i].subcategories[j].lastmess.topic}</a><br> от {$categories[i].subcategories[j].lastmess.owner.name} {else} {/if} </td> </tr> {/section} {/section} </table>
Этот тип шаблона содержит данные о выбранной категории, а так же список тем, которые принадлежат этой категории.
Массив с данными о текущей категории, состоит из ключей:
Название категории.
Ссылка на текущую страницу категории.
Описание категории.
Строковой идентификатор URL категории.
Флаг доступа к добавлению новых и закрытию старых тем (для авторизированного пользователя).
Ссылка на страницу добавления новой темы. Если пусто, то нет доступа или пользователь неавторизирован.
Массив записей с данными о темах. Каждая запись представляет собой массив с ключами:
Название темы.
ссылка на страницу сообщений в теме.
Дата создания темы в формате UTC.
HTML код нумератора страниц сообщений в теме для быстрого перехода.
Количество просмотров темы.
Количество сообщений в теме.
Массив с данными пользователя-автора темы, формат аналогичен описанному в руководстве модуля пользователей.
Массив с данными о последнем сообщении, состоит из ключей:
Определяет закрыта ли тема, принимает значения Y/N (N - Закрыта).
Ссылка на действие по закрытию темы (Доступно только автору темы и модератору).
Ссылка на действие по удалению темы (Доступно только модератору).
Объект постраничной навигации.
<h1>{$category.name}</h1> <br> {if $newtopiclink} <p align="right"><a href="{$newtopiclink}">Новая тема</a></p> {/if} {if $topics} <table class="forum_grid"> <tr> <th align="left">{$category.name}</th> <th width="80">Автор</th> <th width="80">Сообщ./Просм.</th> <th align="left" width="180">Последнее сообщение</th> </tr> {section name=i loop=$topics} <tr> <td> <a href="{$topics[i].link}">{$topics[i].name}</a>{if $topics[i].pager} [ {$topics[i].pager} ] {/if} {if $topics[i].closelink} <a href="#" onclick="if(confirm('Закрыть тему?')) document.location='{$topics[i].closelink}'">[Закрыть]</a> {/if} {if $topics[i].deletelink} <a href="#" onclick="if(confirm('Удалить тему?')) document.location='{$topics[i].deletelink}'">[Удалить]</a> {/if} </td> <td class="colctop">{$topics[i].owner.name}</td> <td class="colcmes">{$topics[i].messages} / {$topics[i].views}</td> <td> {if $topics[i].lastmess} {$topics[i].lastmess.date|date_format:"%D %T"}<br> от {$topics[i].lastmess.owner.name} {else} {/if} </td> </tr> {/section} </table> {object obj=$topics_pager} {else} <p>Пока не создано ни одной темы.</p> {/if}
Этот тип шаблона содержит данные о выбранной теме и список сообщений ней, а так же форму добавления нового сообщения.
Массив с данными о текущей категории, структура данных аналогична описанной выше.
Массив с данными о текущей теме, состоит из ключей:
Название темы.
Ссылка на текущую страницу темы.
Дата создания темы в формате UTC.
Определяет закрыта ли тема, принимает значения Y/N (N - Закрыта).
Флаг доступа к добавлению новых и закрытию старых тем (для авторизированного пользователя).
Флаг доступа к добавлению новых сообщений (для авторизированного пользователя).
Флаг использования прикрепенных файлов с проверкой доступа на возможность скачивания.
Ссылка на страницу добавления новой темы. Если пусто, то нет доступа или пользователь неавторизирован.
Массив записей с данными о темах. Каждая запись представляет собой массив с ключами:
Дата создания сообщения в формате UTC.
Дата редактирования сообщения в формате UTC.
Дата модерирования сообщения в формате UTC.
Сообщение в формате BBCode.
Сообщение в формате HTML.
Числовой идентификатор прикрепленного файла.
Масив с данными пользователя-автора сообщения, с дополнительными ключами:
Ссылка на действие по цитированию сообщения (доступно только авторизированному пользователю).
Ссылка на действие по редактированию сообщения (доступно только последнее сообщение в теме для автора или любое для модератора).
Ссылка на действие по удалению сообщения (доступно только последнее сообщение в теме для автора или любое для модератора).
Объект постраничной навигации.
Флаг режима предпросмотра.
Массив данных для начальных значений формы, используется так же для режима предпросмотра. В случае предпросмотра копирует некоторые данные из $_REQUEST, поэтому при выводе важно защищать значения с помощью escape. Состоит из ключей:
Числовой идентификатор редактируемого сообщения.
Масив с данными пользователя-автора сообщения, с дополнительными ключами:
Дата создания сообщения в формате UTC.
Сообщение в формате BBCode.
Сообщение в формате HTML.
Режим уведомлений о новых сообщениях (Y/N).
Массив с данными о режиме уведомлений о новых сообщениях в теме для пользователя. Состоит из ключей:
Логическое значение, определяет включено ли уведомление.
Ссылка на действие по переключению режима уведомлений в обратное.
<h1>{$topic.name}</h1> <br> {if $preview} <h4>Предварительный просмотр</h4> <table class="forum_post"> <tr> <td class="user_brief" rowspan="2"> {image id=$form.owner.idimg width=120} <p><b>{$form.owner.name}</b><br> Сообщений: {$form.owner.mcount}</p> </td> <td class="user_post"> <div class="post_date">{$form.date|date_format:"%D %T"}</div> <div class="post_text"> {$form.message} </div> </td> </tr> <tr> <td class="post_panel"> </td> </tr> </table> {else} {if $newtopiclink} <p align="right"><a href="{$newtopiclink}">Новая тема</a></p> {/if} {if $auth->isLogin()} <p align="right"><a href="{$tomail.link}">{if $tomail.active}Не получать уведомления о новых сообщениях{else}Получать уведомления о новых сообщениях{/if}</a></p> {/if} {object obj=$messages_pager} <table class="forum_post"> <tr> <th>Автор</th> <th>Текст сообщения</th> </tr> {section name=i loop=$messages} <tr> <td class="user_brief" rowspan="2"> {image id=$messages[i].owner.idimg width=120} <p> {if $auth->isLogin()} <a href="javascript:InsertEditText($('message'),'[b]{$messages[i].owner.name}[/b],\n',0)"><b>{$messages[i].owner.name}</b></a> {else} <b>{$messages[i].owner.name}</b> {/if}<br> Сообщений: {$messages[i].owner.mcount} </p> </td> <td class="user_post"> <div class="post_date"> {$messages[i].date|date_format:"%D %T"} {if $messages[i].edate} Отредактировано: {$messages[i].edate|date_format:"%D %T"} {/if} {if $messages[i].mdate} Отмодерировано: {$messages[i].mdate|date_format:"%D %T"} {/if} </div> <div class="post_text"> {$messages[i].message} </div> </td> </tr> <tr> <td class="post_panel"> {if $usefiles && $messages[i].idfile} {download id=$messages[i].idfile size=true} {/if} {if $messages[i].quotelink} <a href="{$messages[i].quotelink}">[Цитировать]</a> {/if} {if $messages[i].editlink} <a href="{$messages[i].editlink}">[Редактировать]</a> {/if} {if $messages[i].deletelink} <a href="#" onclick="if(confirm('Удалить сообщение?')) document.location='{$messages[i].deletelink}'">[Удалить]</a> {/if} </td> </tr> {/section} </table> {object obj=$messages_pager} {/if} <br> {if !$auth->isLogin()} <p>Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо <a href="{$registerlink}">зарегистрироваться</a>.</p> {elseif $topic.active=='N'} <p>Тема закрыта.</p> {elseif !$newmessage_access} <p>Нет прав для добавления сообщений.</p> {elseif $auth->isLogin() && $topic.active=='Y' && $newmessage_access} {if !$preview}<a name="messageform"></a>{/if} {if $form.idedit} <h3>Редактирование сообщения</h3> {else} <h3>Новое сообщение</h3> {/if} <br> {literal} <script type="text/javascript"> function valid_form(form) { if(form.message.value.replace(/\s+/,'').length<5) { alert("Пожалуйста, заполните сообщение."); return false; } return true; } function save(form) { if(valid_form(form)) { form.elements.action.value='addmessage'; form.submit(); } } function cancel(form) { form.elements.action.value='cancel'; form.submit(); } </script> {/literal} <form class="forum_message" method="post" onsubmit="return valid_form(this)" enctype="multipart/form-data"> <div class="smiles"> <a href="javascript:addSmile(';)')"><img src="/templates/admin/images/smiles/wink.gif" alt="wink" width="20" height="20"></a> <a href="javascript:addSmile(':)')"><img src="/templates/admin/images/smiles/smile.gif" alt="smile" width="20" height="20"></a> <a href="javascript:addSmile(':P')"><img src="/templates/admin/images/smiles/tongue.gif" alt="tongue" width="20" height="20"></a> <a href="javascript:addSmile(':D')"><img src="/templates/admin/images/smiles/biggrin.gif" alt="biggrin" width="20" height="20"></a> <a href="javascript:addSmile(':lol:')"><img src="/templates/admin/images/smiles/lol.gif" alt="lol" width="20" height="20"></a> <a href="javascript:addSmile('-_-')"><img src="/templates/admin/images/smiles/closedeyes.gif" alt="closedeyes" width="20" height="20"></a> <a href="javascript:addSmile('(_(')"><img src="/templates/admin/images/smiles/glare.gif" alt="glare" width="20" height="20"></a> <a href="javascript:addSmile(':huh:')"><img src="/templates/admin/images/smiles/huh.gif" alt="huh" width="20" height="20"></a> <a href="javascript:addSmile(':(')"><img src="/templates/admin/images/smiles/sad.gif" alt="sad" width="20" height="20"></a> <a href="javascript:addSmile(':angry:')"><img src="/templates/admin/images/smiles/angry.gif" alt="angry" width="20" height="20"></a> <a href="javascript:addSmile('B)')"><img src="/templates/admin/images/smiles/cool.gif" alt="cool" width="20" height="20"></a> <a href="javascript:addSmile(':unsure:')"><img src="/templates/admin/images/smiles/unsure.gif" alt="unsure" width="20" height="20"></a> <a href="javascript:addSmile(':o')"><img src="/templates/admin/images/smiles/ohmy.gif" alt="ohmy" width="20" height="20"></a> <a href="javascript:addSmile(':blink:')"><img src="/templates/admin/images/smiles/blink.gif" alt="blink" width="20" height="20"></a> <a href="javascript:addSmile(':shok:')"><img src="/templates/admin/images/smiles/shok.gif" alt="shok" width="20" height="20"></a> </div> <div> <input type="button" value=" B " OnClick="addTag('b')"> <input type="button" value=" I " OnClick="addTag('i')"> <input type="button" value=" U " OnClick="addTag('u')"> <input type="button" value=" QUOTE " OnClick="addTag('quote')"> <input type="button" value=" CODE " OnClick="addTag('code')"> </div> <textarea id="message" name="bbcode" rows="8" style="width:100%">{$form.bbcode|escape}</textarea> <label><input type="checkbox" name="tomail"{if $tomail.active} checked{/if}> Получать уведомления о новых сообщениях.</label><br> {if $usefiles} <br>Прикрепленный файл:<br> <input type="file" name="attach"><br> {/if} <br> {submit caption="Предварительный просмотр"} {button caption="Сохранить" onclick="save(this.form)"} {if $form.message} {button caption="Отмена" onclick="cancel(this.form)"} {/if} {hidden name="id" value=$form.idedit} {hidden name="action" value="preview"} {hidden name="authcode" value=$system.authcode} </form> {if $form.message}<script type="text/javascript">document.location='#messageform';</script>{/if} {/if}
Этот типа шаблона содержит данные для страницы добавления новой темы.
Массив с данными о текущей категории, структура данных аналогична описанной выше.
Флаг доступа к добавлению новых и закрытию старых тем (для авторизированного пользователя).
Флаг использования прикрепенных файлов с проверкой доступа на возможность скачивания.
Флаг режима предпросмотра.
Массив данных для начальных значений формы, используется так же для режима предпросмотра. В случае предпросмотра копирует некоторые данные из $_REQUEST, поэтому при выводе важно защищать значения с помощью escape. Состоит из ключей:
Название темы.
Масив с данными пользователя и дополнительным ключом:
Дата создания темы.
Сообщение в формате BBCode.
Сообщение в формате HTML.
Режим уведомлений о новых сообщениях (Y/N).
<h1>Новая тема</h1> <br> {if $preview} <h3>Предварительный просмотр</h3> <table class="forum_post"> <tr> <td class="user_brief" rowspan="2"> {image id=$form.owner.idimg width=120} <p><b>{$form.owner.name}</b><br> Сообщений: {$form.owner.mcount}</p> </td> <td class="user_post"> <div class="post_date">{$form.date|date_format:"%D %T"}</div> <div class="post_text"> {$form.message} </div> </td> </tr> <tr> <td class="post_panel"> </td> </tr> </table> {/if} {if !$auth->isLogin()} <p>Вы не можете добавить новую тему. Вам необходимо авторизироваться на сайте под своим логином либо <a href="{$registerlink}">зарегистрироваться</a>.</p> {elseif !$newclosetopic_access} <p>Нет прав для добавления новой темы.</p> {elseif $auth->isLogin() && $newclosetopic_access} {literal} <script type="text/javascript"> function valid_form(form) { if(form.name.value.replace(/\s+/,'').length==0) { alert("Пожалуйста, заполните название."); return false; } if(form.message.value.replace(/\s+/,'').length<10) { alert("Пожалуйста, заполните сообщение."); return false; } return true; } function save(form) { if(valid_form(form)) { form.elements.action.value='addtopic'; form.submit(); } } </script> {/literal} <form class="forum_message" method="post" onsubmit="return valid_form(this)" enctype="multipart/form-data"> <p>Название:</p> {editbox name="name" width="40%" text=$form.name tabindex="1"}<br> <br> <div class="smiles"> <a href="javascript:addSmile(';)')"><img src="/templates/admin/images/smiles/wink.gif" alt="wink" width="20" height="20"></a> <a href="javascript:addSmile(':)')"><img src="/templates/admin/images/smiles/smile.gif" alt="smile" width="20" height="20"></a> <a href="javascript:addSmile(':P')"><img src="/templates/admin/images/smiles/tongue.gif" alt="tongue" width="20" height="20"></a> <a href="javascript:addSmile(':D')"><img src="/templates/admin/images/smiles/biggrin.gif" alt="biggrin" width="20" height="20"></a> <a href="javascript:addSmile(':lol:')"><img src="/templates/admin/images/smiles/lol.gif" alt="lol" width="20" height="20"></a> <a href="javascript:addSmile('-_-')"><img src="/templates/admin/images/smiles/closedeyes.gif" alt="closedeyes" width="20" height="20"></a> <a href="javascript:addSmile('(_(')"><img src="/templates/admin/images/smiles/glare.gif" alt="glare" width="20" height="20"></a> <a href="javascript:addSmile(':huh:')"><img src="/templates/admin/images/smiles/huh.gif" alt="huh" width="20" height="20"></a> <a href="javascript:addSmile(':(')"><img src="/templates/admin/images/smiles/sad.gif" alt="sad" width="20" height="20"></a> <a href="javascript:addSmile(':angry:')"><img src="/templates/admin/images/smiles/angry.gif" alt="angry" width="20" height="20"></a> <a href="javascript:addSmile('B)')"><img src="/templates/admin/images/smiles/cool.gif" alt="cool" width="20" height="20"></a> <a href="javascript:addSmile(':unsure:')"><img src="/templates/admin/images/smiles/unsure.gif" alt="unsure" width="20" height="20"></a> <a href="javascript:addSmile(':o')"><img src="/templates/admin/images/smiles/ohmy.gif" alt="ohmy" width="20" height="20"></a> <a href="javascript:addSmile(':blink:')"><img src="/templates/admin/images/smiles/blink.gif" alt="blink" width="20" height="20"></a> <a href="javascript:addSmile(':shok:')"><img src="/templates/admin/images/smiles/shok.gif" alt="shok" width="20" height="20"></a> </div> <div> <input type="button" value=" B " onclick="addTag('b')"> <input type="button" value=" I " onclick="addTag('i')"> <input type="button" value=" U " onclick="addTag('u')"> <input type="button" value=" QUOTE " OnClick="addTag('quote')"> <input type="button" value=" CODE " OnClick="addTag('code')"> </div> <textarea tabindex="2" id="message" name="bbcode" rows="8" style="width:100%">{$form.bbcode|escape}</textarea> <label><input type="checkbox" name="tomail"{if $form.tomail=='Y'} checked{/if}> Получать уведомления о новых сообщениях.</label><br> {if $usefiles} <br>Прикрепленный файл:<br> <input type="file" name="attach"><br> {/if} <br> {submit caption="Предварительный просмотр"} {button caption="Сохранить" onclick="save(this.form)"} {hidden name="action" value="preview"} {hidden name="authcode" value=$system.authcode} </form> {/if}
Ссылка на страницу регистрации нового пользователя.