[TikiWiki-commits] [Git][tikiwiki/tiki][29.x] [FIX] Fix: Ensure that the calendar module and plugin return the correct URL after saving an event
"franck franck kalunga \(@francksfkal\) via TikiWiki-cvs" <[email protected]>
| Newsgroups | gmane.comp.cms.tiki.cvs |
|---|---|
| Message-ID | <691c51abc321d_2a4319c8870831@gitlab-sidekiq-low-urgency-cpu-bound-v2-7b85cb5d57-btzw8.mail> |
franck franck kalunga pushed to branch 29.x at Tiki Wiki CMS Groupware / Tiki
Commits:
f284f3f5 by franck franck kalunga at 2025-11-18T10:52:07+00:00
[FIX] Fix: Ensure that the calendar module and plugin return the correct URL after saving an event
---
* [FIX] Fix: Ensure that the calendar module and plugin return the correct URL after saving an event
---
* [FIX] Fix: Ensure that the calendar module and plugin return the correct URL after saving an event
See merge request tikiwiki/tiki!8886
See merge request tikiwiki/tiki!9046
- - - - -
9 changed files:
- lib/core/Services/Calendar/Controller.php
- lib/wiki-plugins/wikiplugin_calendar.php
- modules/mod-func-calendar_new.php
- src/js/jquery-tiki/tiki-calendar.js
- templates/calendar/edit_item.tpl
- templates/calendar_header.tpl
- templates/modules/mod-calendar_new.tpl
- templates/wiki-plugins/wikiplugin_calendar.tpl
- tiki-calendar.php
Changes:
=====================================
lib/core/Services/Calendar/Controller.php
=====================================
@@ -443,6 +443,7 @@ class Services_Calendar_Controller extends Services_Calendar_BaseController
'allday' => $calendar['allday'] == 'y' ? 1 : 0,
'organizers' => [$user],
'participants' => $participants,
+ 'returnURL' => $return_url,
];
}
=====================================
lib/wiki-plugins/wikiplugin_calendar.php
=====================================
@@ -80,8 +80,7 @@ function wikiplugin_calendar_info()
function wikiplugin_calendar($data, $params)
{
- global $prefs, $tiki_p_admin, $tiki_p_view_calendar, $tikiroot;
- global $dc, $user;
+ global $prefs, $tiki_p_admin, $tiki_p_view_calendar, $base_uri;
$smarty = TikiLib::lib('smarty');
$tikilib = TikiLib::lib('tiki');
@@ -124,6 +123,8 @@ function wikiplugin_calendar($data, $params)
$calendarInitialParams = $calendarlib->generalParamsOfCalendar($rawcals['data']);
$calendarInitialParams['initialView'] = $initialView;
$calendars = $calendarInitialParams['calendars'];
+ $current_url = $base_uri;
+ $smarty->assign('returnURL', $current_url);
$smarty->assign(
'eventCalendarParams',
$calendarInitialParams
=====================================
modules/mod-func-calendar_new.php
=====================================
@@ -73,7 +73,7 @@ function module_calendar_new_info()
*/
function module_calendar_new($mod_reference, $module_params)
{
- global $prefs, $user, $tiki_p_admin_calendars;
+ global $prefs, $user, $tiki_p_admin_calendars, $base_uri;
$tikilib = TikiLib::lib('tiki');
$smarty = TikiLib::lib('smarty');
$calendarlib = TikiLib::lib('calendar');
@@ -81,7 +81,7 @@ function module_calendar_new($mod_reference, $module_params)
global $calendarViewMode, $focusdate;
$default = ['viewnavbar' => 'y', 'viewmode' => 'month', 'showaction' => 'y'];
$module_params = array_merge($default, $module_params);
-
+ $defaultCalendarId = 0;
if (isset($_REQUEST['viewmode'])) {
$save_viewmode = $_REQUEST['viewmode'];
}
@@ -155,8 +155,13 @@ function module_calendar_new($mod_reference, $module_params)
'eventCalendarParams',
$calendarInitialParams
);
+
+ $current_url = $base_uri;
+ $smarty->assign('returnURL', $current_url);
$smarty->assign('moduleCalendarFocusdate', $moduleCalendarFocusdate);
$smarty->assign('moduleCalendarIds', $moduleCalendarIds);
+ $smarty->assign('defaultCalendarId', $defaultCalendarId);
+
if ($calendarInitialParams['canEditAnything']) {
TikiLib::lib('header')
->add_cssfile('themes/base_files/feature_css/calendar.css', 20)
=====================================
src/js/jquery-tiki/tiki-calendar.js
=====================================
@@ -8,7 +8,8 @@ $.fn.setupEventCalendar = function (
eventCalendarParams,
calendarContainer,
targetId = "calendar",
- urlEventSource = "tiki-ajax_services.php?controller=calendar&action=list_items"
+ urlEventSource = "tiki-ajax_services.php?controller=calendar&action=list_items",
+ returnUrl = "tiki-calendar.php"
) {
this.each(function () {
const calendarEl = document.getElementById(targetId);
@@ -234,7 +235,7 @@ $.fn.setupEventCalendar = function (
$.openModal({
title: tr("New event"),
size: "modal-lg",
- remote: $.service("calendar", "edit_item", { todate: info.date.toUnix(), modal: 1 }),
+ remote: $.service("calendar", "edit_item", { todate: info.date.toUnix(), modal: 1, return_url: returnUrl }),
open: function () {
$this.tikiModal();
$("form:not(.no-ajax)", this).addClass("no-ajax"); // Remove default ajax handling, we replace it
=====================================
templates/calendar/edit_item.tpl
=====================================
@@ -5,6 +5,7 @@
{/block}
{block name="content"}
+
<form action="{service controller='calendar' action='edit_item'}" method="post" class="edit-event-form" data-should-parse-editor-data="false">
<div class="form-contents">
<div class="preview d-none">
@@ -19,7 +20,7 @@
{/if}
</div>
<input type="hidden" name="calitem[user]" value="{$calitem.user|escape}">
- <input type="hidden" name="return_url" value="tiki-calendar.php">
+ <input type="hidden" id="return_url" name="return_url" value="{$calitem.returnURL}">
{if $calitemId}
<input type="hidden" name="calitemId" value="{$calitemId|escape}">
{/if}
@@ -38,8 +39,7 @@
<label for="calid" class="col-form-label col-sm-3">{tr}Calendar{/tr}</label>
<div class="col-sm-9">
<input name="calendarchanged" type="hidden">
- <select name="calitem[calendarId]" id="calid" class="form-control" required
- onchange="$(this).parents('.edit-event-form').tikiModal(tr('Loading...')); needToConfirm=false; $('input[name=calendarchanged]').val(1); $('input[name=saveitem]').trigger('click');">
+ <select name="calitem[calendarId]" id="calid" class="form-control" required>
{foreach $calendars as $aCalendar}
{$calstyle = ''}
{if not empty($aCalendar.custombgcolor)}
=====================================
templates/calendar_header.tpl
=====================================
@@ -13,7 +13,7 @@
{* avoid Add Event being shown if no calendar is displayed *}
{if $tiki_p_add_events eq 'y'}
- <a {if $isInMainCalendar eq 'y'} style="display:block;"{/if} href="{bootstrap_modal controller='calendar' action='edit_item' size='modal-lg' defaultCalendarId=$defaultCalendarId}" class="btn btn-primary mt-2">{icon name='create'} {tr}Add Event{/tr}</a>
+ <a {if $isInMainCalendar eq 'y'} style="display:block;"{/if} href="{bootstrap_modal controller='calendar' action='edit_item' size='modal-lg' defaultCalendarId=$defaultCalendarId returnURL=$returnURL}" class="btn btn-primary mt-2">{icon name='create'} {tr}Add Event{/tr}</a>
{/if}
{if $viewlist eq 'list'}
=====================================
templates/modules/mod-calendar_new.tpl
=====================================
@@ -3,7 +3,7 @@
{if $tiki_p_add_events eq 'y' && (empty($module_params.showaction) || $module_params.showaction ne 'n')}
<br>
<p>
- <a class="btn btn-link" href="{bootstrap_modal controller='calendar' action=$prefs.calendar_event_click_action size='modal-lg'}" role="button">
+ <a class="btn btn-link" href="{bootstrap_modal controller='calendar' action='edit_item' size='modal-lg' defaultCalendarId=$defaultCalendarId return_url=$returnURL}" role="button">
{icon name="add"}
{tr}Add Event{/tr}
</a>
@@ -24,13 +24,15 @@
let paramOfModuleCalendar = {{$eventCalendarParams|json_encode}};
const moduleCalendarFocusDate = document.getElementById('date-module-calendar');
paramOfModuleCalendar['initialDate'] = $('#date-module-calendar').val();
+ let returnUrl = ('{{$returnURL}}');
+ returnUrl = returnUrl.toString();
const calendarContainer = [window.moduleCalendar];
- $("#module-calendar").setupEventCalendar({{$eventCalendarParams|json_encode}}, calendarContainer, 'module-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$moduleCalendarIds}}');
+ $("#module-calendar").setupEventCalendar({{$eventCalendarParams|json_encode}}, calendarContainer, 'module-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$moduleCalendarIds}}', returnUrl);
moduleCalendarFocusDate.addEventListener('change', () => {
document.getElementById('module-calendar').innerHTML = "";
paramOfModuleCalendar['initialDate'] = $('#date-module-calendar').val();
- $("#module-calendar").setupEventCalendar(paramOfModuleCalendar, calendarContainer, 'module-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$moduleCalendarIds}}');
+ $("#module-calendar").setupEventCalendar(paramOfModuleCalendar, calendarContainer, 'module-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$moduleCalendarIds}}', returnUrl);
})
{{if $prefs.print_pdf_from_url neq 'none'}$("#module-calendar").addEventCalendarPrint('#module-calendar-pdf-btn', calendarContainer[0]);{/if}}
{/jq}
=====================================
templates/wiki-plugins/wikiplugin_calendar.tpl
=====================================
@@ -1,6 +1,6 @@
<div class="border border-secondary p-2">
{if $tiki_p_add_events eq 'y' and $viewlist neq 'list'}
- <a href="{bootstrap_modal controller='calendar' action='edit_item' size='modal-lg' defaultCalendarId=$defaultCalendarId}" class="btn btn-primary">{icon name='create'} {tr}Add Event{/tr}</a>
+ <a href="{bootstrap_modal controller='calendar' action='edit_item' size='modal-lg' defaultCalendarId=$defaultCalendarId return_url=$returnURL}" class="btn btn-primary">{icon name='create'} {tr}Add Event{/tr}</a>
{/if}
{if count($calendars) >= 1 && $viewnavbar eq 'y'}
{include file="export_calendar_in_csv_or_ical.tpl"}
@@ -11,12 +11,14 @@
let content = {{$eventCalendarParams|json_encode}};
const elt = document.getElementById('date-plugin-calendar');
content['initialDate'] = $('#date-plugin-calendar').val();
- const wikipluginCalendar = [window.pluginCalendar]
- $("#plugin-calendar").setupEventCalendar(content, wikipluginCalendar, 'plugin-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$pluginCalendarIds}}');
+ const wikipluginCalendar = [window.pluginCalendar];
+ let returnUrlForPlugin = ('{{$returnURL}}');
+ returnUrlForPlugin = returnUrlForPlugin.toString();
+ $("#plugin-calendar").setupEventCalendar(content, wikipluginCalendar, 'plugin-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$pluginCalendarIds}}', returnUrlForPlugin);
elt.addEventListener('change', () => {
document.getElementById('plugin-calendar').innerHTML = "";
content['initialDate'] = $('#date-plugin-calendar').val();
- $("#plugin-calendar").setupEventCalendar(content, wikipluginCalendar, 'plugin-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$pluginCalendarIds}}');
+ $("#plugin-calendar").setupEventCalendar(content, wikipluginCalendar, 'plugin-calendar', 'tiki-ajax_services.php?controller=calendar&action=list_items&calIds={{$pluginCalendarIds}}', returnUrlForPlugin);
})
{{if $prefs.print_pdf_from_url neq 'none'}$("#plugin-calendar").addEventCalendarPrint('#calendar-pdf-btn', wikipluginCalendar[0]);{/if}}
{/jq}
@@ -51,7 +53,6 @@
{if $viewlist neq 'list'}
<input type="date" value="{$focusdate}" id="date-plugin-calendar">
{/if}
-
<div id='plugin-calendar'></div>
{if $viewlist eq 'list'}
{$out}
=====================================
tiki-calendar.php
=====================================
@@ -168,6 +168,9 @@ if (! empty($_REQUEST["calitemId"])) {
} else {
$calitemId = '';
}
+global $base_uri;
+$current_url = $base_uri;
+$smarty->assign('returnURL', $current_url);
$smarty->assign('currentcalitemId', $calitemId);
$smarty->assign('displayedcals', $_SESSION['CalendarViewGroups']);
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/f284f3f5f72023db063552832040e1450bd7c473
--
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/f284f3f5f72023db063552832040e1450bd7c473
You're receiving this email because of your account on gitlab.com.
_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs