public function testElggIsValidViewtype()
 {
     $this->assertTrue(_elgg_is_valid_viewtype('valid'));
     $this->assertTrue(_elgg_is_valid_viewtype('valid_viewtype'));
     $this->assertTrue(_elgg_is_valid_viewtype('0'));
     $this->assertFalse(_elgg_is_valid_viewtype('a;b'));
     $this->assertFalse(_elgg_is_valid_viewtype('invalid-viewtype'));
     $this->assertFalse(_elgg_is_valid_viewtype(123));
     $this->assertFalse(_elgg_is_valid_viewtype(''));
 }
示例#2
0
/**
 * Initialize viewtypes on system boot event
 * This ensures simplecache is cleared during upgrades. See #2252
 *
 * @return void
 * @access private
 * @elgg_event_handler boot system
 */
function elgg_views_boot()
{
    global $CONFIG;
    elgg_register_simplecache_view('css/ie');
    elgg_register_simplecache_view('css/ie7');
    elgg_register_simplecache_view('css/ie8');
    elgg_register_simplecache_view('js/text.js');
    elgg_register_js('elgg.require_config', elgg_get_simplecache_url('js', 'elgg/require_config'), 'head');
    elgg_register_js('require', '/vendors/requirejs/require-2.1.10.min.js', 'head');
    elgg_register_js('jquery', '/vendors/jquery/jquery-1.11.0.min.js', 'head');
    elgg_register_js('jquery-migrate', '/vendors/jquery/jquery-migrate-1.2.1.min.js', 'head');
    elgg_register_js('jquery-ui', '/vendors/jquery/jquery-ui-1.10.4.min.js', 'head');
    // this is the only lib that isn't required to be loaded sync in head
    elgg_define_js('jquery.form', array('src' => '/vendors/jquery/jquery.form.min.js', 'deps' => array('jquery'), 'exports' => 'jQuery.fn.ajaxForm'));
    $elgg_js_url = elgg_get_simplecache_url('js', 'elgg');
    elgg_register_js('elgg', $elgg_js_url, 'head');
    elgg_load_js('elgg.require_config');
    elgg_load_js('require');
    elgg_load_js('jquery');
    elgg_load_js('jquery-migrate');
    elgg_load_js('jquery-ui');
    elgg_load_js('elgg');
    $lightbox_js_url = elgg_get_simplecache_url('js', 'lightbox');
    elgg_register_js('lightbox', $lightbox_js_url);
    elgg_register_css('lightbox', 'vendors/jquery/colorbox/theme/colorbox.css');
    $elgg_css_url = elgg_get_simplecache_url('css', 'elgg');
    elgg_register_css('elgg', $elgg_css_url);
    elgg_load_css('elgg');
    elgg_register_ajax_view('js/languages');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_amd');
    elgg_register_plugin_hook_handler('simplecache:generate', 'css', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('output:before', 'layout', 'elgg_views_add_rss_link');
    elgg_register_plugin_hook_handler('output:before', 'page', '_elgg_views_send_header_x_frame_options');
    // discover the core viewtypes
    // @todo the cache is loaded in load_plugins() but we need to know viewtypes earlier
    $view_path = $CONFIG->viewpath;
    $viewtype_dirs = scandir($view_path);
    foreach ($viewtype_dirs as $viewtype) {
        if (_elgg_is_valid_viewtype($viewtype) && is_dir($view_path . $viewtype)) {
            elgg_register_viewtype($viewtype);
        }
    }
    // set default icon sizes - can be overridden in settings.php or with plugin
    if (!isset($CONFIG->icon_sizes)) {
        $icon_sizes = array('topbar' => array('w' => 16, 'h' => 16, 'square' => true, 'upscale' => true), 'tiny' => array('w' => 25, 'h' => 25, 'square' => true, 'upscale' => true), 'small' => array('w' => 40, 'h' => 40, 'square' => true, 'upscale' => true), 'medium' => array('w' => 100, 'h' => 100, 'square' => true, 'upscale' => true), 'large' => array('w' => 200, 'h' => 200, 'square' => false, 'upscale' => false), 'master' => array('w' => 550, 'h' => 550, 'square' => false, 'upscale' => false));
        elgg_set_config('icon_sizes', $icon_sizes);
    }
}
 /**
  * @access private
  */
 public function viewExists($view, $viewtype = '', $recurse = true)
 {
     global $CONFIG;
     // Detect view type
     if ($viewtype === '' || !_elgg_is_valid_viewtype($viewtype)) {
         $viewtype = elgg_get_viewtype();
     }
     if (!isset($CONFIG->views->locations[$viewtype][$view])) {
         if (!isset($CONFIG->viewpath)) {
             $location = dirname(dirname(dirname(__FILE__))) . "/views/";
         } else {
             $location = $CONFIG->viewpath;
         }
     } else {
         $location = $CONFIG->views->locations[$viewtype][$view];
     }
     if ($this->fileExists("{$location}{$viewtype}/{$view}.php") || $this->fileExists("{$location}{$viewtype}/{$view}")) {
         return true;
     }
     // If we got here then check whether this exists as an extension
     // We optionally recursively check whether the extended view exists also for the viewtype
     if ($recurse && isset($CONFIG->views->extensions[$view])) {
         foreach ($CONFIG->views->extensions[$view] as $view_extension) {
             // do not recursively check to stay away from infinite loops
             if ($this->viewExists($view_extension, $viewtype, false)) {
                 return true;
             }
         }
     }
     // Now check if the default view exists if the view is registered as a fallback
     if ($viewtype != 'default' && $this->doesViewtypeFallback($viewtype)) {
         return $this->viewExists($view, 'default');
     }
     return false;
 }
示例#4
0
 /**
  * @access private
  */
 public function viewExists($view, $viewtype = '', $recurse = true)
 {
     $view = $this->canonicalizeViewName($view);
     if (empty($view) || !is_string($view)) {
         return false;
     }
     // Detect view type
     if ($viewtype === '' || !_elgg_is_valid_viewtype($viewtype)) {
         $viewtype = elgg_get_viewtype();
     }
     $file = $this->findViewFile($view, $viewtype);
     if ($file) {
         return true;
     }
     // If we got here then check whether this exists as an extension
     // We optionally recursively check whether the extended view exists also for the viewtype
     if ($recurse && isset($this->extensions[$view])) {
         foreach ($this->extensions[$view] as $view_extension) {
             // do not recursively check to stay away from infinite loops
             if ($this->viewExists($view_extension, $viewtype, false)) {
                 return true;
             }
         }
     }
     // Now check if the default view exists if the view is registered as a fallback
     if ($viewtype != 'default' && $this->doesViewtypeFallback($viewtype)) {
         return $this->viewExists($view, 'default');
     }
     return false;
 }
示例#5
0
/**
 * Initialize viewtypes on system boot event
 * This ensures simplecache is cleared during upgrades. See #2252
 *
 * @return void
 * @access private
 * @elgg_event_handler boot system
 */
function elgg_views_boot()
{
    if (!elgg_get_config('system_cache_loaded')) {
        _elgg_services()->views->registerPluginViews(realpath(__DIR__ . '/../../'));
    }
    global $CONFIG;
    if (!elgg_get_config('system_cache_loaded')) {
        _elgg_services()->views->registerPluginViews(realpath(__DIR__ . '/../../'));
    }
    // on every page
    // jQuery and UI must come before require. See #9024
    elgg_register_js('jquery', elgg_get_simplecache_url('jquery.js'), 'head');
    elgg_load_js('jquery');
    elgg_register_js('jquery-ui', elgg_get_simplecache_url('jquery-ui.js'), 'head');
    elgg_load_js('jquery-ui');
    elgg_register_js('elgg.require_config', elgg_get_simplecache_url('elgg/require_config.js'), 'head');
    elgg_load_js('elgg.require_config');
    elgg_register_js('require', elgg_get_simplecache_url('require.js'), 'head');
    elgg_load_js('require');
    elgg_register_js('elgg', elgg_get_simplecache_url('elgg.js'), 'head');
    elgg_load_js('elgg');
    elgg_register_css('font-awesome', elgg_get_simplecache_url('font-awesome/css/font-awesome.css'));
    elgg_load_css('font-awesome');
    elgg_register_css('elgg', elgg_get_simplecache_url('elgg.css'));
    elgg_load_css('elgg');
    // optional stuff
    elgg_register_js('lightbox', elgg_get_simplecache_url('lightbox.js'));
    elgg_register_css('lightbox', elgg_get_simplecache_url('lightbox/elgg-colorbox-theme/colorbox.css'));
    elgg_register_js('elgg.autocomplete', elgg_get_simplecache_url('elgg/ui.autocomplete.js'));
    elgg_register_js('jquery.ui.autocomplete.html', elgg_get_simplecache_url('jquery.ui.autocomplete.html.js'));
    elgg_define_js('jquery.ui.autocomplete.html', ['deps' => ['jquery-ui']]);
    elgg_register_js('elgg.friendspicker', elgg_get_simplecache_url('elgg/ui.friends_picker.js'));
    elgg_register_js('elgg.avatar_cropper', elgg_get_simplecache_url('elgg/ui.avatar_cropper.js'));
    elgg_register_js('elgg.ui.river', elgg_get_simplecache_url('elgg/ui.river.js'));
    elgg_register_js('jquery.imgareaselect', elgg_get_simplecache_url('jquery.imgareaselect.js'));
    elgg_register_css('jquery.imgareaselect', elgg_get_simplecache_url('jquery.imgareaselect.css'));
    elgg_register_ajax_view('languages.js');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_amd');
    elgg_register_plugin_hook_handler('simplecache:generate', 'css', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('output:before', 'layout', 'elgg_views_add_rss_link');
    elgg_register_plugin_hook_handler('output:before', 'page', '_elgg_views_send_header_x_frame_options');
    // @todo the cache is loaded in load_plugins() but we need to know viewtypes earlier
    $view_path = $GLOBALS['_ELGG']->view_path;
    $viewtype_dirs = scandir($view_path);
    foreach ($viewtype_dirs as $viewtype) {
        if (_elgg_is_valid_viewtype($viewtype) && is_dir($view_path . $viewtype)) {
            elgg_register_viewtype($viewtype);
        }
    }
    // Declared views. Unlike plugins, Elgg's root views/ is never scanned, so Elgg cannot override
    // these view traditional view files.
    $file = dirname(__DIR__) . '/views.php';
    if (is_file($file)) {
        $spec = (include $file);
        if (is_array($spec)) {
            _elgg_services()->views->mergeViewsSpec($spec);
        }
    }
    // set default icon sizes - can be overridden in settings.php or with plugin
    if (!isset($CONFIG->icon_sizes)) {
        $icon_sizes = array('topbar' => array('w' => 16, 'h' => 16, 'square' => true, 'upscale' => true), 'tiny' => array('w' => 25, 'h' => 25, 'square' => true, 'upscale' => true), 'small' => array('w' => 40, 'h' => 40, 'square' => true, 'upscale' => true), 'medium' => array('w' => 100, 'h' => 100, 'square' => true, 'upscale' => true), 'large' => array('w' => 200, 'h' => 200, 'square' => false, 'upscale' => false), 'master' => array('w' => 550, 'h' => 550, 'square' => false, 'upscale' => false));
        elgg_set_config('icon_sizes', $icon_sizes);
    }
}
示例#6
0
文件: views.php 项目: elgg/elgg
/**
 * Initialize viewtypes on system boot event
 * This ensures simplecache is cleared during upgrades. See #2252
 *
 * @return void
 * @access private
 * @elgg_event_handler boot system
 */
function elgg_views_boot()
{
    global $CONFIG;
    if (!elgg_get_config('system_cache_loaded')) {
        // Core view files in /views
        _elgg_services()->views->registerPluginViews(realpath(__DIR__ . '/../../'));
        // Core view definitions in /engine/views.php
        $file = dirname(__DIR__) . '/views.php';
        if (is_file($file)) {
            $spec = Includer::includeFile($file);
            if (is_array($spec)) {
                _elgg_services()->views->mergeViewsSpec($spec);
            }
        }
    }
    // on every page
    // jQuery and UI must come before require. See #9024
    elgg_register_js('jquery', elgg_get_simplecache_url('jquery.js'), 'head');
    elgg_load_js('jquery');
    elgg_register_js('jquery-ui', elgg_get_simplecache_url('jquery-ui.js'), 'head');
    elgg_load_js('jquery-ui');
    elgg_register_js('elgg.require_config', elgg_get_simplecache_url('elgg/require_config.js'), 'head');
    elgg_load_js('elgg.require_config');
    elgg_register_js('require', elgg_get_simplecache_url('require.js'), 'head');
    elgg_load_js('require');
    elgg_register_js('elgg', elgg_get_simplecache_url('elgg.js'), 'head');
    elgg_load_js('elgg');
    elgg_register_css('font-awesome', elgg_get_simplecache_url('font-awesome/css/font-awesome.css'));
    elgg_load_css('font-awesome');
    elgg_register_css('elgg', elgg_get_simplecache_url('elgg.css'));
    elgg_load_css('elgg');
    elgg_register_simplecache_view('elgg/init.js');
    elgg_register_css('lightbox', elgg_get_simplecache_url('lightbox/elgg-colorbox-theme/colorbox.css'));
    elgg_load_css('lightbox');
    elgg_define_js('jquery.ui.autocomplete.html', ['deps' => ['jquery-ui']]);
    elgg_register_js('elgg.friendspicker', elgg_get_simplecache_url('elgg/ui.friends_picker.js'));
    elgg_register_js('elgg.avatar_cropper', elgg_get_simplecache_url('elgg/ui.avatar_cropper.js'));
    // @deprecated 2.2
    elgg_register_js('elgg.ui.river', elgg_get_simplecache_url('elgg/ui.river.js'));
    elgg_register_js('jquery.imgareaselect', elgg_get_simplecache_url('jquery.imgareaselect.js'));
    elgg_register_css('jquery.imgareaselect', elgg_get_simplecache_url('jquery.imgareaselect.css'));
    elgg_register_ajax_view('languages.js');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_amd');
    elgg_register_plugin_hook_handler('simplecache:generate', 'css', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('simplecache:generate', 'js', '_elgg_views_minify');
    elgg_register_plugin_hook_handler('output:before', 'page', '_elgg_views_send_header_x_frame_options');
    // registered with high priority for BC
    // prior to 2.2 registration used to take place in _elgg_views_prepare_head() before the hook was triggered
    elgg_register_plugin_hook_handler('head', 'page', '_elgg_views_prepare_favicon_links', 1);
    // @todo the cache is loaded in load_plugins() but we need to know viewtypes earlier
    $view_path = _elgg_services()->views->view_path;
    $viewtype_dirs = scandir($view_path);
    foreach ($viewtype_dirs as $viewtype) {
        if (_elgg_is_valid_viewtype($viewtype) && is_dir($view_path . $viewtype)) {
            elgg_register_viewtype($viewtype);
        }
    }
    // set default icon sizes - can be overridden in settings.php or with plugin
    if (!isset($CONFIG->icon_sizes)) {
        $icon_sizes = array('topbar' => array('w' => 16, 'h' => 16, 'square' => true, 'upscale' => true), 'tiny' => array('w' => 25, 'h' => 25, 'square' => true, 'upscale' => true), 'small' => array('w' => 40, 'h' => 40, 'square' => true, 'upscale' => true), 'medium' => array('w' => 100, 'h' => 100, 'square' => true, 'upscale' => true), 'large' => array('w' => 200, 'h' => 200, 'square' => false, 'upscale' => false), 'master' => array('w' => 550, 'h' => 550, 'square' => false, 'upscale' => false));
        elgg_set_config('icon_sizes', $icon_sizes);
    }
    // Patches and features that were included between major releases
    // sometimes require additional styling, but adding them to core CSS files
    // is not always feasible, because those can be replaced by themes.
    // @todo Remove in 3.0
    elgg_extend_view('elgg.css', 'elements/pathces.css');
    elgg_extend_view('admin.css', 'elements/pathces.css');
}