Forums / National / Russian / PFS-модификации

Boss
#1 2009-06-22 13:50
Для возможности полноценной модификации PFS на мой взгляд не хватает одного хука. Речь о файле pfs.inc.php. Если посмотреть его код в конце, то можно увидеть условие:
if ($standalone)
{
	if($c1 == 'newpage' && $c2 == 'newpageurl' || $c1 == 'update' && $c2 == 'rpageurl')
	{
		$addthumb = "'".$cfg['th_dir_user']."' + gfile";
		$addpix = 'gfile';
		$addfile = "'".$cfg['pfs_dir_user']."' + gfile";
	}
	else
	{
		$addthumb = "'[img=".$cfg['pfs_dir_user']."'+gfile+']".$cfg['th_dir_user']."'+gfile+'[/img]'";
		$addpix = "'[img]'+gfile+'[/img]'";
		$addfile = "'[url=".$cfg['pfs_dir_user']."'+gfile+']'+gfile+'[/url]'";
	}
	$pfs_header1 = $cfg['doctype']."<html><head>
<title>".$cfg['maintitle']."</title>".sed_htmlmetas().sed_javascript()."
<script type=\"text/javascript\">
//<![CDATA[
function help(rcode,c1,c2) {
	window.open('plug.php?h='+rcode+'&amp;c1='+c1+'&amp;c2='+c2,'Help','toolbar=0,location=0,directories=0,menuBar=0,resizable=0,scrollbars=yes,width=480,height=512,left=512,top=16');
}
function addthumb(gfile,c1,c2) {
	insertText(opener.document, '$c1', '$c2', $addthumb);
	window.close();
}
function addpix(gfile,c1,c2) {
	insertText(opener.document, '$c1', '$c2', $addpix);
	window.close();
}
function addfile(gfile,c1,c2) {
	insertText(opener.document, '$c1', '$c2', $addfile);
	window.close();
}
function picture(url,sx,sy) {
	window.open('pfs.php?m=view&amp;id='+url,'Picture','toolbar=0,location=0,directories=0,menuBar=0,resizable=1,scrollbars=yes,width='+sx+',height='+sy+',left=0,top=0');
}
//]]>
</script>
";

	$pfs_header2 = "</head><body>";
	$pfs_footer = "</body></html>";

	sed_sendheaders();

	$mskin = sed_skinfile(array('pfs', 'standalone'));
	$t = new XTemplate($mskin);

	$t->assign(array(
		"PFS_STANDALONE_HEADER1" => $pfs_header1,
		"PFS_STANDALONE_HEADER2" => $pfs_header2,
		"PFS_STANDALONE_FOOTER" => $pfs_footer,
	));

	$t->parse("MAIN.STANDALONE_HEADER");
	$t->parse("MAIN.STANDALONE_FOOTER");

	$t-> assign(array(
		"PFS_TITLE" => $title,
		"PFS_BODY" => $body
	));

	$t->parse("MAIN");
	$t->out("MAIN");
}
else
{
	require_once $cfg['system_dir'] . '/header.php';

	$t = new XTemplate(sed_skinfile('pfs'));

	$t-> assign(array(
		"PFS_TITLE" => $title,
		"PFS_BODY" => $body
	));

	/* === Hook === */
	$extp = sed_getextplugins('pfs.tags');
	if (is_array($extp))
	{ foreach($extp as $k => $pl) { include_once($cfg['plugins_dir'].'/'.$pl['pl_code'].'/'.$pl['pl_file'].'.php'); } }
	/* ===== */

	$t->parse("MAIN");
	$t->out("MAIN");

	require_once $cfg['system_dir'] . '/footer.php';
}

В зависимости от вызова осуществляется формирование интерфейса или в общем скине сайта, или в отдельном окне. Однако, как можно заметить, хук присутствует лишь для полноценного вывода в скине сайта. А как же оконный режим? Здесь тоже нужен свой хук!

А вообще, чтобы облегчить жизнь, лучше сразу еще разнести в разные скины.
Пусть в первом случае это будет:
$t = new XTemplate("skins/".$skin."/pfs.small.tpl");
а во втором:
$t = new XTemplate("skins/".$skin."/pfs.tpl");
This post was edited by Boss (2009-06-22 13:56, 14 years ago)