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

[+] 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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