<?php
/**
* This file implements the UI view for the collection URL properties.
*
* b2evolution - {@link http://b2evolution.net/}
* Released under GNU GPL License - {@link http://b2evolution.net/about/gnu-gpl-license}
* @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
* Parts of this file are copyright (c)2004-2005 by Daniel HAHLER - {@link http://thequod.de/contact}.
*
* @package admin
* {@internal Below is a list of authors who have contributed to design/coding of this file: }}
* @author blueyed: Daniel HAHLER
* @author fplanque: Francois PLANQUE.
*/
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );
/**
* @var Blog
*/
global $edited_Blog;
/**
* @var GeneralSettings
*/
global $Settings;
/**
* @var Log
*/
global $Debuglog;
global $admin_url;
?>
<script>
function show_hide_chapter_prefix(ob)
{
var fldset = document.getElementById( 'category_prefix_container' );
if( ob.value == 'param_num' )
{
fldset.style.display = 'none';
}
else
{
fldset.style.display = '';
}
}
</script>
<?php
global $blog, $tab;
global $preset;
$Form = new Form();
$Form->begin_form( 'fform' );
$Form->add_crumb( 'collection' );
$Form->hidden_ctrl();
$Form->hidden( 'action', 'update' );
$Form->hidden( 'tab', $tab );
$Form->hidden( 'blog', $blog );
global $baseurl, $baseprotocol, $basehost, $baseport;
// determine siteurl type (if not set from update-action)
if( preg_match('#https?://#', $edited_Blog->get( 'siteurl' ) ) )
{ // absolute
$blog_siteurl_relative = '';
$blog_siteurl_absolute = $edited_Blog->get( 'siteurl' );
}
else
{ // relative
$blog_siteurl_relative = $edited_Blog->get( 'siteurl' );
$blog_siteurl_absolute = 'http://';
}
$Form->begin_fieldset( TB_('Collection base URL').get_admin_badge().get_manual_link('collection-base-url-settings') );
$http_protocol_options = array(
array( 'always_http', sprintf( TB_('Always use %s'), '<code>http</code>' ) ),
array( 'always_https', sprintf( TB_('Always use %s'), '<code>https</code>' ) ),
array( 'allow_both', sprintf( TB_('Allow both %s and %s as valid URLs'), '<code>http</code>', '<code>https</code>' ) )
);
if( check_user_perm( 'blog_admin', 'edit', false, $edited_Blog->ID ) )
{ // Permission to edit advanced admin settings
$Form->radio( 'http_protocol', $edited_Blog->get_setting( 'http_protocol' ), $http_protocol_options, TB_('SSL'), true );
$Form->text( 'blog_urlname', $edited_Blog->get( 'urlname' ), 20, TB_('Collection URL name'), TB_('Used to uniquely identify this collection. Appears in URLs and gets used as default for the media location (see the advanced tab).'), 255 );
if( $default_blog_ID = $Settings->get('default_blog_ID') )
{
$Debuglog->add('Default collection is set to: '.$default_blog_ID);
$BlogCache = & get_BlogCache();
if( $default_Blog = & $BlogCache->get_by_ID($default_blog_ID, false) )
{ // Default blog exists
$defblog = $default_Blog->dget('shortname');
}
}
$siteurl_relative_warning = '';
if( ! preg_match( '~(^|/|\.php.?)$~i', $blog_siteurl_relative ) )
{
$siteurl_relative_warning = ' <span class="note red">'.TB_('WARNING: it is highly recommended that this ends in with a / or .php !').'</span>';
}
$siteurl_absolute_warning = '';
if( ! preg_match( '~(^|/|\.php.?)$~i', $blog_siteurl_absolute ) )
{
$siteurl_absolute_warning = ' <span class="note red">'.TB_('WARNING: it is highly recommended that this ends in with a / or .php !').'</span>';
}
// Initialize html code which is used below to display and update on switching between http and https protocols:
$baseurl_html = '<span data-protocol-url="'.format_to_output( $baseurl, 'htmlattr' ).'">'.$edited_Blog->get_protocol_url( $baseurl ).'</span>';
$access_type_options = array(
/* TODO: Tblue> This option only should be available if the
* current blog is set as the default blog, otherwise
* this setting is confusing. Another possible
* solution would be to change the default blog
* setting if this blog-specific setting is changed,
* but then we would be have the same setting in
* two places... I would be in favor of the first
* solution.
* fp> I think it should actually change the default blog setting because
* people have a hard time finding the settings. I personally couldn't care
* less that there are 2 ways to do the same thing.
*/
array( 'baseurl', TB_('Default collection on baseurl'),
'<code>'.$baseurl_html.'</code> ('.( !isset($defblog)
? /* TRANS: NO current default blog */ TB_('No default collection is currently set')
: /* TRANS: current default blog */ TB_('Current default :').' '.$defblog ).
')',
'',
'onclick="update_urlpreview( \''.$baseurl.'\', \'\' );"'
),
array( 'default', TB_('Default collection in index.php'),
'<code>'.$baseurl_html.'index.php</code> ('.( !isset($defblog)
? /* TRANS: NO current default blog */ TB_('No default collection is currently set')
: /* TRANS: current default blog */ TB_('Current default :').' '.$defblog ).
')',
'',
'onclick="update_urlpreview( \''.$baseurl.'\', \'index.php\' );"'
),
array( 'index.php', TB_('Explicit param on index.php'),
'<code>'.$baseurl_html.'index.php?blog='.$edited_Blog->ID.'</code>',
'',
'onclick="update_urlpreview( \''.$baseurl.'\', \'index.php?blog='.$edited_Blog->ID.'\' )"',
),
array( 'extrabase', TB_('Extra path on baseurl'),
'<code>'.$baseurl_html.'<span class="blog_url_text">'.$edited_Blog->get( 'urlname' ).'</span>/</code> ('.TB_('Requires mod_rewrite').')',
'',
'onclick="update_urlpreview( \''.$baseurl.'\', document.getElementById( \'blog_urlname\' ).value+\'/\' )"'
),
array( 'extrapath', TB_('Extra path on index.php'),
'<code>'.$baseurl_html.'index.php/<span class="blog_url_text">'.$edited_Blog->get( 'urlname' ).'</span>/</code>',
'',
'onclick="update_urlpreview( \''.$baseurl.'\', \'index.php/\'+document.getElementById( \'blog_urlname\' ).value+\'/\' )"'
),
array( 'relative', TB_('Relative to baseurl').': ',
'',
'<span class="nobr help-inline"><code>'.$baseurl_html.'</code>'
.'<input type="text" id="blog_siteurl_relative" class="form_text_input form-control" name="blog_siteurl_relative" size="35" maxlength="120" value="'
.format_to_output( $blog_siteurl_relative, 'formvalue' )
.'" onkeyup="update_urlpreview( \''.$baseurl.'\', this.value );"
onfocus="document.getElementsByName(\'blog_access_type\')[5].checked=true;
update_urlpreview( \''.$baseurl.'\', this.value );" /></span>'.$siteurl_relative_warning,
'onclick="document.getElementById( \'blog_siteurl_relative\' ).focus();" class="radio-input"',
)
);
if( ! is_valid_ip_format( $basehost ) )
{ // Not an IP address, we can use subdomains:
$access_type_options[] = array( 'subdom', TB_('Subdomain of basehost'),
'<code><span data-protocol-url="'.format_to_output( $baseprotocol.'://', 'htmlattr' ).'">'.$edited_Blog->get_protocol_url( $baseprotocol.'://' ).'</span><span class="blog_url_text">'.$edited_Blog->urlname.'</span>.'.$basehost.$baseport.'/</code>',
'',
'onclick="update_urlpreview( \''.$baseprotocol.'://\'+document.getElementById( \'blog_urlname\' ).value+\'.'.$basehost.$baseport.'/\' )"'
);
}
else
{ // Don't allow subdomain for IP address:
$access_type_options[] = array( 'subdom', TB_('Subdomain').':',
sprintf( TB_('(Not possible for %s)'), $basehost ),
'',
'disabled="disabled"'
);
}
$access_type_options[] = array( 'absolute', TB_('Absolute URL').':',
'',
'<input type="text" id="blog_siteurl_absolute" class="form_text_input form-control" name="blog_siteurl_absolute" size="50" maxlength="120" value="'
.format_to_output( $blog_siteurl_absolute, 'formvalue' )
.'" onkeyup="update_urlpreview( this.value );"
onfocus="document.getElementsByName(\'blog_access_type\')[7].checked=true;
update_urlpreview( this.value );" />'.$siteurl_absolute_warning,
'onclick="document.getElementById( \'blog_siteurl_absolute\' ).focus();" class="radio-input"'
);
$Form->radio( 'blog_access_type', $edited_Blog->get( 'access_type' ), $access_type_options, TB_('Collection base URL'), true );
?>
<script>
// Script to update the Blog URL preview:
function update_urlpreview( baseurl, url_path )
{
if( typeof( url_path ) != 'string' )
{
url_path = '';
}
if( ! baseurl.match( /\/[^\/]+\.[^\/]+\/$/ ) )
{
baseurl = baseurl.replace( /\/$/, '' ) + '/';
}
jQuery( '#urlpreview' ).html( baseurl + url_path );
var basepath = baseurl.replace( /^(.+\/)([^\/]+\.[^\/]+)?$/, '$1' );
basepath = basepath.replace( /^(https?:\/\/(.+?)(:.+?)?)\//i, '/' );
jQuery( '#media_assets_url_type_relative' ).html( baseurl + 'media/' );
jQuery( '#rsc_assets_url_type_relative' ).html( basepath + 'rsc/' );
jQuery( '#skins_assets_url_type_relative' ).html( basepath + 'skins/' );
jQuery( '#plugins_assets_url_type_relative' ).html( basepath + 'plugins/' );
jQuery( '#htsrv_assets_url_type_relative' ).html( baseurl + 'htsrv/' );
// Update data with protocol urls in order to display them on select "SSL" == "Allow both http and https as valid URLs":
jQuery( '#urlpreview' ).data( 'protocol-url', baseurl + url_path );
jQuery( '#media_assets_url_type_relative' ).data( 'protocol-url', baseurl + 'media/' );
jQuery( '#htsrv_assets_url_type_relative' ).data( 'protocol-url', baseurl + 'htsrv/' );
// Update protocols of the urls:
force_http_protocols();
}
// Update blog url name in several places on the page:
jQuery( '#blog_urlname' ).bind( 'keyup blur', function()
{
jQuery( '.blog_url_text' ).html( jQuery( this ).val() );
var blog_access_type_obj = jQuery( 'input[name=blog_access_type]:checked' );
if( blog_access_type_obj.length > 0 &&
( blog_access_type_obj.val() == 'extrabase' || blog_access_type_obj.val() == 'extrapath' || blog_access_type_obj.val() == 'subdom' ) )
{
blog_access_type_obj.click();
}
} );
// Select 'absolute' option when cursor is focused on input element
jQuery( '[id$=_assets_absolute_url]' ).focus( function()
{
var radio_field_name = jQuery( this ).attr( 'id' ).replace( '_absolute_url', '_url_type' );
jQuery( '[name=' + radio_field_name + ']' ).attr( 'checked', 'checked' );
} );
// Update blog urls depending on selected setting "SSL":
jQuery( '[name=http_protocol]' ).click( function()
{
force_http_protocols();
} );
function force_http_protocols()
{
jQuery( '[data-protocol-url]' ).each( function()
{
var url = jQuery( this ).html();
switch( jQuery( '[name=http_protocol]:checked' ).val() )
{ // Force base URL to http or https for the edited collection:
case 'always_http':
url = url.replace( /^https:/, 'http:' );
break;
case 'always_https':
url = url.replace( /^http:/, 'https:' );
break;
case 'allow_both':
url = jQuery( this ).data( 'protocol-url' );
break;
}
jQuery( this ).html( url );
} );
}
</script>
<?php
}
else
{ // Display only current values as text if user has no permission to edit:
$current_http_protocol_option = '';
foreach( $http_protocol_options as $http_protocol_option )
{
if( $http_protocol_option[0] == $edited_Blog->get_setting( 'http_protocol' ) )
{ // Get title of current option:
$current_http_protocol_option = $http_protocol_option[1];
break;
}
}
$Form->info( TB_('SSL'), $current_http_protocol_option );
}
// URL Preview (always displayed)
$blogurl = $edited_Blog->gen_blogurl();
$Form->info( TB_('URL preview'), '<code id="urlpreview" data-protocol-url="'.format_to_output( $blogurl, 'htmlattr' ).'">'.$blogurl.'</code>' );
$url_aliases = $edited_Blog->get_url_aliases();
$alias_field_note = get_icon( 'add', 'imgtag', array( 'class' => 'url_alias_add', 'style' => 'cursor: pointer; position: relative;' ) );
$alias_field_note .= get_icon( 'minus', 'imgtag', array( 'class' => 'url_alias_minus', 'style' => 'display: none; margin-left: 2px; cursor: pointer; position: relative;' ) );
if( empty( $url_aliases ) )
{
$Form->text_input( 'blog_url_alias[]', '', 50, TB_('Alias URL'), $alias_field_note, array( 'class' => 'evo_url_alias', 'maxlength' => 255 ) );
}
foreach( $url_aliases as $alias )
{
$Form->text_input( 'blog_url_alias[]', $alias, 50, TB_('Alias URL'), $alias_field_note, array( 'class' => 'evo_url_alias', 'maxlength' => 255 ) );
}
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Cookie Settings').get_admin_badge().get_manual_link( 'collection-cookie-settings' ) );
if( check_user_perm( 'blog_admin', 'edit', false, $edited_Blog->ID ) )
{ // If current user has a permission to edit collection advanced admin settings:
$Form->switch_layout( 'none' );
$Form->output = false;
$cookie_domain_custom_field = $Form->text( 'cookie_domain_custom', $edited_Blog->get_setting( 'cookie_domain_custom' ), 50, '', '', 120 );
$cookie_path_custom_field = $Form->text( 'cookie_path_custom', $edited_Blog->get_setting( 'cookie_path_custom' ), 50, '', '', 120 );
$Form->output = true;
$Form->switch_layout( NULL );
$Form->radio( 'cookie_domain_type', $edited_Blog->get_setting( 'cookie_domain_type' ), array(
array( 'auto', TB_('Automatic'), $edited_Blog->get_cookie_domain( 'auto' ) ),
array( 'custom', TB_('Custom').':', '', $cookie_domain_custom_field, 'class="radio-input"' ),
), TB_('Cookie domain'), true );
$Form->radio( 'cookie_path_type', $edited_Blog->get_setting( 'cookie_path_type' ), array(
array( 'auto', TB_('Automatic'), $edited_Blog->get_cookie_path( 'auto' ) ),
array( 'custom', TB_('Custom').':', '', $cookie_path_custom_field, 'class="radio-input"' ),
), TB_('Cookie path'), true );
}
else
{ // Display only info about collection cookie domain and path if user has no permission to edit:
$Form->info( TB_('Cookie domain'), $edited_Blog->get_cookie_domain() );
$Form->info( TB_('Cookie path'), $edited_Blog->get_cookie_path() );
}
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Assets URLs / CDN support').get_admin_badge().get_manual_link( 'assets-url-cdn-settings' ) );
if( check_user_perm( 'blog_admin', 'edit', false, $edited_Blog->ID ) )
{ // Permission to edit advanced admin settings
global $rsc_url, $media_url, $skins_url, $plugins_url, $htsrv_url;
$assets_url_data = array();
// media url:
$assets_url_data['media_assets_url_type'] = array(
'label' => sprintf( TB_('Load %s assets from'), '<code>/media/</code>' )
);
if( $edited_Blog->get( 'media_location' ) == 'none' )
{ // if media location is disabled
$assets_url_data['media_assets_url_type']['info'] = sprintf( TB_('The media directory is <a %s>turned off</a> for this collection'), 'href="'.$admin_url.'?ctrl=coll_settings&tab=advanced&blog='.$edited_Blog->ID.'#media_dir_location"' );
}
elseif( $edited_Blog->get( 'media_location' ) == 'custom' )
{ // if media location is customized
$assets_url_data['media_assets_url_type']['info'] = sprintf( TB_('A custom location has already been set in the <a %s>advanced properties</a>'), 'href="'.$admin_url.'?ctrl=coll_settings&tab=advanced&blog='.$edited_Blog->ID.'"' );
}
else
{
$assets_url_data['media_assets_url_type'] += array(
'url' => $media_url,
'absolute_url' => 'media_assets_absolute_url',
'folder' => '/media/',
'local_url' => $edited_Blog->get_local_media_url( 'relative', true )
);
}
// skins url:
$assets_url_data['skins_assets_url_type'] = array(
'label' => sprintf( TB_('Load %s assets from'), '<code>/skins/</code>' ),
'url' => $skins_url,
'absolute_url' => 'skins_assets_absolute_url',
'folder' => '/skins/',
'local_url' => $edited_Blog->get_local_skins_url( 'relative' )
);
// rsc url:
$assets_url_data['rsc_assets_url_type'] = array(
'label' => sprintf( TB_('Load generic %s assets from'), '<code>/rsc/</code>' ),
'url' => $rsc_url,
'absolute_url' => 'rsc_assets_absolute_url',
'folder' => '/rsc/',
'local_url' => $edited_Blog->get_local_rsc_url( 'relative' )
);
// plugins url:
$assets_url_data['plugins_assets_url_type'] = array(
'label' => sprintf( TB_('Load %s assets from'), '<code>/plugins/</code>' ),
'url' => $plugins_url,
'absolute_url' => 'plugins_assets_absolute_url',
'folder' => '/plugins/',
'local_url' => $edited_Blog->get_local_plugins_url( 'relative' )
);
// htsrv url:
$assets_url_data['htsrv_assets_url_type'] = array(
'label' => sprintf( TB_('Link to %s through'), '<code>/htsrv/</code>' ),
'url' => $htsrv_url,
'absolute_url' => 'htsrv_assets_absolute_url',
'folder' => '/htsrv/',
'local_url' => $edited_Blog->get_htsrv_url()
);
foreach( $assets_url_data as $asset_url_type => $asset_url_data )
{
if( isset( $asset_url_data['info'] ) )
{ // Display only info for this url type
$Form->info( $asset_url_data['label'], $asset_url_data['info'] );
}
else
{ // Display options full list
$basic_asset_url_note = '<span data-protocol-url="'.format_to_output( $asset_url_data['url'], 'htmlattr' ).'">'.$edited_Blog->get_protocol_url( $asset_url_data['url'] ).'</span>';
if( ! in_array( $asset_url_type, array( 'media_assets_url_type', 'htsrv_assets_url_type' ) ) &&
$edited_Blog->get( 'access_type' ) == 'absolute' &&
$edited_Blog->get_setting( $asset_url_type ) == 'basic' )
{
$basic_asset_url_note .= ' <span class="red">'
.sprintf( TB_('ATTENTION: Using a different domain for your collection and your %s folder may cause problems'), '<code>'.$asset_url_data['folder'].'</code>' )
.' ('.( $asset_url_type == 'plugins_assets_url_type' ? TB_('e-g: Ajax requests') : TB_('e-g: impossible to load fonts') ).')'
.'</span>';
}
$relative_asset_url_note = '<span id="'.$asset_url_type.'_relative" data-protocol-url="'.format_to_output( $asset_url_data['local_url'], 'htmlattr' ).'">'.$edited_Blog->get_protocol_url( $asset_url_data['local_url'] ).'</span>';
if( ! in_array( $asset_url_type, array( 'skins_assets_url_type', 'media_assets_url_type', 'htsrv_assets_url_type' ) ) &&
$edited_Blog->get_setting( 'skins_assets_url_type' ) != 'relative' &&
$edited_Blog->get_setting( $asset_url_type ) == 'relative' )
{
$relative_asset_url_note .= ' <span class="red">'
.sprintf( TB_('ATTENTION: using a relative %s folder with a non-relative %s folder will probably lead to undesired results (because of the skin\'s <baseurl>).'), '<code>'.$asset_url_data['folder'].'</code>', '<code>/skins/</code>' )
.'</span>';
}
$absolute_url_note = TB_('Enter path to %s folder ending with /');
if( ! in_array( $asset_url_type, array( 'plugins_assets_url_type', 'htsrv_assets_url_type' ) ) )
{
$absolute_url_note .= ' -- '.TB_('This may be located in a CDN zone');
}
$Form->radio( $asset_url_type, $edited_Blog->get_setting( $asset_url_type ), array(
array( 'relative', (
in_array( $asset_url_type, array( 'skins_assets_url_type', 'media_assets_url_type', 'htsrv_assets_url_type' ) ) ?
sprintf( TB_('%s folder relative to current collection (recommended setting)'), '<code>'.$asset_url_data['folder'].'</code>' ) :
sprintf( TB_('%s folder relative to %s domain (recommended setting)'), '<code>'.$asset_url_data['folder'].'</code>', '<code>/skins/</code>' )
), $relative_asset_url_note ),
array( 'basic', TB_('URL configured in Basic Config'), $basic_asset_url_note ),
array( 'absolute', TB_('Absolute URL').':', '',
'<input type="text" id="'.$asset_url_data['absolute_url'].'" class="form_text_input form-control" name="'.$asset_url_data['absolute_url'].'"
size="50" maxlength="120" onfocus="document.getElementsByName(\''.$asset_url_type.'\')[2].checked=true;" value="'.$edited_Blog->get_setting( $asset_url_data['absolute_url'] ).'" />
<span class="notes">'.sprintf( $absolute_url_note, '<code>'.$asset_url_data['folder'].'</code>' ).'</span>',
'class="radio-input"'
)
), $asset_url_data['label'], true );
}
}
}
else
{ // Preview assets urls:
$Form->info( sprintf( TB_('Load %s assets from'), '<code>/media/</code>' ), $edited_Blog->get_local_media_url() );
$Form->info( sprintf( TB_('Load %s assets from'), '<code>/skins/</code>' ), $edited_Blog->get_local_skins_url() );
$Form->info( sprintf( TB_('Load generic %s assets from'), '<code>/rsc/</code>' ), $edited_Blog->get_local_rsc_url() );
$Form->info( sprintf( TB_('Load %s assets from'), '<code>/plugins/</code>' ), $edited_Blog->get_local_plugins_url() );
$Form->info( sprintf( TB_('Link to %s through'), '<code>/htsrv/</code>' ), $edited_Blog->get_local_htsrv_url() );
}
$Form->info( 'Note', sprintf( TB_('Login, Registration and Password operations are controlled by the following settings: <a %s>In-skin login</a> and <a %s>Require SSL for login</a>'),
'href="'.$admin_url.'?ctrl=coll_settings&tab=advanced&blog='.$edited_Blog->ID.'#inskin_actions"',
'href="'.$admin_url.'?ctrl=registration#security_options"' ) );
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Date archive URLs').get_manual_link('date-archive-url-settings') );
$Form->radio( 'archive_links', $edited_Blog->get_setting('archive_links'),
array(
array( 'param', TB_('Use param'), TB_('E-g: ')
.url_add_param( $blogurl, '<strong>m=20071231</strong>' ) ),
array( 'extrapath', TB_('Use extra-path'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/2007/12/31/</strong>' ) ),
), TB_('Date archive URLs'), true );
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Category URLs') . get_manual_link('category-url-settings') );
$Form->radio( 'chapter_links', $edited_Blog->get_setting('chapter_links'),
array(
array( 'param_num', TB_('Use param: cat ID'), TB_('E-g: ')
.url_add_param( $blogurl, '<strong>cat=123</strong>' ),'', 'onclick="show_hide_chapter_prefix(this);"'),
array( 'subchap', TB_('Use extra-path: sub-category'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/subcat/</strong>' ), '', 'onclick="show_hide_chapter_prefix(this);"' ),
array( 'chapters', TB_('Use extra-path: category path'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/cat/subcat/</strong>' ), '', 'onclick="show_hide_chapter_prefix(this);"' ),
), TB_('Category URLs'), true );
echo '<div id="category_prefix_container">';
$Form->text_input( 'category_prefix', $edited_Blog->get_setting( 'category_prefix' ), 30, TB_('Prefix'),
TB_('An optional prefix to be added to the URLs of the categories'),
array('maxlength' => 120) );
echo '</div>';
if( $edited_Blog->get_setting( 'chapter_links' ) == 'param_num' )
{ ?>
<script>
<!--
var fldset = document.getElementById( 'category_prefix_container' );
fldset.style.display = 'none';
//-->
</script>
<?php
}
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Tag page URLs') . get_manual_link('tag-page-url-settings'), array('id'=>'tag_links_fieldset') );
$Form->radio( 'tag_links', $edited_Blog->get_setting('tag_links'),
array(
array( 'param', TB_('Use param'), TB_('E-g: ')
.url_add_param( $blogurl, '<strong>tag=mytag</strong>' ) ),
array( 'prefix-only', TB_('Use extra-path').': '.'Use URL path prefix only (recommended)', TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/<span class="tag_links_tag_prefix"></span>mytag</strong>' ) ),
array( 'dash', TB_('Use extra-path').': '.'trailing dash', TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/<span class="tag_links_tag_prefix"></span>mytag-</strong>' ) ),
array( 'colon', TB_('Use extra-path').': '.'trailing colon', TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/<span class="tag_links_tag_prefix"></span>mytag:</strong>' ) ),
array( 'semicolon', TB_('Use extra-path').': '.'trailing semi-colon (NOT recommended)', TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/<span class="tag_links_tag_prefix"></span>mytag;</strong>' ) ),
), TB_('Tag page URLs'), true );
$Form->text_input( 'tag_prefix', $edited_Blog->get_setting( 'tag_prefix' ), 30, TB_('Prefix'),
TB_('An optional prefix to be added to the URLs of the tag pages'),
array('maxlength' => 120) );
$Form->checkbox( 'tag_rel_attrib', $edited_Blog->get_setting( 'tag_rel_attrib' ), TB_('Rel attribute'),
sprintf( TB_('Add <a %s>rel="tag" attribute</a> to tag links.'), 'href="http://microformats.org/wiki/rel-tag"' ) );
$Form->end_fieldset();
// Javascript juice for the tag fields.
?>
<script>
jQuery( '#tag_links_fieldset input[type=radio]' ).click( function()
{
if( jQuery( this ).val() == 'param' )
{ // Disable tag_prefix, if "param" is used.
jQuery( '#tag_prefix' ).attr( 'disabled', 'disabled' );
}
else
{
jQuery( '#tag_prefix' ).removeAttr( 'disabled' );
}
if( jQuery( this ).val() == 'prefix-only' )
{ // Enable tag_rel_attrib, if "prefix-only" is used.
jQuery( '#tag_rel_attrib' ).removeAttr( 'disabled' );
}
else
{
jQuery( '#tag_rel_attrib' ).attr( 'disabled', 'disabled' );
}
// NOTE: dh> ".closest('fieldset').andSelf()" is required for the add-field_required-class-to-fieldset-hack. Remove as appropriate.
if( jQuery( this ).val() == 'prefix-only' )
{
jQuery( '#tag_prefix' ).closest( 'fieldset' ).andSelf().addClass( 'field_required' );
}
else
{
jQuery( '#tag_prefix' ).closest( 'fieldset' ).andSelf().removeClass( 'field_required' );
}
} ).filter( ':checked' ).click();
// Set text of span.tag_links_tag_prefix according to this field, defaulting to "tag" for "prefix-only".
jQuery("#tag_prefix").keyup( function() {
jQuery("span.tag_links_tag_prefix").each(
function() {
var newval = ((jQuery("#tag_prefix").val().length || jQuery(this).closest("div").find("input[type=radio]").attr("value") != "prefix-only") ? jQuery("#tag_prefix").val() : "tag");
if( newval.length ) newval += "/";
jQuery(this).text( newval );
}
) } ).keyup();
</script>
<?php
$Form->begin_fieldset( TB_('User profile page URLs') . get_manual_link('user-profile-page-url-settings') );
$Form->text_input( 'user_prefix', $edited_Blog->get_setting( 'user_prefix' ), 30, TB_('Prefix'),
TB_('A prefix to be added to the URLs of the user profile pages'),
array( 'maxlength' => 120 ) );
$Form->radio( 'user_links', $edited_Blog->get_setting( 'user_links' ),
array(
array( 'params', TB_('Use params'), TB_('E-g: ').'<code>?disp=user&user_ID=4</code>' ),
array( 'prefix_id', TB_('Use prefix with user ID'), TB_('E-g: ').'<code>prefix:4</code>' ),
array( 'prefix_login', TB_('Use prefix with user login'), TB_('E-g: ').'<code>prefix:login</code>' ),
), TB_('User profile URLs'), true );
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Single post URLs') . get_manual_link('single-post-url-settings') );
$Form->radio( 'single_links', $edited_Blog->get_setting('single_links'),
array(
array( 'param_num', TB_('Use param: post ID'), TB_('E-g: ')
.url_add_param( $blogurl, '<strong>p=123&more=1</strong>' ) ),
array( 'param_title', TB_('Use param: post title'), TB_('E-g: ')
.url_add_param( $blogurl, '<strong>title=post-title&more=1</strong>' ) ),
array( 'short', TB_('Use extra-path: post title'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/post-title</strong>' ) ),
array( 'y', TB_('Use extra-path: year'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/2006/post-title</strong>' ) ),
array( 'ym', TB_('Use extra-path: year & month'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/2006/12/post-title</strong>' ) ),
array( 'ymd', TB_('Use extra-path: year, month & day'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/2006/12/31/post-title</strong>' ) ),
array( 'subchap', TB_('Use extra-path: sub-category'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/subcat/post-title</strong>' ) ),
array( 'chapters', TB_('Use extra-path: category path'), TB_('E-g: ')
.url_add_tail( $blogurl, '<strong>/cat/subcat/post-title</strong>' ) ),
), TB_('Single post URLs'), true );
$Form->end_fieldset();
$Form->begin_fieldset( TB_('Tiny URLs').get_manual_link('tiny-url-settings') );
// Params for tag settings:
$tag_setting_params = array();
if( ! is_pro() )
{ // Disable for not-PRO version:
$tag_setting_params['disabled'] = 'disabled';
}
$tag_setting_input_params = array_merge( $tag_setting_params, array( 'maxlength' => 255 ) );
$Form->switch_layout( 'none' );
$Form->output = false;
$tinyurl_slug = 'aA1';
$tinyurl_domain = 'http://tiny.url/';
$tinyurl_domain_field = $Form->text( 'tinyurl_domain', $edited_Blog->get_setting( 'tinyurl_domain' ), 20, '', '', 120 );
$tinyurl_domain_note = '<span class="notes">'.sprintf( TB_('Enter absolute URL ending with /, e-g: %s.'), '<code>'.$tinyurl_domain.'</code>' ).'</span>';
$tag_source_field = $Form->text_input( 'tinyurl_tag_source', $edited_Blog->get_setting( 'tinyurl_tag_source' ), 20, '', '', $tag_setting_input_params );
$tag_slug_field = $Form->text_input( 'tinyurl_tag_slug', $edited_Blog->get_setting( 'tinyurl_tag_slug' ), 20, '', '', $tag_setting_input_params );
$tag_extra_term_field = $Form->text_input( 'tinyurl_tag_extra_term', $edited_Blog->get_setting( 'tinyurl_tag_extra_term' ), 20, '', '', $tag_setting_input_params );
$Form->output = true;
$Form->switch_layout( NULL );
$Form->radio( 'tinyurl_type', $edited_Blog->get_setting( 'tinyurl_type' ), array(
array( 'basic', TB_('Basic: Append to collection URL'), TB_('E-g: ')
.url_add_tail( $blogurl, '/'.$tinyurl_slug ) ),
array( 'advanced', TB_('Advanced: Append to special domain URL').':', '', $tinyurl_domain_field.$tinyurl_domain_note, 'class="radio-input"' ),
), TB_('Tiny URLs'), true );
$Form->begin_line( TB_('Tag source') );
$Form->checkbox_input( 'tinyurl_tag_source_enabled', $edited_Blog->get_setting( 'tinyurl_tag_source_enabled' ), '', $tag_setting_params );
printf( TB_('use param %s to record referer domain -> source tag'), $tag_source_field );
echo ' '.get_pro_label();
$Form->end_line();
$Form->begin_line( TB_('Tag slug') );
$Form->checkbox_input( 'tinyurl_tag_slug_enabled', $edited_Blog->get_setting( 'tinyurl_tag_slug_enabled' ), '', $tag_setting_params );
printf( TB_('use param %s to record the tiny slug'), $tag_slug_field );
echo ' '.get_pro_label();
$Form->end_line();
$Form->begin_line( TB_('Tag extra term') );
$Form->checkbox_input( 'tinyurl_tag_extra_term_enabled', $edited_Blog->get_setting( 'tinyurl_tag_extra_term_enabled' ), '', $tag_setting_params );
printf( TB_('use param %s to record an extra keyword'), $tag_extra_term_field );
echo ' <span class="note">'.TB_('E-g: ').'<code>/tinyslug+extra-term/</code>'.'</span>';
echo ' '.get_pro_label();
$Form->end_line();
$Form->end_fieldset();
$Form->buttons( array( array( 'submit', 'submit', TB_('Save Changes!'), 'SaveButton' ) ) );
$Form->end_form();
?>
<script type="text/javascript">
function replace_form_params( result, field_id )
{
field_id = ( typeof( field_id ) == 'undefined' ? '' : ' id="' + field_id + '"' );
return result.replace( '#fieldstart#', '<?php echo str_ireplace( '$id$', "' + field_id + '", format_to_js( $Form->fieldstart ) ); ?>' )
.replace( '#fieldend#', '<?php echo format_to_js( $Form->fieldend ); ?>' )
.replace( '#labelclass#', '<?php echo format_to_js( $Form->labelclass ); ?>' )
.replace( '#labelstart#', '<?php echo format_to_js( $Form->labelstart ); ?>' )
.replace( '#labelend#', '<?php echo format_to_js( $Form->labelend ); ?>' )
.replace( '#inputstart#', '<?php echo format_to_js( $Form->inputstart ); ?>' )
.replace( '#inputend#', '<?php echo format_to_js( $Form->inputend ); ?>' );
}
jQuery( document ).on( 'click', 'span.url_alias_add', function()
{
var this_obj = jQuery( this );
var params = '<?php
global $b2evo_icons_type;
echo empty( $b2evo_icons_type ) ? '' : '&b2evo_icons_type='.$b2evo_icons_type;
?>';
jQuery.ajax({
type: 'GET',
url: '<?php echo get_htsrv_url();?>anon_async.php',
data: 'action=get_url_alias_new_field' + params,
success: function( result )
{
result = ajax_debug_clear( result );
result = replace_form_params( result );
var cur_fieldset_obj = this_obj.closest( '.form-group' );
cur_fieldset_obj.after( result );
jQuery( 'span.url_alias_minus' ).show();
}
});
});
jQuery( document ).on( 'click', 'span.url_alias_minus', function()
{
var this_obj = jQuery( this );
var cur_fieldset_obj = this_obj.closest( '.form-group' );
cur_fieldset_obj.remove();
if( jQuery( 'input.evo_url_alias' ).length == 1 )
{
jQuery( 'span.url_alias_minus' ).hide();
}
});
</script>