tipsun » 2012.02.17 14:56

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<?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 15:41

Что делать, если ключ массива задан с пробелом?

Код:

1
2
3
4
{if $quickpost}
<div>
<strong>{$lang_topic['Quick post']}</strong>
</div>

Добавлено спустя   9 минут  7 секунд:
Что-то типа такого можно?

Код:

1
<input type="hidden" name="form_user" value="{$pun_user.username ? $pun_user.username : 'Guest'}" />

Или так надо?

Код:

1
<input type="hidden" name="form_user" value="{if $pun_user.username} {$pun_user.username} {else} Guest {/if}" />
tipsun » 2012.02.17 16:09

В файле viewtopic я почти всю разметку занес в шаблон. То, что в гигантском цикле foreach осталось. Все остальное не трогаю.

Gemorroj » 2012.02.17 16:21

я не помню уже. на счет тернарного оператора.

tipsun » 2012.02.17 16:50

Карма
Не лучше ли сразу?

Код:

1
2
3
4
5
6
7
8
9
<?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 20:31

У меня руки кривые?
Или это проделки самописного MySQLi?
Там посмотрел, видимо сбивает предыдущий запрос.

Код:

1
2
3
4
5
6
7
8
9
10
<?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.17 21:35

Просто я думал в один массив все слить, потом его в смарти загнать и уже в шаблоне через фореач все допилить.

tipsun » 2012.02.17 22:00

Вот за сегодня чего получилось.
Не добил пока еще :(
Там еще запутанно с выводом для Пользователя и Гостя

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?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 == || $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 && $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 && $pun_config.o_avatars == && $cur_post.use_avatar == && $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 -->
<class="con">{$paging_links}</p>
 
{if $pun_user.g_post_replies}
<div class="blocktable">
    <strong><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}
Gemorroj » 2012.02.18 12:13

tipsun, я не понял на счет кармы. Покажи как сейчас и что тебе не нравится. Я на память весь код не помню.
Вообще не переживай если код в шаблонах громоздкий получается. Само то, что верстка будет вынесена уже само по себе очень большой плюс.
По поводу разных шаблонов для пользователя и гостя - есть смысл. Но еще же есть модераторы и админы. Там  тоже немного отличается внешний вид.

tipsun » 2012.02.18 12:17

Неправильно я там сделал.
Забыл про условие {if $cur_post.poster_id > 1} надо во все остальные условия подставлять, где эти условия в само условие входили :)
- - - -
Сейчас карму покажу

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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/%%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'] > && $pun_config.o_show_post_karma == || $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}

* * * *
Чтоб её узнать, надо запрос из шаблона делать или в логике пройтись по готовому массиву с сообщениями и определить карму.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
foreach ($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'] == || $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 15:21

Не хочет ничего показывать, почему?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
define('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 17:46

Так видно что класс загрузился.

Код:

1
2
3
<?php
 
var_dump($smarty);

Добавлено спустя   6 минут  33 секунды:
А, шаблон битый. Неправильно что-то написал.
Другой, простой-тестовый, загрузило-показало.

tipsun » 2012.02.18 18:03

Короче массивы с ключами, содержащими пробелы надо писать как обычно, видимо.

Код:

1
{$lang_topic['Quick post']}
tipsun » 2012.02.18 18:56

Ну сейчас совсем другое дело. Вживую собирать (смотреть на результат) гораздо приятнее :)
Хоть видно, что вроде получается.

tipsun » 2012.02.18 19:33

Я вот подумал, зачем я тогда время трачу на обработку этих $cur_post['edit'] -> $cur_post.edit
Может как есть оставлять?

tipsun » 2012.02.18 21:03

За сегодня.
Ошибок в компиляции нет.
Пропустил некоторые функции типа антиспам, счетчик сообщений, сигнатура итд.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?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 == || $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 && $cur_post.is_online == $cur_post.poster_id}
                <b>On</b>
                {else}
                Off
                {/if}
            </div>
        </td>
        {if $cur_post.poster_id && ($pun_config.o_avatars == && $cur_post.use_avatar == && $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) == && $pun_user.g_delete_topics == 1) || (($start_from $post_count) > && $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}
 
<class="con">{$paging_links}</p>
 
{if $pun_user.g_post_replies}
<div class="blocktable">
    <strong><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'}
Gemorroj » 2012.02.18 23:20

tipsun, а ты откуда форум брал-то...? что-то у меня подозрение что ты его не из свн брал?

tipsun » 2012.02.18 23:21

Нет. На свн ссылки нет. Я отсюда (вапинет-скрипты) взял.
Добавлено спустя   1 минуту  13 секунд:
Я вообще думал присоединиться туда, но чет не разобрался как.

Gemorroj » 2012.02.18 23:25

tipsun, ох блин... придется тебе переписывать код..)
давай присоединяйся к командной разработке в свн.
Добавлено спустя    55 секунд:
ссылка на репозиторий тут в 1 посте http://wapinet.ru/forum/viewtopic.php?id=69

tipsun » 2012.02.19 11:00

$pun_user.g_id - такой синтаксис ведь не обязателен?
$pun_user['g_id'] - можно же как обычно?

Gemorroj » 2012.02.19 11:36

на сколько я помню, желателен именно $pun_user.g_id

tipsun » 2012.02.19 11:41

Ок. Но с пробелами ключи придется писать так: $lang_pack['tro lolo']

Gemorroj » 2012.02.19 12:35

погуглил. действительно частая проблема.
реашают заданием временной переменной в шаблоне.

Код:

1
2
{assign var=index value="tro lolo"}
$lang_pack.$index
tipsun » 2012.02.19 12:45

Ок. Спс.

tipsun » 2012.02.19 13:50

Скачал форум.
Добавлено спустя   4 минуты  13 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    if ($cur_post['poster_id'] > 1) {
        if ($pun_config['o_avatars'] == && $cur_post['use_avatar'] == && $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 '';
        }
    }

Код:

1
2
3
4
5
<!-- +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 16:53

Фух. Там только интимные места остались. :D

Gemorroj » 2012.02.19 16:57

расскажи вообще про структуру, как ты смарти прикручиваешь

tipsun » 2012.02.19 17:56

Я пока просто шаблоны делаю.
Я только вчера со smarty познакомился, а тут уже структура итд :)

tipsun » 2012.02.20 13:52

Gemorroj, Если я выложу код на SVN, то могу случайно что-то заменить? После чего невозможно будет это восстановить?

Gemorroj » 2012.02.20 13:54

можно откатить будет. но сейчас у тебя нет прав на заливку кода в свн. только на скачивание.
расскажи про архитектуру, как ты прикручиваешь смарти.

tipsun » 2012.02.20 14:00

В архиве все.

Gemorroj » 2012.02.20 15:19

эм нет. в папке include/template есть уже несколько шаблонов, нужно развивать их там дальше.
сам Smarty тоже стоит положить в includes. themes положить в include/template

tipsun » 2012.02.20 15:46

Это получится так типа:

- 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

Gemorroj » 2012.02.20 15:48

еще даже можно, наверн в themes 2 подпапки добавить wap и web и в них ложить темы для того и другого отдельно

tipsun » 2012.02.20 15:50

Ок.
Я в dcms видел, что они просто префикс добавляли: "wap_", "pda_", "web_".
Поэтому думал, может так и сделать.
Добавлено спустя   6 минут  26 секунд:
Еще надо будет в верстке указывать (через переменную можно):

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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:18

А если включить мозги, то так можно:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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:45

Не знаю как тут с запросом быть.
Просто сделал, что типа карма уже будет готовая выводиться в массиве.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
//Пост должен содержать типа такого.
$cur_post['karma']['val'] = 'integer karma';
 
        if ($pun_config['o_show_post_karma'] == || $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 == || $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:57

Нет, надо было оставить "used".

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

Вот короче:

Код:

1
2
3
4
5
6
7
8
9
//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:08

Сейчас еще вытащу все assign с цикла шаблона :D Я сначала даже и не подумал.
Добавлено спустя   6 минут  30 секунд:
Осталось: карма, аватарка и еще

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// Can we or can we not post replies?
if (!$cur_topic['closed']) {
    if ((!$cur_topic['post_replies'] && ($pun_user['g_post_replies'] == || $pun_user['g_post_replies'] == 2)) || $cur_topic['post_replies'] == || $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:38

Пойду отдыхать, а то глаза уже болят...
Добавлено спустя   8 минут  41 секунду:

tipsun написал:

А если включить мозги, то так можно:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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" />
*/

А если этими мозгами еще подумать, то:

Код:

1
2
3
4
5
6
7
8
9
10
<?php
define('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 21:37

Где-то я видел регистрация_функции() в смарти.
Еще чего подумал.
Ну допустим есть у нас некоторые исключения, при которых надо перенаправить пользователя, или оборвать выполнение скрипта.
Если в самом начале запускать смарти, то оно как бы лишний раз запускается.
А если все будет нормально, + кеш-смарти. То наоборот выигрышный запуск в самом начале, не?
Правда там еще этот смарти проверить должен, изменились ли данные или нет, чтоб выдать кеш-шаблон или вновь компилируемый, не?
Или при компиляции смарти приводит шаблон в нативный вид?
* А из нативного в статичный уже.

tipsun » 2012.02.20 22:27

tipsun, ну диагноз ясен.
Так же наблюдается синдром Флудераста.
Принимайте google 3 раза в день. И все пройдет. :D

tipsun » 2012.02.20 22:49

Там она все параметры в массив складывает, как я понял.
Это значит саму функцию тоже менять придется?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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"} чтобы задать формат.
Gemorroj » 2012.02.21 11:47

tipsun, про скорость пока не задумывайся, доделаем.
на счет твоей функции, у смарти уже вроде есть готовые функции для работы с датой. почитай мануал по этому поводу. и желательно по 3 версии

tipsun » 2012.02.21 15:29

Я не про дату, про дату я читал :)

Код:

1
2
3
4
5
{$var|date_format:'%d/%m/%y %H:%I:%S'}
 
еще про default посмотрел (когда переменная не содержит значения, то выводится по умол.)
Ну, по ситуации, заглядываю в мануал, бывает =)
{$var|default:'no value'}

. . . .

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

. . . .

Gemorroj » 2012.02.21 16:14

я по моему такой штукой даже и не пользовался.

tipsun » 2012.02.21 21:44

А как быть с пользовательскими функциями и инклудами?

tipsun » 2012.02.21 22:51

Если я ничего не упустил, то остался в файле wap/viewtopic.php только этот код: #39.
Там вроде случайно повторился.
Еще посмотрел стандартные шаблоны: include/template/
Там как бы совсем общее.
Ну я несколько раз смотрел, пытался собрать верх header.tpl и низ footer.tpl
Там например была ссылка на rss новости, указание кодировки, я сразу подставлял то, что по default идет из массива-источника.
Есть немного, но в правильности не уверен, еще раз буду смотреть, искать что упустил.

Gemorroj » 2012.02.21 22:55

главное чтобы архитектура правильно выстроена была)
Добавлено спустя   1 минуту  6 секунд:
кстати, сегодня Smarty 3.1.8 вышел

tipsun » 2012.02.21 23:03

Надо наверно все-таки мануал 3 на англ. смотреть и переводить. Пользоваться 3, а мануал за 2 смотреть - не логично :)
Добавлено спустя   5 минут  9 секунд:

tipsun написал:

Там как бы совсем общее.

И там для вап только wap_main.tpl
Остальное для веб вроде.
Добавлено спустя   7 минут  57 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<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:25

Ну это просто набросок. Там еще условия итд.

tipsun » 2012.02.22 00:15

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?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:36

Можно задать $basename с логики, в принципе. baseName($_SERVER['PHP_SELF']);
Еще там если определена переменная PUN_HELP то грузиться шаблон include/template/help.tpl - я пока пропустил.
И еще там были интимные места, я пропустил.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
// Load the template
if (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 BEGIN
require PUN_ROOT 'include/pms/wap_header_new_messages.php';
// PMS MOD END
tipsun » 2012.02.22 00:56

Я спать валю. :)

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?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">
            <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/>
    <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>
tipsun » 2012.02.22 15:12

Еще про подпись юзера забыл.

tipsun » 2012.02.22 16:19

Исключительно слово "лес" полностью описывает ситуацию, сложившуюся в данном коде.
Куда бы ты не ходил, возвращаешься на тоже место.
generate_wap_navlinks()

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?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
    }

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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 == 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:31

Вид: "Пользователи |Поиск |Загрузки |Вложения "
Если так не нравится, можно переделать как было (в форме)

tipsun » 2012.02.22 21:24

Мдэ :( $att_info
И таких моментов не мало.

Код:

1
2
3
4
5
6
<?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;
        }
tipsun » 2012.02.22 22:50

Чет я не понял, как система вложений работает.
Вроде все прозрачно. Но не пашет, когда //$attachments = $save_attachments.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?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 10485760)} mb
        {else}
            {round($attachment.size 10240)} 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 23:07

wap/viewtopic.php
include 'include/attach/fetch.php';
вроде как инфа должна находиться в $attachments
еще там нашел в файле
include 'include/file_upload.php'; - вроде
есть функция в самом конце, чет типа attach_filter_of_post
...
Или это все вообще не с аттачмента берется, а с самого cur_post тогда, что-ли может.

tipsun » 2012.02.22 23:29

А вообще, потихоньку, чище становится там :)

tipsun » 2012.02.22 23:59

А епт. Я же файл свой переименовал, вот и не работало.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
//dir: 'include/attach/fetch.php'
 
// there are different sources to include fetch.php
switch (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;
}
Gemorroj » 2012.02.23 00:09

я не помню кооод!) давай ссылки на код в свн. типа http://code.google.com/p/punbb-mod/sour … ic.php#273

tipsun » 2012.02.23 00:27

А, извиняюсь.
Да я больше для себя болтаю. Сам пишу, сам читаю :D
Вот еще че, сейчас ссылки дам.
Добавлено спустя   2 минуты  51 секунду:
http://code.google.com/p/punbb-mod/sour … tch.php#37

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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.iditem=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 10485760)} mb
        {else}
            {round($attachment.size 10240)} 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:54

http://code.google.com/p/punbb-mod/sour … ic.php#266

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

Код:

1
2
3
4
5
6
7
8
9
10
11
<?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 секунд:
Эх, наверно зря я переносил условия полностью в шаблон.
Лучше бы оставил, чтоб потом через логику можно было сразу поменять.

Вот пример?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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'] == || $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:30

Вот, если будет время + желание то:

Gemorroj » 2012.02.23 11:45

ммм, я что-то не догоняю..
что за attach?
папку themes удали, она там лишняя.

tipsun » 2012.02.23 12:18

Файл: "include/attach/fetch.php" - извлекает инфу о закрепленных файлах к посту в массив.
Файл: "include/attach/wap_view_attachments.php" - показывает инфу из нашего массива с вложениями в текущем посту.
+ Костыль
Эти файлы инклудились в "wap/viewtopic.php"

Gemorroj » 2012.02.23 13:43

аа, ясн.
еще, пользуйся Smarty комментами {* коммент *} а не html в шаблонах.

tipsun » 2012.02.23 13:55

Ok.

tipsun » 2012.02.24 13:38

Код:

1
2
3
4
5
6
<?php
 
//До
{if ! $pun_user.is_guest}{$pun_user.username|escape}{else}Guest{/if}
//После
{$pun_user.username|escape|default:'Guest'}
tipsun » 2012.02.24 14:23

Может быть или не быть.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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'] == && $cur_post['use_avatar'] == && $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:36

Не хочется начинать новые файлы переводить из-за того, что потом забудешь, что тут было.
А тут еще остались моменты.
Или сделать как получится и потом переделать?
Добавлено спустя   2 минуты  59 секунд:
user_title осталось, например.
Сейчас буду его искать.
Эта переменная нагде не выводится, чудеса епт.
- - - -
Или это $signature переменная...
Ибо <div class="hr">моя подпись высветилась</div>

tipsun » 2012.02.24 15:08


» 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 :)

$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 раз пользователь с подписью.
И потом если он встретиться еще раз, то не надо еще раз парсить, а просто вытащить готовое из массива, где ключ=идЗверя, значение=егоЗапарсервированная:)Подпись.
Мдэ, сразу не догадался. :(

tipsun » 2012.02.24 18:56

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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 21:15

Не могу найти где это выводится.
Вроде больше интимных мест не осталось.
wap/viewtopic.php#137
wap/viewtopic.php#187
wap/viewtopic.php#311
wap/viewtopic.php#339
wap/viewtopic.php#344

Gemorroj » 2012.02.24 23:43

а кстати, вполне возможно что в вап версии некоторые переменные и не используются.

tipsun » 2012.02.24 23:46

Ну наверно. Я ни в header.php, ни в footer.php не нашел таких переменных.
Я сейчас их буду подробней рассматривать. Наброски то уже есть.

tipsun » 2012.02.25 14:38

wap/footer.php#9 :: include/functions.php#289

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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>'));
            }
        }
    }
}
tipsun » 2012.02.25 20:28

Интимные места, как всегда.
- Выкинул запрос в базу.
* Проигнорировал инклуд.
- Не обратил внимание на развилку wap_main и help.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?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:56

По-моему все эти условия тоже не стоит переносить в шаблон.
Только самое нужное.
Все условия скорее всего надо держать в логике, потом только передать типа:

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

Код:

1
2
3
4
5
6
7
8
9
<?php
 
if (/* условия */) {
$smarty->assign('isset_new_message'true);
}
 
{if $isset_new_message}
<div class="mail">{$check_mail_box}</div>
{/if}
tipsun » 2012.02.28 22:59

» include/pms/wap_header_new_messages.php используется в wap/header.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (! $pun_user['is_guest'] &&
    $pun_user['g_pm'] == &&
    $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:28

Может что-то типа такого, или лучше можно сделать.
Или, как в мануале, сделать класс загрузки Smarty
» wap/header.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if (! 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');
Gemorroj » 2012.02.29 00:58

а как в мануале? я давненько со смарти не работал. вообще по логике да, нужно делать класс обертку.
типа PunTemplate extends Smarty {}

tipsun » 2012.02.29 10:10

v2 http://smarty.net/docsv2/ru/installing. … tended.tpl
v3 http://smarty.net/docs/en/installing.sm … tended.tpl

Gemorroj » 2012.02.29 12:36

ну так да, об этом и речь)

tipsun » 2012.02.29 16:13

Хотя в принципе так тоже удобно запускать Smarty, не?

Код:

1
2
3
4
5
<?php
 
//define('SMARTY', 1);
define('PUN_TEMPLATE'1);
require_once PUN_ROOT 'wap/header.php';

. . . .

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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);
    }
}
Gemorroj » 2012.02.29 17:54

tipsun написал:

Хотя в принципе так тоже удобно запускать Smarty, не?

как так? я не понял.
насчет статичного файла - наверное, просто {include file='cache/cache_wap_quickjump_' . $group_id . '.php'} пока делай. $group_id должна быть в шаблоне

tipsun » 2012.02.29 19:38

Сначала #83 в шапке или где удобно, что обычно в любом случае инклудится, расположить.
Потом вызывать так типа:

Код:

1
2
3
4
<?php
 
define('SMARTY'1);
require_once PUN_ROOT 'wap/header.php';

Короче. Дальше потихоньку пойду.

Gemorroj » 2012.02.29 20:46

не-не-не, класс прослойка над Smarty должен быть обязательно.

tipsun » 2012.02.29 21:34

А, ок. Сделаю.

tipsun » 2012.03.01 00:19

Да что такое, только вроде начал запускаться Smarty, теперь шаблоны не выводятся.
Хотя в них нет ошибок. Без скорлупы или как там, работало. :(
Добавлено спустя   7 минут  42 секунды:

wap/viewtopic.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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:33

Без прослойки работает, проверил. Ну шаблон собранный показывает.
Добавлено спустя   1 минуту  27 секунд:
Где-то я туплю, видимо.
Добавлено спустя   6 минут  48 секунд:
Пойду спать.

tipsun » 2012.03.02 14:25

Итак...
С прослойкой так и не разобрался.

Показать/Скрыть
Fatal error: Call to a member function createTemplate() on a non-object in L:\home\punbb.mod\www\include\Smarty\sysplugins\smarty_internal_templatebase.php on line 47

Gemorroj » 2012.03.02 14:57

Pun_Template - так не называй. такое название говорит о том, что этот класс должен быть в папке Pun и файл называться Template.php
какой код вызывается когда ты получаешь эту ошибку?

tipsun » 2012.03.02 15:22

» #92 - вот там я все показал.
Без прослойки работает.
Хорошо, как назвать тогда? "include_template" = include/template.php

Gemorroj » 2012.03.02 17:50

класс PunTemplate назови.
файл include/PunTemplate.php

tipsun » 2012.03.02 21:40

Ой бле! Вот я тормоз.
Метод надо так же как класс назвать, видимо. Сейчас попробую.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class 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();
Gemorroj » 2012.03.02 21:46

нее, это из времен php4. в php5 кошерно коструктор называть __construct

tipsun » 2012.03.02 21:46

Нет. Вот так получилось норм.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
// include/template.php
if (! 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.php
require_once(PUN_ROOT 'include/template.php');
$smarty = new PunTemplate(PUN_ROOT 'include/template/wap/' $pun_user['style_wap'] . '/');
 
// wap/viewtopic.php
require_once(PUN_ROOT 'wap/header.php');

Добавлено спустя   3 минуты :

Gemorroj написал:

нее, это из времен php4. в php5 кошерно коструктор называть __construct

Да. :)
Нет - я говорил сам себе :)
Добавлено спустя   5 минут  35 секунд:
Ладно. Сейчас чуть по коду погуляю. Может че получится.

Gemorroj » 2012.03.02 21:59

файл назови не template.php, а PunTemplate.php т.е. так же как и класс называется

tipsun » 2012.03.02 22:00

Хорошо.

Gemorroj » 2012.03.02 22:00

и в конструктор передавай только название темы, класс прослойка должен сам понимать какие пути нужно установить основываясь только на названии темы.
Добавлено спустя    30 секунд:
ну и блин конструктор все-таки __construct назови

tipsun » 2012.03.02 22:10

Если метод PunTemplate переименовать в "__construct", то перестает работать.
Добавлено спустя   3 минуты  3 секунды:
Про пути, сейчас попробую.

Gemorroj » 2012.03.02 22:33

tipsun, ты на php4 чтоли сидишь?)

tipsun » 2012.03.02 22:41

Нет вроде. Денвер же содержит PHP v5.2

Gemorroj » 2012.03.02 22:42

у денвера есть разные версии

tipsun » 2012.03.02 23:12

phpVersion() = 5.2.12

Gemorroj » 2012.03.02 23:26

ну проблема в любом случае не в названии конструктора.

tipsun » 2012.03.03 11:41

Вроде так должно сработать.
Просто сегодня баловался со своим говноКодом и случайно получилось.

Код:

1
2
3
4
5
6
7
8
9
10
<?php
 
class PunTemplate extends Smarty
{
    function __construct($dir)
    {
        parent::__construct();
        //etс.
    }
}

.
.
Добавлено спустя   4 минуты  24 секунды:
Да, вроде как работает.
А вот с путями чет не разобрался.
.
.

Gemorroj » 2012.03.03 11:48

аааа, епт. я невнимательно смотрел. ты пытался вызвать родительский конструктор!)
да, так будет корректно.

tipsun » 2012.03.03 11:51

Я сам не знаю, чего я пытался, но работает :D
Добавлено спустя   9 минут  14 секунд:
Вообщем с путями:
1) Надо чтоб смарти шаблоны увидел.
2) Надо чтоб в шаблоне при указании положения CSS, тоже было все норм. Ну если форум не в корне сайта.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
class 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:05

Можно в самом шаблоне header.tpl указывать: {$smarty.const.PUN_ROOT}{$cssDir}style.css
- где PUN_ROOT задается изначально, в логике.

Gemorroj » 2012.03.03 12:24

не надо. это работа прослойки.

tipsun » 2012.03.03 12:26

#112. закомментированное работает, в принципе.
Но у форума есть web и wap версии.

tipsun » 2012.03.04 00:07

Сейчас вот подумал, что условия логики в переменную наверно лучше загонять и только те условия, которые контролируют вывод в шаблоне никуда не денутся.
Начал с header.tpl (еще есть footer.tpl и viewtopic.tpl)
Добавлено спустя   3 минуты  22 секунды:
Вот пример:
Загнал сразу в smarty, т.к. скорее всего больше нигде не используется результат выполнения.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
// include/pms/wap_header_new_messages.php
if (! $pun_user['is_guest'] &&
    $pun_user['g_pm'] == &&
    $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}
Gemorroj » 2012.03.04 00:36

ну, тут логика отображения идет, а она должна быть в шаблоне. хотя, тут не принципиально. как проще, так и лучше.

tipsun » 2012.03.04 01:16

Не могу справиться.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<?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:29

Оказывается $forum_id это в файле viewtopic.php есть $id
Добавлено спустя   5 минут  45 секунд:
.
.
Короче. Чет не получается аккуратно в шаблоне разместить. Вот логический костыль :)
wap/footer.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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

Код:

1
2
3
4
5
<?php
 
{if $pun_config.o_quickjump == 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:52

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>'));
                        }
                    }
                }
            }
        *}
Gemorroj » 2012.03.04 12:41

пойдет, по любому главное вынести слой отображения, а вылизывать потом будем.

tipsun » 2012.03.04 13:09

Сейчас viewforum.tpl буду собирать.
Добавлено спустя   1 минуту  7 секунд:
Вроде интимных мест нет, но заросли еще те.

tipsun » 2012.03.04 16:20

Мозайка, епт! :(

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?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 == && $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 == || $is_admmod}
<div class="go_to">
    <class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a>
</div>
{/if}
 
{include file='footer.tpl'}
Gemorroj » 2012.03.04 16:34

норм)

tipsun » 2012.03.04 16:41

Это не все, прилично еще осталось.

tipsun » 2012.03.06 17:08

Вроде тоже все.
Ну на 100% не уверен, может чего пропустил.
Вроде как с иконками лишнее там.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?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 == && $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 == 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 == || $is_admmod}
<div class="go_to">
    <class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a>
</div>
{/if}
 
{include file='footer.tpl'}
tipsun » 2012.03.08 01:09

wap/userlist.php - пока не работает!

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?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 == -1selected="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_groupselected="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:31

Line 198: include/cache.php
Получается ноги из wap/footer.php - который я сам делал :D
Добавлено спустя   3 минуты  55 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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'] == 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 10:55

Из-за одной точки не работал шаблон. :(
Сейчас вроде в шаблоне нет ошибок.
А вот смарти чет при assign не отображает шаблон.

tipsun » 2012.03.08 12:22

Исправил.
Наконец работает.
Сейчас занесу необходимые переменные в $smarty.

tipsun » 2012.03.08 12:34

Получите и распишитесь :)

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?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 == -1selected="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_groupselected="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.
Хоть он нигде не выводился, я прикрутил суда.

Код:

1
2
3
4
5
<?php
{* Должность *}
{get_title($cur_post)}<br/>
{* Когда было размещено сообщение *}
{$cur_post.posted|date_format:$date_format}<br/>
tipsun » 2012.03.08 12:50

Это был шаблон для файла: wap/userlist.php

Gemorroj » 2012.03.08 13:06

блин. на гитхаб что ли переезжать. охота уже в целом на код посмотреть.

tipsun » 2012.03.08 13:08

Загадками "говоришь" :)
Или я не выспался :D
Добавлено спустя   4 минуты :
быдлоКод, он и на шаблонах быдлоКод :)
Я еще от себя добавил :D
Ну в принципе легче будет разобраться потом, мне кажется.
Добавлено спустя   5 минут  55 секунд:
Я могу свою папку punbb.mod/www/ упаковать. Так сможешь посмотреть.

tipsun » 2012.03.08 13:30

Gemorroj написал:

на код посмотреть.

http://wapinet.ru/files/13311 :: 74269

Gemorroj » 2012.03.08 18:30

а что это за комментарий {* Дополнительные ссылки в футере?

tipsun » 2012.03.08 18:31

Сейчас посмотрю.
Добавлено спустя   3 минуты  51 секунду:
Вот откуда ноги растут.
Еще есть тот же кусок и в другой функции generate_wap_1_navlinks()
include/functions.php#336

Gemorroj » 2012.03.08 19:25

это я понимаю, я не понимаю что оно делает в шаблоне)

tipsun » 2012.03.08 20:15

Хороший вопрос :)
Добавлено спустя   2 минуты  33 секунды:
Самый страшный файл, видимо wap/profile.php - 101 kB (1.6k строк).

tipsun » 2012.03.09 12:53

В принципе ошибки можно наверно так отпустить:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
// ошибка
$smaty->assign('errors'$errors);
$smarty->display('template.tpl');
// exit();
 
//+ template.tpl
 
{include file='errors.tpl'}
 
{* Etc. *}
 
//- template.tpl
Gemorroj » 2012.03.09 13:53

какой конкретно ошибки?

tipsun » 2012.03.09 18:39

Не знаю почему, но я думал про exit(); ошибки.

Gemorroj » 2012.03.09 18:46

не понимаю, - exit - языковая конструкция, а не ошибка.

tipsun » 2012.03.10 12:34

"wap/index.php" потихоньку собираю.

tipsun » 2012.03.12 11:54

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

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?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">
<class="but" href="search.php?action=show_new">{$lang_common.$Show_new_posts}</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.19 17:03

wap/post.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?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'] == && $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_limit20)}
 
{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.26 22:41

wap/edit.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?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_upload20);
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>
LEXIN » 2012.03.27 06:53

tipsun написал:


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

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

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

На код приятно посмотреть. Круууть :))

Gemorroj » 2012.03.27 10:41

да, шаблонизация рулит. код намного чище

tipsun » 2012.03.27 11:35

LEXIN, :)
Еще есть, где активных показывает форум, там еще строка с ссылками. Это было поле с выбором, оно было выше.
- - - -
Еще я пропускал интимные места, может где забыл "htmlSpecialChars()"/"|escape"
Можно было все в массив занести, и получилось бы что мы 1 раз заносим все переменные, т.е.

Код:

1
2
3
4
<?php
 
$allVars = array($title$users$trololo);
$smarty->assign($allVars);
LEXIN » 2012.03.27 16:24

А как с кешированием дела обстоят? Будет функция кеширования шаблона и очистки кеша?

И очень хочется узнать, какие-нибудь еще "плюшки" в задумке имеются?
Вот оптимизация запросов к БД - отлично.:)

Gemorroj » 2012.03.27 19:30

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

tipsun » 2012.04.01 18:51

Взялся за moderate.php
Решил разбивать на moderate.show_delete_topic.tpl; moderate.delete_topic.tpl; итд

Gemorroj » 2012.04.01 18:56

сколько еще файлов не переведенных на шаблонизатор примерно?

tipsun » 2012.04.01 19:00

Ух много. Сейчас посмотрю.
Добавлено спустя   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.02 21:09

Как надоел этот срач. :(
Пока время есть заставляю себя "копать".
Добавлено спустя   5 минут  99 секунд:
Вроде как viewforum кусок такой был, он опять попался.
Может просто получится все скопировать...

Gemorroj » 2012.04.02 21:26

я тебя предупреждал))
поэтому я и не брался, т.к. трудоемко очень)

tipsun » 2012.04.02 21:36

Да, еще тестить надо. Уф.
Ну по клавишам тыкать, не мешки тоскать. Пофиг.
Тем более вроде как viewforum.tpl вроде как с куском из moderate совпадает, почти.
А viewforum.tpl я сделал четко.

tipsun » 2012.04.07 11:06

Почему-то не могу назначить пользователя модером, вроде все форумы отметил.
P.S. хочу наглядно редачить файл: moderate.php (Шаблоны есть)
В веб-версии нет ссылки "модерировать форум", как у Админа.

Gemorroj » 2012.04.07 11:24

свн обновлял?

tipsun » 2012.04.07 11:51

Нет.

tipsun » 2012.04.07 14:51

Обновился.
Добавлено спустя   6 минут  3 секунды:
Проблема с инклудом файла из кеша.

Код:

1
2
3
4
5
<?php
 
{if $pun_config.o_quickjump == 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 15:09

Вроде синкаксических ошибок в новом шаблоне moderate.tpl нет.

Gemorroj » 2012.04.07 16:10

шаблон покажи

tipsun » 2012.04.07 19:06

moderate.tpl

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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 == && $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 == 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 == || $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'}
Gemorroj » 2012.04.07 20:23

эээ, так через fetch не выйдет. думаю, нужно сам кэш генерить не в виде php файла, а статичной html-ки уже.

tipsun » 2012.04.07 20:31

Тогда сюда надо смотреть.
Добавлено спустя   6 минут  32 секунды:
А, у меня оказывается уже все сделано. Просто файл 1 раз сгенерился и остался.

Вот вроде:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?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);
    }
}
Gemorroj » 2012.04.07 21:20

ну так да, метод нужно менять

tipsun » 2012.04.10 17:56

[Ошибка: этот матюк невозможно отобразить буквами]

Ну никак не работала система cache_quickjump.
И так пробовал и сяк.
Я думаю ну что такое же.
Потом уже потеряв надежду поменял require_once на include и заработало. o(o_O)o
Еще поправил условие.
wap/footer.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();
 
//...................................v
if ('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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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 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.04.10 19:58

Получается, что require_once при отсутствии файла останавливает работу а include нет?

Gemorroj » 2012.04.10 19:58

так да

tipsun » 2012.04.10 20:04

Вывод списка форумов, в которые можно переместить тему, не работает.
Добавлено спустя   1 минуту  1 секунду:
Нашел.

Код:

1
2
3
4
5
6
7
<?php
 
    while ($forum $db->fetch_assoc($result)) {
        
        //$forums = $forum;
        $forums[] = $forum;
    }
tipsun » 2012.04.11 11:11

Не работают ссылки (админа/модера: переместить, удалить, закрыть, открыть) внизу, в футере, в moderate.php все норм.
Там разграничил exit(); после вывода шаблона.
Добавлено спустя   2 минуты  4 секунды:
Т.к. там сразу 2 шаблона выводилось.

Gemorroj » 2012.04.11 11:47

наверное, нужно бранч сделать для всей этой фичи...

tipsun » 2012.04.15 19:58

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'

Gemorroj » 2012.04.15 20:01

url вводи с https

tipsun » 2012.04.15 20:03

1) У меня скачивает с svn.
2) Удаляю то, что скачалось.
3) Закидываю целиком форум, как ты показал, выделил все, кроме [.svn].
4) Жму на папку smarty [commit]
5) Ошибка выходит, которую я запостил.
Добавлено спустя   1 минуту  56 секунд:
Сейчас попробую с https
Добавлено спустя   4 минуты  8 секунд:
Во. Логин и Пароль запросила.
Добавлено спустя   6 минут  9 секунд:
Все, сгенерил пароль.
Добавлено спустя   7 минут  30 секунд:
Commit...

tipsun » 2012.04.15 20:21

Весит много, надо было смарти-двиг не грузить.
Ну да ладно. Главное грузит.

Gemorroj » 2012.04.15 20:23

что значит не надо было? а как без него форум работать-то будет?

tipsun » 2012.04.15 20:32

Залил, все.

Gemorroj » 2012.04.15 20:58

ок, я кое-чего там тоже уже накомитил тебе. обновляйся теперь переодически.
есть еще такие правила:
1) комментарии к коммитам обязательны. хотябы минимально описывай что менялось в сделанном коммите.
2) различные кэши и кастомные настройки не должны попадать в репозитарий.

tipsun » 2012.04.15 21:12

Ок.

tipsun » 2012.04.15 21:24

Да, увидел.
Показывает как было и как стало :)

tipsun » 2012.04.15 21:37

Елки, у меня __DIR__ нет.
И разве нужно для __DIR__ dirName() обработка?

Gemorroj » 2012.04.15 22:10

а где там __DIR__ ?
для __DIR__ не надо, надо для __FILE__, я затупил где-то?
Добавлено спустя   1 минуту  2 секунды:
да, увидел, это я уже на ночь глядя уже торможу.

tipsun » 2012.04.16 14:52

Опять этот cache quickjump не работает. >_<
Cache-файл не сохраняется.

tipsun » 2012.04.16 15:52

Переменная $basename не была задана. >_<

tipsun » 2012.04.16 16:16

Commit.

Gemorroj » 2012.04.16 18:19

ты это в каментах пиши в свн-е)

tipsun » 2012.04.16 20:00

Есть коммент мой там, проверял. :)
Там в changes есть коммент. Если есть еще куда коммент, то как?

tipsun » 2012.04.16 20:17

Все равно костыльно и наверно можно изящно сделать все при помощи смарти и кеши(а).
Ну по крайней мере мне так кажется.

Gemorroj » 2012.04.16 20:19

посмотрел коммиты. да все ок, так и пиши.
и еще, нет функции baseName, есть basename.

tipsun » 2012.04.16 20:20

Хотя там такие же условия будут, просто в шаблоне. :D
Получается не лучше.
- - - -
basename - ok. Буду знать.

tipsun » 2012.04.17 16:58

Commit.

tipsun » 2012.04.28 12:30

Немного наCommitал.
Виден конец кода в файле... profile.php

tipsun » 2012.05.03 15:52

наCommitал.
Недоделан выбор языка. (Забыл че там было).
- - - -
Елки и коммент забыл.

tipsun » 2012.05.08 11:08

Заблудился, где какой шаблон. Вот туман.

tipsun » 2012.05.08 11:43

С языками разобрался.
Commit.
- - - -
БЛЯ!!! Коммент забыл.
Уй, и изменить его целая война.

tipsun » 2012.06.05 12:35

Ы!, эта аватарка меня доведет.
Каждый раз с этой ерундой сталкиваюсь.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{*$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 секунды:
А вот готовое решение нашел.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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 14:40

Немного commit.

tipsun » 2012.06.06 12:32

Еще commit.
Остался раздел "Администрирование".
- - - -
Чет когда переходишь в профиле с вкладки "основной" на другие, то ссылка администрирование пропадает.
- - - -
А, просто не добавил нужные переменные в smarty.

Gemorroj » 2012.06.06 14:15

администрирование можно на потом оставить.
все по публичной части сделано уже?? круто. позже посмотрю.

tipsun » 2012.06.06 14:16

Я имел ввиду файл profile.php :)
Отчет

Показать/Скрыть
//////////////////////////////
0 - не переведен.
1 - переведен.
* - нет разметки.
//////////////////////////////
[*] => antispam_misc.php
[-] => code.php
[1] => delete.php
[1] => edit.php
[1] => filemap.php
[1] => header.php
[1] => help.php
[0] => hide.php
[1] => index.php
[1] => karma.php
[1] => login.php (14/06/12)
[0] => message_delete.php
[0] => message_list.php
[*] => message_popup.php
[0] => message_send.php
[0] => misc.php
[1] => moderate.php
[1] => post.php
[1] => profile.php
[*] => redirect.php
[1] => register.php (14/06/12)
[0] => search.php
[0] => uploads.php
[1] => userlist.php
[1] => viewforum.php
[0] => viewprintable.php
[0] => viewspam.php
[1] => viewtopic.php
//////////////////////////////
9 - не переведено.
15 - переведено.
//////////////////////////////

tipsun » 2012.06.14 15:35

Еще 2 файла: login.php + register.php

Gemorroj » 2012.06.14 18:01

ну, самое сложное переведено =) отлишна

tipsun » 2012.06.23 13:49

wap/help.php не смог с 3 отреком нормально разобраться, ну оригинальную идею не смог перенести на шаблон.
Добавлено спустя   1 минуту  11 секунд:
Там как бы на 1 изображение если есть еще коды-ключи, то показывать в одном диве.

tipsun » 2012.06.25 10:16

Файл wap/hide.php маразм.

tipsun » 2012.06.25 10:31

Так как этот маразм почти полностью совпадает с wap/viewtopic.php, то решил этим воспоьзоватсья. Шаблон взял от viewtopic.tpl

tipsun » 2012.06.25 19:52

Еще, как приду домой, wap/message_delete.php сделаю и отправлю...

tipsun » 2012.06.25 21:17

Commit. Бле! Комментарий забыл.
Добавлено спустя   5 минут  43 секунды:
Что за память. >_<
Добавлено спустя   7 минут  37 секунд:
Если ничего не упустил, остались:
message_list.php
message_send.php
misc.php
search.php
uploads.php
viewprintable.php
viewspam.php

tipsun » 2012.07.03 23:46

Вот message_list.php меня потерял! @_@

tipsun » 2012.07.04 00:04

Вот это (_Y_)
"настройки", "подтв. удаления" отсеки только сделал.
"Входящие", "Исходящие" надо разгребать.

tipsun » 2012.07.04 18:06

Почти готово.
Ошибки надо поправить.
Можно как-то чтоб смарти отображал, где я облажал?

tipsun » 2012.07.04 18:46

Код:

1
2
3
<?php
 
$smarty->debugging true;
tipsun » 2012.07.04 19:14

Сделано.
Хоть и коряво <_<
Добавлено спустя   2 минуты  50 секунд:
Commit.

tipsun » 2012.07.04 19:24

Говоря грубо 4 файла/мягко 6 файлов осталось.
Добавлено спустя   1 минуту  1 секунду:
Сегодня еще 1 попробую сделать: message_send.php

tipsun » 2012.07.06 14:19

+ message_send.php

tipsun » 2012.07.13 17:09

+ upload.php
Сейчас интернет будет (через брата телефон), выложу.

tipsun » 2012.07.13 21:33

search.php заставляет напрягать мой мозг. :( уф.

Gemorroj » 2012.07.13 21:41

у меня отпуск скоро) как раз к этому времени, закончишь думаю. и я подтянусь

tipsun » 2012.07.13 22:10

Умно :D :)

tipsun » 2012.07.20 14:51

Commit.
Добавлено спустя    51 секунду:
Вроде только wap/viewspam.php остался.

tipsun » 2012.07.20 15:13

Все вроде ^_^

Gemorroj » 2012.07.20 15:58

супер) постараюсь занятся

tipsun » 2012.07.20 23:22

Ну как там, просто хоть посмотрел, кошмар?

Gemorroj » 2012.07.21 00:02

еще не смотрел)

Gemorroj » 2012.07.21 18:36

обнови свн. там, вобщем, есть еще что подшлифовать в целом. будем пока этим заниматься.
когда подшлифуем из бранча переедем в транк.

tipsun » 2012.07.22 00:07

Обновил.
Мне что пилить?

Gemorroj » 2012.07.22 00:16

да так. проверяй все ли работает. не работали, например, все сообщения об ошибках. может еще что-то я пропустил.

tipsun » 2012.07.22 00:20

Ок

tipsun » 2012.07.23 22:35

Я тут подумал, может сделать адрес для стиля.css проще:
"../style.css"
Смарти компилирует в известную папку (compile, cache, template, config). Стиль находится выше на 1 директорию.

Gemorroj » 2012.07.23 23:47

так то да, но сейчас там по дефолту вроде некорректно стиль ставится

tipsun » 2012.07.23 23:47

А, там уже по-другому.
Добавлено спустя    35 секунд:
Да, я вот запостил и увидел.

tipsun » 2012.07.27 16:07

Сейчас commit случится.
Добавлено спустя   1 минуту  12 секунд:
Опять коммент забыл. =(

tipsun » 2012.07.27 16:22

Еще 1 в догонку.
Кое-что еще от себя добавил. =)
- - - -
В профиле, при предпросмотре, панель навигации вверху пропадать не будет.

tipsun » 2012.07.27 17:43

Поправка навигации (вверху страницы) в некоторых файлах.

tipsun » 2012.07.28 02:47

Как-то странно получатся. Файлы стилей в одном месте, разметка в другом.
Добавлено спустя   8 минут  54 секунды:
Может надо было в style_wap держать шаблоны, тогда ничего переделывать не придется, чтоб показывать варианты стилей.

tipsun » 2012.07.28 03:06

style_wap/styleName.css
style_wap/styleName/tpls/

tipsun » 2012.07.28 13:59

Тем более там поиск идет так:

Код:

1
2
3
4
5
6
7
8
9
10
11
<?php
        $styles = array();
        $d dir(PUN_ROOT 'style_wap');
        while (($entry $d->read()) !== false) {
            
            if (substr($entrystrlen($entry) - 4) == '.css') {
                
                $styles[] = substr($entry0strlen($entry) - 4);
            }
        }
        $d->close();
tipsun » 2012.07.31 19:23

Надо было значение формата даты не в переменную, а в константу занунуть. :( Ладно исправлюсь.

tipsun » 2012.08.02 19:21

Или переделать везде поиск стиля.css на нынешнее расположение дизайна в виде папок?

Gemorroj » 2012.08.02 19:43

не знаю. расскажи подробнее. я не помню архитектуру.

tipsun » 2012.08.02 21:38

: раньше
/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/
- - - -
вроде везде повторяется, код который я написал выше.
он показывает возможные варианты выбора.

Gemorroj » 2012.08.02 21:40

tipsun, нет. в template не должно быть файлов доступных для браузеря напрямую.

tipsun » 2012.08.02 21:47

Не обязательно конечно поддержка одной разметкой несколько стилей, но было бы экономней :)
чтоб одну и ту же разметку не копировать для разных стилей.
Добавлено спустя   2 минуты  38 секунд:
Вообщем все как есть оставить, и везде переделать показ вариантов стилей?

Gemorroj » 2012.08.03 10:22

tipsun, об экономии лишнего мегабайта на жестком диске думай в последнюю очередь. разметка будет разной.

tipsun » 2012.08.06 18:36

tipsun написал:

В moderate не могли ссылки действовать из viewtopic.php (уд./пер./закр./сн.)

Fixed
Gemorroj, когда находишься непосредственно в теме форума и видишь ссылки:
Удалить сообщения|Перенести тему|Закрыть тему|Выделить тему
Переходишь по: Удалить сообщения
И тщательно проверяешь :)
Его поправил (он вообще не работал, из-за кривизны моих рук половина кода отсутствовала :D), но мало ли.

tipsun » 2012.08.06 18:55

o(o_O)o WTF?!
В файле wap/post.php тоже целый кусок кода отсутствовал.
Чем я смотрел?!
- - - -
Так, это вроде тоже начало работать...

tipsun » 2012.08.06 19:24

Gemorroj, в wap/edit.php не вижу проблем, вроде редактируемое сообщение показывает. Что не так?
Добавлено спустя   2 минуты  20 секунд:
Предпросмотр? - Поправил.
Добавлено спустя   2 минуты  54 секунды:
Пойду отдыхать :)

Gemorroj » 2012.08.06 21:07

tipsun, да, отсутствовали куски кода. в edit тоже да, вроде бы.
я в отпуск, буду с gprs или как там его, так что хз как смогу програмить.

tipsun » 2012.08.06 21:32

Ну я поправил, посмотрел. Все что видно, работает.

tipsun » 2012.08.07 11:00

tipsun написал:

Тут есть отметка новые посты.
Вот интересно стало, может плагин сделать, чтоб для каждого поста показывало кто прочитал. :) ну отдельно ссылка будет и при переходе на нее (пост +) список прочитавших.
Что плохо, есть кнопка "отметить все как прочитанное", это всю фишку портит.

Вот я сначала не подумал:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;

Потом подумал:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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` временная метка нового сообщения.
Надо пойти найти, пошел искать.

tipsun » 2012.08.07 11:11

Может вообще не делать эту ерунду?

Gemorroj » 2012.08.07 11:14

tipsun, попозже можно. сейчас главное основной функционал допилить.

tipsun » 2012.08.07 11:19

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

Gemorroj » 2012.08.07 11:19

с аватарками проблемы. нельзя прикреплять файлы в ответе и редактировании.

tipsun » 2012.08.07 11:20

Gemorroj написал:

с аватарками проблемы. нельзя прикреплять файлы в ответе и редактировании.

Попробую исправить.

Gemorroj » 2012.08.07 11:26

собсно, удаление постов не работает. "Неверный запрос. Ссылка, по которой вы пришли неверная или устаревшая." при клике на "Удалить сообщения".

tipsun » 2012.08.07 11:42

Сегодня исправил, обновлялся?

Код:

1
2
3
4
// from
else exit();
// to
else (! $fid) exit();
Gemorroj » 2012.08.07 11:43

tipsun, да. там не правильно fid передается. сейчас это исправлю.

Gemorroj » 2012.08.07 11:59

нет пагинации в модерировании форума.

tipsun » 2012.08.07 13:30

Gemorroj написал:

нельзя прикреплять файлы в ответе и редактировании.

Можно =)
Добавлено спустя   3 минуты  14 секунд:
Пока я 1 коммитнул ты уже 6 раз. Скорострел :D

Gemorroj » 2012.08.07 13:41

edit теперь не работает. проверяй перед комитами.
Добавлено спустя   3 минуты  25 секунд:
я сейчас уезжаю, буду вечером только.  посмотри как выглядят edit и post. они отличаются. вероятно, что-то не так.

tipsun » 2012.08.07 13:46

Gemorroj написал:

нет пагинации в модерировании форума.

Есть.
Добавлено спустя    57 секунд:

Gemorroj написал:

edit теперь не работает. проверяй перед комитами.
Добавлено спустя   3 минуты  25 секунд:
я сейчас уезжаю, буду вечером только.  посмотри как выглядят edit и post. они отличаются. вероятно, что-то не так.

Ок

tipsun » 2012.08.07 14:03

Gemorroj написал:

edit теперь не работает.

Вроде сейчас работает. 1 условие добавил.

tipsun » 2012.08.08 11:37

Есть еще где ошибки?

Gemorroj » 2012.08.08 13:06

да. думаю еще много. как минимум сейчас зашел сразу вижу - нет заголовка в "Удалить сообщения". В модерировании топиков, топики всегда помечены как новые.
По самим шаблонам - в них многовато логики, которой в шаблонах быть не должно. Нужно будет вынести все parse_message, если еще остались где-то из шаблонов в php код. Да и все остальные php функции нужно будет убрать из шаблонов. Либо сделать отдельный класс с вспомогательными php методами только для шаблонов.

tipsun » 2012.08.08 13:16

Под логикой ты подразумеваешь if?
Типа шаблон решает что отображать?

Gemorroj » 2012.08.08 13:24

tipsun, нет. я имею ввиду parse_message, get_title и прочие функции форума, которые используются в шаблонах.

tipsun » 2012.08.08 13:28

Ок. Буду исправлять.

Gemorroj » 2012.08.08 13:43

message_popup еще сделать надо.

Gemorroj » 2012.08.08 20:22

посмотри сколько кидается нотисов. не передано много переменных в шаблоны. походи по страницам, поисправляй. если переменная передается часто в шаблон, то есть смысл передавать ее в хедере всегда. о производительности не думай вообще.

tipsun » 2012.08.09 19:08

Commit "Fix navigation".
Знаю, сам не доволен, халтура. :(
Потом поподробней посмотрю.

tipsun » 2012.08.09 19:37

Сделаю проверку в подключаемом шаблоне (profile.navi.tpl) - показывать ссылки или нет и как.
- - - -
Или оставить как есть?

Код:

1
2
3
4
5
<?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 секунды:
Просто в одном месте у меня получилось так:

Код:

1
2
3
4
5
6
7
8
9
10
11
<?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}
tipsun » 2012.08.09 19:57

Gemorroj написал:

посмотри сколько кидается нотисов.

Как и где?
- - - -
Я включил в wap/header.php отладку
Нет нигде ошибок или я не туда смотрю.

Код:

1
2
3
4
<?php
 
$smarty->error_reporting true;
$smarty->debugging true;
tipsun » 2012.08.09 20:32

Вот /wap/misc.php не работает. Fixed.

Gemorroj » 2012.08.09 22:04

в шаблоне не сокращай navi.
smarty дебаг не трогай. в .htaccess error_reporting -1 и error_log куда тебе нравится.

tipsun » 2012.08.09 22:10

Gemorroj написал:

в шаблоне не сокращай navi.

в смысле? Полностью писать *.navigation.tpl?

tipsun » 2012.08.09 22:45

Gemorroj написал:

в .htaccess error_reporting -1 и error_log куда тебе нравится.

Круто =)
Добавлено спустя   6 минут  51 секунду:
Ну в footer.tpl понятное дело. Он везде, но не везде нужные данные.

Gemorroj » 2012.08.10 00:40

tipsun, да, navigation

tipsun » 2012.08.10 15:30

Не нашел

Показать/Скрыть
[10-Aug-2012 15:18:58] PHP Notice:  Undefined index:  35 in W:\home\punbb.mod\smarty\include\template\wap\wap\compiled\984eee899978ed82b83636be7cb859bc46b211e5.file.viewtopic.tpl.php on line 236

tipsun » 2012.08.10 18:55

Commit. Совсем чуть поправок.
Еще остались непроверенные файлы.

Gemorroj » 2012.08.10 21:26

не пиши нанофикс и т.п. пиши развернутые комментарии) а так ок все. выберусь из гомеля займусь тоже

tipsun » 2012.08.10 21:29

Ок.

tipsun » 2012.08.11 00:20

Commit + Comment.
Этой работой я доболен, практически на 90%.
Индексный шаблон большой.
Все переменные не посмотрел.
Вдруг лишние есть, надо досмотреть...

tipsun » 2012.08.11 10:13

Надо чтоб шаблоны без лишних "\s" and "\n" компилировались.

tipsun » 2012.08.11 10:48

Оповещение о новых личных сообщениях должно по всему сайту быть или толко на главной?

tipsun » 2012.08.11 11:22

Помоему я ошибся с последним commit.
Что-то должно быть в header, что-то в index.

tipsun » 2012.08.11 16:17

Еще есть исправления, там conditions не работает. Я его поправил, но не залил.

Gemorroj » 2012.08.11 16:47

147, 148 коммиты хорошие)

tipsun » 2012.08.11 19:54

Gemorroj, не убегай от вопросов :)
Как там располагаются оповещения?
Оповещение о:
- новом сообщении: везде, но на главной надо пропустить вперед логотип и еще что-то, я не могу в исходнике ничего понять, запутанно.

tipsun » 2012.08.11 21:00

Вообщем commit.
В отдельном шалоне все оповещения, если я лишние внес, легче найти и исправить будет

tipsun » 2012.08.16 19:48

Функция показа аватарки не совсем подходит под раздел профиль. Либо там приспосабливать, что я сделал, либо функцию сделать более гибкой.
Добавлено спустя   1 минуту  8 секунд:
Сейчас посмотрю, если есть что commit - сделаю.

tipsun » 2012.08.18 19:13

А так нельзя сделать?:

Код:

1
2
3
4
5
<?php
 
//{censor_words($cur_topic.subject)|escape}
 
{$cur_topic.subject|censor_words|escape}

Или делать как до этого ты показал, ну в логике.

Gemorroj » 2012.08.18 20:06

в логике надо делать

tipsun » 2012.08.21 21:42

НаCommitал чуть.
Остальное не хочу, не закончил полностью файл.
Потом забуду, где ковырял.

tipsun » 2012.08.21 23:12

Шаблон viewforum.tpl не отметил на commit. :(

Gemorroj » 2012.08.22 11:37

// Гость записанный в таблице пользователей (`users`) имеет id = 1. Зачем тогда его учитывать?
if (1 > $id) {

wap/karma.php
аналогичную проверку нужно сделать и в web версии. они должны иметь одинаковую логику же.
и еще, в форуме вроде бы есть константа идентифицирующая группы пользователей, нужно использовать ее. а не цифру 1.

tipsun » 2012.08.22 11:44

Gemorroj, ок. Исправлю.

tipsun » 2012.08.22 16:32

Так?
Добавлено спустя   3 минуты  40 секунд:
Я еще кое-что от себя добавил. Можно и убрать.
Если ссылки на пост нет, редирект не выполняется, следует показ истории кармы.

Gemorroj » 2012.08.22 17:05

wap/karma.php

$id =& $to;

зачем ссылка?

tipsun » 2012.08.22 17:07

Не знаю. Эээксперименты. :)
Добавлено спустя   3 минуты  38 секунд:
Неправильно?

Gemorroj » 2012.08.22 17:55

не нужна она там. вообще, ссылки не используй без явной необходимости.

tipsun » 2012.08.22 18:14

Ок.

tipsun » 2012.08.22 18:48

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

tipsun » 2012.08.23 20:43

Надо либо часто коммиты делать, либо записывать все, либо память тренировать. Все забываю.

tipsun » 2012.08.23 21:38

Все залил.
Добавлено спустя   1 минуту  10 секунд:
Догадался таки слить оригинал с репозитария, чтоб по нему ориентироваться, смотреть может где не так условие поставил.

tipsun » 2012.08.23 22:52

Удалил бред с karma.
Просто скопировал лишнее.
И все равно во всем wap-форуме нет конкретных действий к $db->fetch() при возвращении значения false.
Только к $db->query(); [error()]

Dark Gemorroj » 2013.01.27 20:07

Что за волшебный код в include/quickjump.php?
Что за return без функции? Что за include в переменную?

Gemorroj » 2013.01.27 20:26

Dark Gemorroj написал:

Что за волшебный код в include/quickjump.php?
Что за return без функции? Что за include в переменную?

include. Вот так оно работает. Очень удобно, иногда.

tipsun » 2013.01.27 20:28

У меня не работает.

Показать/Скрыть
Ошибка синтаксического анализа XML: лишние данные после элемента документа
Адрес: http://smarty.punbb.mod/wap/viewtopic.php?pid=10#p10
Строка 1, символ 663:<form id="qjump" method="get" action="viewforum.php"><div class="inbox"><label>Перейти<br /><select name="id" onchange="window.location.assign('http://smarty.punbb.mod/wap/viewforum.php?id='+this.options[this.selectedIndex].value);"><optgroup label="Cat1"><option value="1" selected="selected">Cat1Forum1</option><option value="2">Cat1Forum2</option></optgroup><optgroup label="Cat2"><option value="3">Cat2Forum1</option><option value="4">Cat2Forum2</option></optgroup><optgroup label="Cat3"><option value="5">Cat3Forum1</option><option value="6">Cat3Forum2</option></optgroup></select><input type="submit" value=" Перейти " accesskey="g" /></label></div></form><?xml version="1.0" encoding="UTF-8"?>

Добавлено спустя    47 секунд:
И, кстати, спасибо за инфу. :)

Gemorroj » 2013.01.27 20:32

зайди в админку и перегенери кэш.

tipsun » 2013.01.27 20:34

Волшебник, такой волшебник. :D

tipsun » 2013.01.27 20:41

Она все-таки попалась:

Показать/Скрыть
Notice:  imagecolorat() [<a href='function.imagecolorat'>function.imagecolorat</a>]: 26,45 is out of bounds in S:\home\punbb.mod\smarty\include\captcha\kcaptcha.php on line 108

Добавлено спустя   1 минуту  56 секунд:
Эдак раз 818 :D

tipsun » 2013.01.27 20:44

Показать/Скрыть
[01-Dec-2012 11:33:02 UTC] PHP Notice:  imagecolorat() [<a href='function.imagecolorat'>function.imagecolorat</a>]: 68,-1 is out of bounds in S:\home\punbb.mod\smarty\include\captcha\kcaptcha.php on line 108

Gemorroj » 2013.01.27 21:14

tipsun, это не трогай. ошибки в сторонних либах не трогай.

tipsun » 2013.01.27 23:59

Больше 3х категорий в форуме не отображается. Ни в web, ни в wap.