Calendar: Switch from et2_dialog to Et2Dialog

This commit is contained in:
nathan 2022-03-18 13:58:13 -06:00
parent 53ecdba510
commit 046599af2f
4 changed files with 85 additions and 83 deletions

View File

@ -32,7 +32,7 @@ import {et2_calendar_daycol} from "./et2_widget_daycol";
import {et2_calendar_planner} from "./et2_widget_planner"; import {et2_calendar_planner} from "./et2_widget_planner";
import {et2_calendar_planner_row} from "./et2_widget_planner_row"; import {et2_calendar_planner_row} from "./et2_widget_planner_row";
import {et2_calendar_event} from "./et2_widget_event"; import {et2_calendar_event} from "./et2_widget_event";
import {et2_dialog} from "../../api/js/etemplate/et2_widget_dialog"; import {Et2Dialog} from "../../api/js/etemplate/Et2Dialog/Et2Dialog";
import {et2_valueWidget} from "../../api/js/etemplate/et2_core_valueWidget"; import {et2_valueWidget} from "../../api/js/etemplate/et2_core_valueWidget";
import {et2_button} from "../../api/js/etemplate/et2_widget_button"; import {et2_button} from "../../api/js/etemplate/et2_widget_button";
import {et2_selectbox} from "../../api/js/etemplate/et2_widget_selectbox"; import {et2_selectbox} from "../../api/js/etemplate/et2_widget_selectbox";
@ -49,8 +49,6 @@ import {et2_number} from "../../api/js/etemplate/et2_widget_number";
import {et2_template} from "../../api/js/etemplate/et2_widget_template"; import {et2_template} from "../../api/js/etemplate/et2_widget_template";
import {et2_checkbox} from "../../api/js/etemplate/et2_widget_checkbox"; import {et2_checkbox} from "../../api/js/etemplate/et2_widget_checkbox";
import {et2_grid} from "../../api/js/etemplate/et2_widget_grid"; import {et2_grid} from "../../api/js/etemplate/et2_widget_grid";
import "../../vendor/bower-asset/jquery-touchswipe/jquery.touchSwipe.min.js";
import {Et2InputWidgetInterface} from "../../api/js/etemplate/Et2InputWidget/Et2InputWidget";
import {Et2Textbox} from "../../api/js/etemplate/Et2Textbox/Et2Textbox"; import {Et2Textbox} from "../../api/js/etemplate/Et2Textbox/Et2Textbox";
/** /**
@ -1419,7 +1417,7 @@ export class CalendarApp extends EgwApp
{ {
widget.series_split_prompt(function(_button_id) widget.series_split_prompt(function(_button_id)
{ {
if (_button_id == et2_dialog.OK_BUTTON) if(_button_id == Et2Dialog.OK_BUTTON)
{ {
_send(); _send();
} }
@ -1630,27 +1628,27 @@ export class CalendarApp extends EgwApp
{ {
button_id: 'keep', button_id: 'keep',
title: this.egw.lang('All exceptions are converted into single events.'), title: this.egw.lang('All exceptions are converted into single events.'),
text: this.egw.lang('Keep exceptions'), label: this.egw.lang('Keep exceptions'),
id: 'button[delete_keep_exceptions]', id: 'button[delete_keep_exceptions]',
image: 'keep', "default":true image: 'keep', "default": true
}, },
{ {
button_id: 'delete', button_id: 'delete',
title: this.egw.lang('The exceptions are deleted together with the series.'), title: this.egw.lang('The exceptions are deleted together with the series.'),
text: this.egw.lang('Delete exceptions'), label: this.egw.lang('Delete exceptions'),
id: 'button[delete_exceptions]', id: 'button[delete_exceptions]',
image: 'delete' image: 'delete'
}, },
{ {
button_id: 'cancel', button_id: 'cancel',
text: this.egw.lang('Cancel'), label: this.egw.lang('Cancel'),
id: 'dialog[cancel]', id: 'dialog[cancel]',
image: 'cancel' image: 'cancel'
} }
]; ];
var self = this; var self = this;
et2_dialog.show_dialog Et2Dialog.show_dialog
( (
function(_button_id) function(_button_id)
{ {
@ -1665,17 +1663,17 @@ export class CalendarApp extends EgwApp
return false; return false;
} }
}, },
this.egw.lang("Do you want to keep the series exceptions in your calendar?"), "Do you want to keep the series exceptions in your calendar?",
this.egw.lang("This event is part of a series"), {}, buttons , et2_dialog.WARNING_MESSAGE "This event is part of a series", {}, buttons, Et2Dialog.WARNING_MESSAGE
); );
} }
else if (content['recur_type'] !== 0) else if (content['recur_type'] !== 0)
{ {
et2_dialog.confirm(widget,'Delete this series of recurring events','Delete Series'); Et2Dialog.confirm(widget, 'Delete this series of recurring events', 'Delete Series');
} }
else else
{ {
et2_dialog.confirm(widget,'Delete this event','Delete'); Et2Dialog.confirm(widget, 'Delete this event', 'Delete');
} }
} }
@ -2109,16 +2107,25 @@ export class CalendarApp extends EgwApp
this.quick_add = options; this.quick_add = options;
// Open dialog to use as target // Open dialog to use as target
var add_dialog = et2_dialog.show_dialog(null, '', ' ', null, [], et2_dialog.PLAIN_MESSAGE, this.egw); let add_dialog = Et2Dialog.show_dialog(null, '', ' ', null, [], Et2Dialog.PLAIN_MESSAGE, this.egw);
add_dialog.id = "quick_add";
// Position by the event
if(event)
{
add_dialog.config = {...add_dialog.config, referenceNode: event.getDOMNode()};
}
// Call the server, get it into the dialog // Call the server, get it into the dialog
options = jQuery.extend({menuaction: 'calendar.calendar_uiforms.ajax_add', template: 'calendar.add'}, options); options = jQuery.extend({menuaction: 'calendar.calendar_uiforms.ajax_add', template: 'calendar.add'}, options);
this.egw.json( this.egw.json(
this.egw.link('/json.php', options), this.egw.link('/json.php', options),
//menuaction + options.join('&'),
[options], [options],
function(data) { function(data)
if(data.type) return false; {
if(data.type)
{
return false;
}
var content = { var content = {
html: data[0], html: data[0],
js: '' js: ''
@ -2127,49 +2134,36 @@ export class CalendarApp extends EgwApp
egw_seperateJavaScript(content); egw_seperateJavaScript(content);
// Check for right template in the response // Check for right template in the response
if(content.html.indexOf('calendar-add') <= 0) return false; if(content.html.indexOf('calendar-add') <= 0)
{
return false;
}
// Insert the content // Insert the content
jQuery(add_dialog.div).append(content.html); add_dialog._overlayContentNode._contentNode.insertAdjacentHTML("beforeend", content.html);
// Run the javascript code
jQuery(add_dialog.div).append(content.js);
// Re-position after load
jQuery('form', add_dialog.div).one('load', function() {
// Hide close button
jQuery(".ui-dialog-titlebar-close", add_dialog.div.parent()).hide();
// Position by event
add_dialog.div.dialog('widget').position({
my: 'center top', at: event ? 'bottom' : 'center', of: event ? event.node : window,
collision: 'flipfit'
});
});
} }
).sendRequest(); ).sendRequest();
add_dialog.div.dialog({ add_dialog.addEventListener("close", (ev) =>
close: function( ev, ui ) { {
// Wait a bit to make sure etemplate button finishes processing, or it will error // Wait a bit to make sure etemplate button finishes processing, or it will error
window.setTimeout(function() { window.setTimeout(function()
{
if(event && event.destroy) if(event && event.destroy)
{ {
event.destroy(); event.destroy();
} }
var template = etemplate2.getById('calendar-add'); let template = etemplate2.getById('calendar-add');
if(template && template.name === 'calendar.add') if(template && template.name === 'calendar.add')
{ {
template.clear(); template.clear();
this.dialog.destroy();
delete app.calendar.quick_add; delete app.calendar.quick_add;
} }
else if (template || (template = etemplate2.getById("calendar-conflicts"))) else if(template || (template = etemplate2.getById("calendar-conflicts")))
{ {
// Open conflicts // Open conflicts
var data = jQuery.extend( var data = jQuery.extend(
{menuaction: 'calendar.calendar_uiforms.ajax_conflicts'}, {menuaction: 'calendar.calendar_uiforms.ajax_conflicts'},
template.widgetContainer.getArrayMgr('content').data, template.widgetContainer.getArrayMgr('content').data,
app.calendar.quick_add app.calendar.quick_add
); );
@ -2184,15 +2178,11 @@ export class CalendarApp extends EgwApp
delete app.calendar.quick_add; delete app.calendar.quick_add;
// Close the JS dialog
this.dialog.destroy();
// Do not submit this etemplate // Do not submit this etemplate
return false; return false;
} }
}.bind({dialog: add_dialog, event: ev}), 1000); }.bind({dialog: add_dialog, event: ev}), 1000);
}
}); });
} }
@ -2207,15 +2197,20 @@ export class CalendarApp extends EgwApp
{ {
// Include all sent values so we can pass on things that we don't have UI widgets for // Include all sent values so we can pass on things that we don't have UI widgets for
this.quick_add = this._add_dialog_values(widget); this.quick_add = this._add_dialog_values(widget);
widget.getInstanceManager().isInvalid().then((invalid) =>
// Close the dialog {
jQuery(widget.getInstanceManager().DOMContainer.parentNode).dialog('close'); if(invalid.filter((widget) => widget).length == 0)
{
// Close the dialog, if everything is OK
(<Et2Dialog><unknown>document.querySelector('et2-dialog#quick_add')).close();
}
});
// Mess with opener so update opener in response works // Mess with opener so update opener in response works
window.opener = window; window.opener = window;
window.setTimeout(function() {window.opener = null;},1000); window.setTimeout(function() {window.opener = null;}, 1000);
// Proceed with submit // Proceed with submit, though it will fail if something is invalid
return true; return true;
} }
@ -2240,7 +2235,7 @@ export class CalendarApp extends EgwApp
egw.open(null,'calendar','edit',options); egw.open(null,'calendar','edit',options);
// Close the dialog // Close the dialog
jQuery(widget.getInstanceManager().DOMContainer.parentNode).dialog('close'); (<Et2Dialog><unknown>document.querySelector('et2-dialog#quick_add')).close()
// Do not submit this etemplate // Do not submit this etemplate
return false; return false;
@ -2492,7 +2487,7 @@ export class CalendarApp extends EgwApp
et2_calendar_event.series_split_prompt( et2_calendar_event.series_split_prompt(
content, instance_date, function(_button_id) content, instance_date, function(_button_id)
{ {
if (_button_id == et2_dialog.OK_BUTTON) if(_button_id == Et2Dialog.OK_BUTTON)
{ {
that.et2.getInstanceManager().submit(button); that.et2.getInstanceManager().submit(button);

View File

@ -25,7 +25,7 @@ import {egw_getAppObjectManager, egwActionObject} from '../../api/js/egw_action/
import {egw} from "../../api/js/jsapi/egw_global"; import {egw} from "../../api/js/jsapi/egw_global";
import {et2_selectbox} from "../../api/js/etemplate/et2_widget_selectbox"; import {et2_selectbox} from "../../api/js/etemplate/et2_widget_selectbox";
import {et2_container} from "../../api/js/etemplate/et2_core_baseWidget"; import {et2_container} from "../../api/js/etemplate/et2_core_baseWidget";
import {et2_dialog} from "../../api/js/etemplate/et2_widget_dialog"; import {Et2Dialog} from "../../api/js/etemplate/Et2Dialog/Et2Dialog";
/** /**
* Class for a single event, displayed in either the timegrid or planner view * Class for a single event, displayed in either the timegrid or planner view
@ -1398,20 +1398,25 @@ export class et2_calendar_event extends et2_valueWidget implements et2_IDetached
} }
if (parseInt(event_data.recur_type)) if (parseInt(event_data.recur_type))
{ {
const buttons = [ const buttons = [
{text: egw.lang("Edit exception"), id: "exception", class: "ui-priority-primary", "default": true}, {
{text: egw.lang("Edit series"), id: "series"}, label: egw.lang("Edit exception"),
{text: egw.lang("Cancel"), id: "cancel"} id: "exception",
]; class: "ui-priority-primary",
et2_dialog.show_dialog( "default": true
function (button_id) },
{ {label: egw.lang("Edit series"), id: "series"},
callback.call(that, button_id, event_data); {label: egw.lang("Cancel"), id: "cancel"}
}, ];
(!event_data.is_private ? event_data['title'] : egw.lang('private')) + "\n" + Et2Dialog.show_dialog(
egw.lang("Do you want to edit this event as an exception or the whole series?"), function(button_id)
egw.lang("This event is part of a series"), {}, buttons, et2_dialog.QUESTION_MESSAGE {
); callback.call(that, button_id, event_data);
},
(!event_data.is_private ? event_data['title'] : egw.lang('private')) + "\n" +
egw.lang("Do you want to edit this event as an exception or the whole series?"),
"This event is part of a series", {}, buttons, Et2Dialog.QUESTION_MESSAGE
);
} }
else else
{ {
@ -1464,15 +1469,15 @@ export class et2_calendar_event extends et2_valueWidget implements et2_IDetached
if (parseInt(event_data.recur_type)) if (parseInt(event_data.recur_type))
{ {
et2_dialog.show_dialog( Et2Dialog.show_dialog(
function (button_id) function(button_id)
{ {
callback.call(that, button_id, event_data); callback.call(that, button_id, event_data);
}, },
(!event_data.is_private ? event_data['title'] : egw.lang('private')) + "\n" + (!event_data.is_private ? event_data['title'] : egw.lang('private')) + "\n" +
egw.lang("Do you really want to change the start of this series? If you do, the original series will be terminated as of %1 and a new series for the future reflecting your changes will be created.", termination_date), egw.lang("Do you really want to change the start of this series? If you do, the original series will be terminated as of %1 and a new series for the future reflecting your changes will be created.", termination_date),
egw.lang("This event is part of a series"), {}, et2_dialog.BUTTONS_OK_CANCEL, et2_dialog.WARNING_MESSAGE "This event is part of a series", {}, Et2Dialog.BUTTONS_OK_CANCEL, Et2Dialog.WARNING_MESSAGE
); );
} }
} }

View File

@ -23,9 +23,9 @@ import {egw} from "../../api/js/jsapi/egw_global";
import {et2_no_init} from "../../api/js/etemplate/et2_core_common"; import {et2_no_init} from "../../api/js/etemplate/et2_core_common";
import {et2_IDetachedDOM, et2_IPrint, et2_IResizeable} from "../../api/js/etemplate/et2_core_interfaces"; import {et2_IDetachedDOM, et2_IPrint, et2_IResizeable} from "../../api/js/etemplate/et2_core_interfaces";
import {et2_calendar_event} from "./et2_widget_event"; import {et2_calendar_event} from "./et2_widget_event";
import {egwActionObject, egw_getObjectManager} from "../../api/js/egw_action/egw_action.js"; import {egw_getObjectManager, egwActionObject} from "../../api/js/egw_action/egw_action.js";
import {et2_compileLegacyJS} from "../../api/js/etemplate/et2_core_legacyJSFunctions"; import {et2_compileLegacyJS} from "../../api/js/etemplate/et2_core_legacyJSFunctions";
import {et2_dialog} from "../../api/js/etemplate/et2_widget_dialog"; import {Et2Dialog} from "../../api/js/etemplate/Et2Dialog/Et2Dialog";
import {sprintf} from "../../api/js/egw_action/egw_action_common.js"; import {sprintf} from "../../api/js/egw_action/egw_action_common.js";
import {EGW_AI_DRAG_OUT, EGW_AI_DRAG_OVER} from "../../api/js/egw_action/egw_action_constants.js"; import {EGW_AI_DRAG_OUT, EGW_AI_DRAG_OVER} from "../../api/js/egw_action/egw_action_constants.js";
@ -567,7 +567,7 @@ export class et2_calendar_timegrid extends et2_calendar_view implements et2_IDet
if (event_widget.options.value.recur_type && button_id === 'series') if (event_widget.options.value.recur_type && button_id === 'series')
{ {
event_widget.series_split_prompt(function(_button_id) { event_widget.series_split_prompt(function(_button_id) {
if (_button_id === et2_dialog.OK_BUTTON) if(_button_id === Et2Dialog.OK_BUTTON)
{ {
_send(event_widget.options.value.recur_date); _send(event_widget.options.value.recur_date);
} }

View File

@ -30,7 +30,9 @@
<hbox class="dialogFooterToolbar"> <hbox class="dialogFooterToolbar">
<button statustext="saves the changes made" label="Save" id="button[save]" image="save" background_image="1" onclick="return app.calendar.add_dialog_save(ev, widget); "/> <button statustext="saves the changes made" label="Save" id="button[save]" image="save" background_image="1" onclick="return app.calendar.add_dialog_save(ev, widget); "/>
<button statustext="Full edit dialog" label="Edit" id="button[edit]" image="edit" background_image="1" onclick="return app.calendar.add_dialog_edit(ev, widget);"/> <button statustext="Full edit dialog" label="Edit" id="button[edit]" image="edit" background_image="1" onclick="return app.calendar.add_dialog_edit(ev, widget);"/>
<button statustext="Close the window" label="Cancel" id="button[cancel]" onclick="jQuery(widget.getInstanceManager().DOMContainer.parentNode).dialog('close');" image="cancel" background_image="1"/> <button statustext="Close the window" label="Cancel" id="button[cancel]"
onclick="document.querySelector('et2-dialog#quick_add').close()" image="cancel"
background_image="1"/>
<checkbox label="Always use full edit dialog" id="new_event_dialog" statustext="Always use the full edit dialog, not this little dialog" onchange="egw.set_preference('calendar',widget.id,widget.get_value() ? 'edit' : 'add');"/> <checkbox label="Always use full edit dialog" id="new_event_dialog" statustext="Always use the full edit dialog, not this little dialog" onchange="egw.set_preference('calendar',widget.id,widget.get_value() ? 'edit' : 'add');"/>
</hbox> </hbox>
</template> </template>