LEMONLDAP::NG : * Liberty alliance module from FederID project

* Debian integration in progress
This commit is contained in:
Xavier Guimard 2007-10-15 05:29:29 +00:00
parent a6077277ad
commit 291c567950
72 changed files with 3164 additions and 133 deletions

View File

@ -1,3 +1,9 @@
lemonldap-ng (0.9) unstable; urgency=low
* Liberty Alliance module issued of the FederID project is now included.
-- Xavier Guimard <x.guimard@free.fr> Sun, 14 Oct 2007 12:02:33 +0200
lemonldap-ng (0.8.3) unstable; urgency=high
* Syntax errors in configuration are now displayed

View File

@ -0,0 +1,5 @@
lemonldap-ng (0.8.3-0) unstable; urgency=low
* Local build
-- Xavier Guimard <x.guimard@free.fr> Sun, 14 Oct 2007 09:11:36 +0200

View File

@ -55,8 +55,7 @@ Description: Lemonldap::NG apache manager part
Package: liblemonldap-ng-portal-perl
Architecture: all
Depends: libapache-session-perl, libnet-ldap-perl, liblemonldap-ng-conf-perl (>=0.8.2.3)
Recommends: liblasso-perl
Depends: libapache-session-perl, libnet-ldap-perl, liblemonldap-ng-conf-perl (>=0.8.2.3), liblasso-perl
Description: Lemonldap::NG apache authentication portal part
Lemonldap::NG is a complete Web-SSO system that can run with reverse-proxies
or directly on application apache servers.

View File

@ -6,13 +6,12 @@ Copyright:
Copyright 2004, 2005, 2006 by Xavier Guimard
Licence:
Lemonldap::NG is distributed under your choice of the GNU General Public
License or the Artistic License. On Debian GNU/Linux systems, the copyright
terms for Perl itself are located in `/usr/share/doc/perl/copyright'. On Debian
GNU/Linux systems, the complete text of the GNU General Public License version
2 can be found in `/usr/share/common-licenses/GPL' and the Artistic Licence in
`/usr/share/common-licenses/Artistic'.
Lemonldap::NG is distributed under your choice under the GNU General Public
License or the Artistic License.
On Debian GNU/Linux systems, the complete text of the GNU General Public
License version 2 can be found in `/usr/share/common-licenses/GPL' and the
Artistic Licence in `/usr/share/common-licenses/Artistic'.
File lemonldap-ng-manager/example/lemonldap-ng-manager.js is distributed under
GNU General Public License version 2.

View File

@ -67,7 +67,7 @@ binary-indep: build install
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs changelogs
dh_installchangelogs changelog
dh_installdocs
mkdir debian/tmp/var/lib/lemonldap-ng/protected
cp _example/index.pl debian/tmp/var/lib/lemonldap-ng/protected

View File

@ -1,4 +1,67 @@
Changes
example/AuthLA/idps.xml
example/AuthLA/index.pl
example/AuthLA/la.log
example/AuthLA/liberty/assertionConsumer.pl
example/AuthLA/liberty/federationTermination.pl
example/AuthLA/liberty/federationTerminationReturn.pl
example/AuthLA/liberty/singleLogout.pl
example/AuthLA/liberty/singleLogoutReturn.pl
example/AuthLA/liberty/soapCall.pl
example/AuthLA/liberty/soapEndpoint.pl
example/AuthLA/ressources/db/liberty_tables.sql
example/AuthLA/ressources/db/taccounts.sql
example/AuthLA/ressources/db/tnameid.sql
example/AuthLA/ressources/db/tsessions.sql
example/AuthLA/ressources/lemonsp-metadata.xml
example/AuthLA/tpl/auth.tpl
example/AuthLA/tpl/themes/bouton_authentic.png
example/AuthLA/tpl/themes/bouton_federid.png
example/AuthLA/tpl/themes/bouton_interldap.png
example/AuthLA/tpl/themes/bouton_lemonldap::ng.png
example/AuthLA/tpl/themes/CHANGELOG
example/AuthLA/tpl/themes/dc2/button-hover.png
example/AuthLA/tpl/themes/dc2/button-normal.png
example/AuthLA/tpl/themes/dc2/default.css
example/AuthLA/tpl/themes/dc2/dotclear-logo.png
example/AuthLA/tpl/themes/dc2/drag.png
example/AuthLA/tpl/themes/dc2/head-bg.png
example/AuthLA/tpl/themes/dc2/head-logo.png
example/AuthLA/tpl/themes/dc2/magnifier.png
example/AuthLA/tpl/themes/dc2/msg-error.png
example/AuthLA/tpl/themes/dc2/msg-std.png
example/AuthLA/tpl/themes/dc2/page-bg.png
example/AuthLA/tpl/themes/dc2/tab-bg.png
example/AuthLA/tpl/themes/dc2/tab-c-l.png
example/AuthLA/tpl/themes/dc2/tab-c-r.png
example/AuthLA/tpl/themes/dc2/tab-l-l.png
example/AuthLA/tpl/themes/dc2/tab-l-r.png
example/AuthLA/tpl/themes/dc2/tab-n-l.png
example/AuthLA/tpl/themes/dc2/tab-n-r.png
example/AuthLA/tpl/themes/federid-dc2/button-hover.png
example/AuthLA/tpl/themes/federid-dc2/button-normal.png
example/AuthLA/tpl/themes/federid-dc2/default.css
example/AuthLA/tpl/themes/federid-dc2/head-bg.png
example/AuthLA/tpl/themes/federid-dc2/head-logo.png
example/AuthLA/tpl/themes/federid-dc2/msg-error.png
example/AuthLA/tpl/themes/federid-dc2/msg-std.png
example/AuthLA/tpl/themes/federid-dc2/page-bg.png
example/AuthLA/tpl/themes/federid/button-hover.png
example/AuthLA/tpl/themes/federid/button-normal.png
example/AuthLA/tpl/themes/federid/default.css
example/AuthLA/tpl/themes/federid/fond.jpg
example/AuthLA/tpl/themes/federid/head-bg.png
example/AuthLA/tpl/themes/federid/head-logo.png
example/AuthLA/tpl/themes/federid/idp.css
example/AuthLA/tpl/themes/federid/laap.css
example/AuthLA/tpl/themes/federid/msg-error.png
example/AuthLA/tpl/themes/federid/msg-std.png
example/AuthLA/tpl/themes/federid/page-bg.png
example/AuthLA/tpl/themes/federid/sso.css
example/AuthLA/tpl/themes/federid/wui.css
example/AuthLA/tpl/themes/README
example/AuthLA/tpl/themes/styleswitcher.js
example/AuthLA/tpl/themes/template.html
example/index.pl
example/scripts/purgeCentralCache
example/scripts/purgeCentralCache.cron.d

View File

@ -0,0 +1,15 @@
<laIdpList>
<idp name="Identity Provider 1 : Authentic">
<url>http://idp1/liberty/metadata</url>
<metadata>/path/to/idp1-metadata.xml</metadata>
<pubkey>/path/to/idp1-key-public.pem</pubkey>
<certificate>/path/to/idp1-key-public.pem</certificate>
</idp>
<idp name="Identity Provider 2 : Other">
<url>http://idp2/liberty/metadata</url>
<metadata>/path/to/idp2-metadata.xml</metadata>
<pubkey>/path/to/idp2-key-public.pem</pubkey>
<certificate>/path/to/idp2-key-public.pem</certificate>
</idp>
</laIdpList>

View File

@ -0,0 +1,70 @@
#!/usr/bin/perl
use strict ;
use warnings ;
use HTML::Template ;
use Lemonldap::NG::Portal::AuthLA;
my $portal = Lemonldap::NG::Portal::AuthLA->new({
configStorage => {
type => 'File' ,
dirName => '/var/lib/lemonldap-ng/config' ,
} ,
# Liberty Parameters
laSp => {
certificate => '/var/lib/lemonldap-ng/web/portal/ressources/lemonsp-key-public.pem' ,
metadata => '/var/lib/lemonldap-ng/web/portal/ressources/lemonsp-metadata.xml' ,
privkey => '/var/lib/lemonldap-ng/web/portal/ressources/lemonsp-key-private.pem' ,
secretkey => '/var/lib/lemonldap-ng/web/portal/ressources/lemonsp-key-private.pem' ,
} ,
laIdpsFile => '/var/lib/lemonldap-ng/web/portal/idps.xml' ,
laStorage => 'Apache::Session::File',
laStorageOptions => {
Directory => '/var/lib/lemonldap-ng/var/assertion' ,
LockDirectory => '/var/lib/lemonldap-ng/var/lock' ,
} ,
laDebug => 1 ,
laLdapLoginAttribute => 'uid' ,
# Parameters that permit to access lemonldap::NG::Handler local cache
localStorage => 'Cache::FileCache' ,
localStorageOptions => {} ,
});
if( $portal->process() ) {
# Print protected URLs
print $portal->header ;
print "<a href=\"http://$_\"> $_</a><br/>"
foreach ($portal->getProtectedURLs) ;
} else {
# Retrieve IDP list.
my @idps = () ;
foreach ($portal->getIdpIDs) {
my %row_data ;
$row_data{IDPNAME} = $_ ;
push (@idps, \%row_data) ;
}
@idps = sort {$a cmp $b} @idps ;
# Print template
print $portal->header ;
my $template = HTML::Template->new( filename => '/var/lib/lemonldap-ng/web/portal/tpl/auth.tpl' ) ;
$template->param( AUTH_ERROR => $portal->error ) ;
$template->param( AUTH_URL => $portal->param('url') ) ;
$template->param( AUTH_IDPS => \@idps ) ;
print $template->output ;
}

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../index.pl

View File

@ -0,0 +1 @@
../tpl

View File

@ -0,0 +1,37 @@
create table taccounts
(
id_account int NOT NULL AUTO_INCREMENT,
uid blob NOT NULL,
identity_dump blob NOT NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_account),
primary key (id_account)
);
create table tnameid
(
id_nameid int NOT NULL AUTO_INCREMENT,
nameid varchar(100) NOT NULL,
id_account int NOT NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_nameid),
primary key (id_nameid)
);
create table tsessions
(
id_session int NOT NULL AUTO_INCREMENT,
session_nb blob NOT NULL,
id_account int NOT NULL,
id_nameid int NOT NULL,
session_dump blob NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_session),
primary key (id_session)
);

View File

@ -0,0 +1,11 @@
create table taccounts
(
id_account int NOT NULL AUTO_INCREMENT,
uid blob NOT NULL,
identity_dump blob NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_account),
primary key (id_account)
);

View File

@ -0,0 +1,12 @@
create table tnameid
(
id_nameid int NOT NULL AUTO_INCREMENT,
nameid varchar(100) NOT NULL,
id_account int NOT NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_nameid),
primary key (id_nameid)
);

View File

@ -0,0 +1,14 @@
create table tsessions
(
id_session int NOT NULL AUTO_INCREMENT,
session_nb blob NOT NULL,
id_account int NOT NULL,
id_nameid int NOT NULL,
session_dump blob NULL,
timestamp TIMESTAMP,
divers blob NULL,
unique index (id_session),
primary key (id_session)
);

View File

@ -0,0 +1,51 @@
<?xml version="1.0"?>
<EntityDescriptor
providerID="http://auth.example.com"
xmlns="urn:liberty:metadata:2003-08">
<SPDescriptor protocolSupportEnumeration="urn:liberty:iff:2003-08">
<AssertionConsumerServiceURL id="AssertionConsumerServiceURL1" isDefault="true">http://auth.example.com/liberty/assertionConsumer.pl</AssertionConsumerServiceURL>
<SingleLogoutServiceURL>http://auth.example.com/liberty/singleLogout.pl</SingleLogoutServiceURL>
<SingleLogoutServiceReturnURL>http://auth.example.com/liberty/singleLogoutReturn.pl</SingleLogoutServiceReturnURL>
<SingleLogoutProtocolProfile>http://projectliberty.org/profiles/slo-idp-soap</SingleLogoutProtocolProfile>
<SingleLogoutProtocolProfile>http://projectliberty.org/profiles/slo-idp-http</SingleLogoutProtocolProfile>
<SingleLogoutProtocolProfile>http://projectliberty.org/profiles/slo-sp-soap</SingleLogoutProtocolProfile>
<SingleLogoutProtocolProfile>http://projectliberty.org/profiles/slo-sp-http</SingleLogoutProtocolProfile>
<FederationTerminationServiceURL>http://auth.example.com/liberty/federationTermination.pl</FederationTerminationServiceURL>
<FederationTerminationServiceReturnURL>http://auth.example.com/liberty/federationTerminationReturn.pl</FederationTerminationServiceReturnURL>
<FederationTerminationNotificationProtocolProfile>http://projectliberty.org/profiles/fedterm-idp-soap</FederationTerminationNotificationProtocolProfile>
<FederationTerminationNotificationProtocolProfile>http://projectliberty.org/profiles/fedterm-idp-http</FederationTerminationNotificationProtocolProfile>
<FederationTerminationNotificationProtocolProfile>http://projectliberty.org/profiles/fedterm-sp-soap</FederationTerminationNotificationProtocolProfile>
<FederationTerminationNotificationProtocolProfile>http://projectliberty.org/profiles/fedterm-sp-http</FederationTerminationNotificationProtocolProfile>
<!--
<RegisterNameIdentifierServiceURL>https://sp1.lasso.lan:2006/registerNameIdentifier</RegisterNameIdentifierServiceURL>
<RegisterNameIdentifierServiceReturnURL>https://sp1.lasso.lan:2006/registerNameIdentifierReturn</RegisterNameIdentifierServiceReturnURL>
<RegisterNameIdentifierProtocolProfile>http://projectliberty.org/profiles/rni-idp-soap</RegisterNameIdentifierProtocolProfile>
<RegisterNameIdentifierProtocolProfile>http://projectliberty.org/profiles/rni-idp-http</RegisterNameIdentifierProtocolProfile>
<RegisterNameIdentifierProtocolProfile>http://projectliberty.org/profiles/rni-sp-soap</RegisterNameIdentifierProtocolProfile>
<RegisterNameIdentifierProtocolProfile>http://projectliberty.org/profiles/rni-sp-http</RegisterNameIdentifierProtocolProfile>
-->
<SoapEndpoint>http://auth.example.com/liberty/soapEndpoint.pl</SoapEndpoint>
<AuthnRequestsSigned>true</AuthnRequestsSigned>
</SPDescriptor>
<Organization>
<OrganizationName>Lemonldap-NG Service Provider</OrganizationName>
<OrganizationDisplayName xml:lang="en">Lemonldap-NG Service Provider</OrganizationDisplayName>
<OrganizationURL xml:lang="en">http://auth.example.com/</OrganizationURL>
</Organization>
</EntityDescriptor>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>LemonLDAP::NG Portal - Authentication</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" type="text/css" href="tpl/themes/federid/sso.css" title="FederID"/>
</head>
<body>
<div id="page">
<div id="top"><h1>&nbsp;</h1></div>
<div id="info-box"><h1>FederID WebSSO</h1><p>LemonLDAP::NG Portal - Authentication</p></div>
<div id="content">
<form method="post">
<div class="error"><p><TMPL_VAR NAME="AUTH_ERROR"></p></div>
<input type="hidden" name="url" value="<TMPL_VAR NAME="AUTH_URL">" />
<fieldset><legend>Authentication on this service (no Identity federation)</legend>
<label class="required">Login</label>
<TMPL_IF NAME="AUTH_USER">
<input type="hidden" name="user" value="<TMPL_VAR NAME="AUTH_USER">" />
<TMPL_VAR NAME="AUTH_USER"><br />
<TMPL_ELSE>
<input name="user" size="30" /><br />
</TMPL_IF>
<label class="required">Password</label>
<input name="password" type="password" autocomplete="off" size="30" /></td>
</fieldset>
<fieldset><legend>Liberty Alliance authentication</legend>
<select name="idpChoice">
<option value="null">Selection d'un IDP</option>
<TMPL_LOOP NAME="AUTH_IDPS">
<option value="<TMPL_VAR NAME="IDPNAME">"><TMPL_VAR NAME="IDPNAME"></option>
</TMPL_LOOP>
</select>
</fieldset>
<fieldset><legend>Submit your choice</legend>
<input type="submit" name="submit" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</fieldset>
</form>
</body>
</html>

View File

@ -0,0 +1,11 @@
- 22/O7/2007 - Clement OUDOT :
* Remove old skins
* Create alternatives for all FederID components, based on specifc colors
- 20/07/2007 - Clement OUDOT:
* Modifiy layout -> template.html
* Import DotClear 2 admin theme
* Build a first FederID theme based upon DC2 admin
* Build a real FederID theme
- 08/07/2007 - Clement OUDOT :
* Import default theme from Authentic project, based on DotClear 2 theme
* Create sample test page

View File

@ -0,0 +1,13 @@
================================================================================
README
================================================================================
These are the themes for FederID project. The goal is to provide to all FederID
components the same Look 'n Feel.
Each theme has its own directory (eg. default/) and can have alternatives.
A sample page test (template.html) must be modified to allow switching between
the themes that are created.
You can use this page locally to test your theme.

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

View File

@ -0,0 +1,731 @@
body {
font: 62.5%/1.5em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
color : #000;
background : #fff url(page-bg.png) repeat-y top left;
margin : 0;
padding : 0;
}
body.auth {
background-image: none;
}
body.install #content {
margin-top: 1em;
font-size: 1.1em;
}
a img,:link img,:visited img { border:none }
a, a:link, a:visited {
color : #06c;
text-decoration : none;
border-bottom : 1px dotted #f90;
}
a:hover, a:active, a:focus {
}
h1, h2, h3, h4, h5, h6, p {
margin-top : 0;
margin-bottom: 0.6em;
}
h2 {
font-family : Arial,Helvetica,sans-serif;
color : #069;
font-size : 1.4em;
}
h3 {
color : #333;
font-size : 1.2em;
}
p, div.p {
margin : 0 0 1em 0;
}
hr {
height : 1px;
border-width : 1px 0 0 0;
border-color : #999;
border-style : solid;
}
pre, code {
font: 100% "Andale Mono","Courier New",monospace;
}
/* LAYOUT
-------------------------------------------------------- */
/* General font-size */
#top, #info-box, #main, #main-menu, #footer {
font-size: 1.1em;
}
#top {
margin : 0;
padding : 0;
background : transparent url(head-bg.png) repeat-x;
}
#top h1 {
padding : 0;
margin : 0;
height : 58px;
text-indent : -1000px;
background : transparent url(head-logo.png) no-repeat 0 0;
}
#top h1 a {
position: absolute;
top: 3px;
left: 0;
width: 170px;
height: 35px;
border: none;
}
#info-box {
position : absolute;
right : 20px;
top : 6px;
margin : 0;
padding : 3px 3px 4px 15px;
}
#info-box div {
margin: 0; padding: 0;
}
#info-box div div {
display: inline;
}
#info-box select {
width : 160px;
}
#info-box a {
font-weight : bold;
}
#main {
width : 100%;
float : right;
margin-left : -155px;
margin-top : 0;
}
#content {
margin-left : 155px;
margin-bottom : 10px;
padding-top : 1px;
margin-right : 15px;
}
#main-menu {
width : 135px;
float : left;
margin-top : 0;
margin-bottom : 10px;
}
#main-menu h3 {
margin : 0;
padding : 0 0 0 5px;
}
#main-menu ul {
margin : 0 0 1em 0;
padding : 0;
list-style : none;
}
#main-menu li {
display : block;
margin : 0.5em 0 0 5px;
padding : 2px 0 1px 20px;
background-repeat: no-repeat;
background-position: 0 0;
}
#main-menu a {
font-weight : bold;
}
#main-menu .active a {
border-bottom-style: solid;
}
#default-blog {
position: absolute;
top: 58px;
right: 30px;
height: 1.5em;
font-size : 140%;
font-weight: bold;
}
#footer {
clear : both;
padding : 3px 5px 0 25px;
}
#footer a {
border: none;
}
#debug {
position: absolute;
top: 0;
width: 100%;
height: 4px;
background: #d99;
}
#debug div {
display: none;
padding: 3px 0.5em 2px;
}
#debug p {
margin : 0.5em 0;
}
#debug:hover {
height: auto;
}
#debug:hover div {
display: block;
}
/* DASHBOARD */
#dashboard {
font-size: 120%;
padding-top: 2em;
clear: left;
}
#dashboard p img {
vertical-align: middle;
}
#dashboard ul {
display: block;
margin: 0;
padding-left: 1.5em;
list-style: square;
}
#dashboard li {
margin: 0.25em 0 0 0;
color: #666;
}
#dashboard-icons p {
float: left;
width: 32%;
text-align: center;
margin: 2em 0 0 0;
}
#dashboard-icons span {
display: block;
}
#dashboard-icons a {
border-bottom-width: 0;
}
#dashboard-icons span a {
border-bottom-width: 1px;
}
/* POST */
#entry-sidebar {
width : 200px;
float : right;
}
#entry-content {
margin-right : 220px;
}
#comments {
clear : both;
}
/* MEDIA */
#media-icon {
float: left;
}
#media-details {
margin-left: 70px;
}
#media-details ul {
display: block;
margin-left: 0;
padding: 0;
}
#media-details li {
list-style: square inside;
margin: 0;
padding: 0;
}
#media-original-image {
overflow: auto;
}
#media-original-image.overheight {
height: 500px;
}
#add-file-f {
position: relative;
}
#add-file-f .more-file {
position:absolute;
right: 0.5em;
background: #999;
color: #fff;
border: none;
}
/* POPUP */
body.popup {
background-position : -120px 0;
}
body.popup #top h1 {
background-position : -120px 0;
}
body.popup #main {
margin-left : -35px;
}
body.popup #content {
margin-left : 35px;
}
body.popup #footer {
clear : both;
padding-top : 20px;
padding-left : 35px;
}
/* CLASSES
-------------------------------------------------------- */
a.help-link {
border: none;
}
.help-content dt {
font-weight: bold;
color: #666;
margin: 0;
}
.help-content dd {
margin: 0.3em 0 1.5em 0;
}
.clear {
clear : both;
}
.lclear {
clear : left;
}
div.clearer {
height : 1px;
font-size : 1px;
}
.hide {
display : none;
}
.right {
text-align : right;
}
.frame-shrink {
border: 1px solid #666;
padding: 0.5em;
margin-bottom: 1em;
height: 120px;
overflow: auto;
}
div.error {
border : 2px solid #c00;
padding : 0.5em 0.5em 0.5em 40px;
margin-bottom : 1em;
background : transparent url(msg-error.png) no-repeat 5px 50%;
}
.line p {
margin : 0;
}
.message, .static-msg {
font-weight : bold;
color : #f60;
padding : 0.5em 0.5em 0.5em 40px;
border : 1px solid #ccc;
background : transparent url(msg-std.png) no-repeat 5px 50%;
}
.offline {
color : #666;
}
ul.nice {
margin: 1em 0;
padding: 0 0 0 2em;
list-style: square;
}
ul.nice li {
margin:0;
padding: 0;
}
.three-cols {
}
.three-cols .col {
width : 32.3%;
float : left;
margin-left : 1%;
}
.three-cols .col:first-child {
width : 33.3%;
margin-left : 0;
}
.two-cols {
position : static;
}
.two-cols .col {
width : 49%;
margin-left : 1%;
float : left;
}
.two-cols .col:first-child {
width : 50%;
margin-left : 0;
}
.comment {
border-top : 2px solid #ccc;
margin-bottom : 1em;
padding : 2em 0 1em 0;
position : relative;
}
.comment form p {
margin : 0;
position : absolute;
top : 2px;
right : 0;
}
.part-tabs {
float: left;
width: 100%;
background: transparent url(tab-bg.png) repeat-x bottom;
margin-bottom: 2em;
}
.part-tabs ul {
margin: 0;
padding: 10px 10px 0;
list-style: none;
}
.part-tabs li {
float: left;
background: transparent url(tab-n-l.png) no-repeat top left;
margin: 0 3px 0 0;
padding: 0 0 0 5px;
}
.part-tabs a {
display: block;
background: transparent url(tab-n-r.png) no-repeat top right;
padding: 1px 10px 1px 5px;
border: none;
}
.part-tabs li.part-tabs-active {
background-image: url(tab-c-l.png);
}
.part-tabs li.part-tabs-active a {
background-image: url(tab-c-r.png);
padding-bottom: 2px;
font-weight : bold;
}
.part-tabs li.part-tabs-link {
background-image: url(tab-l-l.png);
}
.part-tabs li.part-tabs-link a {
background-image: url(tab-l-r.png);
}
.screenshot {
width: 250px;
float: left;
margin-left: 10px;
}
.screenshot img {
border : 1px solid #333;
}
.screenshot p {
font-size: 0.9em;
}
.media-list {
position : static;
}
.media-col-0 {
clear: left;
}
.media-item {
position: relative;
border-top: 1px solid #ccc;
margin-bottom: 1em;
padding: 5px 0;
}
div.media-list .media-item {
width: 49%;
float: left;
margin-right: 1%;
}
a.media-icon {
display: block;
border-bottom: none;
float: left;
}
.media-icon img {
display: block;
}
.media-item ul {
display: block;
list-style: none;
margin: 0 0 0 60px;
padding: 0;
}
li.media-action {
display: block;
position: absolute;
top: 5px;
right: 5px;
height: 16px;
}
li.media-action a {
border: none;
}
li.media-action form {
display: inline;
}
li.media-action input {
border: none;
}
select.l10n option {
padding-left: 16px;
}
option.avail10n {
background: transparent url(../images/check-on.png) no-repeat 0 50%;
}
/* TABLES
-------------------------------------------------------- */
table {
font-size : 1em;
border-collapse : collapse;
margin : 0 0 1em 0;
}
tr.line:hover {
background : #ddd;
}
th, td {
border-width : 0 0 1px 0;
border-style : solid;
border-color : #ccc;
padding : 2px 5px;
vertical-align : top;
}
th {
text-align : left;
border-bottom-color : #666;
}
.noborder td, td.noborder, .noborder th, th.noborder {
border-width : 0;
}
table .maximal, table.maximal {
width : 100%;
}
table .minimal {
width : 1px;
}
table .nowrap {
white-space : nowrap;
}
td.status {
vertical-align: middle;
}
td.status img {
margin-bottom: -2px;
}
td.status a {
border: none;
}
tr.line img.expand {
margin-right: 10px;
margin-bottom: -2px;
}
tr.expand td {
border-bottom: none;
}
td.expand {
padding: 1em;
}
.dragable {
border-collapse: separate;
}
.dragable tbody td {
}
.handle {
padding : 0;
}
.handler {
cursor : move;
background : transparent url(drag.png) no-repeat 0 50%;
padding-left : 15px;
}
/* FORMS
-------------------------------------------------------- */
form {
display : block;
margin : 0;
padding : 0;
}
fieldset {
display : block;
margin : 0 0 1em 0;
padding : 1em 0.5em;
border-width : 1px 0;
border-style: solid;
border-color: #ccc;
background: #fbfbfb;
}
legend {
font-weight : bold;
padding: 0.2em 0.6em;
border-width: 1px;
border-style: solid;
border-color: #ccc;
background: #fbfbfb;
}
optgroup {
font-weight : bold;
font-style : normal;
}
option {
font-weight : normal;
}
input, textarea, select {
background : #f9f9f9;
border-width : 1px;
border-style : solid;
border-color : #000 #ccc #ccc #000;
}
input, textarea, select, option {
font: 1em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
}
input[type=text], input[type=password], textarea {
padding : 2px 0;
}
input[type=checkbox], input[type=radio] {
border: none;
}
textarea {
padding : 2px 0;
}
/*input[type=text]:focus, input[type=password]:focus, textarea:focus, option {
background : #dfdcc7;
} can't select text with opera */
input[type=submit], input[type=reset], input[type=button] {
padding : 1px 2px;
background : #d2e0e6 url(button-normal.png) repeat-x bottom left;
border-width : 1px;
border-style : outset;
border-color : #ccc;
}
input[type=submit]:hover, input[type=reset]:hover, input[type=button]:hover {
background-color : #fc3;
background-image : url(button-hover.png);
}
input[type=submit] {
font-weight : bold;
}
input[type=checkbox], input[type=radio] {
margin : 0;
padding : 0;
background : transparent;
}
label {
display : block;
}
label input, label select, label span {
display : block;
}
p.form-note {
margin-top : -1em;
color : #f60;
}
label.classic {
display : inline;
}
label.classic input, label span input, label.classic select, label span select {
display : inline;
}
label.area, p.area {
width: inherit !important;
margin-right : 6px !important;
}
.area textarea {
display : block;
width : 100%;
}
label.required {
font-weight : bold;
}
label.required:before {
content : '* ';
color : #c00;
}
label .maximal, textarea.maximal, input.maximal {
width : 100%;
}
a.form-control {
display : none;
font-weight: bold;
background: url(magnifier.png) no-repeat 0 0;
color: green;
padding-left: 20px;
}
fieldset.constrained {
margin: 0;
padding: 0;
border: none;
background: transparent;
}
#login-screen {
display: block;
width : 180px;
margin : 30px auto 0;
font-size: 1.1em;
}
#login-screen h1 {
text-indent: -2000px;
background: transparent url(dotclear-logo.png) no-repeat top left;
height: 25px;
}
#login-screen fieldset {
border: 1px solid #999;
padding: 1em 10px;
}
#login-screen input[type=text], #login-screen input[type=password] {
width: 100%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

View File

@ -0,0 +1,252 @@
body {
font: 62.5%/1.5em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
color : #000;
background : #fff url(page-bg.png) repeat-y top left;
margin : 0;
padding : 0;
}
a img,:link img,:visited img { border:none }
a, a:link, a:visited {
color : #06c;
text-decoration : none;
border-bottom : 1px dotted #f90;
}
a:hover, a:active, a:focus {
}
h1, h2, h3, h4, h5, h6, p {
margin-top : 0;
margin-bottom: 0.6em;
}
h2 {
font-family : Arial,Helvetica,sans-serif;
color : #069;
font-size : 1.4em;
}
h3 {
color : #333;
font-size : 1.2em;
}
p, div.p {
margin : 0 0 1em 0;
}
hr {
height : 1px;
border-width : 1px 0 0 0;
border-color : #999;
border-style : solid;
}
pre, code {
font: 100% "Andale Mono","Courier New",monospace;
}
/* LAYOUT
-------------------------------------------------------- */
/* General font-size */
#top, #info-box, #content, #main-menu, #footer {
font-size: 1.1em;
}
#top {
margin : 0;
padding : 0;
background : transparent url(head-bg.png) repeat-x;
}
#top h1 {
padding : 0;
margin : 0;
height : 58px;
text-indent : -1000px;
background : transparent url(head-logo.png) no-repeat 0 0;
}
#info-box {
position : absolute;
right : 20px;
top : 6px;
margin : 0;
padding : 3px 3px 4px 15px;
}
#main-menu {
width : 135px;
float : left;
margin-top : 0;
margin-bottom : 10px;
}
#main-menu h3 {
margin : 0;
padding : 0 0 0 5px;
}
#main-menu ul {
margin : 0 0 1em 0;
padding : 0;
list-style : none;
}
#main-menu li {
display : block;
margin : 0.5em 0 0 5px;
padding : 2px 0 1px 20px;
background-repeat: no-repeat;
background-position: 0 0;
}
#main-menu a {
font-weight : bold;
}
#main-menu .active a {
border-bottom-style: solid;
}
#content {
margin-left : 155px;
margin-bottom : 10px;
padding-top : 1px;
margin-right : 15px;
}
#footer {
clear : both;
padding : 3px 5px 0 25px;
}
#footer a {
border: none;
}
/* CLASSES
-------------------------------------------------------- */
.error {
border : 2px solid #c00;
padding : 0.5em 0.5em 0.5em 40px;
margin-bottom : 1em;
background : transparent url(msg-error.png) no-repeat 5px 50%;
}
.message {
font-weight : bold;
color : #f60;
padding : 0.5em 0.5em 0.5em 40px;
border : 1px solid #ccc;
background : transparent url(msg-std.png) no-repeat 5px 50%;
}
/* TABLES
-------------------------------------------------------- */
table {
font-size : 1em;
border-collapse : collapse;
margin : 0 0 1em 0;
}
tr.line:hover {
background : #ddd;
}
th, td {
border-width : 0 0 1px 0;
border-style : solid;
border-color : #ccc;
padding : 2px 5px;
vertical-align : top;
}
th {
text-align : left;
border-bottom-color : #666;
}
/* FORMS
-------------------------------------------------------- */
form {
display : block;
margin : 0;
padding : 0;
}
fieldset {
display : block;
margin : 0 0 1em 0;
padding : 1em 0.5em;
border-width : 1px 0;
border-style: solid;
border-color: #ccc;
background: #fbfbfb;
}
legend {
font-weight : bold;
padding: 0.2em 0.6em;
border-width: 1px;
border-style: solid;
border-color: #ccc;
background: #fbfbfb;
}
optgroup {
font-weight : bold;
font-style : normal;
}
option {
font-weight : normal;
}
input, textarea, select {
background : #f9f9f9;
border-width : 1px;
border-style : solid;
border-color : #000 #ccc #ccc #000;
}
input, textarea, select, option {
font: 1em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif;
}
input[type=text], input[type=password], textarea {
padding : 2px 0;
}
input[type=checkbox], input[type=radio] {
border: none;
}
textarea {
padding : 2px 0;
}
input[type=submit], input[type=reset], input[type=button] {
padding : 1px 2px;
background : #d2e0e6 url(button-normal.png) repeat-x bottom left;
border-width : 1px;
border-style : outset;
border-color : #ccc;
}
input[type=submit]:hover, input[type=reset]:hover, input[type=button]:hover {
background-color : #fc3;
background-image : url(button-hover.png);
}
input[type=submit] {
font-weight : bold;
}
input[type=checkbox], input[type=radio] {
margin : 0;
padding : 0;
background : transparent;
}
label {
display : block;
}
label input, label select, label span {
display : block;
}
label.required {
font-weight : bold;
}
label.required:before {
content : '* ';
color : #c00;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

View File

@ -0,0 +1,265 @@
/* Default CSS */
/* Main color : gray */
/* Link color : cyan and red underlined*/
body {
font: 62.5%/1.5em sans-serif;
color : #000;
background : #fff url(page-bg.png) repeat top left;
margin : 0;
padding : 0;
}
a img,:link img,:visited img { border:none }
a, a:link, a:visited {
color : navy;
text-decoration : none;
border-bottom : 1px dotted red;
}
a:hover, a:active, a:focus {
}
h1, h2, h3, h4, h5, h6 {
margin-top : 0.5em;
margin-bottom : 0.5em;
color : gray ;
}
h1 {font-size : 2em;}
h2 {font-size : 1.8em;}
h3 {font-size : 1.6em;}
hr {
border-width : 3px 0 0 0;
border-color : gray;
border-style : dotted;
}
pre, code {
font: 1.5em monospace;
border-left : 5px gray solid;
padding: 0 0 0 10px;
background: #eeeee6;
}
/* LAYOUT
-------------------------------------------------------- */
/* General font-size */
#top, #info-box, #content, #main-menu, #footer {
font-size: 1.3em;
}
#page {
margin : 0 100px 0 100px;
padding : 10px;
background : white;
border-width : 0 3px 0 3px;
border-color : gray;
border-style : dotted;
}
#top {
margin : 0 0 50px 0;
padding : 0;
background : transparent url(head-bg.png) repeat-y top right;
}
#top h1 {
padding : 0;
margin : 0;
height : 100px;
text-indent : -1000px;
background : transparent url(head-logo.png) no-repeat 0 0;
}
#info-box {
position : absolute;
right : 120px;
top : 30px;
margin : 0;
padding : 0;
letter-spacing : 0.2em ;
text-align : right;
}
#main-menu {
width : 170px;
float : left;
margin : 0;
padding : 0 10px 10px 10px ;
background : transparent url(head-bg.png) repeat-y top right;
}
#main-menu h3 {
text-align: center;
}
#main-menu ul {
margin : 0 0 1em 0;
padding : 0;
list-style : none;
}
#main-menu li {
display : block;
margin : 0.5em 0 0 5px;
padding : 2px 0 1px 20px;
background-repeat: no-repeat;
background-position: 0 0;
}
#main-menu a {
font-weight : bold;
}
#main-menu .active a {
border-bottom-style: solid;
}
#content {
margin-left : 200px;
margin-right : 10px;
margin-bottom : 10px;
padding-top : 0;
}
#footer {
clear : both;
margin-left : 200px;
padding : 10px 0 10px 0 ;
border-top : 3px gray dotted;
text-align : center;
}
#footer a {
border: none;
}
/* CLASSES
-------------------------------------------------------- */
.error {
border : 2px solid red;
padding : 0.5em 0.5em 0.5em 40px;
margin-bottom : 1em;
background : transparent url(msg-error.png) no-repeat 5px 50%;
}
.message {
font-weight : bold;
padding : 0.5em 0.5em 0.5em 40px;
border : 2px solid gray;
background : transparent url(msg-std.png) no-repeat 5px 50%;
}
/* TABLES
-------------------------------------------------------- */
table {
font-size : 1em;
border-collapse : collapse;
margin : 0.5em;
}
tr.line:hover {
background : #ddd;
}
th, td {
border-style : dotted;
border-color : gray;
vertical-align : middle;
padding : 0.5em;
}
td {
border-width : 2px;
}
th {
text-align : center;
border-bottom-color : #666;
border-width : 0 0 2px 0;
}
/* FORMS
-------------------------------------------------------- */
form {
display : block;
margin : 0;
padding : 0;
}
fieldset {
display : block;
margin : 0 0 1em 0;
padding : 1em 0.5em;
border-width : 1px 0;
border-style : solid;
border-color : gray;
background : #fbfbfb;
}
legend {
font-weight : bold;
padding : 0.2em 0.6em;
border-width : 1px;
border-style : solid;
border-color : gray;
background : #fbfbfb;
}
optgroup {
font-weight : bold;
font-style : normal;
}
option {
font-weight : normal;
}
input, textarea, select {
background : #f9f9f9;
border-width : 1px;
border-style : solid;
border-color : gray;
}
input, textarea, select, option {
font : 1em sans-serif;
}
input[type=text], input[type=password], textarea {
padding : 2px 0;
}
textarea {
padding : 2px 0;
}
input[type=submit], input[type=reset], input[type=button] {
padding : 1px 2px;
background : #d2e0e6 url(button-normal.png) repeat-x bottom left;
border-width : 1px;
border-style : outset;
border-color : #ccc;
}
input[type=submit]:hover, input[type=reset]:hover, input[type=button]:hover {
background-color : #fc3;
background-image : url(button-hover.png);
}
input[type=submit] {
font-weight : bold;
}
input[type=checkbox], input[type=radio] {
margin : 0.2em;
padding : 0;
background : transparent;
border : 1px solid gray;
}
label {
display : block;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
label.required {
font-weight : bold;
}
label.required:before {
content : '* ';
color : red;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,15 @@
/* CSS for Identity Provider */
/* Main color : green #8cd749 */
@import url(default.css);
h1, h2, h3, h4, h5, h6 { color : #8cd749; }
#page { border-color : #8cd749; }
#footer { border-top : #8cd749; }
.message { border-color : #8cd749; }
hr, pre, code, th, td, fieldset, legend { border-color : #8cd749; }

View File

@ -0,0 +1,15 @@
/* CSS for LAAP */
/* Main color : clear blue #6699ff */
@import url(default.css);
h1, h2, h3, h4, h5, h6 { color : #6699ff; }
#page { border-color : #6699ff; }
#footer { border-top : #6699ff; }
.message { border-color : #6699ff; }
hr, pre, code, th, td, fieldset, legend { border-color : #6699ff; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,15 @@
/* CSS for SSO */
/* Main color : orange #d9b500 */
@import url(default.css);
h1, h2, h3, h4, h5, h6 { color : #d9b500; }
#page { border-color : #d9b500; }
#footer { border-top : #d9b500; }
.message { border-color : #d9b500; }
hr, pre, code, th, td, fieldset, legend { border-color : #d9b500; }

View File

@ -0,0 +1,15 @@
/* CSS for LDAP Content Management (WUI) */
/* Main color : blue #1335e2 */
@import url(default.css);
h1, h2, h3, h4, h5, h6 { color : #1335e2; }
#page { border-color : #1335e2; }
#footer { border-top : #1335e2; }
.message { border-color : #1335e2; }
hr, pre, code, th, td, fieldset, legend { border-color : #1335e2; }

View File

@ -0,0 +1 @@
function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } function getActiveStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } return null; } function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } return null; } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } window.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); } window.onunload = function(e) { var title = getActiveStyleSheet(); createCookie("style", title, 365); } var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title);

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Themes for FederID Project</title>
<meta name="keywords" lang="en" content="test" />
<meta name="description" content="Themes for FederID" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" type="text/css" href="federid/default.css" title="FederID Test"/>
<link rel="alternate stylesheet" type="text/css" href="federid/idp.css" title="FederID Test Authentic"/>
<link rel="alternate stylesheet" type="text/css" href="federid/wui.css" title="FederID Test WUI"/>
<link rel="alternate stylesheet" type="text/css" href="federid/laap.css" title="FederID Test LAAP"/>
<link rel="alternate stylesheet" type="text/css" href="federid/sso.css" title="FederID Test SSO"/>
<link rel="alternate stylesheet" type="text/css" href="federid-dc2/default.css" title="FederID DC2"/>
<link rel="alternate stylesheet" type="text/css" href="dc2/default.css" title="DC2"/>
<script type="text/javascript" src="styleswitcher.js"></script>
</head>
<body>
<div id="page">
<div id="top"><h1>&nbsp;</h1></div>
<div id="info-box"><h1>Title</h1><p>Other text</p></div>
<div id="main-menu">
<h3>Menu 1</h3>
<ul>
<li class="active"><a href="#" title="Test 1">Item 1 (Active)</a></li>
<li><a href="#" title="Test 2">Item 2</a></li>
</ul>
<h3>Logos</h3>
<a href="http://www.federid.org"><img src="bouton_federid.png" alt="FederID"/></a>
<a href="http://www.interldap.org"><img src="bouton_interldap.png" alt="InterLDAP"/></a>
<a href="http://authentic.labs.libre-entreprise.org"><img src="bouton_authentic.png" alt="Authentic"/></a>
<a href="http://lemonldap.objectweb.or/"><img src="bouton_lemonldap::ng.png" alt="LemonLDAP::NG"/></a>
</div>
<div id="content">
<h2>H2 Title in content div</h2>
<hr />
<p>Some text in content div</p>
<h3>FederID special themes</h3>
<p><a href="#" onclick="setActiveStyleSheet('FederID Test'); return false;">Change style to FederID Test</a></p>
<p><a href="#" onclick="setActiveStyleSheet('FederID Test Authentic'); return false;">Change style to FederID Test Authentic</a></p>
<p><a href="#" onclick="setActiveStyleSheet('FederID Test WUI'); return false;">Change style to FederID Test WUI</a></p>
<p><a href="#" onclick="setActiveStyleSheet('FederID Test LAAP'); return false;">Change style to FederID Test LAAP</a></p>
<p><a href="#" onclick="setActiveStyleSheet('FederID Test SSO'); return false;">Change style to FederID Test SSO</a></p>
<h3>Old themes</h3>
<p><a href="#" onclick="setActiveStyleSheet('DC2'); return false;">Change style to DC2</a></p>
<p><a href="#" onclick="setActiveStyleSheet('FederID DC2'); return false;">Change style to FederID DC2</a></p>
<h3>Div and messages</h3>
<div class="error"><p>Error</p></div>
<div class="message"><p>Info</p></div>
<h3>A table</h3>
<table>
<tr><th>Title 1</th><th>Title 2</th></tr>
<tr class="line"><td>Content 1</td><td>Content 2</td></tr>
<tr class="line"><td>Content 3</td><td>Content 4</td></tr>
</table>
<h3>A form</h3>
<form action="#" method="post">
<fieldset><legend>Identification</legend>
<label class="required">Login</label><input type="text" name="login" />
<label class="required">Password</label><input type="password" name="password" />
</fieldset>
<fieldset><legend>Informations</legend>
<label>Country</label>
<select name="c"><optgroup label="Europa"><option>France</option><option>Germany</option></optgroup>
<optgroup label="Asia"><option>China</option><option>Japan</option></optgroup></select>
<label>Yes or No ?</label>
<input type="radio" value="yes" name="choice" checked="checked"/>Yes
<input type="radio" value="no" name="choice" />No
<label>Check it baby !</label>
<input type="checkbox" value="1" name="check" />1
<input type="checkbox" value="2" name="check" />2
<label>Describe your holidays</label>
<textarea name="holidays" rows="10" cols="50"></textarea>
</fieldset>
<fieldset><legend>Submit</legend>
<input type="submit" name="submit" value="I'm sure !" />
<input type="reset" name="reset" value="No, reset please !" />
</fieldset>
</form>
<h3>Texts</h3>
<pre>Text in "pre"</pre>
<code>Text in "code"</code>
</div>
<div id="footer"><p>Some text in footer with <a href="#" title="A link">a link</a></p></div>
</div>
</body>
</html>

View File

@ -2,7 +2,7 @@ package Lemonldap::NG::Portal;
print STDERR
"See Lemonldap::NG::Portal(3) to know which Lemonldap::NG::Portal::* module to use.";
our $VERSION = "0.77";
our $VERSION = "0.8";
1;

File diff suppressed because it is too large Load Diff