mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-27 21:58:52 +00:00
[ticket/10390] Allow option for jQuery to be hosted by a remote CDN
Add an option to the ACP so admins can choose to host jQuery from the local version shipped with phpBB, or via a popular CDN. PHPBB3-10390
This commit is contained in:
parent
5e768036f7
commit
56c6476233
14 changed files with 69 additions and 7 deletions
|
@ -12,7 +12,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -99,6 +99,7 @@ class acp_board
|
|||
'load_cpf_pm' => array('lang' => 'LOAD_CPF_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_cpf_viewprofile' => array('lang' => 'LOAD_CPF_VIEWPROFILE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_cpf_viewtopic' => array('lang' => 'LOAD_CPF_VIEWTOPIC', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
|
||||
'load_jquery_host' => array('lang' => 'JQUERY_HOST', 'validate' => 'string', 'type' => 'select', 'method' => 'jquery_host_select', 'explain' => true),
|
||||
|
||||
'legend3' => 'ACP_SUBMIT_CHANGES',
|
||||
)
|
||||
|
@ -997,4 +998,14 @@ class acp_board
|
|||
$cache->destroy('sql', FORUMS_TABLE);
|
||||
}
|
||||
|
||||
function jquery_host_select($value, $key = '')
|
||||
{
|
||||
global $user;
|
||||
|
||||
return '<option value="localhost"' . (($value == 'localhost') ? ' selected="selected"' : '') . '>' . $user->lang['JQUERY_HOST_LOCAL'] . '</option>
|
||||
<option value="google"' . (($value == 'google') ? ' selected="selected"' : '') . '>' . $user->lang['JQUERY_HOST_GOOGLE'] . '</option>
|
||||
<option value="microsoft"' . (($value == 'microsoft') ? ' selected="selected"' : '') . '>' . $user->lang['JQUERY_HOST_MS'] . '</option>
|
||||
<option value="jquery"' . (($value == 'jquery') ? ' selected="selected"' : '') . '>' . $user->lang['JQUERY_HOST_JQUERY'] . '</option>';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -210,6 +210,7 @@ define('CAPTCHA_MAX_CHARS', 7);
|
|||
|
||||
// Additional constants
|
||||
define('VOTE_CONVERTED', 127);
|
||||
define('JQUERY_VERSION', '1.6.2'); // Important follow jQuery versioning, ie: 1.6, 1.6.1, 1.6.2
|
||||
|
||||
// Table names
|
||||
define('ACL_GROUPS_TABLE', $table_prefix . 'acl_groups');
|
||||
|
|
|
@ -4569,6 +4569,8 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
|
|||
'T_STYLESHEET_LINK' => "{$web_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css',
|
||||
'T_STYLESHEET_LANG_LINK' => "{$web_path}styles/" . $user->theme['theme_path'] . '/theme/' . $user->lang_name . '/stylesheet.css',
|
||||
'T_STYLESHEET_NAME' => $user->theme['theme_name'],
|
||||
'T_JQUERY_LINK' => (!empty($config['load_jquery_host']) && $config['load_jquery_host'] != 'localhost') ? remote_jquery_url($config['load_jquery_host']) : "{$web_path}assets/javascript/jquery.js",
|
||||
'S_JQUERY_FALLBACK' => (!empty($config['load_jquery_host']) && $config['load_jquery_host'] != 'localhost') ? true : false,
|
||||
|
||||
'T_THEME_NAME' => $user->theme['theme_path'],
|
||||
'T_THEME_LANG_NAME' => $user->data['user_lang'],
|
||||
|
@ -4767,3 +4769,30 @@ function phpbb_pcre_utf8_support()
|
|||
}
|
||||
return $utf8_pcre_properties;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build jQuery URL for remote CDNs
|
||||
* Reference: http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery
|
||||
*
|
||||
* @return string Returns url to a jQuery library
|
||||
*/
|
||||
function remote_jquery_url($host)
|
||||
{
|
||||
switch($host)
|
||||
{
|
||||
case 'google':
|
||||
// Google uses a 1.5.0, 1.5.1 format (it is always a three numbered version)
|
||||
return '//ajax.googleapis.com/ajax/libs/jquery/' . ((strlen(JQUERY_VERSION) == 3) ? JQUERY_VERSION . '.0' : JQUERY_VERSION) . '/jquery.min.js';
|
||||
break;
|
||||
|
||||
case 'microsoft':
|
||||
// Microsoft uses a 1.5, 1.5.1 format
|
||||
return 'http://ajax.aspnetcdn.com/ajax/jQuery/jquery-' . JQUERY_VERSION . '.min.js';
|
||||
break;
|
||||
|
||||
case 'jquery':
|
||||
// jQuery uses a 1.5, 1.5.1 format
|
||||
return 'http://code.jquery.com/jquery-' . JQUERY_VERSION . '.min.js';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,6 +126,8 @@ function adm_page_footer($copyright_html = true)
|
|||
'DEBUG_OUTPUT' => (defined('DEBUG')) ? $debug_output : '',
|
||||
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
|
||||
'S_COPYRIGHT_HTML' => $copyright_html,
|
||||
'T_JQUERY_LINK' => (!empty($config['load_jquery_host']) && $config['load_jquery_host'] != 'localhost') ? remote_jquery_url($config['load_jquery_host']) : "{$phpbb_root_path}assets/javascript/jquery.js",
|
||||
'S_JQUERY_FALLBACK' => (!empty($config['load_jquery_host']) && $config['load_jquery_host'] != 'localhost') ? true : false,
|
||||
'VERSION' => $config['version'])
|
||||
);
|
||||
|
||||
|
|
|
@ -2090,6 +2090,7 @@ function change_database_data(&$no_updates, $version)
|
|||
|
||||
// Changes from 3.1.0-dev to 3.1.0-A1
|
||||
case '3.1.0-dev':
|
||||
set_config('load_jquery_host', 'localhost');
|
||||
set_config('use_system_cron', 0);
|
||||
|
||||
$sql = 'UPDATE ' . GROUPS_TABLE . '
|
||||
|
|
|
@ -165,6 +165,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_viewprofi
|
|||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_viewtopic', '0');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_lastread', '1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_track', '1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jquery_host', 'localhost');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jumpbox', '1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_moderators', '1');
|
||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_online', '1');
|
||||
|
|
|
@ -549,3 +549,13 @@ $lang = array_merge($lang, array(
|
|||
'JAB_USERNAME' => 'Jabber username or JID',
|
||||
'JAB_USERNAME_EXPLAIN' => 'Specify a registered username or a valid JID. The username will not be checked for validity. If you only specify a username, then your JID will be the username and the server you specified above. Else, specify a valid JID, for example user@jabber.org.',
|
||||
));
|
||||
|
||||
// jQuery settings
|
||||
$lang = array_merge($lang, array(
|
||||
'JQUERY_HOST' => 'jQuery server',
|
||||
'JQUERY_HOST_EXPLAIN' => 'Load jQuery from your local server, or choose a remote copy hosted on a CDN (Content Delivery Network). If the CDN fails, phpBB will fall back to the local copy.',
|
||||
'JQUERY_HOST_LOCAL' => 'Localhost',
|
||||
'JQUERY_HOST_GOOGLE' => 'Google Ajax API CDN',
|
||||
'JQUERY_HOST_JQUERY' => 'jQuery CDN',
|
||||
'JQUERY_HOST_MS' => 'Microsoft CDN',
|
||||
));
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
<!-- IF not S_IS_BOT -->{RUN_CRON_TASK}<!-- ENDIF -->
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
<!-- IF DEBUG_OUTPUT --><br /><bdo dir="ltr">[ {DEBUG_OUTPUT} ]</bdo><!-- ENDIF --></span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
<span class="copyright">Powered by <a href="http://www.phpbb.com/">phpBB</a>® Forum Software © phpBB Group</span>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/jquery.js"></script>
|
||||
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
|
||||
<!-- IF S_JQUERY_FALLBACK --><script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript src="{T_ASSETS_PATH}/javascript/jquery.js" type="text/javascript"%3E%3C/script%3E'));</script><!-- ENDIF -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Add table
Reference in a new issue