Перейти к контенту

[+] 2.0pb7 - элементы страницы


Рекомендуемые сообщения

Дополнение для mJournal v2.0pb7: Элементы страницы - Добавление фоновых картинок в оформление дневников

Автор: Arhar

 

 

1. выполнить запрос:

ALTER TABLE ibf_jmembers ADD j_bg_images text NOT NULL default''

 

2. в файле setup.php

 

найти

			case '14':
				$this->page_files();
				break;

добавить после

			case '16':
				$this->page_bgimages();
				break;

найти

					  array('10', $ibforums->lang['j_p_design']));

заменить на

					  array('10', $ibforums->lang['j_p_design']),
				  array('16', "элементы страницы"));

найти

}
?>

добавить перед

	function page_bgimages()
{
	global $ibforums, $journal, $DB;

	if (!$ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_design'])
	{
		$this->output['PAGES'] = $journal->skin->html['setup']->page_nodesign();
	}
	else
	{
		require JOURNAL_ROOT.'misc/post_functions.php';
		$post_func = new post_functions();
		if ($post_func->allow_upload())
		{
			$max_filesize = $ibforums->vars['j_photo_max'] * 1024;
			$this->output['PAGES'] .= <<<EOF
<form action='{$journal->base_url}' name='bgimages' method="post" enctype='multipart/form-data'>
<input type='hidden' name='auth_key' value='{$this->md5_check}' />
<input type='hidden' name='user' value='{$journal->users['id']}' />
<input type='hidden' name='doset' value='33' />
<input type='hidden' name='MAX_FILE_SIZE' value='$max_filesize' />
<table class="tableborder" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class="mainhead" colspan="2">Загрузка элементов фона страницы</td>
</tr>
<tr>
  <td class='row'>Фон страницы</td>
  <td class='row'><input class='input' type='file' name='body_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Фиксировать фон?</td>
  <td class='row'><select class="select" name="body_bg_fixed" >
<option value="0" selected="selected">Нет
<option value="1">Да
</select></td>
</tr>
<tr>
  <td class='row'>Название дневника</td>
  <td class='row'><input class='input' type='file' name='titlehead_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Верхняя панель</td>
  <td class='row'><input class='input' type='file' name='toppanel_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Дата записи</td>
  <td class='row'><input class='input' type='file' name='postdate_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Панель пользователя - Заголовок</td>
  <td class='row'><input class='input' type='file' name='mainhead_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Фон логотипа</td>
  <td class='row'><input class='input' type='file' name='logobg_bg' value='' size='40' /></td>
</tr>
<tr>
  <td class='row'>Оставить прежние элементы?</td>
  <td class='row'><select class="select" name="notchange" >
<option value="0" selected="selected">Нет
<option value="1">Да
</select></td>
</tr>
<tr>
<td class='row' colspan="2"><p><input class='button' type='submit' name='bgimages' value='Загрузить' /></p></td>
</tr>				  
</table>
</form>
<br /> 
EOF;

		}
		else
		{
			$this->output['PAGES'] = $journal->skin->html['setup']->page_nodesign();
		}
	}

	$this->nav_settings('16');

	$journal->title = "Настройки дизайна :: ".$journal->users['name']." :: ";
		$journal->nav[] = "<a href='".$journal->base_url."user=".$journal->users['id']."'>".$journal->users['name']."</a>";
	$journal->nav[] = "Настройки дизайна";
}

3. в файле dosetup.php

 

найти

			case '23':
				$this->do_delete();
				break;

добавить после

			case '33':
				$this->do_bgimages();
				break;

найти

}
?>

добавить перед

	function do_bgimages()
{
	global $ibforums, $DB, $journal;
	if (!$ibforums->cache['group_cache'][$journal->users['mgroup']]['g_j_design'])
	{
		$journal->err_journal($ibforums->lang['j_err_header']);
	}
	require JOURNAL_ROOT.'misc/post_functions.php';
	$post_func = new post_functions();
	if ($post_func->allow_upload())
	{
		require JOURNAL_ROOT."misc/image_lib.php";
		$image_lib = new image_lib();
		$image_lib->max_file_size = $ibforums->vars['j_photo_max'] * 1024;	
		if ($_FILES['body_bg']['name'])
		{
			$image_lib->name = "j_body_bg_".$journal->users['id'];
			if ($image_lib->upload('body_bg'))
			{
				$name['body_bg'][0] = $image_lib->name;
				$name['body_bg'][1] = $ibforums->input['body_bg_fixed'];
			}
			else
			{
				$journal->err_journal($image_lib->error." (для фона страницы)");
			}
		}
		if ($_FILES['titlehead_bg']['name'])
		{
			$image_lib->name = "j_titlehead_bg_".$journal->users['id'];
			if ($image_lib->upload('titlehead_bg'))
			{
				$name['titlehead_bg'] = $image_lib->name;
			}
			else
			{
				$journal->err_journal($image_lib->error." (для названия дневника)");
			}
		}
		if ($_FILES['toppanel_bg']['name'])
		{
			$image_lib->name = "j_toppanel_bg_".$journal->users['id'];
			if ($image_lib->upload('toppanel_bg'))
			{
				$name['toppanel_bg'] = $image_lib->name;
			}
			else
			{
				$journal->err_journal($image_lib->error." (для верхней панели)");
			}
		}
		if ($_FILES['postdate_bg']['name'])
		{
			$image_lib->name = "j_postdate_bg_".$journal->users['id'];
			if ($image_lib->upload('postdate_bg'))
			{
				$name['postdate_bg'] = $image_lib->name;
			}
			else
			{
				$journal->err_journal($image_lib->error." (для даты записи)");
			}
		}
		if ($_FILES['mainhead_bg']['name'])
		{
			$image_lib->name = "j_mainhead_bg_".$journal->users['id'];
			if ($image_lib->upload('mainhead_bg'))
			{
				$name['mainhead_bg'] = $image_lib->name;
			}
			else
			{
				$journal->err_journal($image_lib->error." (для заголовка)");
			}
		}
		if ($_FILES['logobg_bg']['name'])
		{
			$image_lib->name = "j_logobg_bg_".$journal->users['id'];
			if ($image_lib->upload('logobg_bg'))
			{
				$name['logobg_bg'] = $image_lib->name;
			}
			else
			{
				$journal->err_journal($image_lib->error." (для фона логотипа)");
			}
		}			
		if (is_array($name))
		{
			if($ibforums->input['notchange'])
			{
				$prevarr = unserialize(stripslashes($journal->users['j_bg_images']));
				if (!is_array($prevarr)) $prevarr=array();
				$resarr = array_merge($name,$prevarr);
			}
			else
			{
				$resarr = $name;
			}

			$images = addslashes(serialize($resarr));

			$DB->query("UPDATE ibf_jmembers SET j_bg_images='".$images."' WHERE id=".$journal->users['id']);
			$journal->redirect_screen("Элементы обновлены",$journal->base_url."user=".$journal->users['id']."&set=16");
		}
		elseif(!$ibforums->input['notchange'])
		{
			$prevarr = unserialize(stripslashes($journal->users['j_bg_images']));
			if (is_array($prevarr))
			{
				foreach($prevarr as $k => $v)
				{
					@unlink($ibforums->vars['j_upload_dir']."/".$v);
				}
			}
			$DB->query("UPDATE ibf_jmembers SET j_bg_images='' WHERE id=".$journal->users['id']);
			$journal->redirect_screen("Элементы обновлены",$journal->base_url."user=".$journal->users['id']."&set=16");
		}			
		else
		{
			$journal->redirect_screen("Элементы не обновлены",$journal->base_url."user=".$journal->users['id']."&set=16");
		}
	}
}

4. в файле journal.php

 

найти

		$template = $this->skin->html['global']->wrapper($output);

добавить перед

		$bgimarr = unserialize(stripslashes($this->users['j_bg_images']));
	if (is_array($bgimarr))
	{
		$output['CSS'] .= "<style type='text/css'>";
		foreach ($bgimarr as $k => $v)
		{
			preg_match('/^(.*?)_bg$/',$k,$vofk);
			if ($vofk[1]=='body')
			{
				//print_r($v);
				if ($v[1])
				{
					$fixed = "background-repeat: no-repeat;\nbackground-attachment: fixed;\nbackground-position: center\n";
				}
				$output['CSS'] .= "\nbody\n{\nbackground-image: url(".$ibforums->vars['j_upload_url']."/".$v[0].");\n".$fixed."}\n";
			}
			else
			{
				$output['CSS'] .= "\n.".$vofk[1]."\n{\nbackground-image: url(".$ibforums->vars['j_upload_url']."/".$v.");\n}\n";
			}
		}
		$output['CSS'] .= "</style>";
	}

Ссылка на комментарий
Поделиться на других сайтах

найти

array('10', $ibforums->lang['j_p_design']),

 

добавить после

array('16', "элементы страницы")

 

Я так понимаю нужен ; в конце.... поставил... но что-то не появился этот пункт

Ссылка на комментарий
Поделиться на других сайтах

Сделать так:

найти

					  array('10', $ibforums->lang['j_p_design']));

заменить на

					  array('10', $ibforums->lang['j_p_design']),
				  array('16', "элементы страницы"));

 

Выше исправил.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
Если ткнуться в закрытый дневник, где установлен свой фон, то этот фон виден. Кто-нибудь это уже исправил?
Ссылка на комментарий
Поделиться на других сайтах

Если ткнуться в закрытый дневник, где установлен свой фон, то этот фон виден. Кто-нибудь это уже исправил?

 

решение для бекграундов ./journal/journal.php

  function err_journal($err_message)
{
	global $ibforums;

	// set to default style

	$this->skin->set_default_css();
	$this->skin->clear_skin_list();
	$this->skin->load_template();
	$this->users['j_css_custom'] = 0;
	$this->users['id'] = 0;
	$this->users['j_bg_images'] = '';

 

строку $this->users['j_bg_images'] = ''; можно не добавлять, если без нее заработает, т.е. она не обязательная

Ссылка на комментарий
Поделиться на других сайтах

replicant, спасибо!

 

Еще одна проблема выискалась - не все фоны грузятся - только маленькие. Посмотрела ограничение - 1024, а у меня на меньшее выдает "Неверный формат загружаемого файла. (для фона страницы)". :D Причем формат стандартный - jpg. Загружаются только файлы в пределах 640пкс по бОльшей стороне, а это просто несерьезно. Где искать ограничения?

Изменено пользователем Allure
Ссылка на комментарий
Поделиться на других сайтах

Если внимательно прочитать код мода, то можно дважды увидеть вот такие строки $max_filesize = $ibforums->vars['j_photo_max'] * 1024;

 

Это обозначает, что размер загружаемой картинки для фонов равен максимальному размеру фотографии, задаваемому в админке.

 

Т.е. если у тебя Максимальный размер фотографии в админке дневников установлен 100 килобайт, то максимальный размер файла для бекграунда тоже будет 100 килобайт.

 

Экспериментально попробуй заменить множитель 1024 на что-то большее. Вроде бы должно помочь. Т.е. 1024 -> 4096 - увеличит в 4 раза максимально допустимый размер для фонов.

Ссылка на комментарий
Поделиться на других сайтах

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

 

а что с этим делать, народ????

Ссылка на комментарий
Поделиться на других сайтах

replicant, так вот фокус-то в том, что я уже это все пробовала. :D

 

Увеличила размер фото в админке - помогло. Спасибо!

Изменено пользователем Allure
Ссылка на комментарий
Поделиться на других сайтах

URISOFT,

Всем привет! у меня такая проблема: не знаю как добавить запрос к базе данных, т.е. к определённому префиксу, у меня это inpb_. Я создаю файл следующего вида:

<?
$c=mysql_connect("hostname", "username", "password");
echo mysql_select_db("mysql", $c);

$stroka = "ALTER TABLE ibf_jmembers ADD j_bg_images text NOT NULL default''";
$result = mysql_query($stroka);
echo $result;
?>

и запускаю его, в ответ выводится "1". Что как я понимаю "истина", т.е. выполнилось успешно, но в префикс не добавилось, а ток в саму БД(тут "mysql"). Помогите, please!..

 

И ещё проблемка: в файле journal.php не могу найти строку;

 

       $template = $this->skin->html['global']->wrapper($output);

 

Может это из-за того что я не смог добавить в префикс базы данных? У меня файл journal.php находится в корне сайта(почему пишу, да может у кого-то по-другому, т.к. версия IBP 2.2.2, а mjournal 2.1beta)

 

Заранее спасибо!..

Ссылка на комментарий
Поделиться на других сайтах

запрос делается через админку - SQL утилиту - внизу окошко для запроса

для лично вас запрос:

ALTER TABLE inpb_jmembers ADD j_bg_images text NOT NULL default''

 

второе

файл

ПАПКА ФОРУМА/journal/journal.php

Ссылка на комментарий
Поделиться на других сайтах

Большое спасибо Вам за помощь при запросе! :D

второе

файл

ПАПКА ФОРУМА/journal/journal.php

 

Что касается journal/journal.php то у меня этого файла НЕТ! Может потому что версия 2.1beta?

Ссылка на комментарий
Поделиться на других сайтах

все попрятано

./journal/includes/class_journal.php

Т.е. надо вставлять мне не journal/journal.php а в /journal/includes/class_journal.php ?

или мне создать файл journal/journal.php с таким же содержимым как /journal/includes/class_journal.php ???

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

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

 

На скорую руку исправила так:

в dosetup.php было так

			if (is_array($name))
		{
			if($ibforums->input['notchange'])
			{
				$prevarr = unserialize(stripslashes($journal->users['j_bg_images']));
				if (!is_array($prevarr)) $prevarr=array();
				$resarr = array_merge($name,$prevarr);
			}
			else
			{
				$resarr = $name;
			}

стало так

		if (is_array($name))
	{
		$prevarr = unserialize(stripslashes($journal->users['j_bg_images']));

		if($ibforums->input['notchange'])
		{
			if (!is_array($prevarr)) $prevarr=array();
			$resarr = array_merge($name,$prevarr);
		}
		else
		{
			$resarr = $name;

			if (is_array($prevarr))
			{
				$prevarr = array_diff($prevarr, $resarr);
				foreach($prevarr as $k => $v)
				{
					if (is_array($v)) $v = $v[0];
					@unlink($ibforums->vars['j_upload_dir'].$v);
				}
			}
		}

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

 

Поторопилась. Еще одна правка: перед вторым @unlink тоже вписать

if (is_array($v)) $v = $v[0];

(фон страницы вообще никогда не стирался)

Изменено пользователем l-k
Ссылка на комментарий
Поделиться на других сайтах

Как раз то что доктор прописал, а то было так ....

 

...

Прим: по ходу работы в моде "элементы страниц" замечена следующая фича ... удалить файл бекграунда не удается, хотя все остальные файлы удаляются из настроек дневника нормально. Копать не было времени, но особенно это и не напрягает. Также для правильного вычисления размера каталога аттачей, если он больше 2Гб, необходимо убрать в файле ad_journal_stats.php INTVAL в строке $this->base->std->size_format($attach_sum['cnt'])));

 

Опробуем в действии. :D

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

при попытке загрузить свой фон, вот что пишет..

 

 

 

mySQL query error: UPDATE ibf_jmembers SET j_bg_images='a:1:{s:7:\"body_bg\";a:2:{i:0;s:15:\"j_body_bg_1.gif\";i:1;s:1:\"0\";}}' WHERE id=1

 

SQL error: Unknown column 'j_bg_images' in 'field list'

SQL error code:

Date: 4.10.2007, 16:16

 

как исправить?

Ссылка на комментарий
Поделиться на других сайтах

Первый пункт инструкции не сделали.
Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

не могу ни чего поменять, ни фон, ни панель, ни логотип,

пишется

Ошибка при загрузке файла.

Что делать, помогите плиз!!!!

 

 

****************************

Сори, глупость сморозила, сама разобралась

Изменено пользователем mallinka
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

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

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.