This commit is contained in:
brol 2015-04-23 18:45:00 +02:00
parent 609987f20e
commit c97626bfb7
16 changed files with 660 additions and 0 deletions

28
_define.php Normal file
View file

@ -0,0 +1,28 @@
<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
# This file is part of lunarPhase, a plugin for Dotclear.
#
# Copyright (c) 2009-2015 Tomtom
# Contributor: Pierre Van Glabeke
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { return; }
$this->registerModule(
/* Name */ 'lunarPhase',
/* Description */ 'Display the moon phases',
/* Author */ 'Tomtom, Pierre Van Glabeke',
/* Verion */ '1.5',
/* Properties */
array(
'permissions' => 'usage,contentadmin',
'type' => 'plugin',
'dc_min' => '2.7',
'support' => 'http://lab.dotclear.org/wiki/plugin/lunarPhase',
'details' => 'http://plugins.dotaddict.org/dc2/details/lunarPhase'
)
);

16
_prepend.php Normal file
View file

@ -0,0 +1,16 @@
<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
# This file is part of lunarPhase, a plugin for Dotclear.
#
# Copyright (c) 2009-2015 Tomtom
# Contributor: Pierre Van Glabeke
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { return; }
$__autoload['lunarPhase'] = dirname(__FILE__).'/inc/class.lunarphase.php';
require dirname(__FILE__).'/_widgets.php';

203
_public.php Normal file
View file

@ -0,0 +1,203 @@
<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
# This file is part of lunarPhase, a plugin for Dotclear.
#
# Copyright (c) 2009-2015 Tomtom
# Contributor: Pierre Van Glabeke
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { return; }
$core->addBehavior('publicHeadContent',array('lunarPhaseBehaviors','addCss'));
class lunarPhaseBehaviors
{
/**
This function add CSS file in the public header
*/
public static function addCss()
{
global $core;
$url = $core->blog->getQMarkURL().'pf='.basename(dirname(__FILE__)).'/style.css';
echo '<link rel="stylesheet" media="screen" type="text/css" href="'.$url.'" />';
}
}
class lunarPhasePublic
{
/**
Displays lunarphase widget
@param w <b>dcWidget</b> dcWidget object
@return <b>string</b> HTML code of widget
*/
public static function widget($w)
{
global $core;
if ($w->offline)
return;
$lp = new lunarPhase();
if (($w->homeonly == 1 && $core->url->type != 'default') ||
($w->homeonly == 2 && $core->url->type == 'default')) {
return;
}
$res =
($w->title ? $w->renderTitle(html::escapeHTML($w->title)) : '');
# Get live content
$res .= lunarPhasePublic::getLive($w,$lp);
# Get prevision content
$res .= lunarPhasePublic::getPrevisions($w,$lp);
return $w->renderDiv($w->content_only,'lunarphase '.$w->class,'',$res);
}
/**
Returns "live" part of lunarphase widget
@param w <b>dcWidget</b> dcWidget object
@param lp <b>lunarPhaset</b> lunarPhase object
@return <b>string</b> Live HTML part
*/
public static function getLive($w,$lp)
{
$ul_mask = '<ul>%1$s</ul>';
$li_mask = '<li class="%2$s">%1$s</li>';
$live = $lp->getLive();
$res = '';
# Phase
if ($w->phase) {
$res .= sprintf($li_mask,$live['name'],$live['id']);
}
# Illumination
if ($w->illumination) {
$res .=
sprintf($li_mask,sprintf(__('Illumination: %s%%'),
lunarPhasePublic::formatValue('percent',$live['illumination'])),
'illumination');
}
# Moon's age
if ($w->age) {
$res .=
sprintf($li_mask,sprintf(__('Age of moon: %s days'),
lunarPhasePublic::formatValue('int',$live['age'])),
'age');
}
# Distance from earth
if ($w->dist_to_earth) {
$res .=
sprintf($li_mask,sprintf(__('Distance to earth: %s km'),
lunarPhasePublic::formatValue('int',$live['dist_to_earth'])),
'dist_to_earth');
}
# Distance from sun
if ($w->dist_to_sun) {
$res .=
sprintf($li_mask,sprintf(__('Distance to sun: %s km'),
lunarPhasePublic::formatValue('int',$live['dist_to_sun'])),
'dist_to_sun');
}
# Moon's angle
if ($w->moon_angle) {
$res .=
sprintf($li_mask,sprintf(__('Angle of moon: %s deg'),
lunarPhasePublic::formatValue('deg',$live['moon_angle'])),
'moon_angle');
}
# Sun's angle
if ($w->sun_angle) {
$res .=
sprintf($li_mask,sprintf(__('Angle of sun: %s deg'),
lunarPhasePublic::formatValue('deg',$live['sun_angle'])),
'sun_angle');
}
# Parallax
if ($w->parallax) {
$res .=
sprintf($li_mask,sprintf(__('Parallax: %s deg'),
lunarPhasePublic::formatValue('deg',$live['parallax'])),
'parallax');
}
if (strlen($res) > 0) {
return
'<h3>'.__('In live').'</h3>'.
sprintf($ul_mask,$res,'lunarphase');
}
}
/**
Returns "previsions" part of lunarphase widget
@param w <b>dcWidget</b> dcWidget object
@param lp <b>lunarPhaset</b> lunarPhase object
@return <b>string</b> previsions HTML part
*/
public static function getPrevisions($w,$lp)
{
$ul_mask = '<ul class="%2$s">%1$s</ul>';
$li_mask = '<li class="%2$s" title="%3$s">%1$s</li>';
$res = '';
if ($w->previsions) {
foreach ($lp->getPrevisions() as $k => $v) {
$res .= sprintf($li_mask,lunarPhasePublic::formatValue('date',$v['date']),$k,$v['name']);
}
}
if (strlen($res) > 0) {
return
'<h3>'.__('Previsions').'</h3>'.
sprintf($ul_mask,$res,'lunarphase');
}
}
/**
Returns value passed in argument with a correct format
@param type <b>string</b> Type of convertion
@param value <b>mixed</b> Value to convert
@return <b>mixed</b> Converted value
*/
public static function formatValue($type = '',$value)
{
$res = '';
$format = $GLOBALS['core']->blog->settings->system->date_format.' - ';
$format .= $GLOBALS['core']->blog->settings->system->time_format;
$tz = $GLOBALS['core']->blog->settings->system->blog_timezone;
switch ($type) {
case 'int':
$res = number_format($value,0);
break;
case 'float':
$res = number_format($value,2);
break;
case 'percent':
$res = number_format($value * 100,0);
break;
case 'date':
$res = dt::str($format,$value,$tz);
break;
case 'deg':
$res = number_format(($value * (180.0 / M_PI)),2);
break;
default:
$res = $value;
break;
}
return $res;
}
}

44
_widgets.php Normal file
View file

@ -0,0 +1,44 @@
<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
# This file is part of lunarPhase, a plugin for Dotclear.
#
# Copyright (c) 2009-2015 Tomtom
# Contributor: Pierre Van Glabeke
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) { return; }
$core->addBehavior('initWidgets',array('lunarPhaseWidgets','initWidgets'));
class lunarPhaseWidgets
{
public static function initWidgets($w)
{
$w->create('lunarphase',__('LunarPhase: moon phases'),array('lunarPhasePublic','widget'),
null,
__('Display the moon phases'));
$w->lunarphase->setting('title',__('Title:'),__('Moon phases'));
$w->lunarphase->setting('phase',__('Display actual phase of moon'),1,'check');
$w->lunarphase->setting('illumination',__('Display actual illumination of moon'),1,'check');
$w->lunarphase->setting('age',__('Display actual age of moon'),1,'check');
$w->lunarphase->setting('dist_to_earth',__('Display actual distance between moon and earth'),1,'check');
$w->lunarphase->setting('dist_to_sun',__('Display actual distance between moon and sun'),1,'check');
$w->lunarphase->setting('moon_angle',__('Display actual angle of moon'),1,'check');
$w->lunarphase->setting('sun_angle',__('Display actual angle of sun'),1,'check');
$w->lunarphase->setting('parallax',__('Display actual parallax of moon'),1,'check');
$w->lunarphase->setting('previsions',__('Display all previsions for the next moon phases'),1,'check');
$w->lunarphase->setting('homeonly',__('Display on:'),0,'combo',
array(
__('All pages') => 0,
__('Home page only') => 1,
__('Except on home page') => 2
)
);
$w->lunarphase->setting('content_only',__('Content only'),0,'check');
$w->lunarphase->setting('class',__('CSS class:'),'');
$w->lunarphase->setting('offline',__('Offline'),0,'check');
}
}

15
changelog Normal file
View file

@ -0,0 +1,15 @@
v1.5 (23/04/2015) Pierre Van Glabeke :
modification url support
v1.4 (06/02/2015) Pierre Van Glabeke :
modifications localisation
v1.3 (14/12/2014) Pierre Van Glabeke :
compatibilité dc2.7
v1.2 (17/02/2014) :
reprise par Pierre Van Glabeke
correction bug (waning_crescent_moon)
images refaites (merci à 999Diaoul)
compatibilité dc2.6
fin de ligne unix

BIN
img/fm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

BIN
img/fqm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
img/nm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

BIN
img/tqm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

BIN
img/wcm1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
img/wcm2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 785 B

BIN
img/wgm1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

BIN
img/wgm2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

213
inc/class.lunarphase.php Normal file
View file

@ -0,0 +1,213 @@
<?php
# -- BEGIN LICENSE BLOCK ----------------------------------
# This file is part of lunarPhase, a plugin for Dotclear.
#
# Copyright (c) 2009-2015 Tomtom
# Contributor: Pierre Van Glabeke
#
# Licensed under the GPL version 2.0 license.
# A copy of this license is available in LICENSE file or at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# -- END LICENSE BLOCK ------------------------------------
if (!defined('DC_RC_PATH')) {return;}
class lunarPhase
{
# Astronomical constants.
const epoch = 2444238.5; # 1980 January 0.0
# Constants defining the Sun's apparent orbit.
const elonge = 278.833540; # ecliptic longitude of the Sun at epoch 1980.0
const elongp = 282.596403; # ecliptic longitude of the Sun at perigee
const eccent = 0.016718; # eccentricity of Earth's orbit
const sunsMax = 1.495985e8; # semi-major axis of Earth's orbit, km
const sunAngSiz = 0.533128; # sun's angular size, degrees, at semi-major axis distance
# Elements of the Moon's orbit, epoch 1980.0.
const mmLong = 64.975464; # moon's mean longitude at the epoch
const mmLongp = 349.383063; # mean longitude of the perigee at the epoch
const mlNode = 151.950429; # mean longitude of the node at the epoch
const mInc = 5.145396; # inclination of the Moon's orbit
const mEcc = 0.054900; # eccentricity of the Moon's orbit
const mAngSiz = 0.5181; # moon's angular size at distance a from Earth
const msMax = 384401.0; # semi-major axis of Moon's orbit in km
const mParallax = 0.9507; # parallax at distance a from Earth
const synodic = 29.53058868; # synodic month (new Moon to new Moon)
protected $live;
protected $previsions;
public function __construct()
{
$this->live = new ArrayObject;
$this->previsions = new ArrayObject;
$this->setLive();
$this->setPrevisions();
}
public function getLive()
{
return $this->live;
}
public function getPrevisions()
{
return $this->previsions;
}
private function setLive()
{
$day = $this->jTime(time()) - self::epoch;
# Calculate sun's position and angle
$N = $this->fixAngle((360 / 365.2422) * $day);
$M = $this->fixAngle($N + self::elonge - self::elongp);
$Ec = $this->kepler($M, self::eccent);
$Ec = sqrt((1 + self::eccent) / (1 - self::eccent)) * tan($Ec / 2);
$Ec = 2 * $this->toDeg(atan($Ec));
$lambdaSun = $this->fixAngle($Ec + self::elongp);
$F = ((1 + self::eccent * cos($this->toRad($Ec))) / (1 - self::eccent * self::eccent));
# Calculate moon's age, position and angle
$ml = $this->fixAngle(13.1763966 * $day + self::mmLong);
$MM = $this->fixAngle($ml - 0.1114041 * $day - self::mmLongp);
$MN = $this->fixAngle(self::mlNode - 0.0529539 * $day);
$Ev = 1.2739 * sin($this->toRad(2 * ($ml - $lambdaSun) - $MM));
$Ae = 0.1858 * sin($this->toRad($M));
$A3 = 0.37 * sin($this->toRad($M));
$MmP = $MM + $Ev - $Ae - $A3;
$mEc = 6.2886 * sin($this->toRad($MmP));
$A4 = 0.214 * sin($this->toRad(2 * $MmP));
$lP = $ml + $Ev + $mEc - $Ae + $A4;
$V = 0.6583 * sin($this->toRad(2 * ($lP - $lambdaSun)));
$lPP = $lP + $V;
$NP = $MN - 0.16 * sin($this->toRad($M));
$y = sin($this->toRad($lPP - $NP)) * cos($this->toRad(self::mInc));
$x = cos($this->toRad($lPP - $NP));
$lambdaMoon = $this->toDeg(atan2($y, $x));
$lambdaMoon += $NP;
$mage = $lPP - $lambdaSun;
$BetaM = $this->toDeg(asin(sin($this->toRad($lPP - $NP)) * sin($this->toRad(self::mInc))));
$this->live['illumination'] = (1 - cos($this->toRad($mage))) / 2;
$this->live['age'] = self::synodic * ($this->fixAngle($mage) / 360.0);
$this->live['dist_to_earth'] = (self::msMax * (1 - self::mEcc * self::mEcc)) / (1 + self::mEcc * cos($this->toRad($MmP + $mEc)));
$this->live['dist_to_sun'] = self::sunsMax / $F;
$this->live['sun_angle'] = $F * self::sunAngSiz;
$this->live['moon_angle'] = self::mAngSiz / ($this->live['dist_to_earth'] / self::msMax);
$this->live['parallax'] = self::mParallax / ($this->live['dist_to_earth'] / self::msMax);
$this->setPhase();
}
private function setPhase()
{
if ($this->live['age'] >= self::synodic || $this->live['age'] <= self::synodic/8) {
$this->live['id'] = 'new_moon';
$this->live['name'] = __('New moon');
}
elseif ($this->live['age'] >= self::synodic/8 && $this->live['age'] <= self::synodic/4) {
$this->live['id'] = 'waxing_crescent_moon';
$this->live['name'] = __('Waxing crescent moon');
}
elseif ($this->live['age'] >= self::synodic/4 && $this->live['age'] <= self::synodic*3/8) {
$this->live['id'] = 'first_quarter_moon';
$this->live['name'] = __('First quarter moon');
}
elseif ($this->live['age'] >= self::synodic*3/8 && $this->live['age'] <= self::synodic/2) {
$this->live['id'] = 'waxing_gibbous_moon';
$this->live['name'] = __('Waxing gibbous moon');
}
elseif ($this->live['age'] >= self::synodic/2 && $this->live['age'] <= self::synodic*5/8) {
$this->live['id'] = 'full_moon';
$this->live['name'] = __('Full moon');
}
elseif ($this->live['age'] >= self::synodic*5/8 && $this->live['age'] <= self::synodic*3/4) {
$this->live['id'] = 'waning_gibbous_moon';
$this->live['name'] = __('Waning gibbous moon');
}
elseif ($this->live['age'] >= self::synodic*3/4 && $this->live['age'] <= self::synodic*7/8) {
$this->live['id'] = 'last_quarter_moon';
$this->live['name'] = __('Last quarter moon');
}
elseif ($this->live['age'] >= self::synodic*7/8 && $this->live['age'] <= self::synodic) {
$this->live['id'] = 'waning_crescent_moon';
$this->live['name'] = __('Waning crescent moon');
}
}
private function setPrevisions()
{
$ts_day = 24*60*60;
$ts_synodic = self::synodic * $ts_day;
$start = time() - $this->live['age'] * $ts_day;
$this->previsions['waxing_crescent_moon'] = array(
'name' => __('Waxing crescent moon'),
'date' => $start + $ts_synodic / 8
);
$this->previsions['first_quarter_moon'] = array(
'name' => __('First quarter moon'),
'date' => $start + $ts_synodic / 4
);
$this->previsions['waxing_gibbous_moon'] = array(
'name' => __('Waxing gibbous moon'),
'date' => $start + $ts_synodic * 3 / 8
);
$this->previsions['full_moon'] = array(
'name' => __('Full moon'),
'date' => $start + $ts_synodic / 2
);
$this->previsions['waning_gibbous_moon'] = array(
'name' => __('Waning gibbous moon'),
'date' => $start + $ts_synodic * 5 / 8
);
$this->previsions['last_quarter_moon'] = array(
'name' => __('Last quarter moon'),
'date' => $start + $ts_synodic * 3 / 4
);
$this->previsions['waning_crescent_moon'] = array(
'name' => __('Waning crescent moon'),
'date' => $start + $ts_synodic * 7 / 8
);
$this->previsions['new_moon'] = array(
'name' => __('New moon'),
'date' =>$start + $ts_synodic
);
}
private function fixAngle($x)
{
return ($x - 360.0 * (floor($x / 360.0)));
}
private function toRad($x)
{
return ($x * (M_PI / 180.0));
}
private function toDeg($x)
{
return ($x * (180.0 / M_PI));
}
private function jTime($t)
{
return ($t / 86400) + 2440587.5;
}
private function kepler($m, $ecc)
{
$delta = null;
$EPSILON = 1e-6;
$m = $this->toRad($m);
$e = $m;
while (abs($delta) > $EPSILON)
{
$delta = $e - $ecc * sin($e) - $m;
$e -= $delta / (1 - $ecc * cos($e));
}
return ($e);
}
}

133
locales/fr/main.po Normal file
View file

@ -0,0 +1,133 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: lunarPhase 1.1-RC2\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2010-09-30T22:49:45+00:00\n"
"Last-Translator: Thomas Bouron\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Display the moon phases"
msgstr "Afficher les phases de la Lune et autres données"
#: _public.php:84
msgid "Illumination: %s%%"
msgstr "Illumination : %s%%"
#: _public.php:91
msgid "Age of moon: %s days"
msgstr "Age de la Lune : %s jours"
#: _public.php:98
msgid "Distance to earth: %s km"
msgstr "Distance à la Terre : %s km"
#: _public.php:105
msgid "Distance to sun: %s km"
msgstr "Distance au Soleil : %s km"
#: _public.php:112
msgid "Angle of moon: %s deg"
msgstr "Angle de la Lune : %s deg"
#: _public.php:119
msgid "Angle of sun: %s deg"
msgstr "Angle du Soleil : %s deg"
#: _public.php:126
msgid "Parallax: %s deg"
msgstr "Parallaxe : %s deg"
#: _public.php:133
msgid "In live"
msgstr "En direct"
#: _public.php:159
msgid "Previsions"
msgstr "Prévisions"
#: _widgets.php:20
msgid "LunarPhase: moon phases"
msgstr "LunarPhase : phases de la Lune"
#: _widgets.php:22
msgid "Moon phases"
msgstr "Phases de la Lune"
#: _widgets.php:24
msgid "Display actual phase of moon"
msgstr "Afficher la phase actuelle de la Lune"
#: _widgets.php:25
msgid "Display actual illumination of moon"
msgstr "Afficher le taux d'illumination actuel de la Lune"
#: _widgets.php:26
msgid "Display actual age of moon"
msgstr "Afficher l'âge actuel de la Lune"
#: _widgets.php:27
msgid "Display actual distance between moon and earth"
msgstr "Afficher la distance actuelle entre la Terre et la Lune"
#: _widgets.php:28
msgid "Display actual distance between moon and sun"
msgstr "Afficher la distance actuelle entre le Soleil et la Lune"
#: _widgets.php:29
msgid "Display actual angle of moon"
msgstr "Afficher l'angle actuel de la Lune"
#: _widgets.php:30
msgid "Display actual angle of sun"
msgstr "Afficher l'angle actuel du Soleil"
#: _widgets.php:31
msgid "Display actual parallax of moon"
msgstr "Afficher la parallaxe actuelle de la Lune"
#: _widgets.php:32
msgid "Display all previsions for the next moon phases"
msgstr "Afficher toutes les prévisions des prochaines lunaisons"
#: inc/class.lunarphase.php:107
#: inc/class.lunarphase.php:174
msgid "New moon"
msgstr "Nouvelle lune"
#: inc/class.lunarphase.php:111
#: inc/class.lunarphase.php:146
msgid "Waxing crescent moon"
msgstr "Lune croissante"
#: inc/class.lunarphase.php:115
#: inc/class.lunarphase.php:150
msgid "First quarter moon"
msgstr "Premier quartier"
#: inc/class.lunarphase.php:119
#: inc/class.lunarphase.php:154
msgid "Waxing gibbous moon"
msgstr "Lune gibbeuse croissante"
#: inc/class.lunarphase.php:123
#: inc/class.lunarphase.php:158
msgid "Full moon"
msgstr "Pleine lune"
#: inc/class.lunarphase.php:127
#: inc/class.lunarphase.php:162
msgid "Waning gibbous moon"
msgstr "Lune gibbeuse décroissante"
#: inc/class.lunarphase.php:131
#: inc/class.lunarphase.php:166
msgid "Last quarter moon"
msgstr "Dernier quartier"
#: inc/class.lunarphase.php:135
#: inc/class.lunarphase.php:170
msgid "Waning crescent moon"
msgstr "Lune décroissante"

8
style.css Normal file
View file

@ -0,0 +1,8 @@
#sidebar .lunarphase ul li.new_moon{background:transparent url(index.php?pf=lunarPhase/img/nm.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.waxing_crescent_moon{background:transparent url(index.php?pf=lunarPhase/img/wcm1.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.first_quarter_moon{background:transparent url(index.php?pf=lunarPhase/img/fqm.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.waxing_gibbous_moon{background:transparent url(index.php?pf=lunarPhase/img/wgm1.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.full_moon{background:transparent url(index.php?pf=lunarPhase/img/fm.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.waning_gibbous_moon{background:transparent url(index.php?pf=lunarPhase/img/wgm2.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.last_quarter_moon{background:transparent url(index.php?pf=lunarPhase/img/tqm.png) no-repeat left 0.2em;padding-left:2em;}
#sidebar .lunarphase ul li.waning_crescent_moon{background:transparent url(index.php?pf=lunarPhase/img/wcm2.png) no-repeat left 0.2em;padding-left:2em;}