]> git.mxchange.org Git - friendica.git/commitdiff
add event action: duplicate events
authorrabuzarus <>
Sun, 15 Oct 2017 15:30:28 +0000 (17:30 +0200)
committerrabuzarus <>
Sun, 15 Oct 2017 15:30:28 +0000 (17:30 +0200)
include/event.php
mod/events.php
view/theme/frio/js/event_edit.js
view/theme/frio/templates/event.tpl

index 7840032c77c55d99ed31cffb7ddc7148116c1416..bb05027a96fef4109922f446765dfafc537231b3 100644 (file)
@@ -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,
index 4e70c005690d686f3e74e1f9712e497bb6d2fd18..4959212ec6f816c579e0e7448b6bebe799537625 100644 (file)
@@ -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(
index 1cefed77f5aa1165dca549c06901d8a1a947fb0c..2eec51916a8b3fab3a416568d018aabeb99b813d 100644 (file)
@@ -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);
index e73d04eccf42d366f10a0028b1b37a00898e847c..ed3877665e2cfa12b0b5e29ca052de20b57fb872 100644 (file)
@@ -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>