converting nav and more asset manager fixes
This commit is contained in:
parent
63345d79fe
commit
a287beda58
19 changed files with 1206 additions and 556 deletions
|
|
@ -81,13 +81,13 @@ sub edit {
|
|||
-uiLevel=>6
|
||||
);
|
||||
$tabform->addTab("privileges",WebGUI::International::get(107),6);
|
||||
$tabform->getTab("privileges")->dateTime(
|
||||
$tabform->getTab("security")->dateTime(
|
||||
-name=>"startDate",
|
||||
-label=>WebGUI::International::get(497),
|
||||
-value=>$self->get("startDate"),
|
||||
-uiLevel=>6
|
||||
);
|
||||
$tabform->getTab("privileges")->dateTime(
|
||||
$tabform->getTab("security")->dateTime(
|
||||
-name=>"endDate",
|
||||
-label=>WebGUI::International::get(498),
|
||||
-value=>$self->get("endDate"),
|
||||
|
|
@ -108,7 +108,7 @@ sub edit {
|
|||
$clause = "userId=".quote($self->get("ownerUserId"));
|
||||
}
|
||||
my $users = WebGUI::SQL->buildHashRef("select userId,username from users where $clause order by username");
|
||||
$tabform->getTab("privileges")->selectList(
|
||||
$tabform->getTab("security")->selectList(
|
||||
-name=>"ownerUserId",
|
||||
-options=>$users,
|
||||
-label=>WebGUI::International::get(108),
|
||||
|
|
@ -116,13 +116,13 @@ sub edit {
|
|||
-subtext=>$subtext,
|
||||
-uiLevel=>6
|
||||
);
|
||||
$tabform->getTab("privileges")->group(
|
||||
$tabform->getTab("security")->group(
|
||||
-name=>"groupIdView",
|
||||
-label=>WebGUI::International::get(872),
|
||||
-value=>[$self->get("groupIdView")],
|
||||
-uiLevel=>6
|
||||
);
|
||||
$tabform->getTab("privileges")->group(
|
||||
$tabform->getTab("security")->group(
|
||||
-name=>"groupIdEdit",
|
||||
-label=>WebGUI::International::get(871),
|
||||
-value=>[$self->get("groupIdEdit")],
|
||||
|
|
|
|||
|
|
@ -175,51 +175,43 @@ Returns the TabForm object that will be used in generating the edit page for thi
|
|||
sub getEditForm {
|
||||
my $self = shift;
|
||||
my $tabform = $self->SUPER::getEditForm();
|
||||
$tabform->addTab("layout",WebGUI::International::get(105),5);
|
||||
$tabform->getTab("layout")->yesNo(
|
||||
$tabform->getTab("display")->yesNo(
|
||||
-name=>"displayTitle",
|
||||
-label=>WebGUI::International::get(174),
|
||||
-value=>$self->getValue("displayTitle"),
|
||||
-uiLevel=>5
|
||||
);
|
||||
$tabform->getTab("layout")->template(
|
||||
$tabform->getTab("display")->template(
|
||||
-value=>$self->getValue("templateId"),
|
||||
-namespace=>$self->get("namespace"),
|
||||
-afterEdit=>'func=edit&wid='.$self->get("wobjectId")."&namespace=".$self->get("namespace")
|
||||
);
|
||||
$tabform->getTab("layout")->template(
|
||||
$tabform->getTab("display")->template(
|
||||
-name=>"styleTemplateId",
|
||||
-label=>WebGUI::International::get(1073),
|
||||
-value=>$self->getValue("styleTemplateId"),
|
||||
-namespace=>'style',
|
||||
-afterEdit=>'op=editPage&npp='.$session{form}{npp}
|
||||
);
|
||||
$tabform->getTab("layout")->template(
|
||||
$tabform->getTab("display")->template(
|
||||
-name=>"printableStyleTemplateId",
|
||||
-label=>WebGUI::International::get(1079),
|
||||
-value=>$self->getValue("printableStyleTemplateId"),
|
||||
-namespace=>'style',
|
||||
-afterEdit=>'op=editPage&npp='.$session{form}{npp}
|
||||
);
|
||||
# if ($childCount) {
|
||||
$tabform->getTab("layout")->yesNo(
|
||||
-name=>"recurseStyle",
|
||||
-subtext=>' '.WebGUI::International::get(106),
|
||||
-uiLevel=>9
|
||||
);
|
||||
# }
|
||||
$tabform->getTab("properties")->HTMLArea(
|
||||
-name=>"description",
|
||||
-label=>WebGUI::International::get(85),
|
||||
-value=>$self->getValue("description")
|
||||
);
|
||||
$tabform->getTab("properties")->interval(
|
||||
$tabform->getTab("display")->interval(
|
||||
-name=>"cacheTimeout",
|
||||
-label=>WebGUI::International::get(895),
|
||||
-value=>$self->getValue("cacheTimeout"),
|
||||
-uiLevel=>8
|
||||
);
|
||||
$tabform->getTab("properties")->interval(
|
||||
$tabform->getTab("display")->interval(
|
||||
-name=>"cacheTimeoutVisitor",
|
||||
-label=>WebGUI::International::get(896),
|
||||
-value=>$self->getValue("cacheTimeoutVisitor"),
|
||||
|
|
@ -230,20 +222,6 @@ sub getEditForm {
|
|||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getName ( )
|
||||
|
||||
This method should be overridden by all wobjects and should return an internationalized human friendly name for the wobject. This method only exists in the super class for reverse compatibility and will try to look up the name based on the old name definition.
|
||||
|
||||
=cut
|
||||
|
||||
sub getName {
|
||||
my $self = shift;
|
||||
return $self->get("className");
|
||||
}
|
||||
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -35,18 +35,18 @@ sub definition {
|
|||
tableName=>'Article',
|
||||
className=>'WebGUI::Asset::Wobject::Article',
|
||||
properties=>{
|
||||
linkURL=>{
|
||||
fieldType=>'url',
|
||||
defaultValue=>undef
|
||||
},
|
||||
linkTitle=>{
|
||||
fieldType=>'text',
|
||||
defaultValue=>undef
|
||||
},
|
||||
convertCarriageReturns=>{
|
||||
fieldType=>'yesNo',
|
||||
defaultValue=>0
|
||||
}
|
||||
linkURL=>{
|
||||
fieldType=>'url',
|
||||
defaultValue=>undef
|
||||
},
|
||||
linkTitle=>{
|
||||
fieldType=>'text',
|
||||
defaultValue=>undef
|
||||
},
|
||||
convertCarriageReturns=>{
|
||||
fieldType=>'yesNo',
|
||||
defaultValue=>0
|
||||
}
|
||||
}
|
||||
});
|
||||
return $class->SUPER::definition($definition);
|
||||
|
|
@ -70,7 +70,7 @@ sub getEditForm {
|
|||
-value=>$self->getValue("linkURL"),
|
||||
-uiLevel=>3
|
||||
);
|
||||
$tabform->getTab("layout")->yesNo(
|
||||
$tabform->getTab("display")->yesNo(
|
||||
-name=>"convertCarriageReturns",
|
||||
-label=>WebGUI::International::get(10,"Article"),
|
||||
-value=>$self->getValue("convertCarriageReturns"),
|
||||
|
|
|
|||
469
lib/WebGUI/Asset/Wobject/Navigation.pm
Normal file
469
lib/WebGUI/Asset/Wobject/Navigation.pm
Normal file
|
|
@ -0,0 +1,469 @@
|
|||
package WebGUI::Asset::Wobject::Navigation;
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2004 Plain Black Corporation.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use Tie::IxHash;
|
||||
use WebGUI::Asset::Wobject;
|
||||
use WebGUI::ErrorHandler;
|
||||
use WebGUI::Form;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Privilege;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::TabForm;
|
||||
use WebGUI::URL;
|
||||
use WebGUI::Utility;
|
||||
|
||||
our @ISA = qw(WebGUI::Asset::Wobject);
|
||||
|
||||
|
||||
|
||||
sub definition {
|
||||
my $class = shift;
|
||||
my $definition = shift;
|
||||
push(@{$definition}, {
|
||||
tableName=>'Navigation',
|
||||
className=>'WebGUI::Asset::Wobject::Navigation',
|
||||
properties=>{
|
||||
assetsToInclude=>{
|
||||
fieldType=>'checkList',
|
||||
defaultValue=>"descendants"
|
||||
},
|
||||
startType=>{
|
||||
fieldType=>'selectList',
|
||||
defaultValue=>"relativeToCurrentUrl"
|
||||
},
|
||||
startPoint=>{
|
||||
fieldType=>'text',
|
||||
defaultValue=>0
|
||||
},
|
||||
endPoint=>{
|
||||
fieldType=>'selectList',
|
||||
defaultValue=>55
|
||||
},
|
||||
showSystemPages=>{
|
||||
fieldType=>'yesNo',
|
||||
defaultValue=>0
|
||||
},
|
||||
showHiddenPages=>{
|
||||
fieldType=>'yesNo',
|
||||
defaultValue=>0
|
||||
},
|
||||
showUnprivilegedPages=>{
|
||||
fieldType=>'yesNo',
|
||||
defaultValue=>0
|
||||
}
|
||||
}
|
||||
});
|
||||
return $class->SUPER::definition($definition);
|
||||
}
|
||||
|
||||
sub getEditForm {
|
||||
my $self = shift;
|
||||
my $tabform = $self->SUPER::getEditForm;
|
||||
my ($descendantsChecked, $selfChecked, $pedigreeChecked, $siblingsChecked);
|
||||
my @assetsToInclude = split("\n",$self->getValue("assetsToInclude"));
|
||||
my $afterScript;
|
||||
foreach my $item (@assetsToInclude) {
|
||||
if ($item eq "self") {
|
||||
$selfChecked = 1;
|
||||
} elsif ($item eq "descendants") {
|
||||
$descendantsChecked = 1;
|
||||
$afterScript = "displayNavEndPoint = false;";
|
||||
} elsif ($item eq "siblings") {
|
||||
$siblingsChecked = 1;
|
||||
} elsif ($item eq "pedigree") {
|
||||
$pedigreeChecked = 1;
|
||||
}
|
||||
}
|
||||
$tabform->getTab("properties")->selectList(
|
||||
-name=>"startType",
|
||||
-options=>{
|
||||
specificUrl=>'Specific URL',
|
||||
relativeToCurrentUrl=>'Relative To Current URL',
|
||||
relativeToRoot=>'Relative To Root'
|
||||
},
|
||||
-value=>[$self->getValue("startType")],
|
||||
-label=>"Start Point Type",
|
||||
-extras=>'id="navStartType" onChange="changeStartPoint()"'
|
||||
);
|
||||
$tabform->getTab("properties")->readOnly(
|
||||
-label=>"Start Point",
|
||||
-value=>'<div id="navStartPoint"></div>'
|
||||
);
|
||||
$tabform->getTab("properties")->readOnly(
|
||||
-label=>"Assets to Include",
|
||||
-value=>WebGUI::Form::checkbox({
|
||||
checked=>$selfChecked,
|
||||
name=>"assetsToInclude",
|
||||
value=>"self"
|
||||
}).'Self<br />'
|
||||
.WebGUI::Form::checkbox({
|
||||
checked=>$siblingsChecked,
|
||||
name=>"assetsToInclude",
|
||||
value=>"siblings"
|
||||
}).'Siblings<br />'
|
||||
.WebGUI::Form::checkbox({
|
||||
checked=>$descendantsChecked,
|
||||
name=>"assetsToInclude",
|
||||
value=>"descendants",
|
||||
extras=>'onChange="toggleEndPoint()"'
|
||||
}).'Descendants<br />'
|
||||
.WebGUI::Form::checkbox({
|
||||
checked=>$pedigreeChecked,
|
||||
name=>"assetsToInclude",
|
||||
value=>"pedigree"
|
||||
}).'Pedigree<br />'
|
||||
);
|
||||
WebGUI::ErrorHandler::warn($self->getValue("startType"));
|
||||
my %options;
|
||||
tie %options, 'Tie::IxHash';
|
||||
%options = (
|
||||
'55'=>'Infinity',
|
||||
'1'=>'./a/ (+1)',
|
||||
'2'=>'./a/b/ (+2)',
|
||||
'3'=>'./a/b/c/ (+3)',
|
||||
'4'=>'./a/b/c/d/ (+4)',
|
||||
'5'=>'./a/b/c/d/e/ (+5)'
|
||||
);
|
||||
$tabform->getTab("properties")->raw(
|
||||
'</tbody><tbody id="navEnd"><tr><td class="formDescription">End Point</td><td>'
|
||||
.WebGUI::Form::selectList({
|
||||
name=>"endPoint",
|
||||
value=>[$self->getValue("endPoint")],
|
||||
options=>\%options
|
||||
})
|
||||
.'</td></tr></tbody><tbody>'
|
||||
);
|
||||
$tabform->getTab("display")->yesNo(
|
||||
-name=>'showSystemPages',
|
||||
-label=>WebGUI::International::get(30,'Navigation'),
|
||||
-value=>$self->getValue("showSystemPages")
|
||||
);
|
||||
$tabform->getTab("display")->yesNo(
|
||||
-name=>'showHiddenPages',
|
||||
-label=>WebGUI::International::get(31,'Navigation'),
|
||||
-value=>$self->getValue("showHiddenPages")
|
||||
);
|
||||
$tabform->getTab("display")->yesNo(
|
||||
-name=>'showUnprivilegedPages',
|
||||
-label=>WebGUI::International::get(32,'Navigation'),
|
||||
-value=>$self->getValue("showUnprivilegedPages")
|
||||
);
|
||||
my $start = $self->getValue("startPoint");
|
||||
$tabform->getTab("properties")->raw("<script type=\"text/javascript\">
|
||||
var displayNavEndPoint = true;
|
||||
function toggleEndPoint () {
|
||||
if (displayNavEndPoint) {
|
||||
document.getElementById('navEnd').style.display='none';
|
||||
displayNavEndPoint = false;
|
||||
} else {
|
||||
document.getElementById('navEnd').style.display='';
|
||||
displayNavEndPoint = true;
|
||||
}
|
||||
}
|
||||
function changeStartPoint () {
|
||||
var types = new Array();
|
||||
types['specificUrl']='<input type=\"text\" name=\"startPoint\" value=\"".$start."\">';
|
||||
types['relativeToRoot']='<select name=\"startPoint\"><option value=\"0\"".(($start == 0)?' selected=\"1\"':'').">/ (0)</option><option value=\"1\"".(($start eq "1")?' selected=\"1\"':'').">/a/ (+1)</option><option value=\"2\"".(($start eq "2")?' selected=\"1\"':'').">/a/b/ (+2)</option><option value=\"3\"".(($start eq "3")?' selected=\"1\"':'').">/a/b/c/ (+3)</option><option value=\"4\"".(($start eq "4")?' selected=\"1\"':'').">/a/b/c/d/ (+4)</option><option value=\"5\"".(($start eq "5")?' selected=\"1\"':'').">/a/b/c/d/e/ (+5)</option><option value=\"6\"".(($start eq "6")?' selected=\"1\"':'').">/a/b/c/d/e/f/ (+6)</option><option value=\"7\"".(($start eq "7")?' selected=\"1\"':'').">/a/b/c/d/e/f/g/h/ (+7)</option><option value=\"8\"".(($start eq "8")?' selected=\"1\"':'').">/a/b/c/d/e/f/g/h/ (+8)</option><option value=\"9\"".(($start eq "9")?' selected=\"1\"':'').">/a/b/c/d/e/f/g/h/i/ (+9)</option></select>';
|
||||
types['relativeToCurrentUrl']='<select name=\"startPoint\"><option value=\"-3\"".(($start eq "-3")?' selected=\"1\"':'').">../../.././ (-3)</option><option value=\"-2\"".(($start eq "-2")?' selected=\"1\"':'').">../.././ (-2)</option><option value=\"-1\"".(($start eq "-1")?' selected=\"1\"':'').">.././ (-1)</option><option value=\"0\"".(($start == 0)?' selected=\"1\"':'').">./ (0)</option><option value=\"1\"".(($start eq "1")?' selected=\"1\"':'').">./a/ (+1)</option><option value=\"2\"".(($start eq "2")?' selected=\"1\"':'').">./a/b/ (+2)</option><option value=\"3\"".(($start eq "3")?' selected=\"1\"':'').">./a/b/c/ (+3)</option></select>';
|
||||
document.getElementById('navStartPoint').innerHTML=types[document.getElementById('navStartType').options[document.getElementById('navStartType').selectedIndex].value];
|
||||
}
|
||||
".$afterScript."
|
||||
changeStartPoint();
|
||||
toggleEndPoint();
|
||||
</script>");
|
||||
my $previewButton = qq{
|
||||
<INPUT TYPE="button" VALUE="Preview" NAME="preview"
|
||||
OnClick="
|
||||
window.open('', 'navPreview', 'toolbar=no,status=no,location=no,scrollbars=yes,resizable=yes');
|
||||
this.form.func.value='preview';
|
||||
this.form.target = 'navPreview';
|
||||
this.form.submit()">};
|
||||
my $saveButton = ' <input type="button" value="'.WebGUI::International::get(62).'" onClick="
|
||||
this.value=\''.WebGUI::International::get(452).'\';
|
||||
this.form.func.value=\'editSave\';
|
||||
this.form.target=\'_self\';
|
||||
this.form.submit();
|
||||
" >';
|
||||
$tabform->{_submit} = $previewButton." ".$saveButton;
|
||||
return $tabform;
|
||||
}
|
||||
|
||||
sub getName {
|
||||
return WebGUI::International::get("navigation","Navigation");
|
||||
}
|
||||
|
||||
|
||||
sub view {
|
||||
my $self = shift;
|
||||
# we've got to determine what our start point is based upon user conditions
|
||||
my $start;
|
||||
if (!exists $session{asset}) {
|
||||
$start = $self;
|
||||
} elsif ($self->get("startType") eq "specificUrl") {
|
||||
$start = WebGUI::Asset->getByUrl($self->get("startPoint"));
|
||||
} elsif ($self->get("startType") eq "relativeToRoot") {
|
||||
unless (($self->get("startPoint")+1) >= $self->getLineageLength) {
|
||||
$start = WebGUI::Asset->newByLineage(substr($session{asset}->get("lineage"),0, ($self->get("startPoint") + 1) * 6));
|
||||
}
|
||||
} elsif ($self->get("startType") eq "relativeToCurrentUrl") {
|
||||
if ($self->get("startPoint") < 0) {
|
||||
$start = WebGUI::Asset->newByLineage(substr($session{asset}->get("lineage"),0,
|
||||
($session{asset}->getLineageLength - $self->get("startPoint") + 1) * 6
|
||||
));
|
||||
} elsif ($self->get("startPoint") > 0) {
|
||||
my $lineage = $session{asset}->getLineage;
|
||||
for (1..$self->get("startPoint")) {
|
||||
$lineage .= $self->formatRank(1);
|
||||
}
|
||||
$start = WebGUI::Asset->newByLineage($lineage);
|
||||
}
|
||||
}
|
||||
$start = $session{asset} unless (defined $start); # if none of the above results in a start point, then the current page must be it
|
||||
my @assets = $start->getLineage();
|
||||
|
||||
|
||||
my $config;
|
||||
my $base;
|
||||
|
||||
my (@relatives, %rules);
|
||||
foreach my $relative ("ancestors","self","siblings","descendants") {
|
||||
push(@relatives,$relative) if ($config->{relative});
|
||||
}
|
||||
$rules{returnQuickReadObjects} = 1;
|
||||
$base->getLineage(\@relatives,\%rules);
|
||||
|
||||
my @interestingPageProperties = ('pageId', 'parentId', 'title', 'ownerId', 'urlizedTitle',
|
||||
'synopsis', 'newWindow', 'menuTitle', 'encryptLogin');
|
||||
my $var = {'page_loop' => []};
|
||||
my $p = $self->_getStartPageObject();
|
||||
my $method = $self->_methods()->{$self->{_method}}{method};
|
||||
|
||||
my $cache = WebGUI::Cache->new($self->{_identifier}.'-'.$session{page}{pageId}, "Navigation-".$session{config}{configFile});
|
||||
my $cacheContent = $cache->get unless $session{var}{adminOn};
|
||||
my (@page_loop, $lastPage, %unfolded);
|
||||
tie %unfolded, "Tie::IxHash";
|
||||
|
||||
# Store current page properties in template var
|
||||
my $currentPage = WebGUI::Page->getPage();
|
||||
my $currentRoot = $currentPage->getWebGUIRoot();
|
||||
foreach my $property (@interestingPageProperties) {
|
||||
$var->{'basepage.'.$property} = $currentPage->get($property);
|
||||
}
|
||||
unless (defined $cacheContent &&
|
||||
! $session{url}{siteURL}) { # Never use cache if an alternate site url is specified.
|
||||
# The loop was not cached
|
||||
my @pages = eval $method;
|
||||
if ($@) {
|
||||
WebGUI::ErrorHandler::warn("Error in WebGUI::Navigation::build while trying to execute $method".$@);
|
||||
}
|
||||
if (@pages) {
|
||||
my $startPageDepth = $p->get("depth")+1;
|
||||
my $maxDepth = $startPageDepth + $self->{_depth};
|
||||
my $minDepth = $startPageDepth - $self->{_depth};
|
||||
|
||||
foreach my $page (@pages) {
|
||||
my $pageData = {};
|
||||
$pageData->{"page.absDepth"} = $page->{'depth'} + 1;
|
||||
$pageData->{"page.isSystem"} = $page->{isSystem};
|
||||
|
||||
# Check if in depth range
|
||||
next if ($pageData->{"page.absDepth"} > $maxDepth || $pageData->{"page.absDepth"} < $minDepth);
|
||||
|
||||
# Check stopAtLevel
|
||||
next if ($pageData->{"page.absDepth"} < $self->{_stopAtLevel});
|
||||
|
||||
# Check showSystemPages
|
||||
next if (! $self->{_showSystemPages} && $pageData->{"page.isSystem"});
|
||||
|
||||
# Deal with hidden pages, don't ever hide pages if admin mode is on
|
||||
next if(($page->{'hideFromNavigation'} && ! $self->{_showHiddenPages}) && (! $session{var}{adminOn}));
|
||||
|
||||
# Initial page info
|
||||
$pageData->{"page.url"} = WebGUI::URL::gateway($page->{'urlizedTitle'});
|
||||
if ($page->{'encryptPage'}) {
|
||||
$pageData->{"page.url"} =~ s/http:/https:/;
|
||||
}
|
||||
$pageData->{"page.relDepth"} = $pageData->{"page.absDepth"} - $startPageDepth;
|
||||
$pageData->{"page.isBasepage"} = ($page->{'pageId'} eq $session{page}{pageId});
|
||||
$pageData->{"page.isHidden"} = $page->{'hideFromNavigation'};
|
||||
|
||||
# indent
|
||||
my $indent = 0;
|
||||
if ($self->{_method} eq 'pedigree' # reverse traversing
|
||||
|| $self->{_method} eq 'ancestors' # needs another way to calculate
|
||||
|| $self->{_method} eq 'self_and_ancestors') { # the indent
|
||||
if ($self->{_stopAtLevel} <= $startPageDepth && $self->{_stopAtLevel} > 0) {
|
||||
$indent = $pageData->{"page.absDepth"} - ($self->{_stopAtLevel} - 1) - 1;
|
||||
} elsif ($self->{_stopAtLevel} > $startPageDepth && $self->{_stopAtLevel} > 0) {
|
||||
$indent = 0;
|
||||
} else {
|
||||
$indent = $pageData->{"page.absDepth"} - 1;
|
||||
}
|
||||
} else {
|
||||
$indent = $pageData->{"page.absDepth"} - $startPageDepth - 1;
|
||||
}
|
||||
$pageData->{"page.indent_loop"} = [];
|
||||
push(@{$pageData->{"page.indent_loop"}},{'indent'=>$_}) for(1..$indent);
|
||||
$pageData->{"page.indent"} = " " x $indent;
|
||||
|
||||
# Put page properties in $pageData hashref
|
||||
foreach my $property (@interestingPageProperties) {
|
||||
$pageData->{"page.".$property} = $page->{$property};
|
||||
}
|
||||
$pageData->{"page.isRoot"} = (! $page->{'parentId'});
|
||||
$pageData->{"page.isTop"} = ($pageData->{"page.absDepth"} == 2);
|
||||
$pageData->{"page.hasDaughter"} = ($page->{'nestedSetRight'} - $page->{'nestedSetLeft'} > 1);
|
||||
$pageData->{"page.isDaughter"} = ($page->{'parentId'} eq $currentPage->get('pageId'));
|
||||
$pageData->{"page.isMother"} = ($page->{'pageId'} eq $currentPage->get('parentId'));
|
||||
|
||||
$pageData->{"page.isAncestor"}
|
||||
= (($page->{'nestedSetLeft'} < $currentPage->get('nestedSetLeft'))
|
||||
&& ($page->{'nestedSetRight'} > $currentPage->get('nestedSetRight')));
|
||||
$pageData->{"page.isDescendent"}
|
||||
= (($page->{'nestedSetLeft'} > $currentPage->get('nestedSetLeft'))
|
||||
&& ($page->{'nestedSetRight'} < $currentPage->get('nestedSetRight')));
|
||||
|
||||
$pageData->{"page.inRoot"}
|
||||
= (($page->{'nestedSetLeft'} > $currentRoot->get('nestedSetLeft'))
|
||||
&& ($page->{'nestedSetRight'} < $currentRoot->get('nestedSetRight')));
|
||||
|
||||
# Some information about my mother
|
||||
my $mother = WebGUI::Page->getPage($page->{parentId});
|
||||
if ($page->{parentId} ne "0") {
|
||||
foreach (qw(title urlizedTitle parentId pageId)) {
|
||||
$pageData->{"page.mother.$_"} = $mother->get($_);
|
||||
}
|
||||
$pageData->{"page.isSister"}
|
||||
= (($mother->get("pageId") eq $currentPage->get("parentId"))
|
||||
&& !$pageData->{"page.isBasepage"});
|
||||
}
|
||||
|
||||
$pageData->{"page.inBranch"}
|
||||
= ($pageData->{"page.isAncestor"}
|
||||
|| $pageData->{"page.isDescendent"}
|
||||
|| $pageData->{"page.isSister"}
|
||||
|| $pageData->{"page.isBasepage"});
|
||||
|
||||
$pageData->{"page.isLeftMost"} = (($page->{'nestedSetLeft'} - 1) == $mother->get('nestedSetLeft'));
|
||||
$pageData->{"page.isRightMost"} = (($page->{'nestedSetRight'} + 1) == $mother->get('nestedSetRight'));
|
||||
my $depthDiff = ($lastPage) ? ($lastPage->{'page.absDepth'} - $pageData->{'page.absDepth'}) : 0;
|
||||
if ($depthDiff > 0) {
|
||||
$pageData->{"page.depthDiff"} = $depthDiff if ($depthDiff > 0);
|
||||
$pageData->{"page.depthDiffIs".$depthDiff} = 1;
|
||||
push(@{$pageData->{"page.depthDiff_loop"}},{}) for(1..$depthDiff);
|
||||
}
|
||||
|
||||
# Some information about my depth
|
||||
$pageData->{"page.depthIs".$pageData->{"page.absDepth"}} = 1;
|
||||
$pageData->{"page.relativeDepthIs".$pageData->{"page.relDepth"}} = 1;
|
||||
|
||||
# We need a copy of the last page for the depthDiffLoop
|
||||
$lastPage = $pageData;
|
||||
|
||||
# Store $pageData in page_loop. Mind the order.
|
||||
if ($self->{_reverse}) {
|
||||
unshift(@page_loop, $pageData);
|
||||
} else {
|
||||
push(@page_loop, $pageData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We had a cache miss, so let's put the data in cache
|
||||
$cache->set(\@page_loop, 3600*24) unless $session{var}{adminOn};
|
||||
} else {
|
||||
# We had a cache hit
|
||||
@page_loop = @{$cacheContent};
|
||||
}
|
||||
|
||||
# Do the user-dependent checks (which cannot be cached globally)
|
||||
foreach my $pageData (@page_loop) {
|
||||
$pageData->{"page.isViewable"} = WebGUI::Page::canView($pageData->{'page.pageId'});
|
||||
# Check privileges
|
||||
if ($pageData->{"page.isViewable"} || $self->{_showUnprivilegedPages}) {
|
||||
push (@{$var->{page_loop}}, $pageData);
|
||||
push (@{$unfolded{$pageData->{"page.parentId"}}}, $pageData);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (values %unfolded) {
|
||||
push(@{$var->{unfolded_page_loop}}, @{$_});
|
||||
}
|
||||
|
||||
# Configure button
|
||||
$var->{'config.button'} = $self->_getEditButton();
|
||||
|
||||
# Some properties of the page the user's viewing.
|
||||
$var->{'basepage.hasDaughter'} = $currentPage->hasDaughter();
|
||||
$var->{"basepage.isHome"} = ($currentPage->get('pageId') eq '1');
|
||||
|
||||
if ($self->{_template}) {
|
||||
return WebGUI::Template::processRaw($self->{_template}, $var);
|
||||
} else {
|
||||
return WebGUI::Template::process($self->{_templateId}, "Navigation", $var);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub www_edit {
|
||||
my $self = shift;
|
||||
return WebGUI::Privilege::insufficient() unless $self->canEdit;
|
||||
$self->getAdminConsole->setHelp("navigation add/edit");
|
||||
return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get("22","Navigation"));
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_preview {
|
||||
my $self = shift;
|
||||
$session{var}{adminOn} = 0;
|
||||
return WebGUI::Privilege::insufficient() unless (WebGUI::Grouping::isInGroup(3));
|
||||
my $nav = WebGUI::Navigation->new( depth=>$session{form}{depth},
|
||||
method=>$session{form}{method},
|
||||
startAt=>$session{form}{startAt},
|
||||
stopAtLevel=>$session{form}{stopAtLevel},
|
||||
templateId=>$session{form}{templateId},
|
||||
showSystemPages=>$session{form}{showSystemPages},
|
||||
showHiddenPages=>$session{form}{showHiddenPages},
|
||||
showUnprivilegedPages=>$session{form}{showUnprivilegedPages},
|
||||
'reverse'=>$session{form}{'reverse'},
|
||||
);
|
||||
my $output = qq(
|
||||
<table width="100%" border="0" cellpadding="5" cellspacing="0">
|
||||
<tr><td class="tableHeader" valign="top">
|
||||
Configuration
|
||||
</td><td class="tableHeader" valign="top">Output</td></tr>
|
||||
<tr><td class="tableHeader" valign="top">
|
||||
<font size=1>
|
||||
Identifier: $session{form}{identifier}<br>
|
||||
startAt: $session{form}{startAt}<br>
|
||||
method: $session{form}{method}<br>
|
||||
stopAtLevel: $session{form}{stopAtLevel}<br>
|
||||
depth: $session{form}{depth}<br>
|
||||
templateId: $session{form}{templateId}<br>
|
||||
reverse: $session{form}{'reverse'}<br>
|
||||
showSystemPages: $session{form}{showSystemPages}<br>
|
||||
showHiddenPages: $session{form}{showHiddenPages}<br>
|
||||
showUnprivilegedPages: $session{form}{showUnprivilegedPages}<br>
|
||||
</font>
|
||||
</td><td class="tableData" valign="top">
|
||||
) . $nav->build . qq(</td></tr></table>);
|
||||
|
||||
# Because of the way the system is set up, the preview is cached. So let's remove it again...
|
||||
WebGUI::Cache->new($nav->{_identifier}."$session{page}{pageId}", "Navigation-".$session{config}{configFile})->delete;
|
||||
|
||||
return _submenu($output,"preview");
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
@ -82,7 +82,7 @@ sub getEditForm {
|
|||
-label=>WebGUI::International::get(1,"SyndicatedContent"),
|
||||
-value=>$self->getValue("rssUrl")
|
||||
);
|
||||
$tabform->getTab("layout")->integer(
|
||||
$tabform->getTab("display")->integer(
|
||||
-name=>"maxHeadlines",
|
||||
-label=>WebGUI::International::get(3,"SyndicatedContent"),
|
||||
-value=>$self->getValue("maxHeadlines")
|
||||
|
|
|
|||
|
|
@ -161,36 +161,36 @@ sub duplicate {
|
|||
sub getEditForm {
|
||||
my $self = shift;
|
||||
my $tabform = $self->getEditForm;
|
||||
$tabform->getTab("layout")->template(
|
||||
$tabform->getTab("display")->template(
|
||||
-name=>"submissionTemplateId",
|
||||
-value=>$self->getValue("submissionTemplateId"),
|
||||
-namespace=>$self->get("namespace")."/Submission",
|
||||
-label=>WebGUI::International::get(73,$self->get("namespace")),
|
||||
-afterEdit=>'func=edit&wid='.$self->get("wobjectId")
|
||||
);
|
||||
$tabform->getTab("layout")->template(
|
||||
$tabform->getTab("display")->template(
|
||||
-name=>"submissionFormTemplateId",
|
||||
-value=>$self->getValue("submissionFormTemplateId"),
|
||||
-namespace=>$self->get("namespace")."/SubmissionForm",
|
||||
-label=>WebGUI::International::get(87,$self->get("namespace")),
|
||||
-afterEdit=>'func=edit&wid='.$self->get("wobjectId")
|
||||
);
|
||||
$tabform->getTab("privileges")->group(
|
||||
$tabform->getTab("security")->group(
|
||||
-name=>"groupToApprove",
|
||||
-label=>WebGUI::International::get(1,$self->get("namespace")),
|
||||
-value=>[$self->getValue("groupToApprove")]
|
||||
);
|
||||
$tabform->getTab("privileges")->group(
|
||||
$tabform->getTab("security")->group(
|
||||
-name=>"groupToContribute",
|
||||
-label=>WebGUI::International::get(2,$self->get("namespace")),
|
||||
-value=>[$self->getValue("groupToContribute")]
|
||||
);
|
||||
$tabform->getTab("layout")->integer(
|
||||
$tabform->getTab("display")->integer(
|
||||
-name=>"submissionsPerPage",
|
||||
-label=>WebGUI::International::get(6,$self->get("namespace")),
|
||||
-value=>$self->getValue("submissionsPerPage")
|
||||
);
|
||||
$tabform->getTab("privileges")->selectList(
|
||||
$tabform->getTab("security")->selectList(
|
||||
-name=>"defaultStatus",
|
||||
-options=>{
|
||||
Approved=>status('Approved'),
|
||||
|
|
@ -209,10 +209,10 @@ sub getEditForm {
|
|||
} else {
|
||||
$tabform->getTab("properties")->hidden("karmaPerSubmission",$self->getValue("karmaPerSubmission"));
|
||||
}
|
||||
$tabform->getTab("layout")->filterContent(
|
||||
$tabform->getTab("display")->filterContent(
|
||||
-value=>$self->getValue("filterContent")
|
||||
);
|
||||
$tabform->getTab("layout")->selectList(
|
||||
$tabform->getTab("display")->selectList(
|
||||
-name=>"sortBy",
|
||||
-value=>[$self->getValue("sortBy")],
|
||||
-options=>{
|
||||
|
|
@ -223,7 +223,7 @@ sub getEditForm {
|
|||
},
|
||||
-label=>WebGUI::International::get(79,$self->get("namespace"))
|
||||
);
|
||||
$tabform->getTab("layout")->selectList(
|
||||
$tabform->getTab("display")->selectList(
|
||||
-name=>"sortOrder",
|
||||
-value=>[$self->getValue("sortOrder")],
|
||||
-options=>{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue