diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index d1f00c8a3..e0cd1dc74 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -10,6 +10,18 @@ - fixed #11047: required field on dataform - fixed #11162: Can't delete calendar Related Material Link - fixed #11154: vendor payouts screen borked ( Martin Kamerbeek / Oqapi ) + - fixed #11166: Documentation bug - addChild + - fixed #11116: Deleted user's version tags and revisions + - fixed #11168: Points do not work with uncommitted Map + - fixed #10888: Add Point... how do I enter details? + - fixed #10887: Map Point dropdown doesn't update + - fixed #11172: Collaboration broken vars: isSecond, isThird etc. + - fixed #11165: DatePicker broken in IE7 + - added: Manage System Clipboard group setting + - added: Manage System Trash group setting + - fixed #11069: "More" options menu in asset manager + - rfe #10755: Adding SetLanguage bazaar item + - fixed #11176: New upgrade error in 7.6.35 to 7.7.17 7.8.2 - Added scheduled vendor payout workflow activity. (Special thanks to Martin @ Oqapi) diff --git a/docs/upgrades/packages-7.8.3/home_map_map-templates_default-map-view.wgpkg b/docs/upgrades/packages-7.8.3/home_map_map-templates_default-map-view.wgpkg new file mode 100644 index 000000000..f3597a095 Binary files /dev/null and b/docs/upgrades/packages-7.8.3/home_map_map-templates_default-map-view.wgpkg differ diff --git a/docs/upgrades/packages-7.8.3/root_import_macro_picklanguage.wgpkg b/docs/upgrades/packages-7.8.3/root_import_macro_picklanguage.wgpkg new file mode 100644 index 000000000..30ba71727 Binary files /dev/null and b/docs/upgrades/packages-7.8.3/root_import_macro_picklanguage.wgpkg differ diff --git a/docs/upgrades/upgrade_7.8.2-7.8.3.pl b/docs/upgrades/upgrade_7.8.2-7.8.3.pl index 333f05564..ab4476476 100644 --- a/docs/upgrades/upgrade_7.8.2-7.8.3.pl +++ b/docs/upgrades/upgrade_7.8.2-7.8.3.pl @@ -22,6 +22,7 @@ use Getopt::Long; use WebGUI::Session; use WebGUI::Storage; use WebGUI::Asset; +use WebGUI::Utility; my $toVersion = '7.8.3'; @@ -33,25 +34,49 @@ my $session = start(); # this line required # upgrade functions go here reKeyTemplateAttachments($session); addSelectPaymentGatewayTemplateToSettings($session); +addClipboardAdminSetting($session); +addTrashAdminSetting($session); +addPickLanguageMacro($session); +installSetLanguage($session); + finish($session); # this line required +#---------------------------------------------------------------------------- +sub addClipboardAdminSetting { + my $session = shift; + print "\tAdding clipboard admin setting... " unless $quiet; + $session->setting->add('groupIdAdminClipboard', 3); + print "Done.\n" unless $quiet; +} + +#---------------------------------------------------------------------------- +sub addTrashAdminSetting { + my $session = shift; + print "\tAdding trash admin setting... " unless $quiet; + $session->setting->add('groupIdAdminTrash', 3); + print "Done.\n" unless $quiet; +} + #---------------------------------------------------------------------------- # Describe what our function does sub reKeyTemplateAttachments { my $session = shift; print "\tChanging the key structure for the template attachments table... " unless $quiet; - # and here's our code - $session->db->write('ALTER TABLE template_attachments ADD COLUMN attachId CHAR(22) BINARY NOT NULL'); - my $rh = $session->db->read('select url, templateId, revisionDate from template_attachments'); - my $wh = $session->db->prepare('update template_attachments set attachId=? where url=? and templateId=? and revisionDate=?'); - while (my @key = $rh->array) { - $wh->execute([$session->id->generate, @key ]); + my $columnExists = $session->db->dbh->column_info(undef, undef, 'template_attachments', 'attachId')->fetchrow_hashref; + if (! $columnExists) { + # and here's our code + $session->db->write('ALTER TABLE template_attachments ADD COLUMN attachId CHAR(22) BINARY NOT NULL'); + my $rh = $session->db->read('select url, templateId, revisionDate from template_attachments'); + my $wh = $session->db->prepare('update template_attachments set attachId=? where url=? and templateId=? and revisionDate=?'); + while (my @key = $rh->array) { + $wh->execute([$session->id->generate, @key ]); + } + $rh->finish; + $wh->finish; + $session->db->write('ALTER TABLE template_attachments DROP PRIMARY KEY'); + $session->db->write('ALTER TABLE template_attachments ADD PRIMARY KEY (attachId)'); } - $rh->finish; - $wh->finish; - $session->db->write('ALTER TABLE template_attachments DROP PRIMARY KEY'); - $session->db->write('ALTER TABLE template_attachments ADD PRIMARY KEY (attachId)'); print "DONE!\n" unless $quiet; } @@ -60,7 +85,7 @@ sub reKeyTemplateAttachments { sub addSelectPaymentGatewayTemplateToSettings { my $session = shift; print "\tAdding select payment gateway template to settings... " unless $quiet; - $session->db->write("insert into settings values ('selectGatewayTemplateId', '2GxjjkRuRkdUg_PccRPjpA');"); + $session->setting->add('selectGatewayTemplateId', '2GxjjkRuRkdUg_PccRPjpA') unless $session->setting->has('selectGatewayTemplateId'); print "Done.\n" unless $quiet; } @@ -71,6 +96,30 @@ sub addSelectPaymentGatewayTemplateToSettings { # print "DONE!\n" unless $quiet; #} +#------------------------------------------------------------------------ +sub addPickLanguageMacro { + my $session = shift; + print "\tAdding Pick Language macro... " unless $quiet; + $session->config->set('macros/PickLanguage', 'PickLanguage'); + print "Done.\n" unless $quiet; +} + +sub installSetLanguage { + my $session = shift; + print "\tAdding SetLanguage content handler... " unless $quiet; + ##Content Handler + my $contentHandlers = $session->config->get('contentHandlers'); + if (!isIn('WebGUI::Content::SetLanguage', @{ $contentHandlers }) ) { + my @newHandlers = (); + foreach my $handler (@{ $contentHandlers }) { + push @newHandlers, $handler; + push @newHandlers, 'WebGUI::Content::SetLanguage' if + $handler eq 'WebGUI::Content::PassiveAnalytics'; + } + $session->config->set('contentHandlers', \@newHandlers); + } + print "Done.\n" unless $quiet; +} # -------------- DO NOT EDIT BELOW THIS LINE -------------------------------- diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 392c75f9a..b074415c1 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -811,6 +811,7 @@ "Page" : "Page", "PageTitle" : "PageTitle", "PageUrl" : "PageUrl", + "PickLanguage" : "PickLanguage", "RandomAssetProxy" : "RandomAssetProxy", "RandomThread" : "RandomThread", "RootTitle" : "RootTitle", @@ -968,6 +969,7 @@ "WebGUI::Content::AssetManager", "WebGUI::Content::AssetDiscovery", "WebGUI::Content::PassiveAnalytics", + "WebGUI::Content::SetLanguage", "WebGUI::Content::AjaxI18N", "WebGUI::Content::Account", "WebGUI::Content::AssetHistory", diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index f687aba1e..4ab569fda 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1263,7 +1263,11 @@ sub getIsa { $sth->finish; return undef; } - return WebGUI::Asset->newPending($session, $assetId); + my $asset = WebGUI::Asset->newByDynamicClass($session, $assetId); + if (!$asset) { + WebGUI::Error::ObjectNotFound->throw(id => $assetId); + } + return $asset; }; } diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index 795307fb3..9dc044d6a 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -166,10 +166,10 @@ sub appendPostListTemplateVars { "user.isVisitor" => $post->get("ownerUserId") eq "1", "edit.url" => $post->getEditUrl, 'controls' => $controls, - "isSecond" => (($i+1)%2==0), - "isThird" => (($i+1)%3==0), - "isFourth" => (($i+1)%4==0), - "isFifth" => (($i+1)%5==0), + "isSecond" => (($i+1) == 2), + "isThird" => (($i+1) == 3), + "isFourth" => (($i+1) == 4), + "isFifth" => (($i+1) == 5), "user.hasRead" => $hasRead, "user.isPoster" => $post->isPoster, "avatar.url" => $post->getAvatarUrl, diff --git a/lib/WebGUI/Asset/Wobject/Map.pm b/lib/WebGUI/Asset/Wobject/Map.pm index c924269b0..6db5861f0 100644 --- a/lib/WebGUI/Asset/Wobject/Map.pm +++ b/lib/WebGUI/Asset/Wobject/Map.pm @@ -388,6 +388,8 @@ sub view { var mapId = "%s"; var mapUrl = "%s"; var map = new GMap2( document.getElementById("map_" + mapId) ); + map.url = mapUrl; + map.assetId = mapId; map.setCenter(new GLatLng(%s, %s), %s); map.setUIToDefault(); map.extrasUrl = "%s"; @@ -414,7 +416,7 @@ ENDHTML } $mapHtml .= <<'ENDHTML'; - markermanager.addMarkers( WebGUI.Map.preparePoints(map, markermanager, mapUrl, points), 0 ); + markermanager.addMarkers( WebGUI.Map.preparePoints(map, markermanager, points), 0 ); ENDHTML } @@ -434,13 +436,13 @@ ENDHTML if ( document.getElementById( "setCenter_" + mapId ) ) { var button = document.getElementById( "setCenter_" + mapId ); GEvent.addDomListener( button, "click", function () { - WebGUI.Map.setCenter( map, mapUrl ); + WebGUI.Map.setCenter( map ); } ); } if ( document.getElementById( "addPoint_" + mapId ) ) { var button = document.getElementById( "addPoint_" + mapId ); GEvent.addDomListener( button, "click", function () { - WebGUI.Map.editPoint( map, markermanager, mapUrl ); + WebGUI.Map.editPoint( map, markermanager ); } ); } }); @@ -463,6 +465,18 @@ ENDHTML id => sprintf( 'setCenter_%s', $self->getId ), } ); + # Select box to choose a map point + tie my %selectPointOptions, 'Tie::IxHash', ( + "" => '-- ' . $i18n->get('select a point'), + map { $_->{assetId} => $_->{title} } sort { $a->{title} cmp $b->{title} } @{$var->{mapPoints}}, + ); + $var->{ selectPoint } + = WebGUI::Form::selectBox( $session, { + extras => q{onchange="WebGUI.Map.focusOn(this.options[this.selectedIndex].value);"}, + id => sprintf( q{selectPoint_%s}, $self->getId ), + options => \%selectPointOptions, + } ); + return $self->processTemplate( $var, undef, $self->{_viewTemplate} ); } @@ -556,8 +570,19 @@ sub www_ajaxEditPointSave { my $errors = $asset->processAjaxEditForm; # Commit! - if ($asset->getAutoCommitWorkflowId && $self->hasBeenCommitted) { - $asset->requestAutoCommit; + if ( $asset->getAutoCommitWorkflowId ) { + if ( $self->hasBeenCommitted) { + $asset->requestAutoCommit; + } + else { + # Add mappoint to map's version tag + my $oldTagId = $asset->get('tagId'); + $asset->setVersionTag( $self->get('tagId') ); + my $oldTag = WebGUI::VersionTag->new( $session, $oldTagId ); + if ( $oldTag->getAssetCount <= 0 ) { + $oldTag->rollback; + } + } } # Encode entities because we're returning as HTML diff --git a/lib/WebGUI/AssetClipboard.pm b/lib/WebGUI/AssetClipboard.pm index 5ff01f5ca..35943f19c 100644 --- a/lib/WebGUI/AssetClipboard.pm +++ b/lib/WebGUI/AssetClipboard.pm @@ -444,7 +444,7 @@ sub www_emptyClipboard { my $self = shift; my $ac = WebGUI::AdminConsole->new($self->session,"clipboard"); return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(4)); - foreach my $asset (@{$self->getAssetsInClipboard(!($self->session->form->process("systemClipboard") && $self->session->user->isAdmin))}) { + foreach my $asset (@{$self->getAssetsInClipboard(!($self->session->form->process("systemClipboard") && $self->session->user->isInGroup($self->session->setting->get('groupIdAdminClipboard'))))}) { $asset->trash; } return $self->www_manageClipboard(); @@ -464,20 +464,29 @@ sub www_manageClipboard { my $ac = WebGUI::AdminConsole->new($self->session,"clipboard"); return $self->session->privilege->insufficient() unless ($self->session->user->isInGroup(12)); my $i18n = WebGUI::International->new($self->session, "Asset"); - my ($header,$limit); - if ($self->session->form->process("systemClipboard") && $self->session->user->isAdmin) { - $header = $i18n->get(966); - $ac->addSubmenuItem($self->getUrl('func=manageClipboard'), $i18n->get(949)); - $ac->addSubmenuItem($self->getUrl('func=emptyClipboard;systemClipboard=1'), $i18n->get(959), - 'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset"); - } else { - $ac->addSubmenuItem($self->getUrl('func=manageClipboard;systemClipboard=1'), $i18n->get(954)); - $ac->addSubmenuItem($self->getUrl('func=emptyClipboard'), $i18n->get(950), - 'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset"); - $limit = 1; - } -$self->session->style->setLink($self->session->url->extras('assetManager/assetManager.css'), {rel=>"stylesheet",type=>"text/css"}); - $self->session->style->setScript($self->session->url->extras('assetManager/assetManager.js'), {type=>"text/javascript"}); + + my $header; + my $limit = 1; + + my $canAdmin = $self->session->user->isInGroup($self->session->setting->get('groupIdAdminClipboard')); + if ($self->session->form->process("systemClipboard") && $canAdmin) { + $header = $i18n->get(966); + $ac->addSubmenuItem($self->getUrl('func=manageClipboard'), $i18n->get(949)); + $ac->addSubmenuItem($self->getUrl('func=emptyClipboard;systemClipboard=1'), $i18n->get(959), + 'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset"); + $limit = undef; + } + elsif ( $canAdmin ) { + $ac->addSubmenuItem($self->getUrl('func=manageClipboard;systemClipboard=1'), $i18n->get(954)); + $ac->addSubmenuItem($self->getUrl('func=emptyClipboard'), $i18n->get(950), + 'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset"); + } + else { + $ac->addSubmenuItem($self->getUrl('func=emptyClipboard'), $i18n->get(950), + 'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset"); + } + $self->session->style->setLink($self->session->url->extras('assetManager/assetManager.css'), {rel=>"stylesheet",type=>"text/css"}); + $self->session->style->setScript($self->session->url->extras('assetManager/assetManager.js'), {type=>"text/javascript"}); my $output = "