/** * Render the javascript for the appropriate page. * * @return void */ public function render_js() { $js_path = AI1EC_ADMIN_THEME_JS_PATH . DIRECTORY_SEPARATOR; $common_js = ''; if (!isset($_GET[self::LOAD_JS_PARAMETER])) { return null; } $page_to_load = $_GET[self::LOAD_JS_PARAMETER]; if (isset($_GET[self::IS_BACKEND_PARAMETER]) && $_GET[self::IS_BACKEND_PARAMETER] === self::TRUE_PARAM) { $common_js = file_get_contents($js_path . 'pages/common_backend.js'); } else { if ($page_to_load === self::EVENT_PAGE_JS || $page_to_load === self::CALENDAR_PAGE_JS || $page_to_load === self::LOAD_ONLY_FRONTEND_SCRIPTS) { if ($page_to_load === self::LOAD_ONLY_FRONTEND_SCRIPTS && true === $this->_frontend_scripts_loaded) { return; } if (false === $this->_frontend_scripts_loaded) { $common_js = file_get_contents($js_path . 'pages/common_frontend.js'); $this->_frontend_scripts_loaded = true; } } } // Create the config object for Require.js. $require_config = $this->create_require_js_config_object(); // Load Require.js script. $require = file_get_contents($js_path . 'require.js'); // Load appropriate jQuery script based on browser. $jquery = $this->get_jquery_version_based_on_browser(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''); // Load the main script for the page. $page_js = ''; if (isset($this->_core_pages[$page_to_load])) { $page_js = file_get_contents($js_path . 'pages/' . $page_to_load); } // Load translation module. $translation = $this->get_frontend_translation_data(); $permalink = $this->_template_link_helper->get_permalink($this->_settings->get('calendar_page_id')); $full_permalink = $this->_template_link_helper->get_full_permalink($this->_settings->get('calendar_page_id')); $translation['calendar_url'] = $permalink; $translation['full_calendar_url'] = $full_permalink; $translation_module = $this->create_require_js_module(self::FRONTEND_CONFIG_MODULE, $translation); // Load Ai1ec config script. $config = $this->create_require_js_module('ai1ec_config', $this->get_translation_data()); // Let extensions add their scripts. $extension_files = array(); $extension_files = apply_filters('ai1ec_render_js', $extension_files, $page_to_load); $ext_js = ''; foreach ($extension_files as $file) { $ext_js .= file_get_contents($file); } // Finally, load the page_ready script to execute code that must run after // all scripts have been loaded. $page_ready = file_get_contents($js_path . 'scripts/common_scripts/page_ready.js'); $javascript = $require . $require_config . $translation_module . $config . $jquery . $common_js . $ext_js . $page_js . $page_ready; // add to blank spaces to fix issues with js // being truncated onn some installs $javascript .= ' '; $this->_echo_javascript($javascript); }
/** * Add the link to render the javascript * * @param string $page * @param boolean $backend * * @return void */ public function add_link_to_render_js($page, $backend) { $load_backend_script = 'false'; if (true === $backend) { $load_backend_script = self::TRUE_PARAM; } $is_calendar_page = false; if (true === is_page($this->_settings->get('calendar_page_id'))) { $is_calendar_page = self::TRUE_PARAM; } $url = add_query_arg(array(self::LOAD_JS_PARAMETER => $page, self::IS_BACKEND_PARAMETER => $load_backend_script, self::IS_CALENDAR_PAGE => $is_calendar_page), trailingslashit($this->_template_link_helper->get_site_url())); if (true === $backend) { $this->_scripts_helper->enqueue_script(self::JS_HANDLE, $url, array('postbox'), true); } else { $this->_scripts_helper->enqueue_script(self::JS_HANDLE, $url, array(), true); } }