Dotclear


Ignore:
Files:
10 added
11 deleted
41 edited

Legend:

Unmodified
Added
Removed
  • .hgsubstate

    r1709 r1742  
    1 7f6890267d808320431acd04f4dae19dcb027a80 inc/libs/clearbricks 
     133139a996922b7a21b658961f8052c869bea60a1 inc/libs/clearbricks 
  • README.md

    r1578 r1743  
    5050    * iconv 
    5151    * simplexml 
    52     * mysql, postgresql or sqlite 
     52    * mysql, mysqli, postgresql or sqlite 
    5353 * A database server (MySQL or PostgreSQL) or SQLite. 
    5454 
  • admin/blog_del.php

    r1399 r1733  
    6161{ 
    6262     echo 
    63      '<p class="message">'.__('Warning').'</p>'. 
     63     '<div class="warning-msg"><p><strong>'.__('Warning').'</strong></p>'. 
    6464     '<p>'.sprintf(__('You are about to delete the blog %s. Every entry, comment and category will be deleted.'), 
    65      '<strong>'.$blog_id.' ('.$blog_name.')</strong>').'</p>'. 
     65     '<strong>'.$blog_id.' ('.$blog_name.')</strong>').'</p></div>'. 
    6666     '<p>'.__('Please give your password to confirm the blog deletion.').'</p>'; 
    6767      
  • admin/blog_pref.php

    r1698 r1746  
    6060 
    6161# Language codes 
    62 $langs = l10n::getISOcodes(1,1); 
    63 foreach ($langs as $k => $v) { 
    64      $lang_avail = $v == 'en' || is_dir(DC_L10N_ROOT.'/'.$v); 
    65      $lang_combo[] = new formSelectOption($k,$v,$lang_avail ? 'avail10n' : ''); 
    66 } 
     62$lang_combo = dcAdminCombos::getAdminLangsCombo(); 
    6763 
    6864# Status combo 
    69 foreach ($core->getAllBlogStatus() as $k => $v) { 
    70      $status_combo[$v] = (string) $k; 
    71 } 
     65$status_combo = dcAdminCombos::getBlogStatusescombo(); 
    7266 
    7367# URL scan modes 
     
    327321          echo 
    328322          '<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'. 
    329           form::field('blog_url',30,255,html::escapeHTML($blog_url)).'</p>'. 
     323          form::field('blog_url',50,255,html::escapeHTML($blog_url)).'</p>'. 
    330324           
    331325          '<p><label for="url_scan">'.__('URL scan method:').'</label>'. 
    332           form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>'. 
    333            
     326          form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>'; 
     327           
     328          # Test URL of blog by testing it's ATOM feed 
     329          $file = $blog_url.$core->url->getURLFor('feed','atom'); 
     330          $path = ''; 
     331          $status = '404'; 
     332          $content = ''; 
     333          $client = netHttp::initClient($file,$path); 
     334          if ($client !== false) { 
     335               $client->setTimeout(4); 
     336               $client->setUserAgent($_SERVER['HTTP_USER_AGENT']); 
     337               $client->get($path); 
     338               $status = $client->getStatus(); 
     339               $content = $client->getContent(); 
     340          } 
     341          if ($status != '200') { 
     342               // Might be 404 (URL not found), 670 (blog not online), ... 
     343               echo 
     344               '<p class="form-note warn">'. 
     345               sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> return a <strong>%s</strong> status).'), 
     346                         $file,$status). 
     347               '</p>'; 
     348          } else { 
     349               if (substr($content,0,6) != '<?xml ') { 
     350                    // Not well formed XML feed 
     351                    echo 
     352                    '<p class="form-note warn">'. 
     353                    sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> does not return an ATOM feed).'), 
     354                              $file). 
     355                    '</p>'; 
     356               } 
     357          } 
     358 
     359          echo 
    334360          '<p><label for="blog_status">'.__('Blog status:').'</label>'. 
    335361          form::combo('blog_status',$status_combo,$blog_status).'</p>'; 
  • admin/categories.php

    r1662 r1741  
    114114     dcPage::success(__('Categories have been successfully reordered.')); 
    115115} 
    116  
    117 $categories_combo = array(); 
    118 if (!$rs->isEmpty()) 
    119 { 
    120      while ($rs->fetch()) { 
    121           $catparents_combo[] = $categories_combo[] = new formSelectOption( 
    122                str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title), 
    123                $rs->cat_id 
    124           ); 
    125      } 
    126 } 
     116$categories_combo = dcAdminCombos::getCategoriesCombo($rs); 
    127117 
    128118echo 
     
    139129     echo 
    140130     '<form action="categories.php" method="post" id="form-categories">'. 
    141      '<h3>'.__('List of blog\'s categories').'</h3>'. 
    142131     '<div id="categories">'; 
    143132 
     
    180169     '<p class="col right" id="mov-cat">'. 
    181170     '<label for="mov_cat" class="classic">'.__('Category which will receive entries of deleted categories:').'</label> '. 
    182      form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'',''). 
     171     form::combo('mov_cat',$categories_combo,'',''). 
    183172     '</p>'. 
    184173     '<p class="right">'. 
  • admin/comment.php

    r1553 r1719  
    2626$comment_spam_status = ''; 
    2727 
     28 
    2829# Status combo 
    29 foreach ($core->blog->getAllCommentStatus() as $k => $v) { 
    30      $status_combo[$v] = (string) $k; 
    31 } 
     30$status_combo = dcAdminCombos::getCommentStatusescombo(); 
    3231 
    3332# Adding comment 
  • admin/comments.php

    r1528 r1719  
    2828# Creating filter combo boxes 
    2929# Filter form we'll put in html_block 
    30 $status_combo = array( 
    31 '-' => '' 
    32 ); 
    33 foreach ($core->blog->getAllCommentStatus() as $k => $v) { 
    34      $status_combo[$v] = (string) $k; 
    35 } 
     30$status_combo = array_merge( 
     31     array('-' => ''), 
     32     dcAdminCombos::getCommentStatusescombo() 
     33); 
     34 
    3635 
    3736$type_combo = array( 
  • admin/index.php

    r1699 r1741  
    144144          if ($feed) 
    145145          { 
    146                $latest_news = '<h3>'.__('Latest news').'</h3><dl id="news">'; 
     146               $latest_news = '<h3>'.__('Dotclear news').'</h3><dl id="news">'; 
    147147               $i = 1; 
    148148               foreach ($feed->items as $item) 
    149149               { 
    150                     $dt = isset($item->link) ? '<a href="'.$item->link.'" title="'.$item->title.' '.__('(external link)').'">'. 
    151                          $item->title.'</a>' : $item->title; 
     150                    $dt = isset($item->link) ? '<a href="'.$item->link.'" title="'.$item->title.' ('.__('new window').')">'. 
     151                         $item->title.' <img src="images/outgoing-blue.png" alt="" /></a>' : $item->title; 
    152152                
    153153                    if ($i < 3) { 
     
    179179      
    180180          foreach ($__resources['doc'] as $k => $v) { 
    181                $doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>'; 
     181               $doc_links .= '<li><a href="'.$v.'" title="'.$k.' ('.__('new window').')">'.$k. 
     182               ' <img src="images/outgoing-blue.png" alt="" /></a></li>'; 
    182183          } 
    183184      
     
    222223          '<a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'. 
    223224          ($version_info ? ' </p>'. 
    224           '<p><a href="'.$version_info.'" class="info">'.__('information about this version').'</a>' : '').'</p>'. 
     225          '<p><a href="'.$version_info.'" class="updt-info">'.__('information about this version').'</a>' : '').'</p>'. 
    225226          '</div>'; 
    226227     } 
     
    257258 
    258259# Check cache directory 
    259 if (!is_dir(DC_TPL_CACHE)) { 
    260      $err[] = '<p>'.sprintf(__('Cache directory %s does not exist.'),DC_TPL_CACHE).'</p>'; 
    261 } else if (!is_writable(DC_TPL_CACHE)) { 
    262      $err[] = '<p>'.sprintf(__('Cache directory %s is not writable.'),DC_TPL_CACHE).'</p>'; 
     260if ( $core->auth->isSuperAdmin() ) { 
     261     if (!is_dir(DC_TPL_CACHE) || !is_writable(DC_TPL_CACHE)) { 
     262          $err[] = '<p>'.__("The cache directory does not exist or is not writable. You must create this directory with sufficient rights and affect this location to \"DC_TPL_CACHE\" in inc/config.php file.").'</p>'; 
     263     } 
     264} else { 
     265     if (!is_dir(DC_TPL_CACHE) || !is_writable(DC_TPL_CACHE)) { 
     266          $err[] = '<p>'.__("The cache directory does not exist or is not writable. You should contact your administrator.").'</p>'; 
     267     } 
    263268} 
    264269 
    265270# Check public directory 
    266 if (!is_dir($core->blog->public_path)) { 
    267      $err[] = '<p>'.sprintf(__('Directory %s does not exist.'),$core->blog->public_path).'</p>'; 
    268 } else if (!is_writable($core->blog->public_path)) { 
    269      $err[] = '<p>'.sprintf(__('Directory %s is not writable.'),$core->blog->public_path).'</p>'; 
     271if ( $core->auth->isSuperAdmin() ) { 
     272     if (!is_dir($core->blog->public_path) || !is_writable($core->blog->public_path)) { 
     273          $err[] = '<p>'.__("There is no writable directory /public/ at the location set in about:config \"public_path\". You must create this directory with sufficient rights (or change this setting).").'</p>'; 
     274     } 
     275} else { 
     276     if (!is_dir($core->blog->public_path) || !is_writable($core->blog->public_path)) { 
     277          $err[] = '<p>'.__("There is no writable root directory for the media manager. You should contact your administrator.").'</p>'; 
     278     } 
    270279} 
    271280 
     
    293302     echo '</ul></div>'; 
    294303} 
    295  
    296 # Dashboard columns (processed first, as we need to know the result before displaying the icons.) 
    297 $dashboardItems = ''; 
    298  
    299 # Dotclear updates notifications 
    300 if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) 
    301 { 
    302      $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
    303      $new_v = $updater->check(DC_VERSION); 
    304      $version_info = $new_v ? $updater->getInfoURL() : ''; 
    305       
    306      if ($updater->getNotify() && $new_v) { 
    307           $dashboardItems .= 
    308           '<div id="upg-notify" class="static-msg"><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '. 
    309           '<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'. 
    310           '</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'. 
    311           ($version_info ? ' </li><li>'.sprintf(__('<a href=\"%s\">Information about this version</a>.'),$version_info) : ''). 
    312           '</li></ul></div>'; 
    313      } 
    314 } 
    315  
    316304# Errors modules notifications 
    317305if ($core->auth->isSuperAdmin()) 
     
    323311      
    324312     if (count($list) > 0) { 
    325           $dashboardItems .= 
    326           '<div id="module-errors" class="error"><p>'.__('Some plugins are installed twice:').'</p> '. 
     313          echo  
     314          '<div class="error" id="module-errors" class="error"><p>'.__('Some plugins are installed twice:').'</p> '. 
    327315          '<ul>'.implode("\n",$list).'</ul></div>'; 
    328316     } 
    329       
    330 } 
     317} 
     318 
     319# Dashboard columns (processed first, as we need to know the result before displaying the icons.) 
     320$dashboardItems = ''; 
    331321 
    332322foreach ($__dashboard_items as $i) 
     
    334324     if ($i->count() > 0) 
    335325     { 
    336           $dashboardItems .= '<div class="db-item">'; 
     326          $dashboardItems .= '<div class="box">'; 
    337327          foreach ($i as $v) { 
    338328               $dashboardItems .= $v; 
     
    343333 
    344334# Dashboard icons 
    345 echo '<div id="dashboard-main"'.($dashboardItems ? '' : ' class="fullwidth"').'><div id="icons">'; 
     335echo '<div id="dashboard-main"><div id="icons">'; 
    346336foreach ($__dashboard_icons as $i) 
    347337{ 
     
    356346     { 
    357347          # Getting categories 
    358           $categories_combo = array(__('(No cat)') => ''); 
    359           try { 
    360                $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    361                if (!$categories->isEmpty()) { 
    362                     while ($categories->fetch()) { 
    363                          $catparents_combo[] = $categories_combo[] = new formSelectOption( 
    364                               str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    365                               $categories->cat_id 
    366                          ); 
    367                     } 
    368                } 
    369           } catch (Exception $e) { } 
     348          $categories_combo = dcAdminCombos::getCategoriesCombo( 
     349               $core->blog->getCategories(array('post_type'=>'post')) 
     350          ); 
    370351      
    371352          echo 
     
    414395     if ($i->count() > 0) 
    415396     { 
    416           $dashboardContents .= '<div>'; 
     397          $dashboardContents .= '<div class="box">'; 
    417398          foreach ($i as $v) { 
    418399               $dashboardContents .= $v; 
     
    421402     } 
    422403} 
    423 echo ($dashboardContents ? '<div id="dashboard-contents">'.$dashboardContents.'</div>' : ''); 
     404 
     405$class = ' '.(($dashboardItems != '') && ($dashboardContents != '') ? 'two-boxes' : 'one-box'); 
     406 
     407if ($dashboardContents != '' || $dashboardItems != '') { 
     408     echo  
     409     '<hr />'. 
     410     '<div id="dashboard-boxes">'; 
     411          echo ($dashboardContents ? '<div class="db-contents'.$class.'">'.$dashboardContents.'</div>' : ''); 
     412          echo ($dashboardItems ? '<div class="db-items'.$class.'">'.$dashboardItems.'</div>' : ''); 
     413     echo 
     414     '</div>';       
     415} 
    424416 
    425417echo '</div>'; 
    426  
    427 echo ($dashboardItems ? '<div id="dashboard-items">'.$dashboardItems.'</div>' : ''); 
    428418 
    429419dcPage::close(); 
  • admin/install/check.php

    r1179 r1743  
    4949     } 
    5050      
    51      if ($con->driver() == 'mysql') 
     51     if ($con->driver() == 'mysql' || $con->driver() == 'mysqli') 
    5252     { 
    5353          if (version_compare($con->version(),'4.1','<')) 
  • admin/install/wizard.php

    r1399 r1744  
    5555} 
    5656 
    57 $DBDRIVER = !empty($_POST['DBDRIVER']) ? $_POST['DBDRIVER'] : 'mysql'; 
     57$DBDRIVER = !empty($_POST['DBDRIVER']) ? $_POST['DBDRIVER'] : (function_exists('mysqli_connect') ? 'mysqli' : 'mysql'); 
    5858$DBHOST = !empty($_POST['DBHOST']) ? $_POST['DBHOST'] : ''; 
    5959$DBNAME = !empty($_POST['DBNAME']) ? $_POST['DBNAME'] : ''; 
     
    179179'<form action="wizard.php" method="post">'. 
    180180'<p><label class="required" for="DBDRIVER"><abbr title="'.__('Required field').'">*</abbr> '.__('Database type:').'</label> '. 
    181 form::combo('DBDRIVER',array('MySQL'=>'mysql','PostgreSQL'=>'pgsql'),$DBDRIVER).'</p>'. 
     181form::combo('DBDRIVER',array(__('MySQL (deprecated)')=>'mysql',__('MySQLi')=>'mysqli',__('PostgreSQL')=>'pgsql'),$DBDRIVER).'</p>'. 
    182182'<p><label for="DBHOST">'.__('Database Host Name:').'</label> '. 
    183183form::field('DBHOST',30,255,html::escapeHTML($DBHOST)).'</p>'. 
  • admin/js/_media.js

    r1461 r1724  
     1(function($) { 
     2     $.fn.enhancedUploader = function() { 
     3          return this.each(function() { 
     4               var me = $(this); 
     5 
     6               function enableButton(button) { 
     7                    button.prop('disabled',false).removeClass('disabled'); 
     8               } 
     9 
     10               function disableButton(button) { 
     11                    button.prop('disabled',true).addClass('disabled'); 
     12               } 
     13                
     14               function displayMessageInQueue(n) { 
     15                    var msg = ''; 
     16                    if (n==1) { 
     17                         msg = dotclear.jsUpload.msg.file_in_queue; 
     18                    } else if (n>1) { 
     19                         msg = dotclear.jsUpload.msg.files_in_queue; 
     20                         msg = msg.replace(/%d/,n); 
     21                    } else { 
     22                         msg = dotclear.jsUpload.msg.no_file_in_queue; 
     23                    } 
     24                    $('.queue-message',me).html(msg); 
     25               } 
     26                
     27               $('.button.add').click(function(e) { 
     28                    // Use the native click() of the file input. 
     29                    $('#upfile').click(); 
     30                    e.preventDefault(); 
     31               }); 
     32                
     33               $('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) { 
     34                    $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     35                    disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     36                    displayMessageInQueue(0); 
     37               }); 
     38                
     39               $('.cancel').live('click', function(e) { 
     40                    if ($('.fileupload-ctrl .files .template-upload', me).length==0) { 
     41                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     42                         disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     43                    } 
     44                    displayMessageInQueue($('.files .template-upload',me).length); 
     45               }); 
     46                
     47               $('.button.clean', me).click(function(e) { 
     48                    $('.fileupload-ctrl .files .template-download', me).slideUp(500, function() { 
     49                         $(this).remove(); 
     50                    }); 
     51                    $(this).hide(); 
     52                    e.preventDefault(); 
     53               }); 
     54                
     55               $(me).fileupload({ 
     56                    url: $(me).attr('action'), 
     57                    autoUpload: false, 
     58                    sequentialUploads: true, 
     59                    uploadTemplateId: null, 
     60                    downloadTemplateId: null, 
     61                    uploadTemplate: template_upload, 
     62                    downloadTemplate: template_download 
     63               }).bind('fileuploadadd', function(e, data) { 
     64                    $('.button.cancel','#fileupload .fileupload-buttonbar').show(); 
     65                    enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     66               }).bind('fileuploadadded', function(e, data) { 
     67                    displayMessageInQueue($('.files .template-upload',me).length); 
     68               }).bind('fileuploaddone', function(e, data) { 
     69                    if (data.result.files[0].html !==undefined) { 
     70                         $('.media-list p.clear').before(data.result.files[0].html); 
     71                    } 
     72                    $('.button.clean',me).show(); 
     73               }).bind('fileuploadalways', function(e, data) { 
     74                    displayMessageInQueue($('.files .template-upload',me).length); 
     75                    if ($('.fileupload-ctrl .files .template-upload',me).length==0) { 
     76                         $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
     77                         disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     78                    } 
     79               }); 
     80                
     81               var $container = $(me).parent(); 
     82               var $msg,label; 
     83 
     84               if ($container.hasClass('enhanced_uploader')) { 
     85                    $msg = dotclear.msg.enhanced_uploader_disable; 
     86                    label = dotclear.jsUpload.msg.choose_files; 
     87                    $(me).fileupload({disabled:false}); 
     88                    displayMessageInQueue(0); 
     89                    disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     90               } else { 
     91                    $msg = dotclear.msg.enhanced_uploader_activate; 
     92                    label = dotclear.jsUpload.msg.choose_file; 
     93               } 
     94 
     95               $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click(function() { 
     96                    if ($container.hasClass('enhanced_uploader')) { 
     97                         $msg = dotclear.msg.enhanced_uploader_activate; 
     98                         label = dotclear.jsUpload.msg.choose_file; 
     99                         $('#upfile').attr('multiple', false); 
     100                         enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
     101                          
     102                         // when a user has clicked enhanced_uploader, and has added files 
     103                         // We must remove files in table 
     104                         $('.files .upload-file', me).remove(); 
     105                         $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide(); 
     106                         $(me).fileupload({disabled:true}); 
     107                         $('.queue-message',me).html('').hide(); 
     108                    } else { 
     109                         $msg = dotclear.msg.enhanced_uploader_disable; 
     110                         label = dotclear.jsUpload.msg.choose_files; 
     111                         $('#upfile').attr('multiple', true); 
     112                         var startButton = $('.button.start','#fileupload .fileupload-buttonbar'); 
     113                         disableButton(startButton); 
     114                         startButton.show(); 
     115                         $(me).fileupload({disabled:false}); 
     116                         $('.queue-message',me).show(); 
     117                         displayMessageInQueue(0); 
     118                    } 
     119                    $(this).find('a').text($msg); 
     120                    $('.add-label', me).text(label); 
     121                     
     122                    $container.toggleClass('enhanced_uploader'); 
     123               }).appendTo(me); 
     124          }); 
     125     }; 
     126})(jQuery); 
     127 
     128 
    1129$(function() { 
    2      if ($('#fileupload').length==0) { 
    3           return; 
    4      } 
    5  
    6      function enableButton(button) { 
    7           button.prop('disabled',false).removeClass('disabled'); 
    8      } 
    9  
    10      function disableButton(button) { 
    11           button.prop('disabled',true).addClass('disabled'); 
    12      } 
    13  
    14      function displayMessageInQueue(n) { 
    15           var msg = ''; 
    16           if (n==1) { 
    17                msg = dotclear.jsUpload.msg.file_in_queue; 
    18           } else if (n>1) { 
    19                msg = dotclear.jsUpload.msg.files_in_queue; 
    20                msg = msg.replace(/%d/,n); 
    21           } else { 
    22                msg = dotclear.jsUpload.msg.no_file_in_queue; 
    23           } 
    24           $('.queue-message','#fileupload').html(msg); 
    25      } 
    26  
    27      $('.button.add').click(function(e) { 
    28           // Use the native click() of the file input. 
    29           $('#upfile').click(); 
    30           e.preventDefault(); 
    31      }); 
    32  
    33      $('.button.cancel', '#fileupload .fileupload-buttonbar').click(function(e) { 
    34           $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    35           disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    36           displayMessageInQueue(0); 
    37      }); 
    38  
    39      $('.cancel').live('click', function(e) { 
    40           if ($('.fileupload-ctrl .files .template-upload', '#fileupload').length==0) { 
    41                $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    42                disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    43           } 
    44           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    45      }); 
    46  
    47      $('.button.clean', '#fileupload').click(function(e) { 
    48           $('.fileupload-ctrl .files .template-download', '#fileupload').slideUp(500, function() { 
    49                $(this).remove(); 
    50           }); 
    51           $(this).hide(); 
    52           e.preventDefault(); 
    53      }); 
    54  
    55      $('#fileupload').fileupload({ 
    56           url: $('#fileupload').attr('action'), 
    57           autoUpload: false, 
    58           sequentialUploads: true, 
    59           uploadTemplateId: null, 
    60           downloadTemplateId: null, 
    61           uploadTemplate: template_upload, 
    62           downloadTemplate: template_download 
    63      }).bind('fileuploadadd', function(e, data) { 
    64           $('.button.cancel','#fileupload .fileupload-buttonbar').show(); 
    65           enableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    66      }).bind('fileuploadadded', function(e, data) { 
    67           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    68      }).bind('fileuploaddone', function(e, data) { 
    69           if (data.result.files[0].html !==undefined) { 
    70                $('.media-list p.clear').before(data.result.files[0].html); 
    71           } 
    72           $('.button.clean','#fileupload').show(); 
    73      }).bind('fileuploadalways', function(e, data) { 
    74           displayMessageInQueue($('.files .template-upload','#fileupload').length); 
    75           if ($('.fileupload-ctrl .files .template-upload','#fileupload').length==0) { 
    76                $('.button.cancel','#fileupload .fileupload-buttonbar').hide(); 
    77                disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    78           } 
    79      }); 
    80  
    81      var $container = $('#fileupload').parent().parent(); 
    82      var $msg,label; 
    83  
    84      if ($container.hasClass('enhanced_uploader')) { 
    85           $msg = dotclear.msg.enhanced_uploader_disable; 
    86           label = dotclear.jsUpload.msg.choose_files; 
    87           $('#fileupload').fileupload({disabled:false}); 
    88           displayMessageInQueue(0); 
    89           disableButton($('.button.start','#fileupload .fileupload-buttonbar')); 
    90      } else { 
    91           $msg = dotclear.msg.enhanced_uploader_activate; 
    92           label = dotclear.jsUpload.msg.choose_file; 
    93      } 
    94  
    95      $('<p class="clear"><a class="enhanced-toggle" href="#">' + $msg + '</a></p>').click( function() { 
    96           if ($container.hasClass('enhanced_uploader')) { 
    97                $msg = dotclear.msg.enhanced_uploader_activate; 
    98                label = dotclear.jsUpload.msg.choose_file; 
    99                $('#upfile').attr('multiple', false); 
    100  
    101                // when a user has clicked enhanced_uploader, and has added files 
    102                // We must remove files in table 
    103                $('.files .upload-file', '#fileupload').remove(); 
    104                $('.button.cancel,.button.clean','#fileupload .fileupload-buttonbar').hide(); 
    105                $('#fileupload').fileupload({disabled:true}); 
    106                $('.queue-message','#fileupload').html('').hide(); 
    107           } else { 
    108                $msg = dotclear.msg.enhanced_uploader_disable; 
    109                label = dotclear.jsUpload.msg.choose_files; 
    110                $('#upfile').attr('multiple', true); 
    111                var startButton = $('.button.start','#fileupload .fileupload-buttonbar'); 
    112                disableButton(startButton); 
    113                startButton.show(); 
    114                $('#fileupload').fileupload({disabled:false}); 
    115                $('.queue-message','#fileupload').show(); 
    116                displayMessageInQueue(0); 
    117           } 
    118           $(this).find('a').text($msg); 
    119           $('.add-label', '#fileupload').text(label); 
    120  
    121           $container.toggleClass('enhanced_uploader'); 
    122      }).appendTo($('#fileupload')); 
     130     $('#fileupload').enhancedUploader(); 
    123131 
    124132     // Replace remove links by a POST on hidden form 
  • admin/js/jquery/jquery.pageTabs.js

    r1280 r1737  
    99          breakerClassName: 'clear' 
    1010     }; 
    11  
     11      
    1212     var index = start_tab ? start_tab : 0; 
    13  
     13     var hash = document.location.hash.split('#').join(''); 
     14     if( hash != '' ) { 
     15          var index = hash; 
     16     } 
     17      
    1418     this.params = jQuery.extend(defaults,settings); 
    1519     this.divs = jQuery('div.'+this.params.className); 
    1620     this.createList(); 
    1721     this.showDiv(index); 
     22     var pageTabs = this; 
     23      
     24     window.onhashchange = function (event) { 
     25          pageTabs.showDiv(document.location.hash.split('#').join('')); 
     26    } 
    1827}; 
    1928 
     
    3948                    li = document.createElement('li'); 
    4049                    a = document.createElement('a'); 
    41                     a.appendChild(document.createTextNode(this.title)); 
     50                    $(a).html(this.title); 
    4251                    this.title = ''; 
    43                     a.href = '#'; 
    4452                    a.fn = This.showDiv; 
    4553                    a.index = this.id || i; 
     54                    a.href = '#'+a.index; 
     55                    li.id = "part-tabs-"+a.index; 
    4656                    a.obj = This; 
    47                     jQuery(a).click(function() { this.fn.call(this.obj,this.index); return false; }); 
    4857                    li.appendChild(a); 
    4958                    This.list.appendChild(li); 
  • admin/js/meta-editor.js

    r175 r1741  
    2828          this.target.empty(); 
    2929           
    30           this.meta_dialog = $('<input type="text" />'); 
     30          this.meta_dialog = $('<input type="text" class="ib" />'); 
    3131          this.meta_dialog.attr('title',this.text_add_meta.replace(/%s/,this.meta_type)); 
    3232          this.meta_dialog.attr('id','post_meta_input'); 
     
    4242          var This = this; 
    4343           
    44           this.submit_button = $('<input type="button" value="ok" />'); 
     44          this.submit_button = $('<input type="button" value="ok" class="ib" />'); 
    4545          this.submit_button.click(function() { 
    4646               var v = This.meta_dialog.val(); 
  • admin/media.php

    r1681 r1725  
    9191     $dir =& $core->media->dir; 
    9292     if  (!$core_media_writable) { 
    93           throw new Exception('you do not have sufficient permissions to write to this folder: '); 
     93//        throw new Exception('you do not have sufficient permissions to write to this folder: '); 
    9494     } 
    9595} catch (Exception $e) { 
     
    262262     ); 
    263263 
     264if (!$core_media_writable) { 
     265     dcPage::warning(__('You do not have sufficient permissions to write to this folder.')); 
     266} 
     267 
    264268if (!empty($_GET['mkdok'])) { 
    265269     dcPage::success(__('Directory has been successfully created.')); 
     
    343347{ 
    344348     echo  
    345      '<h3>'.sprintf(__('In %s:'),($d == '' ? '“'.__('Media manager').'”' : '“'.$d.'”')).'</h3>'. 
     349     '<h3 class="hidden">'.sprintf(__('In %s:'),($d == '' ? '“'.__('Media manager').'”' : '“'.$d.'”')).'</h3>'. 
    346350     '<div class="media-action-box">'; 
    347351      
     
    393397     '</div>'. 
    394398     '</div>'; 
    395  
    396      echo 
    397      '<div class="media-action-box">'. 
    398      '<form action="'.html::escapeURL($page_url).'" method="post">'. 
    399      '<div id="new-dir-f">'. 
    400      '<h4>'.__('Create new directory').'</h4>'. 
    401      $core->formNonce(). 
    402      '<p><label for="newdir">'.__('Directory Name:').'</label>'. 
    403      form::field(array('newdir','newdir'),35,255).'</p>'. 
    404      '<p><input type="submit" value="'.__('Create').'" />'. 
    405      form::hidden(array('d'),html::escapeHTML($d)).'</p>'. 
    406      '</div>'. 
    407      '</form>'. 
    408      '</div>'; 
    409      } 
     399} 
     400 
     401$core_media_archivable = $core->auth->check('media_admin',$core->blog->id) &&  
     402     !(count($items) == 0 || (count($items) == 1 && $items[0]->parent)); 
     403 
     404if ($core_media_writable || $core_media_archivable) { 
     405 
     406     echo '<div class="media-action-box">'; 
     407 
     408     # Create directory 
     409     if ($core_media_writable) 
     410     { 
     411          echo 
     412          '<form action="'.html::escapeURL($page_url).'" method="post">'. 
     413          '<div id="new-dir-f">'. 
     414          '<h4>'.__('Create new directory').'</h4>'. 
     415          $core->formNonce(). 
     416          '<p><label for="newdir">'.__('Directory Name:').'</label>'. 
     417          form::field(array('newdir','newdir'),35,255).'</p>'. 
     418          '<p><input type="submit" value="'.__('Create').'" />'. 
     419          form::hidden(array('d'),html::escapeHTML($d)).'</p>'. 
     420          '</div>'. 
     421          '</form>'; 
     422     } 
     423 
     424     # Get zip directory 
     425     if ($core_media_archivable) 
     426     { 
     427          echo 
     428          '<h4>'.__('Backup content').'</h4>'. 
     429          '<p>'.__('Compress this directory with its content as a zip file and download it.').'</p>'. 
     430          '<p><a class="submit" href="'.html::escapeURL($page_url).'&amp;zipdl=1">'. 
     431          __('Download').'</a></p>'; 
     432     } 
     433 
     434     echo '</div>'; 
     435} 
    410436 
    411437# Empty remove form (for javascript actions) 
     
    419445'</form>'; 
    420446 
    421 # Get zip directory 
    422 if ($core->auth->check('media_admin',$core->blog->id) &&  
    423      !(count($items) == 0 || (count($items) == 1 && $items[0]->parent))) 
    424 { 
    425      echo 
    426      '<div class="media-action-box">'. 
    427      '<h4>'.__('Backup content').'</h4>'. 
    428      '<p>'.__('Compress this directory with its content as a zip file and download it.').'</p>'. 
    429      '<p><a class="submit" href="'.html::escapeURL($page_url).'&amp;zipdl=1">'. 
    430      __('Download').'</a></p>'. 
    431      '</div>'; 
    432 } 
    433  
    434447call_user_func($close_f); 
    435448 
  • admin/popup_link.php

    r1399 r1719  
    2525# Languages combo 
    2626$rs = $core->blog->getLangs(array('order'=>'asc')); 
    27 $all_langs = l10n::getISOcodes(0,1); 
    28 $lang_combo = array('' => '', __('Most used') => array(), __('Available') => l10n::getISOcodes(1,1)); 
    29 while ($rs->fetch()) { 
    30      if (isset($all_langs[$rs->post_lang])) { 
    31           $lang_combo[__('Most used')][$all_langs[$rs->post_lang]] = $rs->post_lang; 
    32           unset($lang_combo[__('Available')][$all_langs[$rs->post_lang]]); 
    33      } else { 
    34           $lang_combo[__('Most used')][$rs->post_lang] = $rs->post_lang; 
    35      } 
    36 } 
    37 unset($all_langs); 
    38 unset($rs); 
     27$lang_combo = dcAdminCombos::getLangsCombo($rs,true); 
    3928 
    4029echo 
  • admin/post.php

    r1714 r1741  
    5151 
    5252# Getting categories 
    53 $categories_combo = array('&nbsp;' => ''); 
    54 try { 
    55      $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    56      while ($categories->fetch()) { 
    57           $categories_combo[] = new formSelectOption( 
    58                str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    59                $categories->cat_id 
    60      ); 
    61      } 
    62 } catch (Exception $e) { } 
    63  
    64 # Status combo 
    65 foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    66      $status_combo[$v] = (string) $k; 
    67 } 
     53$categories_combo = dcAdminCombos::getCategoriesCombo( 
     54     $core->blog->getCategories(array('post_type'=>'post')) 
     55); 
     56 
     57$status_combo = dcAdminCombos::getPostStatusesCombo(); 
     58 
    6859$img_status_pattern = '<img class="img_select_option" alt="%1$s" title="%1$s" src="images/%2$s" />'; 
    6960 
    7061# Formaters combo 
    71 foreach ($core->getFormaters() as $v) { 
    72      $formaters_combo[$v] = $v; 
    73 } 
     62$formaters_combo = dcAdminCombos::getFormatersCombo(); 
    7463 
    7564# Languages combo 
    7665$rs = $core->blog->getLangs(array('order'=>'asc')); 
    77 $all_langs = l10n::getISOcodes(0,1); 
    78 $lang_combo = array('' => '', __('Most used') => array(), __('Available') => l10n::getISOcodes(1,1)); 
    79 while ($rs->fetch()) { 
    80      if (isset($all_langs[$rs->post_lang])) { 
    81           $lang_combo[__('Most used')][$all_langs[$rs->post_lang]] = $rs->post_lang; 
    82           unset($lang_combo[__('Available')][$all_langs[$rs->post_lang]]); 
    83      } else { 
    84           $lang_combo[__('Most used')][$rs->post_lang] = $rs->post_lang; 
    85      } 
    86 } 
    87 unset($all_langs); 
    88 unset($rs); 
     66$lang_combo = dcAdminCombos::getLangsCombo($rs,true); 
    8967 
    9068# Validation flag 
     
    305283 
    306284# Getting categories 
    307 $categories_combo = array(__('(No cat)') => ''); 
    308 try { 
    309      $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    310      if (!$categories->isEmpty()) { 
    311           while ($categories->fetch()) { 
    312                $catparents_combo[] = $categories_combo[] = new formSelectOption( 
    313                     str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    314                     $categories->cat_id 
    315                ); 
    316           } 
    317      } 
    318 } catch (Exception $e) { } 
    319  
     285$categories_combo = dcAdminCombos::getCategoriesCombo( 
     286     $core->blog->getCategories(array('post_type'=>'post')) 
     287); 
    320288/* DISPLAY 
    321289-------------------------------------------------------- */ 
     
    446414                         '</p>'. 
    447415                         '<p>'.($post_id && $post_format != 'xhtml' ?  
    448                          '<a id="convert-xhtml" class="button maximal" href="post.php?id='.$post_id.'&amp;xconv=1">'. 
     416                         '<a id="convert-xhtml" class="button" href="post.php?id='.$post_id.'&amp;xconv=1">'. 
    449417                         __('Convert to XHTML').'</a>' : '').'</p></div>')), 
    450418          'metas-box' => array( 
     
    517485           
    518486          "post_excerpt" => 
    519                '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'<span class="form-note">'. 
     487               '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').' <span class="form-note">'. 
    520488               __('Introduction to the post.').'</span></label> '. 
    521489               form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)). 
     
    529497           
    530498          "post_notes" => 
    531                '<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').'<span class="form-note">'. 
     499               '<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').' <span class="form-note">'. 
    532500               __('Unpublished notes.').'</span></label>'. 
    533501               form::textarea('post_notes',50,5,html::escapeHTML($post_notes)). 
     
    580548      
    581549     foreach ($sidebar_items as $id => $c) { 
    582           echo '<div id="'.$id.'" class="box">'. 
     550          echo '<div id="'.$id.'" class="sb-box">'. 
    583551               '<h4>'.$c['title'].'</h4>'; 
    584552          foreach ($c['items'] as $e_name=>$e_content) { 
     
    633601      
    634602     echo 
    635      '<div id="comments" class="multi-part" title="'.__('Comments').'">'; 
     603     '<div id="comments" class="clear multi-part" title="'.__('Comments').'">'; 
    636604           
    637605     # --BEHAVIOR-- adminCommentsActionsCombo 
     
    640608     $has_action = !empty($combo_action) && (!$trackbacks->isEmpty() || !$comments->isEmpty()); 
    641609     echo  
    642      '<p class="top-add"><a class="button add onblog_link" href="#comment-form">'.__('Add a comment').'</a></p>'; 
     610     '<p class="top-add"><a class="button add" href="#comment-form">'.__('Add a comment').'</a></p>'; 
    643611      
    644612     if ($has_action) { 
  • admin/posts.php

    r1596 r1719  
    4747{ 
    4848     # Filter form we'll put in html_block 
    49      $users_combo = $categories_combo = array(); 
    50      $users_combo['-'] = $categories_combo['-'] = ''; 
    51      while ($users->fetch()) 
    52      { 
    53           $user_cn = dcUtils::getUserCN($users->user_id,$users->user_name, 
    54           $users->user_firstname,$users->user_displayname); 
    55            
    56           if ($user_cn != $users->user_id) { 
    57                $user_cn .= ' ('.$users->user_id.')'; 
    58           } 
    59            
    60           $users_combo[$user_cn] = $users->user_id;  
    61      } 
    62       
     49     $users_combo = array_merge( 
     50          array('-' => ''), 
     51          dcAdminCombos::getUsersCombo($users) 
     52     ); 
     53 
     54     $categories_combo = array_merge( 
     55          array('-' => ''), 
     56          dcAdminCombos::getCategoriesCombo($categories) 
     57     ); 
    6358     $categories_combo[__('(No cat)')] = 'NULL'; 
    64      while ($categories->fetch()) { 
    65           $categories_combo[str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; '). 
    66                html::escapeHTML($categories->cat_title). 
    67                ' ('.$categories->nb_post.')'] = $categories->cat_id; 
    68      } 
    69       
    70      $status_combo = array( 
    71      '-' => '' 
    72      ); 
    73      foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    74           $status_combo[$v] = (string) $k; 
    75      } 
     59      
     60     $status_combo = array_merge( 
     61          array('-' => ''), 
     62          dcAdminCombos::getPostStatusesCombo()    
     63     ); 
    7664      
    7765     $selected_combo = array( 
     
    8270      
    8371     # Months array 
    84      $dt_m_combo['-'] = ''; 
    85      while ($dates->fetch()) { 
    86           $dt_m_combo[dt::str('%B %Y',$dates->ts())] = $dates->year().$dates->month(); 
    87      } 
    88       
    89      $lang_combo['-'] = ''; 
    90      while ($langs->fetch()) { 
    91           $lang_combo[$langs->post_lang] = $langs->post_lang; 
    92      } 
     72     $dt_m_combo = array_merge( 
     73          array('-' => ''), 
     74          dcAdminCombos::getDatesCombo($dates) 
     75     ); 
     76      
     77     $lang_combo = array_merge( 
     78          array('-' => ''), 
     79          dcAdminCombos::getLangsCombo($langs,false)    
     80     ); 
    9381      
    9482     $sortby_combo = array( 
  • admin/posts_actions.php

    r1637 r1719  
    414414     # categories list 
    415415     # Getting categories 
    416      $categories_combo = array(__('(No cat)') => ''); 
    417      try { 
    418           $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    419           if (!$categories->isEmpty()) { 
    420           while ($categories->fetch()) { 
    421                     $catparents_combo[] = $categories_combo[] = new formSelectOption( 
    422                          str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    423                     $categories->cat_id 
    424                ); 
    425           } 
    426           } 
    427      } catch (Exception $e) { } 
     416     $categories_combo = dcAdminCombos::getCategoriesCombo( 
     417          $core->blog->getCategories(array('post_type'=>'post')) 
     418     ); 
    428419      
    429420     echo 
     
    465456     # Languages combo 
    466457     $rs = $core->blog->getLangs(array('order'=>'asc')); 
    467      $all_langs = l10n::getISOcodes(0,1); 
    468      $lang_combo = array('' => '', __('Most used') => array(), __('Available') => l10n::getISOcodes(1,1)); 
    469      while ($rs->fetch()) { 
    470           if (isset($all_langs[$rs->post_lang])) { 
    471                $lang_combo[__('Most used')][$all_langs[$rs->post_lang]] = $rs->post_lang; 
    472                unset($lang_combo[__('Available')][$all_langs[$rs->post_lang]]); 
    473           } else { 
    474                $lang_combo[__('Most used')][$rs->post_lang] = $rs->post_lang; 
    475           } 
    476      } 
    477      unset($all_langs); 
    478      unset($rs); 
     458     $lang_combo = dcAdminCombos::getLangsCombo($rs,true); 
    479459      
    480460     echo 
  • admin/preferences.php

    r1609 r1726  
    5656} 
    5757 
    58 foreach ($core->getFormaters() as $v) { 
    59      $formaters_combo[$v] = $v; 
    60 } 
    61  
    62 foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    63      $status_combo[$v] = $k; 
    64 } 
     58# Formaters combo 
     59$formaters_combo = dcAdminCombos::getFormatersCombo(); 
     60 
     61$status_combo = dcAdminCombos::getPostStatusescombo(); 
    6562 
    6663$iconsets_combo = array(__('Default') => ''); 
     
    7774 
    7875# Language codes 
    79 $langs = l10n::getISOcodes(1,1); 
    80 foreach ($langs as $k => $v) { 
    81      $lang_avail = $v == 'en' || is_dir(DC_L10N_ROOT.'/'.$v); 
    82      $lang_combo[] = new formSelectOption($k,$v,$lang_avail ? 'avail10n' : ''); 
    83 } 
     76$lang_combo = dcAdminCombos::getAdminLangsCombo(); 
    8477 
    8578# Add or update user 
     
    409402 
    410403'<p><label for="user_url">'.__('URL:').'</label>'. 
    411 form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>'; 
     404form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>'. 
     405 
     406'<p><label for="user_lang">'.__('Language for my interface:').'</label>'. 
     407form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'. 
     408 
     409'<p><label for="user_tz">'.__('My timezone:').'</label>'. 
     410form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'; 
     411 
    412412 
    413413if ($core->auth->allowPassChange()) 
     
    456456'<h4>'.__('Interface').'</h4>'. 
    457457 
    458 '<p><label for="user_lang">'.__('Language for my interface:').'</label>'. 
    459 form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'. 
    460  
    461 '<p><label for="user_tz">'.__('My timezone:').'</label>'. 
    462 form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'. 
    463  
    464458'<p><label for="user_ui_enhanceduploader" class="classic">'. 
    465459form::checkbox('user_ui_enhanceduploader',1,$user_ui_enhanceduploader).' '. 
  • admin/style/default.css

    r1698 r1748  
    11/* 
    2 # -- BEGIN LICENSE BLOCK --------------------------------------- 
    3 # 
     2# -- BEGIN LICENSE BLOCK -------------------------------------------------- 
    43# This file is part of Dotclear 2. 
    5 # 
    64# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear 
    75# Licensed under the GPL version 2.0 license. 
    8 # See LICENSE file or 
    9 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    10 # 
    11 # -- END LICENSE BLOCK ----------------------------------------- 
     6# See LICENSE file or http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
     7# -- END LICENSE BLOCK ---------------------------------------------------- 
     8               LAYOUTS 
     9               HTML TAGS 
     10               FORMULAIRES 
     11               BOUTONS 
     12               MESSAGES 
     13               ELEMENTS PRINCIPAUX 
     14               REGLES SPECIFIQUES 
     15               MEDIA QUERIES 
    1216*/ 
    13  
    14 /* ------------------------------------------------------------------ html */ 
    15 html { 
    16      font-size: 62.5%; 
    17 } 
    18 body { 
    19      font-size: 12px; /* ie < 9 sucks */ 
    20      font-size: 1.2rem; 
    21      line-height: 1.5; 
    22      font-family: Arial,Helvetica,sans-serif; 
    23      color: #333; 
    24      background: #fff; 
    25      margin: 0; 
    26      padding: 0; 
    27 } 
    28  
    29 a, a:link, a:visited { 
    30      color: #2373A8; 
    31      text-decoration: none; 
    32      border-bottom: 1px dotted #f90; 
    33 } 
    34 a:hover, a:active, a:focus { 
    35      text-decoration: underline; 
    36 } 
    37 a img, a:link img, a:visited img { 
    38      border:none; 
    39 } 
    40 h1, h2, h3, .as_h3, h4, h5, h6, p { 
    41      margin-top: 0; 
    42      margin-bottom: 1em; 
    43 } 
    44 h2 { 
    45      color: #666; 
    46      font-size: 18px; /* ie < 9 sucks */ 
    47      font-size: 1.8rem; 
    48      padding: 0 0 1.5em; 
    49      font-weight: normal; 
    50 } 
    51 h2 a:link, h2 a:visited { 
    52      color: #666; 
    53      border-color: #000; 
    54 } 
    55 .page-title { 
    56      color: #d30e60; 
    57 } 
    58 .page-title img { 
    59      padding-left: .5em; 
    60      vertical-align: middle; 
    61 } 
    62 #content > h2 { 
    63      padding: 0 18px 6px; /* ie < 9 sucks */ 
    64      padding: 0 1.8rem .6rem; 
    65      margin: 0 -18px .5em; /* ie < 9 sucks */ 
    66      margin: 0 -1.8rem 1rem; 
    67      background: #fff url(bg_h2.png) repeat-x center bottom; 
    68 } 
    69 h3, .as_h3 { 
    70      color: #575859; 
    71      font-size: 16px; /* ie < 9 sucks */ 
    72      font-size: 1.6rem; 
    73 } 
    74 h4 { 
    75      font-size: 14px; /* ie < 9 sucks */ 
    76      font-size: 1.4rem; 
    77      color: #575859; 
    78 } 
    79 h5 { 
    80      font-size: 12px; /* ie < 9 sucks */ 
    81      font-size: 1.2rem; 
    82      color: #575859; 
    83 } 
    84 #entry-sidebar h5 { 
    85      font-weight: normal; 
    86      color: #333; 
    87 } 
    88 .entry-status img.img_select_option { 
    89      padding-left: 4px; 
    90      vertical-align: text-top; 
    91 } 
    92 p, div.p { 
    93      margin: 0 0 1em 0; 
    94 } 
    95 hr { 
    96      height: 1px; 
    97      border-width: 1px 0 0; 
    98      border-color: #999; 
    99      border-style: solid; 
    100 } 
    101 pre, code { 
    102      font: 100% "Andale Mono","Courier New",monospace; 
    103 } 
    104 pre { 
    105      white-space: pre; 
    106      white-space: -moz-pre-wrap; 
    107      white-space: -hp-pre-wrap; 
    108      white-space: -o-pre-wrap; 
    109      white-space: -pre-wrap; 
    110      white-space: pre-wrap; 
    111      white-space: pre-line; 
    112      word-wrap: break-word; 
    113 } 
    114 abbr { 
    115      cursor: help; 
    116 } 
    117  
    118 /* LAYOUT 
    119 -------------------------------------------------------- */ 
    120 /* header */ 
     17/* --------------------------------------------------------------------------- 
     18                                                                                     LAYOUTS 
     19---------------------------------------------------------------------------- */ 
    12120#header { 
    122      background: #575859; 
     21     background: #676e78; 
    12322     position: relative; 
    12423     border-bottom: 4px solid #A2CBE9; 
    12524     width: 100%; 
    126 } 
    127 #prelude { 
    128      line-height: 1.5; 
    129      margin: 0; 
    130      padding: 0; 
    131      overflow: hidden; 
    132      position: absolute; 
    133      top: 3em; 
    134      left: 0; 
    135      background: #A2CBE9; 
    136      width: 100%; 
    137      } 
    138 #prelude li { 
    139      list-style-type: none; 
    140      margin: 0; 
    141      background:transparent; 
    142      display: inline; 
    143 } 
    144 #prelude li a { 
    145      padding: 3px 16px 3px 8px; /* ie < 9 sucks */ 
    146      padding: 3px 1.6rem 3px .8rem; 
    147      background: #A2CBE9; 
    148      color: #000; 
    149      border-bottom-color: #A2CBE9; 
    150 } 
    151 #top { 
    152      margin: 0; 
    153      padding: 0; 
    154      width: 14.5em; 
    155      float: left; 
    156 } 
    157 #top h1 { 
    158      padding: 0; 
    159      margin: 0; 
    160      height: 36px; 
    161      text-indent: -1000px; 
    162 } 
    163 #top h1 a { 
    164      position: absolute; 
    165      top: 0; 
    166      left: 0; 
    167      width: 174px; /* ie < 9 sucks */ 
    168      width: 17.4rem; 
    169      height: 36px; /* ie < 9 sucks */ 
    170      height: 3.6rem; 
    171      border: none; 
    172      color: #fff; 
    173 } 
    174 #top h1 a:link { 
    175      background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 6px; 
    176 } 
    177 #top h1 a:hover, #top h1 a:focus { 
    178      background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px; 
    179 } 
    180 #info-boxes { 
    181      font-size: 12px; /* ie < 9 sucks */ 
    182      font-size: 1.2rem; 
    183      line-height: 3em; 
    184 } 
    185 #info-box1 { 
    186      margin: 0; 
    187      padding: 0 3px 0 18px; 
    188      color: #fff; 
    189      display: inline-block; 
    190 } 
    191 #info-box2 { 
    192      margin: 0; 
    193      padding: 0 18px 0 0; 
    194      color: #fff; 
    195      float: right; 
    196      text-align: right; 
    197 } 
    198 #info-box1 p { 
    199      margin: 0; 
    200      display: inline; 
    201 } 
    202 #info-box1 select { 
    203      width: 145px; /* ie < 9 sucks */ 
    204      width: 14.5em; 
    205 } 
    206 #info-box1 a img, #info-box2 a img { 
    207      vertical-align: middle; 
    208      padding-left: .3em; 
    209      } 
    210 #info-boxes a { 
    211      font-weight: bold; 
    212      color: #fff; 
    213      border-bottom-color: #ccc; 
    214      margin-left: .3em; 
    215      margin-right: .3em; 
    216      white-space: nowrap; 
    217      font-weight: normal; 
    218 } 
    219 #info-boxes .logout { 
    220      margin-right: 0; 
    221 } 
    222 #info-box1 a { 
    223      margin-left: 1.33em; 
    224 } 
    225 #info-box2 a.active { 
    226      border-bottom-color: #fff; 
    227      margin: 0; 
    228      padding: 1.2em .5em; 
    229      background-color: #fff; 
    230      color: #333; 
    231      font-weight: bold; 
    232 } 
    233 #info-box2 span { 
    234      color: #999; 
    235 } 
    236 /* main blocks */ 
     25     } 
    23726#wrapper { 
    23827     width: 100%; 
    23928     padding-top: 1em; 
    240 } 
     29     } 
    24130#main { 
    24231     width: 100%; 
     
    24534     margin-top: 0; 
    24635     background: #fff url(bg_menu.png); 
    247 } 
     36     } 
    24837#content { 
    24938     margin: 0 0 0 14.5em; 
     
    25140     padding: .9rem 1.8rem 1.8rem; 
    25241     background: #fff; 
    253 } 
    254      /* Micro clearfix thx to Nicolas Gallagher */ 
    255      #content:before, #content:after {content:"";display:table;} 
    256      #content:after {clear:both;} 
    257 /* -------------------------------------------------- layout - multipart */ 
    258 .three-cols { 
    259 } 
    260 .three-cols .col { 
    261      width: 32.3%; 
    262      float: left; 
    263      margin-left: 1%; 
    264 } 
    265 .three-cols .col:first-child { 
    266      width: 33.3%; 
    267      margin-left: 0; 
    268 } 
    269 .two-cols { 
    270      position: static; 
    271 } 
    272 .two-cols .col { 
    273      width: 48%; 
    274      margin-left: 2%; 
    275      float: left; 
    276 } 
    277 .two-cols .col70{ 
    278      width: 68%; 
    279      margin-left: 0; 
    280      float: left; 
    281 } 
    282 .col30 { 
    283      width: 28%; 
    284      margin-left: 2%; 
    285      float: left; 
    286 } 
    287 .two-cols .col:first-child, 
    288 .two-cols .col30.first-col { 
    289      margin-left: 0; 
    290      margin-right: 2%; 
    291 } 
    292 .two-cols .col:last-child, 
    293 .two-cols .col70.last-col { 
    294      margin-left: 2%; 
    295      margin-right: 0; 
    296 } 
    297 /* -------------------------------------------------------------- layout - onglets */ 
    298 .part-tabs ul { 
    299      padding: .5em 0 .3em 1em; 
    300      border-bottom: 1px solid #ddd; 
    301 } 
    302 .part-tabs li { 
    303      list-style: none; 
    304      margin: 0; 
    305      display: inline; 
    306 } 
    307 .part-tabs li a { 
    308      padding: .5em 2em; 
    309      margin-right: -1px; 
    310      border: 1px solid #aaa; 
    311      border-bottom: none; 
    312      text-decoration: none; 
    313      color: #333; 
    314      background-color:#E4E0EC; 
    315 } 
    316 .part-tabs li a:hover, .part-tabs li a:focus { 
    317      color: #000; 
    318      background: #fff; 
    319      border-bottom-color: #fff; 
    320 } 
    321 .part-tabs li.part-tabs-active a { 
    322      background: #fff; 
    323      font-weight: bold; 
    324      border-bottom-color: #fff; 
    325      padding-bottom: 7px; /* ie < 9 sucks */ 
    326      padding-bottom: .7rem; 
    327 } 
    328 /* ------------------------------------------------------------------ main-menu */ 
     42     } 
    32943#main-menu { 
    33044     width: 14.5em; 
     
    33448     padding-bottom: 1em; 
    33549     background: #f7f7f7; 
    336 } 
    337 #main-menu h3 { 
    338      margin: 0; 
    339      padding: 10px 0 10px 8px; 
    340      color: #666; 
    341      font-size: 14px; /* ie < 9 sucks */ 
    342      font-size: 1.4rem; 
    343 } 
    344 #main-menu h3 img[alt="cacher"] { 
    345      vertical-align: top; 
    346 } 
    347 #main-menu ul { 
    348      margin: 0 0 1.5em 0; 
    349      padding: 0; 
    350      list-style: none; 
    351 } 
    352 #main-menu li { 
    353      display: block; 
    354      margin: 0.5em 0 0; 
    355      padding: 3px 0 0 30px; 
    356      background-repeat: no-repeat; 
    357      background-position: 8px .3em; 
    358 } 
    359 #main-menu ul li:first-child { 
    360      margin-top: 0; 
    361 } 
    362 #main-menu li.active { 
    363      background-color: #fff; 
    364 } 
    365 #main-menu a { 
    366      color: #333; 
    367      border-bottom-color: #ccc; 
    368 } 
    369 #main-menu .active a { 
    370      border-bottom: none; 
    371      color: #d30e60; 
    372 } 
    373 #main-menu .active { 
    374      font-weight: bold; 
    375 } 
    376 #search-menu { 
    377      padding: 4px 5px 0; 
    378      font-size: 100% 
    379 } 
    380 #search-menu * { 
    381      height: 22px; /* ie < 9 sucks */ 
    382      height: 2.2rem; 
    383      display: inline-block; 
    384      vertical-align: top; 
    385      line-height: 22px; 
    386 } 
    387 #search-menu p { 
    388      border: 1px solid #999; 
    389      border-radius: .3em; 
    390      position: relative; 
    391      overflow: hidden; 
    392 } 
    393 #qx { 
    394      width: 124px; /* ie < 9 sucks */ 
    395      width: 12.4rem; 
    396      border-bottom-left-radius: .3em; 
    397      border-top-left-radius: .3em; 
    398      background: transparent url(search.png) no-repeat 4px center; 
    399      text-indent: 18px; 
    400      padding: 0; 
    401      border: none; 
    402      height: 22px; 
    403      height: 2.2rem; 
    404 } 
    405 #qx:focus { 
    406      border: 2px solid #bee74b; 
    407 } 
    408 #search-menu input[type="submit"] { 
    409      padding: 0 3px; 
    410      padding: 0 .3rem; 
    411      margin-left: -4px; 
    412      background: #dfdfdf; 
    413      border-color: #999; 
    414      color: #444; 
    415      border-bottom-right-radius: .3em; 
    416      border-top-right-radius: .3em; 
    417      border-top-left-radius: 0; 
    418      border-bottom-left-radius: 0; 
    419      text-shadow: none; 
    420      border: none; 
    421      border-left: 1px solid #aaa; 
    422      font-size: 10px; /* ie < 9 sucks */ 
    423      font-size: 1rem; 
    424 } 
    425 #search-menu input[type="submit"]:hover, 
    426 #search-menu input[type="submit"]:focus { 
    427      background: #575859; 
    428      color: #fff; 
    429 } 
    430 #favorites-menu, #blog-menu, #system-menu, #plugins-menu { 
    431      border-bottom: 1px dashed #A2CBE9; 
    432 } 
    433 #favorites-menu h3 { 
    434      color: #000; 
    435      font-variant: small-caps; 
    436      padding-top: .2em; 
    437 } 
    438 /* ------------------------------------------------------------------ footer */ 
     50     } 
    43951#footer { 
    44052     clear: both; 
     
    44254     text-align: right; 
    44355     border-top: 1px solid #ccc; 
    444 } 
    445 #footer p { 
    446      margin: 0; 
    447      padding: 0 1em; 
    448      font-size: 1em; 
    449 } 
    450 #footer p span.credit { 
    451      font-size: 1em; 
    452      font-weight: normal; 
    453 } 
    454 /* ---------------------------------------------------------------------------- auth.php */ 
    455 #login-screen { 
    456      display: block; 
    457      width: 20em; 
    458      margin: 1.5em auto 0; 
    459      font-size: 14px; /* ie < 9 sucks */ 
    460      font-size: 1.4rem; 
    461 } 
    462 #login-screen h1 { 
    463      text-indent: -2000px; 
    464      background: transparent url(dc_logos/w-dotclear240.png) no-repeat top left; 
    465      height: 66px; 
    466      margin-bottom: .5em; 
    467      margin-left: 0; 
    468 } 
    469 #login-screen .fieldset { 
    470      border: 1px solid #A8DC26; 
    471      padding: 1em 1em 0 1em; 
    472      border-radius: 3px; 
    473      background: #fff; 
    474 } 
    475 #login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] { 
     56     } 
     57/* -------------------------------------------------------------- layout: two-cols */ 
     58.two-cols { 
     59     position: static; 
     60     } 
     61     .two-cols .col { 
     62          width: 48%; 
     63          margin-left: 2%; 
     64          float: left; 
     65          } 
     66     .two-cols .col70 { 
     67          width: 68%; 
     68          margin-left: 0; 
     69          float: left; 
     70          } 
     71     .col30 { 
     72          width: 28%; 
     73          margin-left: 2%; 
     74          float: left; 
     75          } 
     76     .two-cols .col:first-child, 
     77     .two-cols .col30.first-col { 
     78          margin-left: 0; 
     79          margin-right: 2%; 
     80          } 
     81     .two-cols .col:last-child, 
     82     .two-cols .col70.last-col { 
     83          margin-left: 2%; 
     84          margin-right: 0; 
     85          } 
     86/* ------------------------------------------------- layout: optionnal one/two-boxes */ 
     87.one-box { 
     88     text-align: center; 
    47689     width: 100%; 
    477 } 
    478 #login-screen input.login { 
    479      padding-top: 6px; 
    480      padding-bottom: 6px; 
    481      font-size: 1em; 
    482 } 
    483 #login-screen #issue { 
    484      margin-left: 1.33em; 
    485      font-size: 12px; /* ie < 9 sucks */ 
    486      font-size: 1.2rem; 
    487 } 
    488 #login-screen #issue strong { 
    489      font-weight: normal; 
    490 } 
    491 /* ------------------------------------------------------------------ dashboard */ 
    492 #dashboard-main { 
    493      padding: 1em 0; 
    494 } 
    495 #icons { 
    496      overflow: hidden; 
    497      padding-bottom: 1em; 
    498      text-align: center; 
    499 } 
    500 #icons p { 
    501      width: 210px; 
    502      text-align: center; 
    503      margin: 1em 0 2em; 
    504      padding: 1em 0; 
    505      display:inline-block; 
    506      vertical-align: top; 
    507 } 
    508 #icons a, 
    509 #icons a:link, 
    510 #icons a:visited, 
    511 #icons a:hover, 
    512 #icons a:focus { 
    513      border-bottom-width: 0px; 
    514      text-decoration: none; 
    515 } 
    516 #icons a span { 
    517      border-bottom: 1px dotted #f90; 
    518      color: #333; 
    519 } 
    520 #icons a img { 
    521      padding: 2em; 
    522      -moz-box-shadow: 0px 1px 0px 0px #ffffff; 
    523      -webkit-box-shadow: 0px 1px 0px 0px #ffffff; 
    524      box-shadow: 0px 1px 0px 0px #ffffff; 
    525      background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) ); 
    526      background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% ); 
    527      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9'); 
    528      background-color:#f9f9f9; 
    529      -moz-border-radius:1em; 
    530      -webkit-border-radius:1em; 
    531      border-radius:1em; 
    532      border:1px solid #dcdcdc; 
    533      display:inline-block; 
    534 } 
    535 #icons a:focus img, #icons a:hover img { 
    536      background: #bee74b; 
    537 } 
    538 #icons a:focus span, #icons a:hover span { 
    539      text-decoration: underline; 
    540 } 
    541 #quick { 
    542      margin-top: 2em; 
    543 } 
    544 #quick h3 { 
    545      margin-bottom: 0.2em; 
    546      font-size: 1.2em; 
    547 } 
    548 #quick p.qinfo { 
    549      margin: -.7em -1em 1em; 
    550      background: #f3f3ff url(info.png) no-repeat .2em .2em; 
    551      border: 1px solid #99f; 
    552      padding: .2em 1em .1em 24px; 
    553      color: #666; 
    554 } 
    555 #quick #new_cat, .q-cat, .q-cat label { 
     90     } 
     91     .one-box .box { 
     92          display: inline-block; 
     93          vertical-align: top; 
     94          padding-right: 3%;  
     95          text-align: left; 
     96          } 
     97.two-boxes { 
     98     width: 47%; 
    55699     display: inline-block; 
    557100     vertical-align: top; 
    558      margin-right: 1em; 
    559      margin-top: 0; 
    560 } 
    561 .q-cat label { 
    562      margin-right: .3em; 
    563 } 
    564 #quick #new_cat { 
    565      margin-bottom: 2em; 
    566 } 
    567 #dashboard-items { 
    568      margin: 3em auto; 
    569      display: table; 
    570      width: 100%; 
    571      border-collapse: collapse; 
    572 } 
    573 .db-item { 
    574      display: table-cell; 
    575      padding: 1em 3em; 
    576      vertical-align: top; 
    577      border: 1px solid #ddd; 
    578      border-collapse: collapse; 
    579 } 
    580 .db-item h3 { 
    581      font-weight: normal; 
    582 } 
    583 #dashboard-items img { 
    584      vertical-align: middle; 
    585 } 
    586 #dashboard-items ul { 
    587      display: block; 
    588      padding-left: 1.5em; 
    589      list-style: square; 
    590 } 
    591 #dashboard-items li { 
    592      margin: 0.25em 0 0 0; 
    593      color: #666; 
    594 } 
    595 #news dt { 
    596      font-weight: bold; 
    597      margin: 0 0 0.4em 0; 
    598 } 
    599 #news dd { 
    600      margin: 0 0 1em 0; 
    601 } 
    602 #news dd p { 
    603      margin: 0.2em 0 0 0; 
    604 } 
    605  
    606 #upg-notify { 
    607 } 
    608 #upg-notify ul { 
    609      padding-left: 1.5em; 
    610 } 
    611 #upg-notify li { 
    612      color: #fff; 
    613 } 
    614 /* ------------------------------------------------------------------ post */ 
    615 #entry-wrapper { 
    616      float: left; 
    617      width: 100%; 
    618      margin-right: -18em; 
    619 } 
    620 #entry-content { 
    621      margin-right: 19em; 
    622      margin-left: 0; 
    623 } 
    624 .multi-part { 
    625      padding-left: 1em; 
    626 } 
    627 #entry-content label { 
    628      text-transform: uppercase; 
    629      font-weight: bold; 
    630      margin-top: 2em; 
    631 } 
    632 #entry-sidebar { 
    633      width: 17em; 
    634      float: right; 
    635 } 
    636 #entry-sidebar select { 
    637      width: 100%; 
    638 } 
    639 #entry-sidebar input#post_position { 
    640      width: 4em; 
    641 } 
    642 .box { 
    643      border-bottom: 1px solid #ddd; 
    644      margin-bottom: 1em; 
    645 } 
    646 #comments { 
    647      clear: both; 
    648 } 
    649 #trackback-form textarea { 
    650      width: 98%; 
    651 } 
    652 /* ------------------------------------------------------------------ categories */ 
    653 #categories { 
    654      margin: 1em 0; 
    655 } 
    656 #categories ul { 
    657      list-style: none; 
    658      margin: 0; 
    659      padding: 0; 
    660 } 
    661 #categories li { 
    662      margin: .5em 0; 
    663      padding: .5em 1.2em; 
    664      border: 1px solid #ccc; 
    665      border-left: 8px solid #E5E3DA; 
    666      border-radius: 3px; 
    667 } 
    668 #categories input[type="checkbox"] { 
    669      margin-right: .8em; 
    670 } 
    671 #categories h4 { 
    672      margin: 0; 
    673 } 
    674 #categories label a { 
    675      font-weight: bold; 
    676 } 
    677 #categories h4 span { 
    678      font-weight: normal; 
    679 } 
    680 #categories li p { 
    681      margin: 0; 
    682      display: inline-block; 
    683 } 
    684 .cat-url { 
    685      padding-left: 1em; 
    686 } 
    687 .cat-actions { 
    688      line-height: 2; 
    689 } 
    690 select#del_cat { 
    691      width: 100%; 
    692 } 
    693 #new_cat { 
    694      font-weight: bold; 
    695      margin-top: 2em; 
    696 } 
    697 #categories .placeholder { 
    698         outline: 1px dashed #4183C4; 
    699         min-height: 2.5em; 
    700 } 
    701 #categories input.cat-rank { 
    702   float: right; 
    703   margin-left: 30px; 
    704 } 
    705 #save-set-order.disabled { 
    706         text-shadow: none; 
    707         color: #666; 
    708         background: #F5F5F5; 
    709         border: 1px solid #CCCCCC; 
    710 } 
    711 #save-set-order.disabled:hover { 
    712         color: #666; 
    713         background: #DFDFDF; 
    714         border: 1px solid #CCCCCC; 
    715 } 
    716 /* ------------------------------------------------------------------ media */ 
    717 #media-icon { 
    718      float: left; 
    719 } 
    720 #media-details { 
    721 } 
    722 .near-icon { 
    723      margin-left: 70px; 
    724      margin-bottom: 3em; 
    725 } 
    726 #media-details ul { 
    727      display: block; 
    728      margin-left: 0; 
    729      padding: 0; 
    730 } 
    731 #media-details li { 
    732      list-style: square inside; 
    733      margin: 0; 
    734      padding: 0; 
    735 } 
    736 #media-original-image { 
    737      overflow: auto; 
    738 } 
    739 #media-original-image.overheight { 
    740      height: 500px; 
    741 } 
    742 #add-file-f { 
    743      position: relative; 
    744 } 
    745 #add-file-f .more-file { 
    746      position:absolute; 
    747      right: 0.5em; 
    748      background: #999; 
    749      color: #fff; 
    750      border: none; 
    751 } 
    752 .media-list { 
    753      position: static; 
    754 } 
    755 /*.media-col-0 { 
    756      clear: left; 
    757 } 
    758 .media-item { 
    759      position: relative; 
    760      border-top: 1px solid #ccc; 
    761      margin-bottom: 1em; 
    762      padding: 5px 0; 
    763 } 
    764 div.media-list .media-item { 
    765      width: 49%; 
    766      float: left; 
    767      margin-right: 1%; 
    768 } 
    769 a.media-icon { 
    770      display: block; 
    771      border-bottom: none; 
    772      float: left; 
    773 } 
    774 .media-icon img { 
    775      display: block; 
    776 } 
    777 .media-item ul { 
    778      display: block; 
    779      list-style: none; 
    780      margin: 0 0 0 60px; 
    781      padding: 0; 
    782 }*/ 
    783 li.media-action { 
    784      display: block; 
    785      position: absolute; 
    786      top: 5px; 
    787      right: 5px; 
    788      height: 16px; 
    789 } 
    790 li.media-action a { 
    791      border: none; 
    792 } 
    793 li.media-action form { 
    794      display: inline; 
    795 } 
    796 li.media-action input { 
    797      border: none; 
    798 } 
    799 .media-item, .media-action-box { 
    800      position: relative; 
    801      border: 1px solid #ccc; 
    802      margin: 1em; 
    803      padding: 1em; 
    804      width: 300px; 
     101     } 
     102     .two-boxes:first-child, .two-boxes.odd, .two-boxes.odd:last-child { 
     103          margin-right: 3%; 
     104          } 
     105     .two-boxes.even:last-child, .two-boxes.even { 
     106          margin-left: 3%; 
     107          } 
     108.three-boxes { 
     109     width: 30%; 
    805110     display: inline-block; 
    806111     vertical-align: top; 
    807      min-height: 120px 
    808 } 
    809 a.media-icon { 
    810      display: block; 
    811      border-bottom: none; 
    812      margin: 0 auto;  
    813 } 
    814 .media-icon img { 
    815      display: block; 
    816 } 
    817 .media-item ul { 
    818      display: block; 
    819      list-style: none; 
    820      margin: 0; 
    821      padding: 0; 
    822 } 
    823 /* ------------------------------------------------------------------ preferences */ 
    824 #my-favs { 
    825      border: 1px solid #A8DC26; 
    826      padding: 1em 2em 
    827 } 
    828 #my-favs ul { 
    829      list-style-type: none; 
    830      margin-left: 0; 
    831      padding-left: 0; 
    832      line-height: 1.2; 
    833 } 
    834 #my-favs li { 
    835      display: block; 
    836      float: left; 
    837      width: 164px; 
    838      margin-top: 1em; 
    839      margin-bottom: 1.5em; 
    840 } 
    841 #my-favs label {height: 2.5em;width:140px;margin-top:.3em;} 
    842 #my-favs label input {display:inline;} 
    843 #my-favs img { 
    844      display: block; 
    845 } 
    846 #my-favs input.position { 
    847      margin: 0 0 .4em .2em; 
    848 } 
    849 #available-favs input, #available-favs label, #available-favs label span { 
    850      white-space: normal; 
    851      display: inline; 
    852 } 
    853 #default-favs h3 { 
    854      margin-top: 2em; 
    855      margin-bottom: 1em; 
    856 } 
    857 .fav-list { 
    858      list-style-type: none; 
    859      margin-left: 0; 
    860      padding-left: 0; 
    861 } 
    862 .fav-list li { 
    863      line-height: 2; 
    864      margin-left: 0; 
    865      padding-left: 0; 
    866      position: relative; 
    867 } 
    868 .fav-list img { 
    869      vertical-align: middle; 
    870      margin-right: .2em; 
    871 } 
    872 #available-favs label span.zoom { 
    873      display: none; 
    874 } 
    875 #available-favs li:hover label span.zoom { 
    876      display: block; 
    877      position: absolute; 
    878      bottom: 0; 
    879      left: 10em; 
    880      background-color: #f5f5f5; 
    881      border: 1px solid #ddd; 
    882      padding: .2em; 
    883      border-radius: .5em; 
    884 } 
    885 #user-options label.ib { 
    886      display: inline-block; 
    887      width: 14em; 
    888      padding-right: 1em; 
    889 } 
    890 .blog-perm { 
    891      margin-top: 2em; 
    892      font-weight: bold; 
    893 } 
    894 .ul-perm { 
    895      list-style-type: square; 
    896      margin-left: 0; 
    897      padding-left: 3.5em; 
    898      margin-bottom: 0 
    899 } 
    900 .add-perm { 
    901      padding-top: .5em; 
    902      padding-left: 2.5em; 
    903      margin-left: 0; 
    904 } 
    905 /* in blog_pref */ 
    906 .user-perm { 
    907      margin: 2em 0px; 
    908      background: transparent url(user.png) no-repeat left top; 
    909      width: 320px; 
    910      display: inline-block; 
    911      vertical-align: top; 
    912 } 
    913 .user-perm h4, .user-perm h5, .user-perm p, .user-perm ul, .user-perm li { 
    914      margin: .5em 0 .33em; 
    915      padding: 0; 
    916 } 
    917 .user-perm h4 { 
    918      padding-left: 28px; 
    919 } 
    920 .user-perm ul { 
    921      list-style-type: inside; 
    922 } 
    923 .user-perm li { 
    924      margin-left: 1em; 
    925      padding-left: 0; 
    926 } 
    927 .user-perm h5 { 
    928      margin:   1em 0 0 0; 
    929 } 
    930 li.user_super, li.user_admin { 
    931      margin-left: 0; 
    932      padding-left: 1em; 
    933      list-style: none; 
    934      background: transparent url(../images/superadmin.png) no-repeat -2px 2px; 
    935 } 
    936 li.user_admin { 
    937      background-image: url(../images/admin.png); 
    938 } 
    939  
    940 /* -------------------------------------------------------------------- Themes */ 
    941 #themes { 
    942      margin: 0; 
    943      width: 100%; 
    944      padding: 0; 
    945 } 
    946 #themes h3 { 
    947 } 
    948 #themes div.theme-details { 
    949      border-top: 1px solid #ccc; 
    950      padding: 12px; 
    951      display: inline-block; 
    952      vertical-align: top; 
    953      width: 284px; 
    954 } 
    955 .current-theme { 
    956      background: #eef; 
    957 } 
    958 #themes div.theme-details:hover { 
    959      background: #f0f0f0; 
    960 } 
    961 #themes div.theme-details div.theme-shot { 
    962 } 
    963 #themes div.theme-details div.theme-shot img { 
    964      display: block; 
    965      border: 1px solid #ccc; 
    966      margin-bottom: 1.5em; 
    967 } 
    968 #themes div.theme-details div.theme-info { 
    969 } 
    970 #themes div.theme-details div.theme-info span.theme-desc { 
    971      display: block; 
    972 } 
    973 #themes div.theme-details div.theme-info span.theme-version { 
    974      color: #666; 
    975 } 
    976 #themes div.theme-details div.theme-actions { 
    977 } 
    978 #themes-actions { 
    979      border-bottom: 1px solid #999; 
    980      margin-bottom: 3em; 
    981 } 
    982 .theme-css { 
    983      display: block; 
    984 } 
    985 /* Themes list, JS version */ 
    986 #themes-wrapper { 
    987      display: table; 
    988 } 
    989 #themes-wrapper #themes { 
    990      display: table-cell; 
    991      vertical-align: top; 
    992      padding-left: 1em; 
    993 } 
    994 #theme-box { 
    995      display: table-cell; 
    996      vertical-align: top; 
    997      padding: 0; 
    998      width: 312px; 
    999      border: 1px solid #ccc; 
    1000      border-radius: 3px; 
    1001 } 
    1002 #theme-box .theme-shot, 
    1003 #theme-box .theme-info, 
    1004 #theme-box .theme-actions { 
    1005      background: #eef; 
    1006      padding: 1em 16px; 
    1007      margin: 0; 
    1008 } 
    1009 #theme-box .theme-shot img { 
    1010      display: block; 
    1011      width: 280px; 
    1012      height: 245px; 
    1013      border: 1px solid #ccc; 
    1014 } 
    1015 #theme-box h4 { 
    1016      color: #000; 
    1017      background: #eef; 
    1018 } 
    1019 #theme-box span.theme-version { 
    1020      color: #666; 
    1021 } 
    1022 #theme-box span.theme-parent-ok { 
    1023      color: #666; 
    1024 } 
    1025 #theme-box span.theme-parent-missing { 
    1026      color: #c00; 
    1027      font-weight:bold; 
    1028 } 
    1029 #theme-box .theme-actions { 
    1030      border-bottom: 1px solid #ccc; 
    1031 } 
    1032 #themes .theme-details-js { 
    1033      float: left; 
    1034      width: 120px; 
    1035      height: 150px; 
    1036      margin: 0 12px 24px; 
    1037      padding: 12px 12px 0; 
    1038      text-align: center; 
    1039      background: #f3f3f3; 
    1040      border: 1px solid #ddd; 
    1041      cursor: pointer; 
    1042      border-radius: 4px; 
    1043 } 
    1044 #themes .theme-details-js label { 
    1045      cursor: pointer; 
    1046 } 
    1047 #themes .theme-details-js.theme-selected { 
    1048      background: #ddd; 
    1049      border: 1px solid #999; 
    1050 } 
    1051 #themes .theme-details-js .theme-shot img { 
    1052      width: 120px; 
    1053      height: 105px; 
    1054      border: 1px solid #fff; 
    1055 } 
    1056 #themes a:focus div, #themes a:hover div, 
    1057 #themes a:focus div.current-theme, #themes a:hover div.current-theme { 
    1058      background: #bee74b; 
    1059 } 
    1060 /* ----------------------------------------------------------  Plugins list */ 
    1061 #plugins td.action { 
    1062      vertical-align: middle; 
    1063 } 
    1064 select.l10n option { 
    1065      padding-left: 16px; 
    1066 } 
    1067 option.avail10n { 
    1068      background: transparent url(../images/check-on.png) no-repeat 0 50%; 
    1069 } 
    1070 /* ------------------------------------------------------------------ contextual help */ 
    1071 #help { 
    1072      margin-top: 4em; 
    1073      background: #f5f5f5; 
    1074      z-index: 100; 
    1075      clear: both; 
    1076      padding: 0 1em; 
    1077 } 
    1078 #help-button { 
    1079      background: transparent url(../images/page_help.png) no-repeat 6px center; 
    1080      position: absolute; 
    1081      top: 36px; /* ie < 9 sucks */ 
    1082      top: 3.6rem; 
    1083      right: 0px; 
    1084      padding: 0 1.5em 0 30px; 
    1085      cursor: pointer; 
    1086      color: #2373A8; 
    1087      line-height: 42px; /* ie < 9 sucks */ 
    1088      line-height: 4.2rem; 
    1089 } 
    1090 #help-button span { 
    1091      padding: .5em 0 .1em 0; 
    1092      border-bottom: 1px solid #2373A8; 
    1093 } 
    1094 .help-box { 
    1095      display: none; 
    1096 } 
    1097 .help-box ul { 
    1098      padding-left: 20px; 
    1099      margin-left: 0; 
    1100 } 
    1101 #content.with-help #help-button { 
    1102      right: 282px; /* ie < 9 sucks */ 
    1103      right: 28.2rem; 
    1104      background-color: #f5f5f5; 
    1105      position: fixed; 
    1106      border-top: 2px solid #FFD478; 
    1107      border-left: 2px solid #FFD478; 
    1108      border-bottom: 2px solid #FFD478; 
    1109      border-bottom-left-radius: 1em; 
    1110      border-top-left-radius: 1em; 
    1111 } 
    1112 #content.with-help #help { 
    1113      display: block; 
    1114      position: absolute; 
    1115      top: 36px; /* ie < 9 sucks */ 
    1116      top: 3.6rem; 
    1117      right: 0; 
    1118      width: 280px; /* ie < 9 sucks */ 
    1119      width: 28rem; 
    1120      border-left: 2px solid #FFD478; 
    1121      border-top: 2px solid #FFD478; 
    1122      margin-top: 0; 
    1123      padding: .5em 0 0 0; 
    1124      overflow: auto; 
    1125 } 
    1126 #content.with-help .help-content { 
    1127      padding: 0 .5em 1em; 
    1128 } 
    1129 .help-content dt { 
    1130      font-weight: bold; 
    1131      color: #626262; 
    1132      margin: 0; 
    1133 } 
    1134 .help-content dd { 
    1135      margin: 0.3em 0 1.5em 0; 
    1136 } 
    1137 /* ------------------------------------------------------------------ popups */ 
     112     margin-left: 2.5%; 
     113     margin-right: 2.5%;  
     114     } 
     115     .three-boxes:first-child { 
     116          margin-left: 0; 
     117          } 
     118     .three-boxes:last-child { 
     119          margin-right: 0; 
     120          } 
     121/* boîtes intérieures */ 
     122.box { 
     123     margin-bottom: 2em; 
     124     } 
     125/* ---------------------------------------------------------------- layout: popups */ 
    1138126body.popup #wrapper, body.popup #top { 
    1139127     width: 100%; 
     
    1150138     font-weight: normal; 
    1151139     color: #fff; 
    1152      background: #575859; 
     140     background: #676e78; 
    1153141     font-size: 1.5em; 
    1154142     text-indent: .5em; 
     
    1168156     border: none; 
    1169157} 
    1170 /* ------------------------------------------------------------------ messages */ 
    1171 .error, .message, .static-msg, .static-msg, .success { 
    1172      padding: 1em 0.5em 0.5em 48px; 
    1173      margin-bottom: 1em; 
    1174      border-radius: 8px; 
    1175 } 
    1176 p.error, p.message, p.static-msg, p.success { 
    1177      padding-top: 1em; 
    1178      padding-bottom: 1em; 
    1179 } 
    1180 .error { 
    1181      background: #FFBABA url(msg-error.png) no-repeat .7em .7em; 
    1182      color: #000; 
    1183 } 
    1184 .message, .static-msg { 
    1185      background: #666 url(msg-std.png) no-repeat .7em .7em; 
    1186      color: #fff; 
    1187 } 
    1188 .success { 
    1189      background: #bee74b url(msg-success.png) no-repeat .7em .7em; 
    1190      color: #000; 
    1191 } 
    1192 .message a, .static-msg a { 
    1193      color: #fff; 
    1194 } 
    1195 .success a { 
    1196      color: #666; 
    1197 } 
    1198 .dc-update { 
    1199      padding: 1em 48px 0.5em 48px; 
    1200      margin-bottom: 1em; 
    1201      border-radius: 8px; 
    1202      background: #A2CBE9 url(msg-success.png) no-repeat .7em .7em; 
    1203 } 
    1204 .dc-update a { 
    1205      color: #000; 
    1206      border-color: #000; 
    1207      margin-right: 1em; 
    1208 } 
    1209 a.info { 
    1210      margin-left: 2em; 
    1211      font-weight: bold; 
    1212 } 
    1213 /* ------------------------------------------------------------------ navigation */ 
    1214 .anchor-nav { 
    1215      background: #575859; 
    1216      color: #fff; 
    1217      padding: 4px 1em; 
    1218      float: right; 
    1219 } 
    1220 .nav_prevnext { 
    1221      margin-bottom: 2em; 
    1222      color: #fff; 
    1223 } 
    1224 .nav_prevnext a, a.back { 
    1225      border: 1px solid #ddd; 
    1226      padding: 2px 1.5em; 
    1227      border-radius: .75em; 
    1228      background-color: #f0f0f0; 
    1229 } 
    1230 a.back:before { 
    1231      content: "\ab\a0"; 
    1232 } 
    1233 a.onblog_link { 
    1234      color: #333; 
    1235      float: right; 
    1236      border: 1px solid #eee; 
    1237      padding: 2px 1.5em; 
    1238      border-radius: .75em; 
    1239      background-color: #ffe; 
    1240 } 
    1241 /* ------------------------------------------------------------------ debug */ 
    1242 #debug { 
    1243      position: absolute; 
    1244      top: 0; 
    1245      width: 100%; 
    1246      height: 4px; 
    1247      background: #d99; 
    1248 } 
    1249 #debug div { 
    1250      display: none; 
    1251      padding: 3px 0.5em 2px; 
    1252 } 
    1253 #debug p { 
    1254      margin: 0.5em 0; 
    1255 } 
    1256 #debug:hover { 
    1257      height: auto; 
    1258 } 
    1259 #debug:hover div { 
    1260      display: block; 
    1261 } 
    1262 /* -------------------------------------------------------------------- CLASSES COMMUNES */ 
    1263 .no-margin, #entry-content label.no-margin { 
     158/* ------------------------------------------------------------- layout: compléments */ 
     159.constrained { 
    1264160     margin: 0; 
    1265 } 
    1266 .vertical-separator { 
    1267      margin-top: 2em; 
    1268 } 
    1269 p.clear.vertical-separator { 
    1270      padding-top: 2em; 
    1271 } 
    1272 .border-top { 
    1273      border-top: 1px solid #999; 
    1274      padding-top: 1em; 
    1275      margin-top:    1em; 
    1276 } 
    1277 .fieldset { 
    1278      background: #fff; 
    1279      border: 1px solid #aaa; 
    1280      border-radius: 6px; 
    1281      padding: 1em .7em .5em; 
    1282      margin-bottom: 1em; 
    1283 } 
    1284 .fieldset h3 { 
    1285      color: #333; 
    1286 } 
     161     padding: 0; 
     162     border: none; 
     163     background: transparent; 
     164     } 
    1287165.table { 
    1288166     display: table; 
    1289 } 
     167     } 
    1290168.cell { 
    1291169     display: table-cell; 
    1292 } 
    1293 /* paragraphe pour bouton Nouveau bidule */ 
    1294 p.top-add { 
    1295      text-align: right; 
    1296      margin: 0; 
    1297      } 
    1298 p.top-add a { 
    1299      padding: .3em 1em .3em .5em; 
    1300      font-weight: bold; 
    1301 } 
    1302 p.top-add a img { 
    1303      padding-right: .3em; 
    1304      vertical-align: middle; 
    1305 } 
    1306  
     170     vertical-align: top; 
     171     } 
    1307172.clear { 
    1308173     clear: both; 
    1309 } 
     174     } 
    1310175.lclear { 
    1311176     clear: left; 
    1312 } 
    1313 div.clearer { 
     177     } 
     178.clearer { 
    1314179     height: 1px; 
    1315180     font-size: 1px; 
    1316 } 
    1317 .right { 
    1318      text-align: right; 
    1319 } 
    1320 .txt-center { 
    1321      text-align: center; 
    1322 } 
     181     } 
     182/* Micro clearfix thx to Nicolas Gallagher */ 
     183.clearfix:before, .clearfix:after { 
     184     content: " ";  
     185     display: table; 
     186     } 
     187.clearfix:after { 
     188     clear: both; 
     189     } 
    1323190.frame-shrink { 
    1324191     border: 1px solid #666; 
     
    1327194     height: 120px; 
    1328195     overflow: auto; 
    1329 } 
    1330 .grid { 
    1331      background: transparent repeat url('grid.png') 0 0; 
    1332 } 
    1333 .line p { 
     196     } 
     197/* --------------------------------------------------------------------------- 
     198                                                                                     HTML TAGS 
     199---------------------------------------------------------------------------- */ 
     200html { 
     201     font-size: 62.5%; 
     202     } 
     203body { 
     204     font-size: 12px; /* ie < 9 sucks */ 
     205     font-size: 1.2rem; 
     206     line-height: 1.5; 
     207     font-family: Arial,Helvetica,sans-serif; 
     208     color: #333; 
     209     background: #fff; 
    1334210     margin: 0; 
    1335 } 
    1336 .offline { 
     211     padding: 0; 
     212     } 
     213/* ------------------------------------------------------------------ titres */ 
     214h1, h2, h3, .as_h3, h4, .as_h4, h5, h6 { 
     215     margin-top: 0; 
     216     margin-bottom: 1em; 
     217     } 
     218h2 { 
    1337219     color: #666; 
    1338 } 
    1339 ul.nice { 
    1340      margin: 1em 0; 
    1341      padding: 0 0 0 2em; 
    1342      list-style: square; 
    1343 } 
    1344 ul.nice li { 
    1345      margin:0; 
    1346      padding: 0; 
    1347 } 
    1348 .zip-dl { 
    1349      background: transparent url(package.png) no-repeat 0 50%; 
    1350      padding: 5px 0 5px 20px; 
    1351 } 
    1352 .distrib img { 
    1353      display: block; 
    1354      float: right; 
    1355      margin-top: -1em; 
    1356 } 
    1357  
    1358 /* TABLES 
    1359 -------------------------------------------------------- */ 
     220     font-size: 18px; /* ie < 9 sucks */ 
     221     font-size: 1.8rem; 
     222     padding: 0 0 1.5em; 
     223     font-weight: normal; 
     224     } 
     225     /* titre de page */ 
     226     #content > h2 { 
     227          padding: 0 18px 6px; /* ie < 9 sucks */ 
     228          padding: 0 1.8rem .6rem; 
     229          margin: 0 -18px .5em; /* ie < 9 sucks */ 
     230          margin: 0 -1.8rem 1rem; 
     231          background: #fff url(bg_h2.png) repeat-x center bottom; 
     232          } 
     233     h2 a:link, h2 a:visited { 
     234          color: #676e78; 
     235          border-color: #000; 
     236          } 
     237     .page-title { 
     238          color: #d30e60; 
     239          } 
     240     .page-title img { 
     241          padding-left: .5em; 
     242          vertical-align: middle; 
     243          } 
     244h3, .as_h3 { 
     245     margin-top: 1em; 
     246     color: #676e78; 
     247     font-size: 16px; /* ie < 9 sucks */ 
     248     font-size: 1.6rem; 
     249     } 
     250h4, as_h4 { 
     251     font-size: 14px; /* ie < 9 sucks */ 
     252     font-size: 1.4rem; 
     253     color: #676e78; 
     254     } 
     255     .smart-title, .box h3, .media-action-box h4 { /* pour les h3 ou les h4 titres de boîtes */ 
     256          font-size: 1em; 
     257          text-transform: uppercase; 
     258          font-weight: bold; 
     259          color: #333; 
     260          text-shadow: 0 1px 0 rgba(200, 200, 200, 0.6) 
     261          } 
     262h5 { 
     263     font-size: 12px; /* ie < 9 sucks */ 
     264     font-size: 1.2rem; 
     265     color: #676e78; 
     266     } 
     267     #entry-sidebar h5 { 
     268          font-weight: normal; 
     269          color: #333; 
     270          } 
     271     .entry-status img.img_select_option { 
     272          padding-left: 4px; 
     273          vertical-align: text-top; 
     274          } 
     275/* ---------------------------------------------------------------- tableaux */ 
    1360276table { 
    1361277     font-size: 12px; /* ie < 9 sucks */ 
     
    1363279     border-collapse: collapse; 
    1364280     margin: 0 0 1em 0; 
    1365 } 
    1366 table.posts-list { 
    1367      min-width: 50%; 
    1368 } 
    1369 tr.line:hover { 
    1370      background: #f3f3f3; 
    1371 } 
     281     } 
    1372282caption { 
    1373283     color: #333; 
     
    1375285     text-align: left; 
    1376286     margin-bottom: .5em; 
    1377 } 
    1378  
     287     } 
     288th { 
     289     border-width: 1px 0 1px 0; 
     290     border-style: solid; 
     291     border-color: #ddd; 
     292     background: #f3f3ff; 
     293     padding: .4em 1em .4em .5em; 
     294     vertical-align: top; 
     295     text-align: left; 
     296     text-transform: uppercase; 
     297     font-size: 10px; 
     298     font-size: 1rem; 
     299     } 
    1379300td { 
    1380301     border-width: 0 0 1px 0; 
    1381302     border-style: solid; 
    1382303     border-color: #e3e3e3; 
    1383      padding: .3em 1em .3em .5em; 
     304     padding: .4em 1em .4em .5em; 
    1384305     vertical-align: top; 
    1385 } 
    1386 th { 
    1387      border-width: 1px 0 1px 0; 
     306     } 
     307 
     308/* ---------------------------------------------------------- autres balises */ 
     309p { 
     310     margin: 0 0 1em 0; 
     311     } 
     312hr { 
     313     height: 1px; 
     314     border-width: 1px 0 0; 
     315     border-color: #ddd; 
     316     background: #ddd; 
    1388317     border-style: solid; 
    1389      border-color: #ccc; 
    1390      background: #f3f3ff; 
    1391      padding: .3em 1em .3em .5em; 
    1392      vertical-align: top; 
    1393      text-align: left; 
    1394 } 
    1395 th.first img { 
    1396      padding-right: 24px; 
    1397 } 
    1398 .noborder td, td.noborder, .noborder th, th.noborder { 
    1399      border-width: 0 0 1px 0; 
    1400      border-color: #ddd; 
    1401      line-height: 2em; 
    1402      padding-bottom: 0; 
    1403 } 
    1404 .noborder p { 
    1405      margin-bottom: 0; 
    1406 } 
    1407 table .maximal, table.maximal { 
    1408      width: 100%; 
    1409 } 
    1410 table .minimal { 
    1411      width: 1px; 
    1412 } 
    1413 table .nowrap { 
    1414      white-space: nowrap; 
    1415      vertical-align: top; 
    1416 } 
    1417 table .count { 
    1418      text-align: right; 
    1419      padding-right: 1.5em; 
    1420 } 
    1421 table.settings, table.prefs { 
    1422      width: 80%; 
    1423      border: 1px solid #999; 
    1424      margin-bottom: 3em; 
    1425 } 
    1426 table.settings th, table.prefs th { 
    1427      background: #f3f3ff; 
    1428 } 
    1429 table.settings th:first-child, table.prefs th:first-child { 
    1430      width: 20%; 
    1431 } 
    1432 table.settings th + th, table.prefs th + th { 
    1433      width: 30%; 
    1434 } 
    1435 table.settings th + th + th, table.prefs th + th + th { 
    1436      width: 10%; 
    1437 } 
    1438 table.settings th:last-child, table.prefs th:last-child { 
    1439      width: 40%; 
    1440 } 
    1441 td.status { 
    1442      vertical-align: middle; 
    1443 } 
    1444 td.status img { 
    1445      margin-bottom: -2px; 
    1446 } 
    1447 td.status a { 
    1448      border: none; 
    1449 } 
    1450 tr.line img.expand, th img.expand { 
    1451      margin-right: 6px; 
    1452      margin-bottom: -2px; 
    1453 } 
    1454 tr.line input { 
    1455      vertical-align: middle; 
    1456 } 
    1457 tr.expand td { 
    1458      border-bottom: none; 
    1459 } 
    1460 td.expand { 
    1461      padding: 1em; 
    1462 } 
    1463  
    1464 .dragable { 
    1465      border-collapse: separate; 
    1466 } 
    1467 .dragable tbody td { 
    1468  
    1469 } 
    1470 .handle { 
    1471      padding: 0; 
    1472 } 
    1473 .handler { 
    1474      cursor: move; 
    1475      background: transparent url(drag.png) no-repeat 0 50%; 
    1476      padding-left: 15px; 
    1477 } 
    1478 /* ----------------------------------------------------------------- FORMS */ 
     318     } 
     319hr.clearer { 
     320     clear: both; 
     321     } 
     322pre, code { 
     323     font: 100% "Andale Mono","Courier New",monospace; 
     324     } 
     325pre { 
     326     white-space: pre; 
     327     white-space: -moz-pre-wrap; 
     328     white-space: -hp-pre-wrap; 
     329     white-space: -o-pre-wrap; 
     330     white-space: -pre-wrap; 
     331     white-space: pre-wrap; 
     332     white-space: pre-line; 
     333     word-wrap: break-word; 
     334     } 
     335abbr { 
     336     cursor: help; 
     337     } 
     338/* ------------------------------------------------------------------ liens */ 
     339a, a:link, a:visited { 
     340     color: #2373A8; 
     341     text-decoration: none; 
     342     border-bottom: 1px dotted #999; 
     343     } 
     344a:hover, a:active, a:focus { 
     345     text-decoration: underline; 
     346     } 
     347a img, a:link img, a:visited img { 
     348     border:none; 
     349     } 
     350/* ---------------------------------------------------------------------------- 
     351                                                                                     FORMULAIRES 
     352---------------------------------------------------------------------------- */ 
    1479353form { 
    1480354     display: block; 
    1481355     margin: 0; 
    1482356     padding: 0; 
    1483 } 
     357     } 
    1484358fieldset { 
    1485359     display: block; 
     
    1489363     border-style: solid; 
    1490364     border-color: #ccc; 
    1491      background: #f5f5f5; 
    1492 } 
     365     background: #f7f7f7; 
     366     } 
     367input, textarea, select, option, optgroup, legend { 
     368     font: 100% "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif; 
     369     } 
    1493370legend { 
    1494371     font-weight: bold; 
     
    1500377     margin-bottom: 0.5em; 
    1501378     border-radius: 3px; 
    1502 } 
     379     } 
     380label .maximal, textarea.maximal, input.maximal { 
     381     width: 99%; 
     382     } 
     383input[type=text], input[type=password], textarea, select { 
     384     background: #fbfbfb; 
     385     color: #000; 
     386     border-width: 1px; 
     387     border-style: solid; 
     388     border-color: #ddd; 
     389     border-radius: 3px; 
     390     box-shadow: 1px 1px 2px #F1F1F1 inset; 
     391     padding: 3px;  
     392     } 
     393     input:focus, textarea:focus, select:focus { 
     394          -webkit-box-sizing: border-box; 
     395          -moz-box-sizing: border-box; 
     396          box-sizing: border-box; 
     397          border-color: #bee74b; 
     398          } 
     399     textarea { 
     400          padding: 2px 0; 
     401          } 
     402          textarea.maximal { 
     403               resize: vertical; 
     404               } 
     405          .area textarea { 
     406               display: block; 
     407               width: 100%; 
     408               resize: vertical; 
     409               } 
     410     select { 
     411          padding: 2px 0; 
     412          } 
     413          select.l10n option { 
     414               padding-left: 16px; 
     415               } 
     416          option.avail10n { 
     417               background: transparent url(../images/check-on.png) no-repeat 0 50%; 
     418               } 
     419     input.invalid, textarea.invalid, select.invalid { 
     420          border: 1px solid red; 
     421          background: #FFBABA; 
     422          color: red; 
     423          box-shadow: 0 0 0 3px rgba(218, 62, 90, 0.3); 
     424          } 
     425     input[type=text], input[type=password], textarea { 
     426          margin-right: .3em; 
     427          } 
     428     input[type=checkbox], input[type=radio], input[type=file] { 
     429          border: none; 
     430          margin: 0; 
     431          padding: 0; 
     432          background: transparent; 
     433          } 
     434     input[type=file] { 
     435          margin-top: .3em; 
     436          margin-bottom: .3em; 
     437          } 
    1503438optgroup { 
    1504439     font-weight: bold; 
    1505440     font-style: normal; 
    1506 } 
     441     } 
    1507442option { 
    1508443     font-weight: normal; 
    1509 } 
    1510 input, textarea, select { 
    1511      background: #f9f9f9; 
     444     } 
     445label, label span { 
     446     display: block; 
     447     } 
     448     label.ib, input.ib { 
     449          display: inline-block; 
     450          } 
     451     label.classic { 
     452          display: inline; 
     453          } 
     454     label.classic input, label span input, label.classic select, label span select { 
     455          display: inline; 
     456          } 
     457     label.required { 
     458          font-weight: bold; 
     459          } 
     460          label.required abbr { 
     461               color: #dd0000; 
     462               font-size: 1.3em; 
     463               } 
     464     label.area, p.area { 
     465          width: inherit !important; 
     466          } 
     467p.field { 
     468     position: relative; 
     469     } 
     470     p.field label { 
     471          display: block; 
     472          width: 14em; 
     473          } 
     474     p.field input, p.field select { 
     475          display: inline; 
     476          position: absolute; 
     477          left: 14.5em; 
     478          top: 0; 
     479          } 
     480a.form-control { 
     481     display: none; 
     482     background: url(../images/expand.png) no-repeat 4px center; 
     483     padding-left: 20px; 
    1512484     color: #000; 
    1513      border-width: 2px; 
    1514      border-style: solid; 
    1515      border-color: #ccc #ddd #ddd #ccc;  
    1516 } 
    1517 select { 
    1518      border-right: 2px solid #fff; 
    1519 } 
    1520 input.invalid, textarea.invalid, select.invalid { 
    1521      border: 1px solid red; 
    1522      background: #fff; 
    1523      color: red; 
    1524      box-shadow: 0 0 0 1px rgba(218, 62, 90, 0.3) 
    1525 } 
    1526 input, textarea, select, option { 
    1527      font: 100% "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif; 
    1528 } 
    1529 input[type=text], input[type=password], textarea { 
    1530      padding: 2px 0; 
    1531      margin-right: .3em; 
    1532 } 
    1533 textarea { 
    1534      padding: 2px 0; 
    1535 } 
    1536 input[type=checkbox], input[type=radio], input[type=file] { 
    1537      border: none; 
    1538      margin: 0; 
    1539      padding: 0; 
    1540      background: transparent; 
    1541 } 
    1542 input[type=file] { 
    1543      margin-top: .3em; 
    1544      margin-bottom: .3em; 
    1545 } 
    1546 label { 
    1547      display: block; 
    1548 } 
    1549 label input, label select, label span { 
    1550      display: block; 
    1551 } 
    1552 p.form-note { 
    1553      font-style:italic; 
    1554      margin-top: -.7em; 
     485     } 
     486.form-note { 
     487     font-style: italic; 
     488     font-weight: normal; 
    1555489     color: #666; 
    1556 } 
    1557 span.form-note { 
    1558      font-style:italic; 
     490     } 
     491     p.form-note { 
     492          margin-top: -.7em; 
     493          } 
     494     span.form-note { 
     495          text-transform: none; 
     496          } 
     497/* ---------------------------------------------------------------------------- 
     498                                                                                          BOUTONS 
     499---------------------------------------------------------------------------- */ 
     500/* commun */ 
     501input[type=submit], input[type=reset], input[type=button], input[type=delete], 
     502input.submit, input.reset, input.button, input.delete, 
     503a.button, a.submit, a.delete, a.reset { 
     504     display: inline-block; 
     505     cursor: pointer; 
     506     text-align: center; 
     507     text-decoration: none; 
     508     padding: 2px 6px 2px; 
     509     border-radius: 3px; 
     510     font-size: 12px; /* ie < 9 sucks */ 
     511     font-size: 1.2rem; 
     512     line-height: 1.5em; 
     513     } 
     514     a.button, a.submit, a.reset { 
     515          padding-bottom: 1px; 
     516          } 
     517 /* validation */ 
     518input[type=submit], a.submit { 
     519     color: #fff; 
     520     text-shadow: 0 -1px 0 rgba(100, 100, 100, 0.6); 
     521     background:#25A6E1; 
     522     background:-moz-linear-gradient(top,#25A6E1 0%,#188BC0 100%); 
     523     background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#25A6E1),color-stop(100%,#188BC0)); 
     524     background:linear-gradient(top,#25A6E1 0%,#188BC0 100%); 
     525     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#188BC0',GradientType=0); 
     526     border: 1px solid #2C8FD1; 
     527     padding-bottom: 1px; 
     528     } 
     529     input[type=submit]:hover, input[type=submit]:focus, 
     530     a.submit:hover, a.submit:focus { 
     531          background:#188BC0; 
     532          background:-moz-linear-gradient(top,#188BC0 0%,#25A6E1 100%); 
     533          background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#188BC0),color-stop(100%,#25A6E1)); 
     534          background:linear-gradient(top,#188BC0 0%,#25A6E1 100%); 
     535          filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#25A6E1',GradientType=0); 
     536          } 
     537/* suppression, reset, "neutres" */ 
     538input[type=reset], input[type=delete], input[type=button], 
     539input.delete, input.reset, input.button, 
     540a.delete, a.reset, a.button { 
     541     border: 1px solid #ccc; 
     542     background: #f5f5f5; 
     543     color: #000; 
     544     background: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#dfdfdf)); 
     545     background: -moz-linear-gradient(top,  #f5f5f5,  #dfdfdf); 
     546     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); 
     547     } 
     548     input[type=reset]:hover, input[type=delete]:hover, input[type=button]:hover, 
     549     input.delete:hover, input.reset:hover, input.button:hover, 
     550     a.delete:hover, a.reset:hover, a.button:hover, 
     551     input[type=reset]:focus, input[type=delete]:focus, input[type=button]:focus, 
     552     input.delete:focus, input.reset:focus, input.button:focus, 
     553     a.delete:focus, a.reset:focus, a.button:focus { 
     554          background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) ); 
     555          background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% ); 
     556          filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9'); 
     557          background-color:#e9e9e9; 
     558          } 
     559     a.delete, input[type=delete], input.delete { 
     560          color: #c00; 
     561          margin-left: 1em; 
     562          padding-bottom: 2px; 
     563          } 
     564          a.delete:hover, input[type=delete]:hover, input.delete:hover, 
     565          a.delete:focus, input[type=delete]:focus, input.delete:focus {         
     566               border-color: #c00; 
     567               } 
     568          a.button {padding-bottom: 1px} 
     569     #info-box a.button { 
     570          padding: 0 .5em; 
     571          margin-left: 2em; 
     572          } 
     573.button.add { 
     574     background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bee74b), color-stop(1, #9BCA1C) ); 
     575     background:-moz-linear-gradient( center top, #bee74b 5%, #9BCA1C 100% ); 
     576     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bee74b', endColorstr='#9BCA1C'); 
     577     background-color:#bee74b; 
     578     border:1px solid #B2D742; 
     579     padding:.33em 1.33em; 
     580     color: #000; 
     581     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); 
    1559582     font-weight: normal; 
    1560      text-transform: none; 
    1561      color: #666; 
    1562 } 
    1563 p.form-note.warn, p.form-note.info, p.warning { 
     583     font-size: 14px; /* ie < 9 sucks */ 
     584     font-size: 1.4rem; 
     585     } 
     586     .button.add:hover, .button.add:active, .button.add:focus { 
     587          background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9BCA1C), color-stop(1, #bee74b) ); 
     588          background:-moz-linear-gradient( center top, #9BCA1C 5%, #bee74b 100% ); 
     589          filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9BCA1C', endColorstr='#bee74b'); 
     590          background-color:#9BCA1C; 
     591          } 
     592     .button-add:focus { 
     593          outline: dotted 1px; 
     594          } 
     595     /* paragraphe pour bouton Nouveau bidule */ 
     596     p.top-add { 
     597          text-align: right; 
     598          margin: 0; 
     599          } 
     600 
     601/* disabled */ 
     602input.disabled { 
     603     text-shadow: none; 
     604     color: #666; 
     605     background: #F5F5F5; 
     606     border: 1px solid #CCC; 
     607     } 
     608     input.disabled:hover { 
     609          color: #666; 
     610          background: #DFDFDF; 
     611          border: 1px solid #CCC; 
     612          } 
     613/* ---------------------------------------------------------------------------- 
     614                                                                                     MESSAGES 
     615---------------------------------------------------------------------------- */ 
     616.warn, .warning, .info { 
    1564617     font-style: normal; 
    1565618     padding: .2em .66em .2em; 
     
    1568621     display: inline-block; 
    1569622     line-height: 1.5em; 
    1570 } 
    1571 p.form-note.warn, p.warning { 
    1572      background: #ffd url(msg-warning.png) no-repeat .3em .3em; 
    1573      border: 1px solid #f0c020; 
    1574 } 
    1575 p.form-note.info { 
    1576      background: #f5eaff url(msg-info.png) no-repeat .3em .3em; 
    1577      border: 1px solid #c484ff; 
    1578 } 
    1579 .form-note a {border-bottom: 1px solid #ddbaff;} 
    1580  
    1581 label.ib { 
    1582      display: inline-block; 
    1583 } 
    1584 label.classic { 
    1585      display: inline; 
    1586 } 
    1587 label.classic input, label span input, label.classic select, label span select { 
    1588      display: inline; 
    1589 } 
    1590  
    1591 label.area, p.area { 
    1592      width: inherit !important; 
    1593 } 
    1594 .area textarea { 
    1595      display: block; 
    1596      width: 100%; 
    1597      resize: vertical; 
    1598 } 
    1599 label.required { 
    1600      font-weight: bold; 
    1601 } 
    1602 label.required abbr { 
    1603      color: #dd0000; 
    1604      font-size: 1.3em; 
    1605 } 
    1606 label.inline { 
    1607      display: inline; 
    1608 } 
    1609 p.field { 
    1610      position: relative; 
    1611  
    1612 } 
    1613 p.field label { 
    1614      display: block; 
    1615      width: 14em; 
    1616 } 
    1617 p.field input, p.field select { 
    1618      display: inline; 
    1619      position: absolute; 
    1620      left: 14.5em; 
    1621      top: 0; 
    1622 } 
    1623 label .maximal, textarea.maximal, input.maximal { 
    1624      width: 100%; 
    1625 } 
    1626 textarea.maximal { 
    1627      resize: vertical; 
    1628 } 
    1629  
    1630 a.form-control { 
    1631      display: none; 
    1632      background: url(../images/expand.png) no-repeat 4px center; 
    1633      padding-left: 20px; 
    1634      color: #000; 
    1635 } 
    1636 .constrained { 
     623     border-radius: 3px; 
     624     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) 
     625     } 
     626     .warn, .warning { 
     627          background: #FEFACD url(msg-warning.png) no-repeat .3em .3em; 
     628          border: 1px solid #F7E07E; 
     629          } 
     630     .info { 
     631          background: #D9EDF7 url(msg-info.png) no-repeat .3em .3em; 
     632          border: 1px solid #BCE8F1; 
     633          } 
     634.error, .message, .static-msg, .success, .warning-msg { 
     635     padding: 1em 0.5em 0.5em 48px; 
     636     margin-bottom: 1em; 
     637     border-radius: 8px; 
     638     } 
     639     p.error, p.message, p.static-msg, p.success, p.warning-msg { 
     640          padding-top: 1em; 
     641          padding-bottom: 1em; 
     642          } 
     643     .error { 
     644          background: #FFBABA url(msg-error.png) no-repeat .7em .7em; 
     645          color: #000; 
     646          text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); 
     647          } 
     648     .message, .static-msg { 
     649          background: #676e78 url(msg-std.png) no-repeat .7em .7em; 
     650          color: #fff; 
     651          } 
     652          .message a, .static-msg a { 
     653               color: #fff; 
     654          } 
     655     .success, .warning-msg { 
     656          color: #000; 
     657          text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) 
     658          } 
     659          .success { 
     660               background: #bee74b url(msg-success.png) no-repeat .7em .7em; 
     661               } 
     662          .warning-msg { 
     663               background: #F7E07E url(msg-warning.png) no-repeat .7em .7em; 
     664               border: 1px solid #F7E07E; 
     665               } 
     666          .success a, .warning-msg a { 
     667               color: #333; 
     668               } 
     669.dc-update { 
     670     padding: 1em 48px 0.5em 48px; 
     671     margin-bottom: 1em; 
     672     border-radius: 8px; 
     673     background: #A2CBE9 url(msg-success.png) no-repeat .7em .7em; 
     674     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6); 
     675     color: #34495e; 
     676     } 
     677     .dc-update h3 { 
     678          margin-top: 0; 
     679          color: #34495e; 
     680          } 
     681     .dc-update a { 
     682          color: #34495e; 
     683          border-color: #000; 
     684          margin-right: 1em; 
     685          } 
     686          a.updt-info { 
     687               margin-left: 2em; 
     688               font-weight: bold; 
     689               } 
     690          .dc-update a.button { 
     691               border-color: #ccc; 
     692               font-weight: bold; 
     693               padding: .5em 1em;  
     694               } 
     695/* --------------------------------------------------------------------------------- 
     696                                                                                ELEMENTS PRINCIPAUX 
     697--------------------------------------------------------------------------------- */ 
     698/* -------------------------------------------------------------- HEADER ELEMENTS */ 
     699/* prelude */ 
     700#prelude { 
     701     line-height: 1.5; 
    1637702     margin: 0; 
    1638703     padding: 0; 
    1639      border: none; 
    1640      background: transparent; 
    1641 } 
    1642 input:focus, textarea:focus, select:focus { 
    1643      -webkit-box-sizing: border-box; 
    1644      -moz-box-sizing: border-box; 
    1645      box-sizing: border-box; 
    1646      border: 2px solid #bee74b; 
    1647 } 
    1648 /* --------------------------------------------------------------- buttons */ 
    1649 /* commun */ 
    1650 input[type=submit], 
    1651 input[type=reset], 
    1652 input[type=button], 
    1653 a.button, 
    1654 a.submit { 
    1655      display: inline-block; 
    1656      cursor: pointer; 
    1657      text-align: center; 
    1658      text-decoration: none; 
    1659      padding: .1em .5em; 
    1660      border-radius: .2em; 
    1661      margin-bottom: .1em; 
     704     overflow: hidden; 
     705     position: absolute; 
     706     top: 3em; 
     707     left: 0; 
     708     background: #A2CBE9; 
     709     width: 100%; 
     710     } 
     711     #prelude li { 
     712          list-style-type: none; 
     713          margin: 0; 
     714          background:transparent; 
     715          display: inline; 
     716          } 
     717     #prelude li a { 
     718          padding: 3px 16px 3px 8px; /* ie < 9 sucks */ 
     719          padding: 3px 1.6rem 3px .8rem; 
     720          background: #A2CBE9; 
     721          color: #000; 
     722          border-bottom-color: #A2CBE9; 
     723          } 
     724/* top (h1) */ 
     725#top { 
     726     margin: 0; 
     727     padding: 0; 
     728     width: 14.5em; 
     729     float: left; 
     730     } 
     731     h1 { 
     732          padding: 0; 
     733          margin: 0; 
     734          height: 36px; 
     735          text-indent: -1000px; 
     736          } 
     737          h1 a { 
     738               position: absolute; 
     739               top: 0; 
     740               left: 0; 
     741               width: 174px; /* ie < 9 sucks */ 
     742               width: 17.4rem; 
     743               height: 36px; /* ie < 9 sucks */ 
     744               height: 3.6rem; 
     745               border: none; 
     746               color: #fff; 
     747               background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 6px; 
     748               } 
     749          h1 a:hover, h1 a:focus { 
     750               background-position: 0 -94px; 
     751               } 
     752/* info-boxes */ 
     753#info-boxes { 
    1662754     font-size: 12px; /* ie < 9 sucks */ 
    1663755     font-size: 1.2rem; 
    1664  } 
    1665 h4 a.button {font-weight: normal;} 
    1666  
    1667 /* validation */ 
    1668 input[type=submit], 
    1669 input[type=button], 
    1670 a.submit { 
    1671      color: #fff; 
    1672      text-shadow: 0 -1px 1px #1A87B9; 
    1673      background:#25A6E1; 
    1674      background:-moz-linear-gradient(top,#25A6E1 0%,#188BC0 100%); 
    1675      background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#25A6E1),color-stop(100%,#188BC0)); 
    1676      background:linear-gradient(top,#25A6E1 0%,#188BC0 100%); 
    1677      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#188BC0',GradientType=0); 
    1678      border:1px solid #2C8FD1; 
    1679  
    1680 } 
    1681 input[type=submit]:hover, 
    1682 input[type=button]:hover, 
    1683 a.submit:hover, 
    1684 input[type=submit]:focus, 
    1685 input[type=button]:focus, 
    1686 a.submit:focus { 
    1687      background:#188BC0; 
    1688      background:-moz-linear-gradient(top,#188BC0 0%,#25A6E1 100%); 
    1689      background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#188BC0),color-stop(100%,#25A6E1)); 
    1690      background:linear-gradient(top,#188BC0 0%,#25A6E1 100%); 
    1691      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#25A6E1',endColorstr='#25A6E1',GradientType=0); 
    1692 } 
    1693 /* suppression et reset */ 
    1694 a.button, 
    1695 input[type=submit].reset, 
    1696 input[type=submit].delete { 
    1697      border: 1px solid #ccc; 
    1698      background: #f5f5f5; 
    1699      color: #000; 
    1700      background: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#dfdfdf)); 
    1701      background: -moz-linear-gradient(top,  #f5f5f5,  #dfdfdf); 
    1702      text-shadow:1px 1px 0px #fff; 
    1703      } 
    1704 a.button:hover, 
    1705 input[type=reset]:hover, 
    1706 input[type=submit].reset:hover, 
    1707 input[type=submit].delete:hover, 
    1708 a.button:focus, 
    1709 input[type=reset]:focus, 
    1710 input[type=submit].reset:focus, 
    1711 input[type=submit].delete:focus { 
    1712      background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #e9e9e9), color-stop(1, #f9f9f9) ); 
    1713      background:-moz-linear-gradient( center top, #e9e9e9 5%, #f9f9f9 100% ); 
    1714      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e9e9e9', endColorstr='#f9f9f9'); 
    1715      background-color:#e9e9e9; 
    1716      } 
    1717 a.delete, 
    1718 input.delete, 
    1719 input[type=submit].delete { 
    1720      color: #c00; 
    1721      padding-bottom: 2px; 
    1722 } 
    1723 #entry-content .delete { 
    1724      margin-left: 1em; 
    1725 } 
    1726 a.delete:hover, 
    1727 input.delete:hover, 
    1728 input[type=submit].delete:hover, 
    1729 a.delete:focus, 
    1730 input.delete:focus, 
    1731 input[type=submit].delete:focus { 
    1732      border-color: #c00; 
    1733 } 
    1734 /* finasseries */ 
    1735 input[type=button] { 
    1736      padding: .1em; 
    1737 } 
    1738 #info-box a.button { 
    1739      padding: 0 .5em; 
    1740      margin-left: 2em; 
    1741 } 
    1742 .button.add { 
    1743      background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #bee74b), color-stop(1, #9BCA1C) ); 
    1744      background:-moz-linear-gradient( center top, #bee74b 5%, #9BCA1C 100% ); 
    1745      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bee74b', endColorstr='#9BCA1C'); 
    1746      background-color:#bee74b; 
    1747      border:1px solid #B2D742; 
    1748      padding:.5em 1.5em; 
    1749      color: #000; 
    1750      text-shadow:1px 1px 0px #98cf40; 
    1751      font-weight: normal; 
     756     line-height: 3em; 
     757     } 
     758     #info-boxes a { 
     759          font-weight: bold; 
     760          color: #fff; 
     761          border-bottom-color: #ccc; 
     762          margin-left: .3em; 
     763          margin-right: .3em; 
     764          white-space: nowrap; 
     765          font-weight: normal; 
     766          } 
     767     #info-boxes a img { 
     768          vertical-align: middle; 
     769          padding-left: .3em; 
     770          } 
     771     #info-box1 { 
     772          margin: 0; 
     773          padding: 0 3px 0 18px; 
     774          color: #fff; 
     775          display: inline-block; 
     776          } 
     777          #info-box1 p { 
     778               margin: 0; 
     779               display: inline; 
     780               } 
     781          #info-box1 select { 
     782               width: 145px; /* ie < 9 sucks */ 
     783               width: 14.5em; 
     784               } 
     785          #info-box1 a { 
     786               margin-left: 1.33em; 
     787               } 
     788     #info-box2 { 
     789          margin: 0; 
     790          padding: 0 18px 0 0; 
     791          color: #fff; 
     792          float: right; 
     793          text-align: right; 
     794          } 
     795          #info-box2 span { 
     796               color: #999; 
     797               } 
     798          #info-box2 .logout { 
     799               margin-right: 0; 
     800               } 
     801          #info-box2 a.active { 
     802               border-bottom-color: #fff; 
     803               margin: 0; 
     804               padding: 1.2em .5em; 
     805               background-color: #fff; 
     806               color: #333; 
     807               font-weight: bold; 
     808               } 
     809/* ---------------------------------------------------------- MAIN-MENU ELEMENTS */ 
     810#favorites-menu, #blog-menu, #system-menu, #plugins-menu { 
     811     border-bottom: 1px dashed #A2CBE9; 
     812     } 
     813#main-menu h3 { 
     814     margin: 0; 
     815     padding: 10px 0 10px 8px; 
     816     color: #666; 
    1752817     font-size: 14px; /* ie < 9 sucks */ 
    1753818     font-size: 1.4rem; 
    1754 } 
    1755 .button.add:hover, .button.add:active, .button.add:focus { 
    1756      background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9BCA1C), color-stop(1, #bee74b) ); 
    1757      background:-moz-linear-gradient( center top, #9BCA1C 5%, #bee74b 100% ); 
    1758      filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9BCA1C', endColorstr='#bee74b'); 
    1759      background-color:#9BCA1C; 
    1760 } 
    1761 .button-add:focus { 
    1762      outline: dotted 1px; 
    1763 } 
     819     } 
     820     #favorites-menu h3 { 
     821          color: #000; 
     822          font-variant: small-caps; 
     823          padding-top: .2em; 
     824          } 
     825#main-menu a { 
     826     color: #333; 
     827     border-bottom-color: #ccc; 
     828     } 
     829#main-menu ul { 
     830     margin: 0 0 1.5em 0; 
     831     padding: 0; 
     832     list-style: none; 
     833     } 
     834     #main-menu li { 
     835          display: block; 
     836          margin: 0.5em 0 0; 
     837          padding: 4px 0 1px 32px; 
     838          background-repeat: no-repeat; 
     839          background-position: 8px .3em; 
     840          } 
     841          #main-menu ul li:first-child { 
     842               margin-top: 0; 
     843               } 
     844          #main-menu li.active { 
     845               background-color: #fff; 
     846               font-weight: bold; 
     847               } 
     848               #favorites-menu li.active { 
     849                    background-color: transparent; 
     850                    } 
     851          #main-menu .active a { 
     852               border-bottom: none; 
     853               color: #d30e60; 
     854               } 
     855               #favorites-menu .active a { 
     856                    color: #000; 
     857                    } 
     858#search-menu { 
     859     padding: 4px 5px 0; 
     860     font-size: 100% 
     861     } 
     862     #search-menu * { 
     863          height: 22px; /* ie < 9 sucks */ 
     864          height: 2.2rem; 
     865          display: inline-block; 
     866          vertical-align: top; 
     867          line-height: 22px; 
     868          } 
     869     #search-menu p { 
     870          border: 1px solid #999; 
     871          border-radius: .3em; 
     872          position: relative; 
     873          overflow: hidden; 
     874          } 
     875     #qx { 
     876          width: 124px; /* ie < 9 sucks */ 
     877          width: 12.4rem; 
     878          border-bottom-left-radius: .3em; 
     879          border-top-left-radius: .3em; 
     880          background: transparent url(search.png) no-repeat 4px center; 
     881          text-indent: 18px; 
     882          padding: 0; 
     883          border: none; 
     884          height: 22px; 
     885          height: 2.2rem; 
     886          } 
     887          #qx:focus { 
     888               border-color: #bee74b; 
     889               } 
     890     #search-menu input[type="submit"] { 
     891          padding: 0 3px; 
     892          padding: 0 .3rem; 
     893          margin-left: -4px; 
     894          background: #dfdfdf; 
     895          border-color: #999; 
     896          color: #444; 
     897          border-bottom-right-radius: .3em; 
     898          border-top-right-radius: .3em; 
     899          border-top-left-radius: 0; 
     900          border-bottom-left-radius: 0; 
     901          text-shadow: none; 
     902          border: none; 
     903          border-left: 1px solid #aaa; 
     904          font-size: 10px; /* ie < 9 sucks */ 
     905          font-size: 1rem; 
     906          } 
     907          #search-menu input[type="submit"]:hover, 
     908          #search-menu input[type="submit"]:focus { 
     909               background: #676e78; 
     910               color: #fff; 
     911               } 
     912/* ----------------------------------------------------------------- CONTENT ELEMENTS */ 
     913.part-tabs ul { 
     914     padding: .5em 0 .3em 1em; 
     915     border-bottom: 1px solid #ddd; 
     916     } 
     917     .part-tabs li { 
     918          list-style: none; 
     919          margin: 0; 
     920          display: inline; 
     921          } 
     922          .part-tabs li a { 
     923               padding: .5em 2em; 
     924               margin-right: -1px; 
     925               border: 1px solid #ccc; 
     926               border-bottom: none; 
     927               text-decoration: none; 
     928               color: #333; 
     929               background-color: #ecf0f1; 
     930               } 
     931          .part-tabs li a:hover, .part-tabs li a:focus { 
     932               color: #000; 
     933               background: #fff; 
     934               border-bottom-color: #fff; 
     935               } 
     936          .part-tabs li.part-tabs-active a { 
     937               background: #fff; 
     938               font-weight: bold; 
     939               border-bottom-color: #fff; 
     940               padding-bottom: 7px; /* ie < 9 sucks */ 
     941               padding-bottom: .7rem; 
     942          } 
     943     .multi-part { 
     944          padding-left: 1em; 
     945          } 
     946/* contextual help */ 
     947#help { 
     948     margin-top: 4em; 
     949     background: #f5f5f5; 
     950     z-index: 100; 
     951     clear: both; 
     952     padding: 0 1em; 
     953     } 
     954     #content.with-help #help { 
     955          display: block; 
     956          position: absolute; 
     957          top: 36px; /* ie < 9 sucks */ 
     958          top: 3.6rem; 
     959          right: 0; 
     960          width: 280px; /* ie < 9 sucks */ 
     961          width: 28rem; 
     962          border-left: 2px solid #FFD478; 
     963          border-top: 2px solid #FFD478; 
     964          margin-top: 0; 
     965          padding: .5em 0 0 0; 
     966          overflow: auto; 
     967          } 
     968#help-button { 
     969     background: transparent url(../images/page_help.png) no-repeat 6px center; 
     970     position: absolute; 
     971     top: 36px; /* ie < 9 sucks */ 
     972     top: 3.6rem; 
     973     right: 0px; 
     974     padding: 0 1.5em 0 30px; 
     975     cursor: pointer; 
     976     color: #2373A8; 
     977     line-height: 42px; /* ie < 9 sucks */ 
     978     line-height: 4.2rem; 
     979     } 
     980     #help-button span { 
     981          padding: .5em 0 .1em 0; 
     982          border-bottom: 1px solid #2373A8; 
     983          } 
     984     #content.with-help #help-button { 
     985          right: 282px; /* ie < 9 sucks */ 
     986          right: 28.2rem; 
     987          background-color: #f5f5f5; 
     988          position: fixed; 
     989          border-top: 2px solid #FFD478; 
     990          border-left: 2px solid #FFD478; 
     991          border-bottom: 2px solid #FFD478; 
     992          border-bottom-left-radius: 1em; 
     993          border-top-left-radius: 1em; 
     994          } 
     995.help-box { 
     996     display: none; 
     997     } 
     998     .help-box ul { 
     999          padding-left: 20px; 
     1000          margin-left: 0; 
     1001          } 
     1002     #content.with-help .help-content { 
     1003          padding: 0 .5em 1em; 
     1004          } 
     1005          .help-content dt { 
     1006               font-weight: bold; 
     1007               color: #626262; 
     1008               margin: 0; 
     1009               } 
     1010          .help-content dd { 
     1011               margin: 0.3em 0 1.5em 0; 
     1012               } 
     1013/* ------------------------------------------------------------------ FOOTER ELEMENTS */ 
     1014#footer p { 
     1015     margin: 0; 
     1016     padding: 0 1em; 
     1017     font-size: 1em; 
     1018     } 
     1019     span.credit { 
     1020          font-size: 1em; 
     1021          font-weight: normal; 
     1022          } 
     1023/* --------------------------------------------------------------------------------------- 
     1024                                                                                     RÈGLES SPÉCIFIQUES 
     1025---------------------------------------------------------------------------------------- */ 
     1026/* ---------------------------------------------------------------- LISTES TABLEAUX */ 
     1027table .maximal, table.maximal { 
     1028     width: 100%; 
     1029     } 
     1030table .minimal { 
     1031     width: 1px; 
     1032     } 
     1033table .nowrap { 
     1034     white-space: nowrap; 
     1035     vertical-align: top; 
     1036     } 
     1037table .count { 
     1038     text-align: right; 
     1039     padding-right: 1.5em; 
     1040     } 
     1041th.first img { 
     1042     padding-right: 24px; 
     1043     } 
     1044tr.line img.expand, th img.expand { 
     1045     margin-right: 6px; 
     1046     margin-bottom: -2px; 
     1047     } 
     1048tr.line p { 
     1049     margin: 0; 
     1050     } 
     1051tr.line input { 
     1052     vertical-align: middle; 
     1053     } 
     1054tr.line:hover { 
     1055     background: #f3f3f3; 
     1056     } 
     1057td.status { 
     1058     vertical-align: middle; 
     1059     } 
     1060td.status img { 
     1061     margin-bottom: -2px; 
     1062     } 
     1063td.status a { 
     1064     border: none; 
     1065     } 
     1066.noborder td, td.noborder, .noborder th, th.noborder { 
     1067     border-width: 0 0 1px 0; 
     1068     border-color: #ddd; 
     1069     line-height: 2em; 
     1070     padding-bottom: 0; 
     1071     } 
     1072.noborder p { 
     1073     margin-bottom: 0; 
     1074     } 
     1075table.posts-list { 
     1076     min-width: 50%; 
     1077     } 
     1078table.settings, table.prefs { 
     1079     width: 80%; 
     1080     border: 1px solid #ccc; 
     1081     margin-bottom: 3em; 
     1082     } 
     1083     table.settings th, table.prefs th { 
     1084          background: #f3f3ff; 
     1085          } 
     1086     table.settings th:first-child, table.prefs th:first-child { 
     1087          width: 20%; 
     1088          } 
     1089     table.settings th + th, table.prefs th + th { 
     1090          width: 30%; 
     1091          } 
     1092     table.settings th + th + th, table.prefs th + th + th { 
     1093          width: 10%; 
     1094          } 
     1095     table.settings th:last-child, table.prefs th:last-child { 
     1096          width: 40%; 
     1097          } 
     1098/* js */ 
     1099td.expand { 
     1100     padding: 1em; 
     1101     } 
     1102tr.expand td { 
     1103     border-bottom: none; 
     1104     } 
     1105.dragable { 
     1106     border-collapse: separate; 
     1107     } 
     1108.handle { 
     1109     padding: 0; 
     1110     } 
     1111.handler { 
     1112     cursor: move; 
     1113     background: transparent url(drag.png) no-repeat 0 50%; 
     1114     padding-left: 15px; 
     1115     } 
     1116/* ----------------------------------------------------------- BOITES À FILTRES */ 
     1117#filters-form { 
     1118     border: 1px dashed #999; 
     1119     border-radius: .5em; 
     1120     margin-bottom: 2em; 
     1121     padding: .5em 1em 0; 
     1122     } 
     1123#filters-form .table { 
     1124     width: 100%; 
     1125     padding: 0; 
     1126     margin-bottom: 1em; 
     1127     margin-top: .5em; 
     1128     } 
     1129     #filters-form .cell { 
     1130          padding: 0 2em 0 0; 
     1131          } 
     1132     #filters-form .filters-sibling-cell { 
     1133          padding-top: 3.8em; 
     1134          } 
     1135#filters-form .filters-options { 
     1136     padding-left: 2em; 
     1137     border-left: 1px solid #ccc; 
     1138     } 
     1139#filters-form label.ib, span.ib { 
     1140     width:7em; 
     1141     } 
     1142#filters-form label.ibw, span.ibw { 
     1143     width: 9em; 
     1144     display: inline-block; 
     1145     } 
     1146#filters-form select { 
     1147     width: 14em; 
     1148     } 
     1149#filters-form h4 { 
     1150     margin-top: 0; 
     1151     margin-bottom: 2em; 
     1152     } 
     1153/* ---------------------------------------------------------------------------- SPEC PAGES */ 
     1154/* ---------------------------------------------------------------------------- auth.php */ 
     1155#login-screen { 
     1156     display: block; 
     1157     width: 20em; 
     1158     margin: 1.5em auto 0; 
     1159     font-size: 14px; /* ie < 9 sucks */ 
     1160     font-size: 1.4rem; 
     1161     } 
     1162#login-screen h1 { 
     1163     text-indent: -2000px; 
     1164     background: transparent url(dc_logos/w-dotclear240.png) no-repeat top left; 
     1165     height: 66px; 
     1166     margin-bottom: .5em; 
     1167     margin-left: 0; 
     1168     } 
     1169#login-screen .fieldset { 
     1170     border: 1px solid #A8DC26; 
     1171     padding: 1em 1em 0 1em; 
     1172     border-radius: 3px; 
     1173     background: #fff; 
     1174     } 
     1175#login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] { 
     1176     width: 100%; 
     1177     } 
     1178     #login-screen input.login { 
     1179          padding-top: 6px; 
     1180          padding-bottom: 6px; 
     1181          font-size: 1em; 
     1182          } 
     1183#login-screen #issue { 
     1184     margin-left: 1.33em; 
     1185     font-size: 12px; /* ie < 9 sucks */ 
     1186     font-size: 1.2rem; 
     1187     } 
     1188     #login-screen #issue strong { 
     1189          font-weight: normal; 
     1190          } 
     1191/* ------------------------------------------------------------------------- index.php */ 
     1192#dashboard-main { 
     1193     padding: 1em 0; 
     1194     } 
     1195/* raccourcis */ 
     1196#icons { 
     1197     overflow: hidden; 
     1198     padding-bottom: 1em; 
     1199     text-align: center; 
     1200     } 
     1201     #icons p { 
     1202          width: 210px; 
     1203          text-align: center; 
     1204          margin: 1em 0 2em; 
     1205          padding: 1em 0; 
     1206          display:inline-block; 
     1207          vertical-align: top; 
     1208          } 
     1209     #icons a, 
     1210     #icons a:link, 
     1211     #icons a:visited, 
     1212     #icons a:hover, 
     1213     #icons a:focus { 
     1214          border-bottom-width: 0px; 
     1215          text-decoration: none; 
     1216          } 
     1217          #icons a span { 
     1218               border-bottom: 1px dotted #f90; 
     1219               color: #333; 
     1220               } 
     1221          #icons a img { 
     1222               padding: 2em; 
     1223               -moz-box-shadow: 0px 1px 0px 0px #ffffff; 
     1224               -webkit-box-shadow: 0px 1px 0px 0px #ffffff; 
     1225               box-shadow: 0px 1px 0px 0px #ffffff; 
     1226               background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #f9f9f9), color-stop(1, #e9e9e9) ); 
     1227               background:-moz-linear-gradient( center top, #f9f9f9 5%, #e9e9e9 100% ); 
     1228               filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e9e9e9'); 
     1229               background-color:#f9f9f9; 
     1230               -moz-border-radius:1em; 
     1231               -webkit-border-radius:1em; 
     1232               border-radius:1em; 
     1233               border:1px solid #dcdcdc; 
     1234               display:inline-block; 
     1235               } 
     1236               #icons a:focus img, #icons a:hover img { 
     1237                    background: #bee74b; 
     1238                    } 
     1239               #icons a:focus span, #icons a:hover span { 
     1240                    text-decoration: underline; 
     1241                    } 
     1242/* billet rapide */ 
     1243#quick { 
     1244     margin-top: 1em; 
     1245     padding-top: 1em; 
     1246     } 
     1247     #quick h3 { 
     1248          margin-bottom: 0.2em; 
     1249          font-size: 1.2em; 
     1250          } 
     1251     #quick p.qinfo { 
     1252          margin: -.7em -1em 1em; 
     1253          background: #f3f3ff url(info.png) no-repeat .2em .2em; 
     1254          border: 1px solid #99f; 
     1255          padding: .2em 1em .1em 24px; 
     1256          color: #666; 
     1257          } 
     1258     #quick #new_cat, .q-cat, .q-cat label { 
     1259          display: inline-block; 
     1260          vertical-align: top; 
     1261          margin-right: 1em; 
     1262          margin-top: 0; 
     1263          } 
     1264     .q-cat label { 
     1265          margin-right: .3em; 
     1266          } 
     1267     #quick #new_cat { 
     1268          margin-bottom: 2em; 
     1269     } 
     1270/* modules additionnels */ 
     1271#dashboard-boxes { 
     1272     margin: 2em auto 1em; 
     1273     padding-top: 2em; 
     1274     } 
     1275     .db-items img, .db-contents img { 
     1276          vertical-align: middle; 
     1277          } 
     1278     .db-items ul, .db-contents ul { 
     1279          display: block; 
     1280          padding-left: 1.5em; 
     1281          list-style: square; 
     1282          } 
     1283          .db-items li, .db-contents li { 
     1284               margin: 0.25em 0 0 0; 
     1285               color: #666; 
     1286               } 
     1287     #news dt { 
     1288          font-weight: bold; 
     1289          margin: 0 0 0.4em 0; 
     1290          } 
     1291     #news dd { 
     1292          margin: 0 0 1em 0; 
     1293          } 
     1294          #news dd p { 
     1295               margin: 0.2em 0 0 0; 
     1296               } 
     1297/* message de mise à jour */ 
     1298#upg-notify ul { 
     1299     padding-left: 1.5em; 
     1300     } 
     1301     #upg-notify li { 
     1302          color: #fff; 
     1303          } 
     1304/* ------------------------------------------------------------------- blog_pref.php */ 
     1305.user-perm { 
     1306     margin: 2em 0px; 
     1307     background: transparent url(user.png) no-repeat left top; 
     1308     width: 320px; 
     1309     display: inline-block; 
     1310     vertical-align: top; 
     1311     } 
     1312     .user-perm h4, .user-perm h5, .user-perm p, .user-perm ul, .user-perm li { 
     1313          margin: .5em 0 .33em; 
     1314          padding: 0; 
     1315          } 
     1316     .user-perm h4 { 
     1317          padding-left: 28px; 
     1318          } 
     1319     .user-perm h5 { 
     1320          margin:   1em 0 0 0; 
     1321          } 
     1322     .user-perm ul { 
     1323          list-style-type: inside; 
     1324          } 
     1325          .user-perm li { 
     1326               margin-left: 1em; 
     1327               padding-left: 0; 
     1328               } 
     1329               li.user_super, li.user_admin { 
     1330                    margin-left: 0; 
     1331                    padding-left: 1em; 
     1332                    list-style: none; 
     1333                    background: transparent url(../images/superadmin.png) no-repeat -2px 2px; 
     1334                    } 
     1335               li.user_admin { 
     1336                    background-image: url(../images/admin.png); 
     1337                    } 
     1338/* ------------------------------------------------------------------- blog_theme.php */ 
     1339#themes { 
     1340     margin: 0; 
     1341     width: 100%; 
     1342     padding: 0; 
     1343     } 
     1344     .theme-details { 
     1345          border-top: 1px solid #ccc; 
     1346          padding: 12px; 
     1347          display: inline-block; 
     1348          vertical-align: top; 
     1349          width: 284px; 
     1350          } 
     1351          .theme-details.current-theme { 
     1352               background: #eef; 
     1353               } 
     1354          .theme-details:hover { 
     1355               background: #f3f3f3; 
     1356               } 
     1357          .theme-shot img { 
     1358               display: block; 
     1359               border: 1px solid #ccc; 
     1360               margin-bottom: 1.5em; 
     1361               } 
     1362          span.theme-desc { 
     1363               display: block; 
     1364               } 
     1365          span.theme-version { 
     1366               color: #666; 
     1367               } 
     1368          .theme-css { 
     1369               display: block; 
     1370               } 
     1371     #themes-actions { 
     1372          border-bottom: 1px solid #999; 
     1373          margin-bottom: 3em; 
     1374          } 
     1375/* Themes list, JS version */ 
     1376#themes-wrapper { 
     1377     display: table; 
     1378     } 
     1379     #themes-wrapper #themes { 
     1380          display: table-cell; 
     1381          vertical-align: top; 
     1382          padding-left: 1em; 
     1383          } 
     1384     #theme-box { 
     1385          display: table-cell; 
     1386          vertical-align: top; 
     1387          padding: 0; 
     1388          width: 312px; 
     1389          border: 1px solid #ccc; 
     1390          border-radius: 3px; 
     1391          } 
     1392          #theme-box .theme-shot, 
     1393          #theme-box .theme-info, 
     1394          #theme-box .theme-actions { 
     1395               background: #eef; 
     1396               padding: 1em 16px; 
     1397               margin: 0; 
     1398               } 
     1399          #theme-box .theme-shot img { 
     1400               display: block; 
     1401               width: 280px; 
     1402               height: 245px; 
     1403               border: 1px solid #ccc; 
     1404               } 
     1405          #theme-box h4 { 
     1406               color: #000; 
     1407               background: #eef; 
     1408               } 
     1409          #theme-box span.theme-version { 
     1410               color: #666; 
     1411               } 
     1412          #theme-box span.theme-parent-ok { 
     1413               color: #666; 
     1414               } 
     1415          #theme-box span.theme-parent-missing { 
     1416               color: #c00; 
     1417               font-weight:bold; 
     1418               } 
     1419          #theme-box .theme-actions { 
     1420               border-bottom: 1px solid #ccc; 
     1421               } 
     1422#themes .theme-details-js { 
     1423     float: left; 
     1424     width: 120px; 
     1425     height: 150px; 
     1426     margin: 0 12px 24px; 
     1427     padding: 12px 12px 0; 
     1428     text-align: center; 
     1429     background: #f3f3f3; 
     1430     border: 1px solid #ddd; 
     1431     cursor: pointer; 
     1432     border-radius: 4px; 
     1433     } 
     1434     #themes .theme-details-js label { 
     1435          cursor: pointer; 
     1436          } 
     1437     #themes .theme-details-js.theme-selected { 
     1438          background: #e7e7e7; 
     1439          border: 1px solid #999; 
     1440          } 
     1441     #themes .theme-details-js .theme-shot img { 
     1442          width: 120px; 
     1443          height: 105px; 
     1444          border: 1px solid #fff; 
     1445          } 
     1446     #themes a:focus div, #themes a:hover div, 
     1447     #themes a:focus div.current-theme, #themes a:hover div.current-theme { 
     1448          background: #bee74b; 
     1449          } 
     1450/* ------------------------------------------------------------------ categories.php */ 
     1451#categories { 
     1452     margin: 1em 0; 
     1453     } 
     1454#categories ul { 
     1455     list-style: none; 
     1456     margin: 0; 
     1457     padding: 0; 
     1458     } 
     1459     #categories li { 
     1460          margin: .5em 0; 
     1461          padding: .5em 1.2em; 
     1462          border: 1px solid #ccc; 
     1463          border-left: 8px solid #E5E3DA; 
     1464          border-radius: 3px; 
     1465          } 
     1466          #categories label a { 
     1467               font-weight: bold; 
     1468               } 
     1469          #categories li p { 
     1470               margin: 0; 
     1471               display: inline-block; 
     1472               } 
     1473          #categories input[type="checkbox"] { 
     1474               margin-right: .8em; 
     1475               } 
     1476          .cat-url { 
     1477               padding-left: 1em; 
     1478               } 
     1479          #categories .placeholder { 
     1480               outline: 1px dashed #4183C4; 
     1481               min-height: 2.5em; 
     1482               } 
     1483          #categories input.cat-rank { 
     1484               float: right; 
     1485               margin-left: 30px; 
     1486               } 
     1487#categories h4 { 
     1488     margin: 0; 
     1489     } 
     1490     #categories h4 span { 
     1491          font-weight: normal; 
     1492          } 
     1493.cat-actions { 
     1494     line-height: 2; 
     1495     } 
     1496     #del_cat { 
     1497          width: 100%; 
     1498          } 
     1499/* ------------------------------------------------------------------ media.php */ 
     1500.media-list { 
     1501     position: static; 
     1502     } 
     1503.media-item { 
     1504     position: relative; 
     1505     border: 1px solid #ccc; 
     1506     margin: 1em; 
     1507     padding: 1em; 
     1508     width: 300px; 
     1509     display: inline-block; 
     1510     vertical-align: top; 
     1511     min-height: 120px 
     1512     } 
     1513     .media-item ul { 
     1514          display: block; 
     1515          list-style: none; 
     1516          margin: 0; 
     1517          padding: 0; 
     1518          } 
     1519     a.media-icon { 
     1520          display: block; 
     1521          border-bottom: none; 
     1522          margin: 0 auto;  
     1523          } 
     1524          .media-icon img { 
     1525               display: block; 
     1526               } 
     1527.media-action-box { 
     1528     position: relative; 
     1529     margin: 3em 3em 1em 1em; 
     1530     display: inline-block; 
     1531     vertical-align: top; 
     1532     } 
     1533li.media-action { 
     1534     display: block; 
     1535     position: absolute; 
     1536     top: 5px; 
     1537     right: 5px; 
     1538     height: 16px; 
     1539     } 
     1540     li.media-action a { 
     1541          border: none; 
     1542          } 
     1543     li.media-action form { 
     1544          display: inline; 
     1545          } 
     1546     li.media-action input { 
     1547          border: none; 
     1548          } 
     1549.zip-dl { 
     1550     background: transparent url(package.png) no-repeat 0 50%; 
     1551     padding: 5px 0 5px 20px; 
     1552     } 
     1553/* --------------------------------------------------------------- media-item.php */ 
     1554#media-icon { 
     1555     float: left; 
     1556     } 
     1557.near-icon { 
     1558     margin-left: 70px; 
     1559     margin-bottom: 3em; 
     1560     } 
     1561#media-details ul { 
     1562     display: block; 
     1563     margin-left: 0; 
     1564     padding: 0; 
     1565     } 
     1566     #media-details li { 
     1567          list-style: square inside; 
     1568          margin: 0; 
     1569          padding: 0; 
     1570          } 
     1571#media-original-image { 
     1572     overflow: auto; 
     1573     } 
     1574     #media-original-image.overheight { 
     1575          height: 500px; 
     1576          } 
     1577/* -------------------------------------------------------------------- plugins.php */ 
     1578#plugins td.action { 
     1579     vertical-align: middle; 
     1580     } 
     1581.distrib img { 
     1582     display: block; 
     1583     float: right; 
     1584     margin-top: -1em; 
     1585     } 
     1586/* ---------------------------------------------------------- post.php, page.php */ 
     1587#entry-wrapper { 
     1588     float: left; 
     1589     width: 100%; 
     1590     margin-right: -18em; 
     1591     } 
     1592#entry-content { 
     1593     margin-right: 20em; 
     1594     margin-left: 0; 
     1595     } 
     1596     #entry-content label { 
     1597          text-transform: uppercase; 
     1598          font-weight: bold; 
     1599          margin-top: 2em; 
     1600          } 
     1601     #entry-content label:first-child { 
     1602          margin-top: 0; 
     1603          } 
     1604#entry-sidebar { 
     1605     width: 18em; 
     1606     float: right; 
     1607     } 
     1608     #entry-sidebar select { 
     1609          width: 100%; 
     1610          } 
     1611     #entry-sidebar input#post_position { 
     1612          width: 4em; 
     1613          } 
     1614     .sb-box { 
     1615          border-bottom: 1px solid #ddd; 
     1616          margin-bottom: 1em; 
     1617          } 
     1618/* ---------------------------------------------------------- preferences.php */ 
     1619#my-favs { 
     1620     border: 1px solid #A8DC26; 
     1621     padding: 1em 2em 
     1622     } 
     1623     #my-favs ul { 
     1624          list-style-type: none; 
     1625          margin-left: 0; 
     1626          padding-left: 0; 
     1627          line-height: 1.2; 
     1628          } 
     1629          #my-favs li { 
     1630               display: block; 
     1631               float: left; 
     1632               width: 164px; 
     1633               margin-top: 1em; 
     1634               margin-bottom: 1.5em; 
     1635               } 
     1636     #my-favs label { 
     1637          height: 2.5em; 
     1638          width:140px; 
     1639          margin-top:.3em; 
     1640          } 
     1641          #my-favs label input { 
     1642               display:inline; 
     1643               } 
     1644     #my-favs img { 
     1645          display: block; 
     1646          } 
     1647     #my-favs input.position { 
     1648          margin: 0 0 .4em .2em; 
     1649          } 
     1650     #available-favs input, #available-favs label, #available-favs label span { 
     1651          white-space: normal; 
     1652          display: inline; 
     1653          } 
     1654          #default-favs h3 { 
     1655               margin-top: 2em; 
     1656               margin-bottom: 1em; 
     1657               } 
     1658          .fav-list { 
     1659               list-style-type: none; 
     1660               margin-left: 0; 
     1661               padding-left: 0; 
     1662               } 
     1663               .fav-list li { 
     1664                    line-height: 2; 
     1665                    margin-left: 0; 
     1666                    padding-left: 0; 
     1667                    position: relative; 
     1668                    } 
     1669               .fav-list img { 
     1670                    vertical-align: middle; 
     1671                    margin-right: .2em; 
     1672               } 
     1673     #available-favs label span.zoom { 
     1674          display: none; 
     1675          } 
     1676     #available-favs li:hover label span.zoom { 
     1677          display: block; 
     1678          position: absolute; 
     1679          bottom: 0; 
     1680          left: 10em; 
     1681          background-color: #f7f7f7; 
     1682          border: 1px solid #ddd; 
     1683          padding: .2em; 
     1684          border-radius: .5em; 
     1685          } 
     1686#user-options label.ib { 
     1687     display: inline-block; 
     1688     width: 14em; 
     1689     padding-right: 1em; 
     1690     } 
     1691/* --------------------------------------------------------------------- user.php */ 
     1692.blog-perm { 
     1693     margin-top: 2em; 
     1694     font-weight: bold; 
     1695     } 
     1696.ul-perm { 
     1697     list-style-type: square; 
     1698     margin-left: 0; 
     1699     padding-left: 3.5em; 
     1700     margin-bottom: 0 
     1701     } 
     1702.add-perm { 
     1703     padding-top: .5em; 
     1704     padding-left: 2.5em; 
     1705     margin-left: 0; 
     1706     } 
    17641707 
     1708/* ------------------------------------------------------------------------------------ 
     1709                                                                                                    CLASSES 
     1710------------------------------------------------------------------------------------ */ 
    17651711/* jQuery Autocomplete plugin */ 
    17661712.ac_results { 
     
    17701716     overflow: hidden; 
    17711717     z-index: 99999; 
    1772 } 
     1718     } 
    17731719.ac_results ul { 
    17741720     width: 100%; 
     
    17771723     padding: 0; 
    17781724     margin: 0; 
    1779 } 
    1780 .ac_results li { 
    1781      margin: 0px; 
    1782      padding: 2px 5px; 
    1783      cursor: default; 
    1784      display: block; 
    1785      font: menu; 
    1786      font-size: 1em; 
    1787      line-height: 16px; 
    1788      overflow: hidden; 
    1789 } 
     1725     } 
     1726     .ac_results li { 
     1727          margin: 0px; 
     1728          padding: 2px 5px; 
     1729          cursor: default; 
     1730          display: block; 
     1731          font: menu; 
     1732          font-size: 1em; 
     1733          line-height: 16px; 
     1734          overflow: hidden; 
     1735          } 
    17901736.ac_loading { 
    17911737     background: transparent url('loader.gif') right center no-repeat; 
    1792 } 
     1738     } 
    17931739.ac_over { 
    17941740     background-color: #06c; 
    17951741     color: white; 
    1796 } 
    1797  
    1798 /* ------------------------------------------------------- Filters */ 
    1799 #filters-form { 
    1800      border: 1px dashed #999; 
    1801      border-radius: .5em; 
     1742     } 
     1743/* password indicator */ 
     1744.pw-table { 
     1745     display: table; 
     1746     margin-bottom: 1em; 
     1747     } 
     1748.pw-cell { 
     1749     display: table-cell; 
     1750     margin-bottom: 1em; 
     1751     } 
     1752#pwindicator { 
     1753     display: table-cell; 
     1754     vertical-align: bottom; 
     1755     padding-left: 1.5em; 
     1756     height: 3.8em; 
     1757     } 
     1758     #pwindicator .bar { 
     1759          height: 6px; 
     1760          margin-bottom: 4px; 
     1761          } 
     1762          .pw-very-weak .bar { 
     1763               background: #900; 
     1764               width: 30px; 
     1765               } 
     1766          .pw-weak .bar { 
     1767               background: #c00; 
     1768               width: 60px; 
     1769               } 
     1770          .pw-mediocre .bar { 
     1771               background: #f60; 
     1772               width: 90px; 
     1773               } 
     1774          .pw-strong .bar { 
     1775               background: #060; 
     1776               width: 120px; 
     1777               } 
     1778          .pw-very-strong .bar { 
     1779               background: #0c0; 
     1780               width: 150px; 
     1781               } 
     1782/* ------------------------------------------------------------------ navigation */ 
     1783/* selects accès rapide */ 
     1784.anchor-nav { 
     1785     background: #ecf0f1; 
     1786     color: #000; 
     1787     padding: 4px 1em; 
     1788     } 
     1789/* nav links */ 
     1790.nav_prevnext { 
    18021791     margin-bottom: 2em; 
    1803      padding: .5em 1em 0; 
    1804 } 
    1805 #filters-form .table { 
    1806      display: table; 
    1807      width: 100%; 
    1808      padding: 0; 
    1809      margin-bottom: 1em; 
    1810      margin-top: .5em; 
    1811 } 
    1812 #filters-form .cell { 
    1813      padding: 0 2em 0 0; 
    1814      display: table-cell; 
    1815      vertical-align: top; 
    1816 } 
    1817 #filters-form .filters-sibling-cell { 
    1818      padding-top: 3.8em; 
    1819 } 
    1820 #filters-form .filters-options { 
    1821      padding-left: 2em; 
    1822      border-left: 1px solid #ccc; 
    1823 } 
    1824 #filters-form label.ib, span.ib { 
    1825      width:7em; 
    1826      display: inline-block; 
    1827 } 
    1828 #filters-form label.ibw, span.ibw { 
    1829      width: 9em; 
    1830      display: inline-block; 
    1831 } 
    1832 #filters-form select { 
    1833      width: 14em; 
    1834 } 
    1835 #filters-form h4 { 
    1836      margin-top: 0; 
    1837      margin-bottom: 2em; 
    1838 } 
    1839  
    1840 /* ---------------------------------------------------- Pagination */ 
     1792     color: #fff; 
     1793     } 
     1794     .nav_prevnext a, a.back { 
     1795          border: 1px solid #ddd; 
     1796          padding: 2px 1.5em; 
     1797          border-radius: .75em; 
     1798          background-color: #f0f0f0; 
     1799          } 
     1800          a.back:before { 
     1801               content: "\ab\a0"; 
     1802               } 
     1803          a.onblog_link { 
     1804               color: #333; 
     1805               float: right; 
     1806               border: 1px solid #eee; 
     1807               padding: 2px 1.5em; 
     1808               border-radius: .75em; 
     1809               background-color: #ffe; 
     1810               } 
     1811/* Pagination */ 
    18411812.pagination { 
    18421813     height: 22px; 
     
    18441815     line-height: 22px; 
    18451816     padding: 0 .75em; 
    1846      border: 1px solid #ddd; 
     1817     border: 1px solid #e7e7e7; 
    18471818     overflow: hidden; 
    1848      background: #e1e1e1; 
    1849      background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1); 
    1850      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1)); 
    1851      -moz-border-radius: 4px; 
    1852      -webkit-border-radius: 4px; 
    1853      border-radius: 4px; 
     1819     background: #f3f3f3; 
     1820     -moz-border-radius: 3px; 
     1821     -webkit-border-radius: 3px; 
     1822     border-radius: 3px; 
    18541823     clear: left; 
    1855 } 
    1856 .pagination a, .pagination strong { 
    1857      height: 20px; 
    1858      border: none; 
    1859      padding: 2px 6px; 
    1860      background-color : transparent; 
    1861      background-position : 50% 50%; 
    1862      background-repeat: no-repeat; 
    1863 } 
    1864 .pagination a:hover, .pagination strong { 
    1865      border-color : #ccc; 
    1866      background-color: #fff; 
    1867 } 
    1868  
    1869 /* --------------------------------------------------------------- password indcator */ 
    1870 .pw-table { 
    1871      display: table; 
     1824     } 
     1825     .pagination a, .pagination strong { 
     1826          height: 20px; 
     1827          border: none; 
     1828          padding: 2px 6px; 
     1829          background-color : transparent; 
     1830          background-position : 50% 50%; 
     1831          background-repeat: no-repeat; 
     1832          } 
     1833          .pagination a:hover, .pagination strong { 
     1834               border-color : #ccc; 
     1835               background-color: #fff; 
     1836               } 
     1837/* Etapes */ 
     1838.step { 
     1839     display: inline-block; 
     1840     float: left; 
     1841     margin: 3px 10px 2px 0; 
     1842     padding: 5px .5em; 
     1843     background: #ecf0f1; 
     1844     border-radius: 3px; 
     1845     font-weight: bold; 
     1846     border: 1px solid #bdc3c7; 
     1847     color: #738182; 
     1848     } 
     1849/* ---------------------------------------------------------------- utilisables partout  */ 
     1850.fieldset { 
     1851     background: #fff; 
     1852     border: 1px solid #bbb; 
     1853     border-radius: 3px; 
     1854     padding: 1em .7em .5em; 
    18721855     margin-bottom: 1em; 
    1873 } 
    1874 .pw-cell { 
    1875      display: table-cell; 
    1876      margin-bottom: 1em; 
    1877 } 
    1878 #pwindicator { 
    1879      display: table-cell; 
    1880      vertical-align: bottom; 
    1881      padding-left: 1.5em; 
    1882      height: 3.8em; 
    1883 } 
    1884 #pwindicator .bar { 
    1885      height: 6px; 
    1886      margin-bottom: 4px; 
    1887 } 
    1888 .pw-very-weak .bar { 
    1889      background: #900; 
    1890      width: 30px; 
    1891 } 
    1892 .pw-weak .bar { 
    1893      background: #c00; 
    1894      width: 60px; 
    1895 } 
    1896 .pw-mediocre .bar { 
    1897      background: #f60; 
    1898      width: 90px; 
    1899 } 
    1900 .pw-strong .bar { 
    1901      background: #060; 
    1902      width: 120px; 
    1903 } 
    1904 .pw-very-strong .bar { 
    1905      background: #0c0; 
    1906      width: 150px; 
    1907 } 
    1908 /* ------------------------------------------------------------- cachotteries */ 
     1856     } 
     1857     .fieldset h3 { 
     1858          color: #333; 
     1859          } 
     1860.right { 
     1861     text-align: right; 
     1862     } 
     1863.txt-center { 
     1864     text-align: center; 
     1865     } 
     1866.no-margin, label.no-margin { 
     1867     margin-top: 0; 
     1868     margin-bottom: 0; 
     1869     } 
     1870.vertical-separator { 
     1871     margin-top: 2em; 
     1872     } 
     1873     p.clear.vertical-separator { 
     1874          padding-top: 2em; 
     1875          } 
     1876.border-top { 
     1877     border-top: 1px solid #999; 
     1878     padding-top: 1em; 
     1879     margin-top:    1em; 
     1880     } 
     1881.grid { 
     1882     background: transparent repeat url('grid.png') 0 0; 
     1883     } 
     1884ul.nice { 
     1885     margin: 1em 0; 
     1886     padding: 0 0 0 2em; 
     1887     list-style: square; 
     1888     } 
     1889     ul.nice li { 
     1890          margin:0; 
     1891          padding: 0; 
     1892          } 
     1893.offline { 
     1894     color: #666; 
     1895     } 
    19091896/* caché pour tout le monde */ 
    19101897.hide { 
    19111898     display: none; 
    1912 } 
     1899     } 
    19131900/* Caché sauf pour les revues d'écran */ 
    19141901.hidden { 
     
    19251912.no-js .hidden-if-no-js { 
    19261913        display: none; 
    1927 } 
     1914     } 
    19281915/* montré si js est inactif */ 
    19291916.no-js .hidden-if-js { 
    19301917     display: block; 
    1931 } 
     1918     } 
    19321919/* caché si js est actif */ 
    19331920.hidden-if-js { 
    19341921        display: none; 
    1935 } 
    1936  
    1937 /* --------------------------------------------------------------------------- 
    1938      Media queries vite fait en attendant la reprise complète du layout 
    1939 ---------------------------------------------------------------------------- */ 
     1922     } 
     1923/* ------------------------------------------------------------------------------------ 
     1924                                                                                                    UTILS 
     1925------------------------------------------------------------------------------------ */ 
     1926/* debug */ 
     1927#debug { 
     1928     position: absolute; 
     1929     top: 0; 
     1930     width: 100%; 
     1931     height: 4px; 
     1932     background: #d99; 
     1933     } 
     1934#debug div { 
     1935     display: none; 
     1936     padding: 3px 0.5em 2px; 
     1937     } 
     1938#debug p { 
     1939     margin: 0.5em 0; 
     1940     } 
     1941#debug:hover { 
     1942     height: auto; 
     1943     } 
     1944#debug:hover div { 
     1945     display: block; 
     1946     } 
     1947/* ------------------------------------------------------------------------------------ 
     1948                                                                           UN POIL DE MEDIA QUERIES 
     1949------------------------------------------------------------------------------------ */ 
    19401950@media screen and (max-width: 920px) { 
    1941      #top, #top h1 a {width: 42px !important; height:100%; overflow: hidden; 
    1942 } 
    1943      #top h1 a:link { 
    1944           background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px; 
    1945           border-right: 1px solid #ccc; 
    1946      } 
    1947      #top h1 a:hover, #top h1 a:focus { 
    1948           background: url(dc_logos/b-dotclear120.png) no-repeat -180px -94px; 
    1949           border-right: 1px solid #A2CBE9; 
    1950      } 
    1951 } 
     1951     #top, #top h1 a { 
     1952          width: 42px !important;  
     1953          height:100%;  
     1954          overflow: hidden; 
     1955          } 
     1956          #top h1 a:link { 
     1957               background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px; 
     1958               border-right: 1px solid #ccc; 
     1959               } 
     1960          #top h1 a:hover, #top h1 a:focus { 
     1961               background: url(dc_logos/b-dotclear120.png) no-repeat -180px -94px; 
     1962               border-right: 1px solid #A2CBE9; 
     1963               } 
     1964     } 
    19521965@media screen and (max-width: 800px) { 
    19531966     #top, #info-boxes, #info-box1, #info-box2 { 
     
    19561969          margin:0; 
    19571970          padding:0; 
    1958           line-height: 32px; /* ie < 9 sucks */ 
    1959           line-height: 3.2rem; 
    1960      } 
    1961      #info-box1 {margin-left: .75em;} 
    1962      #info-box1 select {width: 140px; width: 14rem;} 
    1963      #main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content, .two-cols .col, .two-cols .col:first-child { 
    1964      display:block; 
     1971          line-height: 32px; line-height: 3.2rem; 
     1972          } 
     1973          #info-box1 { margin-left: .75em; } 
     1974          #info-box1 select { width: 140px; width: 14rem; } 
     1975     #main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content,  
     1976     .two-cols .col, .two-cols .col:first-child, .boxes { 
     1977          display:block !important; 
    19651978     width: 98%; 
    19661979     margin:0 auto; 
     
    19691982     text-align: left; 
    19701983     clear: both; 
    1971      } 
     1984          } 
    19721985     #content { 
    1973           width: 100%; 
    1974           padding-top: .5em; 
    1975      } 
    1976 } 
     1986          width: 100%; 
     1987          padding-top: .5em; 
     1988          } 
     1989     } 
    19771990@media screen and (max-width: 720px) { 
    1978      .smallscreen {display: none;} 
    1979      #help-button {width:20px; overflow: hidden;} 
    1980      #info-box2 {float:none;} 
    1981      #dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;} 
    1982      #help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size:10px; font-size: 1rem;line-height: 68px} 
    1983 } 
     1991     .smallscreen { display: none; } 
     1992     #info-box2 { float:none; } 
     1993     #help-button { 
     1994          height:26px;  
     1995          width:26px;  
     1996          background-color: #A2CBE9;  
     1997          padding: 0;  
     1998          margin: 0; 
     1999          font-size: 10px; font-size: 1rem; 
     2000          line-height: 68px; 
     2001          overflow: hidden; 
     2002          } 
     2003     } 
    19842004@media screen and (max-width: 492px) { 
    1985      #header {height: 36px; height: 3.6rem;} 
    1986      #wrapper {font-size: 16px; font-size: 1.6rem;} 
    1987      .page-title, #info-boxes, .media-item {display: inline-block;} 
    1988      div.media-list .media-item {width: 90%; float: none} 
    1989      #info-box1 select {width: 120px; width: 12rem; margin-right: .6rem;} 
    1990      #info-box1 p.nomobile, label.nomobile {display: none;} 
    1991 } 
     2005     #header { height: 36px; height: 3.6rem; } 
     2006     #wrapper { font-size: 16px; font-size: 1.6rem; } 
     2007     .page-title, #info-boxes { display: inline-block; } 
     2008     #info-box1 select { 
     2009          width: 120px; width: 12rem;  
     2010          margin-right: .6rem; 
     2011          } 
     2012     #info-box1 p.nomobile, label.nomobile { display: none; } 
     2013     } 
  • admin/style/jsToolBar/jsToolBar.css

    r1697 r1741  
    22     border-width : 0 1px 1px 1px; 
    33     border-style : solid; 
    4      border-color : #ccc; 
    5      background : #f9f9f9; 
     4     border-color : #ddd; 
     5     background : #f7f7f7; 
    66} 
    77.jstEditor textarea, .jstEditor iframe { 
     
    1010     box-sizing: border-box;   
    1111     margin: 0; 
    12      border: 2px solid #f9f9f9; 
     12     border: 1px solid #fbfbfb; 
    1313     width: 100%; 
    1414     padding: .5em 0 0 0; 
     
    2424} 
    2525.jstEditor textarea:focus, .jstEditor iframe:focus { 
    26      border: 2px solid #bee74b; 
     26     border-color: #bee74b; 
    2727} 
    2828.jstElements { 
    2929     height: 28px; 
    3030     padding: 0 1rem;  
    31      border: 1px solid #ccc; 
     31     border: 1px solid #dfdfdf; 
    3232     overflow: hidden;  
    33      background: #e1e1e1;  
    34      background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1);  
    35      background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1));  
     33     background: #f5f5f5;  
    3634     -moz-border-radius: 4px 4px 0 0;  
    3735     -webkit-border-radius: 4px 4px 0 0;  
    3836     border-radius: 4px 4px 0 0;  
    39      -webkit-box-shadow: 0 1px 0 #FFF inset;  
    40      -moz-box-shadow: 0 1px 0 #FFF inset;  
    41      box-shadow: 0 1px 0 #FFF inset; 
    4237} 
    4338 
     
    4843     width: 12em; 
    4944     margin-right: .6rem; 
    50      border: 1px solid #ccc;  
     45     border: 1px solid #ddd;  
    5146} 
    5247.jstElements button { 
    5348     width : 30px; 
    5449     height: 28px; 
    55      border-style: groove; 
     50     border-style: solid; 
    5651     border-width:  0 1px 0 0; 
    57      border-color: #666; 
    58      background-color : transparent; 
     52     border-color: #e7e7e7; 
     53     background-color : #f7f7f7; 
    5954     background-position : 50% 50%; 
    6055     background-repeat: no-repeat; 
    6156} 
    6257.jstElements button:hover { 
    63      border-color : #ccc; 
     58     border-color : #ddd; 
    6459     background-color: #fff; 
    6560} 
     
    7065     display : inline-block; 
    7166     vertical-align: top; 
    72      background: #dfdfdf; 
     67     background: #e5e5e5; 
    7368} 
    7469span.jstSpacer { 
     
    7671     height: 28px; 
    7772     margin-right: 0; 
    78      border-style: groove; 
    79      border-width:  0 1px 0 0; 
    80      border-color: #666; 
    8173} 
    8274 
     
    9688.jstSwitcher li.jstSwitcherCurrent { 
    9789     color: #fff; 
    98      background: #575859; 
     90     background: #677374; 
    9991     border-radius: 0 0 2px 2px; 
    10092} 
  • admin/user.php

    r1621 r1719  
    3232$user_options = $core->userDefaults(); 
    3333 
    34 foreach ($core->getFormaters() as $v) { 
    35      $formaters_combo[$v] = $v; 
    36 } 
    37  
    38 foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    39      $status_combo[$v] = $k; 
    40 } 
     34# Formaters combo 
     35$formaters_combo = dcAdminCombos::getFormatersCombo(); 
     36 
     37$status_combo = dcAdminCombos::getPostStatusesCombo(); 
    4138 
    4239# Language codes 
    43 $langs = l10n::getISOcodes(1,1); 
    44 foreach ($langs as $k => $v) { 
    45      $lang_avail = $v == 'en' || is_dir(DC_L10N_ROOT.'/'.$v); 
    46      $lang_combo[] = new formSelectOption($k,$v,$lang_avail ? 'avail10n' : ''); 
    47 } 
     40$lang_combo = dcAdminCombos::getAdminLangsCombo(); 
    4841 
    4942# Get user if we have an ID 
  • debian/control

    r0 r1743  
    88Package: dotclear 
    99Architecture: all 
    10 Depends: ${misc:Depends}, apache2 | httpd | apache, libclearbricks, php5-pgsql | php5-sqlite | php5-mysql, php5-gd 
     10Depends: ${misc:Depends}, apache2 | httpd | apache, libclearbricks, php5-pgsql | php5-sqlite | php5-mysql | php5-mysqli, php5-gd 
    1111Suggests: php5-tidy 
    1212Description: DotClear 2 
  • inc/admin/lib.dc.page.php

    r1699 r1741  
    150150 
    151151          echo 
    152           '<div id="wrapper">'."\n". 
     152          '<div id="wrapper" class="clearfix">'."\n". 
    153153          '<div id="main">'."\n". 
    154           '<div id="content">'."\n"; 
     154          '<div id="content" class="clearfix">'."\n"; 
    155155 
    156156          # Safe mode 
     
    330330     { 
    331331          self::message($msg,$timestamp,$div,$echo,"success"); 
     332     } 
     333 
     334     public static function warning($msg,$timestamp=true,$div=false,$echo=true) 
     335     { 
     336          self::message($msg,$timestamp,$div,$echo,"warning-msg"); 
    332337     } 
    333338 
     
    613618          "//<![CDATA[\n". 
    614619          "\$(function() {\n". 
    615                "    \$.pageTabs(".$default.");\n". 
     620               "    pagetabs = \$.pageTabs(".$default.");\n". 
    616621               "});\n". 
    617622"\n//]]>\n". 
    618 "</script>\n"; 
     623"</script>\n". 
     624          "<!--[if lt IE 8]>\n". 
     625          self::jsLoad('js/ie7/ie7-hashchange.js'). 
     626          '<script type="text/javascript">'."\n". 
     627          "//<![CDATA[\n". 
     628          "\$(function() {". 
     629               "\$(window).hashchange( function(){". 
     630                    "pagetabs.showDiv(document.location.hash.split('#').join(''));". 
     631               "});". 
     632          "});". 
     633          "\n//]]>\n". 
     634          "</script>\n". 
     635          "<![endif]-->\n"; 
    619636} 
    620637 
  • inc/config.php.in

    r1535 r1743  
    1212if (!defined('DC_RC_PATH')) { return; } 
    1313 
    14 // Database driver (mysql, pgsql, sqlite) 
     14// Database driver (mysql, mysqli, pgsql, sqlite) 
    1515define('DC_DBDRIVER',''); 
    1616 
  • inc/core/class.dc.blog.php

    r1689 r1743  
    658658          if (!$rs->isEmpty()) 
    659659          { 
    660                if ($this->con->driver() == 'mysql') { 
     660               if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') { 
    661661                    $clause = "REGEXP '^".$this->con->escape($url)."[0-9]+$'"; 
    662662               } elseif ($this->con->driver() == 'pgsql') { 
     
    18281828          if (!$rs->isEmpty()) 
    18291829          { 
    1830                if ($this->con->driver() == 'mysql') { 
     1830               if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') { 
    18311831                    $clause = "REGEXP '^".$this->con->escape($url)."[0-9]+$'"; 
    18321832               } elseif ($this->con->driver() == 'pgsql') { 
     
    21872187           
    21882188          # mySQL uses "JOIN" synthax 
    2189           if ($this->con->driver() == 'mysql') { 
     2189          if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') { 
    21902190               $strReq .=  
    21912191                    'JOIN '.$this->prefix.'post tp ON tc.post_id = tp.post_id '; 
     
    21962196           
    21972197          # pgSQL uses "FROM" synthax 
    2198           if ($this->con->driver() != 'mysql') { 
     2198          if ($this->con->driver() != 'mysql' || $this->con->driver() == 'mysqli') { 
    21992199               $strReq .=  
    22002200                    'FROM '.$this->prefix.'post tp '; 
     
    22062206           
    22072207          # add pgSQL "WHERE" clause 
    2208           if ($this->con->driver() != 'mysql') { 
     2208          if ($this->con->driver() != 'mysql' || $this->con->driver() == 'mysqli') { 
    22092209               $strReq .=  
    22102210                    'AND tc.post_id = tp.post_id '; 
     
    22652265           
    22662266          # mySQL uses "INNER JOIN" synthax 
    2267           if ($this->con->driver() == 'mysql') { 
     2267          if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') { 
    22682268               $strReq =  
    22692269                    'DELETE FROM tc '. 
     
    23022302           
    23032303          # mySQL uses "INNER JOIN" synthax 
    2304           if ($this->con->driver() == 'mysql') { 
     2304          if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') { 
    23052305               $strReq =  
    23062306                    'DELETE FROM tc '. 
  • inc/core/class.dc.core.php

    r1698 r1743  
    6464          if ($this->con instanceof mysqlConnection) { 
    6565               mysqlConnection::$weak_locks = true; 
     66          } elseif ($this->con instanceof mysqliConnection) { 
     67               mysqliConnection::$weak_locks = true; 
    6668          } 
    6769           
  • inc/core/class.dc.media.php

    r1468 r1718  
    7474           
    7575          if (!is_dir($root)) { 
    76                throw new Exception(sprintf(__('Directory %s does not exist.'),$root)); 
     76               # Check public directory 
     77               if ( $core->auth->isSuperAdmin() ) { 
     78                    throw new Exception(__("There is no writable directory /public/ at the location set in about:config \"public_path\". You must create this directory with sufficient rights (or change this setting).")); 
     79               } else { 
     80                    throw new Exception(__("There is no writable root directory for the media manager. You should contact your administrator.")); 
     81               } 
    7782          } 
    7883           
     
    299304               $f->media_thumb = array(); 
    300305               $p = path::info($f->relname); 
     306 
    301307               $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     308 
    302309               $thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root.'/'.$p['dirname'],$p['base'],'%s'); 
    303310               $thumb_url = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root_url.$p['dirname'],$p['base'],'%s'); 
     
    306313               $thumb_url = preg_replace('#\./#','/',$thumb_url); 
    307314               $thumb_url = preg_replace('#(?<!:)/+#','/',$thumb_url); 
     315 
     316               if ($alpha) { 
     317                    $thumb_alt = sprintf($this->thumb_tp,$this->root.'/'.$p['dirname'],$p['base'],'%s'); 
     318                    $thumb_url_alt = sprintf($this->thumb_tp,$this->root_url.$p['dirname'],$p['base'],'%s'); 
     319                    # Cleaner URLs 
     320                    $thumb_url_alt = preg_replace('#\./#','/',$thumb_url_alt); 
     321                    $thumb_url_alt = preg_replace('#(?<!:)/+#','/',$thumb_url_alt); 
     322               } 
    308323                
    309324               foreach ($this->thumb_sizes as $suffix => $s) { 
    310325                    if (file_exists(sprintf($thumb,$suffix))) { 
    311326                         $f->media_thumb[$suffix] = sprintf($thumb_url,$suffix); 
     327                    } elseif ($alpha && file_exists(sprintf($thumb_alt,$suffix))) { 
     328                         $f->media_thumb[$suffix] = sprintf($thumb_url_alt,$suffix); 
    312329                    } 
    313330               } 
  • inc/prepend.php

    r1694 r1719  
    5959$__autoload['adminCommentList']         = dirname(__FILE__).'/admin/lib.pager.php'; 
    6060$__autoload['adminUserList']            = dirname(__FILE__).'/admin/lib.pager.php'; 
     61$__autoload['dcAdminCombos']            = dirname(__FILE__).'/admin/lib.admincombos.php'; 
    6162 
    6263$__autoload['dcTemplate']               = dirname(__FILE__).'/public/class.dc.template.php'; 
  • locales/fr/main.po

    r1697 r1745  
    33123312msgid "%1$s: %2$s" 
    33133313msgstr "%1$s : %2$s" 
     3314 
     3315msgid "Dotclear news" 
     3316msgstr "Actualité de Dotclear" 
     3317 
     3318msgid "The cache directory does not exist or is not writable. You must create this directory with sufficient rights and affect this location to \"DC_TPL_CACHE\" in inc/config.php file." 
     3319msgstr "Le répertoire de cache n'existe pas ou n'est pas accessible en écriture. Vous devez créer ce répertoire avec les droits suffisants et affecter celui-ci à \"DC_TPL_CACHE\" dans le fichier inc/config.php." 
     3320 
     3321msgid "The cache directory does not exist or is not writable. You should contact your administrator." 
     3322msgstr "Le répertoire de cache n'existe pas ou n'est pas accessible en écriture. Vous devriez contacter votre administrateur." 
     3323 
     3324msgid "There is no writable directory /public/ at the location set in about:config \"public_path\". You must create this directory with sufficient rights (or change this setting)." 
     3325msgstr "Il n'existe pas de répertoire /public/ à l'endroit spécifié pour le réglage \"public_path\" dans about:config. Vous devez créer ce répertoire avec les droits suffisants (ou changer ce réglage)." 
     3326 
     3327msgid "There is no writable root directory for the media manager. You should contact your administrator." 
     3328msgstr "Il n'existe pas de répertoire principal accessible en écriture pour la médiathèque. Vous devriez contacter votre administrateur." 
     3329 
     3330msgid "You do not have sufficient permissions to write to this folder." 
     3331msgstr "Vous n'avez pas les droits suffisants pour écrire dans ce répertoire." 
     3332 
     3333msgid "MySQL (deprecated)" 
     3334msgstr "MySQL (obsolète)" 
     3335 
     3336msgid "The URL of blog or the URL scan method might not be well set (<code>%s</code> return a <strong>%s</strong> status)." 
     3337msgstr "L'URL du blog ou la méthode de lecture de l'URL ne semblent pas être bien réglées (<code>%s</code> retourne un statut <strong>%s</strong>)" 
     3338 
     3339msgid "The URL of blog or the URL scan method might not be well set (<code>%s</code> does not return an ATOM feed)." 
     3340msgstr "L'URL du blog ou la méthode de lecture de l'URL ne semblent pas être bien réglées (<code>%s</code> ne retourne pas un flux ATOM)" 
  • plugins/importExport/inc/class.dc.import.wp.php

    r1622 r1719  
    8080               $this->post_limit = $this->vars['post_limit']; 
    8181          } 
    82            
    83           foreach ($this->core->getFormaters() as $v) { 
    84                $this->formaters[$v] = $v; 
    85           } 
     82 
     83          $this->formaters = dcAdminCombos::getFormatersCombo(); 
    8684     } 
    8785      
  • plugins/importExport/inc/flat/class.flat.import.php

    r1093 r1743  
    160160                         if (in_array($last_line_name,$constrained)) { 
    161161                              # UNDEFER 
    162                               if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1'); 
     162                              if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') $this->con->execute('SET foreign_key_checks = 1'); 
    163163                              if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED'); 
    164164                         } 
     
    166166                         if (in_array($line->__name,$constrained)) { 
    167167                              # DEFER 
    168                               if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 0'); 
     168                              if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') $this->con->execute('SET foreign_key_checks = 0'); 
    169169                              if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL IMMEDIATE'); 
    170170                         } 
     
    205205               } 
    206206                
    207                if ($this->con->driver() == 'mysql') $this->con->execute('SET foreign_key_checks = 1'); 
     207               if ($this->con->driver() == 'mysql' || $this->con->driver() == 'mysqli') $this->con->execute('SET foreign_key_checks = 1'); 
    208208               if ($this->con->driver() == 'pgsql') $this->con->execute('SET CONSTRAINTS ALL DEFERRED'); 
    209209          } 
  • plugins/pages/page.php

    r1713 r1741  
    5353 
    5454# Status combo 
    55 foreach ($core->blog->getAllPostStatus() as $k => $v) { 
    56      $status_combo[$v] = (string) $k; 
    57 } 
     55$status_combo = dcAdminCombos::getPostStatusesCombo(); 
     56 
    5857$img_status_pattern = '<img class="img_select_option" alt="%1$s" title="%1$s" src="images/%2$s" />'; 
    5958 
    6059# Formaters combo 
    61 foreach ($core->getFormaters() as $v) { 
    62      $formaters_combo[$v] = $v; 
    63 } 
     60$formaters_combo = dcAdminCombos::getFormatersCombo(); 
    6461 
    6562# Languages combo 
    6663$rs = $core->blog->getLangs(array('order'=>'asc')); 
    67 $all_langs = l10n::getISOcodes(0,1); 
    68 $lang_combo = array('' => '', __('Most used') => array(), __('Available') => l10n::getISOcodes(1,1)); 
    69 while ($rs->fetch()) { 
    70      if (isset($all_langs[$rs->post_lang])) { 
    71           $lang_combo[__('Most used')][$all_langs[$rs->post_lang]] = $rs->post_lang; 
    72           unset($lang_combo[__('Available')][$all_langs[$rs->post_lang]]); 
    73      } else { 
    74           $lang_combo[__('Most used')][$rs->post_lang] = $rs->post_lang; 
    75      } 
    76 } 
    77 unset($all_langs); 
    78 unset($rs); 
     64$lang_combo = dcAdminCombos::getLangsCombo($rs,true); 
     65 
    7966 
    8067# Validation flag 
     
    480467           
    481468          "post_excerpt" => 
    482                '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'<span class="form-note">'. 
    483                __('Add an introduction to the post.').'</span></label> '. 
     469               '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').' <span class="form-note">'. 
     470               __('Introduction to the post.').'</span></label> '. 
    484471               form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)). 
    485472               '</p>', 
     
    492479           
    493480          "post_notes" => 
    494                '<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').'<span class="form-note">'. 
    495                __('Add unpublished notes.').'</span></label>'. 
     481               '<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').' <span class="form-note">'. 
     482               __('Unpublished notes.').'</span></label>'. 
    496483               form::textarea('post_notes',50,5,html::escapeHTML($post_notes)). 
    497484               '</p>' 
     
    545532      
    546533     foreach ($sidebar_items as $id => $c) { 
    547           echo '<div id="'.$id.'" class="box">'. 
     534          echo '<div id="'.$id.'" class="sb-box">'. 
    548535               '<h4>'.$c['title'].'</h4>'; 
    549536          foreach ($c['items'] as $e_name=>$e_content) { 
     
    603590      
    604591     echo 
    605      '<p class="top-add"><a class="button add onblog_link" href="#comment-form">'.__('Add a comment').'</a></p>'; 
     592     '<p class="top-add"><a class="button add" href="#comment-form">'.__('Add a comment').'</a></p>'; 
    606593 
    607594     if ($has_action) { 
  • plugins/simpleMenu/index.php

    r1636 r1722  
    2323 
    2424# Liste des catégories 
    25 $categories_combo = array(); 
    2625$categories_label = array(); 
    27 try { 
    28      $rs = $core->blog->getCategories(array('post_type'=>'post')); 
    29      while ($rs->fetch()) { 
    30           $categories_combo[] = new formSelectOption( 
    31                str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title), 
    32                $rs->cat_url 
    33           ); 
    34           $categories_label[$rs->cat_url] = html::escapeHTML($rs->cat_title); 
    35      } 
    36 } catch (Exception $e) { } 
    37  
     26$rs = $core->blog->getCategories(array('post_type'=>'post')); 
     27$categories_combo = dcAdminCombos::getCategoriesCombo($rs); 
     28unset($categories_combo[__('(No cat)')]); 
     29$rs->moveStart(); 
     30while ($rs->fetch()) { 
     31     $categories_label[$rs->cat_id] = html::escapeHTML($rs->cat_title); 
     32} 
    3833# Liste des langues utilisées 
    39 $langs_combo = array(); 
    40 try { 
    41      $rs = $core->blog->getLangs(array('order'=>'asc')); 
    42      if ($rs->count() > 1) 
    43      { 
    44           $all_langs = l10n::getISOcodes(0,1); 
    45           while ($rs->fetch()) { 
    46                $lang_name = isset($all_langs[$rs->post_lang]) ? $all_langs[$rs->post_lang] : $rs->post_lang; 
    47                $langs_combo[$lang_name] = $rs->post_lang; 
    48           } 
    49           unset($all_langs); 
    50      } 
    51      unset($rs); 
    52 } catch (Exception $e) { } 
     34$langs_combo = dcAdminCombos::getLangscombo( 
     35     $core->blog->getLangs(array('order'=>'asc')) 
     36); 
    5337 
    5438# Liste des mois d'archive 
    55 $months_combo = array(); 
    56 try { 
    57      $rs = $core->blog->getDates(array('type'=>'month')); 
    58      $months_combo[__('All months')] = '-'; 
    59      $first_year = $last_year = 0; 
    60      while ($rs->fetch()) { 
    61           $months_combo[dt::str('%B %Y',$rs->ts())] = $rs->year().$rs->month(); 
    62           if (($first_year == 0) || ($rs->year() < $first_year)) $first_year = $rs->year(); 
    63           if (($last_year == 0) || ($rs->year() > $last_year)) $last_year = $rs->year(); 
    64      } 
    65      unset($rs); 
    66 } catch (Exception $e) { } 
     39$rs = $core->blog->getDates(array('type'=>'month')); 
     40$months_combo = array_merge( 
     41     array(__('All months') => '-'), 
     42     dcAdmincombos::getDatesCombo($rs) 
     43); 
     44 
     45$first_year = $last_year = 0; 
     46while ($rs->fetch()) { 
     47     if (($first_year == 0) || ($rs->year() < $first_year)) $first_year = $rs->year(); 
     48     if (($last_year == 0) || ($rs->year() > $last_year)) $last_year = $rs->year(); 
     49} 
     50unset($rs); 
    6751 
    6852# Liste des pages -- Doit être pris en charge plus tard par le plugin ? 
     
    395379     dcPage::success(__('Menu items have been successfully updated.')); 
    396380} 
    397  
    398381if ($step) 
    399382{ 
  • tests/functional/index.html

    r1703 r1737  
    77    <script type="text/javascript" src="lib/jasmine.js"></script> 
    88    <script type="text/javascript" src="lib/jasmine-html.js"></script> 
    9     <script type="text/javascript" src="lib/jquery.js"></script> 
     9    <!-- use same jquery --> 
     10    <script type="text/javascript" src="../../admin/js/jquery/jquery.js"></script> 
    1011    <script type="text/javascript" src="lib/jasmine-jquery.js"></script> 
    1112    <script type="text/javascript" src="lib/jasmine-jquery-bootstrap.js"></script> 
     
    1314    <script type="text/javascript" src="../../admin/js/_users_actions.js"></script> 
    1415    <script type="text/javascript" src="../../admin/js/common.js"></script> 
     16 
    1517    <script type="text/javascript" src="js/fix_include.js"></script> 
    1618 
    17     <script type="text/javascript" src="spec/users_actions.js"></script> 
     19    <!-- jsUpload --> 
     20    <script type="text/javascript" src="../../admin/js/jsUpload/vendor/jquery.ui.widget.js"></script> 
     21    <script type="text/javascript" src="../../admin/js/jsUpload/tmpl.js"></script> 
     22    <script type="text/javascript" src="../../admin/js/jsUpload/template-upload.js"></script> 
     23    <script type="text/javascript" src="../../admin/js/jsUpload/template-download.js"></script> 
     24    <script type="text/javascript" src="../../admin/js/jsUpload/load-image.js"></script> 
     25    <script type="text/javascript" src="../../admin/js/jsUpload/jquery.iframe-transport.js"></script> 
     26    <script type="text/javascript" src="../../admin/js/jsUpload/jquery.fileupload.js"></script> 
     27    <script type="text/javascript" src="../../admin/js/jsUpload/jquery.fileupload-process.js"></script> 
     28    <script type="text/javascript" src="../../admin/js/jsUpload/jquery.fileupload-resize.js"></script>  
     29    <script type="text/javascript" src="../../admin/js/jsUpload/jquery.fileupload-ui.js"></script> 
     30    <script type="text/javascript" src="../../admin/js/_media.js"></script>     
     31 
     32    <!-- <script type="text/javascript" src="spec/users_actions.js"></script> --> 
    1833    <script type="text/javascript" src="spec/toggle_with_legend.js"></script> 
    19  
    2034    <script type="text/javascript" src="spec/common.js"></script> 
     35    <script type="text/javascript" src="spec/media_manager.js"></script> 
     36     
     37    <!-- page tabs --> 
     38    <script type="text/javascript" src="spec/page_tabs.js"></script> 
     39     
    2140  </head> 
    2241  <body> 
  • tests/functional/js/fix_include.js

    r1703 r1724  
    1010dotclear.msg.confirm_delete_posts = 'confirm %s delete'; 
    1111dotclear.msg.confirm_delete_comments = 'confirm %s delete'; 
     12 
     13dotclear.jsUpload = {msg:{}}; 
     14dotclear.jsUpload.msg.cancel = 'cancel'; 
     15dotclear.jsUpload.msg.send = 'send'; 
     16dotclear.jsUpload.msg.error = 'error'; 
     17dotclear.jsUpload.msg.file_successfully_uploaded = 'file succesfully uploaded'; 
     18 
     19dotclear.msg.enhanced_uploader_activate = 'Temporarily activate enhanced uploader'; 
     20dotclear.msg.enhanced_uploader_disable = 'Temporarily disable enhanced uploader'; 
     21 
  • tests/functional/lib/jasmine-jquery-bootstrap.js

    r1602 r1724  
    11(function() { 
    2     jasmine.getFixtures().fixturesPath = 'fixtures'; 
     2     jasmine.getFixtures().fixturesPath = 'fixtures'; 
     3     jasmine.getStyleFixtures().fixturesPath = '../../admin/style'; 
    34 
    4     var jasmineEnv = jasmine.getEnv(); 
    5     jasmineEnv.updateInterval = 1000; 
     5     var jasmineEnv = jasmine.getEnv(); 
     6     jasmineEnv.updateInterval = 1000; 
    67 
    7     var htmlReporter = new jasmine.HtmlReporter(); 
     8     var htmlReporter = new jasmine.HtmlReporter(); 
    89 
    9     jasmineEnv.addReporter(htmlReporter); 
     10     jasmineEnv.addReporter(htmlReporter); 
    1011 
    11     jasmineEnv.specFilter = function(spec) { 
    12      return htmlReporter.specFilter(spec); 
    13     }; 
     12     jasmineEnv.specFilter = function(spec) { 
     13          return htmlReporter.specFilter(spec); 
     14     }; 
    1415 
    15     var currentWindowOnload = window.onload; 
     16     var currentWindowOnload = window.onload; 
    1617 
    17     window.onload = function() { 
    18      if (currentWindowOnload) { 
    19          currentWindowOnload(); 
     18     window.onload = function() { 
     19          if (currentWindowOnload) { 
     20               currentWindowOnload(); 
     21          } 
     22          execJasmine(); 
     23     }; 
     24 
     25     function execJasmine() { 
     26          jasmineEnv.execute(); 
    2027     } 
    21      execJasmine(); 
    22     }; 
    23  
    24     function execJasmine() { 
    25      jasmineEnv.execute(); 
    26     } 
    2728 
    2829})(); 
  • tests/functional/spec/common.js

    r1703 r1724  
    11describe("Others common methods (admin/js/common.js)", function() { 
    2     describe("postsActionsHelper", function() { 
    3      it("A confirm popup must appear if action is \"delete\" and at least on checkbox is checked", function() { 
    4          loadFixtures('posts_list.html'); 
    5          dotclear.postsActionsHelper(); 
    6           
    7          spyOn(window, 'confirm').andReturn(false); 
    8          var submitCallback = jasmine.createSpy().andReturn(false); 
    9          $('#form-entries').submit(submitCallback); 
     2     describe("postsActionsHelper", function() { 
     3          it("A confirm popup must appear if action is \"delete\" and at least on checkbox is checked", function() { 
     4               loadFixtures('posts_list.html'); 
     5               dotclear.postsActionsHelper(); 
     6                
     7               spyOn(window, 'confirm').andReturn(false); 
     8               var submitCallback = jasmine.createSpy().andReturn(false); 
     9               $('#form-entries').submit(submitCallback); 
    1010 
    11          $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
    12          $('input[type="checkbox"][name="entries[]"][value="2"]').attr('checked', 'checked'); 
     11               $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
     12               $('input[type="checkbox"][name="entries[]"][value="2"]').attr('checked', 'checked'); 
    1313 
    14          $('#form-entries').trigger('submit'); 
    15          expect(window.confirm).toHaveBeenCalled(); 
     14               $('#form-entries').trigger('submit'); 
     15               expect(window.confirm).toHaveBeenCalled(); 
     16          }); 
     17          it("Confirm popup doesn't appear if action is \"delete\" but no checkbox is checked", function() { 
     18               loadFixtures('posts_list.html'); 
     19               dotclear.postsActionsHelper(); 
     20                
     21               spyOn(window, 'confirm').andReturn(false); 
     22               var submitCallback = jasmine.createSpy().andReturn(false); 
     23               $('#form-entries').submit(submitCallback); 
     24 
     25               $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
     26               $('#form-entries').trigger('submit'); 
     27               expect(window.confirm).not.toHaveBeenCalled(); 
     28          }); 
     29          it("Others actions don't show confirm popup", function() { 
     30               loadFixtures('posts_list.html'); 
     31               dotclear.postsActionsHelper(); 
     32                
     33               spyOn(window, 'confirm').andReturn(false); 
     34               var submitCallback = jasmine.createSpy().andReturn(false); 
     35               $('#form-entries').submit(submitCallback); 
     36 
     37               $('select[name="action"] option[value="publish"]').attr('selected', 'selected'); 
     38               $('#form-entries').trigger('submit'); 
     39               expect(window.confirm).not.toHaveBeenCalled(); 
     40          }); 
    1641     }); 
    17      it("Confirm popup doesn't appear if action is \"delete\" but no checkbox is checked", function() { 
    18          loadFixtures('posts_list.html'); 
    19          dotclear.postsActionsHelper(); 
    20           
    21          spyOn(window, 'confirm').andReturn(false); 
    22          var submitCallback = jasmine.createSpy().andReturn(false); 
    23          $('#form-entries').submit(submitCallback); 
    2442 
    25          $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
    26          $('#form-entries').trigger('submit'); 
    27          expect(window.confirm).not.toHaveBeenCalled(); 
     43     describe("commentsActionsHelper", function() { 
     44          it("A confirm popup must appear if action is \"delete\" and at least on checkbox is checked", function() { 
     45               loadFixtures('comments_list.html'); 
     46               dotclear.commentsActionsHelper(); 
     47                
     48               spyOn(window, 'confirm').andReturn(false); 
     49               var submitCallback = jasmine.createSpy().andReturn(false); 
     50               $('#form-comments').submit(submitCallback); 
     51 
     52               $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
     53               $('input[type="checkbox"][name="comments[]"][value="2"]').attr('checked', 'checked'); 
     54 
     55               $('#form-comments').trigger('submit'); 
     56               expect(window.confirm).toHaveBeenCalled(); 
     57          }); 
     58          it("Confirm popup doesn't appear if action is \"delete\" but no checkbox is checked", function() { 
     59               loadFixtures('comments_list.html'); 
     60               dotclear.commentsActionsHelper(); 
     61                
     62               spyOn(window, 'confirm').andReturn(false); 
     63               var submitCallback = jasmine.createSpy().andReturn(false); 
     64               $('#form-comments').submit(submitCallback); 
     65 
     66               $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
     67               $('#form-comments').trigger('submit'); 
     68               expect(window.confirm).not.toHaveBeenCalled(); 
     69          }); 
     70          it("Others actions don't show confirm popup", function() { 
     71               loadFixtures('comments_list.html'); 
     72               dotclear.commentsActionsHelper(); 
     73                
     74               spyOn(window, 'confirm').andReturn(false); 
     75               var submitCallback = jasmine.createSpy().andReturn(false); 
     76               $('#form-comments').submit(submitCallback); 
     77 
     78               $('select[name="action"] option[value="publish"]').attr('selected', 'selected'); 
     79               $('#form-comments').trigger('submit'); 
     80               expect(window.confirm).not.toHaveBeenCalled(); 
     81          }); 
    2882     }); 
    29      it("Others actions don't show confirm popup", function() { 
    30          loadFixtures('posts_list.html'); 
    31          dotclear.postsActionsHelper(); 
    32           
    33          spyOn(window, 'confirm').andReturn(false); 
    34          var submitCallback = jasmine.createSpy().andReturn(false); 
    35          $('#form-entries').submit(submitCallback); 
    36  
    37          $('select[name="action"] option[value="publish"]').attr('selected', 'selected'); 
    38          $('#form-entries').trigger('submit'); 
    39          expect(window.confirm).not.toHaveBeenCalled(); 
    40      }); 
    41     }); 
    42  
    43     describe("commentsActionsHelper", function() { 
    44      it("A confirm popup must appear if action is \"delete\" and at least on checkbox is checked", function() { 
    45          loadFixtures('comments_list.html'); 
    46          dotclear.commentsActionsHelper(); 
    47           
    48          spyOn(window, 'confirm').andReturn(false); 
    49          var submitCallback = jasmine.createSpy().andReturn(false); 
    50          $('#form-comments').submit(submitCallback); 
    51  
    52          $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
    53          $('input[type="checkbox"][name="comments[]"][value="2"]').attr('checked', 'checked'); 
    54  
    55          $('#form-comments').trigger('submit'); 
    56          expect(window.confirm).toHaveBeenCalled(); 
    57      }); 
    58      it("Confirm popup doesn't appear if action is \"delete\" but no checkbox is checked", function() { 
    59          loadFixtures('comments_list.html'); 
    60          dotclear.commentsActionsHelper(); 
    61           
    62          spyOn(window, 'confirm').andReturn(false); 
    63          var submitCallback = jasmine.createSpy().andReturn(false); 
    64          $('#form-comments').submit(submitCallback); 
    65  
    66          $('select[name="action"] option[value="delete"]').attr('selected', 'selected'); 
    67          $('#form-comments').trigger('submit'); 
    68          expect(window.confirm).not.toHaveBeenCalled(); 
    69      }); 
    70      it("Others actions don't show confirm popup", function() { 
    71          loadFixtures('comments_list.html'); 
    72          dotclear.commentsActionsHelper(); 
    73           
    74          spyOn(window, 'confirm').andReturn(false); 
    75          var submitCallback = jasmine.createSpy().andReturn(false); 
    76          $('#form-comments').submit(submitCallback); 
    77  
    78          $('select[name="action"] option[value="publish"]').attr('selected', 'selected'); 
    79          $('#form-comments').trigger('submit'); 
    80          expect(window.confirm).not.toHaveBeenCalled(); 
    81      }); 
    82     }); 
    8383}); 
  • tests/functional/spec/toggle_with_legend.js

    r1703 r1724  
    11describe("toggleWithLegend method (admin/js/common.js)", function() { 
    2     it("Click arrow must make target visible", function() { 
    3      loadFixtures('menu.html'); 
    4      $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
     2     it("Click arrow must make target visible", function() { 
     3          loadFixtures('menu.html'); 
     4          $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
    55 
    6      var $arrow = $('#post_status').parent().find('img'); 
    7      $arrow.click(); 
    8      expect($('#post_status')).toBeVisible(); 
    9     }); 
    10     it("Click arrow twice,must make target visible and after second click hidden", function() { 
    11      loadFixtures('menu.html'); 
    12      $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
     6          var $arrow = $('#post_status').parent().find('img'); 
     7          $arrow.click(); 
     8          expect($('#post_status')).toBeVisible(); 
     9     }); 
     10     it("Click arrow twice,must make target visible and after second click hidden", function() { 
     11          loadFixtures('menu.html'); 
     12          $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
    1313 
    14      var $arrow = $('#post_status').parent().find('img'); 
    15      $arrow.click(); 
    16      expect($('#post_status')).toBeVisible(); 
     14          var $arrow = $('#post_status').parent().find('img'); 
     15          $arrow.click(); 
     16          expect($('#post_status')).toBeVisible(); 
    1717 
    18      $arrow.click(); 
    19      expect($('#post_status')).toBeHidden(); 
    20     }); 
    21     it("Chick target must not hide target", function() { 
    22      loadFixtures('menu.html'); 
    23      $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
     18          $arrow.click(); 
     19          expect($('#post_status')).toBeHidden(); 
     20     }); 
     21     it("Chick target must not hide target", function() { 
     22          loadFixtures('menu.html'); 
     23          $('#post_status').parent().toggleWithLegend($('#post_status'),{  }); 
    2424 
    25      var $arrow = $('#post_status').parent().find('img'); 
    26      $arrow.click(); 
    27      expect($('#post_status')).toBeVisible(); 
     25          var $arrow = $('#post_status').parent().find('img'); 
     26          $arrow.click(); 
     27          expect($('#post_status')).toBeVisible(); 
    2828 
    29      $('#post_status option[value="-2"]').attr('selected', 'selected'); 
    30      expect($('#post_status')).toBeVisible(); 
    31     }); 
    32     it("Chick target must not hide target, when legend_click is true", function() { 
    33      loadFixtures('menu.html'); 
    34      var $label = $('#post_status').parent().children('label'); 
    35      $label.toggleWithLegend($('#post_status'),{'legend_click':true, a_container:false}); 
     29          $('#post_status option[value="-2"]').attr('selected', 'selected'); 
     30          expect($('#post_status')).toBeVisible(); 
     31     }); 
     32     it("Chick target must not hide target, when legend_click is true", function() { 
     33          loadFixtures('menu.html'); 
     34          var $label = $('#post_status').parent().children('label'); 
     35          $label.toggleWithLegend($('#post_status'),{'legend_click':true, a_container:false}); 
    3636 
    37      $label.click(); 
    38      expect($('#post_status')).toBeVisible(); 
     37          $label.click(); 
     38          expect($('#post_status')).toBeVisible(); 
    3939 
    40      var $arrow = $('#post_status').parent().find('img'); 
    41      $arrow.click(); 
    42      expect($('#post_status')).toBeVisible(); 
     40          var $arrow = $('#post_status').parent().find('img'); 
     41          $arrow.click(); 
     42          expect($('#post_status')).toBeVisible(); 
    4343 
    44      $('#post_status').val(-2).trigger('change'); 
    45      expect($('#post_status')).toBeVisible(); 
    46     }); 
     44          $('#post_status').val(-2).trigger('change'); 
     45          expect($('#post_status')).toBeVisible(); 
     46     }); 
    4747}); 
  • tests/functional/spec/users_actions.js

    r1703 r1724  
    11describe("updatePermissionsForm method (admin/js/_users_actions.js)", function() { 
    2     it("Click admin persmission must checked all associated permissions", function() { 
    3      loadFixtures('normal.html'); 
    4      $('#permissions-form').updatePermissionsForm(); 
    5      var permissions = ['usage','publish','delete','contentadmin','categories']; 
     2     it("Click admin persmission must checked all associated permissions", function() { 
     3          loadFixtures('normal.html'); 
     4          $('#permissions-form').updatePermissionsForm(); 
     5          var permissions = ['usage','publish','delete','contentadmin','categories']; 
    66 
    7      $('input[name="perm[default][admin]"]').click(); 
    8      for (var _i=0,_len=permissions.length;_i<_len;_i++) { 
    9          expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeChecked(); 
    10          expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeDisabled(); 
    11      } 
    12     }); 
     7          $('input[name="perm[default][admin]"]').click(); 
     8          for (var _i=0,_len=permissions.length;_i<_len;_i++) { 
     9               expect($('input[name="perm\\[default\\]\\['+permissions[_i]+'\\]"]')).toBeChecked(); 
     10               expect($('input[name="perm\\[default\\]\\['+permissions[_i]+'\\]"]')).toBeDisabled(); 
     11          } 
     12     }); 
    1313 
    14     it("Click contentadmin persmission must checked all associated permissions", function() { 
    15      loadFixtures('normal.html'); 
    16      $('#permissions-form').updatePermissionsForm(); 
    17      var permissions = ['usage','publish','delete']; 
     14     it("Click contentadmin persmission must checked all associated permissions", function() { 
     15          loadFixtures('normal.html'); 
     16          $('#permissions-form').updatePermissionsForm(); 
     17          var permissions = ['usage','publish','delete']; 
    1818 
    19      $('input[name="perm[default][contentadmin]"]').click(); 
    20      for (var _i=0,_len=permissions.length;_i<_len;_i++) { 
    21          expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeChecked(); 
    22          expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeDisabled(); 
    23      } 
    24     }); 
     19          $('input[name="perm[default][contentadmin]"]').click(); 
     20          for (var _i=0,_len=permissions.length;_i<_len;_i++) { 
     21               expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeChecked(); 
     22               expect($('input[name="perm[default]['+permissions[_i]+']"]')).toBeDisabled(); 
     23          } 
     24     }); 
    2525}); 
Note: See TracChangeset for help on using the changeset viewer.

Sites map