' . $lang['systemsetup'] . '
');
$page_def[] = config_add_text_input('applicationname', $lang['setup-applicationname'], false, 420, false, '', true);
$page_def[] = config_add_text_input('email_from', $lang['setup-emailfrom'], false, 420, false, '', true);
$page_def[] = config_add_text_input('email_notify', $lang['setup-emailnotify'], false, 420, false, '', true);
$page_def[] = config_add_single_select(
'user_local_timezone',
$lang['systemconfig_user_local_timezone'],
timezone_identifiers_list(),
false,
420,
'',
true
);
$page_def[] = config_add_text_input(
'download_filename_format',
$lang['setup-download_filename_format'],
false,
420,
false,
'',
true,
false,
'resourceadmin/download_filename_format'
);
$page_def[] = config_add_html('
');
// User interface section
$page_def[] = config_add_html('' . $lang['userpreference_user_interface'] . '
');
// Font selection
$fontsdir = scandir(__DIR__ . "/../../css/fonts/");
$fonts = array();
foreach ($fontsdir as $f) {
if (strpos($f, ".css") !== false) { // Valid font CSS definition
$fn = substr($f, 0, strlen($f) - 4);
$fonts[$fn] = $fn;
}
}
$page_def[] = config_add_single_select('global_font', $lang['font'], $fonts, true, 420, '', true, "jQuery('#global_font_link').attr('href','" . $baseurl . "/css/fonts/' + this.value + '.css');");
$page_def[] = config_add_file_input(
'custom_font',
$lang['systemconfig_customfont_label'],
$baseurl . '/pages/admin/admin_system_config.php',
316,
array('woff2', 'woff', 'ttf', 'otf')
);
$page_def[] = config_add_file_input(
'linkedheaderimgsrc',
$lang['systemconfig_linkedheaderimgsrc_label'],
$baseurl . '/pages/admin/admin_system_config.php',
316,
array('gif','jpg','png','svg'),
true
);
$page_def[] = config_add_file_input(
'linkedheaderimgsrc_dark',
$lang['systemconfig_linkedheaderimgsrc_dark_label'],
$baseurl . '/pages/admin/admin_system_config.php',
316,
array('gif','jpg','png','svg'),
true
);
$page_def[] = config_add_file_input(
'header_favicon',
$lang['systemconfig_header_favicon_label'],
$baseurl . '/pages/admin/admin_system_config.php',
316,
array('ico','png','svg'),
true
);
$page_def[] = config_add_colouroverride_input(
'header_colour_style_override',
$lang["setup-headercolourstyleoverride"],
'',
null,
true,
"jQuery('#Header').css('background',value);"
);
$page_def[] = config_add_colouroverride_input(
'header_link_style_override',
$lang["setup-headerlinkstyleoverride"],
'',
null,
true,
"jQuery('#HeaderNav1 li a').css('color',value);jQuery('#HeaderNav1 li.UploadButton a').css('color','white');jQuery('#HeaderNav2 a').css('color',value);jQuery('#HeaderNav2 li').css('border-color', value);"
);
$page_def[] = config_add_colouroverride_input(
'home_colour_style_override',
$lang["setup-homecolourstyleoverride"],
'',
null,
true,
"jQuery('#SearchBox').css('background',value); jQuery('#HomeSiteText.dashtext').css('background',value); jQuery('.HomePanelIN').css('background',value); jQuery('#BrowseBar').css('background',value); jQuery('.SearchBarTab.SearchBarTabSelected').css('background', value);"
);
$page_def[] = config_add_colouroverride_input(
'collection_bar_background_override',
$lang["setup-collectionbarbackground"],
'',
null,
true,
"jQuery('.CollectBack').css('background',value);"
);
$page_def[] = config_add_colouroverride_input(
'collection_bar_foreground_override',
$lang["setup-collectionbarforeground"],
'',
null,
true,
"jQuery('.CollectionPanelShell').css('background-color',value);jQuery('#CollectionDiv select').css('background-color',value); jQuery('.ui-layout-resizer').css('background',value);"
);
$page_def[] = config_add_colouroverride_input(
'button_colour_override',
$lang["setup-buttoncolouroverride"],
'',
null,
true,
"jQuery('button:not(.search-icon),input[type=submit],input[type=button],.RecordPanel .RecordDownloadSpace .DownloadDBlend a,.UploadButton a').css('background-color',value);"
);
$page_def[] = config_add_single_select('thumbs_default', $lang['userpreference_thumbs_default_label'], array('show' => $lang['showthumbnails'], 'hide' => $lang['hidethumbnails']), true, 420, '', true);
$page_def[] = config_add_boolean_select('resource_view_modal', $lang['userpreference_resource_view_modal_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('modal_default', $lang['systemconfig_modal_default'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('basic_simple_search', $lang['userpreference_basic_simple_search_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('comments_resource_enable', $lang['systemconfig_comments'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_single_select('upload_then_edit', $lang['default_upload_sequence'], array(true => $lang['upload_first_then_set_metadata'], false => $lang['set_metadata_then_upload']), true, 420, '', true);
$page_def[] = config_add_boolean_select('byte_prefix_mode_decimal', $lang['byte_prefix_mode_decimal'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('tilenav', $lang['userpreference_tilenavdefault'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select(
'use_native_input_for_date_field',
$lang['systemconfig_use_native_input_for_date_field'],
$enable_disable_options,
420,
'',
true,
null,
false,
$lang['systemconfig_native_date_input_no_partials_supported'],
);
$page_def[] = config_add_html('
');
// Watermark section
$page_def[] = config_add_html('' . $lang['watermark_header'] . '
');
$page_def[] = config_add_file_input(
'watermark',
$lang['watermark_label'],
$baseurl . '/pages/admin/admin_system_config.php',
316,
array('png'),
true
);
$page_def[] = config_add_html('
');
// Multilingual section
$page_def[] = config_add_html('' . $lang['systemconfig_multilingual'] . '
');
// Add localised language for display when selecting languages.
$display_languages = $languages;
foreach ($display_languages as $key => $value) {
$display_languages[$key] = get_display_language($key, $value);
}
$page_def[] = config_add_single_select('defaultlanguage', $lang['systemconfig_default_language_label'], $display_languages, true, 420, '', true);
$page_def[] = config_add_boolean_select('disable_languages', $lang['disable_languages'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('browser_language', $lang['systemconfig_browser_language_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Search section
$page_def[] = config_add_html('' . $lang['searchcapability'] . '
');
$sort_order_fields = array('relevance' => $lang['relevance']);
if ($popularity_sort) {
$sort_order_fields['popularity'] = $lang['popularity'];
}
if ($orderbyrating) {
$sort_order_fields['rating'] = $lang['rating'];
}
if ($date_column) {
$sort_order_fields['date'] = $lang['date'];
}
if ($colour_sort) {
$sort_order_fields['colour'] = $lang['colour'];
}
if ($order_by_resource_id) {
$sort_order_fields['resourceid'] = $lang['resourceid'];
}
$sort_order_fields['resourcetype'] = $lang['type'];
foreach ($sort_fields as $field) {
$field_data = get_resource_type_field($field);
if ($field_data !== false) {
$sort_order_fields["field$field"] = $field_data["title"];
}
}
$page_def[] = config_add_single_select(
'default_sort',
$lang['userpreference_default_sort_label'],
$sort_order_fields,
true,
420,
'',
true
);
$page_def[] = config_add_single_select(
'default_sort_direction',
$lang['userpreference_default_sort_order_label'],
['ASC' => 'Ascending', 'DESC' => 'Descending'],
true,
420,
'',
true
);
$default_display_array = array();
$default_display_array['thumbs'] = $lang['largethumbstitle'];
if ($xlthumbs || $GLOBALS['default_display'] == 'xlthumbs') {
$default_display_array['xlthumbs'] = $lang['xlthumbstitle'];
}
$default_display_array['list'] = $lang['listtitle'];
$default_display_array['strip'] = $lang['striptitle'];
$page_def[] = config_add_single_select('default_perpage', $lang['userpreference_default_perpage_label'], $results_display_array, false, 420, '', true);
$page_def[] = config_add_single_select(
'default_display',
$lang['userpreference_default_display_label'],
$default_display_array,
true,
420,
'',
true
);
$page_def[] = config_add_boolean_select('archive_search', $lang['stat-archivesearch'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('display_resource_id_in_thumbnail', $lang['systemconfig_display_resource_id_in_thumbnail_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('advanced_search_contributed_by', $lang['systemconfig_advanced_search_contributed_by_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('advanced_search_media_section', $lang['systemconfig_advanced_search_media_section_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Navigation section
$page_def[] = config_add_html('' . $lang['systemconfig_navigation'] . '
');
$page_def[] = config_add_boolean_select('help_link', $lang['systemconfig_help_link_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('recent_link', $lang['systemconfig_recent_link_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('mycollections_link', $lang['systemconfig_mycollections_link_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('myrequests_link', $lang['systemconfig_myrequests_link_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('research_link', $lang['systemconfig_research_link_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('themes_navlink', $lang['systemconfig_themes_navlink_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('use_theme_as_home', $lang['systemconfig_use_theme_as_home_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('use_recent_as_home', $lang['systemconfig_use_recent_as_home_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_html('
');
// Browse Bar section
$page_def[] = config_add_html('' . $lang['systemconfig_browse_bar_section'] . '
');
$page_def[] = config_add_boolean_select('browse_bar', $lang['systemconfig_browse_bar_enable'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('browse_bar_workflow', $lang['systemconfig_browse_bar_workflow'], $yes_no_options, 420, '', true);
$page_def[] = config_add_html('
');
// Collection section
$page_def[] = config_add_html('' . $lang['collections'] . '
');
$page_def[] = config_add_boolean_select('show_collection_name', $lang['systemconfig_show_collection_name'], $yes_no_options, 420, '', true);
$page_def[] = config_add_html('
');
// Featured Collection section
$page_def[] = config_add_html('' . $lang['systemconfig_featured_collections'] . '
');
$page_def[] = config_add_boolean_select('enable_themes', $lang['systemconfig_enable_themes'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('themes_simple_view', $lang['systemconfig_themes_simple_view'], $yes_no_options, 420, '', true);
$page_def[] = config_add_html('
');
// Workflow section
$page_def[] = config_add_html('' . $lang['systemconfig_workflow'] . '
');
$page_def[] = config_add_boolean_select('research_request', $lang['researchrequest'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Actions section
$page_def[] = config_add_html('' . $lang['actions'] . '
');
$page_def[] = config_add_boolean_select('actions_enable', $lang['actions-enable'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('actions_resource_requests', $lang['actions_resource_requests_default'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('actions_account_requests', $lang['actions_account_requests_default'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Metadata section
$page_def[] = config_add_html('' . $lang['metadata'] . '
');
$page_def[] = config_add_boolean_select('metadata_report', $lang['metadata-report'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('metadata_read_default', $lang['embedded_metadata'], array($lang['embedded_metadata_donot_extract_option'], $lang['embedded_metadata_extract_option']), 420, '', true);
$page_def[] = config_add_html('
');
// User accounts section
$page_def[] = config_add_html('' . $lang['systemconfig_user_accounts'] . '
');
$page_def[] = config_add_boolean_select('allow_account_request', $lang['systemconfig_allow_account_request_label'], $yes_no_options, 420, '', true);
$page_def[] = config_add_boolean_select('terms_download', $lang['systemconfig_terms_download_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('terms_login', $lang['systemconfig_terms_login_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('terms_upload', $lang['systemconfig_terms_upload_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('user_rating', $lang['systemconfig_user_rating_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Security section
$page_def[] = config_add_html('' . $lang['systemconfig_security'] . '
');
$page_def[] = config_add_single_select(
'password_min_length',
$lang['systemconfig_password_min_length_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_min_alpha',
$lang['systemconfig_password_min_alpha_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_min_numeric',
$lang['systemconfig_password_min_numeric_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_min_uppercase',
$lang['systemconfig_password_min_uppercase_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_min_special',
$lang['systemconfig_password_min_special_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_expiry',
$lang['systemconfig_password_expiry_label'],
array_merge(array(0 => $lang['never']), range(1, 90)),
true,
420,
'',
true
);
$page_def[] = config_add_single_select(
'max_login_attempts_per_ip',
$lang['systemconfig_max_login_attempts_per_ip_label'],
range(10, 50),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'max_login_attempts_per_username',
$lang['systemconfig_max_login_attempts_per_username_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'max_login_attempts_wait_minutes',
$lang['systemconfig_max_login_attempts_wait_minutes_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_single_select(
'password_brute_force_delay',
$lang['systemconfig_password_brute_force_delay_label'],
range(0, 30),
false,
420,
'',
true
);
$page_def[] = config_add_boolean_select('share_password_required', $lang['systemconfig_external_share_requires_password_label'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// API section
$page_def[] = config_add_html('' . $lang['systemconfig_api'] . '
');
$page_def[] = config_add_boolean_select('iiif_enabled', $lang['iiif_enable_option'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Search engines section
$page_def[] = config_add_html('' . $lang['system_config_search_engines'] . '
');
$page_def[] = config_add_boolean_select('search_engine_noindex', $lang['search_engine_noindex'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_boolean_select('search_engine_noindex_external_shares', $lang['search_engine_noindex_external_shares'], $enable_disable_options, 420, '', true);
$page_def[] = config_add_html('
');
// Debug section
$page_def[] = config_add_html(
'' . escape($lang['systemconfig_debug']) . '
'
. ''
);
// Determine the time left on debug log override
$debug_log_default_duration = 300;
$time_left = get_sysvar('debug_override_expires', time()) - time();
if ($time_left > 0) {
$debug_log_override_time_left = $time_left;
$system_config_debug_log_duration_question_class = '';
$debug_log_override_timer_active = true;
} else {
// reset
remove_config_option(null, 'system_config_debug_log_interim');
$system_config_debug_log_duration_question_class = 'DisplayNone';
$debug_log_override_timer_active = false;
}
$debug_log_override_time_left ??= $debug_log_default_duration;
// "Faking" a config option so that we can apply some logic before deciding to override debug_log
$system_config_debug_log_interim = $lang['off'];
$debug_log_options = [
$lang['systemconsoleonallusers'],
$lang['systemconfig_debug_log_on_specific_user'],
$lang['off'],
];
if ($debug_log) {
$debug_log_options = [$lang['systemconsoleonpermallusers']];
$system_config_debug_log_interim = $lang['systemconsoleonpermallusers'];
}
get_config_option([], 'system_config_debug_log_interim', $system_config_debug_log_interim);
$page_def[] = config_add_single_select(
'system_config_debug_log_interim',
$lang['systemconsoledebuglog'],
$debug_log_options,
false,
420,
'',
true,
'debug_log_selector_onchange(this);'
);
// Create a temp OB for render_text_question() call below to prevent modifying header information when we include header.php later
ob_start();
$autocomplete_user_scope = 'SystemConfigDebugLogSpecificUser_';
$debug_override_user = (int) get_sysvar('debug_override_user', -1);
$single_user_select_field_id = 'debug_override_user';
$single_user_select_field_value = $debug_override_user;
$single_user_select_field_onchange = 'create_debug_log_override();';
$SystemConfigDebugForUser_class = $system_config_debug_log_interim === $lang['systemconfig_debug_log_on_specific_user']
? ''
: 'DisplayNone';
?>
%ss %s',
$debug_log_override_time_left,
escape($lang['remaining'])
),
true,
' onchange="create_debug_log_override(undefined, this.value);"',
$debug_log_default_duration,
['div_class' => [$system_config_debug_log_duration_question_class]]
);
$user_select_html = ob_get_contents();
ob_end_clean();
$page_def[] = config_add_html($user_select_html);
$page_def[] = config_add_html('
');
// End of Debug section
// Let plugins hook onto page definition and add their own configs if needed
// or manipulate the list
$plugin_specific_definition = hook('add_system_config_page_def', '', array($page_def));
if (is_array($plugin_specific_definition) && !empty($plugin_specific_definition)) {
$page_def = $plugin_specific_definition;
}
// Strip out any configs that are blocked from being edited in the UI.
if (count($system_config_hide) > 0) {
$new_page_def = array();
for ($n = 0; $n < count($page_def); $n++) {
if (!in_array($page_def[$n][1], $system_config_hide)) {
$new_page_def[] = $page_def[$n];
} // Add if not blocked
}
$page_def = $new_page_def;
}
// Process autosaving requests
// Note: $page_def must be defined by now in order to make sure we only save options that we've defined
if ('true' === getval('ajax', '') && 'true' === getval('autosave', '')) {
$response['success'] = true;
$response['message'] = '';
$autosave_option_name = getval('autosave_option_name', '');
$autosave_option_value = getval('autosave_option_value', '');
// Search for the option name within our defined (allowed) options
// if it is not there, error and don't allow saving it
$page_def_option_index = array_search($autosave_option_name, array_column($page_def, 1));
if (false === $page_def_option_index) {
$response['success'] = false;
$response['message'] = $lang['systemconfig_option_not_allowed_error'];
echo json_encode($response);
exit();
}
if (!set_config_option(null, $autosave_option_name, $autosave_option_value)) {
$response['success'] = false;
}
echo json_encode($response);
exit();
}
if ($ajax && getval('action', '') === 'create_debug_log_override' && enforcePostRequest($ajax)) {
$debug_user = getval('debug_override_user', '');
$debug_expires = getval('debug_override_expires', '');
if ($debug_user !== '' && $debug_expires !== '') {
create_debug_log_override($debug_user, $debug_expires);
unset($GLOBALS['debug_log_override']);
ajax_send_response(200, ajax_response_ok_no_data());
}
ajax_send_response(400, ajax_response_fail(ajax_build_message($lang['error_invalid_input'])));
}
config_process_file_input($page_def, 'system/config', $baseurl . '/pages/admin/admin_system_config.php');
config_remove_user_preferences($page_def);
# $lang is not a config option!
unset($system_wide_config_options['lang']);
foreach ($system_wide_config_options as $key => $value) {
// Some varible names are used multiple times, only get the first value
$GLOBALS[$key] = $GLOBALS[$key] ?? $value;
}
# Get user ref for use in header.php when loading profile image.
if (!isset($userref)) {
$userref = $userdata[0]['ref'];
}
$page_def = config_filter_by_search($page_def, [], getval("filter", ""), getval("only_modified", "no"));
include '../../include/header.php';
?>
$lang["systemsetup"],
'href' => $baseurl_short . "pages/admin/admin_home.php",
'menu' => true
),
array(
'title' => $lang["systemconfig"],
)
);
renderBreadcrumbs($links_trail);
?>