LEMONLDAP::NG : * Liberty alliance module from FederID project
* Debian integration in progress
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
@ -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 ;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../index.pl
|
|
@ -0,0 +1 @@
|
|||
../tpl
|
|
@ -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)
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -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)
|
||||
);
|
||||
|
|
@ -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)
|
||||
);
|
||||
|
||||
|
|
@ -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)
|
||||
);
|
||||
|
||||
|
|
@ -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>
|
|
@ -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> </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>
|
||||
|
|
@ -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
|
|
@ -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.
|
After Width: | Height: | Size: 871 B |
After Width: | Height: | Size: 774 B |
After Width: | Height: | Size: 895 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 226 B |
After Width: | Height: | Size: 228 B |
|
@ -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%;
|
||||
}
|
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 357 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 499 B |
After Width: | Height: | Size: 667 B |
After Width: | Height: | Size: 647 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 199 B |
After Width: | Height: | Size: 281 B |
After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 466 B |
After Width: | Height: | Size: 598 B |
After Width: | Height: | Size: 462 B |
After Width: | Height: | Size: 586 B |
After Width: | Height: | Size: 226 B |
After Width: | Height: | Size: 228 B |
|
@ -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;
|
||||
}
|
||||
|
After Width: | Height: | Size: 357 B |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 667 B |
After Width: | Height: | Size: 647 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 226 B |
After Width: | Height: | Size: 228 B |
|
@ -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;
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 886 B |
After Width: | Height: | Size: 12 KiB |
|
@ -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; }
|
||||
|
|
@ -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; }
|
||||
|
After Width: | Height: | Size: 667 B |
After Width: | Height: | Size: 647 B |
After Width: | Height: | Size: 10 KiB |
|
@ -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; }
|
||||
|
|
@ -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; }
|
||||
|
|
@ -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);
|
|
@ -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> </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>
|
|
@ -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;
|
||||
|
||||
|
|