cdaecke / md_fullcalendar

TYPO3 extension which brings the javascript FullCalendar with switchable views for month, week and day to ext:calendarize.
Other
0 stars 6 forks source link

Bootstrap Modal View not displaying any content. #17

Closed shortyxs closed 1 year ago

shortyxs commented 2 years ago

Hello Chris (@cdaecke), thank you for releasing this nice Typo3 extension.

However, I run into a problem that I can't fix.

We have set the UID for the Calendarize Storage and we have set the UID for the Page that contains the detail view. When clicking on an event, the modal opens but does not show any content except the close button.

Can you give me any hint what is probably wrong?

Any help is much appreciated.

cdaecke commented 2 years ago

Please check the following:

shortyxs commented 2 years ago

/typo3temp/var/log says Mon, 20 Jun 2022 20:22:38 +0200 [WARNING] request="bd1e06ca46c9f" component="TYPO3.CMS.Frontend.Controller.TypoScriptFrontendController": $TSFE->set_no_cache() was triggered. Reason: no_cache has been set before the page was generated - safety check. Caching is disabled! The link prduced looks like https://www.domain.de/sendeplan/sendeplan-einzelansicht/calendar-ajax.html?tx_mdfullcalendar_cal%5Baction%5D=detail&tx_mdfullcalendar_cal%5Bcontroller%5D=Cal&tx_mdfullcalendar_cal%5Bindex%5D=18764&cHash=d7dea49211c152930c8ce7771711da4e And gives back a white page. The links should look like https://www.domain.de/sendeplan/sendeplan-einzelansicht/termin/hit-factory-20220620

I don't see any error messages appearing.

cdaecke commented 2 years ago

Try to remove the follwong routeEnhancer:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    map:
      '/calendar-ajax.html': 1573760945

Flush the cache in the install tool an try again.

Is the link now correctly pointing to https://www.domain.de/sendeplan/sendeplan-einzelansicht/termin/hit-factory-20220620? If not, check, if settings.pid.defaultDetailPid is set to the page hit-factory-20220620.

shortyxs commented 2 years ago

I have removed all the speaking url settings for calendarize The Detailview that works when linked from calendarizelist view looks like https://www.domain.de/sendeplan/sendeplan-einzelansicht?tx_calendarize_calendar%5Baction%5D=detail&tx_calendarize_calendar%5Bcontroller%5D=Calendar&tx_calendarize_calendar%5Bindex%5D=25878&cHash=274b924cb8d0032f4376801695908818

and for the same event from md_fullcalendar https://www.domain.de/sendeplan/sendeplan-einzelansicht/calendar-ajax.html?tx_mdfullcalendar_cal%5Baction%5D=detail&tx_mdfullcalendar_cal%5Bcontroller%5D=Cal&tx_mdfullcalendar_cal%5Bindex%5D=25878&cHash=02dab2815e96aea81541cc1707448c2a That leads into a 404 error. I assume, because there is not caledar-ajax.html file. The segemen sendeplan-einzelansicht has the id I set in the Typoscript as my Detail-View.

As I understand the documentation md_fullcalender takes my Detailview from Calendarize and renders it into the modal. Did I get that wrong?

cdaecke commented 2 years ago

Please flush the cache in the install tool and reload the page. After that, the link should not go to .../calendar-ajax.html?... any more.

The ajax call from the calendar, which opens the modal, gets the data from ext:md_fullcalendar (detailAction).

shortyxs commented 2 years ago

Hello Chris, that is exactly what I did before and this Is the result. By the way, I don't think we can solve this until Friday, that is the launch date of the new website. Is there any way to disable the modal and l ink to the calendarize detail page instead?

cdaecke commented 2 years ago

Is there already a preview of the website, so I could have a look and give some more advices?

shortyxs commented 2 years ago

https://test.radio-zoom.de/ On the start page you see a Calendarize List View, that links to the detailview. And here https://test.radio-zoom.de/sendeplan You can see the fullcalendar, that should open the same detailview in the Modal.

I have removed any router enhancements. Cache was cleared.

I also Noticed, that when I now put pack int he routeEnhancers: PageTypeSuffix: type: PageType map: '/calendar-ajax.html': 1573760945 Typo3 throws an error, not saying what is wrong, just the first line of my yaml config for calendar-ajax.

cdaecke commented 2 years ago

Could you please temporary add \TYPO3\CMS\Core\Utility\DebugUtility::debug($index); in the detailAction() of the CalController? Do you get any output when calling https://test.radio-zoom.de/sendeplan/sendeplan-einzelansicht?tx_mdfullcalendar_cal%5Baction%5D=detail&tx_mdfullcalendar_cal%5Bcontroller%5D=Cal&tx_mdfullcalendar_cal%5Bindex%5D=4696&type=1573760945&cHash=54411fcebbc2e9945baec2ccd030a41a

shortyxs commented 2 years ago
HDNET\Calendarize\Domain\Model\Indexprototypepersistent entity (uid=4696, pid=98)
   uniqueRegisterKey => protected'Event' (5 chars)
   foreignTable => protected'tx_calendarize_domain_model_event' (33 chars)
   foreignUid => protected9 (integer)
   startDate => protectedDateTimeprototypeobject (2022-06-29T02:00:00+02:00, 1656460800)
   endDate => protectedDateTimeprototypeobject (2022-06-29T02:00:00+02:00, 1656460800)
   startTime => protected25200 (integer)
   endTime => protected28800 (integer)
   allDay => protectedFALSE
   openEndTime => protectedFALSE
   state => protected'default' (7 chars)
   originalObject => protectedNULL
   slug => protected'die-mittwoch-morgaehn-meditation-20220629' (41 chars)
   uid => protected4696 (integer)
   _localizedUid => protected4696 (integer)modified
   _languageUid => protected0 (integer)modified
   _versionedUid => protected4696 (integer)modified
   pid => protected98 (integer)
cdaecke commented 2 years ago

Ok, data is available, at least in the controller.

Now add <f:debug>{_all}</f:debug> in ext:md_fullcalendar/Resources/Private/Templates/Cal/Detail.html right after <f:section name="content"> (Line 8).

Call again https://test.radio-zoom.de/sendeplan/sendeplan-einzelansicht?tx_mdfullcalendar_cal%5Baction%5D=detail&tx_mdfullcalendar_cal%5Bcontroller%5D=Cal&tx_mdfullcalendar_cal%5Bindex%5D=4696&type=1573760945&cHash=54411fcebbc2e9945baec2ccd030a41a

Do you get an array with data for settings and index? If so, please check, if you have changed the path to the templates of ext:md_fullcalendar. If you use your own templates, please try using the originals and if that works, check your custom templates.

shortyxs commented 2 years ago

Yes I had changed the path with the templates, that is now reverted to the default. I get the array when adding <f:debug>{_all}</f:debug> but still get an empty modal, as soon as I remove it.

EDIT: I see a 2nd set of settings that sets the defaultSetailPid to blalnk in this array ...?

array(3 items)
   settings => array(9 items)
      dateFormat => 'd.m.Y' (5 chars)
      timeFormat => 'H:i' (3 chars)
      showIcsIcalButton => '0' (1 chars)
      pid => array(1 item)
         defaultDetailPid => '176' (3 chars)
      view => array(3 items)
         templateRootPaths => array(2 items)
            0 => 'EXT:{extension.shortExtensionKey}/Resources/Private/Templates/' (62 chars)
            1 => 'EXT:md_fullcalendar/Resources/Private/Templates/' (48 chars)
         partialRootPaths => array(2 items)
            0 => 'EXT:md_fullcalendar/Resources/Private/Partials/' (47 chars)
            1 => 'EXT:md_fullcalendar/Resources/Private/Partials/' (47 chars)
         layoutRootPaths => array(2 items)
            0 => 'EXT:tx_mdfullcalendar/Resources/Private/Layouts/' (48 chars)
            1 => 'EXT:md_fullcalendar/Resources/Private/Layouts/' (46 chars)
      persistence => array(1 item)
         storagePid => '98' (2 chars)
      features => array(2 items)
         ignoreAllEnableFieldsInBe => '0' (1 chars)
         requireCHashArgumentForActionArguments => '1' (1 chars)
      mvc => array(empty)
      settings => array(4 items)
         dateFormat => 'd.m.Y' (5 chars)
         timeFormat => 'H:i' (3 chars)
         showIcsIcalButton => '0' (1 chars)
         pid => array(1 item)
            defaultDetailPid => '' (0 chars)

Another EDIT: I found that 2nd setting in the TypoScript Object Browser, it belongs to the CALENDAR_DETAIL_AJAX. I added the PID here as well but does not change anything. Kept the Debug view enabled, so you can have a look.

[CALENDAR_DETAIL_AJAX] = PAGE

[10] = USER_INT

    [userFunc] = TYPO3\CMS\Extbase\Core\Bootstrap->run
    [extensionName] = MdFullcalendar
    [pluginName] = Cal
    [vendorName] = Mediadreams

[switchableControllerActions]
[settings]

[view]
[persistence]
[features]
[mvc]
[settings]

    [dateFormat] = d.m.Y
    [timeFormat] = H:i

        [pid]
            [defaultDetailPid] = 176
        [showIcsIcalButton] = 0 # if you enable this, make sure that you have set "defaultDetailPid" and there is a # ext:calendarize plugin inserted on that page.

[persistence]

    [storagePid] = 98
cdaecke commented 2 years ago

The settings array is not relevant at this moment. But if you have data index in the array, it should be shown in the modal.

As you can see, the debug data is shown in the modal. Don't ask me, why the rest is missing...

I would try to reduce the HTML in ext:md_fullcalendar/Resources/Private/Templates/Cal/Detail.html to a minimum, for example to the following:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:c="http://typo3.org/ns/HDNET/Calendarize/ViewHelpers"
      data-namespace-typo3-fluid="true">

    <f:layout name="Default" />

    <f:section name="content">
        <f:alias map="{event: index.originalObject}">
            <div class="modal-header">
                <h2 class="modal-title" id="calModalLabel">
                    {index.originalObject.title}
                </h2>
            </div>
        </f:alias>
    </f:section>
</html>

No it should show the title of the event. If this is working, I would add part after part of the template and see, how long it is working.

shortyxs commented 2 years ago

Even with this simplified Detailview I don't get any output I added Some Fixed text to in the Headline and even this is not rendered.

cdaecke commented 2 years ago

Strange...

So for your launch, you can disable the modal and link to the "normal" detail page by temporary removing the following code from ext:md_fullcalendar/Resources/Private/Templates/Cal/Show.html

https://github.com/cdaecke/md_fullcalendar/blob/c44926141e8debfd814e4ba12946247204b2dbcd/Resources/Private/Templates/Cal/Show.html#L84-L99

shortyxs commented 2 years ago

Thanks a lot. After the official reveal, I will setup a new dev instance of Typo3 and try to reproduce the problem.