684 lines
19 KiB
Perl
684 lines
19 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use lib "../../lib";
|
|
use File::Path;
|
|
use Getopt::Long;
|
|
use strict;
|
|
use WebGUI::Asset;
|
|
use WebGUI::Asset::Wobject::Folder;
|
|
use WebGUI::Asset::Snippet;
|
|
use WebGUI::Session;
|
|
use WebGUI::SQL;
|
|
|
|
my $configFile;
|
|
my $quiet;
|
|
|
|
GetOptions(
|
|
'configFile=s'=>\$configFile,
|
|
'quiet'=>\$quiet
|
|
);
|
|
|
|
WebGUI::Session::open("../..",$configFile);
|
|
|
|
addAssetVersioning();
|
|
updateConfigFile();
|
|
insertHelpTemplate();
|
|
insertXSLTSheets();
|
|
insertSyndicatedContentTemplate();
|
|
|
|
WebGUI::Session::close();
|
|
|
|
sub updateConfigFile {
|
|
print "\tUpdating config file.\n" unless ($quiet);
|
|
my $pathToConfig = '../../etc/'.$configFile;
|
|
my $conf = Parse::PlainConfig->new('DELIM' => '=', 'FILE' => $pathToConfig, 'PURGE'=>1);
|
|
my %newConfig;
|
|
foreach my $key ($conf->directives) { # delete unwanted stuff
|
|
unless ($key eq "wobject") {
|
|
$newConfig{$key} = $conf->get($key);
|
|
}
|
|
}
|
|
$newConfig{fileCacheSizeLimit} = 100000000;
|
|
$newConfig{DeleteExpiredRevisions_offset} = 365;
|
|
$conf->purge;
|
|
$conf->set(%newConfig);
|
|
$conf->write;
|
|
}
|
|
|
|
sub addAssetVersioning {
|
|
print "\tMaking changes for asset versioning\n" unless ($quiet);
|
|
WebGUI::SQL->write("create table assetVersionTag (
|
|
tagId varchar(22) not null primary key,
|
|
name varchar(255) not null,
|
|
isCommitted int not null default 0,
|
|
creationDate bigint not null default 0,
|
|
createdBy varchar(22),
|
|
commitDate bigint not null default 0,
|
|
committedBy varchar(22)
|
|
)");
|
|
my $now = time();
|
|
WebGUI::SQL->write("insert into assetVersionTag values ('pbversion0000000000001','Initial Import','1',$now,'3',$now,'3')");
|
|
WebGUI::SQL->write("insert into assetVersionTag values ('pbversion0000000000002','Auto Commit','1',$now,'3',$now,'3')");
|
|
foreach my $table (qw(FileAsset Post RichEdit Snippet EventsCalendar_Event ImageAsset Thread redirect Shortcut Template Article EventsCalendar IndexedSearch MessageBoard SQLReport Folder Navigation Survey WSClient Collaboration HttpProxy Layout Poll SyndicatedContent Product DataForm wobject)) {
|
|
WebGUI::SQL->write("alter table $table add column revisionDate bigint not null");
|
|
WebGUI::SQL->write("update $table set revisionDate=$now");
|
|
WebGUI::SQL->write("alter table $table drop primary key");
|
|
WebGUI::SQL->write("alter table $table add primary key (assetId,revisionDate)");
|
|
}
|
|
WebGUI::SQL->write("create table assetData (
|
|
assetId varchar(22) not null,
|
|
revisionDate bigint,
|
|
revisedBy varchar(22) not null,
|
|
tagId varchar(22) not null,
|
|
status varchar(35) not null default 'pending',
|
|
title varchar(255) not null default 'untitled',
|
|
menuTitle varchar(255) not null default 'untitled',
|
|
url varchar(255) not null,
|
|
ownerUserId varchar(22) not null default '3',
|
|
groupIdView varchar(22) not null default '7',
|
|
groupIdEdit varchar(22) not null default '4',
|
|
startDate bigint not null default 997995720,
|
|
endDate bigint not null default 32472169200,
|
|
synopsis text,
|
|
newWindow int not null default 0,
|
|
isHidden int not null default 0,
|
|
isPackage int not null default 0,
|
|
isPrototype int not null default 0,
|
|
encryptPage int not null default 0,
|
|
assetSize int not null default 0,
|
|
extraHeadTags text,
|
|
primary key (assetId,revisionDate)
|
|
)");
|
|
my $statement = WebGUI::SQL->prepare("insert into assetData values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
|
|
my $sth = WebGUI::SQL->read("select * from asset");
|
|
while (my $data = $sth->hashRef) {
|
|
$statement->execute([
|
|
$data->{assetId},
|
|
$now,
|
|
'3',
|
|
'pbversion0000000000001',
|
|
'approved',
|
|
$data->{title},
|
|
$data->{menuTitle},
|
|
$data->{url},
|
|
$data->{ownerUserId},
|
|
$data->{groupIdView},
|
|
$data->{groupIdEdit},
|
|
$data->{startDate},
|
|
$data->{endDate},
|
|
$data->{synopsis},
|
|
$data->{newWindow},
|
|
$data->{isHidden},
|
|
$data->{isPackage},
|
|
$data->{isPrototype},
|
|
$data->{encryptPage},
|
|
$data->{assetSize},
|
|
$data->{extraHeadTags}
|
|
]);
|
|
}
|
|
$sth->finish;
|
|
WebGUI::SQL->write("alter table asset add column creationDate bigint not null default 997995720");
|
|
WebGUI::SQL->write("alter table asset add column createdBy varchar(22) not null default '3'");
|
|
WebGUI::SQL->write("alter table asset add column stateChanged varchar(22) not null default 997995720");
|
|
WebGUI::SQL->write("alter table asset add column stateChangedBy varchar(22) not null default '3'");
|
|
WebGUI::SQL->write("alter table asset add column isLockedBy varchar(22)");
|
|
WebGUI::SQL->write("update asset set creationDate=$now, createdBy='3'");
|
|
foreach my $field (qw(url groupIdView title menuTitle startDate endDate ownerUserId groupIdEdit synopsis newWindow isHidden isSystem encryptPage assetSize lastUpdated lastUpdatedBy isPackage extraHeadTags isPrototype)) {
|
|
WebGUI::SQL->write("alter table asset drop column $field");
|
|
}
|
|
|
|
}
|
|
|
|
|
|
sub insertHelpTemplate{
|
|
print "\tInserting new Help template\n" unless ($quiet);
|
|
my $helpTemplate = <<EOT;
|
|
<p><tmpl_var body></p>
|
|
|
|
<tmpl_if fields>
|
|
<dl>
|
|
<tmpl_loop fields>
|
|
|
|
<dt><tmpl_var title></dt>
|
|
<dd><tmpl_var description></dd>
|
|
</tmpl_loop>
|
|
</dl>
|
|
</tmpl_if>
|
|
EOT
|
|
my $import=WebGUI::Asset->getImportNode;
|
|
my $folder = $import->addChild({
|
|
title=>"6.7.0 Help System Template",
|
|
menuTitle=>"6.7.0 Help System Template",
|
|
url=>"6-7-0HelpSystemTemplate",
|
|
className=>"WebGUI::Asset::Wobject::Folder"
|
|
});
|
|
$folder->addChild({
|
|
namespace=>'AdminConsole',
|
|
title=>'Help',
|
|
menuTitle=>'Help',
|
|
url=>'Help',
|
|
showInForms=>1,
|
|
isEditable=>1,
|
|
className=>"WebGUI::Asset::Template",
|
|
template=>$helpTemplate},'PBtmplHelp000000000001');
|
|
}
|
|
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub insertSyndicatedContentTemplate{
|
|
print "\tInserting new syndicated content template\n" unless ($quiet);
|
|
|
|
my $template=q|<a name="<tmpl_var assetId>"></a>
|
|
<tmpl_if session.var.adminOn>
|
|
<p><tmpl_var controls></p>
|
|
</tmpl_if>
|
|
|
|
<p>
|
|
<a href="<tmpl_var rss.url.0.9>">RSS 0.90</a>
|
|
<a href="<tmpl_var rss.url.0.91>">RSS 0.91</a>
|
|
<a href="<tmpl_var rss.url.1.0>">RSS 1.0</a>
|
|
<a href="<tmpl_var rss.url.2.0>">RSS 2.0</a>
|
|
</p>
|
|
|
|
<tmpl_if displayTitle>
|
|
<h1><tmpl_var title></h1>
|
|
</tmpl_if>
|
|
|
|
<tmpl_if description>
|
|
<tmpl_var description><p />
|
|
</tmpl_if>
|
|
|
|
<h1>
|
|
<tmpl_if channel.link>
|
|
<a href="<tmpl_var channel.link>" target="_blank"><tmpl_var channel.title></a>
|
|
<tmpl_else>
|
|
<tmpl_var channel.title>
|
|
</tmpl_if>
|
|
</h1>
|
|
|
|
<tmpl_if channel.description>
|
|
<tmpl_var channel.description><p />
|
|
</tmpl_if>
|
|
|
|
|
|
<tmpl_loop item_loop>
|
|
|
|
<tmpl_if new_rss_site>
|
|
<!-- We're in a new RSS group. Output the header. -->
|
|
<h2><a href="<tmpl_var site_link>" target="_blank"><tmpl_var site_title></a></h2>
|
|
</tmpl_if>
|
|
|
|
<li>
|
|
<tmpl_if link>
|
|
<a href="<tmpl_var link>" target="_blank"><tmpl_var title></a>
|
|
<tmpl_else>
|
|
<tmpl_var title>
|
|
</tmpl_if>
|
|
<tmpl_if description>
|
|
- <tmpl_var description>
|
|
</tmpl_if>
|
|
<b><tmpl_var site_title></b>
|
|
<br>
|
|
|
|
</tmpl_loop>|;
|
|
|
|
my $import=WebGUI::Asset->getImportNode;
|
|
my $template=$import->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Template',
|
|
title=>'Default Grouped Aggregate Feeds',
|
|
namespace=>'SyndicatedContent',
|
|
menuTitle=>'Default Grouped Aggregate Feeds',
|
|
url=>'templates/syndicatedcontent/default_grouped_feeds',
|
|
ownerUserID=>3,
|
|
groupIdView=>7,
|
|
groupIdEdit=>4,
|
|
isHidden=>1,
|
|
template=>$template
|
|
},'DPUROtmpl0000000000001'
|
|
);
|
|
}
|
|
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub insertXSLTSheets{
|
|
print "\tInserting syndicated content XSLT\n" unless ($quiet);
|
|
my $import=WebGUI::Asset->getImportNode;
|
|
|
|
my $folder=$import->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Wobject::Folder',
|
|
title=>'Syndicated Content XSLT',
|
|
menuTitle=>'Syndicated Content XSLT',
|
|
url=>'xslt',
|
|
startDate=>time(),
|
|
endDate=>time()+ 60*60*24*365*10,
|
|
groupEditId=>4,
|
|
groupViewId=>2
|
|
}
|
|
);
|
|
add_090xslt($folder);
|
|
add_091xslt($folder);
|
|
add_10xslt($folder);
|
|
add_20xslt($folder);
|
|
}
|
|
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub add_090xslt{
|
|
my $folder=shift;
|
|
my $snippet090=q|<?xml version="1.0"?>
|
|
<!--
|
|
Based on XSLT stylesheets originally designed by Rich Manalang (http://manalang.com)
|
|
This XSLT sheet will convert any valid RSS 0.9 feed into basic HTML.
|
|
-->
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
xmlns:foo="http://my.netscape.com/rdf/simple/0.9/">
|
|
<xsl:output method="html"/>
|
|
<xsl:template match="/">
|
|
<style>
|
|
<xsl:comment>
|
|
.syndication-content-area {
|
|
}
|
|
.syndication-title {
|
|
font-size: 1.1em;
|
|
font-weight: bold;
|
|
}
|
|
.syndication-description {
|
|
font-size: .9em;
|
|
margin: 0 0 10px 0;
|
|
}
|
|
.syndication-list {
|
|
font-size: .8em;
|
|
margin:0 0 0 20px;
|
|
}
|
|
.syndication-list-item {
|
|
margin: 0 0 5px 0;
|
|
}
|
|
.syndication-list-item a,
|
|
.syndication-list-item a:link {
|
|
color: blue;
|
|
}
|
|
.syndication-list-item a:active,
|
|
.syndication-list-item a:hover {
|
|
color: red;
|
|
}
|
|
li.syndication-list-item{
|
|
padding-bottom: .2em;
|
|
background-color: #e4e4e4;
|
|
}
|
|
.syndication-list-item a:visited {
|
|
color: black;
|
|
text-decoration: none;
|
|
}
|
|
.syndication-list-item-date {
|
|
font-size: .8em;
|
|
}
|
|
.syndication-list-item-description {
|
|
font-size: .9em;
|
|
}
|
|
</xsl:comment>
|
|
</style>
|
|
<xsl:apply-templates select="/rdf:RDF/foo:channel"/>
|
|
</xsl:template>
|
|
<xsl:template match="/rdf:RDF/foo:channel">
|
|
You're viewing an <a href="http://www.purplepages.ie/RSS/netscape/rss0.90.html">RSS version 0.9 feed</a>. Please use an RSS feed reader to view this content as intended.
|
|
<div class="syndication-content-area">
|
|
<div class="syndication-title">
|
|
<xsl:value-of select="foo:title"/>
|
|
</div>
|
|
<div class="syndication-description">
|
|
<xsl:value-of select="foo:description"/>
|
|
</div>
|
|
<ul class="syndication-list">
|
|
<xsl:apply-templates select="/rdf:RDF/foo:item"/>
|
|
</ul>
|
|
</div>
|
|
</xsl:template>
|
|
<xsl:template match="/rdf:RDF/foo:item">
|
|
<li class="syndication-list-item">
|
|
<a href="{foo:link}" title="{foo:description}">
|
|
<xsl:value-of select="foo:title"/>
|
|
</a>
|
|
</li>
|
|
</xsl:template>
|
|
</xsl:stylesheet>|;
|
|
|
|
my $snippet=$folder->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Snippet',
|
|
title=>'RSS 0.9 XSLT Stylesheet',
|
|
menuTitle=>'RSS 0.9 XSLT ',
|
|
url=>'xslt/rss0.9.xsl',
|
|
mimeType=>'application/xml',
|
|
startDate=>time(),
|
|
endDate=>time()+ 60*60*24*365*10,
|
|
groupEditId=>4,
|
|
groupViewId=>2,
|
|
snippet=>$snippet090
|
|
},'SynConXSLT000000000001'
|
|
);
|
|
}
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub add_091xslt{
|
|
my $folder=shift;
|
|
my $snippet091=q|<?xml version="1.0"?>
|
|
<!--
|
|
Title: RSS 0.91, 0.92, 0.93 XSL Template
|
|
Author: Rich Manalang (http://manalang.com)
|
|
Description: This sample XSLT will convert any valid RSS 0.91, 0.92, or 0.93 feed to HTML.
|
|
-->
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
|
|
<xsl:output method="html"/>
|
|
<xsl:template match="/">
|
|
<style>
|
|
<xsl:comment>
|
|
.syndication-content-area {
|
|
}
|
|
.syndication-title {
|
|
font-size: 1.1em;
|
|
font-weight: bold;
|
|
}
|
|
.syndication-description {
|
|
font-size: .9em;
|
|
margin: 0 0 10px 0;
|
|
}
|
|
.syndication-list {
|
|
font-size: .8em;
|
|
margin:0 0 0 20px;
|
|
}
|
|
li.syndication-list-item{
|
|
padding-bottom: .2em;
|
|
background-color: #e4e4e4;
|
|
}
|
|
.syndication-list-item {
|
|
margin: 0 0 5px 0;
|
|
}
|
|
.syndication-list-item a,
|
|
.syndication-list-item a:link {
|
|
color: blue;
|
|
}
|
|
.syndication-list-item a:active,
|
|
.syndication-list-item a:hover {
|
|
color: red;
|
|
}
|
|
.syndication-list-item a:visited {
|
|
color: black;
|
|
text-decoration: none;
|
|
}
|
|
.syndication-list-item-date {
|
|
font-size: .8em;
|
|
}
|
|
.syndication-list-item-description {
|
|
font-size: .9em;
|
|
}
|
|
</xsl:comment>
|
|
</style>
|
|
<xsl:apply-templates select="/rss/channel"/>
|
|
</xsl:template>
|
|
<xsl:template match="/rss/channel">
|
|
<div class="syndication-content-area">
|
|
You're viewing an <a href="http://backend.userland.com/rss091">RSS version 0.91 feed</a>. Please use an RSS feed reader to view this content as intended.
|
|
<div class="syndication-title">
|
|
<xsl:value-of select="title"/>
|
|
</div>
|
|
<div class="syndication-description">
|
|
<xsl:value-of select="description"/>
|
|
</div>
|
|
<ul class="syndication-list">
|
|
<xsl:apply-templates select="item"/>
|
|
</ul>
|
|
|
|
</div>
|
|
</xsl:template>
|
|
<xsl:template match="/rss/channel/item">
|
|
<li class="syndication-list-item">
|
|
<a href="{link}" title="{description}">
|
|
<xsl:value-of select="title"/>
|
|
</a>
|
|
<div class="syndication-list-item-description">
|
|
<xsl:value-of select="description"/>
|
|
|
|
</div>
|
|
</li>
|
|
</xsl:template>
|
|
</xsl:stylesheet>|;
|
|
|
|
my $snippet=$folder->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Snippet',
|
|
title=>'RSS 0.91 XSLT Stylesheet',
|
|
menuTitle=>'RSS 0.91 XSLT',
|
|
url=>'xslt/rss0.91.xsl',
|
|
mimeType=>'application/xml',
|
|
startDate=>time(),
|
|
endDate=>time()+ 60*60*24*365*10,
|
|
groupEditId=>4,
|
|
groupViewId=>2,
|
|
snippet=>$snippet091
|
|
},'SynConXSLT000000000002'
|
|
);
|
|
}
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub add_10xslt{
|
|
my $folder=shift;
|
|
my $snippet10=q|<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Title: RSS 1.0 XSL Template
|
|
Author: Rich Manalang (http://manalang.com)
|
|
Description: This sample XSLT will convert any valid RSS 1.0 feed to HTML.
|
|
-->
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
xmlns:foo="http://purl.org/rss/1.0/">
|
|
<xsl:output method="html"/>
|
|
<xsl:template match="/">
|
|
<style>
|
|
<xsl:comment>
|
|
.syndication-content-area {
|
|
}
|
|
.syndication-title {
|
|
font-size: 1.1em;
|
|
font-weight: bold;
|
|
}
|
|
.syndication-description {
|
|
font-size: .9em;
|
|
margin: 0 0 10px 0;
|
|
}
|
|
.syndication-list {
|
|
font-size: .8em;
|
|
margin:0 0 0 20px;
|
|
}
|
|
.syndication-list-item {
|
|
margin: 0 0 5px 0;
|
|
}
|
|
li.syndication-list-item{
|
|
padding-bottom: .2em;
|
|
background-color: #e4e4e4;
|
|
}
|
|
.syndication-list-item a,
|
|
.syndication-list-item a:link {
|
|
color: blue;
|
|
}
|
|
.syndication-list-item a:active,
|
|
.syndication-list-item a:hover {
|
|
color: red;
|
|
}
|
|
.syndication-list-item a:visited {
|
|
color: black;
|
|
text-decoration: none;
|
|
}
|
|
.syndication-list-item-date {
|
|
font-size: .8em;
|
|
}
|
|
.syndication-list-item-description {
|
|
font-size: .9em;
|
|
}
|
|
</xsl:comment>
|
|
</style>
|
|
<xsl:apply-templates select="/rdf:RDF/foo:channel"/>
|
|
</xsl:template>
|
|
<xsl:template match="/rdf:RDF/foo:channel">
|
|
<div class="syndication-content-area">
|
|
You're viewing an <a href="http://web.resource.org/rss/1.0/">RSS version 1.0 feed</a>. Please use an RSS feed reader to view this content as intended.
|
|
<div class="syndication-title">
|
|
<xsl:value-of select="foo:title"/>
|
|
</div>
|
|
<div class="syndication-description">
|
|
<xsl:value-of select="foo:description"/>
|
|
</div>
|
|
<ul class="syndication-list">
|
|
<xsl:apply-templates select="/rdf:RDF/foo:item"/>
|
|
</ul>
|
|
|
|
</div>
|
|
</xsl:template>
|
|
<xsl:template match="/rdf:RDF/foo:item">
|
|
<li class="syndication-list-item">
|
|
<a href="{foo:link}" title="{foo:description}">
|
|
<xsl:value-of select="foo:title"/>
|
|
</a>
|
|
<span class="syndication-list-item-date">
|
|
(
|
|
<xsl:value-of select="dc:date"/>)
|
|
</span>
|
|
|
|
<div class="syndication-list-item-description">
|
|
<xsl:value-of select="foo:description"/>
|
|
</div>
|
|
</li>
|
|
</xsl:template>
|
|
</xsl:stylesheet>
|
|
|;
|
|
my $snippet=$folder->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Snippet',
|
|
title=>'RSS 1.0 XSLT Stylesheet',
|
|
menuTitle=>'RSS 1.0 XSLT',
|
|
mimeType=>'application/xml',
|
|
url=>'xslt/rss1.0.xsl',
|
|
startDate=>time(),
|
|
endDate=>time()+ 60*60*24*365*10,
|
|
groupEditId=>4,
|
|
groupViewId=>2,
|
|
snippet=>$snippet10
|
|
},'SynConXSLT000000000003'
|
|
);
|
|
}
|
|
|
|
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
sub add_20xslt{
|
|
my $folder=shift;
|
|
my $snippet20=q|<?xml version="1.0"?>
|
|
<!--
|
|
Title: RSS 2.0 XSL Template
|
|
Author: Rich Manalang (http://manalang.com)
|
|
Description: This sample XSLT will convert any valid RSS 2.0 feed to HTML.
|
|
-->
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
|
|
<xsl:output method="html"/>
|
|
<xsl:template match="/">
|
|
<style>
|
|
<xsl:comment>
|
|
.syndication-content-area {
|
|
}
|
|
.syndication-title {
|
|
font-size: 1.1em;
|
|
font-weight: bold;
|
|
}
|
|
.syndication-description {
|
|
font-size: .9em;
|
|
margin: 0 0 10px 0;
|
|
}
|
|
.syndication-list {
|
|
font-size: .8em;
|
|
margin:0 0 0 20px;
|
|
}
|
|
.syndication-list-item {
|
|
margin: 0 0 5px 0;
|
|
}
|
|
li.syndication-list-item{
|
|
padding-bottom: .2em;
|
|
background-color: #e4e4e4;
|
|
}
|
|
.syndication-list-item a,
|
|
.syndication-list-item a:link {
|
|
color: blue;
|
|
}
|
|
.syndication-list-item a:active,
|
|
.syndication-list-item a:hover {
|
|
color: red;
|
|
}
|
|
.syndication-list-item a:visited {
|
|
color: black;
|
|
text-decoration: none;
|
|
}
|
|
.syndication-list-item-date {
|
|
font-size: .8em;
|
|
}
|
|
.syndication-list-item-description {
|
|
font-size: .9em;
|
|
}
|
|
</xsl:comment>
|
|
</style>
|
|
<xsl:apply-templates select="/rss/channel"/>
|
|
</xsl:template>
|
|
<xsl:template match="/rss/channel">
|
|
<div class="syndication-content-area">
|
|
You're viewing an <a href="http://blogs.law.harvard.edu/tech/rss">RSS version 2.0 feed</a>. Please use an RSS feed reader to view this content as intended.
|
|
<div class="syndication-title">
|
|
<xsl:value-of select="title"/>
|
|
</div>
|
|
<div class="syndication-description">
|
|
<xsl:value-of select="description"/>
|
|
</div>
|
|
<ul class="syndication-list">
|
|
<xsl:apply-templates select="item"/>
|
|
</ul>
|
|
|
|
</div>
|
|
</xsl:template>
|
|
<xsl:template match="/rss/channel/item">
|
|
<li class="syndication-list-item">
|
|
<a href="{link}" title="{description}">
|
|
<xsl:value-of select="title"/>
|
|
</a>
|
|
<span class="syndication-list-item-date">
|
|
(<xsl:value-of select="pubDate"/>)
|
|
</span>
|
|
|
|
<div class="syndication-list-item-description">
|
|
<xsl:value-of select="description"/>
|
|
</div>
|
|
</li>
|
|
</xsl:template>
|
|
</xsl:stylesheet>|;
|
|
|
|
my $snippet=$folder->addChild(
|
|
{
|
|
className=>'WebGUI::Asset::Snippet',
|
|
title=>'RSS 2.0 XSLT Stylesheet',
|
|
menuTitle=>'RSS 2.0 XSLT',
|
|
url=>'xslt/rss2.0.xsl',
|
|
mimeType=>'application/xml',
|
|
startDate=>time(),
|
|
endDate=>time()+ 60*60*24*365*10,
|
|
groupEditId=>4,
|
|
groupViewId=>2,
|
|
snippet=>$snippet20
|
|
},'SynConXSLT000000000004'
|
|
);
|
|
}
|
|
|
|
|
|
|