Вы не зашли.
#2.
TLENS
Off
(14)
Moderator
2011.06.24 19:07
Паша надо бы залить его в
https://chrome.google.com/webstoreУ меня все готово вот только не могу выложить в публику так как просит 5$
Про мучился не могу про платить его. Не получается.
пока не надо никуда заливать.
#4.
TLENS
Off
(14)
Moderator
2011.06.26 05:05
Ой паша чет ты там такого на куралесил.
Зачем было убирать автозакрытие и кнопк? Удобно ведь было.
Также выравнивал его чтобы красота была а это что?
А вообще сделал ты его намного быстрее.
Даже если и убрал кнопку надо было же выровнять иконку reload на 20px в право.
Утром займусь оформлением сегодня спать уже буду идти.
Добавлено спустя 1 минуту 23 секунды: Да кстати изменений много позитивных. И уведомление радует, Аккуратное.
я же писал в прошлой теме зачем.
автозакрытие ИМХО неудобно, курсор не обязательно будет находиться в фокусе на попапе. а закрыть можно просто кликнув в сторону.
reload и отступы нужно поправить, да.
#6.
TLENS
Off
(14)
Moderator
2011.06.26 08:08
Мне чет не спится. Слушай пока ты здесь обьясни аочему убрал margin с тела. Какие то трудности были?
Что бы я знал
Добавлено спустя 4 минуты 48 секунд: Слушай а правда процессор практически не видит это расширение оптимизировал супер ))
Кстати ты меня учил что в селекторах желательно прописывать имя тегов. А у тебя вижу айдишки без тегов.
Я так понимаю по ид оно отбирается в доме прямо без поиска чем как например по option[value=""] или .class
Отредактировано TLENS (2011.06.26 08:08)
#7.
TLENS
Off
(14)
Moderator
2011.06.26 09:09
Внес пару изменений смотри
ну есть 3 метода для поиска по дому: getElementById, getElementsByTagName, getElementsByClassName.
Из них однозначно самый быстрый - это getElementById. При чем намного.
getElementsByTagName и getElementsByClassName примерно одинаковы по скорости, НО в IE до 8 включительно нету этого метода и jQuery реализует его самостоятельно, что, само собой, намного медленнее по сравнению с нативным методом.
Отсюда вывод - для кроссбраузерных скриптов лучше искать через getElementsByTagName, а не getElementsByClassName.
Есть еще момент с
querySelector - оно работает очень быстро, намного быстрее чем jQuery. Но пока что только новые версии браузеров это понимают.
Добавлено спустя 8 минут 23 секунды: я бы еще на это обратил внимание.
#9.
TLENS
Off
(14)
Moderator
2011.06.26 09:09
Предложения:
1) Кстати хром же понимает. Можно и воспользоватся.
2) Пошарюсь как делать толковый порт. А то мой самодельный ну никуда не годится.
3) Да и мигалку наверное убрать надо. И вместо этого добавить код который будет подсчитывать количество новых. И выводить на иконку.
На первое можешь не отвечать
Добавлено спустя 3 минуты 16 секунд: Первое обращение смотрел но не довел до конца.
Посмотрю еще раз.
Второе сейчас сделаю
#10.
TLENS
Off
(14)
Moderator
2011.06.26 09:09
Сделал фрейм. А в настройках что именно просто там несколько стрелок надо рисовать
пустое место, в которое нужно уместить выбор временной зоны.
#12.
TLENS
Off
(14)
Moderator
2011.06.26 10:10
Не вариант все равно будет не красиво.
Сейчас что то придумаю
#13.
TLENS
Off
(14)
Moderator
2011.06.26 11:11
Как тебе такой вариант?
Мне нравится
Добавлено спустя 1 минуту : Чуть кривовато но это исправимо
отлично, отступ сверху пару пикселей только надо бы)
#15.
TLENS
Off
(14)
Moderator
2011.06.26 19:07
Слушай еще вариант раз уже делать то делать.
Предложения:
Сервисы которые постоянно нужны под рукой.
Например:
Валидатор, тыц и прочее.
Ну можно подумать.
А вообще надо сначала это до конца довести, ну потом думать об обновлении.
валидатор в опере в менюшке всегда под рукой))
#17.
TLENS
Off
(14)
Moderator
2011.06.26 19:07
А кстати помнишь еще дектора гугловского пробовал совместить с расширением.
Крутяк был. Но только ники чудно читала. А кстати мой правильно говорит не через Э как все знакомые а через Е
Добавлено спустя 1 минуту 1 секунду: После переустановки винды нет того кода но в голове остался вариант.
#18.
TLENS
Off
(14)
Moderator
2011.06.27 12:12
Идея сделать показ статусов кто онлайн кто офлайн.
То есть показ уведомлением на 3 сек. кто зашел на форум а кто перешел в оф.
Надо апи в informer добавь переменную с массивом кто онлайн.
а на счет личных сообщений что скажешь?
#20.
TLENS
Off
(14)
Moderator
2011.06.27 16:04
Ну мы с тобой говорили.
Если кука сработает тогда можно сделать.
А авторизацию делать не охота.
Сейчас кстати проверю возможность этой затеи.
Да и пользователей надо будет предупредить что бы не качали со сторонних источников, стоит в манифесте указать доступ к еще одному сайту и можно и сам думаю понимаешь получается троян.
#21.
TLENS
Off
(14)
Moderator
2011.06.27 17:05
Корочь все работает куку отдает.
Делай вместе с постом.
private_status = 0/1;
Да и хватит
#22.
TLENS
Off
(14)
Moderator
2011.06.27 19:07
Бета версия что на данный момент.
Вложения
dir.zip
98kb
[
загрузок: 970]
Отредактировано TLENS (2011.06.28 16:04)
#23.
TLENS
Off
(14)
Moderator
2011.07.12 18:06
Надо исправить dblclick не удобно так как сразу попа начинает сворачивается и иногда второй раз не успеваю сделать клик.
Какие идеи?
Использовать ролик?
#24.
TLENS
Off
(14)
Moderator
2011.07.16 04:04
Паша ну как там ты делаешь апи привата?
да, сейчас займусь... сорь за мудозвонство, совсем что-то плохой стал)
Есть проблемка с приватными сообщениями. у нас сверяется последнее сообщение по его ID. Но у приватных сообщений и постов на форуме свои идентификаторы, которые в теории могут пересекаться.
Нужно для приватных сообщений делать отдельно запросы на сервер, либо в ответе на наши стандартные запросы посылать отдельно информацию по приватным и отдельно по постам на форуме.
Предлагаю остановиться на 2 варианте.
Добавлено спустя 2 минуты 1 секунду: Вобщем, нужно изменить API. От расширение должно передаваться 2 идентификатора - ID приватного сообщения и ID поста на форуме.
Ответ будет содержать 2 массива с данными по последнему приватному сообщению и данными по последнему посту на форуме.
Добавлено спустя 2 минуты 50 секунд: Пока подожду что ты скажешь.)
#27.
TLENS
Off
(14)
Moderator
2011.07.19 06:06
Слушай я понял но не могу сосредоточится чтобы обмозговать как все будет реализовано в расширении, и как я хотел тогда.
Я вчера ножки обмывал сейчас не соберу себя до кучи.
Кстати пока не забыл надо нотификатион открывать вместе с search в адресе и уже внутри регулировать location.search и взать какой id светить. А то когда например видео смотришь через флеш, то окна блокируются, и как только закрыл видео появляется куча уведомлений с последним сообщением.
TLENS, так какой вариант делаем?
#29.
TLENS
Off
(14)
Moderator
2011.07.20 12:12
В общем да делай еще наверное два правильных апи скриптами подстроимся под них.
Отредактировано TLENS (2011.07.20 12:12)
Код:
span style="color: #0000BB"><?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())); }} |
Код:
span style="color: #0000BB"><?phpclass 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 < 1 || !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 < 1 || !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 < 1 || !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); }}?> |
из кода понятно что требуется?)
Отредактировано Gemorroj (2011.09.01 13:01)
#31.
TLENS
Off
(14)
Moderator
2011.07.23 13:01
Ок.
#32.
TLENS
Off
(14)
Moderator
2011.07.24 20:08
Паша а как на счет того чтобы скрипты положить на сервере?
И обновление будет сразу же отображатся
??? какие скрипты? на каком сервере?
#34.
TLENS
Off
(14)
Moderator
2011.07.24 20:08
Внутренние js сделать внешними
Добавлено спустя 1 минуту 14 секунд: Чтобы расширение при запуске хрома подгружало с сервера.
нет. расширение должно развиваться отдельно. все что связывает форум и расширение - это API и все.
#36.
TLENS
Off
(14)
Moderator
2011.07.24 21:09
Понятно. Раз уже будем работать через куку тогда можно убрать два поля с настроек, это "ваш ник" и "Часовой пояс" как на это смотришь?
Отредактировано TLENS (2011.07.24 21:09)
вперед. я вообще не совсем понимаю нафига эти настройки)
#38.
TLENS
Off
(14)
Moderator
2011.07.24 21:09
Не ну настройка ника нужна была чтобы расширение не реагировало на свои посты.
Интервал обновления можно убрать и сделать стандарт например 1мин.
А вот что делать со звуком я ведь хотел еще сделать загрузку собственной мелодии на звук.
Да и настройку громкости глупо убирать.
Ты как думаешь?
а вот интервал я бы оставил, так же как и громкость.
собственную мелодию оставь на потом имхо
#40.
TLENS
Off
(14)
Moderator
2011.08.09 11:11
Паша нужно еще апи, если решили очистить лишнее с настроек.
Код:
config = array(2) { |
["status_auth"] = true, |
["set"] = array(2) { |
["nick_name"] = "TLENS", |
["time_zone"] = "+2" |
} |
} |
На счет time_zone можно и выбросить просто отдавать не в +2 а в тайме с настроек.
Добавлено спустя 2 минуты 24 секунды: Но лучше тиме зоне передавать по конфигу
Отредактировано TLENS (2011.08.09 11:11)
а зачем в расширении ник?
#42.
TLENS
Off
(14)
Moderator
2011.08.09 11:11
Я же говорю что бы расширение не реагировало на свои посты.
Как оно работает:
Оно проверяет новое сообщение если оно новое тогда проверяет автора этого сообщения если я например не автор тогда выдаю сообщение, а если же а сам автор тогда зачем уведомлять и он блокирует notification.html
Добавлено спустя 2 минуты 4 секунды: Код:
if (arr.forum[i]['last_poster'] === setting.nick) { // Если автор юзер не мигаем иконкой возле форума |
db[i]['icon'] = ''; |
} |
ясно.. т.е. у нас будет еще 1 запрос при запуске браузера. может тогда сразу не 2 параметра в конфиге отдавать, а еще чего-нибудь полезного?
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'
можно еще какой-нить инфы полезной брать.
#45.
TLENS
Off
(14)
Moderator
2011.08.09 18:06
Если в будущем будем постоянно его расширять то понадобится многовато. например пол, аватар, реал. имя, язык.
Знаешь что еще можно сделать: Кто в онлайне.
И уведомления показывать кто зашел а кто вышел.
Добавлено спустя 9 минут 40 секунд: Слушай мы немножко неправильно сделали.
Надо было делать проверку по количеству сообщений, и если больше тогда начинаем проверку подключатся к апи.
Я несколько не понимаю спецификацию json. Я слыхал что его можно получать с другого хоста. Это так?
да. http://ru.wikipedia.org/wiki/JSON#JSONP_.26_JSONPP
#47.
TLENS
Off
(14)
Moderator
2011.08.09 21:09
Слушай тогда нельзя нивкоем случае передавать приват через json.
Так как могут выложить на каком то сайте JS код который примет json привата с твоего сайта и передаст его себе на сервер.
Добавлено спустя 1 минуту 39 секунд: Или я чего то не досмотрел?
#48.
TLENS
Off
(14)
Moderator
2011.08.09 21:09
А не прочитал еще статью там про jsonpp/
В общем сейчас бежать надо. подойду почитаю.
А как там у нас все безопасно?
#50.
TLENS
Off
(14)
Moderator
2011.08.23 19:07
Паша я не пойму как получать приват
http://wapinet.ru/forum/viewtopic.php?pid=18797#p18797
Отредактировано TLENS (2011.09.17 12:12)
#52.
TLENS
Off
(14)
Moderator
2011.08.23 23:11
Ну вообще в апи getPrivatMessage но он дает ошибку и как с ним работать я не понял где брать id для передачи тебе в апи.
Отредактировано TLENS (2011.08.23 23:11)
ааа, на название темы не посмотрел)
чето я и сам уже не помню, а как ID в обычный getMessage получается?
мм, добавить метод getLastPrivatMessage(void); ?
#56.
TLENS
Off
(14)
Moderator
2011.08.23 23:11
Сейчас я подумаю
#57.
TLENS
Off
(14)
Moderator
2011.08.24 00:12
Если id привата растут, давай вместе с форумами id последнего привата.
потом если больше сохраненного я тебе даю пустой getPrivatMesage в ответ давай массив не прочитанных также как форумы.
В месте с информацией ЛС еще давай id что бы потом можно было в уведомлениях вызывать по одиночке.
В мыслях вроде все норм.
название метода должно отличаться.
geAllPrivateMessages будет. завтра сделаю.
#59.
TLENS
Off
(14)
Moderator
2011.08.24 00:12
Ок)
Добавлено спустя 4 минуты 13 секунд: Слушай почему http://wapinet.ru/forum/ajax.server.php?informer&getPrivatMessage=(id взял с лс) status = false?
была ошибка при передаче конфига в конструктор(
сделал метод getPrivateMessages(int $limit)
возвращает массив приватных сообщений для пользователя отсортированных по ID в обратном порядке.
limit - это какое кол-во сообщений нужно вернуть.
Добавлено спустя 44 секунды: код тут
http://wapinet.ru/forum/viewtopic.php?pid=18572#p18572
#61.
TLENS
Off
(14)
Moderator
2011.08.25 12:12
О норм придумал. Через пару дней займусь.
#62.
TLENS
Off
(14)
Moderator
2011.08.25 12:12
В ячейках 'poster' вставляй логин отправителя. Не знаю какая у тебя структура но вот получи api например getPrivatMessages=100 И везде будет в poster = Gemorroj переправь на логин с кем идет общение и добавь ячейку исходящее или входящее box = 0/1
Что бы можно было вести чат
#63.
TLENS
Off
(14)
Moderator
2011.08.25 14:02
Я даже не правильно объяснился
TLENS написал:
ячейках 'poster' вставляй логин отправителя.
Вставляй по возможности с кем общаюсь.
Или передавай отправителя и получателя так будет проще
Отредактировано TLENS (2011.08.25 14:02)
#64.
TLENS
Off
(14)
Moderator
2011.08.26 16:04
Ну так как, ты сделаешь?
#65.
TLENS
Off
(14)
Moderator
2011.08.29 23:11
Слушай а как ты несколько изменений вставляешь в один комментарий в svn
да, сори, проблемки в голове, кодить не могу..)
не понял про svn. наговнокодил, закомитил, наговнокодил, закомитил... больше ниче не делаю)
исправил ники.
насчет входящих-исходящих не уверен. зачем нам история исходящих на клиенте? как ты хочешь их отображать?
#68.
TLENS
Off
(14)
Moderator
2011.09.02 18:06
А я просто так понял что ты передавал все сообщения входящие и исходящие
нужно вынести адрес форума в переменную... т.е. http://wapinet.ru/forum/
#71.
TLENS
Off
(14)
Moderator
2011.09.02 19:07
Не понял. Ты на счет чего?
Добавлено спустя 2 минуты 46 секунд: В смысле для каких целей?
не нужно затачивать расширение под wapinet. код форума открыт в принципе (ну я не сразу выкладываю код, но выкладываю) так что желательно чтобы в итоге расширением могли пользоваться все, кто поставит себе форум PunBB Mod Gemorroj
#73.
TLENS
Off
(14)
Moderator
2011.09.02 21:09
Аа
блин, в опере сейчас нет доступа к Notifications API
у виджетов есть доступ, а у расширений нет. печаль.
#75.
TLENS
Off
(14)
Moderator
2011.09.17 00:12
Проверь частые window.open('notification.html','Уведомление','width=300,height=400'); Блокирует?
Просто хром не блокирует можно хоть тысячу создать с расширения
Добавлено спустя 8 минут 3 секунды: Кстати смотри что еще придумал
Отредактировано TLENS (2011.09.17 00:12)
круто придумал) жду код в свн
ай, когда запилят поддержу в расширениях, тогда и буду смотреть
#77.
TLENS
Off
(14)
Moderator
2011.09.17 00:12
Паш я вот не знаю что делать с форумом. ЯНе правильно мы все таки получаем.
Раз уже работаем с авторизацией то надо сделать так как на http://wapinet.ru/forum/search.php?action=show_new
Как ты думаешь?
#79.
TLENS
Off
(14)
Moderator
2011.09.17 00:12
Gemorroj написал:
ай, когда запилят поддержу в расширениях, тогда и буду смотреть
И правильно давай для хрома закончим а потом уже будем подгонять по возможностям для других браузеров.
Gemorroj написал:
а сейчас разве не так?
Сейчас прослеживается только 5 сообщений, по одному для каждого подфорума.
Я думал сделать место мигающей new количество новых. А хотя это только что чет в голову стрельнуло. Просто мне не нравится функция connect стыдно смотреть.
Добавлено спустя 1 минуту 36 секунд: Но в принципе это обдумать надо пока месть наверное оставим эту затею. Я понаблюдаю на минусы сообщу
#80.
TLENS
Off
(14)
Moderator
2011.09.17 01:01
Кстати давно уже жду апи онлайнера! ты сделаешь?
Показывает список авторизованых.
Будет выпадать уведомление кто зашел а кто вышел
в смысле онлайнера? onliner.by чтоли?)
#82.
TLENS
Off
(14)
Moderator
2011.09.17 12:12
)) Ну в смысле апи передающее пользователей которые в онлайне.
по-моему это уже свистелки-переделки. давай на потом это оставим
TLENS, чего с расширением там?)
#85.
TLENS
Off
(14)
Moderator
2011.11.07 04:04
Сейчас в ассемблер и Си загруз.
Короче и на свой сайт забил. Не переделываю.
От ассемблера голова уже кипит, вот еще Си надоесть тогда возьму расширение по ковыряю.
прост у тебя же уже на крине была отправка сообщений из всплывающих окон.
#87.
TLENS
Off
(14)
Moderator
2011.11.07 15:03
Gemorroj написал:
прост у тебя же уже на крине была отправка сообщений из всплывающих окон.
Да его даработать надо правда там наверное на 5 мин. Через часик где то возьмусь.
#89.
TLENS
Off
(14)
Moderator
2011.11.13 20:08
Блин Паша извини забегался. Все запускаю десигнер
#90.
TLENS
Off
(14)
Moderator
2011.11.13 20:08
может через апи сделаем, дабы ответ было проще получить?
#92.
TLENS
Off
(14)
Moderator
2011.11.13 21:09
Голова чет не варит, отошел немного от JS Уже начинаю голову чесать.
На счет апи. В общем я тебе даю пост ты принимаешь и даешь статус и ответ (Все отлично, Авторизуйтесь, темы нет ну и тому подобное.
ок. сейчас попробую по быстрому сделать.
#94.
TLENS
Off
(14)
Moderator
2011.11.13 23:11
??? Это новый метод?
Добавлено спустя 45 секунд: Или что это было?
Добавлено спустя 2 минуты 12 секунд: Я решил не затрагивать notification.js а подключить новый скрипт как тебе такой поход?
тестирую.
вобщем код смотри в свн (последний коммит).
нужно передать setMessage = текст сообщения и setMessageThemeId = id темы в которую пуляем сообщение.
есть проблема с тем, что данные через GET передаются.
и вообще нужно будет переделать API в плане того, что выделить отдельную переменную под имя используемого метода.
т.е. что-то типа method=setMessage
#96.
TLENS
Off
(14)
Moderator
2011.11.13 23:11
Просто я мало информирован о JS и весь мой опыт это расширение для форума wapinet.ru
не понял на счет notification.js
#98.
TLENS
Off
(14)
Moderator
2011.11.13 23:11
Ну я решил создать файл sender.js и в нем содержимое
Код:
var sender; |
function Sender() |
{ |
// и здесь все что относится к отправке ответов |
} |
|
$(document).ready(function () { |
sender = new Sender(); |
|
}); |
И подключать в notification.html
если что потом можно будет просто конструктор перенести и все.
Ведь я уже запутался что к чему и где ты редачил где я.
#99.
TLENS
Off
(14)
Moderator
2011.11.13 23:11
Gemorroj написал:
есть проблема с тем, что данные через GET передаются.
А что с постом?
Gemorroj написал:
и вообще нужно будет переделать API в плане того, что выделить отдельную переменную под имя используемого метода.
И расширение надо переделывать. Идей много по оптимизации и упрощении кода. Но реализовать ...
Да кстати я 10 мин. Искал твой коммит чета не нашел. Потом дошло что не авторизован (все равно не нашел)
большие данные из сообщений просто лучше передавать постом.
делай файл sender.js и начинай его так
Код:
var Sender = function () { |
method: function () { |
alert(1); |
}, |
|
_privateMethod: function () { |
alert(2); |
} |
}; |
весь код должен быть внутри этой переменной Sender раскиданный по методам и переменным.
причем переменные и методы которые не должны быть использованы вне этого класса начинай с _
вот набросал начало
Код:
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> |
немного почитать пришлось
ну, продолжай) только не _lincMessage, а _linkMessage
Добавлено спустя 1 минуту 15 секунд: и с синтаксисом что-то в get textArea, set textArea, get is_active
is_active лучше переименуй в isActive
Gemorroj написал:
ну, продолжай) только не _lincMessage, а _linkMessage
А ну да linck
Gemorroj написал:
и с синтаксисом что-то в get textArea, set textArea, get is_active
ну это я взял с низкоуровневого языка удобная штука, но десигнер об этом не научен. Правда в JS изуродована хорошо. Сам синтаксис getter-ов и setter-ов раздуплял вчера они так называются.
Gemorroj написал:
is_active лучше переименуй в isActive
Попутал языки, в JS так же принято.
TLENS написал:
А ну да linck
link
TLENS написал:
ну это я взял с низкоуровневого языка удобная штука, но десигнер об этом не научен. Правда в JS изуродована хорошо. Сам синтаксис getter-ов и setter-ов раздуплял вчера они так называются.
да, посмотрел в WebStorm, синтаксически верно. Будет клево если кинешь ссылку на доки.
только что почитал про аксессоры и мутаторы это не то.
Я просто помню слушал одного учителя по Cи то там упоминалось про аксессоры. Сейчас толком почитать не получается. В автобусе еду трясет очень.
Кстати на счет апи: раз уж собрался переделывать под методы. Надо будет исправить один метод он мне с самого начала не нравится. Это получение новых сообщений на форуме, т.е. работать с не прочитаными как здесь http://wapinet.ru/forum/search.php?action=show_new
Да я еще интегрирую один js код в твой сайт для общения с расширением через порт. Тестировал все получалось.
Паша чуть погоди у меня проблема с сайтом. Надо срочно скрипт писать. Кстати у тебя есть знакомые хорошие программисты на Cи?
Вчера в гугле просидел, и сегодня с час лазил не могу найти норм программиста!
У меня там проэкт в 500 строк надо просто устранить утечку.
на форумах поспрашивай, думаю быстрее будет
да, правлю баги о которых LEXIN писал. В SVN результаты)
Gemorroj написал:
вобщем код смотри в свн (последний коммит).
Дошло мне где ты писал.
Ты писал в punbb-mod а я искал в wapinet-forum
Просто на punbb-mod ни разу не заходил.
ну, мне кажется логично разделить браузерное расширение и сам форум на 2 разных проекта.
Ну понятное дело. Надо бы и расширение в конце переименовать на punbbMod-extension.
А как там в планах на будущее опера что то планирует?
Просто надо будет альтернативу искать!
Что это за прикол ведь предыдущее сообщение я писал.
Баг или случайно удалил?
ах) фак) чудеса)
я не знаю как так могло получиться)
Добавлено спустя 1 минуту 3 секунды: Gemorroj, а так да, опера планирует) жду когда будет Notifications API.
Gemorroj написал:
ах) фак) чудеса)
я не знаю как так могло получиться)
А я смотрю чет похожее думаю мож я не отправил, уже даж начал думать что ты тип меня опередил. Потом причитался чет не то))
С сайтом решил проблему но такой впадляк. Сегодня на природу еду за город. Мозги прочищу с топором в руках.
TLENS написал:
Сегодня на природу еду за город.
приятно провести время
POFIGISST написал:TLENS написал:
Сегодня на природу еду за город.
приятно провести время
Я не гулять, сегодня поминки в отца два года. Как только так и сразу беру машину и валю от сюда. Не нравится мне холодная природа.
TLENSсоррь,я не знал
В getMessage нужно добавить ThemeId. А то скрипт не понимает куда слать.
Немного дизайн подправил на уведомлениях.
Добавлено спустя 4 минуты 10 секунд:
Вложения
404.jpg
14kb
{305x101}
[
загрузок: 1522]
scrin.jpg
36kb
{309x335}
[
загрузок: 1529]
scrin.jpg
16kb
{309x198}
[
загрузок: 1464]
сделал. смотри SVN punbb-mod. так же в setMessage setMessageThemeId переименована в setMessageTopicId
Смотри.
Пока добавил в адрес setMessageThemeId=1
Напиши погрешности мои. Я спал на ходу уверен их там очень много.
ps. Как крепить к одному коментарию несколько изменений? Как ты делаешь что изменил два файла прокоментировал раз?
комить не файл, а всю папку.
ок, расширение посмотрю.
спс за замечание в сервисе - исправил )
Как то у меня глючит он.
атрибуты title не показывает cursor не меняет, теряет фокус. Не знаю даже чего делать с этим уведомлением.
Паша ну че ты смотрел? я видел пару недостатков таких как нет сдвига курсора в конец текста при нажатии на ник, Я просто хз как оно делается. так же надо остановить счетчик (закрытия) при ответе.
Что там еще надо?
да я смотрел, я может не совсем чего понимаю, но там часть функциолнала не работает. клик по тебе сообщения, например, или кнопка ответить не совсем понятно как работает - она же и textarea показывает, она же и сообщение отправляет. еще че-то было, завтра постараюсь заняться. сегодня другое делал.
Хм.
ну как минимум я в хроме без кукисов фоумных.
Вот наверное и вся проблема.
Я как то не подумал на счет этого
Когда будешь свободен? надо переделать полностью апи. Как ты говорил методами. Мне многое не нравится
Получение форумов как здесь http://wapinet.ru/forum/search.php?action=show_new
1) метод не принимает аргументов возвращает int количество новых.
2) метод принимает int n возвращает массив n не прочитанных array[2] {"status": true, "pid": array[n] {все то же что на getMessage}} сообщений.
т.е. новый метод на непрочитанные темы нужен?
PS/ второй метод должен работать как LIMIT в mysql например с 10, 10
Добавлено спустя 1 минуту 25 секунд: Кстати пока месть я прохожу курсы машинописи и мне запрещается что то писать пока не закончу. Так что прийдется пару недель подождать.
ээ, а смысл в такой разбивке? почему бы не отдать все?
Ну приставь на форуме посещалка пару кусков. Я где то отдыхаю. Тут приехал домой и включил браузер.
А также я допусти забил на все отключил разширение а потом через пару месацев решил зайти. и тут мне перегрузка.
брать 10 последних, например. и все.
Меня очень напрягают функции connect и сопутствующие getForum и saveForum.
connect нужно переписывать.
Да не только тебя.
Просто когда писал функции, не имел понятия об ооп. Да и сейчас не очень. У меня практики по js нет вообще. Да и знаний мало - гуглом пишу.
код закомитил в свн по новому API.
не работает окрытие новых окон из вспывающих оповещений. хз в чем дело.
еще некорректно откывает ссылки, если путь относительный.
Gemorroj написал:
еще некорректно откывает ссылки, если путь относительный.
В опере переходи в расширения пока показывается уведомление, далее нажимаешь на notifikation.html и вкладка консоль. кликнешь по ссылке и оно тебе покажет ошибку если такова есть.
#153.
Gemor
Гость
2011.12.12 01:01
нет ошибок. такое ощущение что сам клик не перехватывается.
Именно по тексту может надо?
оно все глючное я думаю, надо переделать
ну можно отрефакторить. все переделывать-то заманаешься)
Я это описал в теме "Страницы для новестей" этого раздела.
Я когда писал свою СMS и форум к ней легко справился с этой задачей. эсли найду этот форум то могу выложить. Могу помочь с написаним, если нужно обращайтесь
TLENS? ниче нового не накодил..?)
Сегодня доделаю вот только не пойму почему апи возвращает пустую страницу.
Посмотри
Добавлено спустя 5 минут 24 секунды: Напиши мне в аську
у меня сломалась аська и не работает)
а какой конерктно метод в апи проблемный?
вызвал getConfig все ок
Странно так как я его вызывал у меня пусто
Сек посмотрю внимательно
Добавлено спустя 2 минуты 36 секунд: Дай адрес (Пример) как звонишь?
https://code.google.com/p/wapinet-forum/source/browse/trunk/chrome/background.js#7
перешел по адресу http://wapinet.ru/forum/ajax.server.php?informer&method=getConfig
получил конфиг
А нет
Добавлено спустя 37 секунд: Я решил его отрефакторить
Я это описал в теме "Страницы для новестей" этого раздела.
Я когда писал свою СMS и форум к ней легко справился с этой задачей. эсли найду этот форум то могу выложить. Могу помочь с написаним, если нужно обращайтесь
IMPEXINVINE, выкладывай, помогай.
IMPEXINVINE == БОТ
Отредактировано tipsun (2012.03.05 21:09)
Блин сегодня ничего не сделал пару методов отрефачил за 15 мин
Добавлено спустя 3 минуты 19 секунд: Проблемы были в голове))
не ну согласен. но скрипты ведь еще и не идеал. их нужно дорабатыва. я ведь не выкладывал полые сценарии. эти скрипты еще дописывать и дописывать. но для начала вполне хватит, даже больше чем надо. Ну надоже подтолкнуть, помочь человеку или вы не согласны?
Половину могу убрать
Время мало сейчас заннялся делом и за своим сайтром не успеваю следить. На этих выходных попробую закончить релиз.
Что я испривил:
Сделал один главный файл background.html и с ним настроил все порты. Тоесть чтобы подключится к апи с popup надо позвонить в бекгроунд потом с бакгроунда при ответе звоню назад в popup и отправляю результаты. Собственно данные все тоже лежат в бекгроунде и получаются с через порт.
Вот пару методов для в вода в курс блин десигнер 8 истек. Щас лиценцзию возьму
Усовершенствована база форумов.
Код:
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; |
} |
} |
} |
Метод для упрощение работы с апи
Код:
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; |
|
} |
} |
}; |
Ну и собственно пример работы с портами
Код:
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(); |
Страниц:
1 …
16 17 18 Все