Вы не зашли.
Главная » PHP » Smarty на примере модификации форума PunBB
#1. tipsun Off (19)
Moderator
2012.02.17 14:02
Код:
span style="color: #0000BB"><?php$posts = $pids = array();while ($cur_post = $db->fetch_assoc($result)) { $posts[] = $cur_post; $pids[] = $cur_post['id'];}$db->free_result($result);//Trololo//Я бы все заменил на $smarty->assign('posts', $db->fetchAll());//Но там везде $posts и $pids используются$smarty->assign('posts', $posts);
Отредактировано tipsun (2012.02.17 16:04)
#2. tipsun Off (19)
Moderator
2012.02.17 15:03
Что делать, если ключ массива задан с пробелом?

Код:
{if $quickpost}
<div>
<strong>{$lang_topic['Quick post']}</strong>
</div>
Добавлено спустя   9 минут  7 секунд:
Что-то типа такого можно?

Код:
<input type="hidden" name="form_user" value="{$pun_user.username ? $pun_user.username : 'Guest'}" />
Или так надо?
Код:
<input type="hidden" name="form_user" value="{if $pun_user.username} {$pun_user.username} {else} Guest {/if}" />
Отредактировано tipsun (2012.02.17 15:03)
#3. tipsun Off (19)
Moderator
2012.02.17 16:04
В файле viewtopic я почти всю разметку занес в шаблон. То, что в гигантском цикле foreach осталось. Все остальное не трогаю.
Отредактировано tipsun (2012.02.17 16:04)
#4. Gemorroj Off (107)
Administrator
2012.02.17 16:04
я не помню уже. на счет тернарного оператора.
#5. tipsun Off (19)
Moderator
2012.02.17 16:04
Карма
Не лучше ли сразу?
Код:
span style="color: #0000BB"><?php$posts = $pids = array();while ($cur_post = $db->fetch_assoc($result)) { $cur_post['karma'] = $db->fetch_row($db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false));; $posts[] = $cur_post;} $db->free_result($result);//tpl: posts[i].karma[0]//tpl: posts[i].karma[1]
Отредактировано tipsun (2012.02.17 16:04)
#6. tipsun Off (19)
Moderator
2012.02.17 20:08
У меня руки кривые?
Или это проделки самописного MySQLi?
Там посмотрел, видимо сбивает предыдущий запрос.
Код:
span style="color: #0000BB"><?php$posts = $pids = array();while ($cur_post = $db->fetch_assoc($result)) { $karma = $db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false) $cur_post['karma'] = $db->fetch_row($karma); $posts[] = $cur_post; $pids[] = $cur_post['id'];}$db->free_result($result);
Отредактировано tipsun (2012.02.18 10:10)
#7. tipsun Off (19)
Moderator
2012.02.17 21:09
Просто я думал в один массив все слить, потом его в смарти загнать и уже в шаблоне через фореач все допилить.
#8. tipsun Off (19)
Moderator
2012.02.17 22:10
Вот за сегодня чего получилось.
Не добил пока еще sad
Там еще запутанно с выводом для Пользователя и Гостя
Код:
span style="color: #0000BB"><?php<!-- viewtopic template --><div class="con"><a href="index.php">{$lang_common.Index}</a> / <a href="viewforum.php?id={$cur_topic.forum_id}">{$cur_topic.forum_name}</a> / {$cur_topic.subject}</div><!-- +FOREACH -->{foreach from=$posts item=$cur_post}<!-- <a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a> --><table class="msg2"> <tr> <td> <div id="p{$cur_post.id}"> <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/> {format_time($cur_post['posted'])}<br/> <strong>{$username}</strong> {if $pun_config.o_show_post_karma == 1 || $pun_user.g_id < {PUN_GUEST}} {if $pun_user.is_guest || $karma[1]} {$karma[0]} {else} (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {$cur_post.karma[0]} <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>) {/if} {/if} {if $cur_post.poster_id > 1 && $cur_post.is_online == $cur_post.poster_id} <br/> <span class="green">{$lang_topic.Online}</span> {/if} </div> </td> <!-- user avatar --> {if $cur_post.poster_id > 1 && $pun_config.o_avatars == 1 && $cur_post.use_avatar == 1 && $pun_user.show_avatars} <td> <img src="../{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.gif" alt="*" /> </td> {else} {/if} </tr></table>{/foreach}<!-- -FOREACH --><p class="con">{$paging_links}</p>{if $pun_user.g_post_replies}<div class="blocktable"> <strong><a class="in" href="post.php?tid={$id}">{$lang_topic.`Post reply`}</a></strong></div>{/if}{if $quickpost}<div> <strong>{$lang_topic.`Quick post`}</strong></div><div class="input"> <form method="post" action="post.php?tid={$id}"> <div> <fieldset> <legend>{$lang_common.`Write message legend`}</legend> {if $pun_config.o_antiflood} <input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}" /> <input type="hidden" name="form_sent" value="1" /> <input type="hidden" name="form_user" value="{if $pun_user.username}{$pun_user.username}{else}Guest{/if}" /> {/if} <!-- Ввод имени для гостей --> {if $pun_user.is_guest} {$lang_common.Username}<br/> <input type="text" name="req_username" tabindex="1" /><br/> {/if} <textarea name="req_message" rows="4" cols="24" tabindex="1"></textarea><br/> {if $is_admmod} <input type="checkbox" name="merge" value="1" checked="checked" /> {$lang_post.`Merge posts`} {/if} </fieldset><br/><input type="submit" name="submit" tabindex="2" value="{$lang_common.Submit}" accesskey="s" /> </div> </form></div>{/if}
Отредактировано tipsun (2012.02.17 22:10)
#9. Gemorroj Off (107)
Administrator
2012.02.18 12:12
tipsun, я не понял на счет кармы. Покажи как сейчас и что тебе не нравится. Я на память весь код не помню.
Вообще не переживай если код в шаблонах громоздкий получается. Само то, что верстка будет вынесена уже само по себе очень большой плюс.
По поводу разных шаблонов для пользователя и гостя - есть смысл. Но еще же есть модераторы и админы. Там  тоже немного отличается внешний вид.
#10. tipsun Off (19)
Moderator
2012.02.18 12:12
Неправильно я там сделал.
Забыл про условие {if $cur_post.poster_id > 1} надо во все остальные условия подставлять, где эти условия в само условие входили smile
- - - -
Сейчас карму покажу
Код:
span style="color: #0000BB"><?php<!-- template -->{foreach from=$posts item=$cur_post}<table class="msg2"> <tr> <td> <div id="p{$cur_post.id}"> <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/> {$cur_post.posted|date:%d/%m/%y %h:%i:%s}<br/> <!-- User or Guest --> <strong>{if $cur_post.poster_id > 1}<a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a>{else}{$cur_post.username}{/if}</strong> {if $cur_post['poster_id'] > 1 && $pun_config.o_show_post_karma == 1 || $pun_user.g_id < {PUN_GUEST}} {if $pun_user.is_guest || $karma[1]} {$cur_post.karma[0]} {else} (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {$cur_post.karma[0]} <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>) {/if} {/if}
* * * *
Чтоб её узнать, надо запрос из шаблона делать или в логике пройтись по готовому массиву с сообщениями и определить карму.

Код:
span style="color: #0000BB"><?phpforeach ($posts as $cur_post) { $post_count++; $signature = $is_online = $user_avatar = ''; $post_actions = $user_contacts = $user_info = array(); // If the poster is a registered user. $karma = ''; if ($cur_post['poster_id'] > 1) { if ($pun_config['o_show_post_karma'] == 1 || $pun_user['g_id'] < PUN_GUEST) { $karma = $db->fetch_row($db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false)); $karma[0] = intval($karma[0]); if ($pun_user['is_guest'] || $karma[1]) { $karma = ' ('.$karma[0].')'; } else { $karma = ' ('.$karma[0].') <a href="karma.php?to='.$cur_post['poster_id'].'&amp;vote=1&amp;pid='.$cur_post['id'].'">+</a>/<a href="karma.php?to='.$cur_post['poster_id'].'&amp;vote=-1&amp;pid='.$cur_post['id'].'">-</a>'; } }
Добавлено спустя   6 минут  45 секунд:
У меня пока там ошибки и т.д. Потом когда полностью готов шаблон будет, уже можно будет отладить.
Вообщем насчет кармы:
Там сначала посты через цикл вытаскиваются, потом через второй цикл определяется карма каждого постера.
Удобней было бы сразу в одном цикле это сделать и потом в шаблоне через цикл вывести без всяко запросов.
Отредактировано tipsun (2012.02.18 12:12)
#11. tipsun Off (19)
Moderator
2012.02.18 15:03
Не хочет ничего показывать, почему?
Код:
span style="color: #0000BB"><?phpdefine('SMARTY_DIR', PUN_ROOT . 'plugins/Smarty/');require_once(SMARTY_DIR . 'Smarty.class.php');$smarty = new Smarty();$smarty->template_dir = PUN_ROOT . 'themes/wap/templates/';$smarty->compile_dir = PUN_ROOT . 'themes/wap/compile/';$smarty->config_dir = PUN_ROOT . 'themes/wap/configs/';$smarty->cache_dir = PUN_ROOT . 'themes/wap/cache/';$smarty->assign('paging_links', $paging_links);$smarty->assign('posts', $paging_links);$smarty->assign('pun_config', $pun_config);$smarty->assign('pun_user', $pun_user);$smarty->assign('posts', $posts);//$smarty->debugging = true;$smarty->display('viewtopic.tpl');
Отредактировано tipsun (2012.02.18 15:03)
#12. tipsun Off (19)
Moderator
2012.02.18 17:05
Так видно что класс загрузился.
Код:
span style="color: #0000BB"><?phpvar_dump($smarty);
Добавлено спустя   6 минут  33 секунды:
А, шаблон битый. Неправильно что-то написал.
Другой, простой-тестовый, загрузило-показало.
Отредактировано tipsun (2012.02.18 17:05)
#13. tipsun Off (19)
Moderator
2012.02.18 18:06
Короче массивы с ключами, содержащими пробелы надо писать как обычно, видимо.
Код:
{$lang_topic['Quick post']}
Отредактировано tipsun (2012.02.18 19:07)
#14. tipsun Off (19)
Moderator
2012.02.18 18:06
Ну сейчас совсем другое дело. Вживую собирать (смотреть на результат) гораздо приятнее smile
Хоть видно, что вроде получается.
Отредактировано tipsun (2012.02.18 18:06)
#15. tipsun Off (19)
Moderator
2012.02.18 19:07
Я вот подумал, зачем я тогда время трачу на обработку этих $cur_post['edit'] -> $cur_post.edit
Может как есть оставлять?
Отредактировано tipsun (2012.02.18 19:07)
#16. tipsun Off (19)
Moderator
2012.02.18 21:09
За сегодня.
Ошибок в компиляции нет.
Пропустил некоторые функции типа антиспам, счетчик сообщений, сигнатура итд.
Код:
span style="color: #0000BB"><?php{include file='header.tpl'}<div class="con"> <a href="index.php">{$lang_common.Index}</a> / <a href="viewforum.php?id={$cur_topic.forum_id}">{$cur_topic.forum_name}</a> / {$cur_topic.subject}</div>{foreach from=$posts item=cur_post}<table class="msg2"> <tr> <td> <div id="p{$cur_post.id}"> <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/> {$cur_post.posted|date_format:"%d/%m/%y %H:%I:%S"}<br/> <strong> <!-- Name --> {if $cur_post.poster_id > 1} <a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a> {else} {$cur_post.username} {/if} {if $cur_post.poster_id > 1} {if $pun_config.o_show_post_karma == 1 || $pun_user.g_id < $smarty.const.PUN_GUEST} {if $pun_user.is_guest || $cur_post.karma[1]} {$cur_post.karma[0]} {else} (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {$cur_post.karma[0]} <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>) {/if} {/if} {/if} </strong> {if $cur_post.poster_id > 1 && $cur_post.is_online == $cur_post.poster_id} <b>On</b> {else} Off {/if} </div> </td> {if $cur_post.poster_id > 1 && ($pun_config.o_avatars == 1 && $cur_post.use_avatar == 1 && $pun_user.show_avatars)} <td> <img src="../{$pun_config['o_avatars_dir']}/{$cur_post.poster_id}.gif" alt="Avatar" /> </td> {/if} </tr></table><table class="msg"> <tr> <td>{$cur_post.message}</td> </tr> <tr> <td> <!-- Antispam missing --> {if $cur_post.edited} <div> <em>{$lang_topic['Last edit']} {$cur_post.edited_by} ({$cur_post.edited|date_format:"%d/%m/%y %H:%I:%S"})</em> </div> {/if} {if $signature} <div> <hr />{$signature} </div> {/if} </td> </tr></table><div class="con">{if ! $is_admmod} {if ! $cur_topic.closed} {if $cur_post.poster_id == $pun_user.id} {if (($start_from + $post_count) == 1 && $pun_user.g_delete_topics == 1) || (($start_from + $post_count) > 1 && $pun_user.g_delete_posts == 1)} <a href="delete.php?id={$cur_post.id}">{$lang_topic.Delete}</a> {/if} {if $pun_user.g_edit_posts == 1} <a href="edit.php?id={$cur_post.id}">{$lang_topic.Edit}</a> {/if} {/if} {if (! $cur_topic.post_replies && $pun_user.g_post_replies == 1) || $cur_topic.post_replies == 1} <a href="post.php?tid={$id}&amp;qid={$cur_post.id}">{$lang_topic['Post reply']}</a> {/if} {/if}{else} <a href="delete.php?id={$cur_post.id}">{$lang_topic.Delete}</a><br/> <a href="edit.php?id={$cur_post.id}">{$lang_topic.Edit}</a><br/> <a href="post.php?tid={$id}&amp;qid={$cur_post.id}">{$lang_topic['Post reply']}</a>{/if}</div>{/foreach}<p class="con">{$paging_links}</p>{if $pun_user.g_post_replies}<div class="blocktable"> <strong><a class="in" href="post.php?tid={$id}">{$lang_topic['Post reply']}</a></strong></div>{/if}{if $quickpost}<div> <strong>{$lang_topic['Quick post']}</strong></div><div class="input"> <form method="post" action="post.php?tid={$id}"> <div> <fieldset> <legend>{$lang_common['Write message legend']}</legend> {if $pun_config.o_antiflood} <input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}" /> <input type="hidden" name="form_sent" value="1" /> <input type="hidden" name="form_user" value="{if ! $pun_user.is_guest}{$pun_user.username}{else}Guest{/if}" /> {/if} <!-- +Guest name --> {if $pun_user.is_guest} {$lang_common.Username}<br/> <input type="text" name="req_username" tabindex="1" /><br/> {/if} <!-- -Guest name --> <textarea name="req_message" rows="4" cols="24" tabindex="1"></textarea><br/> {if $is_admmod} <input type="checkbox" name="merge" value="1" checked="checked" /> {$lang_post['Merge posts']} {/if} </fieldset><br/> <input type="submit" name="submit" tabindex="2" value="{$lang_common.Submit}" accesskey="s" /> </div> </form></div>{/if}{include file='footer.tpl'}
Отредактировано tipsun (2012.02.18 21:09)
#17. Gemorroj Off (107)
Administrator
2012.02.18 23:11
tipsun, а ты откуда форум брал-то...? что-то у меня подозрение что ты его не из свн брал?
#18. tipsun Off (19)
Moderator
2012.02.18 23:11
Нет. На свн ссылки нет. Я отсюда (вапинет-скрипты) взял.
Добавлено спустя   1 минуту  13 секунд:
Я вообще думал присоединиться туда, но чет не разобрался как.
#19. Gemorroj Off (107)
Administrator
2012.02.18 23:11
tipsun, ох блин... придется тебе переписывать код..)
давай присоединяйся к командной разработке в свн.
Добавлено спустя    55 секунд:
ссылка на репозиторий тут в 1 посте http://wapinet.ru/forum/viewtopic.php?id=69
#20. tipsun Off (19)
Moderator
2012.02.19 11:11
$pun_user.g_id - такой синтаксис ведь не обязателен?
$pun_user['g_id'] - можно же как обычно?
Отредактировано tipsun (2012.02.19 11:11)
#21. Gemorroj Off (107)
Administrator
2012.02.19 11:11
на сколько я помню, желателен именно $pun_user.g_id
#22. tipsun Off (19)
Moderator
2012.02.19 11:11
Ок. Но с пробелами ключи придется писать так: $lang_pack['tro lolo']
Отредактировано tipsun (2012.02.19 11:11)
#23. Gemorroj Off (107)
Administrator
2012.02.19 12:12
погуглил. действительно частая проблема.
реашают заданием временной переменной в шаблоне.
Код:
{assign var=index value="tro lolo"}
$lang_pack.$index
#24. tipsun Off (19)
Moderator
2012.02.19 12:12
Ок. Спс.
#25. tipsun Off (19)
Moderator
2012.02.19 13:01
Скачал форум.
Добавлено спустя   4 минуты  13 секунд:
Код:
span style="color: #0000BB"><?php if ($cur_post['poster_id'] > 1) { if ($pun_config['o_avatars'] == 1 && $cur_post['use_avatar'] == 1 && $pun_user['show_avatars']) { if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png" alt="*" />'; } } else { $user_avatar = ''; } }
Код:
<!-- +Avatar -->
{if $cur_post.poster_id > 1 and $pun_config.o_avatars == 1 && $cur_post.use_avatar == 1 && $pun_user.show_avatars}
<img src="../{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.gif" alt="*" />
{/if}
<!-- -Avatar -->
Отредактировано tipsun (2012.02.19 13:01)
#26. tipsun Off (19)
Moderator
2012.02.19 16:04
Фух. Там только интимные места остались. big_smile
#27. Gemorroj Off (107)
Administrator
2012.02.19 16:04
расскажи вообще про структуру, как ты смарти прикручиваешь
#28. tipsun Off (19)
Moderator
2012.02.19 17:05
Я пока просто шаблоны делаю.
Я только вчера со smarty познакомился, а тут уже структура итд smile
Отредактировано tipsun (2012.02.19 18:06)
#29. tipsun Off (19)
Moderator
2012.02.20 13:01
Gemorroj, Если я выложу код на SVN, то могу случайно что-то заменить? После чего невозможно будет это восстановить?
Отредактировано tipsun (2012.02.20 13:01)
#30. Gemorroj Off (107)
Administrator
2012.02.20 13:01
можно откатить будет. но сейчас у тебя нет прав на заливку кода в свн. только на скачивание.
расскажи про архитектуру, как ты прикручиваешь смарти.
#31. tipsun Off (19)
Moderator
2012.02.20 14:02
В архиве все.
Вложения
Trololo.zip 239kb [загрузок: 644]
Отредактировано tipsun (2012.02.20 14:02)
#32. Gemorroj Off (107)
Administrator
2012.02.20 15:03
эм нет. в папке include/template есть уже несколько шаблонов, нужно развивать их там дальше.
сам Smarty тоже стоит положить в includes. themes положить в include/template
#33. tipsun Off (19)
Moderator
2012.02.20 15:03
Это получится так типа:

- include/template/themes/THEME_NAME/templates/TPL_NAME.tpl
- include/template/themes/THEME_NAME/compiled/~
- include/template/themes/THEME_NAME/cache/~
- include/template/themes/THEME_NAME/configs/~
- include/template/themes/THEME_NAME/style.css
Отредактировано tipsun (2012.02.20 15:03)
#34. Gemorroj Off (107)
Administrator
2012.02.20 15:03
еще даже можно, наверн в themes 2 подпапки добавить wap и web и в них ложить темы для того и другого отдельно
#35. tipsun Off (19)
Moderator
2012.02.20 15:03
Ок.
Я в dcms видел, что они просто префикс добавляли: "wap_", "pda_", "web_".
Поэтому думал, может так и сделать.
Добавлено спустя   6 минут  26 секунд:
Еще надо будет в верстке указывать (через переменную можно):

Код:
span style="color: #0000BB"><?php$smarty->template_dir = PUN_ROOT . 'include/template/themes/wap/' . $pun_user['style_wap'] . '/tpls/';$smarty->compile_dir = PUN_ROOT . 'include/template/themes/wap/' . $pun_user['style_wap'] . '/compiled/';$smarty->config_dir = PUN_ROOT . 'include/template/themes/wap/' . $pun_user['style_wap'] . '/configs/';$smarty->cache_dir = PUN_ROOT . 'include/template/themes/wap/' . $pun_user['style_wap'] . '/cache/';/*$smarty->template_dir = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/tpls/';$smarty->compile_dir = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/compiled/';$smarty->config_dir = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/configs/';$smarty->cache_dir = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/cache/';*///<!-- +TEMPLATE --> <head> <title>{$page_title|escape}</title> <link rel="stylesheet" type="text/css" href="/include/template/themes/wap/{$pun_user.style_wap}/style.css" /> //<!-- <link rel="stylesheet" type="text/css" href="/include/template/themes/{$pun_user.style_wap}/style.css" /> --> </head>//<!-- -TEMPLATE -->
Отредактировано tipsun (2012.02.20 16:04)
#36. tipsun Off (19)
Moderator
2012.02.20 16:04
А если включить мозги, то так можно:

Код:
span style="color: #0000BB"><?php//без слеша впереди, потом можно добавить в "подключении" css.define('THEME_DIR', 'include/template/themes/wap/' . $pun_user['style_wap'] . '/');$smarty->template_dir = PUN_ROOT . THEME_DIR . '/tpls/';$smarty->compile_dir = PUN_ROOT . THEME_DIR . '/compiled/';$smarty->config_dir = PUN_ROOT . THEME_DIR . '/configs/';$smarty->cache_dir = PUN_ROOT . THEME_DIR . '/cache/';/* HTML<link rel="stylesheet" type="text/css" href="/{$smarty.const.THEME_DIR}/style.css" />*/
Отредактировано tipsun (2012.02.20 16:04)
#37. tipsun Off (19)
Moderator
2012.02.20 16:04
Не знаю как тут с запросом быть.
Просто сделал, что типа карма уже будет готовая выводиться в массиве.

Код:
span style="color: #0000BB"><?php//Пост должен содержать типа такого.$cur_post['karma']['val'] = 'integer karma'; if ($pun_config['o_show_post_karma'] == 1 || $pun_user['g_id'] < PUN_GUEST) { $q = $db->fetch_row($db->query(' SELECT COUNT(1), (SELECT COUNT(1) FROM `' . $db->prefix . 'karma` WHERE `vote` = "-1" AND `to` = ' . $cur_post['poster_id'] . ') FROM `' . $db->prefix . 'karma` WHERE `vote` = "1" AND `to` = ' . $cur_post['poster_id'] )); $karma['plus'] = intval($q[0]); $karma['minus'] = intval($q[1]); $karma['karma'] = $karma['plus'] - $karma['minus']; unset($q); if ($pun_user['is_guest']) { $karma = ' (' . $karma['karma'] . ')'; } else if ($db->num_rows($db->query('SELECT 1 FROM `' . $db->prefix . 'karma` WHERE `id`=' . $pun_user['id'] . ' AND `to`=' . $cur_post['poster_id'] . ' LIMIT 1'))) { $karma = ' (' . $karma['karma'] . ')'; } else { $karma = ' (' . $karma['karma'] . ') <a href="karma.php?to=' . $cur_post['poster_id'] . '&amp;vote=1&amp;pid=' . $cur_post['id'] . '">+</a>/<a href="karma.php?to=' . $cur_post['poster_id'] . '&amp;vote=-1&amp;pid=' . $cur_post['id'] . '">-</a>'; } } //Template //<!-- +Karma --> {if $cur_post.karma.val and $pun_config.o_show_post_karma == 1 || $pun_user.g_id < $smarty.const.PUN_GUEST} &#160;({$cur_post.karma.val}) {if ! $pun_user.is_guest} &#160;<a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>/<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {/if} {/if} //<!-- -Karma -->
Отредактировано tipsun (2012.02.20 16:04)
#38. tipsun Off (19)
Moderator
2012.02.20 16:04
Нет, надо было оставить "used".

$cur_post['karma']['val'] - значение кармы
$cur_post['karma']['used'] - уже ставил этому пользователю, если ставил, то задать true.

Вот короче:
Код:
//Template
//<!-- +Karma -->
{if $pun_config.o_show_post_karma == 1 || $pun_user.g_id < $smarty.const.PUN_GUEST}
 ({$cur_post.karma.val})
{if ! $pun_user.is_guest and ! $cur_post.karma.used}
 <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>/<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a>
{/if}
{/if}
//<!-- -Karma -->
Отредактировано tipsun (2012.02.20 17:05)
#39. tipsun Off (19)
Moderator
2012.02.20 17:05
Сейчас еще вытащу все assign с цикла шаблона big_smile Я сначала даже и не подумал.
Добавлено спустя   6 минут  30 секунд:
Осталось: карма, аватарка и еще
Код:
span style="color: #0000BB"><?php// Can we or can we not post replies?if (!$cur_topic['closed']) { if ((!$cur_topic['post_replies'] && ($pun_user['g_post_replies'] == 1 || $pun_user['g_post_replies'] == 2)) || $cur_topic['post_replies'] == 1 || $is_admmod) { $post_link = '<a href="post.php?tid='.$id.'">'.$lang_topic['Post reply'].'</a>'; } else { $post_link = '&#160;'; }} else { $post_link = $lang_topic['Topic closed']; if ($is_admmod) { $post_link .= ' / <a href="post.php?tid='.$id.'">'.$lang_topic['Post reply'].'</a>'; }}if (!$pun_user['is_guest'] && $pun_config['o_subscriptions'] == 1) { if ($cur_topic['is_subscribed']) { // I apologize for the variable naming here. It's a mix of subscription and action I guess :-) $subscraction = '<div class="con">'.$lang_topic['Is subscribed'].' - <a href="misc.php?unsubscribe='.$id.'">'.$lang_topic['Unsubscribe'].'</a></div>'; } else { $subscraction = '<div class="con"><a href="misc.php?subscribe='.$id.'">'.$lang_topic['Subscribe'].'</a></div>'; }} else { $subscraction = null;} // Switch the background color for every message. $bg_switch = !$bg_switch; $vtbg = ($bg_switch) ? ' roweven' : ' rowodd'; // Perform the main parsing of the message (BBCode, smilies, censor words etc) $cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies'], $cur_post['id']); // Do signature parsing/caching if ($cur_post['signature'] && $pun_user['show_sig']) { if (isset($signature_cache[$cur_post['poster_id']])) { $signature = $signature_cache[$cur_post['poster_id']]; } else { $signature = parse_signature($cur_post['signature']); $signature_cache[$cur_post['poster_id']] = $signature; } } $save_attachments = $attachments; $attachments = array_filter($attachments, 'filter_attachments_of_post'); if ($attachments) { include PUN_ROOT.'include/attach/wap_view_attachments.php'; } $attachments = $save_attachments; if ($is_admmod) { if (isset($cur_post['spam_id'])) { include_once PUN_ROOT . 'lang/' . $pun_user['language'] . '/misc.php'; echo '<br/>'.$lang_misc['Antispam pattern'].' - '.pun_htmlspecialchars($cur_post['pattern']).'<br /><a href="./antispam_misc.php?action=allow&amp;id='.$cur_post['spam_id'].'">'.$lang_misc['Antispam tread'].'</a> | <a href="./antispam_misc.php?action=deny&amp;id='.$cur_post['spam_id'].'">'.$lang_misc['Antispam del'].'</a><br />'; } }if ($cur_post['signature'] && $pun_user['show_sig']) { if (isset($signature_cache[$cur_post['poster_id']])) { $signature = $signature_cache[$cur_post['poster_id']]; } else { $signature = parse_signature($cur_post['signature']); $signature_cache[$cur_post['poster_id']] = $signature; } }
Отредактировано tipsun (2012.02.20 17:05)
#40. tipsun Off (19)
Moderator
2012.02.20 17:05
Пойду отдыхать, а то глаза уже болят...
Добавлено спустя   8 минут  41 секунду:
tipsun написал:
А если включить мозги, то так можно:

Код:
span style="color: #0000BB"><?php//без слеша впереди, потом можно добавить в "подключении" css.define('THEME_DIR', 'include/template/themes/wap/' . $pun_user['style_wap'] . '/');$smarty->template_dir = PUN_ROOT . THEME_DIR . '/tpls/';$smarty->compile_dir = PUN_ROOT . THEME_DIR . '/compiled/';$smarty->config_dir = PUN_ROOT . THEME_DIR . '/configs/';$smarty->cache_dir = PUN_ROOT . THEME_DIR . '/cache/';/* HTML<link rel="stylesheet" type="text/css" href="/{$smarty.const.THEME_DIR}/style.css" />*/
А если этими мозгами еще подумать, то:

Код:
span style="color: #0000BB"><?phpdefine('THEME_DIR', PUN_ROOT . 'include/template/themes/wap/' . $pun_user['style_wap'] . '/');$smarty->template_dir = THEME_DIR . '/tpls/';$smarty->compile_dir = THEME_DIR . '/compiled/';$smarty->config_dir = THEME_DIR . '/configs/';$smarty->cache_dir = THEME_DIR . '/cache/';////<link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}/style.css" />//
Отредактировано tipsun (2012.02.20 17:05)
#41. tipsun Off (19)
Moderator
2012.02.20 21:09
Где-то я видел регистрация_функции() в смарти.
Еще чего подумал.
Ну допустим есть у нас некоторые исключения, при которых надо перенаправить пользователя, или оборвать выполнение скрипта.
Если в самом начале запускать смарти, то оно как бы лишний раз запускается.
А если все будет нормально, + кеш-смарти. То наоборот выигрышный запуск в самом начале, не?
Правда там еще этот смарти проверить должен, изменились ли данные или нет, чтоб выдать кеш-шаблон или вновь компилируемый, не?
Или при компиляции смарти приводит шаблон в нативный вид?
* А из нативного в статичный уже.
Отредактировано tipsun (2012.02.20 21:09)
#42. tipsun Off (19)
Moderator
2012.02.20 22:10
tipsun, ну диагноз ясен.
Так же наблюдается синдром Флудераста.
Принимайте google 3 раза в день. И все пройдет. big_smile
Отредактировано tipsun (2012.02.20 22:10)
#43. tipsun Off (19)
Moderator
2012.02.20 22:10
Там она все параметры в массив складывает, как я понял.
Это значит саму функцию тоже менять придется?

Код:
span style="color: #0000BB"><?php$smarty->register_function("date_now", "print_current_date");function print_current_date($params){ if(empty($params['format'])) { $format = "%b %e, %Y"; } else { $format = $params['format']; return strftime($format,time()); }}// теперь вы можете использовать ее в Smarty чтобы вывести текущую дату: {date_now}// или {date_now format="%Y/%m/%d"} чтобы задать формат.
Отредактировано tipsun (2012.02.20 22:10)
#44. Gemorroj Off (107)
Administrator
2012.02.21 11:11
tipsun, про скорость пока не задумывайся, доделаем.
на счет твоей функции, у смарти уже вроде есть готовые функции для работы с датой. почитай мануал по этому поводу. и желательно по 3 версии
#45. tipsun Off (19)
Moderator
2012.02.21 15:03
Я не про дату, про дату я читал smile
Код:
{$var|date_format:'%d/%m/%y %H:%I:%S'}
 
еще про default посмотрел (когда переменная не содержит значения, то выводится по умол.)
Ну, по ситуации, заглядываю в мануал, бывает =)
{$var|default:'no value'}
. . . .

Я про $smarty->register_function();

. . . .
Отредактировано tipsun (2012.02.21 15:03)
#46. Gemorroj Off (107)
Administrator
2012.02.21 16:04
я по моему такой штукой даже и не пользовался.
#47. tipsun Off (19)
Moderator
2012.02.21 21:09
А как быть с пользовательскими функциями и инклудами?
#48. tipsun Off (19)
Moderator
2012.02.21 22:10
Если я ничего не упустил, то остался в файле wap/viewtopic.php только этот код: #39.
Там вроде случайно повторился.
Еще посмотрел стандартные шаблоны: include/template/
Там как бы совсем общее.
Ну я несколько раз смотрел, пытался собрать верх header.tpl и низ footer.tpl
Там например была ссылка на rss новости, указание кодировки, я сразу подставлял то, что по default идет из массива-источника.
Есть немного, но в правильности не уверен, еще раз буду смотреть, искать что упустил.
Отредактировано tipsun (2012.02.21 22:10)
#49. Gemorroj Off (107)
Administrator
2012.02.21 22:10
главное чтобы архитектура правильно выстроена была)
Добавлено спустя   1 минуту  6 секунд:
кстати, сегодня Smarty 3.1.8 вышел
#50. tipsun Off (19)
Moderator
2012.02.21 23:11
Надо наверно все-таки мануал 3 на англ. смотреть и переводить. Пользоваться 3, а мануал за 2 смотреть - не логично smile
Добавлено спустя   5 минут  9 секунд:
tipsun написал:
Там как бы совсем общее.
И там для вап только wap_main.tpl
Остальное для веб вроде.
Добавлено спустя   7 минут  57 секунд:
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}" />
<title>{$page_title|escape}</title>
<link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}/style.css" />
<link rel="alternate" type="application/rss+xml" title="{$pun_config.o_board_title}" href="{$smarty.const.PUN_ROOT}rss.xml" />
</head>
<body>
<div class="hd">
<img src="{$smarty.const.THEME_DIR}/imgs/logo.gif" title="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" alt="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" />
</div>
<div class="hd_bott">
{$pun_config.o_board_desc}
</div>
<div class="in">
<div>
-<a href="/rss.xml">RSS</a>
<a href="{$smarty.const.PUN_ROOT}rss.xml">RSS</a>
</div>
</div>
<div class="incqbox">
{$lang_common.Announcement}
</div>
<div class="msg">
{$pun_config.o_announcement_message}
</div>
Отредактировано tipsun (2012.02.21 23:11)
#51. tipsun Off (19)
Moderator
2012.02.21 23:11
Ну это просто набросок. Там еще условия итд.
#52. tipsun Off (19)
Moderator
2012.02.22 00:12
Код:
span style="color: #0000BB"><?php//<!-- TPL -->/*<?xml version="1.0" encoding="UTF-8"?>*/<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <head> <meta http-equiv="Expires" content="Thu, 21 Jul 1977 07:30:00 GMT" /> <meta http-equiv="Last-Modified" content="{$smarty.now|date_format:'r'} GMT" /> <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}" /> <title>{$page_title|escape}</title> <link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}style.css" /> <link rel="alternate" type="application/rss+xml" title="{$pun_config.o_board_title}" href="{$smarty.const.PUN_ROOT}rss.xml" /> </head> <body> {if $basename == 'index.php'} <div class="hd"> <img src="{$smarty.const.THEME_DIR}/imgs/logo.gif" title="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" alt="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" /> </div> {if $pun_config.o_board_desc} <div class="hd_bott"> {$pun_config.o_board_desc} </div> {/if} {if $pun_user.is_guest} {assign var='Not_logged_in' value='Not logged in'} <div class="con"> {$lang_common.$Not_logged_in} </div> {/if} {if $pun_user.g_id < $smarty.const.PUN_GUEST} {* $result_header = $db->query('SELECT COUNT(1) FROM `' . $db->prefix . 'reports` WHERE `zapped` IS NULL') or error('Unable to fetch reports info', __FILE__, __LINE__, $db->error()); if ($db->result($result_header)) { $tpl_temp .= '<div class="con"><a href="' . PUN_ROOT . 'admin_reports.php">' . $lang_admin['New reports'] . '</a></div>'; } *} {if $pun_config.o_maintenance == 1} <div class="con"> <a href="{$smarty.const.PUN_ROOT}admin_options.php#maintenance">{$lang_admin.maintenance}</a> </div> {/if} {/if} {/if} <div class="in"> <div> <a href="{$smarty.const.PUN_ROOT}rss.xml">RSS</a> </div> </div> {if $basename == 'index.php' && $pun_config.o_announcement == 1} <div class="incqbox"> {$lang_common.Announcement} </div> <div class="msg"> {$pun_config.o_announcement_message} </div> {/if} {if $basename == 'profile.php' || $basename == 'search.php' || $basename == 'userlist.php' || $basename == 'message_list.php' || $basename == 'message_send.php' || $basename == 'message_delete.php' || $basename == 'misc.php' || $basename == 'filemap.php' || $basename == 'karma.php'} <div class="inbox"> <a href="index.php">{$lang_common.Index}</a> </div> {/if}
Добавлено спустя   8 минут  48 секунд:
Вроде есть в самой смарти: $smarty.server.PHP_SELF
Отредактировано tipsun (2012.02.22 00:12)
#53. tipsun Off (19)
Moderator
2012.02.22 00:12
Можно задать $basename с логики, в принципе. baseName($_SERVER['PHP_SELF']);
Еще там если определена переменная PUN_HELP то грузиться шаблон include/template/help.tpl - я пока пропустил.
И еще там были интимные места, я пропустил.

Код:
span style="color: #0000BB"><?php// Load the templateif (defined('PUN_HELP')) { $tpl_main = file_get_contents(PUN_ROOT . 'include/template/help.tpl');} else { $tpl_main = file_get_contents(PUN_ROOT . 'include/template/wap_main.tpl');}// START SUBST - <pun_include "*">while (preg_match('#<pun_include "([^/\\\\]*?)\.(php[45]?|inc|html?|txt)">#', $tpl_main, $cur_include)) { if (!file_exists(PUN_ROOT . 'include/user/' . $cur_include[1] . '.' . $cur_include[2])) { error('Unable to process user include ' . htmlspecialchars($cur_include[0]) . ' from template main.tpl. There is no such file in folder /include/user/', __FILE__, __LINE__); } ob_start(); include_once PUN_ROOT . 'include/user/' . $cur_include[1] . '.' . $cur_include[2]; $tpl_temp = ob_get_contents(); $tpl_main = str_replace($cur_include[0], $tpl_temp, $tpl_main); ob_end_clean();}// END SUBST - <body>if (isset($hint_box)) { $tpl_temp = $hint_box;} else { $tpl_temp = null;}if ($pun_user['g_id'] < PUN_GUEST) { $result_header = $db->query('SELECT COUNT(1) FROM `' . $db->prefix . 'reports` WHERE `zapped` IS NULL') or error('Unable to fetch reports info', __FILE__, __LINE__, $db->error()); if ($db->result($result_header)) { $tpl_temp .= '<div class="con"><a href="' . PUN_ROOT . 'admin_reports.php">' . $lang_admin['New reports'] . '</a></div>'; } //это условие не пропустил + в начале if ($pun_user['g_id'] < PUN_GUEST) { if ($pun_config['o_maintenance'] == 1) { $tpl_temp .= '<div class="con"><a href="' . PUN_ROOT . 'admin_options.php#maintenance">' . $lang_admin['maintenance'] . '</a></div>'; }}// PMS MOD BEGINrequire PUN_ROOT . 'include/pms/wap_header_new_messages.php';// PMS MOD END
Отредактировано tipsun (2012.02.22 00:12)
#54. tipsun Off (19)
Moderator
2012.02.22 00:12
Я спать валю. smile
Код:
span style="color: #0000BB"><?php{assign var='Moderate_forum' value='Moderate forum'}{assign var='Delete_posts' value='Delete posts'}{assign var='Move_topic' value='Move topic'}{assign var='Open_topic' value='Open topic'}{assign var='Close_topic' value='Close topic'}{assign var='Unstick_topic' value='Unstick topic'}{assign var='Stick_topic' value='Stick topic'}{assign var='Link_separator_m' value='Link separator_m'}{*if ($basename == 'profile.php' || $basename == 'search.php' || $basename == 'userlist.php' || $basename == 'uploads.php' || $basename == 'message_list.php' || $basename == 'message_send.php' || $basename == 'help.php' || $basename == 'misc.php' || $basename == 'filemap.php' || $basename == 'karma.php') { echo '<div class="navlinks">'.generate_wap_navlinks().'</div>';}} else if ($footer_style == 'viewforum' || $footer_style == 'viewtopic') { // Display the "Jump to" drop list if ($pun_config['o_quickjump'] == 1) { // Load cached quickjump // included quickjump @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $forum_id . '.php'; if (!defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/cache.php'; generate_wap_quickjump_cache($forum_id); include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php'; } }*}{if $is_admmod} {if $footer_style == 'viewforum'} <div class="con"> <a class="but" href="moderate.php?fid={$forum_id}&amp;p={$p}">{$lang_common.$Moderate_forum}</a> </div> {elseif $footer_style == 'viewtopic'} <div class="con"> <span class="sub"> <a href="moderate.php?fid={$forum_id}&amp;tid={$id}&amp;p={$p}">{$lang_common.$Delete_posts}</a>{$lang_topic.$Link_separator_m} <a href="moderate.php?fid={$forum_id}&amp;move_topics={$id}">{$lang_common.$Move_topic}</a> {if $cur_topic.closed == 1} {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;open={$id}">{$lang_common.$Open_topic}</a> {else} {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;close={$id}">{$lang_common.$Close_topic}</a> {/if} {if $cur_topic.sticky == 1} {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;unstick={$id}">{$lang_common.$Unstick_topic}</a> {else} {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;stick={$id}">{$lang_common.$Stick_topic}</a> {/if} </span> </div> {/if}{/if}<div class="foot"> <a href="/">{$smarty.server.HTTP_HOST}</a><br/> <a class="red" href="{$smarty.const.PUN_ROOT}">WEB</a></div><div class="copy"> <a href="http://wapinet.ru/forum/wap/">PunBB Mod Gemorroj</a><br/> <span class="red">{sprintf('%.3f', microtime(true) - $pun_start)} s</span></div></body></html>
#55. tipsun Off (19)
Moderator
2012.02.22 15:03
Еще про подпись юзера забыл.
#56. tipsun Off (19)
Moderator
2012.02.22 16:04
Исключительно слово "лес" полностью описывает ситуацию, сложившуюся в данном коде.
Куда бы ты не ходил, возвращаешься на тоже место.
generate_wap_navlinks()
Код:
span style="color: #0000BB"><?php // Index and Userlist should always be displayed $links['userlist.php'] = $lang_common['User list']; if ($pun_config['o_rules'] == 1) { $links['misc.php?action=rules'] = $lang_common['Rules']; } if ($pun_user['is_guest']) { if ($pun_user['g_search'] == 1) { $links['search.php'] = $lang_common['Search']; } if ($pun_config['uploads_conf'][$pun_user['group_id']]) { $links['uploads.php'] = $lang_common['Uploader']; } $info = $lang_common['Not logged in']; } else { if ($pun_user['g_id'] > PUN_MOD) { if ($pun_user['g_search'] == 1) { $links['search.php'] = $lang_common['Search']; } if ($pun_config['uploads_conf'][$pun_user['group_id']]) { $links['uploads.php'] = $lang_common['Uploader']; } $links['filemap.php'] = $lang_common['Attachments']; } else { $links['search.php'] = $lang_common['Search']; $links['uploads.php'] = $lang_common['Uploader']; $links['filemap.php'] = $lang_common['Attachments']; } // PMS MOD END }
Код:
span style="color: #0000BB"><?php//Я не разобрался, сделал так.//<!-- TPL --> <div class="navlinks"> {* // Index and Userlist should always be displayed *} <a href="userlist.php">{$lang_common.$User_list}</a> {if $pun_config.o_rules == 1} {$lang_topic.$Link_separator_m}<a href="misc.php?action=rules">{$lang_common.Rules}</a> {/if} {if $pun_user.g_search == 1 and $pun_user.g_id > $smarty.const.PUN_MOD} {$lang_topic.$Link_separator_m}<a href="search.php">{$lang_common.Search}</a> {/if} {if ! $pun_user.is_guest} {$lang_topic.$Link_separator_m}<a href="uploads.php">{$lang_common.Uploader}</a> {$lang_topic.$Link_separator_m}<a href="filemap.php">{$lang_common.Attachments}</a> {/if} </div>
Отредактировано tipsun (2012.02.22 16:04)
#57. tipsun Off (19)
Moderator
2012.02.22 16:04
Вид: "Пользователи |Поиск |Загрузки |Вложения "
Если так не нравится, можно переделать как было (в форме)
Отредактировано tipsun (2012.02.22 16:04)
#58. tipsun Off (19)
Moderator
2012.02.22 21:09
Мдэ sad $att_info
И таких моментов не мало.
Код:
span style="color: #0000BB"><?php if ($can_download) { echo $check . '<a href="' . $pun_config['o_base_url'] . '/download.php?aid=' . $aid . '">' . $title . '</a> ' . $att_info; } else { echo '<span class="red">' . $title . '</span> ' . $att_info; }
#59. tipsun Off (19)
Moderator
2012.02.22 22:10
Чет я не понял, как система вложений работает.
Вроде все прозрачно. Но не пашет, когда //$attachments = $save_attachments.
Код:
span style="color: #0000BB"><?php//TEMPLATE{if $attachments}<div class="attach_list"> <strong>{$lang_fu.Attachments}</strong><br/> {* foreach from=$attachments item=attachment *} {if $can_download} {if $basename == 'edit.php'} <input type="checkbox" name="delete_image[]" value="{$attachment.id}" /> {$lang_fu.$Mark_to_Delete} {/if} <a href="{$pun_config.o_base_url}/download.php?aid={$attachment.id}">{$attachment.filename|escape}</a> {else} <span class="red">{$attachment.filename|escape}</span> {/if} {if $attachment.size >= 1048576} {round($attachment.size / 1048576, 0)} mb {else} {round($attachment.size / 1024, 0)} kb {/if} {if 'image' == strTok($attachment.mime, '/')} , {strtok('/')} {$attachment.image_dim} {/if} [<strong>{$lang_fu.Downloads}: {$attachment.downloads}</strong>]<br/> {* /foreach *}</div>{/if}
Отредактировано tipsun (2012.02.22 22:10)
#60. tipsun Off (19)
Moderator
2012.02.22 23:11
wap/viewtopic.php
include 'include/attach/fetch.php';
вроде как инфа должна находиться в $attachments
еще там нашел в файле
include 'include/file_upload.php'; - вроде
есть функция в самом конце, чет типа attach_filter_of_post
...
Или это все вообще не с аттачмента берется, а с самого cur_post тогда, что-ли может.
#61. tipsun Off (19)
Moderator
2012.02.22 23:11
А вообще, потихоньку, чище становится там smile
#62. tipsun Off (19)
Moderator
2012.02.22 23:11
А епт. Я же файл свой переименовал, вот и не работало.

Код:
span style="color: #0000BB"><?php//dir: 'include/attach/fetch.php'// there are different sources to include fetch.phpswitch (baseName($_SERVER['PHP_SELF'])) { case 'viewforum.php': // not implemented yet break; //case 'mod.viewtopic.php': case 'viewtopic.php': $att_sql = 'SELECT * FROM ' . $db->prefix . 'attachments WHERE topic_id=' . intval($id) . ' AND post_id in (' . implode(',', $pids) . ')'; break; case 'edit.php': $att_sql = 'SELECT * FROM ' . $db->prefix . 'attachments WHERE post_id=' . intval($id); break;}
Отредактировано tipsun (2012.02.23 00:12)
#63. Gemorroj Off (107)
Administrator
2012.02.23 00:12
я не помню кооод!) давай ссылки на код в свн. типа http://code.google.com/p/punbb-mod/sour … ic.php#273
#64. tipsun Off (19)
Moderator
2012.02.23 00:12
А, извиняюсь.
Да я больше для себя болтаю. Сам пишу, сам читаю big_smile
Вот еще че, сейчас ссылки дам.
Добавлено спустя   2 минуты  51 секунду:
http://code.google.com/p/punbb-mod/sour … tch.php#37

Вот то, что я с файла-функции вытащил и в шаблон засунул
http://code.google.com/p/punbb-mod/sour … hments.php

Я бы попробовал сделать так:

Код:
span style="color: #0000BB"><?php$attachments[$attachment['post_id']][] = $attachment;//Ибо... сейчас напишу{if $attachments[$cur_post.id]}<div class="attach_list"> <strong>{$lang_fu.Attachments}</strong><br/> {foreach from=$attachments[$cur_post.id] item=attachment} {if $can_download} {if $basename == 'edit.php'} <input type="checkbox" name="delete_image[]" value="{$attachment.id}" /> {$lang_fu.$Mark_to_Delete} {/if} <a href="{$pun_config.o_base_url}/download.php?aid={$attachment.id}">{$attachment.filename|escape}</a> {else} <span class="red">{$attachment.filename|escape}</span> {/if} {if $attachment.size >= 1048576} {round($attachment.size / 1048576, 0)} mb {else} {round($attachment.size / 1024, 0)} kb {/if} //я позволил себе изменить: preg_match('/^image\/(.*)$/i', $attachment['mime'], $regs) {if 'image' == strTok($attachment.mime, '/')} , {strtok('/')} {$attachment.image_dim} {/if} [<strong>{$lang_fu.Downloads}: {$attachment.downloads}</strong>]<br/> {/foreach}</div>{/if}
Добавлено спустя   9 минут  59 секунд:
И у меня вроде все нормально отобразилось.
Отредактировано tipsun (2012.02.23 00:12)
#65. tipsun Off (19)
Moderator
2012.02.23 00:12
http://code.google.com/p/punbb-mod/sour … ic.php#266

Может так или в шаблоне запускать парсер?
Ну например там может антиспам или чего еще я не прикрутил, может должен работать с исходным текстом

Код:
span style="color: #0000BB"><?php$posts = $pids = array();while ($cur_post = $db->fetch_assoc($result)) { $cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies'], $cur_post['id']); $posts[] = $cur_post; $pids[] = $cur_post['id'];}$db->free_result($result);
Добавлено спустя   8 минут  18 секунд:
Эх, наверно зря я переносил условия полностью в шаблон.
Лучше бы оставил, чтоб потом через логику можно было сразу поменять.

Вот пример?

Код:
span style="color: #0000BB"><?php$is_admmod = ($pun_user['g_id'] == PUN_ADMIN || ($pun_user['g_id'] == PUN_MOD && array_key_exists($pun_user['username'], $mods_array))) ? true : false;$can_download = (!$cur_topic['file_download'] && $pun_user['g_file_download'] == 1) || $cur_topic['file_download'] == 1 || $is_admmod;$smarty->assign('is_admmod', $is_admmod);$smarty->assign('can_download', $can_download);{if $is_admmod}Ololo{/if}{if $can_download}Thx :){/if}
Отредактировано tipsun (2012.02.23 01:01)
#66. tipsun Off (19)
Moderator
2012.02.23 01:01
Вот, если будет время + желание то:
Вложения
Trololo 23-02-12.zip 25kb [загрузок: 488]
Отредактировано tipsun (2012.02.23 01:01)
#67. Gemorroj Off (107)
Administrator
2012.02.23 11:11
ммм, я что-то не догоняю..
что за attach?
папку themes удали, она там лишняя.
#68. tipsun Off (19)
Moderator
2012.02.23 12:12
Файл: "include/attach/fetch.php" - извлекает инфу о закрепленных файлах к посту в массив.
Файл: "include/attach/wap_view_attachments.php" - показывает инфу из нашего массива с вложениями в текущем посту.
+ Костыль
Эти файлы инклудились в "wap/viewtopic.php"
Отредактировано tipsun (2012.02.23 12:12)
#69. Gemorroj Off (107)
Administrator
2012.02.23 13:01
аа, ясн.
еще, пользуйся Smarty комментами {* коммент *} а не html в шаблонах.
#70. tipsun Off (19)
Moderator
2012.02.23 13:01
Ok.
#71. tipsun Off (19)
Moderator
2012.02.24 13:01
Код:
span style="color: #0000BB"><?php//До{if ! $pun_user.is_guest}{$pun_user.username|escape}{else}Guest{/if}//После{$pun_user.username|escape|default:'Guest'}
Отредактировано tipsun (2012.02.24 13:01)
#72. tipsun Off (19)
Moderator
2012.02.24 14:02
Может быть или не быть.
Код:
span style="color: #0000BB"><?php/*Можно было бы при загрузке сразу1 раз определить тип аватарки изанести в базу в таблицу с юзерамив отдельное поле, типа 'avatar_type'.В шаблоне просто потом вывести:- - - -<img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.{$cur_post.avatar_type}" alt="*" />- - - -*/if ($pun_config['o_avatars'] == 1 && $cur_post['use_avatar'] == 1 && $pun_user['show_avatars']) { if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png" alt="*" />'; }} else { $user_avatar = '';}
Отредактировано tipsun (2012.02.24 14:02)
#73. tipsun Off (19)
Moderator
2012.02.24 14:02
Не хочется начинать новые файлы переводить из-за того, что потом забудешь, что тут было.
А тут еще остались моменты.
Или сделать как получится и потом переделать?
Добавлено спустя   2 минуты  59 секунд:
user_title осталось, например.
Сейчас буду его искать.
Эта переменная нагде не выводится, чудеса епт.
- - - -
Или это $signature переменная...
Ибо <div class="hr">моя подпись высветилась</div>
Отредактировано tipsun (2012.02.24 14:02)
#74. tipsun Off (19)
Moderator
2012.02.24 15:03

» Get posts
» Do signature parsing/caching
» echo Signature

Сделал так:

/+
Наверно не зря фиксируется $signature_cache[$cur_post['poster_id']]
Видимо где-то заново фиксируется все это дело.
После цикла с постами, именно там все это происходит вроде.
А может и нет.
+/
<?php

// Get posts
$posts = $pids = array();
while ($cur_post = $db->fetch_assoc($result)) {
   
    // Do signature parsing/caching
    if ($cur_post['signature'] && $pun_user['show_sig']) {
        if (! isset($signature_cache[$cur_post['poster_id']])) {
            $signature_cache[$cur_post['poster_id']] = parse_signature($cur_post['signature']);
        }
    }
   
    $posts[] = $cur_post;
    $pids[] = $cur_post['id']; // Need to fetch attachments from db.
}
$db->free_result($result);

// Trololo smile

$smarty->assign('signature_cache', $signature_cache);

// TEMPLATE

/*
Промазал
<div class="hr">
{* Подпись пользователя *}
{if $cur_post.signature && $pun_user.show_sig}
    {$signature_cache[$cur_post.poster_id]}
{/if}
</div>
*/

{* Подпись пользователя *}
{if $cur_post.signature && $pun_user.show_sig}
<div class="hr">{$signature_cache[$cur_post.poster_id]}</div>
{/if}


Добавлено спустя   8 минут  57 секунд:

А елки, или это просто во время цикла вывода фиксируется 1 раз пользователь с подписью.
И потом если он встретиться еще раз, то не надо еще раз парсить, а просто вытащить готовое из массива, где ключ=идЗверя, значение=егоЗапарсервированнаяsmileПодпись.
Мдэ, сразу не догадался. sad
Отредактировано tipsun (2012.02.24 18:06)
#75. tipsun Off (19)
Moderator
2012.02.24 18:06
Код:
span style="color: #0000BB"><?php{* Вне цикла надо, нет? *}{assign var='signature_cache' value=''}{* или *}{assign var='signature_cache' value=array()}{if $cur_post.signature && $pun_user.show_sig} {if ! isset($signature_cache[$cur_post.poster_id])} {$signature_cache[$cur_post.poster_id] = parse_signature($cur_post.signature)} {/if}<div class="hr">{$signature_cache[$cur_post.poster_id]}</div>{/if}
Отредактировано tipsun (2012.02.24 18:06)
#76. tipsun Off (19)
Moderator
2012.02.24 21:09
Не могу найти где это выводится.
Вроде больше интимных мест не осталось.
wap/viewtopic.php#137
wap/viewtopic.php#187
wap/viewtopic.php#311
wap/viewtopic.php#339
wap/viewtopic.php#344
Отредактировано tipsun (2012.02.24 21:09)
#77. Gemorroj Off (107)
Administrator
2012.02.24 23:11
а кстати, вполне возможно что в вап версии некоторые переменные и не используются.
#78. tipsun Off (19)
Moderator
2012.02.24 23:11
Ну наверно. Я ни в header.php, ни в footer.php не нашел таких переменных.
Я сейчас их буду подробней рассматривать. Наброски то уже есть.
Отредактировано tipsun (2012.02.24 23:11)
#79. tipsun Off (19)
Moderator
2012.02.25 14:02
wap/footer.php#9 :: include/functions.php#289

Еще другой в другой функции есть кусок этот.

Код:
span style="color: #0000BB"><?php// Are there any additional navlinks we should insert into the array before imploding it?if ($pun_config['o_additional_navlinks']) { if (preg_match_all('#([0-9]+)\s*=\s*(.*?)\n#s', $pun_config['o_additional_navlinks'], $extra_links)) { // Insert any additional links into the $links array (at the correct index) for ($i = 0, $all = sizeof($extra_links[1]); $i < $all; ++$i) { if (preg_match('!<a[^>]+href="?\'?([^ "\'>]+)"?\'?[^>]*>([^<>]*?)</a>!is', $extra_links[2][$i], $row)) { array_splice($out, $extra_links[1][$i], 0, array('<option value="' . $row[1] . '">' . $row[2] . '</option>')); } } }}
#80. tipsun Off (19)
Moderator
2012.02.25 20:08
Интимные места, как всегда.
- Выкинул запрос в базу.
* Проигнорировал инклуд.
- Не обратил внимание на развилку wap_main и help.

Код:
span style="color: #0000BB"><?php{assign var='Not_logged_in' value='Not logged in'}{assign var='New_reports' value='New reports'}{assign var='Full_inbox' value='Full inbox'}{assign var='New_messages' value='Почта'}{* assign var='New_messages' value='New messages' *}<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <head> <meta http-equiv="Expires" content="Thu, 21 Jul 1977 07:30:00 GMT" /> <meta http-equiv="Last-Modified" content="{$smarty.now|date_format:'r'} GMT" /> <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" /> <meta http-equiv="Pragma" content="no-cache" /> {* <pun_char_encoding> *} <meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}" /> {*+ <pun_head> *} <title>{$page_title|escape}</title> <link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}style.css" /> {*- <pun_head> *} {* <pun_rssname> *} {* <pun_rss> *} <link rel="alternate" type="application/rss+xml" title="{$pun_config.o_board_title}" href="{$smarty.const.PUN_ROOT}rss.xml" /> </head> <body> {if $basename == 'index.php'} {* <pun_hd> *} <div class="hd"> <img src="{$smarty.const.THEME_DIR}imgs/logo.gif" title="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" alt="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" /> </div> {if $pun_config.o_board_desc} {* <pun_desc> *} <div class="hd_bott"> {$pun_config.o_board_desc} </div> {/if} {*+ <pun_status> *} {if $pun_user.is_guest} <div class="con"> {$lang_common.$Not_logged_in} </div> {/if} {if $pun_user.g_id < $smarty.const.PUN_GUEST} {if $result_header} {* Query to db *} <div class="con"> <a href="{$smarty.const.PUN_ROOT}admin_reports.php">{$lang_admin.$New_reports}</a> </div> {/if} {if $pun_config.o_maintenance == 1} <div class="con"> <a href="{$smarty.const.PUN_ROOT}admin_options.php#maintenance">{$lang_admin.maintenance}</a> </div> {/if} {/if} {* require PUN_ROOT . 'include/pms/wap_header_new_messages.php'; *} {* ЛС *} {if $isset_new_message} <div class="info"> <a href="message_list.php"> {$New_messages} {* $lang_pms.$New_messages *} </a> </div> {if $count[0] >= $pun_user.g_pm_limit} <div class="red"> <a href="message_list.php">{$lang_pms.$Full_inbox}</a> </div> {/if} {/if} {*- <pun_status> *} {/if} <div class="in"> <div> <a href="{$smarty.const.PUN_ROOT}rss.xml">RSS</a> </div> </div> {if $basename == 'index.php' && $pun_config.o_announcement == 1} {* <pun_announcement> *} <div class="incqbox"> {$lang_common.Announcement} </div> <div class="msg"> {$pun_config.o_announcement_message} </div> {/if} {if $basename == 'profile.php' || $basename == 'search.php' || $basename == 'userlist.php' || $basename == 'message_list.php' || $basename == 'message_send.php' || $basename == 'message_delete.php' || $basename == 'misc.php' || $basename == 'filemap.php' || $basename == 'karma.php'} <div class="inbox"> <a href="index.php">{$lang_common.Index}</a> </div> {/if}
Отредактировано tipsun (2012.02.25 20:08)
#81. tipsun Off (19)
Moderator
2012.02.25 20:08
По-моему все эти условия тоже не стоит переносить в шаблон.
Только самое нужное.
Все условия скорее всего надо держать в логике, потом только передать типа:

В шаблоне уже элементарные условия, определяющие показать или нет.

Код:
span style="color: #0000BB"><?phpif (/* условия */) {$smarty->assign('isset_new_message', true);}{if $isset_new_message}<div class="mail">{$check_mail_box}</div>{/if}
Отредактировано tipsun (2012.02.25 21:09)
#82. tipsun Off (19)
Moderator
2012.02.28 22:10
» include/pms/wap_header_new_messages.php используется в wap/header.php
Код:
span style="color: #0000BB"><?phpif (! $pun_user['is_guest'] && $pun_user['g_pm'] == 1 && $pun_config['o_pms_enabled'] && $pun_user['messages_enable'] == 1) { // Check for new messages $result_messages = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE showed=0 AND owner='.$pun_user['id']) or error('Unable to check for new messages', __FILE__, __LINE__, $db->error()); $new_msg = $db->fetch_row($result_messages); if ($new_msg[0] > 0) { $condition['count_new_msgs'] = $new_msg[0]; } // Check if the inbox is full $result = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error()); $count = $db->fetch_row($result); if ($count[0] >= $pun_user['g_pm_limit']) { $condition['full_inbox'] = true; }}
Отредактировано tipsun (2012.02.28 23:11)
#83. tipsun Off (19)
Moderator
2012.02.28 23:11
Может что-то типа такого, или лучше можно сделать.
Или, как в мануале, сделать класс загрузки Smarty
» wap/header.php
Код:
span style="color: #0000BB"><?phpif (! defined('PUN') or ! defined('PUN_ROOT')) exit(); define('PUN_HEADER', 1);if (defined('SMARTY')) { define('SMARTY_DIR', PUN_ROOT . 'include/Smarty/'); require_once SMARTY_DIR . 'Smarty.class.php'; $smarty = new Smarty(); define('THEME_DIR', PUN_ROOT . 'include/template/wap/' . $pun_user['style_wap'] . '/'); $smarty->template_dir = THEME_DIR . 'tpls/'; $smarty->compile_dir = THEME_DIR . 'compiled/'; $smarty->config_dir = THEME_DIR . 'configs/'; $smarty->cache_dir = THEME_DIR . 'cache/';}if ($pun_user['g_id'] < PUN_GUEST) { $result_header = $db->query('SELECT COUNT(1) FROM `' . $db->prefix . 'reports` WHERE `zapped` IS NULL') or error('Unable to fetch reports info', __FILE__, __LINE__, $db->error()); if ($db->result($result_header)) { $condition['reports'] = true; }}require PUN_ROOT . 'include/pms/wap_header_new_messages.php';//Уже в конце://$smarty->assign('conditions', $conditions);$smarty->assign('condition', $condition);$smarty->display('some.tpl');
Отредактировано tipsun (2012.02.28 23:11)
#84. Gemorroj Off (107)
Administrator
2012.02.29 00:12
а как в мануале? я давненько со смарти не работал. вообще по логике да, нужно делать класс обертку.
типа PunTemplate extends Smarty {}
#85. tipsun Off (19)
Moderator
2012.02.29 10:10
v2 http://smarty.net/docsv2/ru/installing. … tended.tpl
v3 http://smarty.net/docs/en/installing.sm … tended.tpl
Отредактировано tipsun (2012.02.29 10:10)
#86. Gemorroj Off (107)
Administrator
2012.02.29 12:12
ну так да, об этом и речь)
#87. tipsun Off (19)
Moderator
2012.02.29 16:04
Хотя в принципе так тоже удобно запускать Smarty, не?

Код:
span style="color: #0000BB"><?php//define('SMARTY', 1);define('PUN_TEMPLATE', 1);require_once PUN_ROOT . 'wap/header.php';
. . . .

Есть такое в footer.php
Как с этим быть я не знаю.
Генерирует файл, который потом инклудится в footer.php.

Код:
span style="color: #0000BB"><?php//// Generate WAP quickjump cache PHP scripts//function generate_wap_quickjump_cache($group_id = false){ global $db, $lang_common, $pun_config; // If a group_id was supplied, we generate the quickjump cache for that group only if ($group_id !== false) { $groups[0] = $group_id; } else { // A group_id was now supplied, so we generate the quickjump cache for all groups $result = $db->query('SELECT g_id FROM ' . $db->prefix . 'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); $num_groups = $db->num_rows($result); for ($i = 0; $i < $num_groups; ++$i) { $groups[] = $db->result($result, $i); } } // Loop through the groups in $groups and output the cache for each of them while (list(, $group_id) = @each($groups)) { // Output wap quickjump as PHP code $fh = @fopen(PUN_ROOT . 'cache/cache_wap_quickjump_' . $group_id . '.php', 'wb'); if (!$fh) { error('Unable to write quickjump cache file to cache directory. Please make sure PHP has write access to the directory "cache"', __FILE__, __LINE__); } $output = '<?php if (! defined(\'PUN\')) exit(); define(\'PUN_QJ_LOADED\', 1); ?>' . '<form id="qjump" method="get" action="viewforum.php">' . '<div class="inbox">' . '<label>' . $lang_common['Jump to'] . '<br />' . '<select name="id" onchange="window.location.href=\\\'' . $pun_config['o_base_url'] . '/wap/viewforum.php?id=\\\'+this.options[this.selectedIndex].value;">'; $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$group_id.') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error()); $cur_category = 0; while ($cur_forum = $db->fetch_assoc($result)) { // A new category since last iteration? if ($cur_forum['cid'] != $cur_category) { if ($cur_category) { $output .= '</optgroup>'; } $output .= '<optgroup label="' . pun_htmlspecialchars($cur_forum['cat_name']) . '">'; $cur_category = $cur_forum['cid']; } $redirect_tag = ($cur_forum['redirect_url']) ? ' &gt;&gt;&gt;' : ''; $output .= '<option value="' . $cur_forum['fid'] . '"'; if ($group_id == $cur_forum['fid']) { $output .= ' selected="selected"'; } $output .= '>' . pun_htmlspecialchars($cur_forum['forum_name']) . $redirect_tag . '</option>'; } $output .= '</optgroup>' . '</select>' . '<input type="submit" value="' . $lang_common['Go'] . '" accesskey="g" />' . '</label>' . '</div>' . '</form>'; fputs($fh, $output); fclose($fh); }}
Отредактировано tipsun (2012.02.29 16:04)
#88. Gemorroj Off (107)
Administrator
2012.02.29 17:05
tipsun написал:
Хотя в принципе так тоже удобно запускать Smarty, не?
как так? я не понял.
насчет статичного файла - наверное, просто {include file='cache/cache_wap_quickjump_' . $group_id . '.php'} пока делай. $group_id должна быть в шаблоне
#89. tipsun Off (19)
Moderator
2012.02.29 19:07
Сначала #83 в шапке или где удобно, что обычно в любом случае инклудится, расположить.
Потом вызывать так типа:
Код:
span style="color: #0000BB"><?php define('SMARTY', 1);require_once PUN_ROOT . 'wap/header.php';
Короче. Дальше потихоньку пойду.
Отредактировано tipsun (2012.02.29 20:08)
#90. Gemorroj Off (107)
Administrator
2012.02.29 20:08
не-не-не, класс прослойка над Smarty должен быть обязательно.
#91. tipsun Off (19)
Moderator
2012.02.29 21:09
А, ок. Сделаю.
#92. tipsun Off (19)
Moderator
2012.03.01 00:12
Да что такое, только вроде начал запускаться Smarty, теперь шаблоны не выводятся.
Хотя в них нет ошибок. Без скорлупы или как там, работало. sad
Добавлено спустя   7 минут  42 секунды:

wap/viewtopic.php
Код:
span style="color: #0000BB"><?php define('PUN_ROOT', '../');require_once(PUN_ROOT . 'include/common.php');require_once(PUN_ROOT . 'include/file_upload.php');require_once(PUN_ROOT . 'lang/' . $pun_user['language'] . '/post.php');//require_once(PUN_ROOT . 'wap/header.php');//require_once('header.php');require_once(PUN_ROOT . 'include/Smarty/Smarty.class.php');$smarty = new Smarty();$dir = PUN_ROOT . 'include/template/wap/' . $pun_user['style_wap'] . '/';$smarty->template_dir = $dir . 'tpls/';$smarty->compile_dir = $dir . 'compiled/';$smarty->config_dir = $dir . 'configs/';$smarty->cache_dir = $dir . 'cache/';//$this->caching = true;$smarty->assign('punDesignDir', $dir);
wap/header.php
Код:
span style="color: #0000BB"><?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit(); define('PUN_HEADER', 1);require_once(PUN_ROOT . 'include/template.php');$smarty = new Pun_Template(PUN_ROOT . 'include/template/wap/' . $pun_user['style_wap'] . '/');if ($pun_user['g_id'] < PUN_GUEST) { $result_header = $db->query('SELECT COUNT(1) FROM `' . $db->prefix . 'reports` WHERE `zapped` IS NULL') or error('Unable to fetch reports info', __FILE__, __LINE__, $db->error()); if ($db->result($result_header)) { $conditions['reports'] = true; }}require PUN_ROOT . 'include/pms/wap_header_new_messages.php';
include/template.php
Код:
span style="color: #0000BB"><?php if (! defined('PUN')) exit(); define('PUN_TEMPLATE', 1);require_once('Smarty/Smarty.class.php');class Pun_Template extends Smarty{ public function __construct($dir) { $this->template_dir = $dir . 'tpls/'; $this->compile_dir = $dir . 'compiled/'; $this->config_dir = $dir . 'configs/'; $this->cache_dir = $dir . 'cache/'; //$this->caching = true; $this->assign('punDesignDir', $dir); }}
Отредактировано tipsun (2012.03.01 00:12)
#93. tipsun Off (19)
Moderator
2012.03.01 00:12
Без прослойки работает, проверил. Ну шаблон собранный показывает.
Добавлено спустя   1 минуту  27 секунд:
Где-то я туплю, видимо.
Добавлено спустя   6 минут  48 секунд:
Пойду спать.
Отредактировано tipsun (2012.03.01 00:12)
#94. tipsun Off (19)
Moderator
2012.03.02 14:02
Итак...
С прослойкой так и не разобрался.

Показать скрытый текст
Отредактировано tipsun (2012.03.02 14:02)
#95. Gemorroj Off (107)
Administrator
2012.03.02 14:02
Pun_Template - так не называй. такое название говорит о том, что этот класс должен быть в папке Pun и файл называться Template.php
какой код вызывается когда ты получаешь эту ошибку?
#96. tipsun Off (19)
Moderator
2012.03.02 15:03
» #92 - вот там я все показал.
Без прослойки работает.
Хорошо, как назвать тогда? "include_template" = include/template.php
Отредактировано tipsun (2012.03.02 15:03)
#97. Gemorroj Off (107)
Administrator
2012.03.02 17:05
класс PunTemplate назови.
файл include/PunTemplate.php
#98. tipsun Off (19)
Moderator
2012.03.02 21:09
Ой бле! Вот я тормоз.
Метод надо так же как класс назвать, видимо. Сейчас попробую.
Код:
span style="color: #0000BB"><?phpclass Smarty_GuestBook extends Smarty { function Smarty_GuestBook() { // Конструктор класса. // Он автоматически вызывается при создании нового экземпляра. $this->Smarty(); $this->template_dir = '/web/www.example.com/guestbook/templates/'; $this->compile_dir = '/web/www.example.com/guestbook/templates_c/'; $this->config_dir = '/web/www.example.com/guestbook/configs/'; $this->cache_dir = '/web/www.example.com/guestbook/cache/'; $this->caching = true; $this->assign('app_name', 'Guest Book'); }}$smarty = new Smarty_GuestBook();
Отредактировано tipsun (2012.03.02 21:09)
#99. Gemorroj Off (107)
Administrator
2012.03.02 21:09
нее, это из времен php4. в php5 кошерно коструктор называть __construct
#100. tipsun Off (19)
Moderator
2012.03.02 21:09
Нет. Вот так получилось норм.
Код:
span style="color: #0000BB"><?php// include/template.phpif (! defined('PUN')) exit(); define('PUN_TEMPLATE', 1);require_once('Smarty/Smarty.class.php');class PunTemplate extends Smarty{ function PunTemplate($dir) { $this->__construct(); $this->template_dir = $dir . 'tpls/'; $this->compile_dir = $dir . 'compiled/'; $this->config_dir = $dir . 'configs/'; $this->cache_dir = $dir . 'cache/'; $this->assign('punDesignDir', $dir); }}// wap/header.phprequire_once(PUN_ROOT . 'include/template.php');$smarty = new PunTemplate(PUN_ROOT . 'include/template/wap/' . $pun_user['style_wap'] . '/');// wap/viewtopic.phprequire_once(PUN_ROOT . 'wap/header.php');
Добавлено спустя   3 минуты :
Gemorroj написал:
нее, это из времен php4. в php5 кошерно коструктор называть __construct
Да. smile
Нет - я говорил сам себе smile
Добавлено спустя   5 минут  35 секунд:
Ладно. Сейчас чуть по коду погуляю. Может че получится.
Отредактировано tipsun (2012.03.02 21:09)
#101. Gemorroj Off (107)
Administrator
2012.03.02 21:09
файл назови не template.php, а PunTemplate.php т.е. так же как и класс называется
#102. tipsun Off (19)
Moderator
2012.03.02 22:10
Хорошо.
#103. Gemorroj Off (107)
Administrator
2012.03.02 22:10
и в конструктор передавай только название темы, класс прослойка должен сам понимать какие пути нужно установить основываясь только на названии темы.
Добавлено спустя    30 секунд:
ну и блин конструктор все-таки __construct назови
#104. tipsun Off (19)
Moderator
2012.03.02 22:10
Если метод PunTemplate переименовать в "__construct", то перестает работать.
Добавлено спустя   3 минуты  3 секунды:
Про пути, сейчас попробую.
#105. Gemorroj Off (107)
Administrator
2012.03.02 22:10
tipsun, ты на php4 чтоли сидишь?)
#106. tipsun Off (19)
Moderator
2012.03.02 22:10
Нет вроде. Денвер же содержит PHP v5.2
Отредактировано tipsun (2012.03.02 22:10)
#107. Gemorroj Off (107)
Administrator
2012.03.02 22:10
у денвера есть разные версии
#108. tipsun Off (19)
Moderator
2012.03.02 23:11
phpVersion() = 5.2.12
Отредактировано tipsun (2012.03.02 23:11)
#109. Gemorroj Off (107)
Administrator
2012.03.02 23:11
ну проблема в любом случае не в названии конструктора.
#110. tipsun Off (19)
Moderator
2012.03.03 11:11
Вроде так должно сработать.
Просто сегодня баловался со своим говноКодом и случайно получилось.
Код:
span style="color: #0000BB"><?phpclass PunTemplate extends Smarty{ function __construct($dir) { parent::__construct(); //etс. }}
.
.
Добавлено спустя   4 минуты  24 секунды:
Да, вроде как работает.
А вот с путями чет не разобрался.
.
.
Отредактировано tipsun (2012.03.03 11:11)
#111. Gemorroj Off (107)
Administrator
2012.03.03 11:11
аааа, епт. я невнимательно смотрел. ты пытался вызвать родительский конструктор!)
да, так будет корректно.
#112. tipsun Off (19)
Moderator
2012.03.03 11:11
Я сам не знаю, чего я пытался, но работает big_smile
Добавлено спустя   9 минут  14 секунд:
Вообщем с путями:
1) Надо чтоб смарти шаблоны увидел.
2) Надо чтоб в шаблоне при указании положения CSS, тоже было все норм. Ну если форум не в корне сайта.

Код:
span style="color: #0000BB"><?phpclass PunTemplate extends Smarty{ function __construct($punDesignName) { parent::__construct(); //$root = str_replace($_SERVER['DOCUMENT_ROOT'], null, str_replace('\\', '/', dirName(__FILE__))) . '/template/wap/' . $punDesignName . '/'; $punDesignDir = dirName(__FILE__) . '/template/wap/' . $punDesignName; $this->template_dir = $punDesignDir . '/tpls/'; $this->compile_dir = $punDesignDir . '/compiled/'; $this->config_dir = $punDesignDir . '/configs/'; $this->cache_dir = $punDesignDir . '/cache/'; //$this->assign('punDesignDir', $root); }}
Отредактировано tipsun (2012.03.03 12:12)
#113. tipsun Off (19)
Moderator
2012.03.03 12:12
Можно в самом шаблоне header.tpl указывать: {$smarty.const.PUN_ROOT}{$cssDir}style.css
- где PUN_ROOT задается изначально, в логике.
Отредактировано tipsun (2012.03.03 12:12)
#114. Gemorroj Off (107)
Administrator
2012.03.03 12:12
не надо. это работа прослойки.
#115. tipsun Off (19)
Moderator
2012.03.03 12:12
#112. закомментированное работает, в принципе.
Но у форума есть web и wap версии.
Отредактировано tipsun (2012.03.03 12:12)
#116. tipsun Off (19)
Moderator
2012.03.04 00:12
Сейчас вот подумал, что условия логики в переменную наверно лучше загонять и только те условия, которые контролируют вывод в шаблоне никуда не денутся.
Начал с header.tpl (еще есть footer.tpl и viewtopic.tpl)
Добавлено спустя   3 минуты  22 секунды:
Вот пример:
Загнал сразу в smarty, т.к. скорее всего больше нигде не используется результат выполнения.
Код:
span style="color: #0000BB"><?php// include/pms/wap_header_new_messages.phpif (! $pun_user['is_guest'] && $pun_user['g_pm'] == 1 && $pun_config['o_pms_enabled'] && $pun_user['messages_enable'] == 1) { require_once PUN_ROOT . 'lang/' . $pun_user['language'] . '/pms.php'; // Check for new messages $result_messages = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE showed=0 AND owner='.$pun_user['id']) or error('Unable to check for new messages', __FILE__, __LINE__, $db->error()); $new_msg = $db->fetch_row($result_messages); if ($new_msg[0] > 0) { $smarty->append('conditions', array('count_new_msgs' => $new_msg[0])); } // Check if the inbox is full $result = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error()); $count = $db->fetch_row($result); if ($count[0] >= $pun_user['g_pm_limit']) { $smarty->append('conditions', array('full_inbox' => true)); }}// tpl {if $conditions.count_new_msgs} <div class="info"> <a href="message_list.php"> {$lang_pms.$New_messages} ({$conditions.count_new_msgs}) </a> </div> {/if}
Отредактировано tipsun (2012.03.04 00:12)
#117. Gemorroj Off (107)
Administrator
2012.03.04 00:12
ну, тут логика отображения идет, а она должна быть в шаблоне. хотя, тут не принципиально. как проще, так и лучше.
#118. tipsun Off (19)
Moderator
2012.03.04 01:01
Не могу справиться.
Код:
span style="color: #0000BB"><?php // Display the "Jump to" drop list if ($pun_config['o_quickjump'] == 1) { // Load cached quickjump // included quickjump @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $forum_id . '.php'; if (!defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/cache.php'; generate_wap_quickjump_cache($forum_id); include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php'; } }
.
.
Добавлено спустя   4 минуты  20 секунд:
Быстрый переход по форумам.
Отредактировано tipsun (2012.03.04 01:01)
#119. tipsun Off (19)
Moderator
2012.03.04 01:01
Оказывается $forum_id это в файле viewtopic.php есть $id
Добавлено спустя   5 минут  45 секунд:
.
.
Короче. Чет не получается аккуратно в шаблоне разместить. Вот логический костыль smile
wap/footer.php
Код:
span style="color: #0000BB"><?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();if ($pun_config['o_quickjump'] == 1) { // Load cached quickjump // included quickjump ob_start(); @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $id . '.php'; ob_end_clean(); if (! defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/cache.php'; generate_wap_quickjump_cache($id); //include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php'; }}
.
.
footer.tpl
Код:
span style="color: #0000BB"><?php{if $pun_config.o_quickjump == 1 and $basename == 'viewforum.php' || $basename == 'viewtopic.php'} {fetch file="{$smarty.const.PUN_ROOT}cache/cache_wap_quickjump_{$forum_id}.php"}{/if}
Отредактировано tipsun (2012.03.04 01:01)
#120. tipsun Off (19)
Moderator
2012.03.04 01:01
Код:
span style="color: #0000BB"><?php {* Дополнительные ссылки // Are there any additional navlinks we should insert into the array before imploding it? if ($pun_config['o_additional_navlinks']) { if (preg_match_all('#([0-9]+)\s*=\s*(.*?)\n#s', $pun_config['o_additional_navlinks'], $extra_links)) { // Insert any additional links into the $links array (at the correct index) for ($i = 0, $all = sizeof($extra_links[1]); $i < $all; ++$i) { if (preg_match('!<a[^>]+href="?\'?([^ "\'>]+)"?\'?[^>]*>([^<>]*?)</a>!is', $extra_links[2][$i], $row)) { array_splice($out, $extra_links[1][$i], 0, array('<option value="' . $row[1] . '">' . $row[2] . '</option>')); } } } } *}
#121. Gemorroj Off (107)
Administrator
2012.03.04 12:12
пойдет, по любому главное вынести слой отображения, а вылизывать потом будем.
#122. tipsun Off (19)
Moderator
2012.03.04 13:01
Сейчас viewforum.tpl буду собирать.
Добавлено спустя   1 минуту  7 секунд:
Вроде интимных мест нет, но заросли еще те.
#123. tipsun Off (19)
Moderator
2012.03.04 16:04
Мозайка, епт! sad
Код:
span style="color: #0000BB"><?php{include file='header.tpl'}{* Навигация: Главная / Форум / Тема *}<div class="inbox"> <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}</div>{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='Post_topic' value='Post topic'}{assign var='Empty_forum' value='Empty forum'}{assign var='Closed_icon_m' value='Closed icon_m'}{assign var='j' value='false'}{foreach from=$topics item=cur_topic}<div class="{if ($j = ! $j)}msg{else}msg2{/if}">{* +SUBJECT *}<strong>{if $cur_topic.moved_to} {$lang_forum.Moved_m}{elseif $cur_topic.closed} {$lang_common.$Closed_icon_m}{/if} {if $pun_config.poll_enabled == 1 && $cur_topic.has_poll} {$lang_forum.poll_m}{/if}{if $cur_topic.sticky == 1} {$lang_forum.Sticky_m}{/if}</strong><a href="viewtopic.php?id={$cur_topic.moved_to|default:$cur_topic.id}">{$cur_topic.subject|escape}</a> {$lang_common.by} {$cur_topic.poster|escape}{* -SUBJECT *}{if ! $cur_topic.moved_to} ({$cur_topic.num_replies}/{$cur_topic.num_views}){$icon_new_text}<br/><span class="sub">» <a href="viewtopic.php?pid={$cur_topic.last_post_id}#p{$cur_topic.last_post_id}">{$cur_topic.last_post|date_format:$date_format}</a> {$lang_common.by} {$cur_topic.last_poster|escape};</span>{/if}</div>{foreachelse}<div class="in">{$lang_forum.$Empty_forum}</div>{/foreach}<div class="con">{$paging_links}</div>{if (! $cur_forum.post_topics && $pun_user.g_post_topics == 1) || $cur_forum.post_topics == 1 || $is_admmod}<div class="go_to"> <a class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a></div>{/if}{include file='footer.tpl'}
Отредактировано tipsun (2012.03.04 16:04)
#124. Gemorroj Off (107)
Administrator
2012.03.04 16:04
норм)
#125. tipsun Off (19)
Moderator
2012.03.04 16:04
Это не все, прилично еще осталось.
Отредактировано tipsun (2012.03.04 16:04)
#126. tipsun Off (19)
Moderator
2012.03.06 17:05
Вроде тоже все.
Ну на 100% не уверен, может чего пропустил.
Вроде как с иконками лишнее там.
Код:
span style="color: #0000BB"><?php $icon_text = $lang_common['Normal icon']; // используется $item_status = ''; // нет $icon_type = 'icon'; // нет{include file='header.tpl'}{* Навигация: Главная / Форум *}<div class="inbox"> <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}</div>{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='Post_topic' value='Post topic'}{assign var='Empty_forum' value='Empty forum'}{assign var='Closed_icon_m' value='Closed icon_m'}{assign var='New_icon_m' value='New icon_m'}{assign var='Normal_icon' value='Normal icon'}{assign var='j' value='false'}{foreach from=$topics item=cur_topic}<div class="{if ($j = ! $j)}msg{else}msg2{/if}">{* +SUBJECT *}<strong>{if $cur_topic.moved_to} {$lang_forum.Moved_m}{elseif $cur_topic.closed} {$lang_common.$Closed_icon_m}{else} {$lang_common.$Normal_icon}{/if} {if $pun_config.poll_enabled == 1 && $cur_topic.has_poll} {$lang_forum.poll_m}{/if}{if $cur_topic.sticky == 1} {$lang_forum.Sticky_m}{/if}</strong>{* // Should we display the dot or not? :) *}{if ! $pun_user.is_guest && $pun_config.o_show_dot == 1 and $cur_topic.has_posted == $pun_user.id}<strong>·</strong>{/if}<a href="viewtopic.php?id={$cur_topic.moved_to|default:$cur_topic.id}">{if $pun_config.o_censoring == 1} {censor_words($cur_topic.subject)|escape}{else} {$cur_topic.subject|escape}{/if}</a>{* assign var='num_pages_topic' value=ceil(($cur_topic.num_replies + 1) / $pun_user.disp_posts) *}{*/*// If there are topics in this forum.if ($db->num_rows($result)) { while ($cur_topic = $db->fetch_assoc($result)) { $cur_topic['num_pages_topic'] = ceil(($cur_topic['num_replies'] + 1) / $pun_user['disp_posts']); $topics[] = $cur_topic; }}*/*}{if $cur_topic.num_pages_topic > 1}[{paginate($cur_topic.num_pages_topic, -1, "viewtopic.php?id={$cur_topic.id}")}]{/if} {$lang_common.by} {$cur_topic.poster|escape}{* -SUBJECT *}{if ! $cur_topic.moved_to} ({$cur_topic.num_replies}/{$cur_topic.num_views}){* ! $cur_topic.moved_to &&*}{if ! $pun_user.is_guest && $cur_topic.last_poster != $pun_user.username && ! is_reading($cur_topic.log_time, $cur_topic.last_post) && $cur_topic.last_post > $cur_topic.mark_read && ($cur_topic.last_post > $pun_user.last_visit || ($smarty.server.REQUEST_TIME - $cur_topic.last_post < $pun_user.mark_after) )} <span class="red">{$lang_common.$New_icon_m}</span>{/if}<br/><span class="sub">» <a href="viewtopic.php?pid={$cur_topic.last_post_id}#p{$cur_topic.last_post_id}">{$cur_topic.last_post|date_format:$date_format}</a> {$lang_common.by} {$cur_topic.last_poster|escape};</span>{/if}</div>{foreachelse}<div class="in">{$lang_forum.$Empty_forum}</div>{/foreach}<div class="con">{$paging_links}</div>{if (! $cur_forum.post_topics && $pun_user.g_post_topics == 1) || $cur_forum.post_topics == 1 || $is_admmod}<div class="go_to"> <a class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a></div>{/if}{include file='footer.tpl'}
Отредактировано tipsun (2012.03.06 17:05)
#127. tipsun Off (19)
Moderator
2012.03.08 01:01
wap/userlist.php - пока не работает!
Код:
span style="color: #0000BB"><?php{assign var='User_search' value='User search'}{assign var='User_find_legend' value='User find legend'}{assign var='User_group' value='User group'}{assign var='All_users' value='All users'}{assign var='Sort_by' value='Sort by'}{assign var='No_of_posts' value='No of posts'}{assign var='Sort_order' value='Sort order'}{assign var='User_search_info' value='User search info'}{assign var='User_list' value='User list'}{assign var='No_hits' value='No hits'}{* Образец показа даты/времени *}{assign var='date_format' value='%d/%m/%y %H:%I:%S'}<div class="con"> <strong>{$lang_search.$User_search}</strong></div><form method="get" action="userlist.php?"><div class="input"><strong>{$lang_ul.$User_find_legend}</strong><br/>{if $pun_user['g_search_users'] == 1} {$lang_common.Username}<br/> <input type="text" name="username" value="{$username|escape}" maxlength="25" /><br/>{/if}{$lang_ul.$User_group}<br/><select name="show_group"><option value="-1"{if $show_group == -1} selected="selected"{/if}>{$lang_ul.$All_users}</option>{foreach from=$groups item=cur_group} <option value="{$cur_group.g_id}"{if $cur_group.g_id == $show_group} selected="selected"{/if}>{$cur_group.g_title|escape}</option>{/if}</select><br/>{$lang_search.$Sort_by}<br/><select name="sort_by"><option value="username"{if $sort_by == 'username'} selected="selected"{/if}>{$lang_common.Username}</option><option value="registered"{if $sort_by == 'registered'} selected="selected"{/if}>{$lang_common.Registered}</option>{if $show_post_count}<option value="num_posts"{if $sort_by == 'num_posts'} selected="selected"{/if}>{$lang_ul$No_of_posts}</option>{/if}</select><br/>{$lang_search.$Sort_order}<br/><select name="sort_dir"><option value="ASC"{if $sort_dir == 'ASC'} selected="selected"{/if}>{$lang_search.Ascending}</option><option value="DESC"{if $sort_dir == 'DESC'} selected="selected"{/if}>{$lang_search.Descending}</option></select></div><div class="input2">{$lang_ul.$User_search_info}</div><div class="go_to"> <input type="submit" name="search" value="{$lang_common.Submit}" accesskey="s" /></div></form><div class="con"><strong>{$lang_common.$User_list}</strong></div><div class="navlinks">{$lang_common.Username}{if $show_post_count} | {$lang_common.Posts}{/if} | {$lang_common.Title} | {$lang_common.Registered}</div>{foreach from=$users item=user_data}<div class="{if $j = ! $j}in{else}in2{/if}"><strong><a href="profile.php?id={$user_data.id}">{$user_data.username|escape}</a></strong> {if $show_post_count}[{$user_data.num_posts}]{/if}{$user_title_field} ({$user_data.registered|date_format:$date_format})</div>{foreachelse}<div class="msg">{$lang_search.$No_hits}</div>{/foreach}<div class="con">{$paging_links}</div>
Отредактировано tipsun (2012.03.08 01:01)
#128. tipsun Off (19)
Moderator
2012.03.08 01:01
Line 198: include/cache.php
Получается ноги из wap/footer.php - который я сам делал big_smile
Добавлено спустя   3 минуты  55 секунд:
Код:
span style="color: #0000BB"><?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();//if ($pun_config['o_quickjump'] == 1) {//if ('viewtopic.php' == $basename and $pun_config['o_quickjump'] == 1) {if ($pun_config['o_quickjump'] == 1 and ('viewtopic.php' == $basename or 'viewforum.php' == $basename)) { // Load cached quickjump // included quickjump ob_start(); @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $id . '.php'; ob_end_clean(); if (! defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/cache.php'; generate_wap_quickjump_cache($id); //include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php'; }}
Отредактировано tipsun (2012.03.08 09:09)
#129. tipsun Off (19)
Moderator
2012.03.08 10:10
Из-за одной точки не работал шаблон. sad
Сейчас вроде в шаблоне нет ошибок.
А вот смарти чет при assign не отображает шаблон.
Отредактировано tipsun (2012.03.08 10:10)
#130. tipsun Off (19)
Moderator
2012.03.08 12:12
Исправил.
Наконец работает.
Сейчас занесу необходимые переменные в $smarty.
#131. tipsun Off (19)
Moderator
2012.03.08 12:12
Получите и распишитесь smile
Код:
span style="color: #0000BB"><?php{include file='header.tpl'}{* Образец показа даты/времени *}{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='User_search' value='User search'}{assign var='User_find_legend' value='User find legend'}{assign var='User_group' value='User group'}{assign var='All_users' value='All users'}{assign var='Sort_by' value='Sort by'}{assign var='No_of_posts' value='No of posts'}{assign var='Sort_order' value='Sort order'}{assign var='User_search_info' value='User search info'}{assign var='User_list' value='User list'}{assign var='No_hits' value='No hits'}<div class="con"> <strong>{$lang_search.$User_search}</strong></div><form method="get" action="userlist.php?"><div class="input"><strong>{$lang_ul.$User_find_legend}</strong><br/>{if $pun_user.g_search_users == 1} {$lang_common.Username}<br/> <input type="text" name="username" value="{$username|escape}" maxlength="25" /><br/>{/if}{$lang_ul.$User_group}<br/><select name="show_group"><option value="-1"{if $show_group == -1} selected="selected"{/if}>{$lang_ul.$All_users}</option>{foreach from=$groups item=cur_group} <option value="{$cur_group.g_id}"{if $cur_group.g_id == $show_group} selected="selected"{/if}>{$cur_group.g_title|escape}</option>{/foreach}</select><br/>{$lang_search.$Sort_by}<br/><select name="sort_by"><option value="username"{if $sort_by == 'username'} selected="selected"{/if}>{$lang_common.Username}</option><option value="registered"{if $sort_by == 'registered'} selected="selected"{/if}>{$lang_common.Registered}</option>{if $show_post_count}<option value="num_posts"{if $sort_by == 'num_posts'} selected="selected"{/if}>{$lang_ul.$No_of_posts}</option>{/if}</select><br/>{$lang_search.$Sort_order}<br/><select name="sort_dir"><option value="ASC"{if $sort_dir == 'ASC'} selected="selected"{/if}>{$lang_search.Ascending}</option><option value="DESC"{if $sort_dir == 'DESC'} selected="selected"{/if}>{$lang_search.Descending}</option></select></div><div class="input2">{$lang_ul.$User_search_info}</div><div class="go_to"> <input type="submit" name="search" value="{$lang_common.Submit}" accesskey="s" /></div></form><div class="con"><strong>{$lang_common.$User_list}</strong></div><div class="navlinks">{$lang_common.Username}{if $show_post_count} | {$lang_common.Posts}{/if} | {$lang_common.Title} | {$lang_common.Registered}</div>{foreach from=$users item=user_data}<div class="{if $j = ! $j}in{else}in2{/if}"><strong><a href="profile.php?id={$user_data.id}">{$user_data.username|escape}</a></strong> {if $show_post_count}[{$user_data.num_posts}]{/if}{get_title($user_data)} ({$user_data.registered|date_format:$date_format})</div>{foreachelse}<div class="msg">{$lang_search.$No_hits}</div>{/foreach}<div class="con">{$paging_links}</div>{include file='footer.tpl'}
Добавлено спустя   1 минуту  3 секунды:
быдлоШаблон. В смарти вроде есть спец. функции для работы с select и прочее.
Добавлено спустя   6 минут  17 секунд:

get_title($cur_post) в wap/viewtopic.php оказывается показывает ранг пользователя. Admin/Mod/Member etc.
Хоть он нигде не выводился, я прикрутил суда.

Код:
span style="color: #0000BB"><?php{* Должность *}{get_title($cur_post)}<br/>{* Когда было размещено сообщение *}{$cur_post.posted|date_format:$date_format}<br/>
Отредактировано tipsun (2012.03.08 12:12)
#132. tipsun Off (19)
Moderator
2012.03.08 12:12
Это был шаблон для файла: wap/userlist.php
Отредактировано tipsun (2012.03.08 12:12)
#133. Gemorroj Off (107)
Administrator
2012.03.08 13:01
блин. на гитхаб что ли переезжать. охота уже в целом на код посмотреть.
#134. tipsun Off (19)
Moderator
2012.03.08 13:01
Загадками "говоришь" smile
Или я не выспался big_smile
Добавлено спустя   4 минуты :
быдлоКод, он и на шаблонах быдлоКод smile
Я еще от себя добавил big_smile
Ну в принципе легче будет разобраться потом, мне кажется.
Добавлено спустя   5 минут  55 секунд:
Я могу свою папку punbb.mod/www/ упаковать. Так сможешь посмотреть.
Отредактировано tipsun (2012.03.08 13:01)
#135. tipsun Off (19)
Moderator
2012.03.08 13:01
Gemorroj написал:
на код посмотреть.
http://wapinet.ru/files/13311 :: 74269
Отредактировано tipsun (2012.03.08 13:01)
#136. Gemorroj Off (107)
Administrator
2012.03.08 18:06
а что это за комментарий {* Дополнительные ссылки в футере?
#137. tipsun Off (19)
Moderator
2012.03.08 18:06
Сейчас посмотрю.
Добавлено спустя   3 минуты  51 секунду:
Вот откуда ноги растут.
Еще есть тот же кусок и в другой функции generate_wap_1_navlinks()
include/functions.php#336
Отредактировано tipsun (2012.03.08 18:06)
#138. Gemorroj Off (107)
Administrator
2012.03.08 19:07
это я понимаю, я не понимаю что оно делает в шаблоне)
#139. tipsun Off (19)
Moderator
2012.03.08 20:08
Хороший вопрос smile
Добавлено спустя   2 минуты  33 секунды:
Самый страшный файл, видимо wap/profile.php - 101 kB (1.6k строк).
Отредактировано tipsun (2012.03.08 22:10)
#140. tipsun Off (19)
Moderator
2012.03.09 12:12
В принципе ошибки можно наверно так отпустить:

Код:
span style="color: #0000BB"><?php// ошибка$smaty->assign('errors', $errors);$smarty->display('template.tpl');// exit();//+ template.tpl{include file='errors.tpl'}{* Etc. *}//- template.tpl
Отредактировано tipsun (2012.03.09 12:12)
#141. Gemorroj Off (107)
Administrator
2012.03.09 13:01
какой конкретно ошибки?
#142. tipsun Off (19)
Moderator
2012.03.09 18:06
Не знаю почему, но я думал про exit(); ошибки.
#143. Gemorroj Off (107)
Administrator
2012.03.09 18:06
не понимаю, - exit - языковая конструкция, а не ошибка.
#144. tipsun Off (19)
Moderator
2012.03.10 12:12
"wap/index.php" потихоньку собираю.
#145. tipsun Off (19)
Moderator
2012.03.12 11:11
Индексная вроде тоже готова.

Найдите 1 отличие big_smile (оно есть)

http://wapinet.ru/files/f/1/6/wap-index-php.jpg

Код:
span style="color: #0000BB"><?php{include file='header.tpl'}{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='Show_new_posts' value='Show new posts'}{assign var='Mark_all_as_read' value='Mark all as read'}{assign var='Empty_board' value='Empty board'}{assign var='Link_separator_m' value='|'}<div class="navlinks"> {if $pun_user.is_guest} <a href="login.php">{$lang_common.Login}</a>{$Link_separator_m}<a href="register.php">{$lang_common.Register}</a> {else} {if $pun_user.g_id > $smarty.const.PUN_MOD} <a href="profile.php?id={$pun_user.id}">{$lang_common.Profile} (<span style="font-weight: bold">{$pun_user.username|escape}</span>)</a> {if $pun_config.o_pms_enabled && $pun_user.g_pm == 1} {$Link_separator_m}<a href="message_list.php">{$lang_pms.Private}</a> {/if} {$Link_separator_m}<a href="login.php?action=out&amp;id={$pun_user.id}&amp;csrf_token=">{$lang_common.Logout}</a> {/if} {if $pun_user.g_id < $smarty.const.PUN_MOD} <a href="{$smarty.const.PUN_ROOT}admin_index.php">{$lang_common.Admin_m}</a> {/if} {/if}</div>{assign var='j' value=false}{assign var='cur_category' value=''}{foreach from=$forums item=cur_forum} {if $cur_forum.cid != $cur_category} {assign var='cur_category' value={$cur_forum.cid}} {* assign var='cat_count' value=($cat_count + 1) *} <div class="cat"> <span class="sp_cat">{$cur_forum.cat_name|escape}</span> </div> {/if} <div class="{if $j = ! $j}in{else}in2{/if}"> {if $cur_forum.redirect_url} <a href="{$cur_forum.redirect_url|escape}">{$cur_forum.forum_name|escape}</a> {else} <a href="viewforum.php?id={$cur_forum.fid}">{$cur_forum.forum_name|escape}</a> ({$cur_forum.num_topics}/{$cur_forum.num_posts}) {/if} {if $cur_forum.last_post} <br/> <span class="sub"> » <a href="viewtopic.php?pid={$cur_forum.last_post_id}#p{$cur_forum.last_post_id}">{$cur_forum.subject|escape}</a> ({$cur_forum.last_post|date_format:$date_format} {$lang_common.by} {$cur_forum.last_poster|escape}) </span> {/if} </div>{foreachelse}<div class="in">{$lang_index.$Empty_board}</div>{/foreach}{if ! $pun_user.is_guest}<div class="go_to"><a class="but" href="search.php?action=show_new">{$lang_common.$Show_new_posts}</a><a class="but" href="misc.php?action=markread">{$lang_common.$Mark_all_as_read}</a></div>{/if}{assign var='No_of_users' value='No of users'}{assign var='No_of_topics' value='No of topics'}{assign var='No_of_posts' value='No of posts'}{assign var='Users_online' value='Users online'}{assign var='Guests_online' value='Guests online'}<div class="incqbox">{$lang_index.$No_of_users}: {$stats.total_users}<br/>{$lang_index.$No_of_topics}: {$stats.total_topics}<br/>{$lang_index.$No_of_posts}: {$stats.total_posts}<br/>{if $pun_config.o_users_online == 1}{$lang_index.$Users_online}: {$num_users|default:'0'}<br/>{$lang_index.$Guests_online}: {$num_guests|default:'0'}{if $num_users}</div><div class="act">{$lang_index.Online}:{foreach from=$users item=pun_user_online}<a href="profile.php?id={$pun_user_online.user_id}">{$pun_user_online.ident|escape}</a>{/foreach}{/if}{/if}</div>{include file='footer.tpl'}
Отредактировано tipsun (2012.03.12 12:12)
#146. tipsun Off (19)
Moderator
2012.03.19 17:05
wap/post.php
Код:
span style="color: #0000BB"><?php{include file='header.tpl'}<div class="inbox"><a href="index.php">{$lang_common.Index}</a> »{if $tip}<a href="viewforum.php?id={$cur_posting.id}">{$cur_posting.forum_name|escape}</a>{elseif $fid}{$cur_posting.forum_name|escape}{/if}{if isset($cur_posting.subject)}» {$cur_posting.subject|escape}{/if}</div>{if $errors}{assign var='Post_errors' value='Post errors'}<div class="red">{$lang_post.$Post_errors}</div><div class="msg">{foreach from=$errors item=cur_error}» {$cur_error}<br/>{/foreach}</div>{elseif isset($smarty.post.preview)}{assign var='Post_preview' value='Post preview'}<div class="info">{$lang_post.$Post_preview}</div><div class="msg">{* parse_message($message, $hide_smilies) *}</div>{/if}{assign var='Post_a_reply' value='Post a reply'}{assign var='Post_new_topic' value='Post new topic'}<div class="con">{if $tid} {$lang_post.$Post_a_reply}{elseif $fid} {$lang_post.$Post_new_topic}{/if}</div>{if $tid}<form method="post" action="post.php?action=post&amp;tid={$tid}" {if $file_limit}enctype="multipart/form-data"{/if}>{elseif $fid}<form method="post" action="post.php?action=post&amp;fid={$fid}" enctype="multipart/form-data">{/if}<div class="input">{*if ($pun_config['poll_enabled'] == 1 && $fid) { if (!$_GET['poll']) { include PUN_ROOT.'lang/'.$pun_user['language'].'/poll.php'; echo '<a href="post.php?fid='.$fid.'&amp;poll=1">'.$lang_poll['poll'].'</a><br/>'; } else { include_once PUN_ROOT.'include/poll/poll.inc.php'; $Poll->wap_showContainer(); $cur_index = 8; }}*}<input type="hidden" name="form_sent" value="1" /><input type="hidden" name="form_user" value="{$pun_user.username|escape|default:'Guest'}" />{if $pun_user.is_guest} {assign var='Guest_name' value='Guest name'} <strong>{$lang_post.$Guest_name}</strong><br /> <input type="text" name="req_username" value="{$username|escape}" tabindex="{assign var='cur_index' value=$cur_index+1}" /><br /> {if $pun_config.p_force_guest_email == 1}<strong>{$lang_common.E-mail}</strong>{else}{$lang_common.E-mail}{/if}<br /> <input type="text" name="{if $pun_config.p_force_guest_email == 1}req_email{else}email{/if}" value="{$email|escape}" tabindex="{assign var='cur_index' value=$cur_index+1}" /><br />{/if}{if $fid} <strong>{$lang_common.Subject}</strong><br /> <input type="text" name="req_subject" value="{$subject|escape}" maxlength="70" tabindex="{assign var='cur_index' value=$cur_index+1}" /><br />{/if}<textarea name="req_message" rows="4" cols="24" tabindex="{assign var='cur_index' value=$cur_index+1}">{if $smarty.post.req_message}{$message|escape}{elseif $quote}{$quote}{/if}</textarea><br /><a href="help.php?id=3">{$lang_common.Smilies}</a>{if $pun_config.o_smilies == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}<a href="help.php?id=1">{$lang_common.BBCode}</a>{if $pun_config.p_message_bbcode == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}{assign var='img_tag' value='img tag'}<a href="help.php?id=4">{$lang_common.$img_tag}</a>{if $pun_config.p_message_img_tag == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}</div><div class="input2">{if $pun_user.g_post_replies == 2}<img src="{$pun_config.o_base_url}/include/captcha/captcha.php?{session_name()}={session_id()}" alt="" /><br />{assign var='Image_text' value='Image text'}{$lang_post.$Image_text}<br /><input type="text" name="req_image_" size="16" maxlength="16" /><br />{/if}{assign var='num_to_upload' value=min($file_limit, 20)}{if $can_upload && $num_to_upload > 0} {$lang_fu.Attachments}<br/> {include file='{$smarty.const.PUN_ROOT}include/attach/wap_post_input.php'}{/if}{assign var='Hide_smilies' value='Hide smilies'}{assign var='Merge_posts' value='Merge posts'}{if ! $pun_user.is_guest} {if $pun_config.o_smilies == 1} <input type="checkbox" name="hide_smilies" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smarty.post.hide_smilies)}checked="checked"{/if} />{$lang_post.$Hide_smilies}<br/> {/if} {if $is_admmod} <input type="checkbox" name="merge" value="1" checked="checked" />{$lang_post.$Merge_posts}<br/> {/if} {if $pun_config.o_subscriptions == 1} <input type="checkbox" name="subscribe" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smarty.post.subscribe)}checked="checked"{/if} />{$lang_post.Subscribe}<br/> {/if}{elseif $pun_config.o_smilies == 1}<input type="checkbox" name="hide_smilies" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smary.post.hide_smilies)}checked="checked"{/if} />{$lang_post.$Hide_smilies}{/if}</div><div class="go_to"><input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}" /><input type="submit" name="submit" value="{$lang_common.Submit}" tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="s" /><input type="submit" name="preview" value="{$lang_post.Preview}" tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="p" /></div></form>{include file='footer.tpl'}
Отредактировано tipsun (2012.03.19 17:05)
#147. tipsun Off (19)
Moderator
2012.03.26 22:10
wap/edit.php

Код:
span style="color: #0000BB"><?php<div class="inbox"><a href="index.php">{$lang_common.Index}</a> &#187; <a href="viewforum.php?id={$cur_post.fid}">{$cur_post.forum_name|escape}</a> &#187; {$cur_post.subject|escape}</div>{if $errors}<div class="red">{assign var='Post_errors' value='Post errors'}{$lang_post.$Post_errors}</div>{assign var='Post_errors_info' value='Post errors info'}<div class="msg">{$lang_post.$Post_errors_info}{foreach from=$errors item=cur_error}&#187; {$cur_error}<br/>{/foreach}</div>{elseif $smarty.post.preview}{include file='{$smarty.const.PUN_ROOT}include/parser.php'}{assign var='Post_preview' value='Post preview'}<div class="info">{$lang_post.$Post_preview}</div><div class="msg">{* parse_message($message, $hide_smilies) *}</div>{/if}{assign var='Edit_post' value='Edit post'}<div class="con">{$lang_post.$Edit_post}</div><form method="post" action="edit.php?id={$id}&amp;action=edit" enctype="multipart/form-data"><div class="input"><input type="hidden" name="form_sent" value="1" />{if $can_edit_subject}{$lang_common.Subject}<br/><input type="text" name="req_subject" tabindex="{assign var='cur_index' value=$cur_index+1}" value="{{$smarty.post.req_subject|define:$cur_post.subject}|escape}" /><br/><!-- /label -->{/if}{* include file='{$smarty.const.PUN_ROOT}include/attach/fetch.php' *}{$lang_common.Message}:<br/><textarea name="req_message" rows="4" cols="24" tabindex="{assign var='cur_index' value=$cur_index+1}">{{$message|define:$cur_post.message}|escape}</textarea><br/><a href="help.php?id=3">{$lang_common.Smilies}</a>{if $pun_config.o_smilies == 1}<span class="green">{$lang_common.on_m}</span>;{else}<span class="grey">{$lang_common.off_m}</span>;{/if}<a href="help.php?id=1">{$lang_common.BBCode}</a>{if $pun_config.p_message_bbcode == 1}<span class="green">{$lang_common.on_m}</span>;{else}<span class="grey">{$lang_common.off_m}</span>;{/if}{assign var='img_tag' value='img tag'}<a href="help.php?id=4">{$lang_common.$img_tag}</a>{if $pun_config.p_message_img_tag == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>;{/if}<br/>{*$num_to_upload = $file_limit;$num_to_upload = min($num_to_upload, 20);if ($uploaded_to_post || ($can_upload && $num_to_upload > 0)) { //Attachments include PUN_ROOT.'include/attach/wap_view_attachments.php'; if ($can_upload && $num_to_upload > 0) { echo '</div><div class="input2">'.$lang_fu['Choose a file'].'<br/>'; } include PUN_ROOT.'include/attach/wap_post_input.php';}*}{if $pun_config.o_smilies == 1}{assign var='Hide_smilies' value='Hide smilies'}<input type="checkbox" name="hide_smilies" value="1" {if isset($smarty.post.hide_smilies) || $cur_post.hide_smilies == 1}checked="checked"{/if} tabindex="{assign var='cur_index' value=$cur_index+1}" /> {$lang_post.$Hide_smilies}<br/>{/if}{if $is_admmod}<input type="checkbox" name="silent" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if (isset($smarty.post.form_sent) && isset($smarty.post.silent)) || ! isset($smarty.post.form_sent)}checked="checked"{/if} /> {$lang_post.$Silent_edit}<br/>{/if}</div><div class="go_to"><input type="submit" name="submit" value="{$lang_common.Submit}" tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="s" /><input type="submit" name="preview" value="{$lang_post.Preview}" tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="p" /></div></form>
#148. LEXIN Off (5)
Участник
2012.03.27 06:06
tipsun написал:

Индексная вроде тоже готова.

Найдите 1 отличие big_smile (оно есть)
1. Нет фоновых изображений
2. Добавлена ссылка "RSS"
3. Перед ссылкой "Админ панель" отсутствуют 2 ссылки, а после - еще одна.
4. Жоская генерация. (1331538677.555 s)

На код приятно посмотреть. Круууть roll
#149. Gemorroj Off (107)
Administrator
2012.03.27 10:10
да, шаблонизация рулит. код намного чище
#150. tipsun Off (19)
Moderator
2012.03.27 11:11
LEXIN, smile
Еще есть, где активных показывает форум, там еще строка с ссылками. Это было поле с выбором, оно было выше.
- - - -
Еще я пропускал интимные места, может где забыл "htmlSpecialChars()"/"|escape"
Можно было все в массив занести, и получилось бы что мы 1 раз заносим все переменные, т.е.
Код:
span style="color: #0000BB"><?php$allVars = array($title, $users, $trololo);$smarty->assign($allVars);
Отредактировано tipsun (2012.03.27 11:11)
#151. LEXIN Off (5)
Участник
2012.03.27 16:04
А как с кешированием дела обстоят? Будет функция кеширования шаблона и очистки кеша?

И очень хочется узнать, какие-нибудь еще "плюшки" в задумке имеются?
Вот оптимизация запросов к БД - отлично.smile
#152. Gemorroj Off (107)
Administrator
2012.03.27 19:07
LEXIN, такими вещами нужно заниматься уже после перевода форума на шаблонную структуру.
#153. tipsun Off (19)
Moderator
2012.04.01 18:06
Взялся за moderate.php
Решил разбивать на moderate.show_delete_topic.tpl; moderate.delete_topic.tpl; итд
Отредактировано tipsun (2012.04.01 18:06)
#154. Gemorroj Off (107)
Administrator
2012.04.01 18:06
сколько еще файлов не переведенных на шаблонизатор примерно?
#155. tipsun Off (19)
Moderator
2012.04.01 19:07
Ух много. Сейчас посмотрю.
Добавлено спустя   2 минуты  52 секунды:
Легче сказать, сколько переведено:
viewtopic.tpl
viewforum.tpl
userlist.tpl
post.tpl
index.tpl
header.tpl
footer.tpl
edit.tpl
+
moderate
- show_delete_topic.tpl
- move_topic.tpl
- delete_topic.tpl
Отредактировано tipsun (2012.04.01 19:07)
#156. tipsun Off (19)
Moderator
2012.04.02 21:09
Как надоел этот срач. sad
Пока время есть заставляю себя "копать".
Добавлено спустя   5 минут  99 секунд:
Вроде как viewforum кусок такой был, он опять попался.
Может просто получится все скопировать...
Отредактировано tipsun (2012.04.02 21:09)
#157. Gemorroj Off (107)
Administrator
2012.04.02 21:09
я тебя предупреждал))
поэтому я и не брался, т.к. трудоемко очень)
#158. tipsun Off (19)
Moderator
2012.04.02 21:09
Да, еще тестить надо. Уф.
Ну по клавишам тыкать, не мешки тоскать. Пофиг.
Тем более вроде как viewforum.tpl вроде как с куском из moderate совпадает, почти.
А viewforum.tpl я сделал четко.
Отредактировано tipsun (2012.04.02 21:09)
#159. tipsun Off (19)
Moderator
2012.04.07 11:11
Почему-то не могу назначить пользователя модером, вроде все форумы отметил.
P.S. хочу наглядно редачить файл: moderate.php (Шаблоны есть)
В веб-версии нет ссылки "модерировать форум", как у Админа.
Отредактировано tipsun (2012.04.07 11:11)
#160. Gemorroj Off (107)
Administrator
2012.04.07 11:11
свн обновлял?
#161. tipsun Off (19)
Moderator
2012.04.07 11:11
Нет.
#162. tipsun Off (19)
Moderator
2012.04.07 14:02
Обновился.
Добавлено спустя   6 минут  3 секунды:
Проблема с инклудом файла из кеша.
Код:
span style="color: #0000BB"><?php{if $pun_config.o_quickjump == 1 and $basename == 'viewforum.php' || $basename == 'viewtopic.php'} {fetch file="{$smarty.const.PUN_ROOT}cache/cache_wap_quickjump_{$forum_id}.php"}{/if}
.
В конце остается это: '; ?>
Отредактировано tipsun (2012.04.07 14:02)
#163. tipsun Off (19)
Moderator
2012.04.07 15:03
Вроде синкаксических ошибок в новом шаблоне moderate.tpl нет.
Отредактировано tipsun (2012.04.07 15:03)
#164. Gemorroj Off (107)
Administrator
2012.04.07 16:04
шаблон покажи
#165. tipsun Off (19)
Moderator
2012.04.07 19:07
moderate.tpl

Код:
span style="color: #0000BB"><?php{include file='header.tpl'}{* Навигация: Главная / Форум / Тема *}<div class="inbox"> <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}</div><form method="post" action="moderate.php?fid={$fid}">{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='Post_topic' value='Post topic'}{assign var='Empty_forum' value='Empty forum'}{assign var='Closed_icon_m' value='Closed icon_m'}{assign var='New_icon_m' value='New icon_m'}{assign var='Normal_icon' value='Normal icon'}{assign var='j' value='false'}{foreach from=$topics item=cur_topic}<div class="{if ($j = ! $j)}msg{else}msg2{/if}"><input type="checkbox" name="topics[{$cur_topic.id}]" value="1" />{* +SUBJECT *}<strong>{if $cur_topic.moved_to} {$lang_forum.Moved_m}{elseif $cur_topic.closed} {$lang_common.$Closed_icon_m}{else} {$lang_common.$Normal_icon}{/if} {if $pun_config.poll_enabled == 1 && $cur_topic.has_poll} {$lang_forum.poll_m}{/if}{if $cur_topic.sticky == 1} {$lang_forum.Sticky_m}{/if}</strong>{* // Should we display the dot or not? :) *}{if ! $pun_user.is_guest && $pun_config.o_show_dot == 1 and $cur_topic.has_posted == $pun_user.id}<strong>·</strong>{/if}<a href="viewtopic.php?id={$cur_topic.moved_to|default:$cur_topic.id}">{if $pun_config.o_censoring == 1} {censor_words($cur_topic.subject)|escape}{else} {$cur_topic.subject|escape}{/if}</a>{if $cur_topic.num_pages_topic > 1}[{paginate($cur_topic.num_pages_topic, -1, "viewtopic.php?id={$cur_topic.id}")}]{/if} {$lang_common.by} {$cur_topic.poster|escape}{* -SUBJECT *}{if ! $cur_topic.moved_to} ({$cur_topic.num_replies}/{$cur_topic.num_views}){* ! $cur_topic.moved_to &&*}{if $cur_topic.last_post > $pun_user.last_visit} <span class="red">{$lang_common.$New_icon_m}</span>{/if}<br/><span class="sub">» <a href="viewtopic.php?pid={$cur_topic.last_post_id}#p{$cur_topic.last_post_id}">{$cur_topic.last_post|date_format:$date_format}</a> {$lang_common.by} {$cur_topic.last_poster|escape};</span>{/if}</div>{foreachelse}{assign var='button_status' value='1'}<div class="in">{$lang_forum.$Empty_forum}</div>{/foreach}<div class="con">{$paging_links}</div>{if (! $cur_forum.post_topics && $pun_user.g_post_topics == 1) || $cur_forum.post_topics == 1 || $is_admmod}<div class="go_to"><input type="submit" name="move_topics" value="{$lang_misc.Move}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="delete_topics" value="{$lang_misc.Delete}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="open" value="{$lang_misc.Open}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="close" value="{$lang_misc.Close}" {if $button_status}disabled="disabled"{/if} /></div></form>{/if}{include file='footer.tpl'}
Отредактировано tipsun (2012.04.07 19:07)
#166. Gemorroj Off (107)
Administrator
2012.04.07 20:08
эээ, так через fetch не выйдет. думаю, нужно сам кэш генерить не в виде php файла, а статичной html-ки уже.
#167. tipsun Off (19)
Moderator
2012.04.07 20:08
Тогда сюда надо смотреть.
Добавлено спустя   6 минут  32 секунды:
А, у меня оказывается уже все сделано. Просто файл 1 раз сгенерился и остался.

Вот вроде:

Код:
span style="color: #0000BB"><?php//// Generate WAP quickjump cache PHP scripts//function generate_wap_quickjump_cache($group_id = false){ global $db, $lang_common, $pun_config; // If a group_id was supplied, we generate the quickjump cache for that group only if ($group_id !== false) { $groups[0] = $group_id; } else { // A group_id was now supplied, so we generate the quickjump cache for all groups $result = $db->query('SELECT g_id FROM ' . $db->prefix . 'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); $num_groups = $db->num_rows($result); for ($i = 0; $i < $num_groups; ++$i) { $groups[] = $db->result($result, $i); } } // Loop through the groups in $groups and output the cache for each of them while (list(, $group_id) = @each($groups)) { // Output wap quickjump as PHP code $fh = @fopen(PUN_ROOT . 'cache/cache_wap_quickjump_' . $group_id . '.php', 'wb'); if (! $fh) { error('Unable to write quickjump cache file to cache directory. Please make sure PHP has write access to the directory "cache"', __FILE__, __LINE__); }//тут..............v....................................................................v $output = '<?php if (! defined(\'PUN\')) exit(); define(\'PUN_QJ_LOADED\', 1); ?>' . '<form id="qjump" method="get" action="viewforum.php">' . '<div class="inbox">' . '<label>' . $lang_common['Jump to'] . '<br />' . '<select name="id" onchange="window.location.href=\\\'' . $pun_config['o_base_url'] . '/wap/viewforum.php?id=\\\'+this.options[this.selectedIndex].value;">'; $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM ' . $db->prefix . 'categories AS c INNER JOIN ' . $db->prefix . 'forums AS f ON c.id=f.cat_id LEFT JOIN ' . $db->prefix . 'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=' . $group_id . ') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error()); $cur_category = 0; while ($cur_forum = $db->fetch_assoc($result)) { // A new category since last iteration? if ($cur_forum['cid'] != $cur_category) { if ($cur_category) { $output .= '</optgroup>'; } $output .= '<optgroup label="' . pun_htmlspecialchars($cur_forum['cat_name']) . '">'; $cur_category = $cur_forum['cid']; } $redirect_tag = ($cur_forum['redirect_url']) ? ' &gt;&gt;&gt;' : ''; $output .= '<option value="' . $cur_forum['fid'] . '"'; if ($group_id == $cur_forum['fid']) { $output .= ' selected="selected"'; } $output .= '>' . pun_htmlspecialchars($cur_forum['forum_name']) . $redirect_tag . '</option>'; } $output .= '</optgroup>' . '</select>' . '<input type="submit" value="' . $lang_common['Go'] . '" accesskey="g" />' . '</label>' . '</div>' . '</form>'; fputs($fh, $output); fclose($fh); }}
#168. Gemorroj Off (107)
Administrator
2012.04.07 21:09
ну так да, метод нужно менять
#169. tipsun Off (19)
Moderator
2012.04.10 17:05
[Ошибка: этот матюк невозможно отобразить буквами]

Ну никак не работала система cache_quickjump.
И так пробовал и сяк.
Я думаю ну что такое же.
Потом уже потеряв надежду поменял require_once на include и заработало. o(o_O)o
Еще поправил условие.
wap/footer.php
Код:
span style="color: #0000BB"><?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();//...................................vif ('viewtopic.php' == $basename or 'viewforum.php' == $basename and $pun_config['o_quickjump'] == 1) { // Load cached quickjump // included quickjump ob_start(); @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $id . '.php'; ob_end_clean(); if (! defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/quickjump.php'; }}
Новый файл вроде, я его раньше не замечал.
include/quickjump.php
Код:
span style="color: #0000BB"><?php$group_id = $id;if ($group_id !== false) { $groups[0] = $group_id;}else { // A group_id was now supplied, so we generate the quickjump cache for all groups $result = $db->query('SELECT g_id FROM ' . $db->prefix . 'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); $num_groups = $db->num_rows($result); for ($i = 0; $i < $num_groups; ++$i) { $groups[] = $db->result($result, $i); }}// Loop through the groups in $groups and output the cache for each of themwhile (list(, $group_id) = each($groups)) { // Output wap quickjump as PHP code $fh = fopen(PUN_ROOT . 'cache/cache_wap_quickjump_' . $group_id . '.php', 'wb'); if (! $fh) { error('Unable to write quickjump cache file to cache directory. Please make sure PHP has write access to the directory "cache"', __FILE__, __LINE__); } $output = '<?php if (! defined(\'PUN\')) exit(); define(\'PUN_QJ_LOADED\', 1); ?>' . '<form id="qjump" method="get" action="viewforum.php">' . '<div class="inbox">' . '<label>' . $lang_common['Jump to'] . '<br />' . '<select name="id" onchange="window.location.href=\\\'' . $pun_config['o_base_url'] . '/wap/viewforum.php?id=\\\'+this.options[this.selectedIndex].value;">'; $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM ' . $db->prefix . 'categories AS c INNER JOIN ' . $db->prefix . 'forums AS f ON c.id=f.cat_id LEFT JOIN ' . $db->prefix . 'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=' . $group_id . ') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error()); $cur_category = 0; while ($cur_forum = $db->fetch_assoc($result)) { // A new category since last iteration? if ($cur_forum['cid'] != $cur_category) { if ($cur_category) { $output .= '</optgroup>'; } $output .= '<optgroup label="' . pun_htmlspecialchars($cur_forum['cat_name']) . '">'; $cur_category = $cur_forum['cid']; } $redirect_tag = ($cur_forum['redirect_url']) ? ' &gt;&gt;&gt;' : ''; $output .= '<option value="' . $cur_forum['fid'] . '"'; if ($group_id == $cur_forum['fid']) { $output .= ' selected="selected"'; } $output .= '>' . pun_htmlspecialchars($cur_forum['forum_name']) . $redirect_tag . '</option>'; } $output .= '</optgroup>' . '</select>' . '<input type="submit" value="' . $lang_common['Go'] . '" accesskey="g" />' . '</label>' . '</div>' . '</form>'; fputs($fh, $output); fclose($fh);}
Отредактировано tipsun (2012.04.10 17:05)
#170. tipsun Off (19)
Moderator
2012.04.10 19:07
Получается, что require_once при отсутствии файла останавливает работу а include нет?
Отредактировано tipsun (2012.04.10 19:07)
#171. Gemorroj Off (107)
Administrator
2012.04.10 19:07
так да
#172. tipsun Off (19)
Moderator
2012.04.10 20:08
Вывод списка форумов, в которые можно переместить тему, не работает.
Добавлено спустя   1 минуту  1 секунду:
Нашел.

Код:
span style="color: #0000BB"><?php while ($forum = $db->fetch_assoc($result)) { //$forums = $forum; $forums[] = $forum; }
Отредактировано tipsun (2012.04.10 20:08)
#173. tipsun Off (19)
Moderator
2012.04.11 11:11
Не работают ссылки (админа/модера: переместить, удалить, закрыть, открыть) внизу, в футере, в moderate.php все норм.
Там разграничил exit(); после вывода шаблона.
Добавлено спустя   2 минуты  4 секунды:
Т.к. там сразу 2 шаблона выводилось.
Отредактировано tipsun (2012.04.11 13:01)
#174. Gemorroj Off (107)
Administrator
2012.04.11 11:11
наверное, нужно бранч сделать для всей этой фичи...
#175. tipsun Off (19)
Moderator
2012.04.15 19:07
Commit
Commit failed (details follow):
Server sent unexpected return value (405 Method Not Allowed) in response to
MKACTIVITY request for '/svn/!svn/act/ea721f03-b86c-ee4d-93d9-1fd0cd6c2550'
Отредактировано tipsun (2012.04.15 19:07)
#176. Gemorroj Off (107)
Administrator
2012.04.15 20:08
url вводи с https
Отредактировано Gemorroj (2012.04.15 20:08)
#177. tipsun Off (19)
Moderator
2012.04.15 20:08
1) У меня скачивает с svn.
2) Удаляю то, что скачалось.
3) Закидываю целиком форум, как ты показал, выделил все, кроме [.svn].
4) Жму на папку smarty [commit]
5) Ошибка выходит, которую я запостил.
Добавлено спустя   1 минуту  56 секунд:
Сейчас попробую с https
Добавлено спустя   4 минуты  8 секунд:
Во. Логин и Пароль запросила.
Добавлено спустя   6 минут  9 секунд:
Все, сгенерил пароль.
Добавлено спустя   7 минут  30 секунд:
Commit...
Отредактировано tipsun (2012.04.15 20:08)
#178. tipsun Off (19)
Moderator
2012.04.15 20:08
Весит много, надо было смарти-двиг не грузить.
Ну да ладно. Главное грузит.
Отредактировано tipsun (2012.04.15 20:08)
#179. Gemorroj Off (107)
Administrator
2012.04.15 20:08
что значит не надо было? а как без него форум работать-то будет?
#180. tipsun Off (19)
Moderator
2012.04.15 20:08
Залил, все.
Отредактировано tipsun (2012.04.15 20:08)
#181. Gemorroj Off (107)
Administrator
2012.04.15 20:08
ок, я кое-чего там тоже уже накомитил тебе. обновляйся теперь переодически.
есть еще такие правила:
1) комментарии к коммитам обязательны. хотябы минимально описывай что менялось в сделанном коммите.
2) различные кэши и кастомные настройки не должны попадать в репозитарий.
#182. tipsun Off (19)
Moderator
2012.04.15 21:09
Ок.
#183. tipsun Off (19)
Moderator
2012.04.15 21:09
Да, увидел.
Показывает как было и как стало smile
#184. tipsun Off (19)
Moderator
2012.04.15 21:09
Елки, у меня __DIR__ нет.
И разве нужно для __DIR__ dirName() обработка?
Отредактировано tipsun (2012.04.15 21:09)
#185. Gemorroj Off (107)
Administrator
2012.04.15 22:10
а где там __DIR__ ?
для __DIR__ не надо, надо для __FILE__, я затупил где-то?
Добавлено спустя   1 минуту  2 секунды:
да, увидел, это я уже на ночь глядя уже торможу.
#186. tipsun Off (19)
Moderator
2012.04.16 14:02
Опять этот cache quickjump не работает. >_<
Cache-файл не сохраняется.
Отредактировано tipsun (2012.04.16 14:02)
#187. tipsun Off (19)
Moderator
2012.04.16 15:03
Переменная $basename не была задана. >_<
Отредактировано tipsun (2012.04.16 15:03)
#188. tipsun Off (19)
Moderator
2012.04.16 16:04
Commit.
#189. Gemorroj Off (107)
Administrator
2012.04.16 18:06
ты это в каментах пиши в свн-е)
#190. tipsun Off (19)
Moderator
2012.04.16 20:08
Есть коммент мой там, проверял. smile
Там в changes есть коммент. Если есть еще куда коммент, то как?
Отредактировано tipsun (2012.04.16 20:08)
#191. tipsun Off (19)
Moderator
2012.04.16 20:08
Все равно костыльно и наверно можно изящно сделать все при помощи смарти и кеши(а).
Ну по крайней мере мне так кажется.
Отредактировано tipsun (2012.04.16 20:08)
#192. Gemorroj Off (107)
Administrator
2012.04.16 20:08
посмотрел коммиты. да все ок, так и пиши.
и еще, нет функции baseName, есть basename.
#193. tipsun Off (19)
Moderator
2012.04.16 20:08
Хотя там такие же условия будут, просто в шаблоне. big_smile
Получается не лучше.
- - - -
basename - ok. Буду знать.
Отредактировано tipsun (2012.04.16 20:08)
#194. tipsun Off (19)
Moderator
2012.04.17 16:04
Commit.
#195. tipsun Off (19)
Moderator
2012.04.28 12:12
Немного наCommitал.
Виден конец кода в файле... profile.php
Отредактировано tipsun (2012.04.30 10:10)
#196. tipsun Off (19)
Moderator
2012.05.03 15:03
наCommitал.
Недоделан выбор языка. (Забыл че там было).
- - - -
Елки и коммент забыл.
Отредактировано tipsun (2012.05.03 15:03)
#197. tipsun Off (19)
Moderator
2012.05.08 11:11
Заблудился, где какой шаблон. Вот туман.
Отредактировано tipsun (2012.05.08 11:11)
#198. tipsun Off (19)
Moderator
2012.05.08 11:11
С языками разобрался.
Commit.
- - - -
БЛЯ!!! Коммент забыл.
Уй, и изменить его целая война.
Отредактировано tipsun (2012.05.08 12:12)
#199. tipsun Off (19)
Moderator
2012.06.05 12:12
Ы!, эта аватарка меня доведет.
Каждый раз с этой ерундой сталкиваюсь.

Код:
{*$avatar_field
<a href="profile.php?action=upload_avatar&amp;id={$id}">{$lang_profile.$Change_avatar}</a> |
{if $img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.gif')) {
$avatar_format = 'gif';
} else
if ($img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.jpg')) {
$avatar_format = 'jpg';
} else
if ($img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.png')) {
$avatar_format = 'png';
} else {
$avatar_field = '<a class="but" href="profile.php?action=upload_avatar&amp;id=' . $id . '">' . $lang_profile['Upload avatar'] . '</a>';
}
 
// Display the delete avatar link?
if ($img_size) {
$avatar_field .= ' <a href="profile.php?action=delete_avatar&amp;id=' . $id . '">' . $lang_profile['Delete avatar'] . '</a>';
}
 
</div>
*}
Добавлено спустя   4 минуты  32 секунды:
А вот готовое решение нашел.

Код:
span style="color: #0000BB"><?php{if $pun_config.o_avatars} {if $user.use_avatar == 1} {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.gif")} <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.gif" alt="" /> {else} {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.jpg")} <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.jpg" alt="" /> {else} {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.png")} <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.png" alt="" /> {else} {$lang_profile.$No_avatar} {/if} {/if} {/if} {else} {$lang_profile.$No_avatar} {/if}<br/>{/if}
Отредактировано tipsun (2012.06.05 12:12)
#200. tipsun Off (19)
Moderator
2012.06.05 14:02
Немного commit.
Отредактировано tipsun (2012.06.05 14:02)
#201. tipsun Off (19)
Moderator
2012.06.06 12:12
Еще commit.
Остался раздел "Администрирование".
- - - -
Чет когда переходишь в профиле с вкладки "основной" на другие, то ссылка администрирование пропадает.
- - - -
А, просто не добавил нужные переменные в smarty.
Отредактировано tipsun (2012.06.06 12:12)
#202. Gemorroj Off (107)
Administrator
2012.06.06 14:02
администрирование можно на потом оставить.
все по публичной части сделано уже?? круто. позже посмотрю.
#203. tipsun Off (19)
Moderator
2012.06.06 14:02
Я имел ввиду файл profile.php smile
Отчет
Показать скрытый текст
Отредактировано tipsun (2012.06.23 13:01)
#204. tipsun Off (19)
Moderator
2012.06.14 15:03
Еще 2 файла: login.php + register.php
#205. Gemorroj Off (107)
Administrator
2012.06.14 18:06
ну, самое сложное переведено smile отлишна
#206. tipsun Off (19)
Moderator
2012.06.23 13:01
wap/help.php не смог с 3 отреком нормально разобраться, ну оригинальную идею не смог перенести на шаблон.
Добавлено спустя   1 минуту  11 секунд:
Там как бы на 1 изображение если есть еще коды-ключи, то показывать в одном диве.
#207. tipsun Off (19)
Moderator
2012.06.25 10:10
Файл wap/hide.php маразм.
#208. tipsun Off (19)
Moderator
2012.06.25 10:10
Так как этот маразм почти полностью совпадает с wap/viewtopic.php, то решил этим воспоьзоватсья. Шаблон взял от viewtopic.tpl
#209. tipsun Off (19)
Moderator
2012.06.25 19:07
Еще, как приду домой, wap/message_delete.php сделаю и отправлю...
#210. tipsun Off (19)
Moderator
2012.06.25 21:09
Commit. Бле! Комментарий забыл.
Добавлено спустя   5 минут  43 секунды:
Что за память. >_<
Добавлено спустя   7 минут  37 секунд:
Если ничего не упустил, остались:
message_list.php
message_send.php
misc.php
search.php
uploads.php
viewprintable.php
viewspam.php
Отредактировано tipsun (2012.06.25 21:09)
#211. tipsun Off (19)
Moderator
2012.07.03 23:11
Вот message_list.php меня потерял! @_@
#212. tipsun Off (19)
Moderator
2012.07.04 00:12
Вот это (_Y_)
"настройки", "подтв. удаления" отсеки только сделал.
"Входящие", "Исходящие" надо разгребать.
#213. tipsun Off (19)
Moderator
2012.07.04 18:06
Почти готово.
Ошибки надо поправить.
Можно как-то чтоб смарти отображал, где я облажал?
#214. tipsun Off (19)
Moderator
2012.07.04 18:06
Код:
span style="color: #0000BB"><?php$smarty->debugging = true;
#215. tipsun Off (19)
Moderator
2012.07.04 19:07
Сделано.
Хоть и коряво <_<
Добавлено спустя   2 минуты  50 секунд:
Commit.
Отредактировано tipsun (2012.07.04 19:07)
#216. tipsun Off (19)
Moderator
2012.07.04 19:07
Говоря грубо 4 файла/мягко 6 файлов осталось.
Добавлено спустя   1 минуту  1 секунду:
Сегодня еще 1 попробую сделать: message_send.php
Отредактировано tipsun (2012.07.04 19:07)
#217. tipsun Off (19)
Moderator
2012.07.06 14:02
+ message_send.php
#218. tipsun Off (19)
Moderator
2012.07.13 17:05
+ upload.php
Сейчас интернет будет (через брата телефон), выложу.
#219. tipsun Off (19)
Moderator
2012.07.13 21:09
search.php заставляет напрягать мой мозг. sad уф.
#220. Gemorroj Off (107)
Administrator
2012.07.13 21:09
у меня отпуск скоро) как раз к этому времени, закончишь думаю. и я подтянусь
#221. tipsun Off (19)
Moderator
2012.07.13 22:10
Умно big_smile smile
#222. tipsun Off (19)
Moderator
2012.07.20 14:02
Commit.
Добавлено спустя    51 секунду:
Вроде только wap/viewspam.php остался.
#223. tipsun Off (19)
Moderator
2012.07.20 15:03
Все вроде ^_^
#224. Gemorroj Off (107)
Administrator
2012.07.20 15:03
супер) постараюсь занятся
#225. tipsun Off (19)
Moderator
2012.07.20 23:11
Ну как там, просто хоть посмотрел, кошмар?
#226. Gemorroj Off (107)
Administrator
2012.07.21 00:12
еще не смотрел)
#227. Gemorroj Off (107)
Administrator
2012.07.21 18:06
обнови свн. там, вобщем, есть еще что подшлифовать в целом. будем пока этим заниматься.
когда подшлифуем из бранча переедем в транк.
#228. tipsun Off (19)
Moderator
2012.07.22 00:12
Обновил.
Мне что пилить?
#229. Gemorroj Off (107)
Administrator
2012.07.22 00:12
да так. проверяй все ли работает. не работали, например, все сообщения об ошибках. может еще что-то я пропустил.
#230. tipsun Off (19)
Moderator
2012.07.22 00:12
Ок
#231. tipsun Off (19)
Moderator
2012.07.23 22:10
Я тут подумал, может сделать адрес для стиля.css проще:
"../style.css"
Смарти компилирует в известную папку (compile, cache, template, config). Стиль находится выше на 1 директорию.
#232. Gemorroj Off (107)
Administrator
2012.07.23 23:11
так то да, но сейчас там по дефолту вроде некорректно стиль ставится
#233. tipsun Off (19)
Moderator
2012.07.23 23:11
А, там уже по-другому.
Добавлено спустя    35 секунд:
Да, я вот запостил и увидел.
#234. tipsun Off (19)
Moderator
2012.07.27 16:04
Сейчас commit случится.
Добавлено спустя   1 минуту  12 секунд:
Опять коммент забыл. sad
#235. tipsun Off (19)
Moderator
2012.07.27 16:04
Еще 1 в догонку.
Кое-что еще от себя добавил. smile
- - - -
В профиле, при предпросмотре, панель навигации вверху пропадать не будет.
#236. tipsun Off (19)
Moderator
2012.07.27 17:05
Поправка навигации (вверху страницы) в некоторых файлах.
#237. tipsun Off (19)
Moderator
2012.07.28 02:02
Как-то странно получатся. Файлы стилей в одном месте, разметка в другом.
Добавлено спустя   8 минут  54 секунды:
Может надо было в style_wap держать шаблоны, тогда ничего переделывать не придется, чтоб показывать варианты стилей.
#238. tipsun Off (19)
Moderator
2012.07.28 03:03
style_wap/styleName.css
style_wap/styleName/tpls/
#239. tipsun Off (19)
Moderator
2012.07.28 13:01
Тем более там поиск идет так:
Код:
span style="color: #0000BB"><?php $styles = array(); $d = dir(PUN_ROOT . 'style_wap'); while (($entry = $d->read()) !== false) { if (substr($entry, strlen($entry) - 4) == '.css') { $styles[] = substr($entry, 0, strlen($entry) - 4); } } $d->close();
#240. tipsun Off (19)
Moderator
2012.07.31 19:07
Надо было значение формата даты не в переменную, а в константу занунуть. sad Ладно исправлюсь.
#241. tipsun Off (19)
Moderator
2012.08.02 19:07
Или переделать везде поиск стиля.css на нынешнее расположение дизайна в виде папок?
#242. Gemorroj Off (107)
Administrator
2012.08.02 19:07
не знаю. расскажи подробнее. я не помню архитектуру.
#243. tipsun Off (19)
Moderator
2012.08.02 21:09
: раньше
/style/
/style_wap/
/style_wap/wap.css
/style_wap/xwab.css
- - - -
: сейчас
/include/template/web/
/include/template/wap/
/include/template/wap/wap/
/include/template/wap/wap/style.css
/include/template/wap/wap/style2.css
/include/template/wap/wap/tpls/
/include/template/wap/xwab/
- - - -
вроде везде повторяется, код который я написал выше.
он показывает возможные варианты выбора.
#244. Gemorroj Off (107)
Administrator
2012.08.02 21:09
tipsun, нет. в template не должно быть файлов доступных для браузеря напрямую.
#245. tipsun Off (19)
Moderator
2012.08.02 21:09
Не обязательно конечно поддержка одной разметкой несколько стилей, но было бы экономней smile
чтоб одну и ту же разметку не копировать для разных стилей.
Добавлено спустя   2 минуты  38 секунд:
Вообщем все как есть оставить, и везде переделать показ вариантов стилей?
#246. Gemorroj Off (107)
Administrator
2012.08.03 10:10
tipsun, об экономии лишнего мегабайта на жестком диске думай в последнюю очередь. разметка будет разной.
#247. tipsun Off (19)
Moderator
2012.08.06 18:06
tipsun написал:
В moderate не могли ссылки действовать из viewtopic.php (уд./пер./закр./сн.)
Fixed
Gemorroj, когда находишься непосредственно в теме форума и видишь ссылки:
Удалить сообщения|Перенести тему|Закрыть тему|Выделить тему
Переходишь по: Удалить сообщения
И тщательно проверяешь smile
Его поправил (он вообще не работал, из-за кривизны моих рук половина кода отсутствовала big_smile), но мало ли.
#248. tipsun Off (19)
Moderator
2012.08.06 18:06
o(o_O)o WTF?!
В файле wap/post.php тоже целый кусок кода отсутствовал.
Чем я смотрел?!
- - - -
Так, это вроде тоже начало работать...
#249. tipsun Off (19)
Moderator
2012.08.06 19:07
Gemorroj, в wap/edit.php не вижу проблем, вроде редактируемое сообщение показывает. Что не так?
Добавлено спустя   2 минуты  20 секунд:
Предпросмотр? - Поправил.
Добавлено спустя   2 минуты  54 секунды:
Пойду отдыхать smile
#250. Gemorroj Off (107)
Administrator
2012.08.06 21:09
tipsun, да, отсутствовали куски кода. в edit тоже да, вроде бы.
я в отпуск, буду с gprs или как там его, так что хз как смогу програмить.
#251. tipsun Off (19)
Moderator
2012.08.06 21:09
Ну я поправил, посмотрел. Все что видно, работает.
#252. tipsun Off (19)
Moderator
2012.08.07 11:11
tipsun написал:
Тут есть отметка новые посты.
Вот интересно стало, может плагин сделать, чтоб для каждого поста показывало кто прочитал. smile ну отдельно ссылка будет и при переходе на нее (пост +) список прочитавших.
Что плохо, есть кнопка "отметить все как прочитанное", это всю фишку портит.
Вот я сначала не подумал:
Код:
SELECT
`p`.`topic_id`,
`p`.`posted`
FROM
`posts` AS `p`
WHERE
`p`.`id` = 31
LIMIT 1;
 
SELECT
COUNT(1)
FROM
`log_topics` AS `lt`
WHERE
`lt`.`log_time` >= 1344284943 AND
`lt`.`topic_id` = 1
LIMIT 1;
 
SELECT
`lt`.`user_id`,
`lt`.`topic_id`,
`lt`.`log_time`,
`u`.`username`
FROM
`log_topics` AS `lt`
LEFT JOIN
`users` AS `u`
ON (`lt`.`user_id` = `u`.`id`)
WHERE
`lt`.`log_time` >= 1344284943 AND
`lt`.`topic_id` = 1
LIMIT 0, 10;
Потом подумал:
Код:
SELECT
COUNT(`u`.`id`)
FROM
`log_topics` AS `lt`,
`posts` AS `p`,
`users` AS `u`
WHERE
`lt`.`log_time` >= `p`.`posted` AND
`lt`.`topic_id` = `p`.`topic_id` AND
`lt`.`user_id` = `u`.`id` AND
`p`.`id` = 31
LIMIT 1;
 
SELECT
`u`.`username`
FROM
`log_topics` AS `lt`,
`posts` AS `p`,
`users` AS `u`
WHERE
`lt`.`log_time` >= `p`.`posted` AND
`lt`.`topic_id` = `p`.`topic_id` AND
`lt`.`user_id` = `u`.`id` AND
`p`.`id` = 31
LIMIT 0, 10;
Как правильней?
- - - -
Итог должен быть в виде списка пользователей, которые прочитали пост.
Но моим, как обычно, недалеким соображениям при прочтении нового сообщения ставится куда-то `log_forums` или `log_topics` временная метка нового сообщения.
Надо пойти найти, пошел искать.
#253. tipsun Off (19)
Moderator
2012.08.07 11:11
Может вообще не делать эту ерунду?
#254. Gemorroj Off (107)
Administrator
2012.08.07 11:11
tipsun, попозже можно. сейчас главное основной функционал допилить.
#255. tipsun Off (19)
Moderator
2012.08.07 11:11
Можно только для последнего сообщения темы делать список прочитавших, потому что метка захватит все предыдущие сообщения темы.
Но пользователи не всегда же в одинаковое время читают сообщения.
Отредактировано tipsun (2012.08.07 11:11)
#256. Gemorroj Off (107)
Administrator
2012.08.07 11:11
с аватарками проблемы. нельзя прикреплять файлы в ответе и редактировании.
#257. tipsun Off (19)
Moderator
2012.08.07 11:11
Gemorroj написал:
с аватарками проблемы. нельзя прикреплять файлы в ответе и редактировании.
Попробую исправить.
#258. Gemorroj Off (107)
Administrator
2012.08.07 11:11
собсно, удаление постов не работает. "Неверный запрос. Ссылка, по которой вы пришли неверная или устаревшая." при клике на "Удалить сообщения".
#259. tipsun Off (19)
Moderator
2012.08.07 11:11
Сегодня исправил, обновлялся?

Код:
// from
else exit();
// to
else (! $fid) exit();
#260. Gemorroj Off (107)
Administrator
2012.08.07 11:11
tipsun, да. там не правильно fid передается. сейчас это исправлю.
#261. Gemorroj Off (107)
Administrator
2012.08.07 11:11
нет пагинации в модерировании форума.
#262. tipsun Off (19)
Moderator
2012.08.07 13:01
Gemorroj написал:
нельзя прикреплять файлы в ответе и редактировании.
Можно smile
Добавлено спустя   3 минуты  14 секунд:
Пока я 1 коммитнул ты уже 6 раз. Скорострел big_smile
#263. Gemorroj Off (107)
Administrator
2012.08.07 13:01
edit теперь не работает. проверяй перед комитами.
Добавлено спустя   3 минуты  25 секунд:
я сейчас уезжаю, буду вечером только.  посмотри как выглядят edit и post. они отличаются. вероятно, что-то не так.
#264. tipsun Off (19)
Moderator
2012.08.07 13:01
Gemorroj написал:
нет пагинации в модерировании форума.
Есть.
Добавлено спустя    57 секунд:
Gemorroj написал:
edit теперь не работает. проверяй перед комитами.
Добавлено спустя   3 минуты  25 секунд:
я сейчас уезжаю, буду вечером только.  посмотри как выглядят edit и post. они отличаются. вероятно, что-то не так.
Ок
#265. tipsun Off (19)
Moderator
2012.08.07 14:02
Gemorroj написал:
edit теперь не работает.
Вроде сейчас работает. 1 условие добавил.
#266. tipsun Off (19)
Moderator
2012.08.08 11:11
Есть еще где ошибки?
#267. Gemorroj Off (107)
Administrator
2012.08.08 13:01
да. думаю еще много. как минимум сейчас зашел сразу вижу - нет заголовка в "Удалить сообщения". В модерировании топиков, топики всегда помечены как новые.
По самим шаблонам - в них многовато логики, которой в шаблонах быть не должно. Нужно будет вынести все parse_message, если еще остались где-то из шаблонов в php код. Да и все остальные php функции нужно будет убрать из шаблонов. Либо сделать отдельный класс с вспомогательными php методами только для шаблонов.
Отредактировано Gemorroj (2012.08.08 13:01)
#268. tipsun Off (19)
Moderator
2012.08.08 13:01
Под логикой ты подразумеваешь if?
Типа шаблон решает что отображать?
#269. Gemorroj Off (107)
Administrator
2012.08.08 13:01
tipsun, нет. я имею ввиду parse_message, get_title и прочие функции форума, которые используются в шаблонах.
#270. tipsun Off (19)
Moderator
2012.08.08 13:01
Ок. Буду исправлять.
#271. Gemorroj Off (107)
Administrator
2012.08.08 13:01
message_popup еще сделать надо.
#272. Gemorroj Off (107)
Administrator
2012.08.08 20:08
посмотри сколько кидается нотисов. не передано много переменных в шаблоны. походи по страницам, поисправляй. если переменная передается часто в шаблон, то есть смысл передавать ее в хедере всегда. о производительности не думай вообще.
#273. tipsun Off (19)
Moderator
2012.08.09 19:07
Commit "Fix navigation".
Знаю, сам не доволен, халтура. sad
Потом поподробней посмотрю.
#274. tipsun Off (19)
Moderator
2012.08.09 19:07
Сделаю проверку в подключаемом шаблоне (profile.navi.tpl) - показывать ссылки или нет и как.
- - - -
Или оставить как есть?
Код:
span style="color: #0000BB"><?php{if $id == $pun_user.id or $pun_user.g_id == $smarty.const.PUN_MOD || $pun_user.g_id == $smarty.const.PUN_ADMIN}{include file='profile.navi.tpl'}{/if}
Добавлено спустя   3 минуты  53 секунды:
Просто в одном месте у меня получилось так:

Код:
span style="color: #0000BB"><?php{if $id == $pun_user.id or $pun_user.g_id == $smarty.const.PUN_MOD || $pun_user.g_id == $smarty.const.PUN_ADMIN}{include file='profile.navi.tpl'} {* Уже содержит навигацию, то что ниже + ссылки. *}{else} {assign var='Profile_menu' value='Profile menu'} {* Навигация: Главная / Профиль *} <div class="inbox"> <a href="index.php">{$lang_common.Index}</a>&#160;&#187;&#160;{$lang_profile.$Profile_menu} </div>{/if}
#275. tipsun Off (19)
Moderator
2012.08.09 19:07
Gemorroj написал:
посмотри сколько кидается нотисов.
Как и где?
- - - -
Я включил в wap/header.php отладку
Нет нигде ошибок или я не туда смотрю.
Код:
span style="color: #0000BB"><?php$smarty->error_reporting = true;$smarty->debugging = true;
#276. tipsun Off (19)
Moderator
2012.08.09 20:08
Вот /wap/misc.php не работает. Fixed.
Отредактировано tipsun (2012.08.09 20:08)
#277. Gemorroj Off (107)
Administrator
2012.08.09 22:10
в шаблоне не сокращай navi.
smarty дебаг не трогай. в .htaccess error_reporting -1 и error_log куда тебе нравится.
#278. tipsun Off (19)
Moderator
2012.08.09 22:10
Gemorroj написал:
в шаблоне не сокращай navi.
в смысле? Полностью писать *.navigation.tpl?
#279. tipsun Off (19)
Moderator
2012.08.09 22:10
Gemorroj написал:
в .htaccess error_reporting -1 и error_log куда тебе нравится.
Круто smile
Добавлено спустя   6 минут  51 секунду:
Ну в footer.tpl понятное дело. Он везде, но не везде нужные данные.
#280. Gemorroj Off (107)
Administrator
2012.08.10 00:12
tipsun, да, navigation
#281. tipsun Off (19)
Moderator
2012.08.10 15:03
Не нашел
Показать скрытый текст
#282. tipsun Off (19)
Moderator
2012.08.10 18:06
Commit. Совсем чуть поправок.
Еще остались непроверенные файлы.
#283. Gemorroj Off (107)
Administrator
2012.08.10 21:09
не пиши нанофикс и т.п. пиши развернутые комментарии) а так ок все. выберусь из гомеля займусь тоже
#284. tipsun Off (19)
Moderator
2012.08.10 21:09
Ок.
#285. tipsun Off (19)
Moderator
2012.08.11 00:12
Commit + Comment.
Этой работой я доболен, практически на 90%.
Индексный шаблон большой.
Все переменные не посмотрел.
Вдруг лишние есть, надо досмотреть...
Отредактировано tipsun (2012.08.11 01:01)
#286. tipsun Off (19)
Moderator
2012.08.11 10:10
Надо чтоб шаблоны без лишних "\s" and "\n" компилировались.
#287. tipsun Off (19)
Moderator
2012.08.11 10:10
Оповещение о новых личных сообщениях должно по всему сайту быть или толко на главной?
#288. tipsun Off (19)
Moderator
2012.08.11 11:11
Помоему я ошибся с последним commit.
Что-то должно быть в header, что-то в index.
#289. tipsun Off (19)
Moderator
2012.08.11 16:04
Еще есть исправления, там conditions не работает. Я его поправил, но не залил.
#290. Gemorroj Off (107)
Administrator
2012.08.11 16:04
147, 148 коммиты хорошие)
#291. tipsun Off (19)
Moderator
2012.08.11 19:07
Gemorroj, не убегай от вопросов smile
Как там располагаются оповещения?
Оповещение о:
- новом сообщении: везде, но на главной надо пропустить вперед логотип и еще что-то, я не могу в исходнике ничего понять, запутанно.
#292. tipsun Off (19)
Moderator
2012.08.11 21:09
Вообщем commit.
В отдельном шалоне все оповещения, если я лишние внес, легче найти и исправить будет
Отредактировано tipsun (2012.08.11 21:09)
#293. tipsun Off (19)
Moderator
2012.08.16 19:07
Функция показа аватарки не совсем подходит под раздел профиль. Либо там приспосабливать, что я сделал, либо функцию сделать более гибкой.
Добавлено спустя   1 минуту  8 секунд:
Сейчас посмотрю, если есть что commit - сделаю.
#294. tipsun Off (19)
Moderator
2012.08.18 19:07
А так нельзя сделать?:
Код:
span style="color: #0000BB"><?php//{censor_words($cur_topic.subject)|escape}{$cur_topic.subject|censor_words|escape}
Или делать как до этого ты показал, ну в логике.
#295. Gemorroj Off (107)
Administrator
2012.08.18 20:08
в логике надо делать
#296. tipsun Off (19)
Moderator
2012.08.21 21:09
НаCommitал чуть.
Остальное не хочу, не закончил полностью файл.
Потом забуду, где ковырял.
#297. tipsun Off (19)
Moderator
2012.08.21 23:11
Шаблон viewforum.tpl не отметил на commit. sad
#298. Gemorroj Off (107)
Administrator
2012.08.22 11:11
// Гость записанный в таблице пользователей (`users`) имеет id = 1. Зачем тогда его учитывать?
if (1 > $id) {
wap/karma.php
аналогичную проверку нужно сделать и в web версии. они должны иметь одинаковую логику же.
и еще, в форуме вроде бы есть константа идентифицирующая группы пользователей, нужно использовать ее. а не цифру 1.
#299. tipsun Off (19)
Moderator
2012.08.22 11:11
Gemorroj, ок. Исправлю.
#300. tipsun Off (19)
Moderator
2012.08.22 16:04
Так?
Добавлено спустя   3 минуты  40 секунд:
Я еще кое-что от себя добавил. Можно и убрать.
Если ссылки на пост нет, редирект не выполняется, следует показ истории кармы.
#301. Gemorroj Off (107)
Administrator
2012.08.22 17:05
wap/karma.php
$id =& $to;
зачем ссылка?
#302. tipsun Off (19)
Moderator
2012.08.22 17:05
Не знаю. Эээксперименты. smile
Добавлено спустя   3 минуты  38 секунд:
Неправильно?
#303. Gemorroj Off (107)
Administrator
2012.08.22 17:05
не нужна она там. вообще, ссылки не используй без явной необходимости.
#304. tipsun Off (19)
Moderator
2012.08.22 18:06
Ок.
#305. tipsun Off (19)
Moderator
2012.08.22 18:06
Я не знаю как там с ограничениями, ну если нельзя вдруг вытащить результат с запроса и т.д.
Я сделал вывод сообщения об ошибке.
Отредактировано tipsun (2012.08.23 13:01)
#306. tipsun Off (19)
Moderator
2012.08.23 20:08
Надо либо часто коммиты делать, либо записывать все, либо память тренировать. Все забываю.
#307. tipsun Off (19)
Moderator
2012.08.23 21:09
Все залил.
Добавлено спустя   1 минуту  10 секунд:
Догадался таки слить оригинал с репозитария, чтоб по нему ориентироваться, смотреть может где не так условие поставил.
#308. tipsun Off (19)
Moderator
2012.08.23 22:10
Удалил бред с karma.
Просто скопировал лишнее.
И все равно во всем wap-форуме нет конкретных действий к $db->fetch() при возвращении значения false.
Только к $db->query(); [error()]
#309. Dark Gemorroj
Гость
2013.01.27 20:08
Что за волшебный код в include/quickjump.php?
Что за return без функции? Что за include в переменную?
#310. Gemorroj Off (107)
Administrator
2013.01.27 20:08
Dark Gemorroj написал:
Что за волшебный код в include/quickjump.php?
Что за return без функции? Что за include в переменную?
include. Вот так оно работает. Очень удобно, иногда.
#311. tipsun Off (19)
Moderator
2013.01.27 20:08
У меня не работает.
Показать скрытый текст

Добавлено спустя    47 секунд:
И, кстати, спасибо за инфу. smile
#312. Gemorroj Off (107)
Administrator
2013.01.27 20:08
зайди в админку и перегенери кэш.
#313. tipsun Off (19)
Moderator
2013.01.27 20:08
Волшебник, такой волшебник. big_smile
#314. tipsun Off (19)
Moderator
2013.01.27 20:08
Она все-таки попалась:
Показать скрытый текст

Добавлено спустя   1 минуту  56 секунд:
Эдак раз 818 big_smile
#315. tipsun Off (19)
Moderator
2013.01.27 20:08
Показать скрытый текст
#316. Gemorroj Off (107)
Administrator
2013.01.27 21:09
tipsun, это не трогай. ошибки в сторонних либах не трогай.
#317. tipsun Off (19)
Moderator
2013.01.27 23:11
Больше 3х категорий в форуме не отображается. Ни в web, ни в wap.
Страниц: 130 31 32 Все
Главная
WEB
PunBB Mod v0.6.2
0.221 s