Skip to content

Commit

Permalink
Item12481: working towards 4.0
Browse files Browse the repository at this point in the history
- switch to static content when cover=print
- use print.css in printable view
- fixed DEPENDENCIES
- fixed {SideBar} config param
- added {DeprecateIE10} and {DeprecateIE11} config params
- perltidy



git-svn-id: http://svn.foswiki.org/trunk/NatSkinPlugin@17456 0b4bb1d4-4e5a-0410-9cc4-b2b747904278
  • Loading branch information
MichaelDaum authored and MichaelDaum committed Mar 26, 2014
1 parent 977dd59 commit 81ebf83
Show file tree
Hide file tree
Showing 13 changed files with 317 additions and 264 deletions.
181 changes: 113 additions & 68 deletions lib/Foswiki/Plugins/NatSkinPlugin.pm
@@ -1,6 +1,6 @@
###############################################################################
# NatSkinPlugin.pm - Plugin handler for the NatSkin.
#
#
# Copyright (C) 2003-2014 MichaelDaum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
Expand All @@ -11,7 +11,7 @@
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details, published at
# GNU General Public License for more details, published at
# http://www.gnu.org/copyleft/gpl.html
#
###############################################################################
Expand Down Expand Up @@ -41,73 +41,118 @@ sub initPlugin {
($baseTopic, $baseWeb) = @_;

# theme engine macros
Foswiki::Func::registerTagHandler('SKINSTATE', sub {
return getThemeEngine()->renderSkinState(@_);
});

Foswiki::Func::registerTagHandler('KNOWNSTYLES', sub {
return getThemeEngine()->renderStyles(@_);
});

Foswiki::Func::registerTagHandler('KNOWNVARIATIONS', sub {
return getThemeEngine()->renderVariations(@_);
});
Foswiki::Func::registerTagHandler(
'SKINSTATE',
sub {
return getThemeEngine()->renderSkinState(@_);
}
);

Foswiki::Func::registerTagHandler(
'KNOWNSTYLES',
sub {
return getThemeEngine()->renderStyles(@_);
}
);

Foswiki::Func::registerTagHandler(
'KNOWNVARIATIONS',
sub {
return getThemeEngine()->renderVariations(@_);
}
);

# REVISIONS, MAXREV, CURREV replacements
Foswiki::Func::registerTagHandler('PREVREV', sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getPrevRevision($baseWeb, $baseTopic, 1);
});

Foswiki::Func::registerTagHandler('CURREV', sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getCurRevision($baseWeb, $baseTopic);
});

Foswiki::Func::registerTagHandler('NATMAXREV', sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getMaxRevision($baseWeb, $baseTopic);
});

Foswiki::Func::registerTagHandler('NATREVISIONS', sub {
require Foswiki::Plugins::NatSkinPlugin::Revisions;
return Foswiki::Plugins::NatSkinPlugin::Revisions::render(@_);
});
Foswiki::Func::registerTagHandler(
'PREVREV',
sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getPrevRevision($baseWeb, $baseTopic, 1);
}
);

Foswiki::Func::registerTagHandler(
'CURREV',
sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getCurRevision($baseWeb, $baseTopic);
}
);

Foswiki::Func::registerTagHandler(
'NATMAXREV',
sub {
return Foswiki::Plugins::NatSkinPlugin::Utils::getMaxRevision($baseWeb, $baseTopic);
}
);

Foswiki::Func::registerTagHandler(
'NATREVISIONS',
sub {
require Foswiki::Plugins::NatSkinPlugin::Revisions;
return Foswiki::Plugins::NatSkinPlugin::Revisions::render(@_);
}
);

# skin macros
Foswiki::Func::registerTagHandler('USERACTIONS', sub {
require Foswiki::Plugins::NatSkinPlugin::UserActions;
return Foswiki::Plugins::NatSkinPlugin::UserActions::render(@_);
});

Foswiki::Func::registerTagHandler('NATWEBLOGO', sub {
require Foswiki::Plugins::NatSkinPlugin::WebLogo;
return Foswiki::Plugins::NatSkinPlugin::WebLogo::render(@_);
});

Foswiki::Func::registerTagHandler('NATSTYLEURL', sub {
return getThemeEngine()->getStyleUrl();
});

Foswiki::Func::registerTagHandler('HTMLTITLE', sub {
require Foswiki::Plugins::NatSkinPlugin::HtmlTitle;
return Foswiki::Plugins::NatSkinPlugin::HtmlTitle::render(@_);
});

Foswiki::Func::registerTagHandler('IFSUBSCRIBED', sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::render(@_);
});

Foswiki::Func::registerRESTHandler('subscribe', sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::restSubscribe(@_);
});
Foswiki::Func::registerRESTHandler('unsubscribe', sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::restSubscribe(@_);
});

Foswiki::Func::registerTagHandler('WEBCOMPONENT', sub {
return Foswiki::Plugins::NatSkinPlugin::WebComponent::render(@_);
});
Foswiki::Func::registerTagHandler(
'USERACTIONS',
sub {
require Foswiki::Plugins::NatSkinPlugin::UserActions;
return Foswiki::Plugins::NatSkinPlugin::UserActions::render(@_);
}
);

Foswiki::Func::registerTagHandler(
'NATWEBLOGO',
sub {
require Foswiki::Plugins::NatSkinPlugin::WebLogo;
return Foswiki::Plugins::NatSkinPlugin::WebLogo::render(@_);
}
);

Foswiki::Func::registerTagHandler(
'NATSTYLEURL',
sub {
return getThemeEngine()->getStyleUrl();
}
);

Foswiki::Func::registerTagHandler(
'HTMLTITLE',
sub {
require Foswiki::Plugins::NatSkinPlugin::HtmlTitle;
return Foswiki::Plugins::NatSkinPlugin::HtmlTitle::render(@_);
}
);

Foswiki::Func::registerTagHandler(
'IFSUBSCRIBED',
sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::render(@_);
}
);

Foswiki::Func::registerRESTHandler(
'subscribe',
sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::restSubscribe(@_);
}
);
Foswiki::Func::registerRESTHandler(
'unsubscribe',
sub {
require Foswiki::Plugins::NatSkinPlugin::Subscribe;
return Foswiki::Plugins::NatSkinPlugin::Subscribe::restSubscribe(@_);
}
);

Foswiki::Func::registerTagHandler(
'WEBCOMPONENT',
sub {
return Foswiki::Plugins::NatSkinPlugin::WebComponent::render(@_);
}
);

# init modules
$themeEngine = undef;
Expand All @@ -124,15 +169,15 @@ sub initPlugin {
###############################################################################
sub getThemeEngine {
unless (defined $themeEngine) {
$themeEngine = new Foswiki::Plugins::NatSkinPlugin::ThemeEngine()
$themeEngine = new Foswiki::Plugins::NatSkinPlugin::ThemeEngine();
}

return $themeEngine;
}

###############################################################################
sub postRenderingHandler {
sub postRenderingHandler {

# detect external links
return unless $Foswiki::cfg{NatSkin}{DetectExternalLinks};

Expand Down
17 changes: 13 additions & 4 deletions lib/Foswiki/Plugins/NatSkinPlugin/Config.spec
Expand Up @@ -23,11 +23,11 @@ $Foswiki::cfg{NatSkin}{Layout} = 'fixed';
# Use this flag to switch on/off the horizontal navigation menu.
$Foswiki::cfg{NatSkin}{Menu} = 1;

# **SELECT left,right,both,none**
# **SELECT left,right,both,off**
# This setting configures different vertical layout variations where sidebars either appear left, right or on both sides
# of the main content area. 'None' switches off any skin-driven sidebars. This is useful when columns are designed inside
# of the main content area. 'off' switches off any skin-driven sidebars. This is useful when columns are designed inside
# the content area directly instead of being controlled by the template engine.
$Foswiki::cfg{NatSkin}{SideBar} = 'left';
$Foswiki::cfg{NatSkin}{SideBar} = 'right';

# **STRING**
# This is a list of actions that switch off the sidebar navigation automatically. Note, these are basically known cgi entry
Expand All @@ -37,7 +37,7 @@ $Foswiki::cfg{NatSkin}{NoSideBarActions} = 'edit, manage, login, logon, oops, re
# ---+++ HTML post processing
# **BOOLEAN**
# If switched on, external links will be detected and styled accordingly to give the user visual feedback that this
# link is driving him off the site.
# link is driving him off the site. This is a prerequisite to open external links in an extra borwser window/tab.
$Foswiki::cfg{NatSkin}{DetectExternalLinks} = 0;

# ---+++ Internet Explorer
Expand All @@ -63,5 +63,14 @@ $Foswiki::cfg{NatSkin}{DeprecateIE8} = 1;
# Enable this switch to display a browser warning when an IE9 has been detected.
$Foswiki::cfg{NatSkin}{DeprecateIE9} = 0;

# **BOOLEAN**
# Enable this switch to display a browser warning when an IE10 has been detected.
$Foswiki::cfg{NatSkin}{DeprecateIE10} = 0;

# **BOOLEAN**
# Enable this switch to display a browser warning when an IE11 has been detected.
$Foswiki::cfg{NatSkin}{DeprecateIE11} = 0;


1;

6 changes: 3 additions & 3 deletions lib/Foswiki/Plugins/NatSkinPlugin/DEPENDENCIES
Expand Up @@ -2,17 +2,17 @@ Foswiki::Contrib::FamFamFamContrib,>=2075,perl,Required.
Foswiki::Plugins::AutoTemplatePlugin,>=2.01,perl,Required
Foswiki::Plugins::BreadCrumbsPlugin,>=4318,perl,Required
Foswiki::Plugins::CaptchaPlugin,>=2.0.0,perl,Optional
Foswiki::Plugins::DBCachePlugin,>=1,perl,Optional
Foswiki::Plugins::DBCachePlugin,>=1,perl,Required
Foswiki::Plugins::FilterPlugin,>=3491,perl,Required
Foswiki::Plugins::FlexWebListPlugin,>=3493,perl,Required
Foswiki::Plugins::ImagePlugin,>=2.40,perl,Required
Foswiki::Plugins::ImagePlugin,>=6307,perl,Optional
Foswiki::Plugins::ImagePlugin,>=6307,perl,Required
Foswiki::Plugins::JQueryPlugin,>=4.91,perl,Required
Foswiki::Plugins::MimeIconPlugin,>=1,perl,Required
Foswiki::Plugins::NatEditPlugin,>=1993,perl,Required
Foswiki::Plugins::RenderPlugin,>=3644,perl,Required
Foswiki::Plugins::PageOptimizerPlugin,>=0.10,perl,Optional
Foswiki::Plugins::TopicInteractionPlugin,>=1340,perl,Required
Foswiki::Plugins::WebLinkPlugin,>=1,perl,Optional
Foswiki::Plugins::WebLinkPlugin,>=1,perl,Required
ONLYIF ( $Foswiki::Plugins::VERSION < 2.1)
Foswiki::Plugins::ZonePlugin,>=3.1,perl,Required. required for Foswiki < 1.1
20 changes: 9 additions & 11 deletions lib/Foswiki/Plugins/NatSkinPlugin/ExternalLink.pm
@@ -1,6 +1,6 @@
###############################################################################
# NatSkinPlugin.pm - Plugin handler for the NatSkin.
#
#
# Copyright (C) 2003-2014 MichaelDaum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
Expand All @@ -11,7 +11,7 @@
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details, published at
# GNU General Public License for more details, published at
# http://www.gnu.org/copyleft/gpl.html
#
###############################################################################
Expand All @@ -27,25 +27,23 @@ sub render {
my ($thePrefix, $theUrl) = @_;

my $addClass = 0;
my $text = $thePrefix.$theUrl;
my $text = $thePrefix . $theUrl;
my $urlHost = Foswiki::Func::getUrlHost();
my $httpsUrlHost = $urlHost;
$httpsUrlHost =~ s/^http:\/\//https:\/\//go;

$theUrl =~ /^http/i && ($addClass = 1); # only for http and hhtps
$theUrl =~ /^$urlHost/i && ($addClass = 0); # not for own host
$theUrl =~ /^$httpsUrlHost/i && ($addClass = 0); # not for own host
$thePrefix =~ /class="[^"]*\bnop\b/ && ($addClass = 0); # prevent adding it
$thePrefix =~ /class="natExternalLink"/ && ($addClass = 0); # prevent adding it twice
$theUrl =~ /^http/i && ($addClass = 1); # only for http and hhtps
$theUrl =~ /^$urlHost/i && ($addClass = 0); # not for own host
$theUrl =~ /^$httpsUrlHost/i && ($addClass = 0); # not for own host
$thePrefix =~ /class=/ && ($addClass = 0); # prevent adding it

if ($addClass) {
#writeDebug("called renderExternalLink($thePrefix, $theUrl)");
#Foswiki::Func::writeDebug("called renderExternalLink: prefix=$thePrefix url=$theUrl");
$text = "class='natExternalLink' $thePrefix$theUrl";
#writeDebug("text=$text");
#Foswiki::Func::writeDebug("text=$text");
}

return $text;
}


1;
14 changes: 7 additions & 7 deletions lib/Foswiki/Plugins/NatSkinPlugin/HtmlTitle.pm
@@ -1,6 +1,6 @@
###############################################################################
# NatSkinPlugin.pm - Plugin handler for the NatSkin.
#
#
# Copyright (C) 2003-2014 MichaelDaum http://michaeldaumconsulting.com
#
# This program is free software; you can redistribute it and/or
Expand All @@ -11,7 +11,7 @@
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details, published at
# GNU General Public License for more details, published at
# http://www.gnu.org/copyleft/gpl.html
#
###############################################################################
Expand All @@ -30,11 +30,11 @@ sub render {

if ($theWikiToolName eq 'on') {
$theWikiToolName = Foswiki::Func::getPreferencesValue("WIKITOOLNAME") || 'Wiki';
$theWikiToolName = $theSep.$theWikiToolName;
$theWikiToolName = $theSep . $theWikiToolName;
} elsif ($theWikiToolName eq 'off') {
$theWikiToolName = '';
} else {
$theWikiToolName = $theSep.$theWikiToolName;
$theWikiToolName = $theSep . $theWikiToolName;
}

my $theFormat = $params->{_DEFAULT};
Expand Down Expand Up @@ -69,7 +69,7 @@ sub getTopicTitle {
#print STDERR "using DBCachePlugin\n";
require Foswiki::Plugins::DBCachePlugin;
return Foswiki::Plugins::DBCachePlugin::getTopicTitle($web, $topic);
}
}

#print STDERR "using foswiki core means\n";

Expand All @@ -92,7 +92,7 @@ sub getTopicTitle {
}

# read the preference
unless ($title) {
unless ($title) {
Foswiki::Func::pushTopicContext($web, $topic);
$title = Foswiki::Func::getPreferencesValue('TOPICTITLE');
Foswiki::Func::popTopicContext();
Expand All @@ -105,7 +105,7 @@ sub getTopicTitle {
$title =~ s/^\s*//;

return $title;
}
}

1;

0 comments on commit 81ebf83

Please sign in to comment.