* Extended profile - make cloned datefields work correctly with calendar popup
* Validate URLs
This commit is contained in:
parent
365b7ab56e
commit
368cfd8fac
@ -369,6 +369,7 @@ class ExtendedProfileWidget extends Form
|
|||||||
);
|
);
|
||||||
|
|
||||||
$this->out->element('div', 'label', _m('End'));
|
$this->out->element('div', 'label', _m('End'));
|
||||||
|
|
||||||
$this->out->input(
|
$this->out->input(
|
||||||
$id . '-end',
|
$id . '-end',
|
||||||
null,
|
null,
|
||||||
|
@ -46,7 +46,13 @@ SN_EXTENDED.replaceIndex = function(elem, oldIndex, newIndex) {
|
|||||||
|
|
||||||
SN_EXTENDED.resetRow = function(elem) {
|
SN_EXTENDED.resetRow = function(elem) {
|
||||||
$(elem).find('input, textarea').attr('value', '');
|
$(elem).find('input, textarea').attr('value', '');
|
||||||
|
$(elem).find('input').removeAttr('disabled');
|
||||||
$(elem).find("select option[value='office']").attr("selected", true);
|
$(elem).find("select option[value='office']").attr("selected", true);
|
||||||
|
$(elem).find("input:checkbox").attr('checked', false);
|
||||||
|
$(elem).find("input[name$=-start], input[name$=-end]").each(function() {
|
||||||
|
$(this).removeClass('hasDatepicker');
|
||||||
|
$(this).datepicker({ dateFormat: 'd M yy' });
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
SN_EXTENDED.addRow = function() {
|
SN_EXTENDED.addRow = function() {
|
||||||
@ -118,4 +124,21 @@ $(document).ready(function() {
|
|||||||
$('.add_row').live('click', SN_EXTENDED.addRow);
|
$('.add_row').live('click', SN_EXTENDED.addRow);
|
||||||
$('.remove_row').live('click', SN_EXTENDED.removeRow);
|
$('.remove_row').live('click', SN_EXTENDED.removeRow);
|
||||||
|
|
||||||
|
$('input:checkbox[name$=current]').each(function() {
|
||||||
|
var input = $(this).parent().siblings('input[id$=-end]');
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$(input).attr('disabled', 'true');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('input:checkbox[name$=current]').live('click', function() {
|
||||||
|
var input = $(this).parent().siblings('input[id$=-end]');
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
$(input).val('');
|
||||||
|
$(input).attr('disabled', 'true');
|
||||||
|
} else {
|
||||||
|
$(input).removeAttr('disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -262,6 +262,14 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction
|
|||||||
$this->removeAll($user, 'website');
|
$this->removeAll($user, 'website');
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach($sites as $site) {
|
foreach($sites as $site) {
|
||||||
|
|
||||||
|
if (!Validate::uri(
|
||||||
|
$site['value'],
|
||||||
|
array('allowed_schemes' => array('http', 'https')))
|
||||||
|
) {
|
||||||
|
throw new Exception(sprintf(_m('Invalid URL: %s'), $site['value']));
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($site['value'])) {
|
if (!empty($site['value'])) {
|
||||||
++$i;
|
++$i;
|
||||||
$this->saveField(
|
$this->saveField(
|
||||||
@ -287,7 +295,12 @@ class ProfileDetailSettingsAction extends ProfileSettingsAction
|
|||||||
$expArray = array();
|
$expArray = array();
|
||||||
|
|
||||||
foreach ($experiences as $exp) {
|
foreach ($experiences as $exp) {
|
||||||
list($company, $current, $end, $start) = array_values($exp);
|
if (sizeof($experiences) == 4) {
|
||||||
|
list($company, $current, $end, $start) = array_values($exp);
|
||||||
|
} else {
|
||||||
|
$end = null;
|
||||||
|
list($company, $current, $start) = array_values($exp);
|
||||||
|
}
|
||||||
if (!empty($company)) {
|
if (!empty($company)) {
|
||||||
$expArray[] = array(
|
$expArray[] = array(
|
||||||
'company' => $company,
|
'company' => $company,
|
||||||
|
Loading…
Reference in New Issue
Block a user