Пример #1
0
 /**
  * 实际结果就是更新APF->boundable_resources变量,将用到的资源文件(整合)路径信息
  * 记录到boundable_resources中。
  * @todo 非递归实现
  * @param string $class 文件名<->资源文件名与页面类名是一一对应的
  * @param string $ext 文件扩展名
  * @param boolen $is_page 是否为页面类
  */
 protected function fetch_boundable_resources($class, $ext, $is_page = false)
 {
     if ($is_page) {
         if ($pos = strpos($class, "(")) {
             $class = substr($class, 0, $pos);
         }
         apf_require_page($class);
         $path = "page/";
         $class = $class . "Page";
     } else {
         // 载入组件类
         apf_require_component($class);
         $path = "component/";
         $class = $class . "Component";
     }
     if (!class_exists($class)) {
         return false;
     }
     // 获取组件(页面)使用的组件列表
     eval("\$list = {$class}" . "::use_component();");
     foreach ($list as $item) {
         // 载入所有子组件用到的资源文件
         $this->fetch_boundable_resources($item, $ext);
     }
     // 获取用到的资源文件相对路径
     if ($ext == 'js') {
         eval("\$list = {$class}::use_boundable_javascripts();");
     } elseif ($ext == 'css') {
         eval("\$list = {$class}::use_boundable_styles();");
     } else {
         trigger_error("Unknown extention \"{$ext}\"", E_USER_WARNING);
         $list = array();
     }
     $apf = APF::get_instance();
     foreach ($list as $item) {
         // 获取资源文件的绝对路径
         $apf->prcess_resource_url($path, $item, $this->boundable_resources);
     }
     return true;
 }
Пример #2
0
 protected function fetch_boundable_resources($class, $ext, $is_page = false)
 {
     if ($is_page) {
         apf_require_page($class);
         $path = "page/";
         $class = $class . "Page";
     } else {
         apf_require_component($class);
         $path = "component/";
         $class = $class . "Component";
     }
     if (!class_exists($class)) {
         return false;
     }
     eval("\$list = {$class}" . "::use_component();");
     foreach ($list as $item) {
         $this->fetch_boundable_resources($item, $ext);
     }
     if ($ext == 'js') {
         eval("\$list = {$class}::use_boundable_javascripts();");
     } elseif ($ext == 'css') {
         eval("\$list = {$class}::use_boundable_styles();");
     } else {
         trigger_error("Unknown extention \"{$ext}\"", E_USER_WARNING);
         $list = array();
     }
     $apf = APF::get_instance();
     foreach ($list as $item) {
         $apf->prcess_resource_url($path, $item, $this->boundable_resources);
     }
     return true;
     //if (!$this->include_resource_file($item[0])) {
     //    trigger_error("Unable to include resource \"".$item[0]."\"", E_USER_WARNING);
     //}
 }
Пример #3
0
 /**
  * @param string $class
  * @return APF_Component
  */
 public function load_component($parent, $class, $is_page = false)
 {
     $flag = true;
     if ($is_page) {
         $this->debug("load page: {$class}");
         $flag = apf_require_page($class);
         $class = $class . "Page";
     } else {
         $this->debug("load component: {$class}");
         $flag = apf_require_component($class);
         $class = $class . "Component";
     }
     if (!$flag && substr($class, 0, 3) == "HK_") {
         $class = substr($class, 3);
     }
     $this->html_id++;
     return new $class($parent, self::HTML_ID_PREFIX . $this->html_id);
 }
Пример #4
0
<?php

apf_require_component('APF_Resource_JavascriptsAndStyles');
class APF_Resource_StyleBlocksComponent extends APF_Resource_JavascriptsAndStylesComponent
{
    public function get_view()
    {
        return "StyleBlocks";
    }
    public function enabled_inline_styles()
    {
        return APF::get_instance()->get_config('enabled_inline_styles', 'resource') && APF::get_instance()->get_use_inline_styles();
        // enabled and used
    }
    public function get_inline_styles()
    {
        $url = $this->get_boundable_styles_url();
        $key = "css-" . md5($url);
        apf_require_class('APF_Cache_Factory');
        $mem = APF_Cache_Factory::get_instance()->get_memcache();
        $css = $mem->get($key);
        if ($css) {
            return $css;
        }
        apf_require_class('APF_Http_Client_Factory');
        $c = APF_Http_Client_Factory::get_instance()->get_curl();
        $c->set_url($url);
        $c->execute();
        $css = $c->get_response_text();
        $mem->set($key, $css, 0, 0);
        return $css;