From 736d3413129111ab02970c8f84c612b2d11c7216 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Thu, 17 Mar 2005 20:13:01 +0000 Subject: [PATCH] bug fixes --- docs/changelog/6.x.x.txt | 7 + lib/WebGUI/Asset.pm | 30 +++- lib/WebGUI/Asset/Event.pm | 168 +++++++-------------- lib/WebGUI/Asset/File/Image.pm | 13 ++ lib/WebGUI/Asset/Snippet.pm | 15 ++ lib/WebGUI/Asset/Wobject/EventsCalendar.pm | 15 +- lib/WebGUI/Asset/Wobject/Navigation.pm | 26 ++++ lib/WebGUI/Macro/AssetProxy.pm | 2 +- lib/WebGUI/Operation/Profile.pm | 2 +- lib/WebGUI/i18n/English/WebGUI.pm | 2 +- 10 files changed, 148 insertions(+), 132 deletions(-) diff --git a/docs/changelog/6.x.x.txt b/docs/changelog/6.x.x.txt index 2f856174b..92eb982c7 100644 --- a/docs/changelog/6.x.x.txt +++ b/docs/changelog/6.x.x.txt @@ -7,6 +7,13 @@ - fix [ 1160034 ] 6.5.0 - newly added posts do not appear - fix [ 1027992 ] pagination in forum doesn't take you to correct page - fix [ 1149585 ] visitor as admin + - Fixed a bug where the wrong toolbar was displayed for AssetProxied + Navigation assets. + - fix [ 1165010 ] Navigation Display title gets reset + - fix [ 1159992 ] Integer value zero not returned in form fields + - fix [ 1165425 ] View Userprofile - Style is missing for non-public profiles + - fix [ 1165434 ] View Userprofile - Perm. denied page not parsed for macros + - fix [ 1138654 ] 6.3 CVS - raw form parameter not processed 6.5.2 diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index bc2d22059..d214e9100 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -480,7 +480,7 @@ sub duplicate { my $self = shift; my $assetToDuplicate = shift || $self; my $newAsset = $self->addChild($assetToDuplicate->get); - my $sth = WebGUI::SQL->read("select * from metaData_values where assetId = ".quote($self->getId)); + my $sth = WebGUI::SQL->read("select * from metaData_values where assetId = ".quote($assetToDuplicate->getId)); while( my $h = $sth->hashRef) { WebGUI::SQL->write("insert into metaData_values (fieldId, assetId, value) values (". quote($h->{fieldId}).",".quote($newAsset->getId).",".quote($h->{value}).")"); @@ -1527,7 +1527,6 @@ Returns a toolbar with a set of icons that hyperlink to functions that delete, e sub getToolbar { my $self = shift; - return undef if ($self->{_toolbarOff}); my $toolbar = deleteIcon('func=delete',$self->get("url"),WebGUI::International::get(43,"Asset")) .editIcon('func=edit',$self->get("url")) .moveUpIcon('func=promote',$self->get("url")) @@ -1540,6 +1539,20 @@ sub getToolbar { return ''.$self->getName.''.$toolbar; } +#------------------------------------------------------------------- + +=head2 getToolbarState ( ) + +Returns 0 if the state is normal, and 1 if the toolbar state has been toggled. See toggleToolbar() for details. + +=cut + +sub getToolbarState { + my $self = shift; + return $self->{_toolbarState}; +} + + #------------------------------------------------------------------- =head2 getUiLevel ( ) @@ -1602,7 +1615,10 @@ sub getValue { } $self->{_propertyDefinitions} = \%properties; } - return $session{form}{$key} || $self->get($key) || $self->{_propertyDefinitions}{$key}{defaultValue}; + return $session{form}{$key} if (exists $session{form}{$key}); + my $storedValue = $self->get($key); + return $storedValue if (defined $storedValue); + return $self->{_propertyDefinitions}{$key}{defaultValue}; } return undef; } @@ -2152,16 +2168,16 @@ sub trash { =head2 toggleToolbar ( ) -Toggles whether to render a toolbar in an asset. This is mostly useful for macros that wish to proxy an asset but not display the toolbar. +Toggles a toolbar to a special state so that custom toolbars can be rendered under special circumstances. This is mostly useful for macros that wish to proxy an asset but not display the toolbar. =cut sub toggleToolbar { my $self = shift; - if ($self->{_toolbarOff}) { - $self->{_toolbarOff} = 0; + if ($self->{_toolbarState}) { + $self->{_toolbarState} = 0; } else { - $self->{_toolbarOff} = 1; + $self->{_toolbarState} = 1; } } diff --git a/lib/WebGUI/Asset/Event.pm b/lib/WebGUI/Asset/Event.pm index 0114f3dd7..6db6e86d9 100644 --- a/lib/WebGUI/Asset/Event.pm +++ b/lib/WebGUI/Asset/Event.pm @@ -13,6 +13,7 @@ package WebGUI::Asset::Event; use strict; use Tie::CPHash; use WebGUI::DateTime; +use WebGUI::Form; use WebGUI::Grouping; use WebGUI::HTML; use WebGUI::HTMLForm; @@ -160,7 +161,6 @@ sub definition { #------------------------------------------------------------------- sub getEditForm { my $self = shift; - my $tabform = $self->SUPER::getEditForm(); #return $tabform; $tabform->getTab("properties")->HTMLArea( @@ -253,14 +253,21 @@ sub getEditForm { 'month'=>WebGUI::International::get(702,"EventsCalendar"), 'year'=>WebGUI::International::get(703,"EventsCalendar"), ); - $tabform->getTab("properties")->raw( - ''.WebGUI::International::get(8,"EventsCalendar").'' - ); - $tabform->getTab("properties")->integer("interval","",1,"","","",3); - $tabform->getTab("properties")->selectList("recursEvery",\%recursEvery); - $tabform->getTab("properties")->raw(''.WebGUI::International::get(9,"EventsCalendar").''); - $tabform->getTab("properties")->date("until"); - $tabform->getTab("properties")->raw(""); + $tabform->getTab("properties")->readOnly( + -label=>WebGUI::International::get(8,"EventsCalendar"), + -value=>WebGUI::Form::integer({ + name=>"interval", + defaultValue=>1 + }) + .WebGUI::Form::selectList({ + name=>"recursEvery", + options=>\%recursEvery + }) + .' '.WebGUI::International::get(9,"EventsCalendar").' ' + .WebGUI::Form::date({ + name=>"until" + }) + ); } # $tabform->getTab("display")->template( # -name=>"confirmationTemplateId", @@ -322,6 +329,47 @@ sub getName { } +#------------------------------------------------------------------- +sub processPropertiesFromFormPost { + my $self = shift; + $self->SUPER::processPropertiesFromFormPost; + if ($session{form}{assetId} eq "new") { + $self->update({eventEndDate=>$self->get("eventStartDate")}) unless ($self->get("eventEndDate") >= $self->get("eventStartDate")); + if ($session{form}{recursEvery} ne "never") { + my $until = WebGUI::DateTime::setToEpoch($session{form}{until}); + $until = $self->get("eventEndDate") unless ($until >= $self->get("eventEndDate")); + my $interval = ($session{form}{interval} < 1) ? 1 : $session{form}{interval}; + my $recurringEventId = WebGUI::Id::generate(); + $self->update({EventsCalendar_recurringId=>$recurringEventId}); + my $start = $self->get("eventStartDate"); + my $end = $self->get("eventEndDate"); + my $i = 0; + while ($start < $until) { + $i++; + if ($session{form}{recursEvery} eq "day") { + $start = WebGUI::DateTime::addToDate($self->get("eventStartDate"),0,0,($i*$interval)); + $end = WebGUI::DateTime::addToDate($self->get("eventEndDate"),0,0,($i*$interval)); + } elsif ($session{form}{recursEvery} eq "week") { + $start = WebGUI::DateTime::addToDate($self->get("eventStartDate"),0,0,(7*$i*$interval)); + $end = WebGUI::DateTime::addToDate($self->get("eventEndDate"),0,0,(7*$i*$interval)); + } elsif ($session{form}{recursEvery} eq "month") { + $start = WebGUI::DateTime::addToDate($self->get("eventStartDate"),0,($i*$interval),0); + $end = WebGUI::DateTime::addToDate($self->get("eventEndDate"),0,($i*$interval),0); + } elsif ($session{form}{recursEvery} eq "year") { + $start = WebGUI::DateTime::addToDate($self->get("eventStartDate"),($i*$interval),0,0); + $end = WebGUI::DateTime::addToDate($self->get("eventEndDate"),($i*$interval),0,0); + } + my $newEvent = $self->getParent->duplicate($self); + $newEvent->update({ + eventStartDate=>$start, + eventEndDate=>$end + }); + } + } + } +} + + #------------------------------------------------------------------- sub view { my $self = shift; @@ -414,108 +462,6 @@ sub www_edit { } -#------------------------------------------------------------------- - -=head2 www_editSave ( ) - -Saves the event or a new (series of) event(s). - -=cut - -sub www_editSave { - my $self = shift; - my $object = $self; - # Somebody please help me debug this... it was adding recurring events just fine; then - # I changed something and it stopped working... :( I suspect it has something to do - # with processPropertiesFromFormPost. It's as if $session{form}{recursEvery} always equals never. - - if ($session{form}{assetId} eq "new") { - $self = $self->getParent() if ($self->getValue("className") eq "WebGUI::Asset::Event"); - return WebGUI::Privilege::insufficient() unless ($self->canEdit); - my (@startDate, @endDate, @regStartDate, @regEndDate, @reminderStartDate, - @reminderEndDate, $until, @eventId, $i, $recurringEventId); - $startDate[0] = WebGUI::DateTime::setToEpoch($session{form}{eventStartDate}); - $startDate[0] = time() unless ($startDate[0] > 0); - $endDate[0] = WebGUI::DateTime::setToEpoch($session{form}{eventEndDate}); - $endDate[0] = $startDate[0] unless ($endDate[0] >= $startDate[0]); -# $regStartDate[0] = WebGUI::DateTime::setToEpoch($session{form}{regStartDate}); -# $regEndDate[0] = WebGUI::DateTime::setToEpoch($session{form}{regStartDate}); -# $regEndDate[0] = $regStartDate[0] unless ($regEndDate[0] >= $regStartDate[0]); -# $reminderStartDate[0] = WebGUI::DateTime::setToEpoch($session{form}{reminderStartDate}); -# $reminderEndDate[0] = WebGUI::DateTime::setToEpoch($session{form}{reminderStartDate}); -# $reminderEndDate[0] = $reminderStartDate[0] unless ($reminderEndDate[0] >= $reminderStartDate[0]); - $session{form}{title} = $session{form}{title} || WebGUI::International::get(557,"EventsCalendar"); - $until = WebGUI::DateTime::setToEpoch($session{form}{until}); - $until = $endDate[0] unless ($until >= $endDate[0]); - $eventId[0] = WebGUI::Id::generate(); - $session{form}{interval} = 1 if ($session{form}{interval} < 1); - if ($session{form}{recursEvery} eq "never") { - $recurringEventId = 0; - my $newEvent = $self->addChild({ - className=>"WebGUI::Asset::Event", - title=>$session{form}{title}, - description=>$session{form}{description}, - EventsCalendar_recurringId=>$recurringEventId - }); - $newEvent->processPropertiesFromFormPost; - $newEvent->updateHistory("edited"); - $newEvent->{_parent} = $self; - } else { - $recurringEventId = WebGUI::Id::generate(); - my $firstEvent = $self->addChild({ - className=>"WebGUI::Asset::Event", - title=>$session{form}{title}, - eventStartDate=>$startDate[0], - eventEndDate=>$endDate[0], - description=>$session{form}{description}, - EventsCalendar_recurringId=>$recurringEventId, - eventLocation=>$session{form}{description}, - templateId=>$self->getValue("eventTemplateId") - }); - $firstEvent->processPropertiesFromFormPost; - $firstEvent->updateHistory("edited"); - $firstEvent->{_parent} = $self; - while ($startDate[$i] < $until) { - $i++; - $eventId[$i] = WebGUI::Id::generate(); - if ($session{form}{recursEvery} eq "day") { - $startDate[$i] = addToDate($startDate[0],0,0,($i*$session{form}{interval})); - $endDate[$i] = addToDate($endDate[0],0,0,($i*$session{form}{interval})); - } elsif ($session{form}{recursEvery} eq "week") { - $startDate[$i] = addToDate($startDate[0],0,0,(7*$i*$session{form}{interval})); - $endDate[$i] = addToDate($endDate[0],0,0,(7*$i*$session{form}{interval})); - } elsif ($session{form}{recursEvery} eq "month") { - $startDate[$i] = addToDate($startDate[0],0,($i*$session{form}{interval}),0); - $endDate[$i] = addToDate($endDate[0],0,($i*$session{form}{interval}),0); - } elsif ($session{form}{recursEvery} eq "year") { - $startDate[$i] = addToDate($startDate[0],($i*$session{form}{interval}),0,0); - $endDate[$i] = addToDate($endDate[0],($i*$session{form}{interval}),0,0); - } - my $newEvent = $self->duplicate($firstEvent); - $newEvent->update({ - eventStartDate=>$startDate[$i], - eventEndDate=>$endDate[$i] - }); - print "\n$i\n"; - $newEvent->fixUrl; - $newEvent->updateHistory("edited"); - $newEvent->{_parent} = $self; - } - } - } else { - return $self->getAdminConsole->render(WebGUI::Privilege::insufficient()) unless ($self->canEdit); - $self->processPropertiesFromFormPost; - $self->updateHistory("edited"); - } - return $self->www_manageAssets if ($session{form}{proceed} eq "manageAssets" && $session{form}{assetId} eq "new"); - if ($session{form}{proceed} ne "") { - my $method = "www_".$session{form}{proceed}; - $session{asset} = $object; - return $object->$method(); - } - return (($self->getParent)->getContainer)->www_view; -} - #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index fa8b86a33..2d8ec1253 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -182,6 +182,19 @@ sub getThumbnailUrl { return $self->getStorageLocation->getThumbnailUrl($self->get("filename")); } +#------------------------------------------------------------------- + +=head2 getToolbar ( ) + +Returns a toolbar with a set of icons that hyperlink to functions that delete, edit, promote, demote, cut, and copy. + +=cut + +sub getToolbar { + my $self = shift; + return undef if ($self->getToolbarState); + return $self->SUPER::getToolbar(); +} #------------------------------------------------------------------- sub processPropertiesFromFormPost { diff --git a/lib/WebGUI/Asset/Snippet.pm b/lib/WebGUI/Asset/Snippet.pm index 22397be78..665dbffe9 100644 --- a/lib/WebGUI/Asset/Snippet.pm +++ b/lib/WebGUI/Asset/Snippet.pm @@ -104,6 +104,21 @@ sub getIcon { } +#------------------------------------------------------------------- + +=head2 getToolbar ( ) + +Returns a toolbar with a set of icons that hyperlink to functions that delete, edit, promote, demote, cut, and copy. + +=cut + +sub getToolbar { + my $self = shift; + return undef if ($self->getToolbarState); + return $self->SUPER::getToolbar(); +} + + #------------------------------------------------------------------- =head2 getUiLevel () diff --git a/lib/WebGUI/Asset/Wobject/EventsCalendar.pm b/lib/WebGUI/Asset/Wobject/EventsCalendar.pm index 1635e3a0f..369a5fe56 100644 --- a/lib/WebGUI/Asset/Wobject/EventsCalendar.pm +++ b/lib/WebGUI/Asset/Wobject/EventsCalendar.pm @@ -88,13 +88,6 @@ sub definition { -#------------------------------------------------------------------- -sub duplicate { - my $self = shift; - return $self->getParent->duplicateTree($self); -} - - #------------------------------------------------------------------- sub getEditForm { @@ -308,8 +301,8 @@ sub view { foreach my $event (@{$children}) { if (ref $event eq "WebGUI::Asset::Event") { - my $eventStartDate = $event->getValue("eventStartDate"); - my $eventEndDate = $event->getValue("eventEndDate"); + my $eventStartDate = $event->get("eventStartDate"); + my $eventEndDate = $event->get("eventEndDate"); if ($eventStartDate > $eventEndDate) { #Fix bad data. Everything that has a beginning must have an end [no earlier than its beginning]. $event->update({ "eventEndDate"=>$eventStartDate }); @@ -348,8 +341,8 @@ sub view { #Now also test to see if we're at the maxDate yet and after the minDate. if (($date[1] == $thisMonthDate[1]) && (WebGUI::DateTime::addToDate($eventStartDate,0,0,$i) <= ($maxDate + 2678400))){ push(@{$events{$date[2]}}, { - description=>$event->getValue("description"), - name=>$event->getValue("title"), + description=>$event->get("description"), + name=>$event->get("title"), 'start.date.human'=>$startDate, 'start.time.human'=>$startTime." ".$startAmPm, 'start.date.epoch'=>$eventStartDate, diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm index fcf542e10..214241d7f 100644 --- a/lib/WebGUI/Asset/Wobject/Navigation.pm +++ b/lib/WebGUI/Asset/Wobject/Navigation.pm @@ -15,6 +15,7 @@ use Tie::IxHash; use WebGUI::Asset::Wobject; use WebGUI::ErrorHandler; use WebGUI::Form; +use WebGUI::Icon; use WebGUI::International; use WebGUI::Privilege; use WebGUI::Session; @@ -27,6 +28,7 @@ our @ISA = qw(WebGUI::Asset::Wobject); +#------------------------------------------------------------------- sub definition { my $class = shift; my $definition = shift; @@ -71,6 +73,7 @@ sub definition { return $class->SUPER::definition($definition); } +#------------------------------------------------------------------- sub getEditForm { my $self = shift; my $tabform = $self->SUPER::getEditForm; @@ -211,6 +214,7 @@ sub getEditForm { return $tabform; } +#------------------------------------------------------------------- sub getIcon { my $self = shift; my $small = shift; @@ -218,11 +222,32 @@ sub getIcon { return $session{config}{extrasURL}.'/assets/navigation.gif'; } +#------------------------------------------------------------------- sub getName { return WebGUI::International::get("navigation","Navigation"); } +#------------------------------------------------------------------- + +=head2 getToolbar ( ) + +Returns a toolbar with a set of icons that hyperlink to functions that delete, edit, promote, demote, cut, and copy. + +=cut + +sub getToolbar { + my $self = shift; + if ($self->getToolbarState) { + my $toolbar = editIcon('func=edit',$self->get("url")); + return ''.$self->getName.''.$toolbar; + } + return $self->SUPER::getToolbar(); +} + + + +#------------------------------------------------------------------- sub view { my $self = shift; # we've got to determine what our start point is based upon user conditions @@ -354,6 +379,7 @@ sub view { } +#------------------------------------------------------------------- sub www_edit { my $self = shift; return WebGUI::Privilege::insufficient() unless $self->canEdit; diff --git a/lib/WebGUI/Macro/AssetProxy.pm b/lib/WebGUI/Macro/AssetProxy.pm index da1bfba44..a5ad949d2 100644 --- a/lib/WebGUI/Macro/AssetProxy.pm +++ b/lib/WebGUI/Macro/AssetProxy.pm @@ -20,7 +20,7 @@ sub process { my ($url) = WebGUI::Macro::getParams(shift); my $asset = WebGUI::Asset->newByUrl($url); if (defined $asset) { - $asset->toggleToolbar if ($asset->get("className") =~ /WebGUI::Asset::File/ || $asset->get("className") =~ /WebGUI::Asset::Snippet/ ); + $asset->toggleToolbar; return $asset->canView ? $asset->view : undef; } else { return "Invalid Asset URL"; diff --git a/lib/WebGUI/Operation/Profile.pm b/lib/WebGUI/Operation/Profile.pm index 6e8a7eb65..6e685959f 100644 --- a/lib/WebGUI/Operation/Profile.pm +++ b/lib/WebGUI/Operation/Profile.pm @@ -225,7 +225,7 @@ sub www_viewProfile { $u = WebGUI::User->new($session{form}{uid}); $vars->{displayTitle} = '

'.WebGUI::International::get(347).' '.$u->username.'

'; return WebGUI::Privilege::notMember() if($u->username eq ""); - return $vars->{displayTitle}.WebGUI::International::get(862) if($u->profileField("publicProfile") < 1 && ($session{user}{userId} ne $session{form}{uid} || WebGUI::Grouping::isInGroup(3))); + return WebGUI::Operation::Shared::userStyle($vars->{displayTitle}.WebGUI::International::get(862)) if($u->profileField("publicProfile") < 1 && ($session{user}{userId} ne $session{form}{uid} || WebGUI::Grouping::isInGroup(3))); return WebGUI::Privilege::insufficient() if(!WebGUI::Grouping::isInGroup(2)); $a = WebGUI::SQL->read("select * from userProfileField,userProfileCategory where userProfileField.profileCategoryId=userProfileCategory.profileCategoryId and userProfileCategory.visible=1 and userProfileField.visible=1 order by userProfileCategory.sequenceNumber, diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index f0f93ef30..506f702fb 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -4288,7 +4288,7 @@ A randomly generated number. This is often used on images (such as banner ads) t }, '38' => { - message => q|You do not have sufficient privileges to perform this operation. Please ^a(log in with an account); that has sufficient privileges before attempting this operation.|, + message => q|You do not have sufficient privileges to perform this operation. Please ^a(log in with an account); that has sufficient privileges before attempting this operation.|, lastUpdated => 1031514049 },