forum.coppermine-gallery.net
Support => Русский (Russian) => Language Specific Support => cpg1.5.x Русский (Russian) => Topic started by: Cubatao on April 07, 2010, 08:38:18 am
-
Ребят, я понимаю, что пишу не там, где надо, но плодить темы тоже не вижу смысла. мне просто совет нужен. Поставил плагин в виде форума для галереи (Forum (v2)). А при его работе вылезает ошибка. Вот и хочу узнать, может кто из здесь присутствующих уже ставил и проверял или надо спрашивать на основных форумах? Если так, то я не шибко владею английским и возникает ещё вопрос, сможете ли мне помочь в написании там о моей проблеме? В общем не ругайтесь сильно, подскажите как дальше быть.
Да и ещё. Я очень хочу, чтобы у меня в галерее был форум, а русского перевода нет. В принципе мог бы заняться вопросом русификации на досуге. Имеет смысл? Или уже есть русик?
::)
-
Ребят, я понимаю, что пишу не там, где надо, но плодить темы тоже не вижу смысла. мне просто совет нужен. Поставил плагин в виде форума для галереи (Forum (v2)). А при его работе вылезает ошибка. Вот и хочу узнать, может кто из здесь присутствующих уже ставил и проверял или надо спрашивать на основных форумах? Если так, то я не шибко владею английским и возникает ещё вопрос, сможете ли мне помочь в написании там о моей проблеме? В общем не ругайтесь сильно, подскажите как дальше быть.
Да и ещё. Я очень хочу, чтобы у меня в галерее был форум, а русского перевода нет. В принципе мог бы заняться вопросом русификации на досуге. Имеет смысл? Или уже есть русик?
::)
1ых, когда Вы пишите о любом плагине, пожалуйста, всегда приводите ссылку на тему данного плагина.
И ссылку на сообщения откуда вы этот плагин скачивали.
2ых, а зачем Вам плагин в виде форума, если можно взять тот же форум phpBB3 и использовать его?
3ых, если этот плагин лёгкий, то может быть его и имеет смысл использовать.
4ых, на этом форум есть поиск (http://forum.coppermine-gallery.net/index.php?action=search). И он работает.
5ых, и вот если в этом поиске выбрать только русский разделы, отметь опцию, чтобы искать только в заголовках тем, а потом ввести в поиск слову "форум", то ссылка номер №3 это будет тема:
Русский перевод к форуму cpgforum
http://forum.coppermine-gallery.net/index.php/topic,62366.0.html
6ых, отделяю ваше сообщение и свой ответ :)
-
Признаю свою ошибку, был не прав, искал, действительно плохо. Нашёл только в англоязычном форуме. Исправлюсь.
Ссылки на тему нет, потому как здесь (http://coppermine-gallery.net/plugins.php?cpg_version=5) он не выделен ссылкой (Forum (v2)). Видимо в разработке или как... phpBB не хочу использовать по причине того, что мне такого функционала не надо и мосты тоже наводить не надо. ::) Вот и решил использовать этот.
Суть вопроса такова. При создании темы показывает такую ошибку:
Array ( [0] => Error Number: 1364 [1] => Field 'poster_email' doesn't have a default value [2] => INSERT INTO cpg15x_fr_messages (icon, subject, body, poster_time, poster_id, poster_name, poster_ip, smileys_enabled, topic_id, board_id) VALUES ('icon1', 'Заголовок', 'Текст', 1270709596, '1', 'USER', '91.189.54.100', 1, 6, 1) )
При этом ошибка пишется простым текстом на белой странице.
Второй косяк заключается в том, что иконка темы не прорисовывается. Пишется изображение и всё. Смотрел исходный код страницы, получается, что не присваивает имя. То есть есть только .gif и всё, а имени нет.
-
Суть вопроса такова. При создании темы показывает такую ошибку:
Array ( [0] => Error Number: 1364 [1] => Field 'poster_email' doesn't have a default value [2] => INSERT INTO cpg15x_fr_messages (icon, subject, body, poster_time, poster_id, poster_name, poster_ip, smileys_enabled, topic_id, board_id) VALUES ('icon1', 'Заголовок', 'Текст', 1270709596, '1', 'USER', '91.189.54.100', 1, 6, 1) )
При этом ошибка пишется простым текстом на белой странице.
Удалите из базы данных из таблицы CPG_fr_messages строку poster_email.
Она нигде не используется.
Второй косяк заключается в том, что иконка темы не прорисовывается. Пишется изображение и всё. Смотрел исходный код страницы, получается, что не присваивает имя. То есть есть только .gif и всё, а имени нет.
Мне устанавливать плагин не хочется, скажу Вам честно.
Поэтому, если бы Вы написали тот кусок кода, о котором идёт речь :)
В файле cpg1.5.x_plugin_forum_v2.1-1.zip\forum\forum\sources\board.php
указан путь
$newtopic['icon'] = 'plugins/forum/forum/html/images/post/'.$first_message['icon'].'.gif';
Этот код?
Короче, смотрите...
Вот код вставки новой темы:
cpg1.5.x_plugin_forum_v2.1-1.zip\forum\forum\sources\board.php
function newtopic() {
include(BASE_DIR.'include'.DS.'smilies.inc.php');
include(BASE_DIR.'include'.DS.'mailer.inc.php');
$vars = array();$errors = array();
$authorizer = check_model::getInstance();
$vars['board_id'] = $this->validate->get->getInt('id');
if (!$authorizer->is_board_id($vars['board_id'])) {
cpg_die(ERROR, Lang::item('error.wrong_board_id'), __FILE__, __LINE__);
}
if (!$authorizer->can_create_topic($vars['board_id'])) {
cpg_die(ERROR, Lang::item('error.perm_denied'), __FILE__, __LINE__);
}
$vars['nagavitor'] = $this->forum->get_nagavitor();
$vars['icons'] = $this->forum->get_icons();
$data = array('icon' => 'icon1');
if ($this->validate->post->keyExists('submit')) {
$data = array(
'icon' => $this->validate->post->getRaw('icon'),
'subject' => $this->validate->post->getEscaped('subject'),
'body' => $this->validate->post->getEscaped('body'),
'poster_time' => time(),
'poster_id' => USER_ID,
'poster_name' => USER_NAME,
'poster_ip' => Config::item('hdr_ip'),
'smileys_enabled' => 1,
);
if ($data['subject'] == '') $errors[] = Lang::item('error.empty_subject');
if ($data['icon'] == '') $errors[] = Lang::item('error.no_msg_icon');
if ($data['body'] == '') $errors[] = Lang::item('error.empty_body');
if (strlen($data['body']) > Config::item('fr_msg_max_size') && Config::item('fr_msg_max_size')) {
$data['body'] = substr($data['body'], 0, Config::item('fr_msg_max_size'));
}
if (count($errors) == 0) {
if ($authorizer->double_post()) {
cpg_die(ERROR, Lang::item('error.already_post'), __FILE__, __LINE__);
} else {
$topic_id = $this->forum->insert_topic($vars['board_id'], $data);
// to-do: send notify email
$users = $this->forum->get_notify_user($vars['board_id'], '');
foreach ($users as $user) {
if ($user['user_id'] == USER_ID) continue;
$user = $this->forum->get_user_data($user['user_id'], 'user_email');
// prepare email
$email_subject = Lang::item('board.board_new_topic'). $data['subject'];
$email_body = sprintf(
Lang::item('board.notify_email'),
$data['subject'],
Config::item('fr_prefix_url').forum::link('topic', '', $topic_id),
Config::item('fr_prefix_url').forum::link('topic', '', $topic_id),
Config::item('fr_prefix_url').forum::link('board', 'notify', $vars['board_id']),
Config::item('fr_prefix_url').forum::link('board', 'notify', $vars['board_id']),
Config::item('fr_title')
);
// send mail
cpg_mail($user['user_email'], $email_subject, $email_body, 'text/html', Config::item('fr_title'), Config::item('gallery_admin_email'));
// set send = 0
$this->forum->set_board_notify($vars['board_id'], 0, $user['user_id']);
}
// set notify ?
if ($this->validate->post->getInt('notify') === 1) {
$this->forum->set_topic_notify($topic_id, $this->validate->post->getInt('notify'));
}
forum::message(Lang::item('common.message'), sprintf(Lang::item('topic.new_topic_success'), $data['subject']), 'forum.php?c=topic&id='.$topic_id);
}
}
}
$vars['errors'] = $errors;
$vars['form'] = $data;
$this->view->render('board/newtopic', $vars);
}
Иконка добавляется в переменную $data тут:
if ($this->validate->post->keyExists('submit')) {
$data = array(
'icon' => $this->validate->post->getRaw('icon'),
cpg1.5.x_plugin_forum_v2.1-1.zip\forum\forum\models\Forum.php
Вот продолжение команды:
function insert_topic($board_id, $data) {
$topic_data = array(
'is_sticky' => 0,
'board_id' => $board_id,
'first_msg_id' => 0,
'last_msg_id' => 0,
'started_member_id' => USER_ID,
'updated_member_id' => USER_ID,
'poll_id' => 0,
'replies' => 0,
'views' => 0,
'locked' => 0,
);
$this->db->insert(Config::item('TABLE_FR_TOPICS'), $topic_data);
$topic_id = $this->db->insert_id();
$data['topic_id'] = $topic_id;
$data['board_id'] = $board_id;
$this->db->insert(Config::item('TABLE_FR_MESSAGES'), $data);
$msg_id = $this->db->insert_id();
$this->db->update(Config::item('TABLE_FR_TOPICS'), array('first_msg_id' => $msg_id, 'last_msg_id' => $msg_id), "topic_id='{$topic_id}'");
$this->db->update(Config::item('TABLE_FR_BOARDS'), array('last_msg_id' => $msg_id, 'updated_msg_id' => $msg_id), "board_id='{$board_id}'");
$this->update_topic_stats($topic_id);
$this->update_board_stats($board_id);
return $topic_id;
}
В последнем коде после первой строки
function insert_topic($board_id, $data) {
добавьте код:
print_r($data);
exit;
И попробуйте создать тему тестовую.
И смотрите на вывод array, указан там номер иконки или нет.
-
Makc666, огромное спасибо уже на этих ответах. Я не хочу никого напрягать, но если бы я разбирался в SQL и PHP как вы, например, то меня бы здесь не было. ;)
poster_email удалил, теперь за следуещее значение цепляется.
Array ( [0] => Error Number: 1364 [1] => Field '[b]modified_name[/b]' doesn't have a default value [2] => INSERT INTO cpg15x_fr_messages (icon, subject, body, poster_time, poster_id, poster_name, poster_ip, smileys_enabled, topic_id, board_id) VALUES ('icon1', 'Тема', 'Текст', 1270737223, '1', 'User', '109.174.2.5', 1, 7, 1) )
При этом, я пытался в poster_email выставить значение по умолчанию (пришлось тип сменить на varchar), тогда ошибка вылазит так же по следующему элементу, то есть по modified_name.
Если имеет значение, то
System Windows NT K7-V 6.1 build 7600
PHP Version 5.2.12
Версия сервера SQL: 5.0.67-community-nt
Версия MySQL-клиента: 5.0.51a
По иконке... А в файле \forum\forum\helpers\forum_helper.php вот этот код не иконку "создаёт"?
function generate_message_icons($name, $icons = array(), $default = 'icon1') {
$html .= "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">".PHP_EOL;
$html .= "<tr>".PHP_EOL;
$count = 0;
foreach ($icons as $icon) {
$count++;
if ($default == $icon['filename'])
$html .= "<td><input type=\"radio\" name=\"[$name]\" value=\"[$icon['filename']]\" checked=\"checked\"> <img src=\"plugins/forum/forum/html/images/post/[$icon['filename']].gif\" title=\"{$icon['title']}\" alt=\"\" />".PHP_EOL;
else
$html .= "<td><input type=\"radio\" name=\"{$name}\" value=\"{$icon['filename']}\"> <img src=\"plugins/forum/forum/html/images/post/{$icon['filename']}.gif\" title=\"{$icon['title']}\" alt=\"\" /></td>".PHP_EOL;
if ($count % 16 == 0 && $count != 1) $html .= "</tr><tr>".PHP_EOL;
}
$html .= "</tr>".PHP_EOL;
$html .= "</table>".PHP_EOL;
return $html;
}
А кусок кода я имел ввиду из того, что можно в Опере посмотреть выбрав в меню "Исходный код". Но путь этот.
<td><img border="0" src="plugins/forum/forum/html/images/post/.gif" /></td>
То что вы посоветовали сейчас попробую реализовать.
-
Итак, то, что вы предложили выполнил.
Array ( [icon] => icon7 [subject] => ТЕСТОВАЯ [body] => ТЕКСТ [poster_time] => 1270739054 [poster_id] => 1 [poster_name] => USER [poster_ip] => 109.***.*.* [smileys_enabled] => 1 )
Насколько я понимаю, имя файла иконки присваивается правильно? Тогда почему в HTML-файл идет только .gif?
-
Makc666 огромное спасибо за помощь!! Но всё решилось иначе. Надо было раньше Гуглом воспользоваться. Собственно вот (http://forum.php-myadmin.ru/viewtopic.php?id=927) решение. Мне помогло. Причём и с иконкой тоже вопросов не возникает. 8) Правда меня смущает такое положение дел. Больше это ничем не грозит? ???
-
Возникла другая маленькая проблема. При нажатии кнопки Enter (при переводе строки) в тексте сообщения зачем-то подставляет символы \r\n. Помогите, пожалуйста, решить этот вопрос.
-
Итак, то, что вы предложили выполнил.
Array ( [icon] => icon7 [subject] => ТЕСТОВАЯ [body] => ТЕКСТ [poster_time] => 1270739054 [poster_id] => 1 [poster_name] => USER [poster_ip] => 109.***.*.* [smileys_enabled] => 1 )
Насколько я понимаю, имя файла иконки присваивается правильно? Тогда почему в HTML-файл идет только .gif?
Это значит значения формируются правильно.
Дальше по коду данные значения заносятся в базу данных.
Соответственно, если сообщения появляется в форуме, то вам нужно заглянуть в базу данных и посмотреть в таблице для данного сообщения, есть ли там в поле иконки данное значение icon7.
-
Makc666 огромное спасибо за помощь!! Но всё решилось иначе. Надо было раньше Гуглом воспользоваться. Собственно вот (http://forum.php-myadmin.ru/viewtopic.php?id=927) решение. Мне помогло. Причём и с иконкой тоже вопросов не возникает. 8) Правда меня смущает такое положение дел. Больше это ничем не грозит? ???
Я, если честно, не стал вчитываться в это решение.
Но то, что вы сделали, в корне не верно.
Так делать не нужно.
Поле `modified_name` используется при редактировании сообщения. Значит оно нужно.
Смотрите.
Я Вам объясняю.
Когда Вы устанавливали плагин форума, вы создавали базу данных.
Одна из частей базы данных - это таблица сообщений.
Она имеет такую структуру:
CREATE TABLE IF NOT EXISTS `CPG_fr_messages` (
`msg_id` int(10) NOT NULL auto_increment,
`topic_id` mediumint(8) NOT NULL default '0',
`board_id` smallint(5) NOT NULL default '0',
`poster_time` int(10) NOT NULL default '0',
`poster_id` mediumint(8) NOT NULL default '0',
`modified_id` int(10) NOT NULL default '0',
`subject` tinytext NOT NULL,
`poster_name` tinytext NOT NULL,
`poster_email` tinytext NOT NULL,
`poster_ip` tinytext NOT NULL,
`smileys_enabled` tinyint(4) NOT NULL default '1',
`modified_time` int(10) NOT NULL default '0',
`modified_name` tinytext NOT NULL,
`body` text NOT NULL,
`icon` varchar(16) NOT NULL default 'xx',
PRIMARY KEY (`msg_id`)
) TYPE=MyISAM;
Видите, к примеру, у полей:
`poster_id` mediumint(8) NOT NULL default '0',
`modified_id` int(10) NOT NULL default '0',
есть значение по умолчанию default '0'.
А у полей:
`modified_name` tinytext NOT NULL,
`body` text NOT NULL,
нет такого значения.
Далее...
Как я приводил код выше в своих сообщениях, то при написании сообщения в базу данных с помощью строки:
$this->db->insert(Config::item('TABLE_FR_MESSAGES'), $data);
передаются значения из массива $data.
Данный массив содержит значения:
$data = array(
'icon' => $this->validate->post->getRaw('icon'),
'subject' => $this->validate->post->getEscaped('subject'),
'body' => $this->validate->post->getEscaped('body'),
'poster_time' => time(),
'poster_id' => USER_ID,
'poster_name' => USER_NAME,
'poster_ip' => Config::item('hdr_ip'),
'smileys_enabled' => 1,
);
Если из кода структуры базы данных (первый блок кода в этом сообщении) мы выкинем все строчки с параметром default '*****'
+
строку
`msg_id` int(10) NOT NULL auto_increment,
(т.к. auto_increment - это увеличение значения поля на +1 каждый раз при его добавлении),
то на мы получим:
`subject` tinytext NOT NULL,
`poster_name` tinytext NOT NULL,
`poster_email` tinytext NOT NULL,
`poster_ip` tinytext NOT NULL,
`modified_name` tinytext NOT NULL,
`body` text NOT NULL,
Если вы сопоставите названия данных полей с названиями тех полей, которые заносятся через массив $data, то вы увидите, что в строчках выше названия полей:
`poster_email` tinytext NOT NULL,
`modified_name` tinytext NOT NULL,
нигде не фигурируют.
Далее вы должны понимать, что когда какой-то скрипт даёт команду базе данных заполнить какую-то строку с полями, то база данных должна знать, чем их заполнять.
При этом в строке нельзя часть полей заполнить, а часть нет.
Если база данных не получает от скрипта значения, то она смотрит, а нет ли у неё указаний заполнять данное поле значением по умолчанию.
У некоторых наших полей такое указание есть - это default '0'.
А вот у поля `modified_name` такого значения нет.
И при этом скрипт никакие значения базе данных тоже не передал.
Поэтому вам база данных говорит о том, что у неё нет значения по умолчанию, а данные ей не прислали.
Поле `poster_email` мы удалили, потому что я не смог найти нигде в скрипте данные, которые бы использовали бы это поле.
С полем `modified_name` нужен другой подход.
Вам нужно было всего лишь в phpMyAdmin задать данному полю значение по умолчанию '0'.
-
Возникла другая маленькая проблема. При нажатии кнопки Enter (при переводе строки) в тексте сообщения зачем-то подставляет символы \r\n. Помогите, пожалуйста, решить этот вопрос.
Это больше похоже на проблемы браузера.
Попробуйте другой браузер.
-
Вам нужно было всего лишь в phpMyAdmin задать данному полю значение по умолчанию '0'.
Я пробовал, но для значений типа TEXT и подобных СКУЛ этого делать не хочет. А там заявлено именно текстовое значение.
SQL-запрос:
ALTER TABLE `cpg15x_fr_messages` CHANGE `modified_name` `modified_name` TINYTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'
Ответ MySQL:
#1101 - BLOB/TEXT column 'modified_name' can't have a default value
То же самое писал он мне и с полем 'poster_email'.
Про проблему с дополнительными символами... И в Опере, и IE эти символы есть. Я так понял это символы переноса строки. Потму что, если писать всё одной строкой, то всё в порядке, только перевёл строку, сразу они.
Может тогда заменить на другй тип. Но тут я даже не представляю на какой...
-
Ребята, с символами вопрос ещё открыт!!! Хелп ми, плиз. :'(
Есть ещё вопрос. Настроил форум так, чтобы гости не могли его читать. Соответственно, при попытке чтения темы предлагается залогиниться. Ввожу всё, что надо, получаюсь залогиненым, но выдаётся ошибка следующего содержания:
Выбранный альбом/фото не существует! То есть он не открывает ту тему, с которой я логинился. Подскажите, пожалуйста, как и возможно ли это исправить?
-
Я пробовал, но для значений типа TEXT и подобных СКУЛ этого делать не хочет. А там заявлено именно текстовое значение.
SQL-запрос:
ALTER TABLE `cpg15x_fr_messages` CHANGE `modified_name` `modified_name` TINYTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'
Ответ MySQL:
#1101 - BLOB/TEXT column 'modified_name' can't have a default value
То же самое писал он мне и с полем 'poster_email'.
Хм, согласен с MySQL, это я ошибся. По умолчанию текст правда нельзя задать :(
Если тогда выставление для этих полей в свойствах флага NULL тоже не помагает, значит нужно дописывать/изменять сам скрипт.
-
Ребята, с символами вопрос ещё открыт!!! Хелп ми, плиз. :'(
Есть ещё вопрос.
Я, к сожалению, чтобы дальше тема сильно не развивалась дальше, вынужден сказать следующее. Вам нужно обращаться к разработчикам данного плагина.
Исправлять ошибки другого продукта, которые имеет косвенно отношение к Coppermine, да ещё в русском разделе этого форума - это бред и в корне не верно.
Ошибки нужно доносить до разработчиков, а не до русскоязычного населения. У меня такой возможности, доносить всё и вся до разработчиков, нет.
-
А если разработчикам нет дела до этой ошибки?
Почитал форум разработчика, там 4 человека просят разобраться с \n\r, разработчик "вежливо" отказал, сказал что у него всё работает хорошо :)
Так что придётся решать русскоязычному населению :) у меня таже проблема :(