QuickFox 2

changeset 34:0e05a7ed0206

модификация процесса обработки redefined.vis
для корректного переопределения блоков из частей стиля, отличных от common
Для указания переопределяемой части нужно вставить строку "<<part '{имя части}'>>' перед блоками, фактически переопределяющими эту часть стиля
author foxel
date Wed Dec 30 16:25:48 2009 +0600 (8 months ago)
parents fe2836c510cf
children 1d100abd8030
files QFox2.md5 QFox2/Fox2.php install/content.sql kernel2/QF2_vis.php
line diff
     1.1 --- a/QFox2.md5	Mon Dec 28 17:27:30 2009 +0600
     1.2 +++ b/QFox2.md5	Wed Dec 30 16:25:48 2009 +0600
     1.3 @@ -17,7 +17,7 @@
     1.4  46b7e94d411d843ea0240e067f6c53d5 kernel2/QF2_services.php
     1.5  fbb868231380f53d44908e433a0fd439 kernel2/QF2_sess.php
     1.6  18bfe0a124d426ef047aca980f23e9cd kernel2/QF2_tar.php
     1.7 -653770c691a34847f8b02da2b92446d4 kernel2/QF2_vis.php
     1.8 +bf189c45b93961a4c6c773feda3b03f6 kernel2/QF2_vis.php
     1.9  216f7ef0f383e5d56fdab9e65e7f93cd kernel2/QF_kernel2.php
    1.10  96831fd122fe8a3ddf9dfc8563729ab3 kernel2/chars/cp037.chr
    1.11  b2f6c332aaf70db2501afeba2c75bb5d kernel2/chars/cp037.ltt
    1.12 @@ -144,7 +144,7 @@
    1.13  989489290036483052d960d6ec7f72c2 kernel2/chars/x-mac-roman.ltt
    1.14  fb9375c8f8c5fc54000ba23e31f6ce2d kernel2/chars/zdingbat.chr
    1.15  8f80cc35ff7453a2be7fa926f31383e3 QFox2/as_data.dat
    1.16 -967c9d4fa4eee23875292a487472afd1 QFox2/Fox2.php
    1.17 +17321f67e2996b444142bc8f6ce58a96 QFox2/Fox2.php
    1.18  53600c837c8fb0c7bf938a68d2e8d650 QFox2/Fox2_adm.php
    1.19  5c24b3ffa072e02cb45a11d69a917f34 QFox2/Fox2_cfgsets.php
    1.20  64569999e61fcffd3d2f824bce1c1806 QFox2/Fox2_cms.php
     2.1 --- a/QFox2/Fox2.php	Mon Dec 28 17:27:30 2009 +0600
     2.2 +++ b/QFox2/Fox2.php	Wed Dec 30 16:25:48 2009 +0600
     2.3 @@ -35,6 +35,7 @@
     2.4  {
     2.5      var $URL_temps;
     2.6      var $URL_domain = null;
     2.7 +    var $VIS_redefs = Array();
     2.8      var $err_traced = Array();
     2.9  
    2.10      function Fox2()
    2.11 @@ -143,7 +144,7 @@
    2.12          $QF->Events->Set_On_Event('VIS_PreParse',  Array(&$this, 'On_VIS_Prep') );
    2.13          $QF->Events->Set_On_Event('EJS_PreParse',  Array(&$this, 'On_EJS_Prep') );
    2.14          if ($QF->Config->Get('vis_redefined', 'fox2'))
    2.15 -            $QF->Events->Set_On_Event('VIS_module_start',  Array(&$this, '_VISUserMods_Preload') );
    2.16 +            $QF->Events->Set_On_Event('VIS_RawParse',  Array(&$this, '_VISUserMods_Add') );
    2.17  
    2.18          // running any autoruns from packages
    2.19          if ($ar_datas = $QF->DSets->Get_DSet('fox_autoruns'))
    2.20 @@ -705,9 +706,54 @@
    2.21          $indata = preg_replace_callback('#\{(?>(F|R)?URL:((?:\w+|\"[^\"]+\"|\|)+))\}#',Array(&$this, '_VISParse_URL_CB'),$indata);
    2.22      }
    2.23  
    2.24 -    function _VISUserMods_Preload()
    2.25 +    function _VISUserMods_Add(&$indata, $style, $part)
    2.26 +    {
    2.27 +        global $QF;
    2.28 +
    2.29 +        if (!isset($this->VIS_redefs[$style]) && !$this->_VISUserMods_Preload($style))
    2.30 +            return;
    2.31 +
    2.32 +        if (isset($this->VIS_redefs[$style]) && isset($this->VIS_redefs[$style][$part]))
    2.33 +            $indata.= $this->VIS_redefs[$style][$part];
    2.34 +    }
    2.35 +
    2.36 +    /*function _VISUserMods_Preload()
    2.37      {
    2.38         global $QF;
    2.39          $QF->VIS->Load_Templates('user_redefined');
    2.40 +    } */
    2.41 +
    2.42 +    function _VISUserMods_Preload($style)
    2.43 +    {
    2.44         global $QF;
    2.45 +        if (!$QF->Check_Module('VIS'))
    2.46 +            return false;
    2.47 +
    2.48 +        $style = strtolower($style);
    2.49 +        if (isset($this->VIS_redefs[$style]))
    2.50 +            return true;
    2.51 +
    2.52 +        $cachename = QF_KERNEL_VIS_VPREFIX.$style.'_redefs';
    2.53 +        $cfile = QF_STYLES_DIR.$style.'/redefined.vis';
    2.54 +        if ($data = $QF->Cache->Get($cachename))
    2.55 +            $this->VIS_redefs[$style] = $data;
    2.56 +        elseif ($data = qf_file_get_contents($cfile))
    2.57 +        {
    2.58             preg_match_all('#\<\<part \'(\w+)\'\>\>|[^\<]+|\<#', $data, $struct, PREG_SET_ORDER);
    2.59 +            $data = Array();
    2.60 +            $p_name = QF_KERNEL_VIS_COMMON;
    2.61 +            foreach ($struct as $part)
    2.62 +            {
    2.63 +                if ($part[1])
    2.64 +                    $p_name = strtolower($part[1]);
    2.65 +                elseif (isset($data[$p_name]))
    2.66 +                    $data[$p_name].= $part[0];
    2.67 +                else
    2.68 +                    $data[$p_name] = $part[0];
    2.69 +            }
    2.70 +            $QF->Cache->Set($cachename, $data);
    2.71 +            $this->VIS_redefs[$style] = $data;
    2.72 +            return true;
    2.73 +        }
    2.74 +        else
    2.75 +            return false;
    2.76      }
    2.77  
    2.78      function _VISParse_URL_CB($matches)
     3.1 --- a/install/content.sql	Mon Dec 28 17:27:30 2009 +0600
     3.2 +++ b/install/content.sql	Wed Dec 30 16:25:48 2009 +0600
     3.3 @@ -1391,19 +1391,19 @@
     3.4  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
     3.5      VALUES('fox_ajax_scripts', 'qf2', 'ptree_getpost', 'a:2:{s:6:\"module\";s:11:\"PTree_incls\";s:6:\"method\";s:11:\"AJX_getpost\";}', '0', '');
     3.6  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
     3.7 -    VALUES('dev_rev_info', 'qf2', 'qf2', 'PA.091228.0841', '1', '');
     3.8 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
     3.9 -    VALUES('dev_rev_info', 'qf2_base', 'qf2_base', 'PA.091228.0841', '1', '');
    3.10 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.11 -    VALUES('dev_rev_info', 'qf2_adm', 'qf2_adm', 'PA.091228.0841', '1', '');
    3.12 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.13 -    VALUES('dev_rev_info', 'qf2_multiuser', 'qf2_multiuser', 'PA.091228.0841', '1', '');
    3.14 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.15 -    VALUES('dev_rev_info', 'google_adds', 'google_adds', 'PA.091228.0841', '1', '');
    3.16 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.17 -    VALUES('dev_rev_info', 'gallery', 'gallery', 'PA.091228.0841', '1', '');
    3.18 -REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.19 -    VALUES('dev_rev_info', 'music_player', 'music_player', 'PA.091228.0841', '1', '');
    3.20 +    VALUES('dev_rev_info', 'qf2', 'qf2', 'PA.091230.1005', '1', '');
    3.21 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.22 +    VALUES('dev_rev_info', 'qf2_base', 'qf2_base', 'PA.091230.1005', '1', '');
    3.23 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.24 +    VALUES('dev_rev_info', 'qf2_adm', 'qf2_adm', 'PA.091230.1005', '1', '');
    3.25 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.26 +    VALUES('dev_rev_info', 'qf2_multiuser', 'qf2_multiuser', 'PA.091230.1005', '1', '');
    3.27 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.28 +    VALUES('dev_rev_info', 'google_adds', 'google_adds', 'PA.091230.1005', '1', '');
    3.29 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.30 +    VALUES('dev_rev_info', 'gallery', 'gallery', 'PA.091230.1005', '1', '');
    3.31 +REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.32 +    VALUES('dev_rev_info', 'music_player', 'music_player', 'PA.091230.1005', '1', '');
    3.33  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.34      VALUES('package_dbases', 'qf2_multiuser', 'qf2_multiuser', 'a:1:{i:0;s:9:\"users_rel\";}', '0', '');
    3.35  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.36 @@ -1453,7 +1453,7 @@
    3.37  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.38      VALUES('fox_index_dps', 'blogs', 'blogs', 'Blogs root', '1', '');
    3.39  REPLACE INTO  `{DBKEY}datasets` (`set_id`, `package`, `data_id`, `data`, `scalar`, `lparse_sufx`) 
    3.40 -    VALUES('dev_rev_info', 'blogs', 'blogs', 'PA.091228.0841', '1', '');
    3.41 +    VALUES('dev_rev_info', 'blogs', 'blogs', 'PA.091230.1005', '1', '');
    3.42  
    3.43  
    3.44  # Data content for {DBKEY}config_sets 
     4.1 --- a/kernel2/QF2_vis.php	Mon Dec 28 17:27:30 2009 +0600
     4.2 +++ b/kernel2/QF2_vis.php	Wed Dec 30 16:25:48 2009 +0600
     4.3 @@ -356,6 +356,7 @@
     4.4                      // not used for now - not needed
     4.5                      //if ($add_Consts = qf_file_load_datafile(QF_STCNTS_DIR.$part.'.cnt', true))
     4.6                      //    $this->Consts += $add_Consts;
     4.7 +                    $QF->Events->Call_Event_Ref('VIS_RawParse', $indata, $style, $part);
     4.8  
     4.9                      $indata = str_replace('{ST_IMGS}', QF_ST_IMGS_DIR.$style, $indata);
    4.10                      $indata = str_replace('{IMGS}', QF_IMAGES_DIR, $indata);
    4.11 @@ -364,7 +365,7 @@
    4.12                      $indata = preg_replace_callback('#\{(?>L_((?:\w+|\"[^\"]+\"|\|)+))\}#',Array(&$this, '_Templ_Lang_CB'),$indata);
    4.13                      $indata = preg_replace('#\{(?>CONST:([\w\|]+))\}#e','(isset(\$this->Templ_Consts("$1"))) ? \$this->Templ_Consts("$1") : ""',$indata);
    4.14  
    4.15 -                    $QF->Events->Call_Event_Ref('VIS_PreParse', $indata);
    4.16 +                    $QF->Events->Call_Event_Ref('VIS_PreParse', $indata, $style, $part);
    4.17  
    4.18                      preg_match_all("#<<\+ '(?>(\w+))'>>(.*?)<<- '\\1'>>#s", $indata, $blocks);
    4.19