OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openproject/app/assets/javascripts/settings.js.erb

125 lines
4.7 KiB

<%#-- copyright
OpenProject is a project management system.
Copyright (C) 2012-2018 the OpenProject Foundation (OPF)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 3.
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
Copyright (C) 2006-2017 Jean-Philippe Lang
Copyright (C) 2010-2013 the ChiliProject Team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See docs/COPYRIGHT.rdoc for more details.
++#%>
(function($) {
$(function() {
$('#settings_session_ttl_enabled').on('change', function(){
$('#settings_session_ttl_container').toggle($(this).is(':checked'));
}).trigger('change');
/** Sync SCM vendor select when enabled SCMs are changed */
$('[name="settings[enabled_scm][]"]').change(function() {
var wasDisabled = !this.checked,
vendor = this.value,
select = $('#settings_repositories_automatic_managed_vendor'),
option = select.find('option[value="' + vendor + '"]');
// Skip non-manageable SCMs
if (option.length === 0) {
return;
}
option.prop('disabled', wasDisabled);
if (wasDisabled && option.prop('selected')) {
select.val('');
}
});
/* Javascript for Settings::TextSettingCell */
$(".lang-select-switch").change(function() {
var self = $(this);
var id = self.attr("id");
var lang = self.val();
$("." + id).hide();
$("#" + id + "-" + lang).show();
});
$('.admin-settings--form').submit(function() {
/* Update consent time if consent required */
if ($('#settings_consent_required').is(':checked') && $('#toggle_consent_time').is(':checked')) {
$('#settings_consent_time')
.val(new Date().toISOString())
.prop('disabled', false);
}
return true;
});
/** Toggle notification settings fields */
$("#email_delivery_method_switch").on("change", function() {
delivery_method = $(this).val();
$(".email_delivery_method_settings").hide();
$("#email_delivery_method_" + delivery_method).show();
}).trigger("change");
$('#settings_smtp_authentication').on('change', function() {
var isNone = $(this).val() === 'none';
$('#settings_smtp_user_name,#settings_smtp_password')
.closest('.form--field')
.toggle(!isNone);
});
/** Toggle repository checkout fieldsets required when option is disabled */
$('.settings-repositories--checkout-toggle').change(function() {
var wasChecked = this.checked,
fieldset = $(this).closest('fieldset');
fieldset
.find('input,select')
.filter(':not([type=checkbox])')
.filter(':not([type=hidden])')
.removeAttr('required') // Rails 4.0 still seems to use attribute
.prop('required', wasChecked);
})
/** Toggle highlighted attributes visibility depending on if the highlighting mode 'inline' was selected*/
$('.settings--highlighting-mode select').change(function() {
var highlightingMode = $(this).val();
$(".settings--highlighted-attributes").toggle(highlightingMode === "inline")
})
/** Initialize hightlighted attributes checkboxes. If none is selected, it means we want them all. So let's
* show them all as selected.
* On submitting the form, we remove all checkboxes before sending to communicate, we actually want all and not
* only the selected.*/
if ($(".settings--highlighted-attributes input[type='checkbox']:checked").length == 0) {
$(".settings--highlighted-attributes input[type='checkbox']").prop("checked", true);
}
$('#tab-content-work_packages form').submit(function() {
var availableAttributes = $(".settings--highlighted-attributes input[type='checkbox']");
var selectedAttributes = $(".settings--highlighted-attributes input[type='checkbox']:checked");
if (selectedAttributes.length == availableAttributes.length) {
availableAttributes.prop("checked", false);
}
})
});
}(jQuery));