Merge commit 'v7.10.15' into 8
Conflicts: docs/gotcha.txt docs/previousVersion.sql docs/templates.txt lib/WebGUI.pm lib/WebGUI/Asset.pm lib/WebGUI/Asset/Event.pm lib/WebGUI/Asset/File.pm lib/WebGUI/Asset/MapPoint.pm lib/WebGUI/Asset/RichEdit.pm lib/WebGUI/Asset/Sku/Product.pm lib/WebGUI/Asset/Snippet.pm lib/WebGUI/Asset/Story.pm lib/WebGUI/Asset/Template.pm lib/WebGUI/Asset/Template/TemplateToolkit.pm lib/WebGUI/Asset/Wobject/Calendar.pm lib/WebGUI/Asset/Wobject/Carousel.pm lib/WebGUI/Asset/Wobject/Collaboration.pm lib/WebGUI/Asset/Wobject/Dashboard.pm lib/WebGUI/Asset/Wobject/DataForm.pm lib/WebGUI/Asset/Wobject/Folder.pm lib/WebGUI/Asset/Wobject/Map.pm lib/WebGUI/Asset/Wobject/Search.pm lib/WebGUI/Asset/Wobject/Shelf.pm lib/WebGUI/Asset/Wobject/StockData.pm lib/WebGUI/Asset/Wobject/StoryTopic.pm lib/WebGUI/Asset/Wobject/SyndicatedContent.pm lib/WebGUI/Asset/Wobject/Thingy.pm lib/WebGUI/Asset/Wobject/WeatherData.pm lib/WebGUI/AssetClipboard.pm lib/WebGUI/AssetCollateral/DataForm/Entry.pm lib/WebGUI/AssetExportHtml.pm lib/WebGUI/AssetLineage.pm lib/WebGUI/AssetMetaData.pm lib/WebGUI/AssetTrash.pm lib/WebGUI/AssetVersioning.pm lib/WebGUI/Auth.pm lib/WebGUI/Cache/CHI.pm lib/WebGUI/Content/AssetManager.pm lib/WebGUI/Fork/ProgressBar.pm lib/WebGUI/Form/JsonTable.pm lib/WebGUI/Form/TimeField.pm lib/WebGUI/Form/Zipcode.pm lib/WebGUI/Group.pm lib/WebGUI/International.pm lib/WebGUI/Macro/AssetProxy.pm lib/WebGUI/Macro/FileUrl.pm lib/WebGUI/Operation/SSO.pm lib/WebGUI/Operation/User.pm lib/WebGUI/Role/Asset/Subscribable.pm lib/WebGUI/Shop/Cart.pm lib/WebGUI/Shop/Transaction.pm lib/WebGUI/Shop/TransactionItem.pm lib/WebGUI/Test.pm lib/WebGUI/URL/Content.pm lib/WebGUI/URL/Uploads.pm lib/WebGUI/User.pm lib/WebGUI/Workflow/Activity/ExtendCalendarRecurrences.pm lib/WebGUI/Workflow/Activity/SendNewsletters.pm lib/WebGUI/i18n/English/Asset.pm lib/WebGUI/i18n/English/WebGUI.pm sbin/installClass.pl sbin/rebuildLineage.pl sbin/search.pl sbin/testEnvironment.pl t/Asset/Asset.t t/Asset/AssetClipboard.t t/Asset/AssetLineage.t t/Asset/AssetMetaData.t t/Asset/Event.t t/Asset/File.t t/Asset/File/Image.t t/Asset/Post/notification.t t/Asset/Sku.t t/Asset/Story.t t/Asset/Template.t t/Asset/Wobject/Collaboration/templateVariables.t t/Asset/Wobject/Collaboration/unarchiveAll.t t/Asset/Wobject/Shelf.t t/Auth.t t/Macro/EditableToggle.t t/Macro/FilePump.t t/Shop/Cart.t t/Shop/Transaction.t t/Storage.t t/User.t t/Workflow.t
This commit is contained in:
commit
277faae8a1
783 changed files with 32041 additions and 25495 deletions
|
|
@ -17,6 +17,7 @@ use Moose;
|
|||
use Tie::IxHash;
|
||||
use WebGUI::Definition::Asset;
|
||||
extends 'WebGUI::Asset::Wobject';
|
||||
with 'WebGUI::Role::Asset::JSONCollateral';
|
||||
|
||||
define assetName => ['assetName', 'Asset_Calendar'];
|
||||
define icon => 'calendar.gif';
|
||||
|
|
@ -260,7 +261,7 @@ property icalFeeds => (
|
|||
label => ['Feed URL','Asset_Calendar'],
|
||||
},
|
||||
{
|
||||
name => 'status',
|
||||
name => 'lastResult',
|
||||
type => 'readonly',
|
||||
label => ['434','WebGUI'],
|
||||
},
|
||||
|
|
@ -303,6 +304,7 @@ use WebGUI::Search;
|
|||
use WebGUI::Form;
|
||||
use WebGUI::HTML;
|
||||
use WebGUI::DateTime;
|
||||
use WebGUI::ICal;
|
||||
|
||||
use DateTime;
|
||||
use JSON;
|
||||
|
|
@ -348,10 +350,6 @@ The date this feed was added, or edited last.
|
|||
|
||||
The results of what happened the last time this feed was accessed to pull iCal.
|
||||
|
||||
=head4 feedType
|
||||
|
||||
What kind of feed this is.
|
||||
|
||||
=cut
|
||||
|
||||
sub addFeed {
|
||||
|
|
@ -860,6 +858,17 @@ override processEditForm => sub {
|
|||
$self->createSubscriptionGroup();
|
||||
}
|
||||
|
||||
my @feeds = @{ $self->getFeeds };
|
||||
foreach my $feed (@feeds) {
|
||||
if ($feed->{lastUpdated} eq 'new') {
|
||||
$feed->{lastUpdated} = 'never';
|
||||
}
|
||||
if ($feed->{lastResult} eq 'new') {
|
||||
$feed->{lastResult} = '';
|
||||
}
|
||||
$self->setFeed($feed->{feedId}, $feed);
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
|
|
@ -1706,97 +1715,20 @@ sub www_ical {
|
|||
$dt_end = $dt_start->clone->add( seconds => $self->icalInterval );
|
||||
}
|
||||
|
||||
my $ical = WebGUI::ICal->new();
|
||||
|
||||
# Get all the events we're going to display
|
||||
my @events = $self->getEventsIn($dt_start->toMysql,$dt_end->toMysql);
|
||||
|
||||
|
||||
my $ical = qq{BEGIN:VCALENDAR\r\n}
|
||||
. qq{PRODID:WebGUI }.$WebGUI::VERSION."-".$WebGUI::STATUS.qq{\r\n}
|
||||
. qq{VERSION:2.0\r\n};
|
||||
|
||||
# VEVENT:
|
||||
EVENT: for my $event (@events) {
|
||||
next EVENT unless $event->canView();
|
||||
$ical .= qq{BEGIN:VEVENT\r\n};
|
||||
|
||||
### UID
|
||||
# Use feed's UID to prevent over-propagation
|
||||
if ($event->feedUid) {
|
||||
$ical .= qq{UID:}.$event->feedUid."\r\n";
|
||||
}
|
||||
# Create a UID for feeds native to this calendar
|
||||
else {
|
||||
my $domain = $session->config->get("sitename")->[0];
|
||||
$ical .= qq{UID:}.$event->assetId.'@'.$domain."\r\n";
|
||||
}
|
||||
|
||||
# LAST-MODIFIED (revisionDate)
|
||||
$ical .= qq{LAST-MODIFIED:}
|
||||
. WebGUI::DateTime->new($self->session, $event->revisionDate)->toIcal
|
||||
. "\r\n";
|
||||
|
||||
# CREATED (creationDate)
|
||||
$ical .= qq{CREATED:}
|
||||
. WebGUI::DateTime->new($self->session, $event->creationDate)->toIcal
|
||||
. "\r\n";
|
||||
|
||||
# SEQUENCE
|
||||
my $sequenceNumber = $event->iCalSequenceNumber;
|
||||
if (defined $sequenceNumber) {
|
||||
$ical .= qq{SEQUENCE:}
|
||||
. $event->iCalSequenceNumber
|
||||
. "\r\n";
|
||||
}
|
||||
|
||||
# DTSTART
|
||||
my $eventStart = $event->getIcalStart;
|
||||
$ical .= 'DTSTART';
|
||||
if ($eventStart !~ /T/) {
|
||||
$ical .= ';VALUE=DATE';
|
||||
}
|
||||
$ical .= ":$eventStart\r\n";
|
||||
|
||||
# DTEND
|
||||
my $eventEnd = $event->getIcalEnd;
|
||||
$ical .= 'DTEND';
|
||||
if ($eventEnd !~ /T/) {
|
||||
$ical .= ';VALUE=DATE';
|
||||
}
|
||||
$ical .= ":$eventEnd\r\n";
|
||||
|
||||
# Summary (the title)
|
||||
# Wrapped at 75 columns
|
||||
$ical .= $self->wrapIcal("SUMMARY:".$event->title)."\r\n";
|
||||
|
||||
# Description (the text)
|
||||
# Wrapped at 75 columns
|
||||
$ical .= $self->wrapIcal("DESCRIPTION:".$event->description)."\r\n";
|
||||
|
||||
# Location (the text)
|
||||
# Wrapped at 75 columns
|
||||
$ical .= $self->wrapIcal("LOCATION:".$event->location)."\r\n";
|
||||
|
||||
# X-WEBGUI lines
|
||||
if ($event->groupIdView) {
|
||||
$ical .= "X-WEBGUI-GROUPIDVIEW:".$event->groupIdView."\r\n";
|
||||
}
|
||||
if ($event->get("groupIdEdit")) {
|
||||
$ical .= "X-WEBGUI-GROUPIDEDIT:".$event->groupIdEdit."\r\n";
|
||||
}
|
||||
$ical .= "X-WEBGUI-URL:".$event->get("url")."\r\n";
|
||||
$ical .= "X-WEBGUI-MENUTITLE:".$event->menuTitle."\r\n";
|
||||
|
||||
$ical .= qq{END:VEVENT\r\n};
|
||||
$event->add_to_calendar($ical);
|
||||
}
|
||||
# ENDVEVENT
|
||||
|
||||
$ical .= qq{END:VCALENDAR\r\n};
|
||||
|
||||
|
||||
# Set mime of text/icalendar
|
||||
$self->session->response->header( 'Content-Disposition' => qq{attachment; filename="feed.ics"});
|
||||
$self->session->response->content_type("text/calendar");
|
||||
return $ical;
|
||||
#$self->session->http->setMimeType("text/plain");
|
||||
$self->session->http->setFilename("feed.ics","text/calendar");
|
||||
return $ical->as_string;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue