<?php
namespace App\Utility;
use App\Form\FilmApplicationMemberType;
use App\Repository\ProductRepository;
use App\Repository\UserRepository;
use App\String\Constant;
use App\String\ProjectString;
use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
use EasyCorp\Bundle\EasyAdminBundle\Field\HiddenField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ImageField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
use EasyCorp\Bundle\EasyAdminBundle\Field\MoneyField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextareaField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\UrlField;
use Symfony\Component\Validator\Constraints\File;
class FormGenerator
{
public function generateForm(string $type) {
$form = [];
switch ($type) {
case Constant::PROJECT_FORM:
$form = [
FormField::addTab('Administrator'),
HiddenField::new('status')->hideOnIndex()->hideOnDetail(),
HiddenField::new('tabActive')->hideOnIndex()->hideOnDetail(),
ChoiceField::new('filmProjectFunding.approvedFiscal', ProjectString::PROJECT_FUNDING_APPROVE_FISCAL)->setChoices([
'Yes' => true,
])
->renderExpanded()
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('fiscalSponsorship')
->setFormTypeOptions([
'label_html' => true
]),
TextField::new('filmProjectAdmin.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('administratorFirstName'),
TextField::new('filmProjectAdmin.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('administratorLastName'),
TextField::new('filmProjectAdmin.address', ProjectString::PROJECT_MEMBER_ADDRESS)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorAddress'),
TextField::new('filmProjectAdmin.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorCity'),
ChoiceField::new('filmProjectAdmin.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectAdmin.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectAdmin.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TelephoneField::new('filmProjectAdmin.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorTelephone'),
TextField::new('filmProjectAdmin.email', ProjectString::PROJECT_MEMBER_EMAIL)->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('administratorEmail'),
ChoiceField::new('filmProjectAdmin.gender', ProjectString::PROJECT_MEMBER_GENDER)->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('administratorGender'),
ChoiceField::new('filmProjectAdmin.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(true)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('administratorIsDiverse'),
ChoiceField::new('filmProjectAdmin.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(true)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('administratorIsAborigin'),
FormField::addTab('Film Team'),
FormField::addPanel('Producer\'s Details')->setHelp('one name only, further team members can be added below'),
TextField::new('filmProjectProducer.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('producerFirstName'),
TextField::new('filmProjectProducer.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('producerLastName'),
TextareaField::new('filmProjectProducer.biography', ProjectString::PROJECT_MEMBER_BIOGRAPHY)->setRequired(true)->setMaxLength(1000)->setColumns(12)->hideOnIndex()->setHelp('Content limited to 1000 characters')->addCssClass('producerBio')->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectProducer.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TextField::new('filmProjectProducer.website', ProjectString::PROJECT_MEMBER_WEBSITE)->setColumns(3)->hideOnIndex(),
TextField::new('filmProjectProducer.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerCity'),
ChoiceField::new('filmProjectProducer.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectProducer.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectProducer.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerTelephone'),
TextField::new('filmProjectProducer.email', 'Email')->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('producerEmail'),
ChoiceField::new('filmProjectProducer.gender', 'Gender')->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('producerGender'),
ChoiceField::new('filmProjectProducer.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('producerIsDiverse'),
ChoiceField::new('filmProjectProducer.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('producerIsAborigin'),
FormField::addPanel('Director\'s Details')->setHelp('one name only, further team members can be added below'),
TextField::new('filmProjectDirector.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('directorFirstName'),
TextField::new('filmProjectDirector.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('directorLastName'),
TextareaField::new('filmProjectDirector.biography', ProjectString::PROJECT_MEMBER_BIOGRAPHY)->setRequired(true)->setMaxLength(1000)->setColumns(12)->hideOnIndex()->setHelp('Content limited to 1000 characters')->addCssClass('directorBio')->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectDirector.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TextField::new('filmProjectDirector.website', ProjectString::PROJECT_MEMBER_WEBSITE)->setColumns(3)->hideOnIndex(),
TextField::new('filmProjectDirector.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorCity'),
ChoiceField::new('filmProjectDirector.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectDirector.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectDirector.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorTelephone'),
TextField::new('filmProjectDirector.email', 'Email')->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('directorEmail'),
ChoiceField::new('filmProjectDirector.gender', 'Gender')->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('directorGender'),
ChoiceField::new('filmProjectDirector.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('directorIsDiverse'),
ChoiceField::new('filmProjectDirector.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('directorIsAborigin'),
FormField::addPanel('Additional Team Member\'s Details'),
CollectionField::new('filmProjectMembers', 'Team Member\'s Details')
->setEntryIsComplex()
->setEntryType(FilmApplicationMemberType::class)
// ->renderExpanded()
->setColumns('col-12')
->addCssClass('custom-collection-form')
->hideOnIndex(),
FormField::addTab('Project Details'),
TextField::new('title', ProjectString::PROJECT_DETAILS_TITLE)->setRequired(true)->setColumns(12)->hideOnIndex()->addCssClass('projectTitle'),
ChoiceField::new('productionStage', ProjectString::PROJECT_DETAILS_PRODUCTION_STAGE)->setRequired(true)->setChoices([
'Development' => 'Development',
'Production' => 'Production',
'Post-production' => 'Post-Production',
'Completed' => 'Film Complete',
'Outreach / Impact' => 'Outreach',
])->setColumns(6)->hideOnIndex()->addCssClass('productionStage'),
ChoiceField::new('productionType', ProjectString::PROJECT_DETAILS_PRODUCTION_TYPE)->setRequired(true)->setChoices(DropdownValues::FILM_PRODUCTION_TYPES)->setColumns(6)->hideOnIndex()->addCssClass('productionType'),
ChoiceField::new('filmProjectDetails.isEpisodes', ProjectString::PROJECT_DETAILS_EPISODES)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(2)->hideOnIndex()
->setFormTypeOptions(['placeholder' => false]),
IntegerField::new('filmProjectDetails.episodeNumber', ProjectString::PROJECT_DETAILS_NUMBER_OF_EPISODES)->setColumns(4)->hideOnIndex()->setFormTypeOptions([
'attr' => [
'min' => 0,
"onInput" => "this.value = Math.abs(this.value)"
]
]),
ChoiceField::new('filmProjectDetails.isShortFilm', ProjectString::PROJECT_DETAILS_IS_SHORT_FILM)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(2)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
IntegerField::new('filmProjectDetails.shortFilmLength', ProjectString::PROJECT_DETAILS_SHORT_FILM_LENGTH)->setColumns(4)->hideOnIndex()->addCssClass('shortFilmLength')->setFormTypeOptions([
'attr' => [
'min' => 0,
"onInput" => "this.value = Math.abs(this.value)"
]
]),
IntegerField::new('filmProjectDetails.productionLength', ProjectString::PROJECT_DETAILS_PRODUCTION_LENGTH)->setRequired(true)->setColumns(8)->hideOnIndex()->addCssClass('lengthOfProductionInMinutes'),
ImageField::new('filmProjectDetails.projectHeroImage', ProjectString::PROJECT_DETAILS_PROJECT_HERO_IMAGE)
// ->setRequired(true)
->setBasePath('uploads/projects')
->setUploadDir('public/uploads/projects')
->setColumns(4)
->hideOnIndex()
->addCssClass('projectHeroImage')->setFormTypeOptions([
'label_attr' => ['class' => 'required'],
])
->setHelp('Recommended resolution is 1280 x 720 and maximum file is limited to 5MB'),
UrlField::new('filmProjectDetails.projectTrailerLink', ProjectString::PROJECT_DETAILS_TRAILER_LINK)->setColumns(8)->hideOnIndex(),
TextField::new('filmProjectDetails.projectTrailerPassword', ProjectString::PROJECT_DETAILS_TRAILER_PASSWORD)
->setColumns(4)
// ->setFormType(PasswordType::class)
->hideOnIndex(),
ChoiceField::new('filmProjectDetails.isCompleted', ProjectString::PROJECT_DETAILS_IS_COMPLETED)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(4)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
TextField::new('filmProjectDetails.projectCompleteLink', ProjectString::PROJECT_DETAILS_COMPLETE_LINK)->setColumns(8)->hideOnIndex(),
TextField::new('filmProjectDetails.screenerPassword', ProjectString::PROJECT_DETAILS_SCREENER_PASSWORD)
->setColumns(12)
// ->setFormType(PasswordType::class)
->hideOnIndex(),
// ChoiceField::new('filmProjectDetails.isDisplayDonation', ProjectString::PROJECT_DETAILS_DISPLAY_DONATION)->setChoices([
// 'Yes' => true,
// 'No' => false,
// ])->renderExpanded()->setColumns(8)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
// SOCIAL MEDIA
FormField::addPanel('Social media'),
TextField::new('filmProjectDetails.twitter', ProjectString::PROJECT_DETAILS_TWITTER)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.instagram', ProjectString::PROJECT_DETAILS_INSTAGRAM)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.facebook', ProjectString::PROJECT_DETAILS_FACEBOOK)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.youtube', ProjectString::PROJECT_DETAILS_YOUTUBE)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.vimeo', ProjectString::PROJECT_DETAILS_VIMEO)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.website', ProjectString::PROJECT_DETAILS_WEBSITE)
->setColumns(6)
->hideOnIndex(),
FormField::addTab('Story & Impact'),
TextareaField::new('filmProjectStoryImpact.synopsis', ProjectString::PROJECT_STORY_IMPACT_SYNOPSIS)
->addCssClass('synopsis')
->setRequired(true)
// ->setMaxLength(2000)
->setColumns(12)
->hideOnIndex()
->setHelp('Content limited to 2000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 2000]])
,
TextareaField::new('filmProjectStoryImpact.logline', ProjectString::PROJECT_STORY_IMPACT_LOGLINE)
->setRequired(true)
// ->setMaxLength(120)
->setColumns(12)
->hideOnIndex()->addCssClass('logline')
->setHelp('Content limited to 120 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 120]]),
TextareaField::new('filmProjectStoryImpact.issueAddressed', ProjectString::PROJECT_STORY_IMPACT_ISSUE_ADDRESSED)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->addCssClass('issueAddressed')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextareaField::new('filmProjectStoryImpact.creativeTreatment', ProjectString::PROJECT_STORY_IMPACT_CREATIVE_TREATMENT)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->addCssClass('creativeTreatment')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.primaryImpactArea', ProjectString::PROJECT_STORY_IMPACT_PRIMARY_IMPACT_AREA)->setChoices(DropdownValues::IMPACT_VALUES)
->setRequired(true)
->renderExpanded()
->setColumns(12)
->hideOnIndex()->addCssClass('primaryImpactArea'),
ChoiceField::new('filmProjectStoryImpact.secondaryImpactArea', ProjectString::PROJECT_STORY_IMPACT_SECOND_IMPACT_AREA)->setChoices(DropdownValues::IMPACT_VALUES)
->setRequired(false)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('secondaryImpactArea'),
ChoiceField::new('filmProjectStoryImpact.topicCovered', ProjectString::PROJECT_STORY_IMPACT_TOPIC_COVERED)->setChoices(DropdownValues::TOPIC_VALUES) // TODO: change values of this topic
// ->renderExpanded()
->setRequired(true)
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()
->addCssClass('topicCovered'),
TextareaField::new('filmProjectStoryImpact.impactVisionStatement', ProjectString::PROJECT_STORY_IMPACT_IMPACT_VISION_STATEMENT)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('impactVisionStatement')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.outcomes', ProjectString::PROJECT_STORY_IMPACT_OUTCOMES)->setChoices(DropdownValues::OUTCOME_VALUES)
->setRequired(true)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('filmOutcomes'),
TextareaField::new('filmProjectStoryImpact.ourcomeInformation', ProjectString::PROJECT_STORY_IMPACT_OUTCOMES_INFORMATION)
->addCssClass('filmOutcomesInfo')
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectStoryImpact.audiences', ProjectString::PROJECT_STORY_IMPACT_AUDIENCES)
->setRequired(true)
->setColumns(12)
->hideOnIndex()->addCssClass('filmAudiences'),
TextareaField::new('filmProjectStoryImpact.relationshipAccess', ProjectString::PROJECT_STORY_IMPACT_RELATIONSHIP_ACCESS)
->setRequired(false)
// ->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('communityRelationship')
->setHelp('Content limited to 1000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 1000]])
,
TextareaField::new('filmProjectStoryImpact.whoBenefit', ProjectString::PROJECT_STORY_IMPACT_WHO_BENEFIT)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('filmBenefits')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.confirmedRole', ProjectString::PROJECT_STORY_IMPACT_CONFIRMED_ROLE)->setChoices(DropdownValues::ROLE_VALUES)
->setRequired(false)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('role'),
TextField::new('filmProjectStoryImpact.confirmedRoleName', ProjectString::PROJECT_STORY_IMPACT_CONFIRMED_ROLE_NAME)
->setColumns(12)
->hideOnIndex(),
TextareaField::new('filmProjectStoryImpact.callToAction', ProjectString::PROJECT_STORY_IMPACT_CALL_TO_ACTION)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('callsOfAction')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.isFilmImpactPartner', ProjectString::PROJECT_STORY_IMPACT_IS_FILM_IMPACT_PARTNER)->setChoices([
'Yes' => true,
'No' => false,
])
->renderExpanded()
->setColumns(12)->hideOnIndex(),
TextField::new('filmProjectStoryImpact.partnerName', ProjectString::PROJECT_STORY_IMPACT_PARTNER_NAME)
->setColumns(12)->hideOnIndex()
->setFormTypeOptions([
'label_html' => true
])
->setHelp('Separate by comma'),
FormField::addPanel('Proposed Timeline'),
DateTimeField::new('filmProjectTimeline.developmentTimeline', ProjectString::PROJECT_STORY_IMPACT_DEVELOPMENT_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('developmentTimeline'),
DateTimeField::new('filmProjectTimeline.productionTimeline', ProjectString::PROJECT_STORY_IMPACT_PRODUCTION_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('productionTimeline'),
DateTimeField::new('filmProjectTimeline.postProductionTimeline', ProjectString::PROJECT_STORY_IMPACT_POST_PRODUCTION_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('postProductionTimeline'),
DateTimeField::new('filmProjectTimeline.completionTimeline', ProjectString::PROJECT_STORY_IMPACT_COMPLETION_TIMELINE)
->setRequired(true)
->renderAsText()
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('completionTimeline'),
FormField::addPanel('Fundraising Campaign'),
DateTimeField::new('filmProjectTimeline.fundraisingCampaignStartDate', ProjectString::PROJECT_STORY_IMPACT_FUNDRAISING_CAMPAIGN_START_DATE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('campaignStartDate'),
DateTimeField::new('filmProjectTimeline.fundraisingCampaignEndDate', ProjectString::PROJECT_STORY_IMPACT_FUNDRAISING_CAMPAIGN_END_DATE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('campaignEndDate'),
FormField::addPanel('Impact Campaign'),
DateTimeField::new('filmProjectTimeline.impactCampaignStartDate', ProjectString::PROJECT_STORY_IMPACT_IMPACT_CAMPAIGN_START_DATE)
// ->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('impactCampaignStartDate'),
DateTimeField::new('filmProjectTimeline.impactCampaignEndDate', ProjectString::PROJECT_STORY_IMPACT_IMPACT_CAMPAIGN_END_DATE)
// ->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('impactCampaignEndDate'),
FormField::addTab('Fundraising Strategy'),
FormField::addPanel('What Is The Total Budget Of Your Project?')->setHelp('Don\'t use any , or . in this form field'),
MoneyField::new('filmProjectFunding.developmentBudget', ProjectString::PROJECT_FUNDING_DEVELOPMENT_BUDGET)
->setRequired(false)
->addCssClass('film_project-development_budget budgetInput')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('developmentBudget'),
MoneyField::new('filmProjectFunding.productionBudget', ProjectString::PROJECT_FUNDING_PRODUCTION_BUDGET)
->setRequired(false)
->addCssClass('film_project-production_budget budgetInput developmentBudget')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('productionBudget'),
MoneyField::new('filmProjectFunding.postProductionBudget', ProjectString::PROJECT_FUNDING_POST_PRODUCTION_BUDGET)
->setRequired(false)
->addCssClass('film_project-post_production_budget budgetInput productionBudget')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('postProductionBudget'),
MoneyField::new('filmProjectFunding.outreach', ProjectString::PROJECT_FUNDING_OUTREACH_BUDGET)
->setRequired(false)
->addCssClass('film_project-outreach budgetInput postProductionBudget')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('outreachBudget'),
MoneyField::new('filmProjectFunding.totalBudget', ProjectString::PROJECT_FUNDING_TOTAL_BUDGET)
->setRequired(true)
->addCssClass('film_project-total_budget outreachBudget')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('totalBudget'),
FormField::addPanel('Please Identify Your Confirmed Funding Amounts?')->setHelp('Don\'t use any , or . in this form field'),
MoneyField::new('filmProjectFunding.screenAgencies', ProjectString::PROJECT_FUNDING_SCREEN_AGENCIES)
->setCurrency('USD')
->setNumDecimals(0)
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('screenAgenciesFunding'),
MoneyField::new('filmProjectFunding.government', ProjectString::PROJECT_FUNDING_GOVERNMENT)
->setCurrency('USD')
->setNumDecimals(0)
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('governmentFunding'),
MoneyField::new('filmProjectFunding.corporate', ProjectString::PROJECT_FUNDING_CORPORATE)
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()
->setRequired(false)->addCssClass('corporateFunding'),
MoneyField::new('filmProjectFunding.philantrophy', ProjectString::PROJECT_FUNDING_PHILANTROPHY)
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()
->setRequired(false)->addCssClass('philantrophyFunding'),
MoneyField::new('filmProjectFunding.crownfunding', ProjectString::PROJECT_FUNDING_CROWNFUNDING)
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()
->setRequired(false)->addCssClass('crowdFunding'),
MoneyField::new('filmProjectFunding.otherBudget', ProjectString::PROJECT_FUNDING_OTHER_BUDGET)
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()
->setRequired(false)->addCssClass('otherFunding'),
TextareaField::new('filmProjectFunding.funderList', ProjectString::PROJECT_FUNDING_FUNDER_LIST)
->setColumns(12)
->hideOnIndex()
->setHelp('Separate by comma'),
ChoiceField::new('filmProjectFunding.isConfirmedSupportPublic', ProjectString::PROJECT_FUNDING_IS_CONFIRMED_SUPPORT_PUBLIC)
->setRequired(false)
->setChoices(DropdownValues::$yesNoAnswerAlt)
->setColumns(6)->hideOnIndex(),
TextareaField::new('filmProjectFunding.fundraisingStrategy', ProjectString::PROJECT_FUNDING_FUNDRAISING_STRATEGY)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('fundraisingStrategy')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
MoneyField::new('filmProjectFunding.fundraisingGoal', ProjectString::PROJECT_FUNDING_FUNDRAISIING_GOAL)
->setCurrency('USD')
->setNumDecimals(0)
->setColumns(8)
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(true)->addCssClass('fundraisingGoal')->setTextAlign('left'),
ChoiceField::new('filmProjectFunding.campaignEndMethod', ProjectString::PROJECT_FUNDING_CAMPAIGN_END_METHOD)->setChoices([
'Target date' => 'Target date',
'Target goal' => 'Target goal',
'Never ends' => 'Never ends',
])
->setColumns(4)
->hideOnIndex()
->setRequired(true)->addCssClass('campaignEndMethod'),
ChoiceField::new('filmProjectFunding.heardFrom', ProjectString::PROJECT_FUNDING_HEARD_FROM)->setChoices([
'I have engaged with Documentary Australia before' => 'I have engaged with Documentary Australia before',
'Online search' => 'Online search',
'Industry body' => 'Industry body',
'Word of mouth' => 'Word of mouth',
'Documentary Australia Workshop' => 'Documentary Australia Workshop',
'Documentary Australia Event' => 'Documentary Australia Event',
'Industry event' => 'Industry event',
'Documentary credit' => 'Documentary credit',
'Other' => 'Other',
])
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('howYouHeardAboutDocumentaryAustralia'),
ChoiceField::new('filmProjectFunding.isPreviouslySubmitted', ProjectString::PROJECT_FUNDING_HEARD_IS_PREVIOUSLY_SUBMITTED)->setChoices([
'Yes' => true,
'No' => false,
'Don\'t know' => null,
])
->renderExpanded()
->setColumns(12)
->hideOnIndex()
->setRequired(false)
->setFormTypeOptions(['placeholder' => false])
->addCssClass('projectPreviouslySubmitted'),
TextField::new('filmProjectFunding.previouslySubmittedYear', ProjectString::PROJECT_FUNDING_PREVIOUSLY_SUBMITTED_YEAR)
->setColumns(12)->hideOnIndex()
->setFormTypeOptions([
'label_html' => true
])
->addCssClass('previouslySubmittedYear'),
TextareaField::new('filmProjectFunding.fiscalSponsorshipProject', ProjectString::PROJECT_FUNDING_HEARD_FISCAL_SPONSORSHIP_PROJECT)
->setColumns(12)
->setHelp('Content limited to 250 characters')
->hideOnIndex()
->setRequired(false)->addCssClass('projectTitles'),
FormField::addTab('Additional Information')->setPermission(Constant::PORTAL_USER_ROLE),
AssociationField::new('product')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (ProductRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.category = :donation')
->setParameter('donation', Constant::DONATION_PRODUCT_TYPE)
;
}
]),
AssociationField::new('recurringProduct')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (ProductRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.category = :donation')
->setParameter('donation', Constant::DONATION_PRODUCT_TYPE)
;
}
]),
AssociationField::new('owner', 'Project Owner')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (UserRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.roles LIKE :roles')
->setParameter('roles', '%ROLE_PARTNER%')
;
}
]),
TextField::new('wordpressPassword', 'Project Password')->setPermission(Constant::ADMIN_ROLE)
->setColumns(12)->hideOnIndex()
->setFormTypeOptions([
'label_html' => true,
'disabled' => 'disabled'
])
->addCssClass('projectPassword'),
];
break;
case Constant::PROJECT_EDIT_FORM:
$form = [
FormField::addTab('Administrator'),
HiddenField::new('status')->hideOnIndex()->hideOnDetail(),
HiddenField::new('tabActive')->hideOnIndex()->hideOnDetail(),
ChoiceField::new('filmProjectFunding.approvedFiscal', ProjectString::PROJECT_FUNDING_APPROVE_FISCAL)->setChoices([
'Yes' => true,
])
->renderExpanded()
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('fiscalSponsorship')
->setFormTypeOptions([
'label_html' => true
]),
TextField::new('filmProjectAdmin.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('administratorFirstName'),
TextField::new('filmProjectAdmin.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('administratorLastName'),
TextField::new('filmProjectAdmin.address', ProjectString::PROJECT_MEMBER_ADDRESS)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorAddress'),
TextField::new('filmProjectAdmin.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorCity'),
ChoiceField::new('filmProjectAdmin.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectAdmin.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectAdmin.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TelephoneField::new('filmProjectAdmin.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('administratorTelephone'),
TextField::new('filmProjectAdmin.email', ProjectString::PROJECT_MEMBER_EMAIL)->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('administratorEmail'),
ChoiceField::new('filmProjectAdmin.gender', ProjectString::PROJECT_MEMBER_GENDER)->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('administratorGender'),
ChoiceField::new('filmProjectAdmin.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(true)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('administratorIsDiverse'),
ChoiceField::new('filmProjectAdmin.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(true)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('administratorIsAborigin'),
FormField::addTab('Film Team'),
FormField::addPanel('Producer\'s Details')->setHelp('one name only, further team members can be added below'),
TextField::new('filmProjectProducer.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('producerFirstName'),
TextField::new('filmProjectProducer.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('producerLastName'),
TextareaField::new('filmProjectProducer.biography', ProjectString::PROJECT_MEMBER_BIOGRAPHY)->setRequired(true)->setMaxLength(1000)->setColumns(12)->hideOnIndex()->setHelp('Content limited to 1000 characters')->addCssClass('producerBio')->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectProducer.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TextField::new('filmProjectProducer.website', ProjectString::PROJECT_MEMBER_WEBSITE)->setColumns(3)->hideOnIndex(),
TextField::new('filmProjectProducer.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerCity'),
ChoiceField::new('filmProjectProducer.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectProducer.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectProducer.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('producerTelephone'),
TextField::new('filmProjectProducer.email', 'Email')->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('producerEmail'),
ChoiceField::new('filmProjectProducer.gender', 'Gender')->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('producerGender'),
ChoiceField::new('filmProjectProducer.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('producerIsDiverse'),
ChoiceField::new('filmProjectProducer.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('producerIsAborigin'),
FormField::addPanel('Director\'s Details')->setHelp('one name only, further team members can be added below'),
TextField::new('filmProjectDirector.name', ProjectString::PROJECT_MEMBER_FIRST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('directorFirstName'),
TextField::new('filmProjectDirector.lastName', ProjectString::PROJECT_MEMBER_LAST_NAME)->setRequired(true)->setColumns(6)->hideOnIndex()->addCssClass('directorLastName'),
TextareaField::new('filmProjectDirector.biography', ProjectString::PROJECT_MEMBER_BIOGRAPHY)->setRequired(true)->setMaxLength(1000)->setColumns(12)->hideOnIndex()->setHelp('Content limited to 1000 characters')->addCssClass('directorBio')->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectDirector.organisation', ProjectString::PROJECT_MEMBER_ORGANISATION)->setColumns(9)->hideOnIndex(),
TextField::new('filmProjectDirector.website', ProjectString::PROJECT_MEMBER_WEBSITE)->setColumns(3)->hideOnIndex(),
TextField::new('filmProjectDirector.city', ProjectString::PROJECT_MEMBER_CITY)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorCity'),
ChoiceField::new('filmProjectDirector.state', ProjectString::PROJECT_MEMBER_STATE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorState')->setChoices(DropdownValues::$states),
TextField::new('filmProjectDirector.postcode', ProjectString::PROJECT_MEMBER_POSTCODE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorPostcode')->setFormTypeOptions([
'attr' => [
'maxlength' => 4,
'minlength' => 4,
]
]),
TextField::new('filmProjectDirector.telephone', ProjectString::PROJECT_MEMBER_TELEPHONE)->setRequired(true)->setColumns(3)->hideOnIndex()->addCssClass('directorTelephone'),
TextField::new('filmProjectDirector.email', 'Email')->setRequired(true)->setColumns(9)->hideOnIndex()->addCssClass('directorEmail'),
ChoiceField::new('filmProjectDirector.gender', 'Gender')->setRequired(true)->setChoices(DropdownValues::$gender)->setColumns(3)->hideOnIndex()->addCssClass('directorGender'),
ChoiceField::new('filmProjectDirector.isLingualDiverse', ProjectString::PROJECT_MEMBER_IS_LINGUAL_DIVERSE)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('directorIsDiverse'),
ChoiceField::new('filmProjectDirector.isIslanderOrigin', ProjectString::PROJECT_MEMBER_IS_ISLANDER_ORIGIN)->setRequired(false)->setChoices(DropdownValues::$yesNoAnswer)->setColumns(6)->hideOnIndex()->addCssClass('directorIsAborigin'),
FormField::addPanel('Additional Team Member\'s Details'),
CollectionField::new('filmProjectMembers', 'Team Member\'s Details')
->setEntryIsComplex()
->setEntryType(FilmApplicationMemberType::class)
// ->renderExpanded()
->setColumns('col-12')
->addCssClass('custom-collection-form')
->hideOnIndex(),
FormField::addTab('Project Details'),
TextField::new('title', ProjectString::PROJECT_DETAILS_TITLE)->setRequired(true)->setColumns(12)->hideOnIndex()->addCssClass('projectTitle'),
ChoiceField::new('productionStage', ProjectString::PROJECT_DETAILS_PRODUCTION_STAGE)->setRequired(true)->setChoices([
'Development' => 'Development',
'Production' => 'Production',
'Post-production' => 'Post-Production',
'Completed' => 'Film Complete',
'Outreach / Impact' => 'Outreach',
])->setColumns(6)->hideOnIndex()->addCssClass('productionStage'),
ChoiceField::new('productionType', ProjectString::PROJECT_DETAILS_PRODUCTION_TYPE)->setRequired(true)->setChoices(DropdownValues::FILM_PRODUCTION_TYPES)->setColumns(6)->hideOnIndex()->addCssClass('productionType'),
ChoiceField::new('filmProjectDetails.isEpisodes', ProjectString::PROJECT_DETAILS_EPISODES)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(2)->hideOnIndex()
->setFormTypeOptions(['placeholder' => false]),
IntegerField::new('filmProjectDetails.episodeNumber', ProjectString::PROJECT_DETAILS_NUMBER_OF_EPISODES)->setColumns(4)->hideOnIndex()->setFormTypeOptions([
'attr' => [
'min' => 0,
"onInput" => "this.value = Math.abs(this.value)"
]
]),
ChoiceField::new('filmProjectDetails.isShortFilm', ProjectString::PROJECT_DETAILS_IS_SHORT_FILM)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(2)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
IntegerField::new('filmProjectDetails.shortFilmLength', ProjectString::PROJECT_DETAILS_SHORT_FILM_LENGTH)->setColumns(4)->hideOnIndex()->addCssClass('shortFilmLength')->setFormTypeOptions([
'attr' => [
'min' => 0,
"onInput" => "this.value = Math.abs(this.value)"
]
]),
IntegerField::new('filmProjectDetails.productionLength', ProjectString::PROJECT_DETAILS_PRODUCTION_LENGTH)->setRequired(true)->setColumns(8)->hideOnIndex()->addCssClass('lengthOfProductionInMinutes'),
ImageField::new('filmProjectDetails.projectHeroImage', ProjectString::PROJECT_DETAILS_PROJECT_HERO_IMAGE)
// ->setRequired(true)
->setBasePath('uploads/projects')
->setUploadDir('public/uploads/projects')
->setColumns(4)
->hideOnIndex()
->addCssClass('projectHeroImage')->setFormTypeOptions([
'label_attr' => ['class' => 'required'],
])
->setHelp('Recommended resolution is 1280 x 720 and maximum file is limited to 5MB'),
UrlField::new('filmProjectDetails.projectTrailerLink', ProjectString::PROJECT_DETAILS_TRAILER_LINK)->setColumns(8)->hideOnIndex(),
TextField::new('filmProjectDetails.projectTrailerPassword', ProjectString::PROJECT_DETAILS_TRAILER_PASSWORD)
->setColumns(4)
// ->setFormType(PasswordType::class)
->hideOnIndex(),
ChoiceField::new('filmProjectDetails.isCompleted', ProjectString::PROJECT_DETAILS_IS_COMPLETED)->setChoices([
'Yes' => true,
'No' => false,
])->renderExpanded()->setColumns(4)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
TextField::new('filmProjectDetails.projectCompleteLink', ProjectString::PROJECT_DETAILS_COMPLETE_LINK)->setColumns(8)->hideOnIndex(),
TextField::new('filmProjectDetails.screenerPassword', ProjectString::PROJECT_DETAILS_SCREENER_PASSWORD)
->setColumns(12)
// ->setFormType(PasswordType::class)
->hideOnIndex(),
// ChoiceField::new('filmProjectDetails.isDisplayDonation', ProjectString::PROJECT_DETAILS_DISPLAY_DONATION)->setChoices([
// 'Yes' => true,
// 'No' => false,
// ])->renderExpanded()->setColumns(8)->hideOnIndex()->setFormTypeOptions(['placeholder' => false]),
// SOCIAL MEDIA
FormField::addPanel('Social media'),
TextField::new('filmProjectDetails.twitter', ProjectString::PROJECT_DETAILS_TWITTER)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.instagram', ProjectString::PROJECT_DETAILS_INSTAGRAM)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.facebook', ProjectString::PROJECT_DETAILS_FACEBOOK)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.youtube', ProjectString::PROJECT_DETAILS_YOUTUBE)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.vimeo', ProjectString::PROJECT_DETAILS_VIMEO)
->setColumns(6)
->hideOnIndex(),
TextField::new('filmProjectDetails.website', ProjectString::PROJECT_DETAILS_WEBSITE)
->setColumns(6)
->hideOnIndex(),
FormField::addTab('Story & Impact'),
TextareaField::new('filmProjectStoryImpact.synopsis', ProjectString::PROJECT_STORY_IMPACT_SYNOPSIS)
->addCssClass('synopsis')
->setRequired(true)
// ->setMaxLength(2000)
->setColumns(12)
->hideOnIndex()
->setHelp('Content limited to 2000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 2000]])
,
TextareaField::new('filmProjectStoryImpact.logline', ProjectString::PROJECT_STORY_IMPACT_LOGLINE)
->setRequired(true)
// ->setMaxLength(120)
->setColumns(12)
->hideOnIndex()->addCssClass('logline')
->setHelp('Content limited to 120 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 120]])
,
TextareaField::new('filmProjectStoryImpact.issueAddressed', ProjectString::PROJECT_STORY_IMPACT_ISSUE_ADDRESSED)
->setRequired(true)
// ->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->addCssClass('issueAddressed')
->setHelp('Content limited to 1000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 1000]])
,
TextareaField::new('filmProjectStoryImpact.creativeTreatment', ProjectString::PROJECT_STORY_IMPACT_CREATIVE_TREATMENT)
->setRequired(true)
// ->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->addCssClass('creativeTreatment')
->setHelp('Content limited to 1000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 1000]])
,
ChoiceField::new('filmProjectStoryImpact.primaryImpactArea', ProjectString::PROJECT_STORY_IMPACT_PRIMARY_IMPACT_AREA)->setChoices(DropdownValues::IMPACT_VALUES)
->setRequired(true)
->renderExpanded()
->setColumns(12)
->hideOnIndex()->addCssClass('primaryImpactArea'),
ChoiceField::new('filmProjectStoryImpact.secondaryImpactArea', ProjectString::PROJECT_STORY_IMPACT_SECOND_IMPACT_AREA)->setChoices(DropdownValues::IMPACT_VALUES)
->setRequired(false)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('secondaryImpactArea'),
ChoiceField::new('filmProjectStoryImpact.topicCovered', ProjectString::PROJECT_STORY_IMPACT_TOPIC_COVERED)->setChoices(DropdownValues::TOPIC_VALUES) // TODO: change values of this topic
// ->renderExpanded()
->setRequired(true)
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()
->addCssClass('topicCovered'),
TextareaField::new('filmProjectStoryImpact.impactVisionStatement', ProjectString::PROJECT_STORY_IMPACT_IMPACT_VISION_STATEMENT)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('impactVisionStatement')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.outcomes', ProjectString::PROJECT_STORY_IMPACT_OUTCOMES)->setChoices(DropdownValues::OUTCOME_VALUES)
->setRequired(true)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('filmOutcomes'),
TextareaField::new('filmProjectStoryImpact.ourcomeInformation', ProjectString::PROJECT_STORY_IMPACT_OUTCOMES_INFORMATION)
->addCssClass('filmOutcomesInfo')
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
TextField::new('filmProjectStoryImpact.audiences', ProjectString::PROJECT_STORY_IMPACT_AUDIENCES)
->setRequired(true)
->setColumns(12)
->hideOnIndex()->addCssClass('filmAudiences'),
TextareaField::new('filmProjectStoryImpact.relationshipAccess', ProjectString::PROJECT_STORY_IMPACT_RELATIONSHIP_ACCESS)
->setRequired(false)
// ->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('communityRelationship')
->setHelp('Content limited to 1000 characters')
// ->setFormTypeOptions(['attr' => ['maxlength' => 1000]])
,
TextareaField::new('filmProjectStoryImpact.whoBenefit', ProjectString::PROJECT_STORY_IMPACT_WHO_BENEFIT)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('filmBenefits')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.confirmedRole', ProjectString::PROJECT_STORY_IMPACT_CONFIRMED_ROLE)->setChoices(DropdownValues::ROLE_VALUES)
->setRequired(false)
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()->addCssClass('role'),
TextField::new('filmProjectStoryImpact.confirmedRoleName', ProjectString::PROJECT_STORY_IMPACT_CONFIRMED_ROLE_NAME)
->setColumns(12)
->hideOnIndex(),
TextareaField::new('filmProjectStoryImpact.callToAction', ProjectString::PROJECT_STORY_IMPACT_CALL_TO_ACTION)
->setRequired(true)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()->addCssClass('callsOfAction')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
ChoiceField::new('filmProjectStoryImpact.isFilmImpactPartner', ProjectString::PROJECT_STORY_IMPACT_IS_FILM_IMPACT_PARTNER)->setChoices([
'Yes' => true,
'No' => false,
])
->renderExpanded()
->setColumns(12)->hideOnIndex(),
// TextField::new('filmProjectStoryImpact.partnerName', ProjectString::PROJECT_STORY_IMPACT_PARTNER_NAME)
// ->setColumns(12)->hideOnIndex()
// ->setFormTypeOptions([
// 'label_html' => true
// ])
// ->setHelp('Separate with comma'),
FormField::addPanel('Proposed Timeline'),
DateTimeField::new('filmProjectTimeline.developmentTimeline', ProjectString::PROJECT_STORY_IMPACT_DEVELOPMENT_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('developmentTimeline'),
DateTimeField::new('filmProjectTimeline.productionTimeline', ProjectString::PROJECT_STORY_IMPACT_PRODUCTION_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('productionTimeline'),
DateTimeField::new('filmProjectTimeline.postProductionTimeline', ProjectString::PROJECT_STORY_IMPACT_POST_PRODUCTION_TIMELINE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('postProductionTimeline'),
DateTimeField::new('filmProjectTimeline.completionTimeline', ProjectString::PROJECT_STORY_IMPACT_COMPLETION_TIMELINE)
->setRequired(true)
->renderAsText()
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('completionTimeline'),
FormField::addPanel('Fundraising Campaign'),
DateTimeField::new('filmProjectTimeline.fundraisingCampaignStartDate', ProjectString::PROJECT_STORY_IMPACT_FUNDRAISING_CAMPAIGN_START_DATE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('campaignStartDate'),
DateTimeField::new('filmProjectTimeline.fundraisingCampaignEndDate', ProjectString::PROJECT_STORY_IMPACT_FUNDRAISING_CAMPAIGN_END_DATE)
->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('campaignEndDate'),
FormField::addPanel('Impact Campaign'),
DateTimeField::new('filmProjectTimeline.impactCampaignStartDate', ProjectString::PROJECT_STORY_IMPACT_IMPACT_CAMPAIGN_START_DATE)
// ->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('impactCampaignStartDate'),
DateTimeField::new('filmProjectTimeline.impactCampaignEndDate', ProjectString::PROJECT_STORY_IMPACT_IMPACT_CAMPAIGN_END_DATE)
// ->setRequired(true)
->renderAsText()
->setColumns(6)
->hideOnIndex()->addCssClass('impactCampaignEndDate'),
FormField::addTab('Fundraising Strategy'),
FormField::addPanel('What Is The Total Budget Of Your Project?')->setHelp('Don\'t use any , or . in this form field'),
MoneyField::new('filmProjectFunding.developmentBudget', ProjectString::PROJECT_FUNDING_DEVELOPMENT_BUDGET)
->setRequired(false)
->addCssClass('film_project-development_budget budgetInput ')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('developmentBudget'),
MoneyField::new('filmProjectFunding.productionBudget', ProjectString::PROJECT_FUNDING_PRODUCTION_BUDGET)
->setRequired(false)
->addCssClass('film_project-production_budget budgetInput')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('productionBudget'),
MoneyField::new('filmProjectFunding.postProductionBudget', ProjectString::PROJECT_FUNDING_POST_PRODUCTION_BUDGET)
->setRequired(false)
->addCssClass('film_project-post_production_budget budgetInput')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('postProductionBudget'),
MoneyField::new('filmProjectFunding.outreach', ProjectString::PROJECT_FUNDING_OUTREACH_BUDGET)
->setRequired(false)
->addCssClass('film_project-outreach budgetInput')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('outreachBudget'),
MoneyField::new('filmProjectFunding.totalBudget', ProjectString::PROJECT_FUNDING_TOTAL_BUDGET)
->setRequired(true)
->addCssClass('film_project-total_budget')
->setCurrency('USD')
->setNumDecimals(0)
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->hideOnIndex()->addCssClass('totalBudget'),
FormField::addPanel('Please Identify Your Confirmed Funding Amounts?')->setHelp('Don\'t use any , or . in this form field'),
MoneyField::new('filmProjectFunding.screenAgencies', ProjectString::PROJECT_FUNDING_SCREEN_AGENCIES)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('screenAgenciesFunding'),
MoneyField::new('filmProjectFunding.government', ProjectString::PROJECT_FUNDING_GOVERNMENT)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('governmentFunding'),
MoneyField::new('filmProjectFunding.corporate', ProjectString::PROJECT_FUNDING_CORPORATE)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('corporateFunding'),
MoneyField::new('filmProjectFunding.philantrophy', ProjectString::PROJECT_FUNDING_PHILANTROPHY)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('philantrophyFunding'),
MoneyField::new('filmProjectFunding.crownfunding', ProjectString::PROJECT_FUNDING_CROWNFUNDING)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('crowdFunding'),
MoneyField::new('filmProjectFunding.otherBudget', ProjectString::PROJECT_FUNDING_OTHER_BUDGET)
->setCurrency('USD')
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(false)->addCssClass('otherFunding'),
TextareaField::new('filmProjectFunding.funderList', ProjectString::PROJECT_FUNDING_FUNDER_LIST)
->setColumns(12)
->hideOnIndex()
->setHelp('Separate by comma'),
ChoiceField::new('filmProjectFunding.isConfirmedSupportPublic', ProjectString::PROJECT_FUNDING_IS_CONFIRMED_SUPPORT_PUBLIC)
->setRequired(false)
->setChoices(DropdownValues::$yesNoAnswerAlt)
->setColumns(6)->hideOnIndex(),
TextareaField::new('filmProjectFunding.fundraisingStrategy', ProjectString::PROJECT_FUNDING_FUNDRAISING_STRATEGY)
->setMaxLength(1000)
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('fundraisingStrategy')
->setHelp('Content limited to 1000 characters')
->setFormTypeOptions(['attr' => ['maxlength' => 1000]]),
MoneyField::new('filmProjectFunding.fundraisingGoal', ProjectString::PROJECT_FUNDING_FUNDRAISIING_GOAL)
->setCurrency('USD')
->setNumDecimals(0)
->setColumns(8)
->hideOnIndex()
// ->setFormTypeOptions(['grouping' => true])
// ->setHelp('Don\'t use any , or . in this form field')
->setRequired(true)->addCssClass('fundraisingGoal')->setTextAlign('left'),
ChoiceField::new('filmProjectFunding.campaignEndMethod', ProjectString::PROJECT_FUNDING_CAMPAIGN_END_METHOD)->setChoices([
'Target date' => 'Target date',
'Target goal' => 'Target goal',
'Never ends' => 'Never ends',
])
->setColumns(4)
->hideOnIndex()
->setRequired(true)->addCssClass('campaignEndMethod'),
ChoiceField::new('filmProjectFunding.heardFrom', ProjectString::PROJECT_FUNDING_HEARD_FROM)->setChoices([
'I have engaged with Documentary Australia before' => 'I have engaged with Documentary Australia before',
'Online search' => 'Online search',
'Industry body' => 'Industry body',
'Word of mouth' => 'Word of mouth',
'Documentary Australia Workshop' => 'Documentary Australia Workshop',
'Documentary Australia Event' => 'Documentary Australia Event',
'Industry event' => 'Industry event',
'Documentary credit' => 'Documentary credit',
'Other' => 'Other',
])
->renderExpanded()
->allowMultipleChoices()
->setColumns(12)
->hideOnIndex()
->setRequired(true)->addCssClass('howYouHeardAboutDocumentaryAustralia'),
ChoiceField::new('filmProjectFunding.isPreviouslySubmitted', ProjectString::PROJECT_FUNDING_HEARD_IS_PREVIOUSLY_SUBMITTED)->setChoices([
'Yes' => true,
'No' => false,
'Don\'t know' => null,
])
->renderExpanded()
->setColumns(12)
->hideOnIndex()
->setRequired(false)
->setFormTypeOptions(['placeholder' => false])
->addCssClass('projectPreviouslySubmitted'),
TextField::new('filmProjectFunding.previouslySubmittedYear', ProjectString::PROJECT_FUNDING_PREVIOUSLY_SUBMITTED_YEAR)
->setColumns(12)->hideOnIndex()
->setFormTypeOptions([
'label_html' => true
])
->addCssClass('previouslySubmittedYear'),
TextareaField::new('filmProjectFunding.fiscalSponsorshipProject', ProjectString::PROJECT_FUNDING_HEARD_FISCAL_SPONSORSHIP_PROJECT)
->setColumns(12)
->setHelp('Content limited to 250 characters')
->hideOnIndex()
->setRequired(false)->addCssClass('projectTitles'),
FormField::addTab('Additional Information')->setPermission(Constant::ADMIN_ROLE),
AssociationField::new('product')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (ProductRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.category = :donation')
->setParameter('donation', Constant::DONATION_PRODUCT_TYPE)
;
}
]),
AssociationField::new('recurringProduct')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (ProductRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.category = :donation')
->setParameter('donation', Constant::DONATION_PRODUCT_TYPE)
;
}
]),
AssociationField::new('owner', 'Project Owner')->setColumns(4)->setPermission(Constant::ADMIN_ROLE)->hideOnIndex()->setFormTypeOptions([
'query_builder' => function (UserRepository $er) {
return $er->createQueryBuilder('e')
->andWhere('e.roles LIKE :roles')
->setParameter('roles', '%ROLE_PARTNER%')
;
}
]),
TextField::new('wordpressPassword', 'Project Password')->setPermission(Constant::ADMIN_ROLE)
->setColumns(12)->hideOnIndex()
->setFormTypeOptions([
'label_html' => true,
'disabled' => 'disabled'
])
->addCssClass('projectPassword'),
];
break;
}
return $form;
}
}