From efa444c1d3efad841652798bf9f581ffa3002bd6 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Tue, 28 Nov 2006 21:29:58 +0000 Subject: [PATCH] moving wiki down the path of ajax enlightenment --- docs/changelog/7.x.x.txt | 8 +- .../templates-7.3.0/default-wiki-master.tmpl | 18 -- .../default-wiki-page-edit.tmpl | 9 +- .../default-wiki-page-list.tmpl | 13 -- .../templates-7.3.0/default-wiki-page.tmpl | 135 +++++++++-- docs/upgrades/upgrade_7.2.3-7.3.0.pl | 10 +- etc/WebGUI.conf.original | 3 +- lib/WebGUI/Asset/Post.pm | 34 ++- lib/WebGUI/Asset/WikiPage.pm | 218 ++++++++++-------- lib/WebGUI/Asset/Wobject/WikiMaster.pm | 135 +++-------- lib/WebGUI/i18n/English/Asset_WikiMaster.pm | 39 +++- 11 files changed, 336 insertions(+), 286 deletions(-) delete mode 100644 docs/upgrades/templates-7.3.0/default-wiki-master.tmpl delete mode 100644 docs/upgrades/templates-7.3.0/default-wiki-page-list.tmpl diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 4f6685fce..a69da549e 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -12,7 +12,13 @@ - Implemented codespace caching in WebGUI::International. This replaces the in-memory cache by symbol table lookups into the code itself and saves duplicating the i18n entries. - - RFE: DataForm file upload patch. Thanks to mistoo for submitting the + - Added accordion javascript object, which will eventually replace the + current adminbar accordion. This one is less of a cludge and uses the YUI + API. + - WebGUI now has a Wiki! + - Upgraded to YUI 0.12.0 + - Upgraded to YUI-Ext 0.33 RC2 + - Karma RFE: DataForm file upload patch. Thanks to mistoo for submitting the original patch. Although I couldn't use the code in wG 7, it inspired the RFE. Also added the feature requested in the thread to allow the files to be emailed as attachments. diff --git a/docs/upgrades/templates-7.3.0/default-wiki-master.tmpl b/docs/upgrades/templates-7.3.0/default-wiki-master.tmpl deleted file mode 100644 index 3ac655f86..000000000 --- a/docs/upgrades/templates-7.3.0/default-wiki-master.tmpl +++ /dev/null @@ -1,18 +0,0 @@ -#WikiMasterTmpl00000001 -#create -#namespace:WikiMaster -#url:default-wiki-master -#title:Default Wiki Master -#menuTitle:Default Wiki Master - -

-

- -

Other actions

- diff --git a/docs/upgrades/templates-7.3.0/default-wiki-page-edit.tmpl b/docs/upgrades/templates-7.3.0/default-wiki-page-edit.tmpl index 77c18fbca..3b24c5e9a 100644 --- a/docs/upgrades/templates-7.3.0/default-wiki-page-edit.tmpl +++ b/docs/upgrades/templates-7.3.0/default-wiki-page-edit.tmpl @@ -4,9 +4,12 @@ #url:default-wiki-page-edit #title:Default Wiki Page Edit #menuTitle:Default Wiki Page Edit - -

Title:
-Content:

+ + + + + +
diff --git a/docs/upgrades/templates-7.3.0/default-wiki-page-list.tmpl b/docs/upgrades/templates-7.3.0/default-wiki-page-list.tmpl deleted file mode 100644 index 1421a9dd9..000000000 --- a/docs/upgrades/templates-7.3.0/default-wiki-page-list.tmpl +++ /dev/null @@ -1,13 +0,0 @@ -#WikiPLTmpl000000000001 -#create -#namespace:WikiMaster_pageList -#url:default-wiki-page-list -#title:Default Page List -#menuTitle:Default Page List - -

-
    - -
  • -
    -
diff --git a/docs/upgrades/templates-7.3.0/default-wiki-page.tmpl b/docs/upgrades/templates-7.3.0/default-wiki-page.tmpl index 8075106d3..6dbaf83ce 100644 --- a/docs/upgrades/templates-7.3.0/default-wiki-page.tmpl +++ b/docs/upgrades/templates-7.3.0/default-wiki-page.tmpl @@ -4,26 +4,117 @@ #url:default-wiki-page #title:Default Wiki Page #menuTitle:Default Wiki Page +

+

+ +
+
    +
  • +
+
+
+ +
+
+
+ +
| |
+ +~~~ + + + + + + + + + + + - -

This page

    -
  • - -
  • -
  • (Protected page)
  • -
    - -
  • -
    - - -
  • - -
  • -
    -
    - -
  • -
  • -
    -
diff --git a/docs/upgrades/upgrade_7.2.3-7.3.0.pl b/docs/upgrades/upgrade_7.2.3-7.3.0.pl index aca692361..88ddf1773 100644 --- a/docs/upgrades/upgrade_7.2.3-7.3.0.pl +++ b/docs/upgrades/upgrade_7.2.3-7.3.0.pl @@ -54,8 +54,6 @@ sub addWikiAssets { `groupToAdminister` varchar(22) character set utf8 collate utf8_bin NOT NULL, `richEditor` varchar(22) character set utf8 collate utf8_bin NOT NULL default 'PBrichedit000000000002', - `masterTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL - default 'WikiMasterTmpl00000001', `frontPageTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default 'WikiFrontTmpl000000001', `pageTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL @@ -66,12 +64,13 @@ sub addWikiAssets { default 'WikiRCTmpl000000000001', `pageHistoryTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default 'WikiPHTmpl000000000001', - `pageListTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL - default 'WikiPLTmpl000000000001', `searchTemplateId` varchar(22) character set utf8 collate utf8_bin NOT NULL default 'WikiSearchTmpl00000001', `recentChangesCount` int(11) NOT NULL default 50, `recentChangesCountFront` int(11) NOT NULL default 10, + `thumbnailSize` int(11) NOT NULL default 0, + `maxImageSize` int(11) NOT NULL default 0, + `approvalWorkflow` varchar(22) binary not null default 'pbworkflow000000000003', PRIMARY KEY (`assetId`, `revisionDate`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; EOT @@ -113,8 +112,7 @@ EOT EOT ); - my $config = $session->config; - $config->addToArray('assetContainers', 'WebGUI::Asset::Wobject::WikiMaster'); + $session->config->addToArray('assets', 'WebGUI::Asset::Wobject::WikiMaster'); } # ---- DO NOT EDIT BELOW THIS LINE ---- diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 429192a8f..3c01cf0a0 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -228,7 +228,8 @@ "WebGUI::Asset::Wobject::InOutBoard", "WebGUI::Asset::File::ZipArchive", "WebGUI::Asset::Wobject::WSClient", - "WebGUI::Asset::Wobject::SQLForm" + "WebGUI::Asset::Wobject::SQLForm", + "WebGUI::Asset::Wobject::WikiMaster" ], # Specify the list assets that are used for utility purposes only diff --git a/lib/WebGUI/Asset/Post.pm b/lib/WebGUI/Asset/Post.pm index ed461d270..1c05d2007 100644 --- a/lib/WebGUI/Asset/Post.pm +++ b/lib/WebGUI/Asset/Post.pm @@ -749,7 +749,20 @@ sub processPropertiesFromFormPost { $self->getThread->subscribe if ($self->session->form->process("subscribe")); delete $self->{_storageLocation}; $self->postProcess; - $self->requestCommit; + # allows us to let the cs post use it's own workflow approval process + my $currentTag = WebGUI::VersionTag->getWorking($self->session); + if ($currentTag->getAssetCount < 2) { + $currentTag->set({workflowId=>$self->getThread->getParent->get("approvalWorkflow")}); + $currentTag->requestCommit; + } else { + my $newTag = WebGUI::VersionTag->create($self->session, { + name=>$self->getTitle." / ".$self->session->user->username, + workflowId=>$self->getThread->getParent->get("approvalWorkflow") + }); + $self->session->db->write("update assetData set tagId=? where assetId=? and tagId=?",[$newTag->getId, $self->getId, $currentTag->getId]); + $self->purgeCache; + $newTag->requestCommit; + } } @@ -869,25 +882,6 @@ sub rethreadUnder { delete $self->{_thread}; } -#------------------------------------------------------------------- -# allows us to let the cs post use it's own workflow approval process -sub requestCommit { - my $self = shift; - my $currentTag = WebGUI::VersionTag->getWorking($self->session); - if ($currentTag->getAssetCount < 2) { - $currentTag->set({workflowId=>$self->getThread->getParent->get("approvalWorkflow")}); - $currentTag->requestCommit; - } else { - my $newTag = WebGUI::VersionTag->create($self->session, { - name=>$self->getTitle." / ".$self->session->user->username, - workflowId=>$self->getThread->getParent->get("approvalWorkflow") - }); - $self->session->db->write("update assetData set tagId=? where assetId=? and tagId=?",[$newTag->getId, $self->getId, $currentTag->getId]); - $self->purgeCache; - $newTag->requestCommit; - } -} - #------------------------------------------------------------------- =head2 setParent ( newParent ) diff --git a/lib/WebGUI/Asset/WikiPage.pm b/lib/WebGUI/Asset/WikiPage.pm index 470f0e935..4af70df8b 100644 --- a/lib/WebGUI/Asset/WikiPage.pm +++ b/lib/WebGUI/Asset/WikiPage.pm @@ -14,6 +14,7 @@ use base 'WebGUI::Asset'; use strict; use Tie::IxHash; use WebGUI::International; +use WebGUI::Storage::Image; use WebGUI::Utility; #------------------------------------------------------------------- @@ -40,6 +41,48 @@ sub _appendFuncTemplateVars { } } +#------------------------------------------------------------------- + +=head2 addChild ( ) + +You can't add children to a wiki page. + +=cut + +sub addChild { + return undef; +} + +#------------------------------------------------------------------- + +=head2 addRevision ( ) + +Override the default method in order to deal with attachments. + +=cut + +sub addRevision { + my $self = shift; + my $newSelf = $self->SUPER::addRevision(@_); + if ($self->get("storageId")) { + my $newStorage = WebGUI::Storage->get($self->session,$self->get("storageId"))->copy; + $newSelf->update({storageId=>$newStorage->getId}); + } + my $now = time(); + $newSelf->update({ + isHidden => 1, + dateUpdated=>$now, + }); + return $newSelf; +} + +#------------------------------------------------------------------- +sub canAdd { + my $class = shift; + my $session = shift; + $class->SUPER::canAdd($session, undef, '7'); +} + #------------------------------------------------------------------- sub canDelete { my $self = shift; @@ -110,6 +153,20 @@ sub duplicate { } +#------------------------------------------------------------------- +sub getStorageLocation { + my $self = shift; + unless (exists $self->{_storageLocation}) { + if ($self->get("storageId") eq "") { + $self->{_storageLocation} = WebGUI::Storage::Image->create($self->session); + $self->update({storageId=>$self->{_storageLocation}->getId}); + } else { + $self->{_storageLocation} = WebGUI::Storage::Image->get($self->session,$self->get("storageId")); + } + } + return $self->{_storageLocation}; +} + #------------------------------------------------------------------- sub getWiki { my $self = shift; @@ -127,19 +184,11 @@ sub indexContent { } #------------------------------------------------------------------- -sub purge { +sub isProtected { my $self = shift; - $self->getWiki->updateTitleIndex([$self], from => 'purge'); - $self->session->db->write("DELETE FROM WikiPage_protected WHERE assetId = ?", [$self->getId]); - $self->session->db->write("DELETE FROM WikiPage_extraHistory WHERE assetId = ?", [$self->getId]); - return $self->SUPER::purge; -} - -#------------------------------------------------------------------- -sub purgeRevision { - my $self = shift; - $self->getWiki->updateTitleIndex([$self], from => 'purgeRevision'); - return $self->SUPER::purgeRevision; + return $self->{_isProtected} if exists $self->{_isProtected}; + ($self->{_isProtected}) = $self->session->db->quickArray("SELECT COUNT(assetId) FROM WikiPage_protected WHERE assetId = ?", [$self->getId]); + return $self->{_isProtected}; } #------------------------------------------------------------------- @@ -152,6 +201,13 @@ sub preparePageTemplate { return $self->{_pageTemplate}; } +#------------------------------------------------------------------- +sub prepareView { + my $self = shift; + $self->SUPER::prepareView; + $self->preparePageTemplate; +} + #------------------------------------------------------------------- sub processPageTemplate { my $self = shift; @@ -174,40 +230,60 @@ sub processPageTemplate { return $self->processTemplate($var, undef, $template); } -#------------------------------------------------------------------- -sub prepareView { - my $self = shift; - $self->SUPER::prepareView; - $self->preparePageTemplate; -} - -#------------------------------------------------------------------- -sub view { - my $self = shift; - my $var = {}; - my $title = $self->get('title'); - my $content = $self->getWiki->autolinkHtml($self->get('content')); - return $self->getWiki->processMasterTemplate($title, $self->processPageTemplate($content, 'view')); -} - -#------------------------------------------------------------------- -sub isProtected { - my $self = shift; - return $self->{_isProtected} if exists $self->{_isProtected}; - ($self->{_isProtected}) = $self->session->db->quickArray("SELECT COUNT(assetId) FROM WikiPage_protected WHERE assetId = ?", [$self->getId]); - return $self->{_isProtected}; -} - #------------------------------------------------------------------- sub processPropertiesFromFormPost { my $self = shift; - my $ret = $self->SUPER::processPropertiesFromFormPost(@_); + $self->SUPER::processPropertiesFromFormPost(@_); $self->update({ groupIdView => $self->getWiki->get('groupIdView'), groupIdEdit => $self->getWiki->get('groupIdEdit') }); $self->getWiki->updateTitleIndex([$self], from => 'edit'); - return $ret; + delete $self->{_storageLocation}; + my $size = 0; + my $storage = $self->getStorageLocation; + foreach my $file (@{$storage->getFiles}) { + if ($storage->isImage($file)) { + ##Use generateThumbnail to shrink size to site's max image size + ##We should look into using the new resize method instead. + $storage->generateThumbnail($file, $self->getWiki->get("maxImageSize") || $self->session->setting->get("maxImageSize")); + $storage->deleteFile($file); + $storage->renameFile('thumb-'.$file,$file); + $storage->generateThumbnail($file, $self->getWiki->get("thumbnailSize")); + } + $size += $storage->getFileSize($file); + } + $self->setSize($size); + # allows us to let the cs post use it's own workflow approval process + my $currentTag = WebGUI::VersionTag->getWorking($self->session); + if ($currentTag->getAssetCount < 2) { + $currentTag->set({workflowId=>$self->getWiki->get("approvalWorkflow")}); + $currentTag->requestCommit; + } else { + my $newTag = WebGUI::VersionTag->create($self->session, { + name=>$self->getTitle." / ".$self->session->user->username, + workflowId=>$self->getWiki->get("approvalWorkflow") + }); + $self->session->db->write("update assetData set tagId=? where assetId=? and tagId=?",[$newTag->getId, $self->getId, $currentTag->getId]); + $self->purgeCache; + $newTag->requestCommit; + } } +#------------------------------------------------------------------- +sub purge { + my $self = shift; + $self->getWiki->updateTitleIndex([$self], from => 'purge'); + $self->session->db->write("DELETE FROM WikiPage_protected WHERE assetId = ?", [$self->getId]); + $self->session->db->write("DELETE FROM WikiPage_extraHistory WHERE assetId = ?", [$self->getId]); + return $self->SUPER::purge; +} + +#------------------------------------------------------------------- +sub purgeRevision { + my $self = shift; + $self->getWiki->updateTitleIndex([$self], from => 'purgeRevision'); + return $self->SUPER::purgeRevision; +} + #------------------------------------------------------------------- sub updateWikiHistory { my $self = shift; @@ -216,6 +292,13 @@ sub updateWikiHistory { $self->session->db->write("INSERT INTO WikiPage_extraHistory (assetId, userId, dateStamp, actionTaken, url, title) VALUES (?, ?, ?, ?, ?, ?)", [$self->getId, $userId, $self->session->datetime->time, $action, $self->getUrl, $self->get('title')]); } +#------------------------------------------------------------------- +sub view { + my $self = shift; + my $var = {}; + my $content = $self->getWiki->autolinkHtml($self->get('content')); + return $self->processPageTemplate($content, 'view'); +} #------------------------------------------------------------------- sub www_delete { @@ -235,22 +318,9 @@ sub www_edit { my $var = {}; my $newPage = 0; $template->prepare; - - if ($self->session->form->process('func') eq 'add') { - # New page. - $newPage = 1; - $var->{'form.header'} = join '', - (WebGUI::Form::formHeader($self->session, - { action => $self->getWiki->getUrl('func=addPageSave') }), - WebGUI::Form::hidden($self->session, { name => 'class', value => ref $self })); - } else { - # Editing a page. - $newPage = 0; - $var->{'form.header'} = join '', - (WebGUI::Form::formHeader($self->session, - { action => $self->getUrl('func=editSave') })); - } - + $var->{'form.header'} = WebGUI::Form::formHeader($self->session, { action => $self->getWiki->getUrl }) + .WebGUI::Form::hidden($self->session, { name => 'func', value => 'editSave' }) + .WebGUI::Form::hidden($self->session, { name => 'class', value => ref $self }); $var->{'form.title'} = WebGUI::Form::text ($self->session, { name => 'title', maxlength => 255, size => 40, value => $self->get('title') }); @@ -262,55 +332,23 @@ sub www_edit { $var->{'form.footer'} = WebGUI::Form::formFooter($self->session); $self->_appendFuncTemplateVars($var); - my $title = "Editing ".(defined($self->get('title'))? $self->get('title') : 'new page'); + $var->{title} = "Editing ".(defined($self->get('title'))? $self->get('title') : 'new page'); - return $self->getWiki->processStyle($self->getWiki->processMasterTemplate($title, $self->processPageTemplate($self->processTemplate($var, undef, $template), 'edit'))); -} - -#------------------------------------------------------------------- -sub www_editSave { - my $self = shift; - return $self->session->privilege->insufficient unless $self->canEdit; - - # TODO: refactor: duplication with A::W::Matrix::www_editListingSave - my $oldTag = WebGUI::VersionTag->getWorking($self->session, 1); - my $newTag = WebGUI::VersionTag->create - ($self->session, { name => (sprintf "%s edit of %s - %s", - $self->getWiki->get('title'), $self->get('title'), - $self->session->user->username), - workflowId => 'pbworkflow000000000003' }); - $newTag->setWorking; - - my $newSelf = $self->addRevision; - my $error = $newSelf->processPropertiesFromFormPost; - if (ref $error eq 'ARRAY') { - $self->session->stow->set('editFormErrors', $error); - $newTag->rollback; - $oldTag->setWorking if defined $oldTag; - return $self->www_edit; - } - - $newSelf->updateHistory('edited'); - $newTag->requestCommit; - $newTag->clearWorking; - $oldTag->setWorking if defined $oldTag; - - return $newSelf->www_view; + return $self->getWiki->processStyle( $self->processPageTemplate($self->processTemplate($var, undef, $template), 'edit')); } #------------------------------------------------------------------- sub www_pageHistory { my $self = shift; - my $title = sprintf(WebGUI::International->new($self->session, 'Asset_WikiPage')->get('pageHistory title'), - $self->get('title')); my $template = WebGUI::Asset::Template->new($self->session, $self->getWiki->get('pageHistoryTemplateId')); $template->prepare; # Buggo: hardcoded count my $var = {}; + $var->{title} = sprintf(WebGUI::International->new($self->session, 'Asset_WikiPage')->get('pageHistory title'), $self->get('title')); $self->getWiki->_appendPageHistoryVars($var, [0, 50], $self); - return $self->getWiki->processStyle($self->getWiki->processMasterTemplate($title, $self->processPageTemplate($self->processTemplate($var, undef, $template), 'pageHistory'))); + return $self->getWiki->processStyle($self->processPageTemplate($self->processTemplate($var, undef, $template), 'pageHistory')); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/WikiMaster.pm b/lib/WebGUI/Asset/Wobject/WikiMaster.pm index a4d6cdf87..acfff609d 100644 --- a/lib/WebGUI/Asset/Wobject/WikiMaster.pm +++ b/lib/WebGUI/Asset/Wobject/WikiMaster.pm @@ -342,13 +342,6 @@ sub definition { hoverHelp => $i18n->get('richEditor hoverHelp'), label => $i18n->get('richEditor label') }, - masterTemplateId => { fieldType => 'template', - namespace => 'WikiMaster', - defaultValue => 'WikiMasterTmpl00000001', - tab => 'display', - hoverHelp => $i18n->get('masterTemplateId hoverHelp'), - label => $i18n->get('masterTemplateId label') }, - frontPageTemplateId => { fieldType => 'template', namespace => 'WikiMaster_front', defaultValue => 'WikiFrontTmpl000000001', @@ -377,13 +370,6 @@ sub definition { hoverHelp => $i18n->get('recentChangesTemplateId hoverHelp'), label => $i18n->get('recentChangesTemplateId label') }, - pageListTemplateId => { fieldType => 'template', - namespace => 'WikiMaster_pageList', - defaultValue => 'WikiPLTmpl000000000001', - tab => 'display', - hoverHelp => $i18n->get('pageListTemplateId hoverHelp'), - label => $i18n->get('pageListTemplateId label') }, - searchTemplateId => { fieldType => 'template', namespace => 'WikiMaster_search', defaultValue => 'WikiSearchTmpl00000001', @@ -402,7 +388,29 @@ sub definition { tab => 'display', hoverHelp => $i18n->get('recentChangesCountFront hoverHelp'), label => $i18n->get('recentChangesCountFront label') }, - ); + approvalWorkflow =>{ + fieldType=>"workflow", + defaultValue=>"pbworkflow000000000003", + type=>'WebGUI::VersionTag', + tab=>'security', + label=>$i18n->get('approval workflow'), + hoverHelp=>$i18n->get('approval workflow description'), + }, + thumbnailSize => { + fieldType => "integer", + defaultValue => 0, + tab => "display", + label => $i18n->get("thumbnail size"), + hoverHelp => $i18n->get("thumbnail size help") + }, + maxImageSize => { + fieldType => "integer", + defaultValue => 0, + tab => "display", + label => $i18n->get("max image size"), + hoverHelp => $i18n->get("max image size help") + }, + ); push @$definition, { @@ -424,38 +432,11 @@ sub getContentLastModified { return $lastModified; } -#------------------------------------------------------------------- -sub prepareMasterTemplate { - my $self = shift; - return $self->{_masterTemplate} if $self->{_masterTemplate}; - $self->{_masterTemplate} = - WebGUI::Asset::Template->new($self->session, $self->get('masterTemplateId')); - $self->{_masterTemplate}->prepare; - return $self->{_masterTemplate}; -} - -#------------------------------------------------------------------- -sub processMasterTemplate { - my $self = shift; - my $title = shift; - my $content = shift; - my $var = {}; - my $template = $self->prepareMasterTemplate; - - $var->{title} = $title; - $var->{content} = $content; - $var->{displayTitle} = $self->get('displayTitle'); - $var->{canEdit} = $self->canEditPages; - $self->_appendFuncTemplateVars($var, qw/addPage listPages recentChanges view search/); - - return $self->processTemplate($var, undef, $template); -} #------------------------------------------------------------------- sub prepareView { my $self = shift; $self->SUPER::prepareView; - $self->prepareMasterTemplate; $self->{_frontPageTemplate} = WebGUI::Asset::Template->new($self->session, $self->get('frontPageTemplateId')); $self->{_frontPageTemplate}->prepare; @@ -464,19 +445,16 @@ sub prepareView { #------------------------------------------------------------------- sub processPropertiesFromFormPost { my $self = shift; - my $groupsChanged = (($self->session->form->process('groupIdView') ne $self->get('groupIdView')) or ($self->session->form->process('groupIdEdit') ne $self->get('groupIdEdit'))); my $ret = $self->SUPER::processPropertiesFromFormPost(@_); - if ($groupsChanged) { foreach my $child (@{$self->getLineage(['children'], {returnObjects => 1})}) { $child->update({ groupIdView => $self->get('groupIdView'), groupIdEdit => $self->get('groupIdEdit') }); } } - return $ret; } @@ -494,7 +472,6 @@ sub updateTitleIndex { my %opts = @_; return unless @pages; $self->session->db->write("DELETE FROM WikiMaster_titleIndex WHERE assetId = ? AND pageId IN (".join(', ', ('?') x @pages).")", [$self->getId, map{$_->getId} @pages]); - foreach my $page (@pages) { my ($pageId, $title) = ($page->getId, $page->get('title')); $self->session->db->write("INSERT INTO WikiMaster_titleIndex (assetId, pageId, title) VALUES (?, ?, ?)", [$self->getId, $pageId, $title]); @@ -506,76 +483,23 @@ sub view { my $self = shift; my $var = {}; my $template = $self->{_frontPageTemplate}; - $var->{'description'} = $self->autolinkHtml($self->get('description')); $self->_appendSearchBoxVars($var); $self->_appendRecentChangesVars($var, [0, $self->get('recentChangesCountFront')]); $self->_appendFuncTemplateVars($var, qw/recentChanges/); - - return $self->processMasterTemplate($self->get('title'), $self->processTemplate($var, undef, $template)); + return $self->processTemplate($var, undef, $template); } -#------------------------------------------------------------------- -sub www_addPageSave { - my $self = shift; - my $pageClass = $self->session->form->process('class'); - return $self->session->privilege->insufficient unless - $self->canEditPages and UNIVERSAL::isa($pageClass, 'WebGUI::Asset::WikiPage'); - - # Refactor: duplication with A::W::Matrix::www_editListingSave - my $oldTag = WebGUI::VersionTag->getWorking($self->session, 1); - my $newTag = WebGUI::VersionTag->create - ($self->session, { name => (sprintf "%s create of %s - %s", - $self->get('title'), $self->session->form->process('title'), - $self->session->user->username), - workflowId => 'pbworkflow000000000003' }); - $newTag->setWorking; - - # Hrm. Duplication with Asset::www_editSave. How to fix that? - my $page = $self->addChild({ className => $pageClass }); - $page->{_parent} = $self; - - my $error = $page->processPropertiesFromFormPost; - if (ref $error eq 'ARRAY') { - $self->session->stow->set('editFormErrors', $error); - $page->purge; - return $self->www_add; - } - - $page->updateHistory('edited'); - $newTag->requestCommit; - $newTag->clearWorking; - $oldTag->setWorking if defined $oldTag; - return $page->www_view; -} - -#------------------------------------------------------------------- -sub www_listPages { - my $self = shift; - my $i18n = WebGUI::International->new($self->session, 'Asset_WikiMaster'); - my $title = $i18n->get('listPages title'); - my $template = WebGUI::Asset::Template->new($self->session, $self->get('pageListTemplateId')); - $template->prepare; - - my @pages = sort { lc($a->get('title')) <=> lc($b->get('title')) } - @{$self->getLineage(['children'], {returnObjects => 1})}; - my $var = {}; - $var->{'pl.entries'} = $self->_templateSubvarsRefOfPages(\@pages); - - return $self->processStyle($self->processMasterTemplate($title, $self->processTemplate($var, undef, $template))); -} #------------------------------------------------------------------- sub www_recentChanges { my $self = shift; - my $title = WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('recentChanges title'); my $template = WebGUI::Asset::Template->new($self->session, $self->get('recentChangesTemplateId')); $template->prepare; - my $var = {}; + $var->{title} = WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('recentChanges title'); $self->_appendRecentChangesVars($var, [0, $self->get('recentChangesCount')]); - - return $self->processStyle($self->processMasterTemplate($title, $self->processTemplate($var, undef, $template))); + return $self->processStyle($self->processTemplate($var, undef, $template)); } #------------------------------------------------------------------- @@ -584,7 +508,6 @@ sub www_search { my $var = {}; my $queryString = $self->session->form->process('query', 'text'); $self->_appendSearchBoxVars($var, $queryString); - if (length $queryString) { my $search = WebGUI::Search->new($self->session); $search->search({ keywords => $queryString, @@ -593,12 +516,10 @@ sub www_search { my $rs = $search->getResultSet; $self->_appendSearchResultVars($var, $rs); } - - my $title = WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('search title'); + $var->{title} = WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('search title'); my $template = WebGUI::Asset::Template->new($self->session, $self->get('searchTemplateId')); $template->prepare; - - return $self->processStyle($self->processMasterTemplate($title, $self->processTemplate($var, undef, $template))); + return $self->processStyle($self->processTemplate($var, undef, $template)); } 1; diff --git a/lib/WebGUI/i18n/English/Asset_WikiMaster.pm b/lib/WebGUI/i18n/English/Asset_WikiMaster.pm index bc1ffe913..ec3f1ccbf 100644 --- a/lib/WebGUI/i18n/English/Asset_WikiMaster.pm +++ b/lib/WebGUI/i18n/English/Asset_WikiMaster.pm @@ -5,6 +5,40 @@ our $I18N = 'assetName' => { lastUpdated => 1160157064, message => 'Wiki' }, + 'approval workflow description' => { + message => q|Choose a workflow to be executed on each page as it gets submitted.|, + lastUpdated => 0, + }, + + 'approval workflow' => { + message => q|Approval Workflow|, + lastUpdated => 0, + }, + + 'max image size' => { + message => q|Maximum Image Size|, + lastUpdated => 0, + context => q|field label for image on display tab| + }, + + 'max image size help' => { + message => q|Set the size of the image attachments for this Wiki. If you set it to 0 then the default size set in the master settings will be used. Also, changing this setting does not retroactively change the size of images already in the Wiki. You'll have to re-save each page to get the size to change.|, + lastUpdated => 0, + context => q|help for display setting label| + }, + + 'thumbnail size' => { + message => q|Thumbnail Size|, + lastUpdated => 0, + context => q|field label for thumbnails on display tab| + }, + + 'thumbnail size help' => { + message => q|Set the size of the thumbnails for this Wiki. If you set it to 0 then the default size set in the master settings will be used. Also, changing this setting does not retroactively change the size of thumbnails already in the Wiki. You'll have to re-save each page to get the size to change.|, + lastUpdated => 0, + context => q|help for display setting label| + }, + 'groupToEditPages hoverHelp' => { lastUpdated => 1160157064, message => q|Choose a group of users who will be able to edit pages in this wiki instance. They will not, by default, be able to delete pages or revisions, or edit protected pages.| }, 'groupToEditPages label' => @@ -40,11 +74,6 @@ our $I18N = 'pageHistoryTemplateId label' => { lastUpdated => 1160505291, message => q|Page History Template| }, - 'pageListTemplateId hoverHelp' => - { lastUpdated => 1160417517, message => q|Which template to use for displaying lists of pages.| }, - 'pageListTemplateId label' => - { lastUpdated => 1160417517, message => q|Page List Template| }, - 'searchTemplateId hoverHelp' => { lastUpdated => 1161031607, message => q|Which template to use for search results.| }, 'searchTemplateId label' =>