Форум » Система построения сайтов » Модули » Сторонние модули » Модуль игры на основе модуля файлов
Открыть Ответить

Модуль игры на основе модуля файлов

1

1

1
23.10.2009 16:49:00 23.10.2009 17:22:38

Модуль игры
Сделал на основе модуля files модуль games (движок open slaed 1.2), но с одним багом разобраться не могу. функция add() отображается несколько неправильно, а именно поля выводятся не по ширине отведенного под центральный модульный блок пространства:

Где примерно может быть ошибка? Код функции:

PHP
function add() {
	global $db, $prefix, $user, $pagetitle, $conf, $conff, $confu, $stop;
	$pagetitle = "".$conf['defis']." "._FILES." ".$conf['defis']." "._ADD."";
	if ((is_user() && $conff['addgames'] == 1) || (!is_user() && $conff['addquest'] == 1)) {
		if (is_user()) {
			$userinfo = getusrinfo();
		}
		head();
		menu(""._ADD."");
		$info = ""._ADDFNOTE."";
		if ($conff['upload'] == 1) $info .= "".sprintf(""._ADDFNOTE2."", str_replace(",", ", ", $conff['typefile']), files_size($conff['max_size']))."";
		$info .= " "._ADDFNOTE3."";
		if ($stop) warning($stop, "", "", 1);
		warning($info, "", "", 2);
		$title = save_text($_POST['title']);
		$cid = intval($_POST['cid']);
		$description = save_text($_POST['description']);
		$bodytext = save_text($_POST['bodytext']);
		$postname = text_filter(substr($_POST['postname'], 0, 25));
		$link = text_filter($_POST['link']);
		$gamesize = text_filter($_POST['gamesize']);
		$setup = text_filter($_POST['setup']);
		$system = text_filter($_POST['system']);
		$language = text_filter($_POST['language']);
		$year = text_filter($_POST['year']);
		$screenshots = $_POST['screenshots'];
		if ($description) preview($title, $description, $bodytext, "", $conf['name']);
		open();
		echo "<form name=\"post\" enctype=\"multipart/form-data\" action=\"index.php?name=".$conf['name']."\" method=\"post\">";
		if (is_user()) {
			echo "<div class=\"left\">"._YOURNAME.":</div><div class=\"center\">".text_filter(substr($user[1], 0, 25))."</div>";
		} else {
			$postname = ($postname) ? $postname : $confu['anonym'];
			echo "<div class=\"left\">"._YOURNAME.":</div><div class=\"center\"><input type=\"text\" name=\"postname\" value=\"".$postname."\" size=\"65\" class=\"".$conf['style']."\"></div>";
		}
		echo "<div class=\"left\">"._FTITLE.":</div><div class=\"center\"><input type=\"text\" name=\"title\" value=\"".$title."\" maxlength=\"100\" size=\"65\" class=\"".$conf['style']."\"></div>"
		."<div class=\"left\">"._CATEGORY.":</div><div class=\"center\"><select name=\"cid\" class=\"".$conf['style']."\">".getcat($conf['name'], $cid)."</select></div>"
		."<div class=\"left\">"._YEAR.":</div><div class=\"center\"><input type=\"text\" name=\"year\" value=\"".$year."\" size=\"65\" class=\"".$conf['style']."\"></div>"
		."<div class=\"left\">"._TEXT.":</div><div class=\"center\">".textarea("1", "description", $description, $conf['name'], "5")."</div>"
		."<div class=\"left\">"._ENDTEXT.":</div><div class=\"center\">".textarea("2", "bodytext", $bodytext, $conf['name'], "15")."</div>"
		."<div class=\"left\">"._SETYP.":</div><div class=\"center\"><textarea name=\"setup\" cols=\"15\" rows=\"5\" width=\"400\" class=\"".$conf['style']."\">".$setup."</textarea></div>"
		."<div class=\"left\">"._SISTEM.":</div><div class=\"center\"><textarea name=\"system\" cols=\"15\" rows=\"5\" width=\"400\" class=\"".$conf['style']."\">".$system."</textarea></div>"
		."<div class=\"left\">"._PEREVOD.":</div><div class=\"center\"><input type=\"text\" name=\"language\" value=\"".$language."\" maxlength=\"100\" size=\"65\" class=\"".$conf['style']."\"></div>";
		if ($conff['upload'] == 1) echo "<div class=\"left\">"._FILE_USER.":</div><div class=\"center\"><input name=\"userfile\" type=\"file\" size=\"65\" class=\"".$conf['style']."\"></div>";
		echo "<div class=\"left\">"._FILELINK.":</div><div class=\"center\"><input type=\"text\" name=\"filelink\" value=\"".$filelink."\" maxlength=\"100\" value=\"http://\" size=\"65\" class=\"".$conf['style']."\"></div>";
			$i = 0;
	while ($i < $conff['screenshots']) {
		$a = $i + 1;
		$display = ($i != 0 && $screenshots[$i] == "") ? "style=\"display:none;\"" : "";
		echo "<div id=\"med".$i."\" ".$display.">"
		."<div id=\"med".$a."-title\" class=\"left\" title=\""._ADD."\"><img src=\"".img_find("all/plus")."\" border=\"0\" align=\"center\" alt=\""._ADD."\" title=\""._ADD."\"> "._SCREEN." - $a:</div><div class=\"center\"><input type=\"text\" name=\"screenshots[]\" value=\"".text_filter($screenshots[$i])."\" size=\"65\" class=\"".$conf['style']."\"></div>"
		."</div><script language=\"JavaScript\" type=\"text/javascript\">var med = new SwitchCont('med".$i."', '');</script>";
		$i++;
	}
		echo "<div class=\"left\">"._SIZENOTEG.":</div><div class=\"center\"><input type=\"text\" name=\"gamesize\" value=\"".$gamesize."\" size=\"65\" class=\"".$conf['style']."\"></div>"
		."<div class=\"left\">"._LINK.":</div><div class=\"center\"><input type=\"text\" name=\"link\" value=\"".$link."\" size=\"65\" class=\"".$conf['style']."\"></div>"
		."".captcha_random().""
		."<div class=\"button\"><select name=\"posttype\">"
		."<option value=\"preview\">"._PREVIEW."</option>"
		."<option value=\"save\">"._SEND."</option></select>"
		."<input type=\"hidden\" name=\"op\" value=\"send\">"
		." <input type=\"submit\" value=\""._OK."\" class=\"fbutton\"></div></form>";
		close();
		foot();
	} else {
		Header("Location: index.php?name=".$conf['name']."");
	}
}
Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
2
23.10.2009 17:13:52

Откройте файл: templates/paradise/css/engine.css

Добавьте класс для своего модуля в строку: .account, .auto_links, .contact, .faq, .files, .jokes, .links, .media, .money,

или замените её на: .games, .account, .auto_links, .contact, .faq, .files, .jokes, .links, .media, .money,


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

SLAED CMS
SLAED CMS
3.24

3.24

3
23.10.2009 17:33:47

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

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
4
24.10.2009 21:04:00 29.10.2009 21:07:54

возникла еще одна проблема. при использовании поля textarea и ВВ-редактора при каждом предварительном просмотре добавляются теги </br> на месте, в котором реально есть код br. При этом реально </br> предстваляет собой &lt;br /&gt; . При использовании редактора Spaw2 такого не наблюдается.
Php-код поля:

PHP
."<div class=\"left\">"._SYSTEM.":</div><div class=\"center\"><textarea name=\"system\" cols=\"15\" rows=\"5\" class=\"admin\">".$system."</textarea></div>";

Вывод переменной ".$system.":

Системные требования: Минимальные требования:<br /><br /><br />
ОС: Windows XP <br /><br /><br />
CPU: Intel Pentium D / AMD Athlon64 X2

Вид поля:
Вид поля

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
5
25.10.2009 00:59:17

сайт бы еще посмотреть

supercop
supercop
3.32

3.32

6
28.10.2009 18:17:25

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

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
7
29.10.2009 16:12:19 29.10.2009 16:12:52

typou, элементарно

Код
$system = str_replace('<br />', '', $system);
sam07
sam07
3.91

3.91

8
01.11.2009 21:25:06

Проблема решилась изменением функции
$system = save_text($_POST['system']);
на $system = $_POST['system'];
Очевидно save_text сохранял хтмл-коды как обычный текст, "дописывая" его каждый раз.

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
9
01.11.2009 21:38:25

Еще одна проблема. В оригинальном каталоге файлов после меню модуля отображается следующее:

Общее количество: 1 файлов в 1 категориях

В копии модуля функция частично не работает:

Общее количество: игр в 1 категориях

В файле function/function.php функция добавлена:

PHP
# Format categories
if ($ccontent) {
	if ($mod == "files") {
list($pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_files WHERE cid IN ($catid) AND date <= now() AND status!='0'"));
$in = _INF;
} elseif ($mod == "games") {
				list($pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_games WHERE catid IN ($catid) AND time <= now() AND status!='0'"));
				$in = _ING; }

Надо еще что-то дописать, или где-то ошибка?

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
10
11.11.2009 13:46:08

sam07, спасибо, твоя функция сильно помогла. ну а по поводу предыдщего поста никто ничего не скажет? не уже ли никто не копировал стандартный модуль файлов?

Версия системы
Open SLAED 1.*
typou
typou
11
11.11.2009 15:14:16

запрос посмотри внимательнее, скорее всего в нем грабли зарыты

BugsTracker
BugsTracker
3.85

3.85

12
12.11.2009 19:23:31 12.11.2009 19:27:28

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

PHP
$db->sql_query("UPDATE ".$prefix."_users SET user_add=user_add+1 WHERE user_id='$postid'");

Все бы хорошо, но как теперь сделать, чтобы при удалении статьи эта еденичка изымалась?
Функция удаления статьи:

PHP
case "games_delete":
list($url) = $db->sql_fetchrow($db->sql_query("SELECT url FROM ".$prefix."_games WHERE lid=".$id.""));
if (file_exists($url)) unlink($url);
$db->sql_query("DELETE FROM ".$prefix."_comment WHERE cid='".$id."' AND modul='games'");
$db->sql_query("DELETE FROM ".$prefix."_games WHERE lid='".$id."'");
referer("".$admin_file.".php?op=games");
break;

Можно ли в нее как-то доставить переменную $uid ну или запросить ее с базы данных, с тем чтобы затем произвести удаление:

PHP
$db->sql_query("UPDATE ".$prefix."_users SET user_add=user_add-1 WHERE user_id='$uid'");

?

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
13
12.11.2009 19:49:04

Смотрел я запрос, ничего интересного в нем нет

запрос не кинокомедия и в нем самое интересное, чтоб он выбирал необходимое количество записей, ваш такое делает, проверяли?
а с новой идеей надо думать так: сделай еще поле для того, чтобы хранить, uid добавившего юзера, ну и если надо, то поле, в котором количество баллов за эту новость, соответственно это же кол-во баллов идет в поле user_add, потом, если удаляем, то минусуем это кол-во у пользователя с id, которое записано в поле uid.
Это так, сходу придумалось, мож кто еще чего посоветует.

BugsTracker
BugsTracker
3.85

3.85

14
12.11.2009 20:37:20

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

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

сделай еще поле для того, чтобы хранить, uid добавившего юзера, ну и если надо, то поле, в котором количество баллов за эту новость, соответственно это же кол-во баллов идет в поле user_add, потом, если удаляем, то минусуем это кол-во у пользователя с id, которое записано в поле uid.

ты меня не совсем понял. я сделал поле user_add в таблице users. поле uid в таблице модуля существует, в нем id пользователя, добавившего статью. так вот, при добавлении статьи, пользователю прописывается user_add+1, при этом id юзера равно uid, записываемого в таблицу модуля. но это все понятно и просто, я про это не спрашивал. меня интересует как конкретно достать этот uid из таблицы модуля в функции games_delete. модуль - копия стандартного files для open slaed.

Версия системы
Open SLAED 1.*
Версия PHP
PHP 5
Сервер
Локальный сервер
typou
typou
15
12.11.2009 21:28:49 12.11.2009 21:29:10

перед удалением делаешь

PHP
$result = $db->sql_query("select uid from $prefix"._comment WHERE cid='".$id."' AND modul='games'");
list($uid) = $db->sql_fetchrow($result);
$db->sql_query("UPDATE ".$prefix."_users SET user_add=user_add-1 WHERE user_id='$uid'");

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

BugsTracker
BugsTracker
3.85

3.85

Открыть Ответить
Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код

Предпросмотр