DMAGmbH / dma_elementgenerator

DMA Elementgenerator (Contao)
45 stars 17 forks source link

Optional Image #39

Open fritzmg opened 10 years ago

fritzmg commented 10 years ago

If your element has an image and you define no image in the content element, you will get errors like this

Warning: getimagesize([...]/): failed to open stream: No such file or directory in [...]\system\modules\core\library\Contao\Controller.php on line 2463

#0 [internal function]: __error(2, 'getimagesize(C:...', 'C:\xampp\htdocs...', 2463, Array)
#1 [...]\system\modules\core\library\Contao\Controller.php(2463): getimagesize('C:\xampp\htdocs...')
#2 [...]\system\modules\dma_elementgenerator\DMAElementGenerator.php(449): Contao\Controller::addImageToTemplate(Object(Contao\FrontendTemplate), Array)
#3 [...]\system\modules\dma_elementgenerator\DMAElementGenerator.php(48): DMAElementGenerator->compile(Object(DMAElementGeneratorContent))
#4 [...]\system\modules\dma_elementgenerator\DMAElementGeneratorContent.php(47): DMAElementGenerator->generate(Object(DMAElementGeneratorContent))
#5 [...]\system\modules\core\elements\ContentElement.php(159): DMAElementGeneratorContent->compile()
#6 [...]\system\modules\core\library\Contao\Controller.php(490): Contao\ContentElement->generate()
#7 [...]\system\modules\core\modules\ModuleArticle.php(184): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
#8 [...]\system\modules\core\modules\Module.php(148): Contao\ModuleArticle->compile()
#9 [...]\system\modules\core\modules\ModuleArticle.php(59): Contao\Module->generate()
#10 [...]\system\modules\core\library\Contao\Controller.php(405): Contao\ModuleArticle->generate(false)
#11 [...]\system\modules\core\library\Contao\Controller.php(229): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
#12 [...]\system\modules\core\pages\PageRegular.php(138): Contao\Controller->getFrontendModule('0', 'main')
#13 [...]\index.php(239): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#14 [...]\index.php(407): Index->run()
#15 {main}

in the frontend and the backend. My quickfix was to change line #417 of DMAElementGenerator.php from

if ($objField->type=='image' && $objField->image_data)

to

if ($objField->type=='image' && $objField->image_data && $arrData[$objField->title . '--singleSRC'])

However, this may not be ideal if you want to make an image truly optional. What if you defined an image once and want to remove it again? Contao does not provide the possibility to unset any image or file selector. Instead in Contao you usually have the selector as a subpalette depending on a checkbox. I am not sure if dma_elementgenerator properly checks for that? (Didn't test.)

See also https://community.contao.org/de/showthread.php?45707-Optionales-Bild