예제 #1
0
 /**
  * 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);
     }
 }