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)
|
||||
if (local_user() && local_user() == $rr['uid'] && $rr['type'] == 'event') {
|
||||
$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'), '', '');
|
||||
}
|
||||
|
||||
|
@ -614,6 +615,7 @@ function process_events($arr) {
|
|||
'd' => $d,
|
||||
'edit' => $edit,
|
||||
'drop' => $drop,
|
||||
'copy' => $copy,
|
||||
'is_first' => $is_first,
|
||||
'item' => $rr,
|
||||
'html' => $html,
|
||||
|
|
|
@ -250,6 +250,10 @@ function events_content(App $a) {
|
|||
$mode = 'drop';
|
||||
$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') {
|
||||
$mode = 'new';
|
||||
$event_id = 0;
|
||||
|
@ -399,7 +403,7 @@ function events_content(App $a) {
|
|||
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",
|
||||
intval($event_id),
|
||||
intval(local_user())
|
||||
|
@ -410,7 +414,7 @@ function events_content(App $a) {
|
|||
}
|
||||
|
||||
// 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();}
|
||||
// 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'];}
|
||||
|
@ -470,10 +474,17 @@ function events_content(App $a) {
|
|||
|
||||
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)));
|
||||
}
|
||||
|
||||
// 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');
|
||||
|
||||
$o .= replace_macros($tpl,array(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
$(document).ready(function() {
|
||||
// go to the permissions tab if the checkbox is checked
|
||||
$('body').on("change", "#id_share", function() {
|
||||
$(document).ready(function() {
|
||||
// Go to the permissions tab if the checkbox is checked.
|
||||
$('body').on("click", "#id_share", function() {
|
||||
if ($('#id_share').is(':checked') && !( $('#id_share').attr("disabled"))) {
|
||||
$('#acl-wrapper').show();
|
||||
$("a#event-perms-lnk").parent("li").show();
|
||||
|
@ -13,12 +13,12 @@ $(document).ready(function() {
|
|||
}
|
||||
}).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() {
|
||||
enableDisableFinishDate()
|
||||
}).trigger('change');
|
||||
|
||||
// js for the permission sextion
|
||||
// JS for the permission section.
|
||||
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
|
||||
var selstr;
|
||||
$('#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');
|
||||
|
||||
// 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){
|
||||
e.preventDefault();
|
||||
toggleEventNav(this);
|
||||
});
|
||||
|
||||
// this is experimental. We maybe can make use of it to inject
|
||||
// some js code while the event modal opens
|
||||
// This is experimental. We maybe can make use of it to inject
|
||||
// some js code while the event modal opens.
|
||||
//$('body').on('show.bs.modal', function () {
|
||||
// enableDisableFinishDate();
|
||||
//});
|
||||
|
||||
// clear some elements (e.g. the event-preview container) when
|
||||
// selecting a event nav link so it don't appear more than once
|
||||
// Clear some elements (e.g. the event-preview container) when
|
||||
// selecting a event nav link so it don't appear more than once.
|
||||
$('body').on("click", "#event-nav a", function(e) {
|
||||
$("#event-preview").empty();
|
||||
e.preventDefault();
|
||||
|
@ -53,7 +53,7 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
// Load the html of the actual event and incect the output to the
|
||||
// event-edit section
|
||||
// event-edit section.
|
||||
function doEventPreview() {
|
||||
$('#event-edit-preview').val(1);
|
||||
$.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) {
|
||||
var char = qOrAmp(url);
|
||||
url = url + char + 'mode=none';
|
||||
|
@ -76,8 +76,8 @@ function eventEdit(url) {
|
|||
});
|
||||
}
|
||||
|
||||
// the following functions show/hide the specific event-edit content
|
||||
// in dependence of the selected nav
|
||||
// The following functions show/hide the specific event-edit content
|
||||
// in dependence of the selected nav.
|
||||
function eventAclActive() {
|
||||
$("#event-edit-wrapper, #event-preview, #event-desc-wrapper").hide();
|
||||
$("#event-acl-wrapper").show();
|
||||
|
@ -94,8 +94,8 @@ function eventEditActive() {
|
|||
$("#event-acl-wrapper, #event-preview, #event-desc-wrapper").hide();
|
||||
$("#event-edit-wrapper").show();
|
||||
|
||||
//make sure jot text does have really the active class (we do this because there are some
|
||||
// other events which trigger jot text
|
||||
// Make sure jot text does have really the active class (we do this because there are some
|
||||
// other events which trigger jot text.
|
||||
toggleEventNav($("#event-edit-lnk"));
|
||||
}
|
||||
|
||||
|
@ -104,17 +104,17 @@ function eventDescActive() {
|
|||
$("#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) {
|
||||
// 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");
|
||||
// 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");
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 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() {
|
||||
if( $('#id_nofinish').is(':checked'))
|
||||
$('#id_finish_text').prop("disabled", true);
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
<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.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.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>
|
||||
|
|
Loading…
Reference in a new issue