diff --git a/docs/upgrades/upgrade_7.1.3-7.2.0.pl b/docs/upgrades/upgrade_7.1.3-7.2.0.pl index bf9e9516e..1c50b531f 100644 --- a/docs/upgrades/upgrade_7.1.3-7.2.0.pl +++ b/docs/upgrades/upgrade_7.1.3-7.2.0.pl @@ -28,11 +28,19 @@ addLastExportedAs($session); addDeletionWorkflows($session); addRSSFromParent($session); reorderSurveyCollateral($session); +addNewProfileSetting($session); deleteFiles($session); fixAds($session); finish($session); # this line required +#-------------------------------------------------- +sub addNewProfileSetting { + my $session = shift; + print "\tAdding new profile setting to force image only uploads on image form controls.\n" unless ($quiet); + $session->db->write("alter table userProfileField add column forceImageOnly int(11) default 1"); +} + #-------------------------------------------------- sub deleteFiles { my $session = shift; diff --git a/lib/WebGUI/Form/Image.pm b/lib/WebGUI/Form/Image.pm index 216f0490b..9dcf7c795 100644 --- a/lib/WebGUI/Form/Image.pm +++ b/lib/WebGUI/Form/Image.pm @@ -73,6 +73,9 @@ sub definition { profileEnabled=>{ defaultValue=>1 }, + forceImageOnly=>{ + defaultValue=>0 + }, }); return $class->SUPER::definition($session, $definition); } @@ -142,7 +145,7 @@ sub getValueFromPost { if ($storage->isImage($file)) { $storage->generateThumbnail($file); } - else { + elsif ($self->get("forceImageOnly")) { $storage->delete; $id = undef; } diff --git a/lib/WebGUI/Operation/ProfileSettings.pm b/lib/WebGUI/Operation/ProfileSettings.pm index b691d04eb..0b55f7cb4 100644 --- a/lib/WebGUI/Operation/ProfileSettings.pm +++ b/lib/WebGUI/Operation/ProfileSettings.pm @@ -266,6 +266,15 @@ sub www_editProfileField { -hoverHelp=>$i18n->get('474 description'), -value=>$data->{required} ); + if ($data->{fieldType} eq "Image") { + $f->yesNo( + -name=>"forceImageOnly", + -label=>$i18n->echo("Force Image Only Uploads"), + -hoverHelp=>$i18n->echo("If set to yes, this form control will only allow image file types to be uploaded through it."), + -value=>$data->{forceImageOnly}, + -defaultValue=>1, + ); + } my $fieldType = WebGUI::Form::FieldType->new($session, -name=>"fieldType", -label=>$i18n->get(486), @@ -330,6 +339,7 @@ sub www_editProfileFieldSave { possibleValues=>$session->form->textarea("possibleValues"), dataDefault=>$session->form->textarea("dataDefault"), fieldType=>$session->form->fieldType("fieldType"), + forceImageOnly=>$session->form->fieldType("yesNo"), ); my $categoryId = $session->form->selectBox("profileCategoryId"); if ($session->form->process("new")) { diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index 6625a7ff9..75ba4b69e 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -160,6 +160,7 @@ sub formField { $orderedValues->{$ov} = $values->{$ov}; } $properties->{options} = $orderedValues; + $properties->{forceImageOnly} = $self->get("forceImageOnly"); my $default; if ($skipDefault) { } elsif (defined $self->session->form->process($properties->{name})) {