# HG changeset patch # User foxel # Date 1262168748 -21600 # Node ID 0e05a7ed020605661cc3dcd5bb81ec196053c555 # Parent fe2836c510cfdb184364045298dd7109b4c66bde модификация процесса обработки redefined.vis для корректного переопределения блоков из частей стиля, отличных от common Для указания переопределяемой части нужно вставить строку "<>' перед блоками, фактически переопределяющими эту часть стиля diff -r fe2836c510cf -r 0e05a7ed0206 QFox2.md5 --- a/QFox2.md5 Mon Dec 28 17:27:30 2009 +0600 +++ b/QFox2.md5 Wed Dec 30 16:25:48 2009 +0600 @@ -17,7 +17,7 @@ 46b7e94d411d843ea0240e067f6c53d5 kernel2/QF2_services.php fbb868231380f53d44908e433a0fd439 kernel2/QF2_sess.php 18bfe0a124d426ef047aca980f23e9cd kernel2/QF2_tar.php -653770c691a34847f8b02da2b92446d4 kernel2/QF2_vis.php +bf189c45b93961a4c6c773feda3b03f6 kernel2/QF2_vis.php 216f7ef0f383e5d56fdab9e65e7f93cd kernel2/QF_kernel2.php 96831fd122fe8a3ddf9dfc8563729ab3 kernel2/chars/cp037.chr b2f6c332aaf70db2501afeba2c75bb5d kernel2/chars/cp037.ltt @@ -144,7 +144,7 @@ 989489290036483052d960d6ec7f72c2 kernel2/chars/x-mac-roman.ltt fb9375c8f8c5fc54000ba23e31f6ce2d kernel2/chars/zdingbat.chr 8f80cc35ff7453a2be7fa926f31383e3 QFox2/as_data.dat -967c9d4fa4eee23875292a487472afd1 QFox2/Fox2.php +17321f67e2996b444142bc8f6ce58a96 QFox2/Fox2.php 53600c837c8fb0c7bf938a68d2e8d650 QFox2/Fox2_adm.php 5c24b3ffa072e02cb45a11d69a917f34 QFox2/Fox2_cfgsets.php 64569999e61fcffd3d2f824bce1c1806 QFox2/Fox2_cms.php diff -r fe2836c510cf -r 0e05a7ed0206 QFox2/Fox2.php --- a/QFox2/Fox2.php Mon Dec 28 17:27:30 2009 +0600 +++ b/QFox2/Fox2.php Wed Dec 30 16:25:48 2009 +0600 @@ -35,6 +35,7 @@ { var $URL_temps; var $URL_domain = null; + var $VIS_redefs = Array(); var $err_traced = Array(); function Fox2() @@ -143,7 +144,7 @@ $QF->Events->Set_On_Event('VIS_PreParse', Array(&$this, 'On_VIS_Prep') ); $QF->Events->Set_On_Event('EJS_PreParse', Array(&$this, 'On_EJS_Prep') ); if ($QF->Config->Get('vis_redefined', 'fox2')) - $QF->Events->Set_On_Event('VIS_module_start', Array(&$this, '_VISUserMods_Preload') ); + $QF->Events->Set_On_Event('VIS_RawParse', Array(&$this, '_VISUserMods_Add') ); // running any autoruns from packages if ($ar_datas = $QF->DSets->Get_DSet('fox_autoruns')) @@ -705,9 +706,54 @@ $indata = preg_replace_callback('#\{(?>(F|R)?URL:((?:\w+|\"[^\"]+\"|\|)+))\}#',Array(&$this, '_VISParse_URL_CB'),$indata); } - function _VISUserMods_Preload() + function _VISUserMods_Add(&$indata, $style, $part) + { + global $QF; + + if (!isset($this->VIS_redefs[$style]) && !$this->_VISUserMods_Preload($style)) + return; + + if (isset($this->VIS_redefs[$style]) && isset($this->VIS_redefs[$style][$part])) + $indata.= $this->VIS_redefs[$style][$part]; + } + + /*function _VISUserMods_Preload() { global $QF; $QF->VIS->Load_Templates('user_redefined'); + } */ + + function _VISUserMods_Preload($style) + { global $QF; + if (!$QF->Check_Module('VIS')) + return false; + + $style = strtolower($style); + if (isset($this->VIS_redefs[$style])) + return true; + + $cachename = QF_KERNEL_VIS_VPREFIX.$style.'_redefs'; + $cfile = QF_STYLES_DIR.$style.'/redefined.vis'; + if ($data = $QF->Cache->Get($cachename)) + $this->VIS_redefs[$style] = $data; + elseif ($data = qf_file_get_contents($cfile)) + { preg_match_all('#\<\\>|[^\<]+|\<#', $data, $struct, PREG_SET_ORDER); + $data = Array(); + $p_name = QF_KERNEL_VIS_COMMON; + foreach ($struct as $part) + { + if ($part[1]) + $p_name = strtolower($part[1]); + elseif (isset($data[$p_name])) + $data[$p_name].= $part[0]; + else + $data[$p_name] = $part[0]; + } + $QF->Cache->Set($cachename, $data); + $this->VIS_redefs[$style] = $data; + return true; + } + else + return false; } function _VISParse_URL_CB($matches) diff -r fe2836c510cf -r 0e05a7ed0206 install/content.sql --- a/install/content.sql Mon Dec 28 17:27:30 2009 +0600 +++ b/install/content.sql Wed Dec 30 16:25:48 2009 +0600 @@ -1391,19 +1391,19 @@ REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) VALUES('fox_ajax_scripts', 'qf2', 'ptree_getpost', 'a:2:{s:6:\"module\";s:11:\"PTree_incls\";s:6:\"method\";s:11:\"AJX_getpost\";}', '0', ''); REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'qf2', 'qf2', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'qf2_base', 'qf2_base', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'qf2_adm', 'qf2_adm', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'qf2_multiuser', 'qf2_multiuser', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'google_adds', 'google_adds', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'gallery', 'gallery', 'PA.091228.0841', '1', ''); -REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'music_player', 'music_player', 'PA.091228.0841', '1', ''); + VALUES('dev_rev_info', 'qf2', 'qf2', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'qf2_base', 'qf2_base', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'qf2_adm', 'qf2_adm', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'qf2_multiuser', 'qf2_multiuser', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'google_adds', 'google_adds', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'gallery', 'gallery', 'PA.091230.1005', '1', ''); +REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) + VALUES('dev_rev_info', 'music_player', 'music_player', 'PA.091230.1005', '1', ''); REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) VALUES('package_dbases', 'qf2_multiuser', 'qf2_multiuser', 'a:1:{i:0;s:9:\"users_rel\";}', '0', ''); REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) @@ -1453,7 +1453,7 @@ REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) VALUES('fox_index_dps', 'blogs', 'blogs', 'Blogs root', '1', ''); REPLACE INTO `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) - VALUES('dev_rev_info', 'blogs', 'blogs', 'PA.091228.0841', '1', ''); + VALUES('dev_rev_info', 'blogs', 'blogs', 'PA.091230.1005', '1', ''); # Data content for {DBKEY}config_sets diff -r fe2836c510cf -r 0e05a7ed0206 kernel2/QF2_vis.php --- a/kernel2/QF2_vis.php Mon Dec 28 17:27:30 2009 +0600 +++ b/kernel2/QF2_vis.php Wed Dec 30 16:25:48 2009 +0600 @@ -356,6 +356,7 @@ // not used for now - not needed //if ($add_Consts = qf_file_load_datafile(QF_STCNTS_DIR.$part.'.cnt', true)) // $this->Consts += $add_Consts; + $QF->Events->Call_Event_Ref('VIS_RawParse', $indata, $style, $part); $indata = str_replace('{ST_IMGS}', QF_ST_IMGS_DIR.$style, $indata); $indata = str_replace('{IMGS}', QF_IMAGES_DIR, $indata); @@ -364,7 +365,7 @@ $indata = preg_replace_callback('#\{(?>L_((?:\w+|\"[^\"]+\"|\|)+))\}#',Array(&$this, '_Templ_Lang_CB'),$indata); $indata = preg_replace('#\{(?>CONST:([\w\|]+))\}#e','(isset(\$this->Templ_Consts("$1"))) ? \$this->Templ_Consts("$1") : ""',$indata); - $QF->Events->Call_Event_Ref('VIS_PreParse', $indata); + $QF->Events->Call_Event_Ref('VIS_PreParse', $indata, $style, $part); preg_match_all("#<<\+ '(?>(\w+))'>>(.*?)<<- '\\1'>>#s", $indata, $blocks);