diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index ee5c090d1..43501bb47 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -14,6 +14,7 @@ - rfe #12105: Make shortcuts related for export purposes - rfe #12108: Mail to Group preference field - fixed #12107: Viewing an individual transaction item fails + - fixed #12104: Calendar iCal feed status and lastUPdated fields missing 7.10.13 - added #12079: Carousel Auto Play diff --git a/docs/upgrades/upgrade_7.10.13-7.10.14.pl b/docs/upgrades/upgrade_7.10.13-7.10.14.pl index 777e30838..69a519076 100644 --- a/docs/upgrades/upgrade_7.10.13-7.10.14.pl +++ b/docs/upgrades/upgrade_7.10.13-7.10.14.pl @@ -22,6 +22,7 @@ use Getopt::Long; use WebGUI::Session; use WebGUI::Storage; use WebGUI::Asset; +use WebGUI::Asset::Wobject::Calendar; my $toVersion = '7.10.14'; @@ -34,6 +35,7 @@ my $session = start(); # this line required addOrganizationsToTransaction($session); removeDuplicateUndergroundStyleTemplates($session); addRichEditToCarousel($session); +fixBadCalendarFeedStatus($session); finish($session); # this line required @@ -48,6 +50,32 @@ finish($session); # this line required #} +#---------------------------------------------------------------------------- +# Describe what our function does +sub fixBadCalendarFeedStatus { + my $session = shift; + print "\tFix the name of the iCal status field in all Calendar assets... " unless $quiet; + # and here's our code + my $fetch_calendar = WebGUI::Asset::Wobject::Calendar->getIsa($session); + my $sth = $session->db->read('select assetId, revisionDate from Calendar'); + CALENDAR: while (my ($assetId, $revisionDate) = $sth->array) { + my $calendar = eval {WebGUI::Asset->new($session, $assetId, 'WebGUI::Asset::Wobject::Calendar', $revisionDate)}; + next CALENDAR if !$calendar; + FEED: foreach my $feed ( @{ $calendar->getFeeds } ) { + my $status = delete $feed->{status}; + if (!exists $feed->{lastResult}) { + $feed->{lastResult} = $status; + } + if (!exists $feed->{lastUpdated}) { + $feed->{lastUpdated} = 'never'; + } + $calendar->setFeed($feed->{feedId}, $feed); + } + } + $sth->finish; + print "DONE!\n" unless $quiet; +} + #---------------------------------------------------------------------------- # Describe what our function does sub addOrganizationsToTransaction { @@ -78,7 +106,7 @@ sub removeDuplicateUndergroundStyleTemplates { # Describe what our function does sub addRichEditToCarousel { my $session = shift; - print "\tAdd RichEdit option to the Carousel" unless $quiet; + print "\tAdd RichEdit option to the Carousel... " unless $quiet; # and here's our code $session->db->write('ALTER TABLE Carousel ADD COLUMN richEditor CHAR(22) BINARY'); $session->db->write(q!update Carousel set richEditor='PBrichedit000000000001'!); diff --git a/lib/WebGUI/Asset/Wobject/Calendar.pm b/lib/WebGUI/Asset/Wobject/Calendar.pm index e21b237bf..ba2054bd4 100644 --- a/lib/WebGUI/Asset/Wobject/Calendar.pm +++ b/lib/WebGUI/Asset/Wobject/Calendar.pm @@ -274,7 +274,7 @@ sub definition { label => $i18n->get('Feed URL'), }, { - name => 'status', + name => 'lastResult', type => 'readonly', label => $i18n->get('434','WebGUI'), }, @@ -869,6 +869,17 @@ sub processPropertiesFromFormPost { $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; } diff --git a/lib/WebGUI/Form/JsonTable.pm b/lib/WebGUI/Form/JsonTable.pm index f4976b411..7511766d5 100644 --- a/lib/WebGUI/Form/JsonTable.pm +++ b/lib/WebGUI/Form/JsonTable.pm @@ -203,7 +203,10 @@ sub toHtml { elsif ( $field->{type} eq "id" ) { $fieldHtml .= ''; } - else { # Readonly or unknown + elsif ( $field->{type} eq "hidden" || $field->{type} eq "readonly" ) { + $fieldHtml .= ''; + } + else { # Unknown $fieldHtml = ' '; }