Gemorroj » 2011.06.24 18:33

https://code.google.com/p/wapinet-forum … vn%2Ftrunk
В процессе разработки расширение для браузеров (на данный момент только Google Chrome) позволяющее с большим удобством пользоваться форумом wapinet.ru

TLENS » 2011.06.24 19:56

Паша надо бы залить его в https://chrome.google.com/webstore
У меня все готово вот только не могу выложить в публику так как просит 5$
Про мучился не могу про платить его. Не получается.

Gemorroj » 2011.06.25 18:27

пока не надо никуда заливать.

TLENS » 2011.06.26 05:14

Ой паша чет ты там такого на куралесил.
Зачем было убирать автозакрытие и кнопк? Удобно ведь было.
Также выравнивал его чтобы красота была а это что?
А вообще сделал ты его намного быстрее.
Даже если и убрал кнопку надо было же выровнять иконку reload на 20px в право.
Утром займусь оформлением сегодня спать уже буду идти.
Добавлено спустя   1 минуту  23 секунды:
Да кстати изменений много позитивных. И уведомление радует, Аккуратное.

Gemorroj » 2011.06.26 08:45

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

TLENS » 2011.06.26 08:45

Мне чет не спится. Слушай пока ты здесь обьясни аочему убрал margin с тела. Какие то трудности были?
Что бы я знал
Добавлено спустя   4 минуты  48 секунд:
Слушай а правда процессор практически не видит это расширение оптимизировал супер ))
Кстати ты меня учил что в селекторах желательно прописывать имя тегов. А у тебя вижу айдишки без тегов.
Я так понимаю по ид оно отбирается в доме прямо без поиска чем как например по option[value=""] или .class

TLENS » 2011.06.26 09:15

Внес пару изменений смотри

Gemorroj » 2011.06.26 09:17

ну есть 3 метода для поиска по дому: getElementById, getElementsByTagName, getElementsByClassName.
Из них однозначно самый быстрый - это getElementById. При чем намного.
getElementsByTagName и getElementsByClassName примерно одинаковы по скорости, НО в IE до 8 включительно нету этого метода и jQuery реализует его самостоятельно, что, само собой, намного медленнее по сравнению с нативным методом.
Отсюда вывод - для кроссбраузерных скриптов лучше искать через getElementsByTagName, а не getElementsByClassName.
Есть еще момент с querySelector - оно работает очень быстро, намного быстрее чем jQuery. Но пока что только новые версии браузеров это понимают.
Добавлено спустя   8 минут  23 секунды:
я бы еще на это обратил внимание.

TLENS » 2011.06.26 09:27

Предложения:
1) Кстати хром же понимает. Можно и воспользоватся.
2) Пошарюсь как делать толковый порт. А то мой самодельный ну никуда не годится.
3) Да и мигалку наверное убрать надо. И вместо этого добавить код который будет подсчитывать количество новых. И выводить на иконку.
На первое можешь не отвечать ;)
Добавлено спустя   3 минуты  16 секунд:
Первое обращение смотрел но не довел до конца.
Посмотрю еще раз.
Второе сейчас сделаю

TLENS » 2011.06.26 09:58

Сделал фрейм. А в настройках что именно просто там несколько стрелок надо рисовать

Gemorroj » 2011.06.26 10:10

пустое место, в которое нужно уместить выбор временной зоны.

TLENS » 2011.06.26 10:40

Не вариант все равно будет не красиво.
Сейчас что то придумаю

TLENS » 2011.06.26 11:12

Как тебе такой вариант?
Мне нравится
Добавлено спустя   1 минуту :
Чуть кривовато но это исправимо

Gemorroj » 2011.06.26 11:23

отлично, отступ сверху пару пикселей только надо бы)

TLENS » 2011.06.26 19:17

Слушай еще вариант раз уже делать то делать.
Предложения:
Сервисы которые постоянно нужны под рукой.
Например:
Валидатор, тыц и прочее.
Ну можно подумать.
А вообще надо сначала это до конца довести, ну потом думать об обновлении.

Gemorroj » 2011.06.26 19:26

валидатор в опере в менюшке всегда под рукой))

TLENS » 2011.06.26 19:38

А кстати помнишь еще дектора гугловского пробовал совместить с расширением.
Крутяк был. Но только ники чудно читала. А кстати мой правильно говорит не через Э как все знакомые а через Е
Добавлено спустя   1 минуту  1 секунду:
После переустановки винды нет того кода но в голове остался вариант.

TLENS » 2011.06.27 12:04

Идея сделать показ статусов кто онлайн кто офлайн.
То есть показ уведомлением на 3 сек. кто зашел на форум а кто перешел в оф.
Надо апи в informer добавь переменную с массивом кто онлайн.

Gemorroj » 2011.06.27 12:43

а на счет личных сообщений что скажешь?

TLENS » 2011.06.27 16:40

Ну мы с тобой говорили.
Если кука сработает тогда можно сделать.
А авторизацию делать не охота.
Сейчас кстати проверю возможность этой затеи.
Да и пользователей надо будет предупредить что бы не качали со сторонних источников, стоит в манифесте указать доступ к еще одному сайту и можно и сам думаю понимаешь получается троян.

TLENS » 2011.06.27 17:33

Корочь все работает куку отдает.
Делай вместе с постом.
private_status = 0/1;
Да и хватит

TLENS » 2011.06.27 19:31

Бета версия что на данный момент.

TLENS » 2011.07.12 18:30

Надо исправить dblclick не удобно так как сразу попа начинает сворачивается и иногда второй раз не успеваю сделать клик.
Какие идеи?
Использовать ролик?

TLENS » 2011.07.16 04:18

Паша ну как там ты делаешь апи привата?

Gemorroj » 2011.07.18 15:09

да, сейчас займусь... сорь за мудозвонство, совсем что-то плохой стал)

Gemorroj » 2011.07.18 15:29

Есть проблемка с приватными сообщениями. у нас сверяется последнее сообщение по его ID. Но у приватных сообщений и постов на форуме свои идентификаторы, которые в теории могут пересекаться.
Нужно для приватных сообщений делать отдельно запросы на сервер, либо в ответе на наши стандартные запросы посылать отдельно информацию по приватным и отдельно по постам на форуме.
Предлагаю остановиться на 2 варианте.
Добавлено спустя   2 минуты  1 секунду:
Вобщем, нужно изменить API. От расширение должно передаваться 2 идентификатора - ID приватного сообщения и ID поста на форуме.
Ответ будет содержать 2 массива с данными по последнему приватному сообщению и данными по последнему посту на форуме.
Добавлено спустя   2 минуты  50 секунд:
Пока подожду что ты скажешь.)

TLENS » 2011.07.19 06:57

Слушай я понял но не могу сосредоточится чтобы обмозговать как все будет реализовано в расширении, и как я хотел тогда.
Я вчера ножки обмывал сейчас не соберу себя до кучи.
Кстати пока не забыл надо нотификатион открывать вместе с search в адресе и уже внутри регулировать location.search и взать какой id светить. А то когда например видео смотришь через флеш, то окна блокируются, и как только закрыл видео появляется куча уведомлений с последним сообщением.

Gemorroj » 2011.07.20 10:28

TLENS, так какой вариант делаем?

TLENS » 2011.07.20 12:27

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

Gemorroj » 2011.07.22 16:35

Код:

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
<?php
} else if (isset($_GET['informer'])) {
    include PUN_ROOT 'include/informer/Informer.inc.php';
    header('Content-Type: application/json; charset=UTF-8');
 
    try {
        $obj = new Informer($db$pun_user$lang_common$pun_config);
 
        if (isset($_GET['getMessage']) && isset($_GET['getPrivatMessage'])) {
            echo json_encode(array('status' => true'forum' => $obj->getMessage($_GET['getMessage']), 'privat' => $obj->getPrivateMessage($_GET['getPrivatMessage'])));
        } else if (isset($_GET['getPrivatMessage'])) {
            echo json_encode(array('status' => true'privat' => $obj->getPrivateMessage($_GET['getPrivatMessage'])));
        } else if (isset($_GET['getMessage'])) {
            echo json_encode(array('status' => true'forum' => $obj->getMessage($_GET['getMessage'])));
        } else if (isset($_GET['getPrivatMessages'])) {
            echo json_encode(array('status' => true'privat' => $obj->getPrivateMessages($_GET['getPrivatMessages'])));
        } else if (isset($_GET['getConfig'])) {
            echo json_encode(array('status' => true'config' => $obj->getConfig()));
        } else {
            echo json_encode(array('status' => true'forum' => $obj->getForums()));
        }
    } catch (Exception $e) {
        echo json_encode(array('status' => false'forum' => $e->getMessage()));
    }
}

Код:

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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<?php
 
class Informer
{
    private $_db;
    private $_pun_user;
    private $_lang;
    private $_pun_config;
 
 
    /**
     * Constructor
     * 
     * @param resource $db
     * @param array $pun_user
     * @param array $lang
     * @param array $pun_config
     */
    public function __construct ($db$pun_user$lang$pun_config)
    {
        $this->_db $db;
        $this->_pun_user $pun_user;
        $this->_lang $lang;
        $this->_pun_config $pun_config;
    }
 
 
    /**
     * getConfig
     * 
     * @return array
     * @throws Exception
     */
    public function getConfig ()
    {
        return array(
            'timezone' => $this->_pun_user['timezone'],
            'username' => $this->_pun_user['username'],
            'is_guest' => $this->_pun_user['is_guest']
        );
    }
 
 
    /**
     * getForums
     * 
     * @return array
     * @throws Exception
     */
    public function getForums ()
    {
        if (!$this->_pun_user['g_read_board']) {
            throw new Exception ($this->_lang['No view']);
        }
 
        $r $this->_db->query('
            SELECT f.id AS fid, f.last_post, f.last_post_id, f.last_poster, t.subject
 
            FROM ' $this->_db->prefix 'categories AS c
            INNER JOIN ' $this->_db->prefix 'forums AS f ON c.id=f.cat_id
            LEFT JOIN ' $this->_db->prefix 'topics AS t ON f.last_post_id=t.last_post_id
            LEFT JOIN ' $this->_db->prefix 'forum_perms AS fp ON (
                fp.forum_id=f.id
                AND fp.group_id=' $this->_pun_user['g_id'] . '
                AND (fp.read_forum IS NULL OR fp.read_forum=1)
            )
 
            WHERE fp.read_forum IS NULL OR fp.read_forum=1
 
            ORDER BY NULL
        'false);
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data = array();
        while ($forum $this->_db->fetch_assoc($r)) {
            $data[$forum['fid']] = array(
                'last_post_id' => $forum['last_post_id'],
                'subject' => $forum['subject'],
                'last_post_time' => $forum['last_post'],
                'last_poster' => $forum['last_poster']
            );
        }
        return $data;
    }
 
 
    /**
     * getMessage
     * 
     * @param int $id
     * @return array
     * @throws Exception
     */
    public function getMessage ($id)
    {
        if (!$this->_pun_user['g_read_board']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$id || $id || !is_numeric($id)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT p.poster, p.message, p.hide_smilies, p.posted
            FROM ' $this->_db->prefix 'posts AS p
            INNER JOIN ' $this->_db->prefix 'topics AS t ON t.id = p.topic_id
            LEFT JOIN ' $this->_db->prefix 'forum_perms AS fp ON (
                fp.forum_id = t.forum_id
                AND fp.group_id = ' $this->_pun_user['g_id'] . '
                AND (fp.read_forum IS NULL OR fp.read_forum = 1)
            )
            WHERE p.id = ' $id
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data $this->_db->fetch_assoc($r);
 
        return array (
            'message' => $this->_parseMessage($data['message'], $data['hide_smilies']),
            'poster' => $data['poster'],
            'posted' => $data['posted']
        );
    }
 
 
    /**
     * getPrivateMessage
     * 
     * @param int $id
     * @return array
     * @throws Exception
     */
    public function getPrivateMessage ($id)
    {
        if ($this->_pun_user['is_guest'] || !$this->_pun_user['g_pm'] || !$this->_pun_user['messages_enable'] || !$this->_pun_config['o_pms_enabled']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$id || $id || !is_numeric($id)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT m.subject, m.message, m.smileys, m.posted, m.sender
            FROM ' $this->_db->prefix 'messages AS m
            WHERE m.owner = ' $this->_pun_user['id'] . '
            AND m.id = ' $id
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data $this->_db->fetch_assoc($r);
 
        return array (
            'subject' => $data['subject'],
            'message' => $this->_parseMessage($data['message'], $data['smileys']),
            'poster' => $data['sender'],
            'posted' => $data['posted']
        );
    }
 
 
 
    /**
     * getPrivateMessages
     * 
     * @param int $limit
     * @return array
     * @throws Exception
     */
    public function getPrivateMessages ($limit)
    {
        if ($this->_pun_user['is_guest'] || !$this->_pun_user['g_pm'] || !$this->_pun_user['messages_enable'] || !$this->_pun_config['o_pms_enabled']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$limit || $limit || !is_numeric($limit)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT m.id, m.subject, m.message, m.smileys, m.posted, m.sender
            FROM ' $this->_db->prefix 'messages AS m
            WHERE m.owner = ' $this->_pun_user['id'] . '
            ORDER BY m.id DESC
            LIMIT ' $limit
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            return array();
        }
 
 
        $out = array();
        while ($data $this->_db->fetch_assoc($r)) {
            $out[$data['id']] = array (
                'subject' => $data['subject'],
                'message' => $this->_parseMessage($data['message'], $data['smileys']),
                'poster' => $data['sender'],
                'posted' => $data['posted']
            );
        }
        return $out;
    }
 
 
    /**
     * _parseMessage
     * 
     * @param string $message
     * @param bool $hide_smilies
     * @return string
     */
    private function _parseMessage ($message$hide_smilies false)
    {
        require_once __DIR__ '/../parser.php';
        return parse_message($message$hide_smilies);
    }
}
?>

из кода понятно что требуется?)

TLENS » 2011.07.23 13:21

Ок.

TLENS » 2011.07.24 20:36

Паша а как на счет того чтобы скрипты положить на сервере?
И обновление будет сразу же отображатся

Gemorroj » 2011.07.24 20:53

??? какие скрипты? на каком сервере?

TLENS » 2011.07.24 20:55

Внутренние js сделать внешними
Добавлено спустя   1 минуту  14 секунд:
Чтобы расширение при запуске хрома подгружало с сервера.

Gemorroj » 2011.07.24 21:05

нет. расширение должно развиваться отдельно. все что связывает форум и расширение - это API и все.

TLENS » 2011.07.24 21:11

Понятно. Раз уже будем работать через куку тогда можно убрать два поля с настроек, это "ваш ник" и "Часовой пояс" как на это смотришь?

Gemorroj » 2011.07.24 21:16

вперед. я вообще не совсем понимаю нафига эти настройки)

TLENS » 2011.07.24 21:22

Не ну настройка ника нужна была чтобы расширение не реагировало на свои посты.
Интервал обновления можно убрать и сделать стандарт например 1мин.
А вот что делать со звуком я ведь хотел еще сделать загрузку собственной мелодии на звук.
Да и настройку громкости глупо убирать.
Ты как думаешь?

Gemorroj » 2011.07.24 22:46

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

TLENS » 2011.08.09 11:17

Паша нужно еще апи, если решили очистить лишнее с настроек.

Код:

1
2
3
4
5
6
7
config = array(2) {
["status_auth"] = true,
["set"] = array(2) {
["nick_name"] = "TLENS",
["time_zone"] = "+2"
}
}

На счет time_zone можно и выбросить просто отдавать не в +2 а в тайме с настроек.
Добавлено спустя   2 минуты  24 секунды:
Но лучше тиме зоне передавать по конфигу

Gemorroj » 2011.08.09 11:20

а зачем в расширении ник?

TLENS » 2011.08.09 11:24

Я же говорю что бы расширение не реагировало на свои посты.
Как оно работает:
Оно проверяет новое сообщение если оно новое тогда проверяет автора этого сообщения если я например не автор тогда выдаю сообщение, а если же а сам автор тогда зачем уведомлять и он блокирует notification.html
Добавлено спустя   2 минуты  4 секунды:

Код:

1
2
3
if (arr.forum[i]['last_poster'] === setting.nick) { // Если автор юзер не мигаем иконкой возле форума
db[i]['icon'] = '';
}
Gemorroj » 2011.08.09 12:34

ясно.. т.е. у нас будет еще 1 запрос при запуске браузера. может тогда сразу не 2 параметра в конфиге отдавать, а еще чего-нибудь полезного?

Gemorroj » 2011.08.09 13:48

http://wapinet.ru/forum/ajax.server.php?informer&getConfig
названия, надеюсь, говорят сами за себя.
если is_guest = true, то проверять на ник не нужно.
Добавлено спустя   1 минуту  54 секунды:
у нас, в принципе, конфиг большой,

`id` int(10) unsigned NOT NULL auto_increment,
`group_id` int(10) unsigned NOT NULL default '4',
`username` varchar(200) NOT NULL default '',
`password` varchar(40) NOT NULL default '',
`email` varchar(50) NOT NULL default '',
`title` varchar(50) default NULL,
`realname` varchar(40) default NULL,
`url` varchar(100) default NULL,
`sex` enum('0','1') NOT NULL default '1',
`birthday` varchar(10) NOT NULL,
`jabber` varchar(75) default NULL,
`icq` varchar(12) default NULL,
`msn` varchar(50) default NULL,
`aim` varchar(30) default NULL,
`yahoo` varchar(30) default NULL,
`location` varchar(30) default NULL,
`use_avatar` tinyint(1) NOT NULL default '0',
`signature` text,
`disp_topics` tinyint(3) unsigned default NULL,
`disp_posts` tinyint(3) unsigned default NULL,
`email_setting` tinyint(1) NOT NULL default '1',
`save_pass` tinyint(1) NOT NULL default '1',
`notify_with_post` tinyint(1) NOT NULL default '0',
`show_smilies` tinyint(1) NOT NULL default '1',
`show_img` tinyint(1) NOT NULL default '1',
`show_img_sig` tinyint(1) NOT NULL default '1',
`show_avatars` tinyint(1) NOT NULL default '1',
`show_sig` tinyint(1) NOT NULL default '1',
`timezone` float NOT NULL default '0',
`language` varchar(25) NOT NULL default 'Russian',
`style` varchar(25) NOT NULL default 'VbStyle-Black',
`style_wap` varchar(25) NOT NULL default 'wap',
`num_posts` int(10) unsigned NOT NULL default '0',
`last_post` int(10) unsigned default NULL,
`registered` int(10) unsigned NOT NULL default '0',
`registration_ip` varchar(15) NOT NULL default '0.0.0.0',
`last_visit` int(10) unsigned NOT NULL default '0',
`admin_note` varchar(30) default NULL,
`activate_string` varchar(50) default NULL,
`activate_key` varchar(8) default NULL,
`num_files` int(10) NOT NULL default '0',
`file_bonus` int(10) NOT NULL default '0',
`show_bbpanel_qpost` tinyint(1) NOT NULL default '0',
`popup_enable` tinyint(4) default '1',
`messages_enable` tinyint(4) default '1',
`mark_after` int(10) NOT NULL default '1296000'

можно еще какой-нить инфы полезной брать.

TLENS » 2011.08.09 18:37

Если в будущем будем постоянно его расширять то понадобится многовато. например пол, аватар, реал. имя, язык.
Знаешь что еще можно сделать: Кто в онлайне.
И уведомления показывать кто зашел а кто вышел.
Добавлено спустя   9 минут  40 секунд:
Слушай мы немножко неправильно сделали.
Надо было делать проверку по количеству сообщений, и если больше тогда начинаем проверку подключатся к апи.
Я несколько не понимаю спецификацию json. Я слыхал что его можно получать с другого хоста. Это так?

Gemorroj » 2011.08.09 19:37

да. http://ru.wikipedia.org/wiki/JSON#JSONP_.26_JSONPP

TLENS » 2011.08.09 21:22

Слушай тогда нельзя нивкоем случае передавать приват через json.
Так как могут выложить на каком то сайте JS код который примет json привата с твоего сайта и передаст его себе на сервер.
Добавлено спустя   1 минуту  39 секунд:
Или я чего то не досмотрел?

TLENS » 2011.08.09 21:47

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

Gemorroj » 2011.08.09 21:54

забей) все ок

TLENS » 2011.08.23 19:58

Паша я не пойму как получать приват
http://wapinet.ru/forum/viewtopic.php?pid=18797#p18797

Gemorroj » 2011.08.23 22:59

какой такой приват??

TLENS » 2011.08.23 23:05

Ну вообще в апи getPrivatMessage но он дает ошибку и как с ним работать я не понял где брать id для передачи тебе в апи.

Gemorroj » 2011.08.23 23:26

ааа, на название темы не посмотрел)
чето я и сам уже не помню, а как ID в обычный getMessage получается?

TLENS » 2011.08.23 23:30

Gemorroj написал:

ааа, на название темы не посмотрел)
чето я и сам уже не помню, а как ID в обычный getMessage получается?

Ну ты мне вместе с инфой даешь id каждого поста https://code.google.com/p/wapinet-forum … ion.js#115

Gemorroj » 2011.08.23 23:32

мм, добавить метод getLastPrivatMessage(void); ?

TLENS » 2011.08.23 23:41

Сейчас я подумаю

TLENS » 2011.08.24 00:05

Если id привата растут, давай вместе с форумами id последнего привата.
потом если больше сохраненного я тебе даю пустой getPrivatMesage в ответ давай массив не прочитанных также как форумы.
В месте с информацией ЛС еще давай id что бы потом можно было в уведомлениях вызывать по одиночке.
В мыслях вроде все норм.

Gemorroj » 2011.08.24 00:20

название метода должно отличаться.
geAllPrivateMessages будет. завтра сделаю.

TLENS » 2011.08.24 00:23

Ок)
Добавлено спустя   4 минуты  13 секунд:
Слушай почему http://wapinet.ru/forum/ajax.server.php?informer&getPrivatMessage=(id взял с лс) status = false?

Gemorroj » 2011.08.25 12:08

была ошибка при передаче конфига в конструктор(
сделал метод getPrivateMessages(int $limit)
возвращает массив приватных сообщений для пользователя отсортированных по ID в обратном порядке.
limit - это какое кол-во сообщений нужно вернуть.
Добавлено спустя    44 секунды:
код тут http://wapinet.ru/forum/viewtopic.php?pid=18572#p18572

TLENS » 2011.08.25 12:13

О норм придумал. Через пару дней займусь.

TLENS » 2011.08.25 12:51

В ячейках 'poster' вставляй логин отправителя. Не знаю какая у тебя структура но вот получи api например getPrivatMessages=100 И везде будет в poster = Gemorroj переправь на логин с кем идет общение и добавь ячейку исходящее или входящее box = 0/1
Что бы можно было вести чат

TLENS » 2011.08.25 14:16

Я даже не правильно объяснился

TLENS написал:

ячейках 'poster' вставляй логин отправителя.

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

TLENS » 2011.08.26 16:11

Ну так как, ты сделаешь?

TLENS » 2011.08.29 23:00

Слушай а как ты несколько изменений вставляешь в один комментарий в svn

Gemorroj » 2011.09.01 11:38

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

Gemorroj » 2011.09.01 13:06

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

TLENS » 2011.09.02 18:01

А я просто так понял что ты передавал все сообщения входящие и исходящие

Gemorroj » 2011.09.02 18:11

нет, только входящие.

Gemorroj » 2011.09.02 19:51

нужно вынести адрес форума в переменную... т.е. http://wapinet.ru/forum/

TLENS » 2011.09.02 19:52

Не понял. Ты на счет чего?
Добавлено спустя   2 минуты  46 секунд:
В смысле для каких целей?

Gemorroj » 2011.09.02 20:05

не нужно затачивать расширение под wapinet. код форума открыт в принципе (ну я не сразу выкладываю код, но выкладываю) так что желательно чтобы в итоге расширением могли пользоваться все, кто поставит себе форум PunBB Mod Gemorroj

TLENS » 2011.09.02 21:13

Аа

Gemorroj » 2011.09.17 00:03

блин, в опере сейчас нет доступа к Notifications API
у виджетов есть доступ, а у расширений нет. печаль.

TLENS » 2011.09.17 00:08

Проверь частые window.open('notification.html','Уведомление','width=300,height=400'); Блокирует?
Просто хром не блокирует можно хоть тысячу создать с расширения
Добавлено спустя   8 минут  3 секунды:
Кстати смотри что еще придумал ::thumb808::

Gemorroj » 2011.09.17 00:31

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

TLENS » 2011.09.17 00:35

Паш я вот не знаю что делать с форумом. ЯНе правильно мы все таки получаем.
Раз уже работаем с авторизацией то надо сделать так как на http://wapinet.ru/forum/search.php?action=show_new
Как ты думаешь?

Gemorroj » 2011.09.17 00:42

а сейчас разве не так?

TLENS » 2011.09.17 00:48

Gemorroj написал:

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

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

Gemorroj написал:

а сейчас разве не так?

Сейчас прослеживается только 5 сообщений, по одному для каждого подфорума.
Я думал сделать место мигающей new количество новых. А хотя это только что чет в голову стрельнуло. Просто мне не нравится функция connect стыдно смотреть.
Добавлено спустя   1 минуту  36 секунд:
Но в принципе это обдумать надо пока месть наверное оставим эту затею. Я понаблюдаю на минусы сообщу

TLENS » 2011.09.17 01:00

Кстати давно уже жду апи онлайнера! ты сделаешь?
Показывает список авторизованых.
Будет выпадать уведомление кто зашел а кто вышел

Gemorroj » 2011.09.17 09:14

в смысле онлайнера? onliner.by чтоли?)

TLENS » 2011.09.17 12:54

)) Ну в смысле апи передающее пользователей которые в онлайне.

Gemorroj » 2011.09.17 14:17

по-моему это уже свистелки-переделки. давай на потом это оставим

Gemorroj » 2011.11.06 18:26

TLENS, чего с расширением там?)

TLENS » 2011.11.07 04:51

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

Gemorroj » 2011.11.07 10:06

прост у тебя же уже на крине была отправка сообщений из всплывающих окон.

TLENS » 2011.11.07 15:01

Gemorroj написал:

прост у тебя же уже на крине была отправка сообщений из всплывающих окон.

Да его даработать надо правда там наверное на 5 мин. Через часик где то возьмусь.

Gemorroj » 2011.11.13 20:30

(

TLENS » 2011.11.13 20:32

Блин Паша извини забегался. Все запускаю десигнер

TLENS » 2011.11.13 20:55

может через апи сделаем, дабы ответ было проще получить?

Gemorroj » 2011.11.13 21:36

что именно через апи?

TLENS » 2011.11.13 21:46

Голова чет не варит, отошел немного от JS Уже начинаю голову чесать.
На счет апи. В общем я тебе даю пост ты принимаешь и даешь статус и ответ (Все отлично, Авторизуйтесь, темы нет ну и тому подобное.

Gemorroj » 2011.11.13 21:49

ок. сейчас попробую по быстрому сделать.

TLENS » 2011.11.13 23:24

??? Это новый метод?
Добавлено спустя    45 секунд:
Или что это было?
Добавлено спустя   2 минуты  12 секунд:
Я решил не затрагивать notification.js а подключить новый скрипт как тебе такой поход?

Gemorroj » 2011.11.13 23:28

тестирую.
вобщем код смотри в свн (последний коммит).
нужно передать setMessage = текст сообщения и setMessageThemeId = id темы в которую пуляем сообщение.
есть проблема с тем, что данные через GET передаются.
и вообще нужно будет переделать API в плане того, что выделить отдельную переменную под имя используемого метода.
т.е. что-то типа method=setMessage

TLENS » 2011.11.13 23:28

Просто я мало информирован о JS и весь мой опыт это расширение для форума wapinet.ru

Gemorroj » 2011.11.13 23:28

не понял на счет notification.js

TLENS » 2011.11.13 23:33

Ну я решил создать файл sender.js и в нем содержимое

Код:

1
2
3
4
5
6
7
8
9
10
var sender;
function Sender()
{
// и здесь все что относится к отправке ответов
}
 
$(document).ready(function () {
sender = new Sender();
});

И подключать в notification.html

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

TLENS » 2011.11.13 23:45

Gemorroj написал:

есть проблема с тем, что данные через GET передаются.

А что с постом?

Gemorroj написал:

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

И расширение надо переделывать. Идей много по оптимизации и упрощении кода. Но реализовать ...

Да кстати я 10 мин. Искал твой коммит чета не нашел. Потом дошло что не авторизован (все равно не нашел)

Gemorroj » 2011.11.13 23:48

большие данные из сообщений просто лучше передавать постом.
делай файл sender.js и начинай его так

Код:

1
2
3
4
5
6
7
8
9
var Sender = function () {
method: function () {
alert(1);
},
 
_privateMethod: function () {
alert(2);
}
};

весь код должен быть внутри этой переменной Sender раскиданный по методам и переменным.
причем переменные  и методы которые не должны быть использованы вне этого класса начинай с _

TLENS » 2011.11.13 23:51

Все понял

TLENS » 2011.11.14 02:09

вот набросал начало

Код:

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
var Sender = {
//------------public_var---------//
//------------public_method------//
init: function () {
if (this.is_active) {
this._lincMessage = $('div#sender textarea#message');
this._event();
}
else {
// Для гостей
}
},
paste: function (user) { // вставка тега при нажатии на ник
this.textArea += "[b]" + user + "[/b], ";
},
get textArea () { // извлечение с текстового поля
return this._lincMessage.val();
},
set textArea (v) { // запись в текстовое поле
this._lincMessage.val(v);
},
get is_active () { // Проверка на авторизацию, не надежно но во многих случаях укажет (Каждый раз просить в сайта это жирно)
if (!localStorage['nick']) // надо в будущем добавить в память localStorage['auth'] и регулировать при запуске в background.js
return false;
else return true;
},
//---------private_method----------//
_event: function () {
$("a#user").click(function () {
Sender.paste($("a#user").text());
});
$("#send").click(function () {
//Sender.Send();
});
},
//---------private_var------------//
_lincMessage: "",
//-------end------//
m: 1
};
 
$(document).ready(function () {
Sender.init();
});
 
 
<body>
<div id="subject"><img src="ajax-loader-on.gif" alt="" /> Загружаю</div><div id="timer">300</div><br />
<div><b></b><a href="#message" id="user"></a></b> - <span id="time"></span></div>
<div id="postmsg"></div>
<div id="sender">
<button id="send">Быстрый ответ</button>
<textarea id="message" rows="2" tabindex="1"></textarea>
</div>
</body>

немного почитать пришлось

Gemorroj » 2011.11.14 11:10

ну, продолжай) только не _lincMessage, а _linkMessage
Добавлено спустя   1 минуту  15 секунд:
и с синтаксисом что-то в get textArea, set textArea, get is_active
is_active лучше переименуй в isActive

TLENS » 2011.11.14 14:24

Gemorroj написал:

ну, продолжай) только не _lincMessage, а _linkMessage

А ну да linck

Gemorroj написал:

и с синтаксисом что-то в get textArea, set textArea, get is_active

ну это я взял с низкоуровневого языка удобная штука, но десигнер об этом не научен. Правда в JS изуродована хорошо. Сам синтаксис getter-ов и setter-ов раздуплял вчера они так называются.

Gemorroj написал:

is_active лучше переименуй в isActive

Попутал языки, в JS так же принято.

Gemorroj » 2011.11.14 15:14

TLENS написал:

А ну да linck

link

TLENS написал:

ну это я взял с низкоуровневого языка удобная штука, но десигнер об этом не научен. Правда в JS изуродована хорошо. Сам синтаксис getter-ов и setter-ов раздуплял вчера они так называются.

да, посмотрел в WebStorm, синтаксически верно. Будет клево если кинешь ссылку на доки.

TLENS » 2011.11.14 15:38

Gemorroj написал:

link

Опять промах))

Gemorroj написал:

Будет клево если кинешь ссылку на доки.

Ну я сам по блогам собирал. Вообще мне они извесны как аксессоры и мутаторы ну в js все просто seter and getter))
http://habrahabr.ru/blogs/crazydev/126804/
http://ejohn.org/blog/javascript-getters-and-setters/

TLENS » 2011.11.14 15:57

только что почитал про аксессоры и мутаторы это не то.
Я просто помню слушал одного учителя по Cи то там упоминалось про  аксессоры. Сейчас толком почитать не получается. В автобусе еду трясет очень.

TLENS » 2011.11.14 21:31

Кстати на счет апи: раз уж собрался переделывать под методы. Надо будет исправить один метод он мне с самого начала не нравится. Это получение новых сообщений на форуме, т.е. работать с не прочитаными как здесь http://wapinet.ru/forum/search.php?action=show_new
Да я еще интегрирую один js код в твой сайт для общения с расширением через порт. Тестировал все получалось.

TLENS » 2011.11.19 16:08

Паша чуть погоди у меня проблема с сайтом. Надо срочно скрипт писать. Кстати у тебя есть знакомые хорошие программисты на Cи?
Вчера в гугле просидел, и сегодня с час лазил не могу найти норм программиста!
У меня там проэкт в 500 строк надо просто устранить утечку.

Gemorroj » 2011.11.19 19:20

на форумах поспрашивай, думаю быстрее будет

TLENS » 2011.11.20 17:29

Что тестишь?

TLENS » 2011.11.20 17:41

Решил антиспам заделать?

Gemorroj » 2011.11.20 18:28

да, правлю баги о которых LEXIN писал. В SVN результаты)

TLENS » 2011.11.20 18:36

Gemorroj написал:

вобщем код смотри в свн (последний коммит).

Дошло мне где ты писал.
Ты писал в punbb-mod а я искал в wapinet-forum
Просто на punbb-mod ни разу не заходил.

Gemorroj » 2011.11.20 18:38

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

Ну понятное дело. Надо бы и расширение в конце переименовать на punbbMod-extension.
А как там в планах на будущее опера что то планирует?
Просто надо будет альтернативу искать!

TLENS » 2011.11.20 22:12

Что это за прикол ведь предыдущее сообщение я писал.
Баг или случайно удалил?

Gemorroj » 2011.11.20 22:34

не понял..)

TLENS » 2011.11.20 22:39

Браузерное расширение для форума этот пост я писал

Gemorroj » 2011.11.20 23:29

ах) фак) чудеса)
я не знаю как так могло получиться)
Добавлено спустя   1 минуту  3 секунды:
Gemorroj, а так да, опера планирует) жду когда будет Notifications API.

TLENS » 2011.11.20 23:35

Gemorroj написал:

ах) фак) чудеса)
я не знаю как так могло получиться)

А я смотрю чет похожее думаю мож я не отправил, уже даж начал думать что ты тип меня опередил. Потом причитался чет не то))

Gemorroj » 2011.12.03 13:09

все по прежнему..?)

TLENS » 2011.12.03 13:51

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

POFIGISST » 2011.12.03 16:03

TLENS написал:

Сегодня на природу еду за город.

приятно провести время:))

TLENS » 2011.12.04 12:30

POFIGISST написал:

TLENS написал:

Сегодня на природу еду за город.

приятно провести время:))

Я не гулять, сегодня поминки в отца два года. Как только так и сразу беру машину и валю от сюда. Не нравится мне холодная природа.

POFIGISST » 2011.12.04 12:44

TLENS
соррь,я не знал:(

TLENS » 2011.12.06 01:29

В getMessage нужно добавить ThemeId. А то скрипт не понимает куда слать.

TLENS » 2011.12.06 08:17

Немного дизайн подправил на уведомлениях.
::thumb923::
::thumb924::
Добавлено спустя   4 минуты  10 секунд:
::thumb925::

Gemorroj » 2011.12.06 11:46

сделал. смотри SVN punbb-mod. так же в setMessage setMessageThemeId переименована в setMessageTopicId

TLENS » 2011.12.07 04:24

} else if (isset($_GET['setMessage']) && isset($_GET['setMessageThemeId'])) {
Исправь

TLENS » 2011.12.07 05:41

Смотри.
Пока добавил в адрес setMessageThemeId=1
Напиши погрешности мои. Я спал на ходу уверен их там очень много.
ps. Как крепить к одному коментарию несколько изменений? Как ты делаешь что изменил два файла прокоментировал раз?

Gemorroj » 2011.12.07 11:33

комить не файл, а всю папку.
ок, расширение посмотрю.
спс за замечание в сервисе - исправил )

TLENS » 2011.12.07 14:54

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

TLENS » 2011.12.10 21:22

Паша ну че ты смотрел? я видел пару недостатков таких как нет сдвига курсора в конец текста при нажатии на ник, Я просто хз как оно делается. так же надо остановить счетчик (закрытия) при ответе.
Что там еще надо?

Gemorroj » 2011.12.11 00:00

да я смотрел, я может не совсем чего понимаю, но там часть функциолнала не работает. клик по тебе сообщения, например, или кнопка ответить не совсем понятно как работает - она же и textarea показывает, она же и сообщение отправляет. еще че-то было, завтра постараюсь заняться. сегодня другое делал.

TLENS » 2011.12.11 00:04

Хм. ::thumb928::

Gemorroj » 2011.12.11 00:10

ну как минимум я в хроме без кукисов фоумных.

TLENS » 2011.12.11 00:11

Вот наверное и вся проблема.
Я как то не подумал на счет этого

TLENS » 2011.12.11 00:34

Когда будешь свободен? надо переделать полностью апи. Как ты говорил методами. Мне многое не нравится

Gemorroj » 2011.12.11 00:54

пиши что не нравится

TLENS » 2011.12.11 01:08

Получение форумов как здесь http://wapinet.ru/forum/search.php?action=show_new
1) метод не принимает аргументов возвращает int количество новых.
2) метод принимает int n возвращает массив n не прочитанных  array[2] {"status": true, "pid": array[n] {все то же что на getMessage}} сообщений.

Gemorroj » 2011.12.11 01:10

т.е. новый метод на непрочитанные темы нужен?

TLENS » 2011.12.11 01:11

PS/ второй метод должен работать как LIMIT в mysql например с 10, 10
Добавлено спустя   1 минуту  25 секунд:
Кстати пока месть я прохожу курсы машинописи и мне запрещается что то писать пока не закончу. Так что прийдется пару недель подождать.

Gemorroj » 2011.12.11 01:13

какой второй метод?

TLENS » 2011.12.11 01:14

Браузерное расширение для форума

Gemorroj » 2011.12.11 01:20

ээ, а смысл в такой разбивке? почему бы не отдать все?

TLENS » 2011.12.11 01:26

Ну приставь на форуме посещалка пару кусков. Я где то отдыхаю. Тут приехал домой и включил браузер.
А также я допусти забил на все отключил разширение а потом через пару месацев решил зайти. и тут мне перегрузка.

Gemorroj » 2011.12.11 01:35

брать 10 последних, например. и все.

TLENS » 2011.12.11 01:36

Ну можно и так.

Gemorroj » 2011.12.11 15:03

Меня очень напрягают функции  connect и сопутствующие getForum и saveForum.
connect нужно переписывать.

TLENS » 2011.12.11 15:07

Да не только тебя.
Просто когда писал функции, не имел понятия об ооп. Да и сейчас не очень. У меня практики по js нет вообще. Да и знаний мало - гуглом пишу.

Gemorroj » 2011.12.11 16:13

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

TLENS » 2011.12.12 01:12

Gemorroj написал:

еще некорректно откывает ссылки, если путь относительный.

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

Gemor » 2011.12.12 01:20

нет ошибок. такое ощущение что сам клик не перехватывается.

TLENS » 2011.12.12 16:10

Именно по тексту может надо?

TLENS » 2011.12.12 16:51

оно все глючное я думаю, надо переделать

Gemorroj » 2011.12.12 19:35

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

IMPEXINVINE » 2012.03.03 13:35

Я это описал в теме "Страницы для новестей" этого раздела.
Я когда писал свою СMS и форум к ней легко справился с этой задачей. эсли найду этот форум то могу выложить. Могу помочь с написаним, если нужно обращайтесь

Gemorroj » 2012.03.03 14:09

IMPEXINVINE, помогай)

Gemorroj » 2012.03.03 21:34

TLENS? ниче нового не накодил..?)

TLENS » 2012.03.04 19:11

Сегодня доделаю вот только не пойму почему апи возвращает пустую страницу.
Посмотри
Добавлено спустя   5 минут  24 секунды:
Напиши мне в аську

Gemorroj » 2012.03.04 19:42

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

TLENS » 2012.03.04 20:14

Странно так как я его вызывал у меня пусто
Сек посмотрю внимательно
Добавлено спустя   2 минуты  36 секунд:
Дай адрес (Пример) как звонишь?

Gemorroj » 2012.03.04 20:28

https://code.google.com/p/wapinet-forum/source/browse/trunk/chrome/background.js#7
перешел по адресу http://wapinet.ru/forum/ajax.server.php?informer&method=getConfig
получил конфиг

TLENS » 2012.03.04 20:35

Ай блин ты же через методы все зделал
Добавлено спустя   1 минуту  58 секунд:
А что тогда с этим делать? https://code.google.com/p/punbb-mod/sou … mp;r=14#51
А я долбу параметр GET['getConfig']

Gemorroj » 2012.03.04 20:53

https://code.google.com/p/punbb-mod/sou … ver.php#51
теперь 51 строчка выглядит так.
Добавлено спустя    31 секунду:
ты свн обновлял вообще? я же подогнал расширение под новый апи

TLENS » 2012.03.04 23:04

А нет
Добавлено спустя    37 секунд:
Я решил его отрефакторить

IMPEXINVINE » 2012.03.05 20:37

Я это описал в теме "Страницы для новестей" этого раздела.
Я когда писал свою СMS и форум к ней легко справился с этой задачей. эсли найду этот форум то могу выложить. Могу помочь с написаним, если нужно обращайтесь

Gemorroj » 2012.03.05 21:07

IMPEXINVINE, выкладывай, помогай.

tipsun » 2012.03.05 21:38

IMPEXINVINE == БОТ

TLENS » 2012.03.06 02:53

Блин сегодня ничего не сделал пару методов отрефачил за 15 мин
Добавлено спустя   3 минуты  19 секунд:
Проблемы были в голове))

IMPEXINVINE » 2012.03.26 12:41

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

Половину могу убрать

TLENS » 2012.03.27 12:26

Время мало сейчас заннялся делом и за своим сайтром не успеваю следить. На этих выходных попробую закончить релиз.
Что я испривил:
Сделал один главный файл background.html и с ним настроил все порты. Тоесть чтобы подключится к апи с popup надо позвонить в бекгроунд потом с бакгроунда при ответе звоню назад в popup и отправляю результаты. Собственно данные все тоже лежат в бекгроунде и получаются с через порт.
Вот пару методов для в вода в курс блин десигнер 8 истек. Щас лиценцзию возьму

TLENS » 2012.03.27 12:43

Усовершенствована база форумов.

Код:

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
forums = {
get array () {
var arr = {3:{},4:{},5:{},6:{},7:{}};
for (var i = 3; i <= 7; i++) {
arr[i].last_post_time = this[i].last_post_time;
arr[i].last_post_id = this[i].last_post_id;
arr[i].last_poster = this[i].last_poster;
arr[i].subject = this[i].subject;
arr[i].icon = this[i].icon;
}
return arr;
}
};
for (var i = 3; i <= 7; i++) {
forums[i] = prototype = {
i: i,
get last_post_time () {
return localStorage['forum[' + this.i + '][last_post_time]'] ?
parseInt(localStorage['forum[' + this.i + '][last_post_time]']) :
0;
},
set last_post_time (v) {
localStorage['forum[' + this.i + '][last_post_time]'] = v;
},
get last_post_id () {
return localStorage['forum[' + this.i + '][last_post_id]'] ?
parseInt(localStorage['forum[' + this.i + '][last_post_id]']) :
0;
},
set last_post_id (v) {
localStorage['forum[' + this.i + '][last_post_id]'] = v;
},
get last_poster () {
return localStorage['forum[' + this.i + '][last_poster]'];
},
set last_poster (v) {
localStorage['forum[' + this.i + '][last_poster]'] = v;
},
get subject () {
return localStorage['forum[' + this.i + '][subject]'];
},
set subject (v) {
localStorage['forum[' + this.i + '][subject]'] = v;
},
get icon () {
return (localStorage['forum[' + this.i + '][icon]']) ? true : false;
},
set icon (v) {
localStorage['forum[' + this.i + '][icon]'] = v;
}
}
}

Метод для упрощение работы с апи

Код:

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
var api = {
call: function (method, value, callback, error) {
var variable = '';
if (typeof value === 'object') {
for (v in value) {
variable += '' + v + '=' + value[v] + '&';
}
}
switch (method) {
case 'getMessage':
case 'getPrivateMessage':
case 'getPrivateMessages':
case 'getConfig':
case 'setMessage':
case 'getForums':
return $.getJSON('http://' + configs.host + '' + configs.patch_api + 'method=' + method + '&' + variable)
.success(callback)
.error(error);
break;
default:
return null;
}
}
};

Ну и собственно пример работы с портами

Код:

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
ports = {
popup: null,
notification: null,
contentscript: null
};
 
 
 
 
 
chrome.extension.onConnect.addListener(function(port) {
if (port.sender.id === window.location.hostname) {
if (port.name === 'popup')
ports.popup = port;
else if (port.name === 'notification')
ports.notification = port;
else if (port.name === 'contentscript')
ports.contentscript = port;
else return;
port.onMessage.addListener(function (msg) {
// Проверка на соединение портов. Чет умнее не придумал.
if (typeof msg.connected !== 'undefined')
port.postMessage({connected: true});
// Получение и изминение настроек см. method.settingInPort
else if (typeof msg.setting !== 'undefined')
port.postMessage({setting: method.settingInPort(msg.setting)});
// Получение данных. А также их изменение (например отмерка как прочитаное)
else if (typeof msg.forum !== 'undefined')
port.postMessage({forum: method.forumInPort(msg.forum)});
// Прямой доступ к апи.
else if (typeof msg.api !== 'undefined')
api.call(msg.method, msg.value, function (data) {
if (data.status === true)
port.postMessage({api: true, data: data.data});
else
port.postMessage({api: true, error: data.data});
},
function (data) {
port.postMessage({api: true, error: data});
});
else if (typeof msg.reload !== 'undefined')
api.call('getForums', null, method.updateData);
});
// Событие на разрыв соединения.
port.onDisconnect.addListener(function () {
ports[port.name] = null;
});
}
});
 
 
 
 
api.call('getConfig', null, settings.update);
method.startUpdateData();
Gemorroj » 2012.03.27 14:49

так комить в свн