Now list template name and event template name is saved to variables. If event template is not passed as parameter default template is used. Hopefully there are no bugs left...

{assign var='private_events' value='|'|explode:'Wedding|Baptism|Funeral'} {* category list of private event *}
{assign var='label_private_event' value='(private event, by invitation only)'} {* private event label *}
{assign var='cgcal_list_template_name' value=$smarty.template|replace:'module_db_tpl:CGCalendar;list_':''} {* save current template name to variable *}
{assign var='cgcal_event_template_name' value=$actionparams.eventtemplate|default:$CGCalendar->GetPreference($smarty.const.CGCALENDAR_PREF_DFLTEVENT_TEMPLATE)} {* get event template or use default one *}
{if $day > 0}{$day} {/if}{$month_names[$month]} {$year}
{if isset($navigation)}
{capture assign='cgcal_nav_tail'}{'&'};{$actionid}listtemplate={$cgcal_list_template_name}{/capture} {* save list template name to append navigation links *}
{* save navigation and repeat it at the bottom *}
{capture assign='cgcalendar_nav'}
{if isset($navigation.prev)}{$lang.prev}
{/if}
{* month navigation *}
{section name='month_navigation' start='1' loop='13'}
{assign var='month_name_short' value='2010-%s-01 00:00:00'|sprintf:$smarty.section.month_navigation.iteration|date_format:'%b'}
{if $month!=$smarty.section.month_navigation.iteration}
{$month_name_short}
{else}
{$month_name_short}
{/if}
{if !$smarty.section.month_navigation.last} | {/if}
{/section}
{* end month navigation *}
{if isset($navigation.next)}{$lang.next}
{/if}
{/capture}
{* end save navigation and repeat it at the bottom *}
{$cgcalendar_nav}
{/if}
{if !empty($events)}
{foreach from=$events key=key item=event}
{$event.event_title}
{assign var=month_number value=$event.event_date_start|date_format:"%m"}
{assign var=end_month_number value=$event.event_date_end|date_format:"%m"}
{if $event.event_date_start == $event.event_date_end || $event.event_date_end == 0}
{$lang.date}: {$event.event_date_start|date_format:"%a %e %b %G"}
Time: {$event.event_date_start|date_format:"%I:%M%P"}
{else}
{if $event.event_date_start|date_format:"%a %e %b %G" == $event.event_date_end|date_format:"%a %e %b %G"}
{$lang.date}: {$event.event_date_start|date_format:"%a %e %b %G"} Time: {$event.event_date_start|date_format:"%I:%M%P"} - {$event.event_date_end|date_format:"%I:%M%P"}
{else}
{$lang.date}:
{if $event.event_date_start|date_format:"%a %e %b %G"} to {$event.event_date_end|date_format:"%a %e %b %G"} Time: {$event.event_date_start|date_format:"%I:%M%P"} {$lang.to} {$event.event_date_end|date_format:"%I:%M%P"}
{/if}
{/if}
{/if}
{* event categories *}
{if !empty($event.categories)}
{assign var='private_event' value=''}
{assign var='event_categories' value=$event.categories|@array_keys}
{$CGCalendar->Lang('category')}: {', '|implode:$event_categories}
{foreach from=$event_categories item='cat_name'}
{if in_array($cat_name, $private_events)}
{assign var='private_event' value='1'}
{/if}
{/foreach}
{if !empty($private_event)} {$label_private_event}
{/if}
{/if}
{* end event categories *}
{if $event.event_summary !="" && ($detail != 1 || ($event.event_details =="" || $event.event_details == "
"))}
{$event.event_summary}
{/if}
{* optionally display detail information
{if $event.event_details !="" && $event.event_details != "
"}
{$lang.details}: {$event.event_details}
{/if}
*}
more details »
{/foreach}
{else}
There are currently no events.
{/if}
{* navigation once more*}
{if isset($navigation)}
{$cgcalendar_nav}
{/if}
{if $return_url != ""}
{$return_url}
{/if}