add event action: duplicate events
This commit is contained in:
parent
dd0e75628a
commit
4584670af4
4 changed files with 37 additions and 23 deletions
|
@ -591,6 +591,7 @@ function process_events($arr) {
|
||||||
// is a real event (no bithdays)
|
// is a real event (no bithdays)
|
||||||
if (local_user() && local_user() == $rr['uid'] && $rr['type'] == 'event') {
|
if (local_user() && local_user() == $rr['uid'] && $rr['type'] == 'event') {
|
||||||
$edit = ((! $rr['cid']) ? array(System::baseUrl() . '/events/event/' . $rr['id'], t('Edit event'), '', '') : null);
|
$edit = ((! $rr['cid']) ? array(System::baseUrl() . '/events/event/' . $rr['id'], t('Edit event'), '', '') : null);
|
||||||
|
$copy = ((! $rr['cid']) ? array(System::baseUrl() . '/events/copy/' . $rr['id'], t('Duplicate event'), '', '') : null);
|
||||||
$drop = array(System::baseUrl() . '/events/drop/' . $rr['id'], t('Delete event'), '', '');
|
$drop = array(System::baseUrl() . '/events/drop/' . $rr['id'], t('Delete event'), '', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -614,6 +615,7 @@ function process_events($arr) {
|
||||||
'd' => $d,
|
'd' => $d,
|
||||||
'edit' => $edit,
|
'edit' => $edit,
|
||||||
'drop' => $drop,
|
'drop' => $drop,
|
||||||
|
'copy' => $copy,
|
||||||
'is_first' => $is_first,
|
'is_first' => $is_first,
|
||||||
'item' => $rr,
|
'item' => $rr,
|
||||||
'html' => $html,
|
'html' => $html,
|
||||||
|
|
|
@ -250,6 +250,10 @@ function events_content(App $a) {
|
||||||
$mode = 'drop';
|
$mode = 'drop';
|
||||||
$event_id = intval($a->argv[2]);
|
$event_id = intval($a->argv[2]);
|
||||||
}
|
}
|
||||||
|
if ($a->argc > 2 && $a->argv[1] == 'copy') {
|
||||||
|
$mode = 'copy';
|
||||||
|
$event_id = intval($a->argv[2]);
|
||||||
|
}
|
||||||
if ($a->argv[1] === 'new') {
|
if ($a->argv[1] === 'new') {
|
||||||
$mode = 'new';
|
$mode = 'new';
|
||||||
$event_id = 0;
|
$event_id = 0;
|
||||||
|
@ -399,7 +403,7 @@ function events_content(App $a) {
|
||||||
return $o;
|
return $o;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode === 'edit' && $event_id) {
|
if (($mode === 'edit' || $mode === 'copy') && $event_id) {
|
||||||
$r = q("SELECT * FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
$r = q("SELECT * FROM `event` WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||||
intval($event_id),
|
intval($event_id),
|
||||||
intval(local_user())
|
intval(local_user())
|
||||||
|
@ -410,7 +414,7 @@ function events_content(App $a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Passed parameters overrides anything found in the DB
|
// Passed parameters overrides anything found in the DB
|
||||||
if ($mode === 'edit' || $mode === 'new') {
|
if ($mode === 'edit' || $mode === 'new' || $mode === 'copy') {
|
||||||
if (!x($orig_event)) {$orig_event = array();}
|
if (!x($orig_event)) {$orig_event = array();}
|
||||||
// In case of an error the browser is redirected back here, with these parameters filled in with the previous values
|
// In case of an error the browser is redirected back here, with these parameters filled in with the previous values
|
||||||
if (x($_REQUEST, 'nofinish')) {$orig_event['nofinish'] = $_REQUEST['nofinish'];}
|
if (x($_REQUEST, 'nofinish')) {$orig_event['nofinish'] = $_REQUEST['nofinish'];}
|
||||||
|
@ -470,10 +474,17 @@ function events_content(App $a) {
|
||||||
|
|
||||||
require_once 'include/acl_selectors.php' ;
|
require_once 'include/acl_selectors.php' ;
|
||||||
|
|
||||||
if ($mode === 'new') {
|
if ($mode === 'new' || $mode === 'copy') {
|
||||||
$acl = (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user)));
|
$acl = (($cid) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $a->user)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we copy an old event, we need to remove the ID and URI
|
||||||
|
// from the orgiginal event.
|
||||||
|
if ($mode === 'copy') {
|
||||||
|
$eid = 0;
|
||||||
|
$uri = '';
|
||||||
|
}
|
||||||
|
|
||||||
$tpl = get_markup_template('event_form.tpl');
|
$tpl = get_markup_template('event_form.tpl');
|
||||||
|
|
||||||
$o .= replace_macros($tpl,array(
|
$o .= replace_macros($tpl,array(
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
// go to the permissions tab if the checkbox is checked
|
// Go to the permissions tab if the checkbox is checked.
|
||||||
$('body').on("change", "#id_share", function() {
|
$('body').on("click", "#id_share", function() {
|
||||||
if ($('#id_share').is(':checked') && !( $('#id_share').attr("disabled"))) {
|
if ($('#id_share').is(':checked') && !( $('#id_share').attr("disabled"))) {
|
||||||
$('#acl-wrapper').show();
|
$('#acl-wrapper').show();
|
||||||
$("a#event-perms-lnk").parent("li").show();
|
$("a#event-perms-lnk").parent("li").show();
|
||||||
|
@ -13,12 +13,12 @@ $(document).ready(function() {
|
||||||
}
|
}
|
||||||
}).trigger('change');
|
}).trigger('change');
|
||||||
|
|
||||||
// disable the finish time input if the user disable it
|
// Disable the finish time input if the user disable it.
|
||||||
$('body').on("change", "#id_nofinish", function() {
|
$('body').on("change", "#id_nofinish", function() {
|
||||||
enableDisableFinishDate()
|
enableDisableFinishDate()
|
||||||
}).trigger('change');
|
}).trigger('change');
|
||||||
|
|
||||||
// js for the permission sextion
|
// JS for the permission section.
|
||||||
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
|
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
|
||||||
var selstr;
|
var selstr;
|
||||||
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
|
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
|
||||||
|
@ -31,20 +31,20 @@ $(document).ready(function() {
|
||||||
|
|
||||||
}).trigger('change');
|
}).trigger('change');
|
||||||
|
|
||||||
// Change the event nav menu.tabs on click
|
// Change the event nav menu.tabs on click.
|
||||||
$("body").on("click", "#event-nav > li > a", function(e){
|
$("body").on("click", "#event-nav > li > a", function(e){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
toggleEventNav(this);
|
toggleEventNav(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
// this is experimental. We maybe can make use of it to inject
|
// This is experimental. We maybe can make use of it to inject
|
||||||
// some js code while the event modal opens
|
// some js code while the event modal opens.
|
||||||
//$('body').on('show.bs.modal', function () {
|
//$('body').on('show.bs.modal', function () {
|
||||||
// enableDisableFinishDate();
|
// enableDisableFinishDate();
|
||||||
//});
|
//});
|
||||||
|
|
||||||
// clear some elements (e.g. the event-preview container) when
|
// Clear some elements (e.g. the event-preview container) when
|
||||||
// selecting a event nav link so it don't appear more than once
|
// selecting a event nav link so it don't appear more than once.
|
||||||
$('body').on("click", "#event-nav a", function(e) {
|
$('body').on("click", "#event-nav a", function(e) {
|
||||||
$("#event-preview").empty();
|
$("#event-preview").empty();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
@ -53,7 +53,7 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load the html of the actual event and incect the output to the
|
// Load the html of the actual event and incect the output to the
|
||||||
// event-edit section
|
// event-edit section.
|
||||||
function doEventPreview() {
|
function doEventPreview() {
|
||||||
$('#event-edit-preview').val(1);
|
$('#event-edit-preview').val(1);
|
||||||
$.post('events',$('#event-edit-form').serialize(), function(data) {
|
$.post('events',$('#event-edit-form').serialize(), function(data) {
|
||||||
|
@ -63,7 +63,7 @@ function doEventPreview() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// this function load the content of the edit url into a modal
|
// This function load the content of the edit url into a modal.
|
||||||
function eventEdit(url) {
|
function eventEdit(url) {
|
||||||
var char = qOrAmp(url);
|
var char = qOrAmp(url);
|
||||||
url = url + char + 'mode=none';
|
url = url + char + 'mode=none';
|
||||||
|
@ -76,8 +76,8 @@ function eventEdit(url) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// the following functions show/hide the specific event-edit content
|
// The following functions show/hide the specific event-edit content
|
||||||
// in dependence of the selected nav
|
// in dependence of the selected nav.
|
||||||
function eventAclActive() {
|
function eventAclActive() {
|
||||||
$("#event-edit-wrapper, #event-preview, #event-desc-wrapper").hide();
|
$("#event-edit-wrapper, #event-preview, #event-desc-wrapper").hide();
|
||||||
$("#event-acl-wrapper").show();
|
$("#event-acl-wrapper").show();
|
||||||
|
@ -94,8 +94,8 @@ function eventEditActive() {
|
||||||
$("#event-acl-wrapper, #event-preview, #event-desc-wrapper").hide();
|
$("#event-acl-wrapper, #event-preview, #event-desc-wrapper").hide();
|
||||||
$("#event-edit-wrapper").show();
|
$("#event-edit-wrapper").show();
|
||||||
|
|
||||||
//make sure jot text does have really the active class (we do this because there are some
|
// Make sure jot text does have really the active class (we do this because there are some
|
||||||
// other events which trigger jot text
|
// other events which trigger jot text.
|
||||||
toggleEventNav($("#event-edit-lnk"));
|
toggleEventNav($("#event-edit-lnk"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,17 +104,17 @@ function eventDescActive() {
|
||||||
$("#event-desc-wrapper").show();
|
$("#event-desc-wrapper").show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Give the active "event-nav" list element the class "active"
|
// Give the active "event-nav" list element the class "active".
|
||||||
function toggleEventNav (elm) {
|
function toggleEventNav (elm) {
|
||||||
// select all li of #event-nav and remove the active class
|
// Select all li of #event-nav and remove the active class.
|
||||||
$(elm).closest("#event-nav").children("li").removeClass("active");
|
$(elm).closest("#event-nav").children("li").removeClass("active");
|
||||||
// add the active class to the parent of the link which was selected
|
// Add the active class to the parent of the link which was selected.
|
||||||
$(elm).parent("li").addClass("active");
|
$(elm).parent("li").addClass("active");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// disable the input for the finish date if it is not available
|
// Disable the input for the finish date if it is not available.
|
||||||
function enableDisableFinishDate() {
|
function enableDisableFinishDate() {
|
||||||
if( $('#id_nofinish').is(':checked'))
|
if( $('#id_nofinish').is(':checked'))
|
||||||
$('#id_finish_text').prop("disabled", true);
|
$('#id_finish_text').prop("disabled", true);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
<div class="event-buttons pull-right">
|
<div class="event-buttons pull-right">
|
||||||
{{if $event.edit}}<button type="button" class="btn" onclick="eventEdit('{{$event.edit.0}}')" title="{{$event.edit.1}}"><i class="fa fa-pencil" aria-hidden="true"></i></button>{{/if}}
|
{{if $event.edit}}<button type="button" class="btn" onclick="eventEdit('{{$event.edit.0}}')" title="{{$event.edit.1}}"><i class="fa fa-pencil" aria-hidden="true"></i></button>{{/if}}
|
||||||
|
{{if $event.copy}}<button type="button" class="btn" onclick="eventEdit('{{$event.copy.0}}')" title="{{$event.copy.1}}"><i class="fa fa-files-o" aria-hidden="true"></i></button>{{/if}}
|
||||||
{{if $event.drop}}<a href="{{$event.drop.0}}" onclick="return confirmDelete();" title="{{$event.drop.1}}" class="drop-event-link btn"><i class="fa fa-trash-o" aria-hidden="true"></i></a>{{/if}}
|
{{if $event.drop}}<a href="{{$event.drop.0}}" onclick="return confirmDelete();" title="{{$event.drop.1}}" class="drop-event-link btn"><i class="fa fa-trash-o" aria-hidden="true"></i></a>{{/if}}
|
||||||
{{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" class="plink-event-link btn "><i class="fa fa-external-link" aria-hidden="true"></i></a>{{/if}}
|
{{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" class="plink-event-link btn "><i class="fa fa-external-link" aria-hidden="true"></i></a>{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue