Dotclear

Changeset 1468:3132a0aca046


Ignore:
Timestamp:
08/19/13 09:55:29 (11 years ago)
Author:
franck <carnet.franck.paul@…>
Branch:
default
Parents:
1466:e67efe636ce1 (diff), 1467:917fc08f3a59 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge 2.5 commits into default branch (should be verified)

Files:
36 edited

Legend:

Unmodified
Added
Removed
  • .hgtags

    r1351 r1468  
    12126fce226121140735a51a8f447c80f1dacd2974ea 2.4.4 
    1313514d5121a12586b7ff320924d44028b677a01020 2.4.4 
    14 baf879af43beea9764d920c2facd7226e90c5cf3 2.5.1 
    15 cfad9f2a9f6ec03206ff5db91985208e833a7528 2.5.2 
  • admin/categories.php

    r1399 r1468  
    3131          $mov_cat = $mov_cat ? $mov_cat : null; 
    3232          if ($mov_cat !== null) { 
    33                $c = $core->blog->getCategory((integer) $_POST['del_cat']); 
     33               $c = $core->blog->getCategory((integer) $_POST['mov_cat']); 
    3434               if ($c->isEmpty()) { 
    3535                    throw new Exception(__('This category does not exist.')); 
     
    144144echo '</div>'; 
    145145 
     146$categories_combo = array(); 
     147if (!$rs->isEmpty()) 
     148{ 
     149     while ($rs->fetch()) { 
     150          $catparents_combo[] = $categories_combo[] = new formSelectOption( 
     151               str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($rs->cat_title), 
     152               $rs->cat_id 
     153          ); 
     154     } 
     155} 
     156 
    146157echo '<div class="col">'. 
    147158 
     
    149160'<h3>'.__('Add a new category').'</h3>'. 
    150161'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '. 
    151 form::field('cat_title',30,255).'</p>'. 
     162form::field('cat_title',30,255,'','maximal').'</p>'. 
    152163'<p><label for="new_cat_parent">'.__('Parent:').'</label> '. 
    153 '<select id="new_cat_parent" name="new_cat_parent">'. 
    154 '<option value="0">'.__('Top level').'</option>'; 
    155 while ($rs->fetch()) { 
    156      echo '<option value="'.$rs->cat_id.'">'. 
    157           str_repeat('&nbsp;&nbsp;',$rs->level-1).($rs->level-1 == 0 ? '' : '&bull; '). 
    158           html::escapeHTML($rs->cat_title).'</option>'; 
    159 } 
    160 echo 
    161 '</select></p>'. 
     164form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal'). 
     165'</p>'. 
    162166'<p><input type="submit" value="'.__('Create').'" />'. 
    163167$core->formNonce().'</p>'. 
     168 
    164169'</form>'; 
    165170 
    166171if (!$rs->isEmpty()) 
    167172{ 
    168      $cats = array(); 
    169      $dest = array('&nbsp;' => ''); 
    170      $l = $rs->level; 
    171      $full_name = array($rs->cat_title); 
    172      while ($rs->fetch()) 
    173      { 
    174           if ($rs->level < $l) { 
    175                $full_name = array(); 
    176           } elseif ($rs->level == $l) { 
    177                array_pop($full_name); 
    178           } 
    179           $full_name[] = html::escapeHTML($rs->cat_title); 
    180            
    181           $cats[implode(' / ',$full_name)] = $rs->cat_id; 
    182           $dest[implode(' / ',$full_name)] = $rs->cat_id; 
    183            
    184           $l = $rs->level; 
    185      } 
    186       
    187173     echo 
    188      '<form action="categories.php" method="post" id="delete-category" class="border-top">'. 
     174     '<form action="categories.php" method="post" id="delete-category">'. 
    189175     '<h3>'.__('Remove a category').'</h3>'. 
    190176     '<p><label for="del_cat">'.__('Choose a category to remove:').'</label> '. 
    191      form::combo('del_cat',$cats).'</p> '. 
     177     form::combo('del_cat',$categories_combo,'','maximal').'</p> '. 
    192178     '<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').'</label> '. 
    193      form::combo('mov_cat',$dest).'</p> '. 
     179     form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</p> '. 
    194180     '<p><input type="submit" value="'.__('Delete').'" class="delete" />'. 
    195181     $core->formNonce().'</p>'. 
     182 
    196183     '</form>'; 
    197184      
  • admin/categories.php

    r1421 r1468  
    7373dcPage::open(__('Categories'), 
    7474     dcPage::jsToolMan()."\n". 
    75      dcPage::jsLoad('js/_categories.js') 
     75     dcPage::jsLoad('js/_categories.js'), 
     76     dcPage::breadcrumb( 
     77          array( 
     78               html::escapeHTML($core->blog->name) => '', 
     79               '<span class="page-title">'.__('Categories').'</span>' => '' 
     80          )) 
    7681); 
    7782 
     
    8893     dcPage::message(__('The category has been successfully moved.')); 
    8994} 
    90  
    91 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Categories').'</span></h2>'; 
    9295 
    9396$rs = $core->blog->getCategories(array('post_type'=>'post')); 
     
    155158 
    156159'<form action="category.php" method="post">'. 
    157 '<fieldset><legend>'.__('Add a new category').'</legend>'. 
    158 '<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').' '. 
    159 form::field('cat_title',30,255,'','maximal').'</label></p>'. 
    160 '<p><label for="new_cat_parent">'.__('Parent:').' '. 
     160'<h3>'.__('Add a new category').'</h3>'. 
     161'<p><label class="required" for="cat_title"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label> '. 
     162form::field('cat_title',30,255,'','maximal').'</p>'. 
     163'<p><label for="new_cat_parent">'.__('Parent:').'</label> '. 
    161164form::combo('new_cat_parent',array_merge(array(__('(No cat)') => 0),$categories_combo),'','maximal'). 
    162 '</label></p>'. 
    163 '<p><input type="submit" value="'.__('Create').'" /></p>'. 
    164 $core->formNonce(). 
    165 '</fieldset>'. 
     165'</p>'. 
     166'<p><input type="submit" value="'.__('Create').'" />'. 
     167$core->formNonce().'</p>'. 
     168 
    166169'</form>'; 
    167170 
     
    170173     echo 
    171174     '<form action="categories.php" method="post" id="delete-category">'. 
    172      '<fieldset><legend>'.__('Remove a category').'</legend>'. 
    173      '<p><label for="del_cat">'.__('Choose a category to remove:').' '. 
    174      form::combo('del_cat',$categories_combo,'','maximal').'</label></p> '. 
    175      '<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').' '. 
    176      form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</label></p> '. 
    177      '<p><input type="submit" value="'.__('Delete').'" class="delete" /></p>'. 
    178      $core->formNonce(). 
    179      '</fieldset>'. 
     175     '<h3>'.__('Remove a category').'</h3>'. 
     176     '<p><label for="del_cat">'.__('Choose a category to remove:').'</label> '. 
     177     form::combo('del_cat',$categories_combo,'','maximal').'</p> '. 
     178     '<p><label for="mov_cat">'.__('And choose the category which will receive its entries:').'</label> '. 
     179     form::combo('mov_cat',array_merge(array(__('(No cat)') => ''),$categories_combo),'','maximal').'</p> '. 
     180     '<p><input type="submit" value="'.__('Delete').'" class="delete" />'. 
     181     $core->formNonce().'</p>'. 
     182 
    180183     '</form>'; 
    181184      
    182185     echo 
    183      '<form action="categories.php" method="post" id="reset-order">'. 
    184      '<fieldset><legend>'.__('Reorder categories').'</legend>'. 
     186     '<form action="categories.php" method="post" id="reset-order" class="border-top">'. 
     187     '<h3>'.__('Reorder categories').'</h3>'. 
    185188     '<p>'.__('This will relocate all categories on the top level').'</p> '. 
    186      '<p><input type="submit" value="'.__('Reorder').'" /></p>'. 
     189     '<p><input type="submit" value="'.__('Reorder').'" />'. 
    187190     form::hidden(array('reset'),1). 
    188      $core->formNonce(). 
    189      '</fieldset>'. 
     191     $core->formNonce().'</p>'. 
    190192     '</form>'; 
    191193} 
  • admin/index.php

    r1422 r1468  
    5959if (!$core->auth->user_prefs->dashboard->prefExists('quickentry')) { 
    6060     if (!$core->auth->user_prefs->dashboard->prefExists('quickentry',true)) { 
    61           $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean','',null,true); 
    62      } 
    63      $core->auth->user_prefs->dashboard->put('quickentry',true,'boolean'); 
     61          $core->auth->user_prefs->dashboard->put('quickentry',false,'boolean','',null,true); 
     62     } 
     63     $core->auth->user_prefs->dashboard->put('quickentry',false,'boolean'); 
    6464} 
    6565 
     
    309309     if ($core->auth->check('usage,contentadmin',$core->blog->id)) 
    310310     { 
    311           $categories_combo = array('&nbsp;' => ''); 
     311          # Getting categories 
     312          $categories_combo = array(__('(No cat)') => ''); 
    312313          try { 
    313314               $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    314                while ($categories->fetch()) { 
    315                     $categories_combo[] = new formSelectOption( 
    316                          str_repeat('&nbsp;&nbsp;',$categories->level-1). 
    317                          ($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    318                          $categories->cat_id 
    319                     ); 
     315               if (!$categories->isEmpty()) { 
     316                    while ($categories->fetch()) { 
     317                         $catparents_combo[] = $categories_combo[] = new formSelectOption( 
     318                              str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
     319                              $categories->cat_id 
     320                         ); 
     321                    } 
    320322               } 
    321323          } catch (Exception $e) { } 
     
    333335          form::textarea('post_content',50,7). 
    334336          '</p>'. 
    335           '<p><label for="cat_id" class="classic">'.__('Category:').'</label> '. 
    336           form::combo('cat_id',$categories_combo).'</p>'. 
     337          '<p><label for="cat_id" class="classic">'.__('Category:').' '. 
     338          form::combo('cat_id',$categories_combo).'</label></p>'. 
     339          ($core->auth->check('categories', $core->blog->id) 
     340               ? '<div>'. 
     341               '<p id="new_cat">'.__('Add a new category').'</p>'. 
     342               '<p><label for="new_cat_title">'.__('Title:').' '. 
     343               form::field('new_cat_title',30,255,'','maximal').'</label></p>'. 
     344               '<p><label for="new_cat_parent">'.__('Parent:').' '. 
     345               form::combo('new_cat_parent',$categories_combo,'','maximal'). 
     346               '</label></p>'. 
     347               '</div>' 
     348               : ''). 
    337349          '<p><input type="submit" value="'.__('Save').'" name="save" /> '. 
    338350          ($core->auth->check('publish',$core->blog->id) 
  • admin/index.php

    r1421 r1468  
    121121$__dashboard_items = new ArrayObject(array(new ArrayObject,new ArrayObject)); 
    122122 
    123 # Documentation links 
    124123$dashboardItem = 0; 
    125 if ($core->auth->user_prefs->dashboard->doclinks) { 
    126      if (!empty($__resources['doc'])) 
    127      { 
    128           $doc_links = '<h3>'.__('Documentation and support').'</h3><ul>'; 
    129       
    130           foreach ($__resources['doc'] as $k => $v) { 
    131                $doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>'; 
    132           } 
    133       
    134           $doc_links .= '</ul>'; 
    135           $__dashboard_items[$dashboardItem][] = $doc_links; 
    136           $dashboardItem++; 
    137      } 
    138 } 
    139124 
    140125if ($core->auth->user_prefs->dashboard->dcnews) { 
     
    180165} 
    181166 
     167# Documentation links 
     168if ($core->auth->user_prefs->dashboard->doclinks) { 
     169     if (!empty($__resources['doc'])) 
     170     { 
     171          $doc_links = '<h3>'.__('Documentation and support').'</h3><ul>'; 
     172      
     173          foreach ($__resources['doc'] as $k => $v) { 
     174               $doc_links .= '<li><a href="'.$v.'" title="'.$k.' '.__('(external link)').'">'.$k.'</a></li>'; 
     175          } 
     176      
     177          $doc_links .= '</ul>'; 
     178          $__dashboard_items[$dashboardItem][] = $doc_links; 
     179          $dashboardItem++; 
     180     } 
     181} 
     182 
    182183$core->callBehavior('adminDashboardItems', $core, $__dashboard_items); 
    183184 
     
    193194     dcPage::jsLoad('js/_index.js'). 
    194195     # --BEHAVIOR-- adminDashboardHeaders 
    195      $core->callBehavior('adminDashboardHeaders') 
     196     $core->callBehavior('adminDashboardHeaders'), 
     197     dcPage::breadcrumb( 
     198          array( 
     199          '<span class="page-title">'.__('Dashboard').' : '.html::escapeHTML($core->blog->name).'</span>' => '' 
     200          ), 
     201          false) 
    196202); 
    197203 
    198 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.__('Dashboard').'</span></h2>'; 
     204# Dotclear updates notifications 
     205if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) 
     206{ 
     207     $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
     208     $new_v = $updater->check(DC_VERSION); 
     209     $version_info = $new_v ? $updater->getInfoURL() : ''; 
     210 
     211     if ($updater->getNotify() && $new_v) { 
     212          $message = 
     213          '<div><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '. 
     214          '<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'. 
     215          '</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'. 
     216          ($version_info ? ' </li><li><a href="'.$version_info.'">'.__('information about this version').'</a>' : ''). 
     217          '</li></ul></div>'; 
     218          dcPage::message($message,false,true); 
     219     } 
     220} 
    199221 
    200222if ($core->auth->getInfo('user_default_blog') != $core->blog->id && $core->auth->blog_count > 1) { 
     
    246268$dashboardItems = ''; 
    247269 
    248 # Dotclear updates notifications 
    249 if ($core->auth->isSuperAdmin() && is_readable(DC_DIGESTS)) 
    250 { 
    251      $updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
    252      $new_v = $updater->check(DC_VERSION); 
    253      $version_info = $new_v ? $updater->getInfoURL() : ''; 
    254       
    255      if ($updater->getNotify() && $new_v) { 
    256           $dashboardItems .= 
    257           '<div id="upg-notify" class="static-msg"><p>'.sprintf(__('Dotclear %s is available!'),$new_v).'</p> '. 
    258           '<ul><li><strong><a href="update.php">'.sprintf(__('Upgrade now'),$new_v).'</a></strong>'. 
    259           '</li><li><a href="update.php?hide_msg=1">'.__('Remind me later').'</a>'. 
    260           ($version_info ? ' </li><li><a href="'.$version_info.'">'.__('information about this version').'</a>' : ''). 
    261           '</li></ul></div>'; 
    262      } 
    263 } 
    264  
    265270# Errors modules notifications 
    266271if ($core->auth->isSuperAdmin()) 
     
    283288     if ($i->count() > 0) 
    284289     { 
    285           $dashboardItems .= '<div>'; 
     290          $dashboardItems .= '<div class="db-item">'; 
    286291          foreach ($i as $v) { 
    287292               $dashboardItems .= $v; 
     
    317322               } 
    318323          } catch (Exception $e) { } 
    319            
     324      
    320325          echo 
    321326          '<div id="quick">'. 
     
    323328          '<form id="quick-entry" action="post.php" method="post">'. 
    324329          '<fieldset><legend>'.__('New entry').'</legend>'. 
    325           '<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:'). 
     330          '<p class="col"><label for="post_title" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'. 
    326331          form::field('post_title',20,255,'','maximal'). 
    327           '</label></p>'. 
     332          '</p>'. 
    328333          '<p class="area"><label class="required" '. 
    329334          'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '. 
  • admin/js/_post.js

    r1392 r1468  
    115115               hide: $('#post_notes').val() == '' 
    116116          }); 
     117          $('#new_cat').toggleWithLegend( 
     118               $('#new_cat').parent().children().not('#new_cat'), 
     119               {} // no cookie on new category as we don't use this every day 
     120          ); 
    117121          $('#post_lang').parent().toggleWithLegend($('#post_lang'),{ 
    118122               cookie: 'dcx_post_lang' 
  • admin/js/_post.js

    r1417 r1468  
    7979          // Get document format and prepare toolbars 
    8080          var formatField = $('#post_format').get(0); 
    81           var last_post_format = $(formatField).val(); 
    8281          $(formatField).change(function() { 
    83                // Confirm post format change 
    84                if(window.confirm(dotclear.msg.confirm_change_post_format_noconvert)){ 
    85                     excerptTb.switchMode(this.value); 
    86                     contentTb.switchMode(this.value); 
    87                     last_post_format = $(this).val(); 
    88                }else{ 
    89                     // Restore last format if change cancelled 
    90                     $(this).val(last_post_format); 
    91                } 
     82               excerptTb.switchMode(this.value); 
     83               contentTb.switchMode(this.value); 
    9284          }); 
    9385           
     
    134126               hide: $('#post_password').val() == '' 
    135127          }); 
    136            
     128          $('#post_status').parent().toggleWithLegend($('#post_status'),{ 
     129               cookie: 'dcx_post_status' 
     130          }); 
     131          $('#post_dt').parent().toggleWithLegend($('#post_dt').parent().children().not('label'),{ 
     132               cookie: 'dcx_post_dt' 
     133          }); 
     134          $('#post_format').parent().toggleWithLegend($('#post_format').parent().children().not('label').add($('#post_format').parents('p').next()),{ 
     135               cookie: 'dcx_post_format' 
     136          }); 
     137          $('#cat_id').parent().toggleWithLegend($('#cat_id'),{ 
     138               cookie: 'cat_id' 
     139          }); 
     140          $('#post_url').parent().toggleWithLegend($('#post_url').parent().children().not('label'),{ 
     141               cookie: 'post_url' 
     142          }); 
    137143          // We load toolbar on excerpt only when it's ready 
    138144          $('#excerpt-area label').toggleWithLegend($('#excerpt-area').children().not('label'),{ 
     
    161167          var a = document.createElement('a'); 
    162168          a.href = '#'; 
     169          a.className = 'button'; 
    163170          $(a).click(function() { 
    164171               var params = { 
  • admin/post.php

    r1460 r1468  
    218218if (!empty($_POST) && !empty($_POST['save']) && $can_edit_post && !$bad_dt) 
    219219{ 
     220     # Create category 
     221     if (!empty($_POST['new_cat_title']) && $core->auth->check('categories', $core->blog->id)) { 
     222      
     223          $cur_cat = $core->con->openCursor($core->prefix.'category'); 
     224          $cur_cat->cat_title = $_POST['new_cat_title']; 
     225          $cur_cat->cat_url = ''; 
     226           
     227          $parent_cat = !empty($_POST['new_cat_parent']) ? $_POST['new_cat_parent'] : ''; 
     228           
     229          # --BEHAVIOR-- adminBeforeCategoryCreate 
     230          $core->callBehavior('adminBeforeCategoryCreate', $cur_cat); 
     231           
     232          $cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat); 
     233           
     234          # --BEHAVIOR-- adminAfterCategoryCreate 
     235          $core->callBehavior('adminAfterCategoryCreate', $cur_cat, $cat_id); 
     236     } 
     237      
    220238     $cur = $core->con->openCursor($core->prefix.'post'); 
    221239      
     
    283301     } 
    284302} 
     303 
     304# Getting categories 
     305$categories_combo = array(__('(No cat)') => ''); 
     306try { 
     307     $categories = $core->blog->getCategories(array('post_type'=>'post')); 
     308     if (!$categories->isEmpty()) { 
     309          while ($categories->fetch()) { 
     310               $catparents_combo[] = $categories_combo[] = new formSelectOption( 
     311                    str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
     312                    $categories->cat_id 
     313               ); 
     314          } 
     315     } 
     316} catch (Exception $e) { } 
    285317 
    286318/* DISPLAY 
     
    423455                         '<p><label for="cat_id" class="ib">'.__('Category').'</label>'. 
    424456                         form::combo('cat_id',$categories_combo,$cat_id,'maximal'). 
    425                          '</p>')), 
     457                         '</p>'. 
     458                         ($core->auth->check('categories', $core->blog->id) ? 
     459                              '<div>'. 
     460                              '<p id="new_cat">'.__('Add a new category').'</p>'. 
     461                              '<p><label for="new_cat_title">'.__('Title:').' '. 
     462                              form::field('new_cat_title',30,255,'','maximal').'</label></p>'. 
     463                              '<p><label for="new_cat_parent">'.__('Parent:').' '. 
     464                              form::combo('new_cat_parent',$categories_combo,'','maximal'). 
     465                              '</label></p>'. 
     466                              '</div>' 
     467                         : ''))), 
    426468          'options-box' => array( 
    427469               'title' => __('Options'), 
  • admin/post.php

    r1421 r1468  
    5050} 
    5151 
     52# Getting categories 
     53$categories_combo = array('&nbsp;' => ''); 
     54try { 
     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 
    5264# Status combo 
    5365foreach ($core->blog->getAllPostStatus() as $k => $v) { 
     
    8294if (!empty($_REQUEST['id'])) 
    8395{ 
     96     $page_title = __('Edit entry'); 
     97      
    8498     $params['post_id'] = $_REQUEST['id']; 
    8599      
     
    111125          $post_open_tb = (boolean) $post->post_open_tb; 
    112126           
    113           $page_title = __('Edit entry'); 
    114            
    115127          $can_edit_post = $post->isEditable(); 
    116128          $can_delete= $post->isDeletable(); 
     
    121133          if ($next_rs !== null) { 
    122134               $next_link = sprintf($post_link,$next_rs->post_id, 
    123                     html::escapeHTML($next_rs->post_title),__('next entry').'&nbsp;&#187;'); 
     135                    html::escapeHTML($next_rs->post_title),__('Next entry').'&nbsp;&#187;'); 
    124136               $next_headlink = sprintf($post_headlink,'next', 
    125137                    html::escapeHTML($next_rs->post_title),$next_rs->post_id); 
     
    128140          if ($prev_rs !== null) { 
    129141               $prev_link = sprintf($post_link,$prev_rs->post_id, 
    130                     html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('previous entry')); 
     142                    html::escapeHTML($prev_rs->post_title),'&#171;&nbsp;'.__('Previous entry')); 
    131143               $prev_headlink = sprintf($post_headlink,'previous', 
    132144                    html::escapeHTML($prev_rs->post_title),$prev_rs->post_id); 
     
    314326} 
    315327 
     328if ($post_id) { 
     329     switch ($post_status) { 
     330          case 1: 
     331               $img_status = sprintf($img_status_pattern,__('Published'),'check-on.png'); 
     332               break; 
     333          case 0: 
     334               $img_status = sprintf($img_status_pattern,__('Unpublished'),'check-off.png'); 
     335               break; 
     336          case -1: 
     337               $img_status = sprintf($img_status_pattern,__('Scheduled'),'scheduled.png'); 
     338               break; 
     339          case -2: 
     340               $img_status = sprintf($img_status_pattern,__('Pending'),'check-wrn.png'); 
     341               break; 
     342          default: 
     343               $img_status = ''; 
     344     } 
     345     $edit_entry_str = __('&ldquo;%s&rdquo;'); 
     346     $page_title_edit = sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status; 
     347} else { 
     348     $img_status = ''; 
     349} 
     350 
     351 
    316352dcPage::open($page_title.' - '.__('Entries'), 
    317353     dcPage::jsDatePicker(). 
     
    324360     $core->callBehavior('adminPostHeaders'). 
    325361     dcPage::jsPageTabs($default_tab). 
    326      $next_headlink."\n".$prev_headlink 
     362     $next_headlink."\n".$prev_headlink, 
     363     dcPage::breadcrumb( 
     364          array( 
     365               html::escapeHTML($core->blog->name) => '', 
     366               __('Entries') => 'posts.php', 
     367               '<span class="page-title">'.($post_id ? $page_title_edit : $page_title).'</span>' => '' 
     368          )) 
    327369); 
    328370 
     
    354396} 
    355397 
    356 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.'<a href="posts.php">'.__('Entries').'</a> &rsaquo; <span class="page-title">'; 
    357 if ($post_id) { 
    358      switch ($post_status) { 
    359           case 1: 
    360                $img_status = sprintf($img_status_pattern,__('published'),'check-on.png'); 
    361                break; 
    362           case 0: 
    363                $img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png'); 
    364                break; 
    365           case -1: 
    366                $img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png'); 
    367                break; 
    368           case -2: 
    369                $img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png'); 
    370                break; 
    371           default: 
    372                $img_status = ''; 
    373      } 
    374      $edit_entry_str = __('Edit entry &ldquo;%s&rdquo;'); 
    375      echo sprintf($edit_entry_str, html::escapeHTML($post_title)).' '.$img_status; 
    376 } else { 
    377      echo $page_title; 
    378 } 
    379 echo '</span></h2>'; 
    380  
    381398if ($post_id && $post->post_status == 1) { 
    382      echo '<p><a href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>'; 
     399     echo '<p><a class="onblog_link" href="'.$post->getURL().'" onclick="window.open(this.href);return false;" title="'.$post_title.' ('.__('new window').')'.'">'.__('Go to this entry on the site').' <img src="images/outgoing-blue.png" alt="" /></a></p>'; 
    383400} 
    384401if ($post_id) 
    385402{ 
    386      echo '<p>'; 
     403     echo '<p class="nav_prevnext">'; 
    387404     if ($prev_link) { echo $prev_link; } 
    388      if ($next_link && $prev_link) { echo ' - '; } 
     405     if ($next_link && $prev_link) { echo ' | '; } 
    389406     if ($next_link) { echo $next_link; } 
    390407      
     
    401418     exit; 
    402419} 
    403  
    404420/* Post form if we can edit post 
    405421-------------------------------------------------------- */ 
    406422if ($can_edit_post) 
    407423{ 
    408      echo '<div class="multi-part" title="'.__('Edit entry').'" id="edit-entry">'; 
     424     $sidebar_items = new ArrayObject(array( 
     425          'status-box' => array( 
     426               'title' => __('Status'), 
     427               'items' => array( 
     428                    'post_status' =>  
     429                         '<p class="entry-status"><label for="post_status" class="ib">'.__('Entry status').' '.$img_status.'</label>'. 
     430                         form::combo('post_status',$status_combo,$post_status,'maximal','',!$can_publish). 
     431                         '</p>', 
     432                    'post_dt' =>  
     433                         '<p><label for="post_dt" class="ib">'.__('Publication date and hour').'</label>'. 
     434                         form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')). 
     435                         '</p>', 
     436                    'post_lang' => 
     437                         '<p><label for="post_lang" class="ib">'.__('Entry lang').'</label>'. 
     438                         form::combo('post_lang',$lang_combo,$post_lang). 
     439                         '</p>', 
     440                    'post_format' => 
     441                         '<p><label for="post_format" class="ib">'.__('Text formating').'</label>'. 
     442                         form::combo('post_format',$formaters_combo,$post_format,'maximal'). 
     443                         '</p>'. 
     444                         '<p>'.($post_id && $post_format != 'xhtml' ?  
     445                         '<a id="convert-xhtml" class="button maximal" href="post.php?id='.$post_id.'&amp;xconv=1">'. 
     446                         __('Convert to XHTML').'</a>' : '').'</p>')), 
     447          'metas-box' => array( 
     448               'title' => __('Ordering'), 
     449               'items' => array( 
     450                    'post_selected' =>  
     451                         '<p><label for="post_selected" class="classic">'. 
     452                         form::checkbox('post_selected',1,$post_selected).' '. 
     453                         __('Selected entry').'</label></p>', 
     454                    'cat_id' => 
     455                         '<p><label for="cat_id" class="ib">'.__('Category').'</label>'. 
     456                         form::combo('cat_id',$categories_combo,$cat_id,'maximal'). 
     457                         '</p>'. 
     458                         ($core->auth->check('categories', $core->blog->id) ? 
     459                              '<div>'. 
     460                              '<p id="new_cat">'.__('Add a new category').'</p>'. 
     461                              '<p><label for="new_cat_title">'.__('Title:').' '. 
     462                              form::field('new_cat_title',30,255,'','maximal').'</label></p>'. 
     463                              '<p><label for="new_cat_parent">'.__('Parent:').' '. 
     464                              form::combo('new_cat_parent',$categories_combo,'','maximal'). 
     465                              '</label></p>'. 
     466                              '</div>' 
     467                         : ''))), 
     468          'options-box' => array( 
     469               'title' => __('Options'), 
     470               'items' => array( 
     471                    'post_open_comment' => 
     472                         '<p><label for="post_open_comment" class="classic">'. 
     473                         form::checkbox('post_open_comment',1,$post_open_comment).' '. 
     474                         __('Accept comments').'</label></p>'. 
     475                         ($core->blog->settings->system->allow_comments ?  
     476                              (isContributionAllowed($post_id,strtotime($post_dt),true) ?  
     477                                   '' : 
     478                                   '<p class="form-note warn">'. 
     479                                   __('Warning: Comments are not more accepted for this entry.').'</p>') :  
     480                              '<p class="form-note warn">'. 
     481                              __('Warning: Comments are not accepted on this blog.').'</p>'), 
     482                    'post_open_tb' => 
     483                         '<p><label for="post_open_tb" class="classic">'. 
     484                         form::checkbox('post_open_tb',1,$post_open_tb).' '. 
     485                         __('Accept trackbacks').'</label></p>'. 
     486                         ($core->blog->settings->system->allow_trackbacks ?  
     487                              (isContributionAllowed($post_id,strtotime($post_dt),false) ?  
     488                                   '' : 
     489                                   '<p class="form-note warn">'. 
     490                                   __('Warning: Trackbacks are not more accepted for this entry.').'</p>') :  
     491                              '<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>'), 
     492                    'post_password' => 
     493                         '<p><label for="post_password" class="ib">'.__('Password').'</label>'. 
     494                         form::field('post_password',10,32,html::escapeHTML($post_password),'maximal'). 
     495                         '</p>', 
     496                    'post_url' => 
     497                         '<div class="lockable">'. 
     498                         '<p><label for="post_url" class="ib">'.__('Edit basename').'</label>'. 
     499                         form::field('post_url',10,255,html::escapeHTML($post_url),'maximal'). 
     500                         '</p>'. 
     501                         '<p class="form-note warn">'. 
     502                         __('Warning: If you set the URL manually, it may conflict with another entry.'). 
     503                         '</p></div>' 
     504     )))); 
     505 
     506     $main_items = new ArrayObject(array( 
     507          "post_title" => 
     508               '<p class="col">'. 
     509               '<label class="required no-margin"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:').'</label>'. 
     510               form::field('post_title',20,255,html::escapeHTML($post_title),'maximal'). 
     511               '</p>', 
     512           
     513          "post_excerpt" => 
     514               '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'<span class="form-note">'. 
     515               __('Add an introduction to the post.').'</span></label> '. 
     516               form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)). 
     517               '</p>', 
     518           
     519          "post_content" => 
     520               '<p class="area"><label class="required" '. 
     521               'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '. 
     522               form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)). 
     523               '</p>', 
     524           
     525          "post_notes" => 
     526               '<p class="area" id="notes-area"><label for="post_notes">'.__('Personal notes:').'<span class="form-note">'. 
     527               __('Add unpublished notes.').'</span></label>'. 
     528               form::textarea('post_notes',50,5,html::escapeHTML($post_notes)). 
     529               '</p>' 
     530          ) 
     531     ); 
     532      
     533     # --BEHAVIOR-- adminPostFormItems 
     534     $core->callBehavior('adminPostFormItems',$main_items,$sidebar_items, isset($post) ? $post : null); 
     535 
     536     echo '<div class="multi-part" title="'.($post_id ? __('Edit entry') : __('New entry')).'" id="edit-entry">'; 
    409537     echo '<form action="post.php" method="post" id="entry-form">'; 
    410538     echo '<div id="entry-wrapper">'; 
    411539     echo '<div id="entry-content"><div class="constrained">'; 
     540 
     541     echo '<h3 class="hidden">'.__('Edit post').'</h3>'; 
     542      
     543     foreach ($main_items as $id => $item) { 
     544          echo $item; 
     545     } 
     546 
     547     # --BEHAVIOR-- adminPostForm (may be deprecated) 
     548     $core->callBehavior('adminPostForm',isset($post) ? $post : null); 
    412549      
    413550     echo 
    414      '<p class="col"><label class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Title:'). 
    415      form::field('post_title',20,255,html::escapeHTML($post_title),'maximal'). 
    416      '</label></p>'. 
    417       
    418      '<p class="area" id="excerpt-area"><label for="post_excerpt">'.__('Excerpt:').'</label> '. 
    419      form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)). 
    420      '</p>'. 
    421       
    422      '<p class="area"><label class="required" '. 
    423      'for="post_content"><abbr title="'.__('Required field').'">*</abbr> '.__('Content:').'</label> '. 
    424      form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)). 
    425      '</p>'. 
    426       
    427      '<p class="area" id="notes-area"><label for="post_notes">'.__('Notes:').'</label>'. 
    428      form::textarea('post_notes',50,5,html::escapeHTML($post_notes)). 
    429      '</p>'; 
    430       
    431      # --BEHAVIOR-- adminPostForm 
    432      $core->callBehavior('adminPostForm',isset($post) ? $post : null); 
    433       
    434      echo 
    435      '<p>'. 
     551     '<p class="border-top">'. 
    436552     ($post_id ? form::hidden('id',$post_id) : ''). 
    437553     '<input type="submit" value="'.__('Save').' (s)" '. 
     
    458574     echo '<div id="entry-sidebar">'; 
    459575      
    460      echo 
    461      '<p><label for="cat_id">'.__('Category:'). 
    462      form::combo('cat_id',$categories_combo,$cat_id,'maximal'). 
    463      '</label></p>'. 
    464       
    465      ($core->auth->check('categories', $core->blog->id) ? 
    466           '<div>'. 
    467           '<p id="new_cat">'.__('Add a new category').'</p>'. 
    468           '<p><label for="new_cat_title">'.__('Title:').' '. 
    469           form::field('new_cat_title',30,255,'','maximal').'</label></p>'. 
    470           '<p><label for="new_cat_parent">'.__('Parent:').' '. 
    471           form::combo('new_cat_parent',$categories_combo,'','maximal'). 
    472           '</label></p>'. 
    473           '</div>' 
    474      : ''). 
    475       
    476      '<p><label for="post_status">'.__('Entry status:'). 
    477      form::combo('post_status',$status_combo,$post_status,'','',!$can_publish). 
    478      '</label></p>'. 
    479       
    480      '<p><label for="post_dt">'.__('Published on:'). 
    481      form::field('post_dt',16,16,$post_dt,($bad_dt ? 'invalid' : '')). 
    482      '</label></p>'. 
    483       
    484      '<p><label for="post_format">'.__('Text formating:'). 
    485      form::combo('post_format',$formaters_combo,$post_format). 
    486      '</label>'. 
    487      '</p>'. 
    488      '<p>'.($post_id && $post_format != 'xhtml' ? '<a id="convert-xhtml" class="button" href="post.php?id='.$post_id.'&amp;xconv=1">'.__('Convert to XHTML').'</a>' : '').'</p>'. 
    489       
    490      '<p><label for="post_open_comment" class="classic">'.form::checkbox('post_open_comment',1,$post_open_comment).' '. 
    491      __('Accept comments').'</label></p>'. 
    492      ($core->blog->settings->system->allow_comments ?  
    493           (isContributionAllowed($post_id,strtotime($post_dt),true) ?  
    494                '' : 
    495                '<p class="form-note warn">'.__('Warning: Comments are not more accepted for this entry.').'</p>') :  
    496           '<p class="form-note warn">'.__('Warning: Comments are not accepted on this blog.').'</p>'). 
    497  
    498      '<p><label for="post_open_tb" class="classic">'.form::checkbox('post_open_tb',1,$post_open_tb).' '. 
    499      __('Accept trackbacks').'</label></p>'. 
    500      ($core->blog->settings->system->allow_trackbacks ?  
    501           (isContributionAllowed($post_id,strtotime($post_dt),false) ?  
    502                '' : 
    503                '<p class="form-note warn">'.__('Warning: Trackbacks are not more accepted for this entry.').'</p>') :  
    504           '<p class="form-note warn">'.__('Warning: Trackbacks are not accepted on this blog.').'</p>'). 
    505  
    506      '<p><label for="post_selected" class="classic">'.form::checkbox('post_selected',1,$post_selected).' '. 
    507      __('Selected entry').'</label></p>'. 
    508       
    509      '<p><label for="post_lang">'.__('Entry lang:'). 
    510      form::combo('post_lang',$lang_combo,$post_lang). 
    511      '</label></p>'. 
    512       
    513      '<p><label for="post_password">'.__('Entry password:'). 
    514      form::field('post_password',10,32,html::escapeHTML($post_password),'maximal'). 
    515      '</label></p>'. 
    516       
    517      '<div class="lockable">'. 
    518      '<p><label for="post_url">'.__('Basename:'). 
    519      form::field('post_url',10,255,html::escapeHTML($post_url),'maximal'). 
    520      '</label></p>'. 
    521      '<p class="form-note warn">'. 
    522      __('Warning: If you set the URL manually, it may conflict with another entry.'). 
    523      '</p>'. 
    524      '</div>'; 
    525       
    526      # --BEHAVIOR-- adminPostFormSidebar 
     576     foreach ($sidebar_items as $id => $c) { 
     577          echo '<div id="'.$id.'" class="box">'. 
     578               '<h4>'.$c['title'].'</h4>'; 
     579          foreach ($c['items'] as $e_name=>$e_content) { 
     580               echo $e_content; 
     581          } 
     582          echo '</div>'; 
     583     } 
     584      
     585      
     586     # --BEHAVIOR-- adminPostFormSidebar (may be deprecated) 
    527587     $core->callBehavior('adminPostFormSidebar',isset($post) ? $post : null); 
    528       
    529588     echo '</div>';      // End #entry-sidebar 
    530589 
     
    557616     if ($can_edit_post && $core->auth->check('publish,contentadmin',$core->blog->id)) 
    558617     { 
    559           $combo_action[__('publish')] = 'publish'; 
    560           $combo_action[__('unpublish')] = 'unpublish'; 
    561           $combo_action[__('mark as pending')] = 'pending'; 
    562           $combo_action[__('mark as junk')] = 'junk'; 
     618          $combo_action[__('Publish')] = 'publish'; 
     619          $combo_action[__('Unpublish')] = 'unpublish'; 
     620          $combo_action[__('Mark as pending')] = 'pending'; 
     621          $combo_action[__('Mark as junk')] = 'junk'; 
    563622     } 
    564623      
     
    622681     '<form action="comment.php" method="post" id="comment-form">'. 
    623682     '<div class="constrained">'. 
    624      '<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:'). 
     683     '<p><label for="comment_author" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Name:').'</label>'. 
    625684     form::field('comment_author',30,255,html::escapeHTML($core->auth->getInfo('user_cn'))). 
    626      '</label></p>'. 
    627       
    628      '<p><label for="comment_email">'.__('Email:'). 
     685     '</p>'. 
     686      
     687     '<p><label for="comment_email">'.__('Email:').'</label>'. 
    629688     form::field('comment_email',30,255,html::escapeHTML($core->auth->getInfo('user_email'))). 
    630      '</label></p>'. 
    631       
    632      '<p><label for="comment_site">'.__('Web site:'). 
     689     '</p>'. 
     690      
     691     '<p><label for="comment_site">'.__('Web site:').'</label>'. 
    633692     form::field('comment_site',30,255,html::escapeHTML($core->auth->getInfo('user_url'))). 
    634      '</label></p>'. 
     693     '</p>'. 
    635694      
    636695     '<p class="area"><label for="comment_content" class="required"><abbr title="'.__('Required field').'">*</abbr> '. 
     
    688747          switch ($rs->comment_status) { 
    689748               case 1: 
    690                     $img_status = sprintf($img,__('published'),'check-on.png'); 
     749                    $img_status = sprintf($img,__('Published'),'check-on.png'); 
    691750                    break; 
    692751               case 0: 
    693                     $img_status = sprintf($img,__('unpublished'),'check-off.png'); 
     752                    $img_status = sprintf($img,__('Unpublished'),'check-off.png'); 
    694753                    break; 
    695754               case -1: 
    696                     $img_status = sprintf($img,__('pending'),'check-wrn.png'); 
     755                    $img_status = sprintf($img,__('Pending'),'check-wrn.png'); 
    697756                    break; 
    698757               case -2: 
    699                     $img_status = sprintf($img,__('junk'),'junk.png'); 
     758                    $img_status = sprintf($img,__('Junk'),'junk.png'); 
    700759                    break; 
    701760          } 
     
    720779} 
    721780 
    722 dcPage::helpBlock('core_post','core_wiki'); 
     781dcPage::helpBlock('core_post','core_trackbacks','core_wiki'); 
    723782dcPage::close(); 
    724783?> 
  • admin/posts_actions.php

    r1399 r1468  
    1616 
    1717$params = array(); 
     18$action = ''; 
    1819 
    1920/* Actions 
     
    126127     elseif ($action == 'category' && isset($_POST['new_cat_id'])) 
    127128     { 
    128           try 
    129           { 
    130                $core->blog->updPostsCategory($posts_ids,$_POST['new_cat_id']); 
     129          $new_cat_id = $_POST['new_cat_id']; 
     130           
     131          try 
     132          { 
     133               if (!empty($_POST['new_cat_title']) && $core->auth->check('categories', $core->blog->id)) 
     134               { 
     135                    $cur_cat = $core->con->openCursor($core->prefix.'category'); 
     136                    $cur_cat->cat_title = $_POST['new_cat_title']; 
     137                    $cur_cat->cat_url = ''; 
     138                     
     139                    $parent_cat = !empty($_POST['new_cat_parent']) ? $_POST['new_cat_parent'] : ''; 
     140                     
     141                    # --BEHAVIOR-- adminBeforeCategoryCreate 
     142                    $core->callBehavior('adminBeforeCategoryCreate', $cur_cat); 
     143                     
     144                    $new_cat_id = $core->blog->addCategory($cur_cat, (integer) $parent_cat); 
     145                     
     146                    # --BEHAVIOR-- adminAfterCategoryCreate 
     147                    $core->callBehavior('adminAfterCategoryCreate', $cur_cat, $new_cat_id); 
     148               } 
     149                
     150               $core->blog->updPostsCategory($posts_ids, $new_cat_id); 
    131151                
    132152               http::redirect($redir); 
     
    246266     echo '<h2 class="page-title">'.__('Change category for entries').'</h2>'; 
    247267      
    248      # categories list 
    249268     # Getting categories 
    250      $categories_combo = array('&nbsp;' => ''); 
     269     $categories_combo = array(__('(No cat)') => ''); 
    251270     try { 
    252271          $categories = $core->blog->getCategories(array('post_type'=>'post')); 
    253           while ($categories->fetch()) { 
    254                $categories_combo[] = new formSelectOption( 
    255                     str_repeat('&nbsp;&nbsp;',$categories->level-1). 
    256                     ($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
    257                     $categories->cat_id 
    258                ); 
     272          if (!$categories->isEmpty()) { 
     273               while ($categories->fetch()) { 
     274                    $catparents_combo[] = $categories_combo[] = new formSelectOption( 
     275                         str_repeat('&nbsp;&nbsp;',$categories->level-1).($categories->level-1 == 0 ? '' : '&bull; ').html::escapeHTML($categories->cat_title), 
     276                         $categories->cat_id 
     277                    ); 
     278               } 
    259279          } 
    260280     } catch (Exception $e) { } 
     
    264284     '<p><label for="new_cat_id" class="classic">'.__('Category:').'</label> '. 
    265285     form::combo('new_cat_id',$categories_combo,''); 
     286      
     287     if ($core->auth->check('categories', $core->blog->id)) { 
     288          echo  
     289          '<div>'. 
     290          '<p id="new_cat">'.__('Add a new category').'</p>'. 
     291          '<p><label for="new_cat_title">'.__('Title:').' '. 
     292          form::field('new_cat_title',30,255,'','maximal').'</label></p>'. 
     293          '<p><label for="new_cat_parent">'.__('Parent:').' '. 
     294          form::combo('new_cat_parent',$categories_combo,'','maximal'). 
     295          '</label></p>'. 
     296          '</div>'; 
     297     } 
    266298      
    267299     echo 
  • admin/posts_actions.php

    r1421 r1468  
    282282     echo 
    283283     '<form action="posts_actions.php" method="post">'. 
    284      '<p><label for="new_cat_id" class="classic">'.__('Category:').' '. 
    285      form::combo('new_cat_id',$categories_combo,''). 
    286      '</label> '; 
     284     '<p><label for="new_cat_id" class="classic">'.__('Category:').'</label> '. 
     285     form::combo('new_cat_id',$categories_combo,''); 
    287286      
    288287     if ($core->auth->check('categories', $core->blog->id)) { 
     
    327326     echo 
    328327     '<form action="posts_actions.php" method="post">'. 
    329      '<p><label for="new_lang" class="classic">'.__('Entry lang:').' '. 
    330      form::combo('new_lang',$lang_combo,''). 
    331      '</label> '; 
     328     '<p><label for="new_lang" class="classic">'.__('Entry lang:').'</label> '. 
     329     form::combo('new_lang',$lang_combo,''); 
    332330      
    333331     echo 
     
    345343     echo 
    346344     '<form action="posts_actions.php" method="post">'. 
    347      '<p><label for="new_auth_id" class="classic">'.__('Author ID:').' '. 
    348      form::field('new_auth_id',20,255). 
    349      '</label> '; 
     345     '<p><label for="new_auth_id" class="classic">'.__('Author ID:').'</label> '. 
     346     form::field('new_auth_id',20,255); 
    350347      
    351348     echo 
  • admin/preferences.php

    r1399 r1468  
    344344     ($user_acc_nodragdrop ? '' : dcPage::jsLoad('js/_preferences-dragdrop.js')). 
    345345     dcPage::jsLoad('js/jquery/jquery-ui.custom.js'). 
     346     dcPage::jsLoad('js/jquery/jquery.pwstrength.js'). 
     347          '<script type="text/javascript">'."\n". 
     348          "//<![CDATA[\n". 
     349          "\$(function() {\n". 
     350          "    \$('#new_pwd').pwstrength({texts: ['". 
     351                    sprintf(__('Password strength: %s'),__('very weak'))."', '". 
     352                    sprintf(__('Password strength: %s'),__('weak'))."', '". 
     353                    sprintf(__('Password strength: %s'),__('mediocre'))."', '". 
     354                    sprintf(__('Password strength: %s'),__('strong'))."', '". 
     355                    sprintf(__('Password strength: %s'),__('very strong'))."']});\n". 
     356          "});\n". 
     357          "\n//]]>\n". 
     358          "</script>\n". 
    346359     dcPage::jsPageTabs($default_tab). 
    347360     dcPage::jsConfirmClose('user-form'). 
     
    420433     '<legend>'.__('Change your password').'</legend>'. 
    421434      
    422      '<p><label for="new_pwd">'.__('New password:').'</label>'. 
    423      form::password('new_pwd',20,255).'</p>'. 
     435     '<div class="pw-table">'. 
     436     '<p class="pw-cell"><label for="new_pwd">'.__('New password:').'</label>'. 
     437     form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').'</p>'. 
     438     '<div id="pwindicator">'. 
     439     '    <div class="bar"></div>'. 
     440     '    <p class="label no-margin"></p>'. 
     441     '</div>'. 
     442     '</div>'. 
    424443      
    425444     '<p><label for="new_pwd_c">'.__('Confirm password:').'</label>'. 
  • admin/preferences.php

    r1375 r1468  
    361361      
    362362     # --BEHAVIOR-- adminPreferencesHeaders 
    363      $core->callBehavior('adminPreferencesHeaders') 
     363     $core->callBehavior('adminPreferencesHeaders'), 
     364 
     365     dcPage::breadcrumb( 
     366     array( 
     367          html::escapeHTML($core->auth->userID()) => '', 
     368          '<span class="page-title">'.$page_title.'</span>' => '' 
     369     )) 
    364370); 
    365371 
     
    382388     dcPage::message(__('Default favorites have been successfully updated.')); 
    383389} 
    384  
    385 echo '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; <span class="page-title">'.$page_title.'</span></h2>'; 
    386390 
    387391# User profile 
     
    393397'<div class="two-cols">'. 
    394398'<div class="col">'. 
    395 '<p><label for="user_name">'.__('Last Name:'). 
    396 form::field('user_name',20,255,html::escapeHTML($user_name)).'</label></p>'. 
    397  
    398 '<p><label for="user_firstname">'.__('First Name:'). 
    399 form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).'</label></p>'. 
    400  
    401 '<p><label for="user_displayname">'.__('Display name:'). 
    402 form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).'</label></p>'. 
    403  
    404 '<p><label for="user_email">'.__('Email:'). 
    405 form::field('user_email',20,255,html::escapeHTML($user_email)).'</label></p>'. 
    406  
    407 '<p><label for="user_url">'.__('URL:'). 
    408 form::field('user_url',30,255,html::escapeHTML($user_url)).'</label></p>'. 
     399'<p><label for="user_name">'.__('Last Name:').'</label>'. 
     400form::field('user_name',20,255,html::escapeHTML($user_name)).'</p>'. 
     401 
     402'<p><label for="user_firstname">'.__('First Name:').'</label>'. 
     403form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).'</p>'. 
     404 
     405'<p><label for="user_displayname">'.__('Display name:').'</label>'. 
     406form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).'</p>'. 
     407 
     408'<p><label for="user_email">'.__('Email:').'</label>'. 
     409form::field('user_email',20,255,html::escapeHTML($user_email)).'</p>'. 
     410 
     411'<p><label for="user_url">'.__('URL:').'</label>'. 
     412form::field('user_url',30,255,html::escapeHTML($user_url)).'</p>'. 
    409413 
    410414'</div>'. 
     
    412416'<div class="col">'. 
    413417 
    414 '<p><label for="user_lang">'.__('User language:'). 
    415 form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</label></p>'. 
    416  
    417 '<p><label for="user_tz">'.__('User timezone:'). 
    418 form::combo('user_tz',dt::getZones(true,true),$user_tz).'</label></p>'. 
     418'<p><label for="user_lang">'.__('User language:').'</label>'. 
     419form::combo('user_lang',$lang_combo,$user_lang,'l10n').'</p>'. 
     420 
     421'<p><label for="user_tz">'.__('User timezone:').'</label>'. 
     422form::combo('user_tz',dt::getZones(true,true),$user_tz).'</p>'. 
    419423 
    420424'</div>'. 
     
    432436     '<p class="pw-cell"><label for="new_pwd">'.__('New password:').'</label>'. 
    433437     form::password('new_pwd',20,255,'','','',false,' data-indicator="pwindicator" ').'</p>'. 
    434     '<div id="pwindicator">'. 
    435     '    <div class="bar"></div>'. 
    436     '    <p class="label no-margin"></p>'. 
    437     '</div>'. 
    438     '</div>'. 
     438     '<div id="pwindicator">'. 
     439     '    <div class="bar"></div>'. 
     440     '    <p class="label no-margin"></p>'. 
     441     '</div>'. 
     442     '</div>'. 
    439443      
    440444     '<p><label for="new_pwd_c">'.__('Confirm password:').'</label>'. 
     
    462466'<fieldset><legend>'.__('My options').'</legend>'. 
    463467 
    464 '<p><label for="user_post_format">'.__('Preferred format:'). 
    465 form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</label></p>'. 
    466  
    467 '<p><label for="user_post_status">'.__('Default entry status:'). 
    468 form::combo('user_post_status',$status_combo,$user_post_status).'</label></p>'. 
    469  
    470 '<p><label for="user_edit_size">'.__('Entry edit field height:'). 
    471 form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</label></p>'. 
     468'<p><label for="user_post_format">'.__('Preferred format:').'</label>'. 
     469form::combo('user_post_format',$formaters_combo,$user_options['post_format']).'</p>'. 
     470 
     471'<p><label for="user_post_status">'.__('Default entry status:').'</label>'. 
     472form::combo('user_post_status',$status_combo,$user_post_status).'</p>'. 
     473 
     474'<p><label for="user_edit_size">'.__('Entry edit field height:').'</label>'. 
     475form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).'</p>'. 
    472476 
    473477'<p><label for="user_wysiwyg" class="classic">'. 
     
    485489if (count($iconsets_combo) > 1) { 
    486490     echo  
    487           '<p><label for="user_ui_iconset">'.__('Iconset:'). 
    488           form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</label></p>'; 
     491          '<p><label for="user_ui_iconset">'.__('Iconset:').'</label>'. 
     492          form::combo('user_ui_iconset',$iconsets_combo,$user_ui_iconset).'</p>'; 
    489493} else { 
    490494     form::hidden('user_ui_iconset',''); 
  • admin/style/default.css

    r1465 r1468  
    541541} 
    542542 
     543#upg-notify { 
     544} 
     545#upg-notify ul { 
     546     padding-left: 15px; 
     547} 
     548#upg-notify li { 
     549     color: #fff; 
     550} 
    543551/* ------------------------------------------------------------------ post */ 
    544552#entry-wrapper { 
     
    16171625} 
    16181626 
     1627/* --------------------------------------------------------------- password indcator */ 
     1628.pw-table { 
     1629     display: table; 
     1630     margin-bottom: 1em; 
     1631} 
     1632.pw-cell { 
     1633     display: table-cell; 
     1634     margin-bottom: 1em; 
     1635} 
     1636#pwindicator { 
     1637     display: table-cell; 
     1638     vertical-align: bottom; 
     1639     padding-left: 1.5em; 
     1640     height: 3.8em; 
     1641} 
     1642#pwindicator .bar { 
     1643     height: 6px; 
     1644     margin-bottom: 4px; 
     1645} 
     1646.pw-very-weak .bar { 
     1647     background: #900; 
     1648     width: 30px; 
     1649} 
     1650.pw-weak .bar { 
     1651     background: #c00; 
     1652     width: 60px; 
     1653} 
     1654.pw-mediocre .bar { 
     1655     background: #f60; 
     1656     width: 90px; 
     1657} 
     1658.pw-strong .bar { 
     1659     background: #060; 
     1660     width: 120px; 
     1661} 
     1662.pw-very-strong .bar { 
     1663     background: #0c0; 
     1664     width: 150px; 
     1665} 
     1666 
    16191667/* --------------------------------------------------------------------------- 
    16201668     Media queries vite fait en attendant la reprise complète du layout 
  • admin/style/default.css

    r1375 r1468  
    1313 
    1414/* ------------------------------------------------------------------ html */ 
     15html { 
     16     font-size: 62.5%; 
     17} 
    1518body { 
    16      font: 75%/1.5em Helvetica,Arial,sans-serif; 
     19     font: 1.2rem/1.5 Arial,Helvetica,sans-serif; 
    1720     color: #333; 
    18      background: #f5f5f5; 
     21     background: #fff; 
    1922     margin: 0; 
    2023     padding: 0; 
    21 } 
    22 body.auth { 
    23      background: #fff; 
    2424} 
    2525 
     
    3636} 
    3737 
    38 h1, h2, h3, h4, h5, h6, p { 
     38h1, h2, h3, .as_h3, h4, h5, h6, p { 
    3939     margin-top: 0; 
    40      margin-bottom: 0.6em; 
     40     margin-bottom: 1rem; 
    4141} 
    4242h2 { 
    4343     color: #666; 
    44      font-size: 1.4em; 
    45      padding: 4px 0; 
     44     font-size: 1.8rem; 
     45     padding: 0 0 1.8rem; 
     46     font-weight: normal; 
     47} 
     48h2 a:link, h2 a:visited { 
     49     color: #666; 
     50     border-color: #000; 
    4651} 
    4752.page-title { 
    4853     color: #d30e60; 
    4954} 
    50 h3 { 
     55.page-title img { 
     56     padding-left: .6rem; 
     57     vertical-align: middle; 
     58} 
     59#content > h2 { 
     60     padding: 0 1.8rem .6rem; 
     61     margin: 0 -1.8rem 1rem; 
     62     background: #fff url(bg_h2.png) repeat-x center bottom; 
     63} 
     64h3, .as_h3 { 
     65     color: #575859; 
     66     font-size: 1.4rem; 
     67} 
     68h4 { 
     69     font-size: 1.1em; 
     70     color: #575859; 
     71} 
     72h5 { 
     73     font-size: 1em; 
     74     color: #575859; 
     75} 
     76#entry-sidebar h5 { 
     77     font-weight: normal; 
    5178     color: #333; 
    52      font-size: 1.2em; 
     79} 
     80.entry-status label img { 
     81     padding-left: .4rem; 
     82     vertical-align: text-top; 
    5383} 
    5484p, div.p { 
     
    5787hr { 
    5888     height: 1px; 
    59      border-width: 1px 0 0 0; 
     89     border-width: 1px 0 0; 
    6090     border-color: #999; 
    6191     border-style: solid; 
     
    83113#header { 
    84114     background: #575859; 
    85      height: 3em; 
    86115     position: relative; 
     116     border-bottom: 4px solid #A2CBE9; 
     117     width: 100%; 
    87118} 
    88119#prelude { 
    89      background: #575859; 
    90      line-height: 1.5em; 
    91      margin: 0; 
    92      padding: 0 1.7em 0 1em; 
     120     line-height: 1.9; 
     121     margin: 0; 
     122     padding: 0; 
    93123     overflow: hidden; 
    94124     position: absolute; 
    95      top: 1.2em; 
     125     top: 3em; 
    96126     left: 0; 
     127     background: #A2CBE9; 
     128     width: 14.5em; 
    97129     } 
    98130#prelude li { 
    99131     list-style-type: none; 
    100      margin: 0 1em 0 0; 
     132     margin: 0; 
    101133     background:transparent; 
    102      } 
     134} 
    103135#prelude li a { 
    104      color:#fff; 
    105      } 
     136     padding-left: 1.6rem; 
     137     background: #A2CBE9; 
     138     color: #000; 
     139     border-bottom-color: #A2CBE9; 
     140} 
    106141#top { 
    107142     margin: 0; 
    108143     padding: 0; 
    109      width: 13em; 
     144     width: 14.5em; 
    110145     float: left; 
    111146} 
     
    113148     padding: 0; 
    114149     margin: 0; 
    115      height: 3em; 
     150     height: 3.6rem; 
    116151     text-indent: -1000px; 
    117      background: transparent url(dc_logo.png) no-repeat 0 50%; 
    118152} 
    119153#top h1 a { 
    120154     position: absolute; 
    121      top: 3px; 
     155     top: 0; 
    122156     left: 0; 
    123      width: 130px; 
    124      height: 60px; 
     157     width: 17.4rem; 
     158     height: 3.6rem; 
    125159     border: none; 
    126      outline: none; 
    127160     color: #fff; 
    128161} 
     162#top h1 a:link { 
     163     background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 6px; 
     164} 
     165#top h1 a:hover, #top h1 a:focus { 
     166     background: transparent url(dc_logos/b-dotclear120.png) no-repeat 0 -94px;  
     167} 
    129168#info-boxes { 
    130      background: #575859; 
    131      font-size: .95em; 
    132      height: 3em; 
     169     font-size: 1em; 
     170     line-height: 3em; 
    133171} 
    134172#info-box1 { 
    135173     margin: 0; 
    136      padding: .5em 3px 4px 0; 
     174     padding: 0 3px 0 1.8rem; 
    137175     color: #fff; 
    138      float: left; 
    139      background: #575859; 
     176     display: inline-block; 
    140177} 
    141178#info-box2 { 
    142      margin: .1em 0 0 0; 
    143      padding: .5em 1.3em 4px 0; 
     179     margin: 0; 
     180     padding: 0 1.3em 0 0; 
    144181     color: #fff; 
    145182     float: right; 
    146183     text-align: right; 
    147      background: #575859; 
    148      height: 2em; 
    149184} 
    150185#info-box1 p { 
     
    153188} 
    154189#info-box1 select { 
    155      width: 15em; 
     190     width: 14.5em; 
    156191} 
    157192#info-box1 a img, #info-box2 a img { 
     
    159194     padding-left: .3em; 
    160195     } 
    161 #info-box1 a, #info-box2 a { 
    162      background: #575859; 
     196#info-boxes a { 
    163197     font-weight: bold; 
    164198     color: #fff; 
     
    173207} 
    174208#info-box2 a.active { 
    175      border-bottom-color: #f5f5f5; 
     209     border-bottom-color: #fff; 
    176210     margin: 0; 
    177211     padding: 1.2em .5em; 
    178      background-color: #f5f5f5; 
     212     background-color: #fff; 
    179213     color: #333; 
    180214     font-weight: bold; 
    181215} 
    182216#info-box2 span { 
    183      color: #575859; 
    184 } 
    185 /* prelude */ 
     217     color: #999; 
     218} 
     219/* main blocks */ 
    186220#wrapper { 
    187221     width: 100%; 
     
    190224     width: 100%; 
    191225     float: right; 
    192      margin-left: -13em; 
     226     margin-left: -14.5em; 
    193227     margin-top: 0; 
     228     background: #fff url(bg_menu.png); 
    194229} 
    195230#content { 
    196      margin: 1.5em 1.5em .5em 13em; 
    197      padding: 1em; 
     231     margin: 0 0 0 14.5em; 
     232     padding: .9rem 1.8rem 1.8rem; 
    198233     background: #fff; 
    199      border-radius: .5em; 
    200      border: 1px solid #ddd; 
    201234} 
    202235     /* Micro clearfix thx to Nicolas Gallagher */ 
     
    219252} 
    220253.two-cols .col { 
    221      width: 49%; 
     254     width: 47%; 
    222255     margin-left: 2%; 
    223256     float: left; 
    224257} 
    225 .two-cols .col:first-child { 
    226      width: 49%; 
    227      margin-left: 0; 
    228 } 
    229258.two-cols .col70{ 
    230      width: 69%; 
     259     width: 68%; 
    231260     margin-left: 0; 
    232261     float: left; 
    233262} 
    234 .two-cols .col30 { 
     263.col30 { 
    235264     width: 28%; 
    236265     margin-left: 2%; 
    237266     float: left; 
    238267} 
     268.two-cols .col:first-child, 
     269.two-cols .col30.first-col { 
     270     margin-left: 0; 
     271     margin-right: 2%; 
     272} 
     273.two-cols .col:last-child, 
     274.two-cols .col70.last-col { 
     275     margin-left: 2%; 
     276     margin-right: 0; 
     277} 
    239278/* -------------------------------------------------------------- layout - onglets */ 
    240279.part-tabs ul { 
    241      padding: .3em 0 1px 1em; 
    242      border-bottom: 1px solid #999; 
     280     padding: .5em 0 .3em 1.2rem; 
     281     border-bottom: 1px solid #ddd; 
    243282} 
    244283.part-tabs li { 
     
    248287} 
    249288.part-tabs li a { 
    250      padding: .3em 0.5em; 
    251      margin-right: .5em; 
    252      border: 1px solid #999; 
     289     padding: .5em 2em; 
     290     margin-right: -1px; 
     291     border: 1px solid #aaa; 
    253292     border-bottom: none; 
    254      background: #dfdfdf; 
    255293     text-decoration: none; 
    256      border-top-left-radius: .3em; 
    257      border-top-right-radius: .3em; 
    258      color: #000; 
    259 } 
    260 .part-tabs li.part-tabs-link a { 
    261      background: #ffe; 
     294     color: #333; 
     295     background-color:#E4E0EC; 
    262296} 
    263297.part-tabs li a:hover, .part-tabs li a:focus { 
     
    268302.part-tabs li.part-tabs-active a { 
    269303     background: #fff; 
    270      border-bottom: 1px solid #fff; 
    271      color: #000; 
    272304     font-weight: bold; 
     305     border-bottom-color: #fff; 
     306     padding-bottom: .7rem; 
    273307} 
    274308/* ------------------------------------------------------------------ main-menu */ 
    275309#main-menu { 
    276      width: 13em; 
     310     width: 14.5em; 
    277311     float: left; 
    278      margin-top: 1.2em; 
    279      margin-bottom: .5em; 
     312     margin:0; 
     313     padding-top: 4.5em; 
     314     padding-bottom: 1em; 
     315     background: #f7f7f7; 
    280316} 
    281317#main-menu h3 { 
    282      margin: 0 0 0.5em; 
    283      padding: .5em 0 0 .5em; 
    284      text-transform: uppercase; 
     318     margin: 0; 
     319     padding: 1.2rem 0 1rem 2.2rem; 
     320     text-indent: -1.6rem; 
    285321     color: #666; 
    286      font-size: 1.1em; 
     322     font-size: 1.4rem; 
     323} 
     324#main-menu h3 img[alt="cacher"] { 
     325     vertical-align: top; 
    287326} 
    288327#main-menu ul { 
    289      font-size: .95em; 
    290      margin: 0 0 1em 0; 
     328     margin: 0 0 1.8rem 0; 
    291329     padding: 0; 
    292330     list-style: none; 
     
    295333     display: block; 
    296334     margin: 0.5em 0 0; 
    297      padding: .2em 0 0 32px; 
     335     padding: .3rem 0 0 30px; 
    298336     background-repeat: no-repeat; 
    299      background-position: 12px .4em; 
     337     background-position: 8px .3em; 
     338} 
     339#main-menu li.active { 
     340     background-color: #fff; 
    300341} 
    301342#main-menu a { 
    302      font-weight: bold; 
     343     color: #333; 
     344     border-bottom-color: #ccc; 
    303345} 
    304346#main-menu .active a { 
    305347     border-bottom: none; 
    306      color: #333; 
     348     color: #d30e60; 
    307349} 
    308350#main-menu .active { 
    309      background-color: #fff; 
    310      padding: .4em 0 .1em 32px; 
    311      background-position: 12px .4em; 
    312      border-top: 1px solid #ddd; 
    313      border-bottom: 1px solid #ddd; 
    314      margin-right: -1px; 
    315 } 
    316 #favorites-menu { 
    317      margin: 0 0 2em; 
     351     font-weight: bolder; 
     352} 
     353#search-menu { 
     354     padding: .3rem .4rem 0; 
     355     font-size: 100% 
     356} 
     357#search-menu p { 
     358     display: inline-block; 
     359     border: 1px solid #999; 
     360     border-radius: .6em; 
     361     position: relative; 
     362     height: 2rem; 
     363     overflow: hidden; 
     364} 
     365#search-menu #q { 
     366     width: 12rem; 
     367     border-bottom-left-radius: .6em; 
     368     border-top-left-radius: .6em; 
     369     background: transparent url(search.png) no-repeat 4px center; 
     370     text-indent: 18px; 
     371     height: 2rem; 
     372     padding: 0 2px;  
     373     border: none; 
     374} 
     375#search-menu input[type="submit"] { 
     376     padding: 0 0.3rem; 
     377     background: #dfdfdf; 
     378     border-color: #999; 
     379     color: #444; 
     380     border-bottom-right-radius: .6em; 
     381     border-top-right-radius: .6em; 
     382     border-top-left-radius: 0; 
     383     border-bottom-left-radius: 0; 
     384     text-shadow: none; 
     385     height: 2rem; 
     386     border: none; 
     387     border-left: 1px solid #aaa; 
     388     font-size: 1rem; 
     389} 
     390#search-menu input[type="submit"]:hover, 
     391#search-menu input[type="submit"]:focus { 
     392     background: #575859; 
     393     color: #fff; 
     394} 
     395#favorites-menu, #blog-menu, #system-menu, #plugins-menu { 
     396     border-bottom: 1px dashed #A2CBE9; 
    318397} 
    319398#favorites-menu h3 { 
    320      color: #333; 
    321      text-transform: none; 
    322 } 
    323 #favorites-menu a { 
    324      color: #333; 
    325 } 
    326 #favorites-menu .active { 
    327      background-color: transparent; 
    328      border: none; 
    329 } 
    330 #favorites-menu .active a { 
    331      font-weight: bold; 
    332      color: #666; 
     399     color: #000; 
     400     font-variant: small-caps; 
     401     padding-top: .6rem; 
    333402} 
    334403/* ------------------------------------------------------------------ footer */ 
    335404#footer { 
    336405     clear: both; 
    337      padding: .75em .75em 0 0; 
     406     padding: .6rem 1.2rem .6rem 0; 
    338407     text-align: right; 
     408     border-top: .1rem solid #ccc; 
    339409} 
    340410#footer p { 
    341411     margin: 0; 
    342412     padding: 0 1em; 
    343      text-align: center; 
    344      font-size: 1.1em; 
    345 } 
    346 #footer a { 
     413     font-size: 1em; 
    347414} 
    348415#footer p span.credit { 
    349      font-size: .85em; 
     416     font-size: 1rem; 
    350417     font-weight: normal; 
    351418} 
     
    355422     width: 18em; 
    356423     margin: 1.5em auto 0; 
    357      font-size: 1.1em; 
     424     font-size: 1.4rem; 
    358425} 
    359426#login-screen h1 { 
    360427     text-indent: -2000px; 
    361      background: transparent url(dotclear-logo2.png) no-repeat top left; 
    362      height: 50px; 
     428     background: transparent url(dc_logos/w-dotclear240.png) no-repeat top left; 
     429     height: 66px; 
    363430     margin-bottom: .5em; 
    364      margin-left: .5em; 
     431     margin-left: 0; 
    365432} 
    366433#login-screen fieldset, #login-screen .fieldset { 
    367      border: 1px solid #999; 
     434     border: 1px solid #A8DC26; 
    368435     padding: 1em 1em 0 1em; 
    369436     border-radius: 4px; 
     437     background: #fff; 
     438} 
     439#login-screen legend { 
     440     border: 1px solid #A8DC26; 
    370441} 
    371442#login-screen input[type=text], #login-screen input[type=password], #login-screen input[type=submit] { 
     
    373444} 
    374445#login-screen #issue { 
    375      margin-left: 1em; 
    376      font-size: 1em; 
     446     margin-left: 1.5rem; 
     447     font-size: 1.2rem; 
    377448} 
    378449#login-screen #issue strong {font-weight: normal;} 
     
    381452/* ------------------------------------------------------------------ dashboard */ 
    382453#dashboard-main { 
    383      float: left; 
    384      overflow: hidden; 
    385      padding: 1em 2% 1em 0; 
    386      width: 70%; 
    387 } 
    388 #dashboard-main.fullwidth { 
    389      width: 100%; 
    390454     padding: 1em 0; 
    391      float: none; 
    392455} 
    393456#icons { 
     
    399462     width: 210px; 
    400463     text-align: center; 
    401      margin: 2em 0 0 0; 
     464     margin: 1em 0 2em; 
     465     padding: 1em 0; 
    402466     display:inline-block; 
     467     vertical-align: top; 
    403468} 
    404469#icons a, 
     
    412477#icons a span { 
    413478     border-bottom: 1px dotted #f90; 
     479     color: #333; 
     480} 
     481#icons a img { 
     482     padding: 2em; 
     483     background: #eee; 
     484     border-radius: 1.6rem; 
     485     box-shadow: 0 3px 3px 0 #ccc; 
     486     margin-bottom: .6rem; 
     487} 
     488#icons a img:hover, #icons a:focus img { 
     489     background-color: #BBDB58; 
    414490} 
    415491#icons a:focus span, #icons a:hover span { 
     
    417493} 
    418494#quick { 
    419      clear: left; 
    420495     margin-top: 2em; 
    421496} 
     
    432507} 
    433508#dashboard-items { 
    434      float: left; 
    435      width: 27%; 
    436      overflow: hidden; 
    437      padding-bottom: 1em; 
    438      padding-top: 3em; 
     509     margin: 3em auto; 
     510     display: table; 
     511     width: 100%; 
     512     border-collapse: collapse; 
     513} 
     514.db-item { 
     515     display: table-cell; 
     516     padding: 1em 3em; 
     517     vertical-align: top; 
     518     border: 1px solid #ccc; 
    439519} 
    440520#dashboard-items img { 
     
    476556} 
    477557#entry-content { 
    478      margin-right: 18em; 
     558     margin-right: 19em; 
     559     margin-left: 0; 
     560} 
     561.multi-part { 
     562     padding-left: 1.2rem; 
     563} 
     564#entry-content label { 
     565     text-transform: uppercase; 
     566     font-weight: bold; 
     567     margin-top: 2em; 
    479568} 
    480569#entry-sidebar { 
    481570     width: 17em; 
    482571     float: right; 
     572} 
     573#entry-sidebar input[type="text"], 
     574#entry-sidebar select { 
     575     width: 14em; /* to prevent inline with label */ 
     576} 
     577.box { 
     578     border-bottom: 1px solid #ddd; 
     579     margin-bottom: 1em; 
    483580} 
    484581#comments { 
     
    518615} 
    519616#media-details { 
     617} 
     618.near-icon { 
    520619     margin-left: 70px; 
     620     margin-bottom: 3em; 
    521621} 
    522622#media-details ul { 
     
    653753/* -------------------------------------------------------------------- Themes */ 
    654754#themes { 
    655      border-bottom: 1px solid #ccc; 
    656      margin: 1em 0; 
     755     margin: 0; 
     756     width: 100%; 
     757     padding: 0; 
     758} 
     759#themes h3 { 
    657760} 
    658761#themes div.theme-details { 
    659      clear: left; 
    660762     border-top: 1px solid #ccc; 
    661      padding: 1em 0; 
     763     padding: 12px; 
     764     display: inline-block; 
     765     vertical-align: top; 
     766     width: 284px; 
     767} 
     768.current-theme { 
     769     background: #eef; 
    662770} 
    663771#themes div.theme-details:hover { 
    664      background: #eee; 
     772     background: #f0f0f0; 
    665773} 
    666774#themes div.theme-details div.theme-shot { 
    667      float: left; 
    668775} 
    669776#themes div.theme-details div.theme-shot img { 
    670777     display: block; 
    671      width: 57px; 
    672      height: 50px; 
    673778     border: 1px solid #ccc; 
     779     margin-bottom: 1.5em; 
    674780} 
    675781#themes div.theme-details div.theme-info { 
    676      margin-left: 67px; 
    677782} 
    678783#themes div.theme-details div.theme-info span.theme-desc { 
     
    683788} 
    684789#themes div.theme-details div.theme-actions { 
    685      margin-left: 67px; 
    686 } 
     790} 
     791#themes-actions { 
     792     border-bottom: 1px solid #999; 
     793     margin-bottom: 3em; 
     794} 
     795.theme-css { 
     796     display: block; 
     797} 
     798 
    687799/* Themes list, JS version */ 
    688800#themes-wrapper { 
     801     display: table; 
     802} 
     803#themes-wrapper #themes { 
     804     display: table-cell; 
     805     vertical-align: top; 
     806     padding-left: 1em; 
    689807} 
    690808#theme-box { 
    691      border: 1px solid #999; 
    692      border-left: none; 
    693      padding: 5px; 
    694      float: right; 
    695      height: 420px; 
    696      width: 320px; 
    697      overflow: auto; 
     809     display: table-cell; 
     810     vertical-align: top; 
     811     padding: 1rem 0;  
     812     width: 312px; 
     813     background: #eef; 
     814     border: 1px solid #ccc; 
     815     border-radius: 3px; 
    698816} 
    699817#theme-box div.theme-shot img { 
    700818     display: block; 
    701      margin: 0 0 0 10px; 
     819     margin: 0 16px; 
    702820     width: 280px; 
    703821     height: 245px; 
     
    705823} 
    706824#theme-box div.theme-info { 
    707      margin: 1em 0 0 10px; 
    708 } 
    709 #theme-box h3 { 
    710      margin: 0; 
    711 } 
    712 #theme-box div.theme-info span { 
    713      display: block; 
     825     margin: 1em 16px; 
     826} 
     827#theme-box h4 { 
     828     color: #000; 
    714829} 
    715830#theme-box span.theme-version { 
     
    724839} 
    725840#theme-box div.theme-actions { 
    726      margin-left: 10px; 
    727 } 
    728 #themes-wrapper #themes { 
    729      border: 1px solid #999; 
    730      overflow: auto; 
    731      height: 420px; 
    732      padding: 5px; 
    733      margin: 0; 
     841     padding: 0 16px; 
    734842} 
    735843#themes div.theme-details-js { 
     
    737845     width: 120px; 
    738846     height: 150px; 
    739      margin: 0 10px 20px; 
    740      padding: 10px 10px 0; 
     847     margin: 0 12px 24px; 
     848     padding: 12px 12px 0; 
    741849     text-align: center; 
    742850     background: #f3f3f3; 
    743      border: 1px solid #f3f3f3; 
     851     border: 1px solid #ddd; 
    744852     cursor: pointer; 
    745853     border-radius: 4px; 
     
    749857} 
    750858#themes div.theme-details-js.theme-selected { 
    751      background: #E5E3DA; 
     859     background: #ddd; 
    752860     border: 1px solid #999; 
    753861} 
     
    757865     border: 1px solid #fff; 
    758866} 
    759 #themes div.theme-details-js h3 { 
    760      font-family: inherit; 
    761      font-weight: normal; 
    762      margin: 0; 
    763      padding: 0; 
    764 } 
    765867/* ----------------------------------------------------------  Plugins list */ 
    766868#plugins td.action { 
     
    776878/* ------------------------------------------------------------------ contextual help */ 
    777879#help { 
    778      margin-top: 2em; 
     880     margin-top: 4em; 
    779881     background: #f5f5f5; 
    780882     z-index: 100; 
    781883} 
    782884#help-button { 
    783      position: fixed; 
    784      top: 3.2em; 
     885     background: transparent url(../images/page_help.png) no-repeat 6px center; 
     886     position: absolute; 
     887     top: 3.6rem; 
    785888     right: 0px; 
     889     padding: 0 2rem 0 3rem; 
    786890     cursor: pointer; 
    787      background: #fc3; 
    788      border: 1px solid #dde; 
    789      border-right: none; 
    790      font-size: 1.1em; 
    791      font-weight: bold; 
    792      text-transform: capitalize; 
    793      padding: .33em .75em .33em 1em; 
    794      border-radius: 1em 0 0 1em; 
    795      color: #444; 
     891     color: #2373A8; 
     892     line-height: 4.2rem; 
     893} 
     894#help-button span { 
     895     padding: .6rem 0 .1rem 0; 
     896     border-bottom: 1px solid #2373A8; 
    796897} 
    797898.help-box { 
     
    803904} 
    804905#content.with-help #help-button { 
    805      right: 282px; 
     906     right: 28.2rem; 
     907     background-color: #f5f5f5; 
     908     position: fixed; 
     909     border-top: 2px solid #FFD478; 
     910     border-left: 2px solid #FFD478; 
     911     border-bottom: 2px solid #FFD478; 
     912     border-bottom-left-radius: 1rem; 
     913     border-top-left-radius: 1rem; 
    806914} 
    807915#content.with-help #help { 
    808916     display: block; 
    809917     position: absolute; 
    810      top: 40px; 
     918     top: 3.6rem; 
    811919     right: 0; 
    812      width: 280px; 
    813      border-left: 2px solid #fc3; 
     920     width: 28rem; 
     921     border-left: 2px solid #FFD478; 
     922     border-top: 2px solid #FFD478; 
    814923     margin-top: 0; 
    815924     padding: 10px 0 0 0; 
     
    829938/* ------------------------------------------------------------------ popups */ 
    830939body.popup #wrapper, body.popup #top { 
    831      margin-top: -1.5em; 
     940     width: 100%; 
     941     padding: 0; 
     942} 
     943body.popup #wrapper { 
    832944     float: none; 
    833 } 
    834 body.popup #top h1 { 
    835      background: transparent; 
     945     margin:0; 
     946     display: block; 
     947} 
     948body.popup h1, body.popup #top { 
     949     margin: 0; 
     950     border-bottom: 1px solid; 
     951     font-weight: normal; 
     952     color: #fff; 
     953     background: #575859; 
     954     font-size: 1.5em; 
     955     text-indent: .6rem; 
     956     line-height: 1.3em; 
    836957} 
    837958body.popup #main { 
    838      margin-left: -35px; 
    839      margin-bottom: 1em; 
     959     margin-bottom: 1em 0; 
    840960} 
    841961body.popup #content { 
    842      margin-left: 35px; 
    843      margin-left: 2em;  /* 3.2 */ 
    844 } 
    845 body.popup #footer { 
    846      display: none; /* 3.2 */ 
     962     margin: 0; 
     963     padding: .6rem 0 !important; 
     964} 
     965body.popup #content h2 { 
     966     margin: 0 0 1em; 
    847967} 
    848968body.popup #footer p { 
    849      margin-left: 35px; 
    850969     border: none; 
    851970} 
     
    859978} 
    860979p.error, p.message, p.static-msg { 
    861      padding-top: 1em; 
    862      padding-bottom: 1em; 
     980     padding-top: 1rem; 
     981     padding-bottom: 1rem; 
    863982} 
    864983div.error, p.error { 
     
    874993div.static-msg a, p.static-msg a { 
    875994     color: #fff; 
     995} 
     996/* ------------------------------------------------------------------ navigation */ 
     997.anchor-nav { 
     998     background: #575859; 
     999     color: #fff; 
     1000     padding: .4rem 1.2rem; 
     1001     float: right; 
     1002} 
     1003.nav_prevnext { 
     1004     margin-bottom: 2em; 
     1005     color: #fff; 
     1006} 
     1007.nav_prevnext a, a.back { 
     1008     border: 1px solid #ddd; 
     1009     padding: .2rem 2rem; 
     1010     border-radius: 1rem; 
     1011     background-color: #f0f0f0; 
     1012} 
     1013a.back:before { 
     1014     content: "\ab\a0"; 
     1015} 
     1016a.onblog_link { 
     1017     color: #333; 
     1018     float: right; 
     1019     border: 1px solid #eee; 
     1020     padding: .2rem 2rem; 
     1021     border-radius: 1rem; 
     1022     background-color: #ffe; 
    8761023} 
    8771024/* ------------------------------------------------------------------ debug */ 
     
    8981045/* -------------------------------------------------------------------- CLASSES COMMUNES */ 
    8991046 
    900 .no-margin { 
    901      margin: 0; 
    902 } 
     1047.no-margin, #entry-content label.no-margin { 
     1048     margin: 0; 
     1049} 
     1050.border-top { 
     1051     border-top: 1px solid #999; 
     1052     padding-top: 1em; 
     1053     margin-top:    1em; 
     1054} 
     1055.fieldset { 
     1056     background: #fff; 
     1057     border: 1px solid #aaa; 
     1058     border-radius: 6px;  
     1059     padding: 1em .7em .5em; 
     1060     margin-bottom: 1em; 
     1061} 
     1062.fieldset h3 { 
     1063     color: #333; 
     1064} 
     1065 
    9031066/* paragraphe pour bouton Nouveau bidule */ 
    9041067p.top-add { 
     
    9911154-------------------------------------------------------- */ 
    9921155table { 
    993      font-size: 1em; 
     1156     font-size: 1.2rem; 
    9941157     border-collapse: collapse; 
    9951158     margin: 0 0 1em 0; 
    9961159} 
    9971160tr.line:hover { 
    998      background: #ddd; 
     1161     background: #f3f3f3; 
    9991162} 
    10001163caption { 
    10011164     color: #333; 
    1002      font-size: 1.2em; 
    10031165     font-weight: bold; 
    10041166     text-align: left; 
     
    10061168} 
    10071169 
    1008 th, td { 
     1170td { 
    10091171     border-width: 0 0 1px 0; 
    10101172     border-style: solid; 
     1173     border-color: #e3e3e3; 
     1174     padding: .4rem .5rem; 
     1175     vertical-align: top; 
     1176} 
     1177th { 
     1178     border-width: 1px 0 1px 0; 
     1179     border-style: solid; 
    10111180     border-color: #ccc; 
    1012      padding: 3px 5px; 
     1181     background: #f3f3ff; 
     1182     padding: .4rem .5rem; 
    10131183     vertical-align: top; 
    1014 } 
    1015 th { 
    10161184     text-align: left; 
    1017      border-bottom-color: #666; 
    10181185} 
    10191186.noborder td, td.noborder, .noborder th, th.noborder { 
    1020      border-width: 0; 
     1187     border-width: 0 0 1px 0; 
     1188     border-color: #ddd; 
     1189     line-height: 2.4rem; 
     1190     padding-bottom: 0; 
     1191} 
     1192.noborder p { 
     1193     margin-bottom: 0; 
    10211194} 
    10221195table .maximal, table.maximal { 
     
    10321205table.settings, table.prefs { 
    10331206     width: 80%; 
     1207     border: 1px solid #999; 
     1208     margin-bottom: 3em;  
     1209} 
     1210table.settings th, table.prefs th { 
     1211     background: #eef; 
    10341212} 
    10351213table.settings th:first-child, table.prefs th:first-child { 
     
    10451223     width: 40%; 
    10461224} 
    1047  
    10481225td.status { 
    10491226     vertical-align: middle; 
     
    10841261     padding-left: 15px; 
    10851262} 
    1086  
    10871263/* ----------------------------------------------------------------- FORMS */ 
    10881264form { 
     
    10911267     padding: 0; 
    10921268} 
    1093 fieldset, .fieldset { 
     1269fieldset { 
    10941270     display: block; 
    10951271     margin: 0 0 1em 0; 
     
    11051281     border-width: 1px; 
    11061282     border-style: solid; 
    1107      border-color: #ccc; 
    1108      background: #f5f5f5; 
     1283     border-color: #333; 
     1284     background: #fff; 
    11091285     margin-bottom: 0.5em; 
     1286     border-radius: 3px; 
    11101287} 
    11111288optgroup { 
     
    11211298     border-width: 1px; 
    11221299     border-style: solid; 
    1123      border-color: #000 #ccc #ccc #000; 
     1300     border-color: #666 #ccc #ccc #999; 
    11241301} 
    11251302input.invalid, textarea.invalid, select.invalid { 
     
    11301307} 
    11311308input, textarea, select, option { 
    1132      font: 1em "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif; 
     1309     font: 100% "DejaVu Sans","Lucida Grande","Lucida Sans Unicode",Arial,sans-serif; 
    11331310} 
    11341311input[type=text], input[type=password], textarea { 
     
    11361313     margin-right: .3em; 
    11371314} 
    1138 input[type=checkbox], input[type=radio] { 
    1139      border: none; 
    1140 } 
    11411315textarea { 
    11421316     padding: 2px 0; 
    11431317} 
    1144  
    1145 input[type=checkbox], input[type=radio] { 
     1318input[type=checkbox], input[type=radio], input[type=file] { 
     1319     border: none; 
    11461320     margin: 0; 
    11471321     padding: 0; 
     
    11621336     font-style:italic; 
    11631337     font-weight: normal; 
     1338     text-transform: none; 
    11641339     color: #666; 
    11651340} 
     
    11731348} 
    11741349p.form-note.info { 
    1175      background: #eef url(info.png) no-repeat .3em .2em; 
    1176      border: 1px solid #99f; 
    1177 } 
    1178 .form-note a {border-bottom: 1px solid #99f;} 
    1179  
     1350     background: #f5eaff url(info.png) no-repeat .3em .2em; 
     1351     border: 1px solid #ddbaff; 
     1352} 
     1353.form-note a {border-bottom: 1px solid #ddbaff;} 
     1354 
     1355label.ib { 
     1356     display: inline-block; 
     1357} 
    11801358label.classic { 
    11811359     display: inline; 
     
    12141392     display: inline; 
    12151393     position: absolute; 
    1216      left: 15em; 
     1394     left: 14.5em; 
    12171395     top: 0; 
    12181396} 
     
    12261404a.form-control { 
    12271405     display: none; 
    1228      font-weight: bold; 
    1229      background: url(magnifier.png) no-repeat 0 0; 
    1230      color: green; 
     1406     background: url(../images/expand.png) no-repeat .4rem center; 
    12311407     padding-left: 20px; 
     1408     color: #000; 
    12321409} 
    12331410.constrained { 
     
    12391416 
    12401417/* --------------------------------------------------------------- buttons */ 
    1241 h2 a.button { 
    1242      color: #333; 
    1243      font-weight: normal; 
    1244      font-size: .75em; 
    1245      vertical-align: middle; 
    1246 } 
    12471418/* commun */ 
    12481419input[type=submit], 
     
    12501421input[type=button], 
    12511422a.button, 
    1252 a.back, 
    12531423a.submit { 
    12541424     display: inline-block; 
     
    12571427     text-align: center; 
    12581428     text-decoration: none; 
    1259      padding: .1em .5em 0 .5em; 
     1429     padding: .1em .5em; 
    12601430     text-shadow: 0 1px 1px rgba(0,0,0,.3); 
    12611431     border-radius: .2em; 
    12621432     margin-bottom: .1em; 
    12631433} 
     1434h4 a.button {font-weight: normal;} 
     1435 
    12641436/* validation */ 
    12651437input[type=submit], 
     
    12861458/* suppression et reset */ 
    12871459a.button, 
    1288 a.back, 
    12891460input[type=submit].reset, 
    12901461input[type=submit].delete { 
     
    12971468     } 
    12981469a.button:hover, 
    1299 a.back:hover, 
    13001470input[type=reset]:hover, 
    13011471input[type=submit].reset:hover, 
    13021472input[type=submit].delete:hover, 
    13031473a.button:focus, 
    1304 a.back:focus, 
    13051474input[type=reset]:focus, 
    13061475input[type=submit].reset:focus, 
     
    13151484input[type=submit].delete { 
    13161485     color: #c00; 
    1317      padding-bottom: .1em; 
     1486     padding-bottom: .2rem; 
    13181487} 
    13191488#entry-content .delete { 
     
    13361505     margin-left: 2em; 
    13371506} 
    1338 a.back:before { 
    1339      content: "\ab\a0"; 
    1340 } 
    1341 a.button.add { 
    1342      border-radius: .5em; 
    1343      margin-bottom: .1em;      
    1344      background: #2C8FD1 url(../images/add.png) no-repeat 6px center; 
    1345      color: #fff; 
    1346      padding: .2em 16px .2em 30px; 
    1347      border: 1px solid #2373A8; 
    1348 } 
    1349 a.button.add:hover, a.button.add:focus { 
    1350      background-color: #2373A8; 
     1507.button.add { 
     1508     background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #9dce2c), color-stop(1, #8cb82b) ); 
     1509     background:-moz-linear-gradient( center top, #9dce2c 5%, #8cb82b 100% ); 
     1510     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9dce2c', endColorstr='#8cb82b'); 
     1511     background-color:#9dce2c; 
     1512     border:1px solid #83c41a; 
     1513     padding:.6rem 1.8rem; 
     1514     color: #000; 
     1515     text-shadow: 1px 1px 0 #BBDB58; 
     1516     font-weight: normal; 
     1517     font-size: 1.4rem; 
     1518} 
     1519.button.add:hover, .button.add:focus { 
     1520     background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #8cb82b), color-stop(1, #9dce2c) ); 
     1521     background:-moz-linear-gradient( center top, #8cb82b 5%, #9dce2c 100% ); 
     1522     filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#8cb82b', endColorstr='#9dce2c'); 
     1523     background-color:#8cb82b; 
     1524     border:1px solid #83c41a; 
     1525} 
     1526.button-add:focus { 
     1527     outline: dotted 1px; 
    13511528} 
    13521529 
     
    13841561} 
    13851562 
     1563/* ------------------------------------------------------- Filters */ 
     1564#filters-form { 
     1565     border: 1px dashed #999; 
     1566     border-radius: .6rem; 
     1567     margin-bottom: 2em; 
     1568     padding: .5em 1em 0; 
     1569} 
     1570#filters-form .table { 
     1571     display: table; 
     1572     width: 100%; 
     1573     padding: 0; 
     1574     margin-bottom: 1em; 
     1575     margin-top: 1.5em; 
     1576} 
     1577#filters-form .cell { 
     1578     padding: 0 2em 0 0; 
     1579     display: table-cell; 
     1580     vertical-align: top; 
     1581} 
     1582#filters-form .filters-options { 
     1583     padding-left: 2em; 
     1584     border-left: 1px solid #ccc; 
     1585} 
     1586#filters-form label.ib, span.ib { 
     1587     width:7em; 
     1588     display: inline-block; 
     1589} 
     1590#filters-form label.ibw, span.ibw { 
     1591     width: 9em; 
     1592     display: inline-block; 
     1593} 
     1594#filters-form select { 
     1595     width: 14em; 
     1596} 
     1597 
     1598/* ---------------------------------------------------- Pagination */ 
     1599.pagination { 
     1600     height: 22px; 
     1601     margin-top: 1em; 
     1602     line-height: 22px; 
     1603     padding: 0 1rem;  
     1604     border: 1px solid #ddd; 
     1605     overflow: hidden;  
     1606     background: #e1e1e1;  
     1607     background: -moz-linear-gradient(center top , #f2f2f2, #e1e1e1);  
     1608     background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e1e1e1));  
     1609     -moz-border-radius: 4px;  
     1610     -webkit-border-radius: 4px;  
     1611     border-radius: 4px;  
     1612     clear: left; 
     1613} 
     1614.pagination a, .pagination strong { 
     1615     height: 20px; 
     1616     border: none; 
     1617     padding: 2px 6px;  
     1618     background-color : transparent; 
     1619     background-position : 50% 50%; 
     1620     background-repeat: no-repeat; 
     1621} 
     1622.pagination a:hover, .pagination strong { 
     1623     border-color : #ccc; 
     1624     background-color: #fff; 
     1625} 
     1626 
    13861627/* --------------------------------------------------------------- password indcator */ 
    13871628.pw-table { 
     
    14231664     width: 150px; 
    14241665} 
     1666 
     1667/* --------------------------------------------------------------------------- 
     1668     Media queries vite fait en attendant la reprise complète du layout 
     1669---------------------------------------------------------------------------- */ 
     1670@media screen and (max-width: 920px) { 
     1671     #top, #top h1 a {width: 42px !important; height:100%; overflow: hidden; 
     1672} 
     1673     #top h1 a:link { 
     1674          background: transparent url(dc_logos/b-dotclear120.png) no-repeat -180px 6px;  
     1675          border-right: 1px solid #ccc; 
     1676     } 
     1677     #top h1 a:hover, #top h1 a:focus { 
     1678          background: url(dc_logos/b-dotclear120.png) no-repeat -180px -94px; 
     1679          border-right: 1px solid #A2CBE9; 
     1680     } 
     1681} 
     1682@media screen and (max-width: 800px) { 
     1683     #top, #info-boxes, #info-box1, #info-box2 { 
     1684          display:inline-block; 
     1685          vertical-align:middle; 
     1686          margin:0; 
     1687          padding:0; 
     1688          line-height: 3.2rem; 
     1689     } 
     1690     #info-box1 {margin-left: 1rem;} 
     1691     #info-box1 select {width: 14rem;} 
     1692     #main-menu, #main, #content, #content h2, #entry-wrapper, #entry-sidebar, #entry-content, .two-cols .col, .two-cols .col:first-child { 
     1693     display:block; 
     1694     width: 98%; 
     1695     margin:0 auto; 
     1696     padding:0; 
     1697     float:none; 
     1698     text-align: left; 
     1699     clear: both; 
     1700     } 
     1701     #content { 
     1702          width: 100%; 
     1703          padding-top: .5em; 
     1704     } 
     1705} 
     1706@media screen and (max-width: 720px) { 
     1707     .smallscreen {display: none;} 
     1708     #help-button {width:20px; overflow: hidden;} 
     1709     #info-box2 {float:none;} 
     1710     #dashboard-items div {display: block;margin-bottom: 1em; padding: 0 1em;} 
     1711} 
     1712@media screen and (max-width: 492px) { 
     1713     #header {height:3.6rem;} 
     1714     #wrapper {font-size: 1.6rem;} 
     1715     .page-title, #info-boxes, .media-item {display: inline-block;} 
     1716     div.media-list .media-item {width: 90%; float: none} 
     1717     #info-box1 select {width: 12rem; margin-right: .6rem;} 
     1718     #info-box1 p.nomobile, label.nomobile {display: none;} 
     1719     #help-button {height:26px; width:26px; background-color: #A2CBE9; padding: 0; margin:0;font-size: 1rem;line-height: 68px} 
     1720} 
  • admin/update.php

    r1358 r1468  
    2727 
    2828$updater = new dcUpdate(DC_UPDATE_URL,'dotclear',DC_UPDATE_VERSION,DC_TPL_CACHE.'/versions'); 
    29 $new_v = $updater->check(DC_VERSION); 
     29$new_v = $updater->check(DC_VERSION, !empty($_GET['nocache'])); 
    3030$zip_file = $new_v ? DC_BACKUP_PATH.'/'.basename($updater->getFileURL()) : ''; 
    3131$version_info = $new_v ? $updater->getInfoURL() : ''; 
     
    168168-------------------------------------------------------- */ 
    169169dcPage::open(__('Dotclear update'), 
    170      (!$step ? dcPage::jsPageTabs($default_tab) : ''), 
     170     (!$step ?  
     171          dcPage::jsPageTabs($default_tab). 
     172          dcPage::jsLoad('js/_update.js') 
     173          : ''), 
    171174     dcPage::breadcrumb( 
    172175          array( 
     
    176179); 
    177180 
     181if (!$core->error->flag()) { 
     182     echo '<h2>'.__('Dotclear update').'</h2>'; 
     183      
     184     if (!empty($_GET['nocache'])) { 
     185          dcPage::message(__('Manual checking of update done successfully.')); 
     186     } 
     187} 
     188 
    178189if (!$step) 
    179190{ 
     
    181192     if (empty($new_v)) 
    182193     { 
    183           echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>'; 
     194          echo '<p><strong>'.__('No newer Dotclear version available.').'</strong></p>'. 
     195          '<form action="'.$p_url.'" method="get">'. 
     196          '<p><input type="hidden" name="nocache" value="1" />'. 
     197          '<input type="submit" value="'.__('Force checking update Dotclear').'" /></p>'. 
     198          '</form>'; 
    184199     } 
    185200     else 
  • admin/update.php

    r1462 r1468  
    171171          dcPage::jsPageTabs($default_tab). 
    172172          dcPage::jsLoad('js/_update.js') 
    173      : '') 
     173          : ''), 
     174     dcPage::breadcrumb( 
     175          array( 
     176               __('System') => '', 
     177               '<span class="page-title">'.__('Dotclear update').'</span>' => '' 
     178          )) 
    174179); 
    175180 
  • inc/admin/lib.dc.page.php

    r1461 r1468  
    164164          if ($core->error->flag()) { 
    165165               echo 
    166                '<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</p></strong>'. 
     166               '<div class="error"><p><strong>'.(count($core->error->getErrors()) > 1 ? __('Errors:') : __('Error:')).'</strong></p>'. 
    167167               $core->error->toHTML(). 
    168168               '</div>'; 
     
    508508          self::jsVar('dotclear.msg.confirm_delete_theme', 
    509509               __('Are you sure you want to delete "%s" theme?')). 
     510          self::jsVar('dotclear.msg.confirm_delete_backup', 
     511               __('Are you sure you want to delete this backup?')). 
    510512          self::jsVar('dotclear.msg.zip_file_content', 
    511513               __('Zip file content')). 
  • inc/admin/lib.dc.page.php

    r1462 r1468  
    4949 
    5050     # Top of admin page 
    51      public static function open($title='', $head='') 
     51     public static function open($title='',$head='',$breadcrumb='') 
    5252     { 
    5353          global $core; 
     
    7373               } 
    7474               $blog_box = 
    75                '<p><label for="switchblog" class="classic">'. 
    76                __('Blogs:').' '. 
     75               '<p><label for="switchblog" class="classic nomobile">'. 
     76               __('Blogs:').'</label> '. 
    7777               $core->formNonce(). 
    7878               form::combo('switchblog',$blogs,$core->blog->id). 
    79                '</label></p>'. 
     79               '</p>'. 
    8080               '<noscript><p><input type="submit" value="'.__('ok').'" /></p></noscript>'; 
    8181          } 
     
    9393          "<head>\n". 
    9494          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 
    95           '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 
    96  
    9795          '  <meta name="ROBOTS" content="NOARCHIVE,NOINDEX,NOFOLLOW" />'."\n". 
    9896          '  <meta name="GOOGLEBOT" content="NOSNIPPET" />'."\n". 
     97          '  <meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n". 
     98          '  <title>'.$title.' - '.html::escapeHTML($core->blog->name).' - '.html::escapeHTML(DC_VENDOR_NAME).' - '.DC_VERSION.'</title>'."\n". 
     99 
    99100 
    100101          self::jsLoadIE7(). 
     
    133134          '<form action="index.php" method="post">'. 
    134135          $blog_box. 
    135           '<p><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'. 
     136          '<p class="nomobile"><a href="'.$core->blog->url.'" onclick="window.open(this.href);return false;" title="'.__('Go to site').' ('.__('new window').')'.'">'.__('Go to site').' <img src="images/outgoing.png" alt="" /></a>'. 
    136137          '</p></form>'. 
    137138          '</div>'. 
    138139          '<div id="info-box2">'. 
    139           '<a'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="index.php">'.__('My dashboard').'</a>'. 
    140           '<span> | </span><a'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' class="active"' : '').' href="preferences.php">'.__('My preferences').'</a>'. 
    141           '<span> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'. 
     140          '<a class="smallscreen'.(preg_match('/index.php$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="index.php">'.__('My dashboard').'</a>'. 
     141          '<span class="smallscreen"> | </span><a class="smallscreen'.(preg_match('/preferences.php(\?.*)?$/',$_SERVER['REQUEST_URI']) ? ' active' : '').'" href="preferences.php">'.__('My preferences').'</a>'. 
     142          '<span class="smallscreen"> | </span><a href="index.php?logout=1" class="logout">'.sprintf(__('Logout %s'),$core->auth->userID()).' <img src="images/logout.png" alt="" /></a>'. 
    142143          '</div>'. 
    143144          '</div>'. 
     
    158159          } 
    159160 
     161          // Display breadcrumb (if given) before any error message 
     162          echo $breadcrumb; 
     163 
    160164          if ($core->error->flag()) { 
    161165               echo 
     
    176180          "</div>\n".         // End of #main 
    177181 
    178           '<div id="main-menu">'."\n"; 
     182          '<div id="main-menu">'."\n". 
     183 
     184          '<form id="search-menu" action="search.php" method="get">'. 
     185          '<p><label for="q" class="hidden">'.__('Search:').' </label>'.form::field('q',30,255,''). 
     186          '<input type="submit" value="'.__('OK').'" /></p>'. 
     187          '</form>'; 
    179188 
    180189          foreach ($menu as $k => $v) { 
     
    193202          echo 
    194203          '</div>'."\n".      // End of #main-menu 
    195           '<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logo_footer.png" alt="'.$text.'" /></a></div>'."\n". 
     204          '<div id="footer"><a href="http://dotclear.org/" title="'.$text.'"><img src="style/dc_logos/w-dotclear90.png" alt="'.$text.'" /></a></div>'."\n". 
    196205          "</div>\n";         // End of #wrapper 
    197206 
     
    204213     } 
    205214 
    206      public static function openPopup($title='', $head='') 
     215     public static function openPopup($title='',$head='',$breadcrumb='') 
    207216     { 
    208217          global $core; 
     
    216225          'xml:lang="'.$core->auth->getInfo('user_lang').'" '. 
    217226          'lang="'.$core->auth->getInfo('user_lang').'">'."\n". 
     227          '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n". 
    218228          "<head>\n". 
    219229          '  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'."\n". 
     
    241251          '<body id="dotclear-admin" class="popup">'."\n". 
    242252 
    243           '<div id="top"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n"; 
     253          '<div id="top hidden"><h1>'.DC_VENDOR_NAME.'</h1></div>'."\n"; 
    244254 
    245255          echo 
     
    247257          '<div id="main">'."\n". 
    248258          '<div id="content">'."\n"; 
     259 
     260          // display breadcrumb if given 
     261          echo $breadcrumb; 
    249262 
    250263          if ($core->error->flag()) { 
     
    264277          "</div>\n".         // End of #wrapper 
    265278          '</body></html>'; 
     279     } 
     280 
     281     public static function breadcrumb($elements=null,$with_home_link=true,$echo=false) 
     282     { 
     283          // First item of array elements should be blog's name, System or Plugins 
     284          $res = '<h2>'.($with_home_link ? 
     285               '<a class="go_home" href="index.php"><img src="style/dashboard.png" alt="'.__('Go to dashboard').'" /></a>' : 
     286               '<img src="style/dashboard-alt.png" alt="" />'); 
     287          $index = 0; 
     288          foreach ($elements as $element => $url) { 
     289               $res .= ($with_home_link ? ($index == 1 ? ' : ' : ' &rsaquo; ') : ($index == 0 ? ' ' : ' &rsaquo; ')). 
     290                    ($url ? '<a href="'.$url.'">' : '').$element.($url ? '</a>' : ''); 
     291               $index++; 
     292          } 
     293          $res .= '</h2>'; 
     294          if ($echo) { 
     295               echo $res; 
     296          } 
     297          return $res; 
    266298     } 
    267299 
     
    333365     { 
    334366          $args = func_get_args(); 
     367 
     368          $args = new ArrayObject($args); 
     369 
     370          # --BEHAVIOR-- adminPageHelpBlock 
     371          $GLOBALS['core']->callBehavior('adminPageHelpBlock',$args); 
     372 
    335373          if (empty($args)) { 
    336374               return; 
     
    411449 
    412450          self::jsVar('dotclear.msg.help', 
    413                __('help')). 
     451               __('Help about this page')). 
     452          self::jsVar('dotclear.msg.help_hide', 
     453               __('Hide')). 
    414454          self::jsVar('dotclear.msg.no_selection', 
    415455               __('no selection')). 
     
    436476          self::jsVar('dotclear.msg.confirm_delete_post', 
    437477               __("Are you sure you want to delete this entry?")). 
     478          self::jsVar('dotclear.msg.click_to_unlock', 
     479               __("Click here to unlock the field")). 
    438480          self::jsVar('dotclear.msg.confirm_spam_delete', 
    439481               __('Are you sure you want to delete all spams?')). 
     
    478520          self::jsVar('dotclear.msg.confirm_change_post_format', 
    479521               __('You have unsaved changes. Switch post format will loose these changes. Proceed anyway?')). 
    480           self::jsVar('dotclear.msg.confirm_change_post_format_noconvert', 
    481                __("Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?")). 
    482522          self::jsVar('dotclear.msg.load_enhanced_uploader', 
    483523               __('Loading enhanced uploader, please wait.')). 
     
    489529     { 
    490530          return 
    491           '<!--[if lt IE 8]>'."\n". 
    492           self::jsLoad('js/ie7/IE8.js'). 
     531          '<!--[if lt IE 9]>'."\n". 
     532          self::jsLoad('js/ie7/IE9.js'). 
    493533          '<link rel="stylesheet" type="text/css" href="style/iesucks.css" />'."\n". 
    494534          '<![endif]-->'."\n"; 
     
    692732     '<link rel="stylesheet" type="text/css" href="style/jsUpload/style.css" />'."\n". 
    693733 
    694      '<script id="template-upload" type="text/x-tmpl"> 
    695      {% for (var i=0, file; file=o.files[i]; i++) { %} 
    696      <div class="template-upload fade"> 
    697      <div class="upload-file"> 
    698      <div class="upload-fileinfo"> 
    699           <span class="upload-filename">{%=file.name%}</span> 
    700           <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
    701           <span class="upload-filecancel cancel">'.__('Cancel').'</span> 
    702           {% if (!o.files.error && !i && !o.options.autoUpload) { %} 
    703           <input type="submit" class="button start"  value="'.__('Send').'"/> 
    704           {% } %} 
    705           <span class="upload-filemsg"></span> 
    706      </div> 
    707      {% if (!o.files.error) { %} 
    708      <div class="upload-progress progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div> 
    709      {% } %} 
    710      </div> 
    711      {% } %} 
    712      </script> 
    713      <!-- The template to display files available for download --> 
    714      <script id="template-download" type="text/x-tmpl"> 
    715      {% for (var i=0, file; file=o.files[i]; i++) { %} 
    716      <div class="template-download fade"> 
    717      <div class="upload-file"> 
    718      <div class="upload-fileinfo"> 
    719           <span class="upload-filename">{%=file.name%}</span> 
    720           <span class="upload-filesize">({%=o.formatFileSize(file.size)%})</span> 
    721           <span class="upload-filemsg{% if (file.error) { %} upload-error{% } %}"> 
    722           {% if (file.error) { %} 
    723           '.__('Error:').' {%=file.error%} 
    724           {% } else { %} 
    725           '.__('File successfully uploaded.').' 
    726           {% } %} 
    727           </span> 
    728      </div> 
    729      <div class="upload-progress"> 
    730           {% if (!file.error) { %} 
    731           <div class="bar" style="width:100%;">100%</div> 
    732           {% } %} 
    733      </div> 
    734      </div> 
    735      {% } %} 
    736      </script>'. 
    737  
    738      self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
    739      self::jsLoad('js/jsUpload/tmpl.js'). 
    740      self::jsLoad('js/jsUpload/load-image.js'). 
    741      self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
    742      self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
    743      self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
    744      self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
    745      self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'). 
    746  
    747734     '<script type="text/javascript">'."\n". 
    748735     "//<![CDATA[\n". 
     
    761748     self::jsVar('dotclear.jsUpload.msg.clean',__('Clean')). 
    762749     self::jsVar('dotclear.jsUpload.msg.upload',__('Upload')). 
     750     self::jsVar('dotclear.jsUpload.msg.send',__('Send')). 
     751     self::jsVar('dotclear.jsUpload.msg.file_successfully_uploaded',__('File successfully uploaded.')). 
    763752     self::jsVar('dotclear.jsUpload.msg.no_file_in_queue',__('No file in queue.')). 
    764753     self::jsVar('dotclear.jsUpload.msg.file_in_queue',__('1 file in queue.')). 
     
    767756     self::jsVar('dotclear.jsUpload.base_url',$base_url). 
    768757     "\n//]]>\n". 
    769      "</script>\n"; 
     758     "</script>\n". 
     759 
     760     self::jsLoad('js/jsUpload/vendor/jquery.ui.widget.js'). 
     761     self::jsLoad('js/jsUpload/tmpl.js'). 
     762     self::jsLoad('js/jsUpload/template-upload.js'). 
     763     self::jsLoad('js/jsUpload/template-download.js'). 
     764     self::jsLoad('js/jsUpload/load-image.js'). 
     765     self::jsLoad('js/jsUpload/jquery.iframe-transport.js'). 
     766     self::jsLoad('js/jsUpload/jquery.fileupload.js'). 
     767     self::jsLoad('js/jsUpload/jquery.fileupload-process.js'). 
     768     self::jsLoad('js/jsUpload/jquery.fileupload-resize.js'). 
     769     self::jsLoad('js/jsUpload/jquery.fileupload-ui.js'); 
    770770} 
    771771 
  • inc/admin/lib.pager.php

    r1415 r1468  
    8787               html::escapeHTML($this->rs->cat_title)); 
    8888          } else { 
    89                $cat_title = __('None'); 
     89               $cat_title = __('(No cat)'); 
    9090          } 
    9191           
  • inc/admin/lib.pager.php

    r1364 r1468  
    5858               } 
    5959                
    60                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     60               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    6161                
    6262               $blocks = explode('%s',$html_block); 
     
    7171               echo $blocks[1]; 
    7272                
    73                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     73               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    7474          } 
    7575     } 
     
    9393          switch ($this->rs->post_status) { 
    9494               case 1: 
    95                     $img_status = sprintf($img,__('published'),'check-on.png'); 
     95                    $img_status = sprintf($img,__('Published'),'check-on.png'); 
    9696                    break; 
    9797               case 0: 
    98                     $img_status = sprintf($img,__('unpublished'),'check-off.png'); 
     98                    $img_status = sprintf($img,__('Unpublished'),'check-off.png'); 
    9999                    break; 
    100100               case -1: 
    101                     $img_status = sprintf($img,__('scheduled'),'scheduled.png'); 
     101                    $img_status = sprintf($img,__('Scheduled'),'scheduled.png'); 
    102102                    break; 
    103103               case -2: 
    104                     $img_status = sprintf($img,__('pending'),'check-wrn.png'); 
     104                    $img_status = sprintf($img,__('Pending'),'check-wrn.png'); 
    105105                    break; 
    106106          } 
     
    108108          $protected = ''; 
    109109          if ($this->rs->post_password) { 
    110                $protected = sprintf($img,__('protected'),'locker.png'); 
     110               $protected = sprintf($img,__('Protected'),'locker.png'); 
    111111          } 
    112112           
    113113          $selected = ''; 
    114114          if ($this->rs->post_selected) { 
    115                $selected = sprintf($img,__('selected'),'selected.png'); 
     115               $selected = sprintf($img,__('Selected'),'selected.png'); 
    116116          } 
    117117           
     
    170170               } 
    171171                
    172                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     172               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    173173                
    174174               $blocks = explode('%s',$html_block); 
     
    183183               echo $blocks[1]; 
    184184                
    185                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     185               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    186186          } 
    187187     } 
     
    192192          switch ($this->rs->post_status) { 
    193193               case 1: 
    194                     $img_status = sprintf($img,__('published'),'check-on.png'); 
     194                    $img_status = sprintf($img,__('Published'),'check-on.png'); 
    195195                    break; 
    196196               case 0: 
    197                     $img_status = sprintf($img,__('unpublished'),'check-off.png'); 
     197                    $img_status = sprintf($img,__('Unpublished'),'check-off.png'); 
    198198                    break; 
    199199               case -1: 
    200                     $img_status = sprintf($img,__('scheduled'),'scheduled.png'); 
     200                    $img_status = sprintf($img,__('Scheduled'),'scheduled.png'); 
    201201                    break; 
    202202               case -2: 
    203                     $img_status = sprintf($img,__('pending'),'check-wrn.png'); 
     203                    $img_status = sprintf($img,__('Pending'),'check-wrn.png'); 
    204204                    break; 
    205205          } 
     
    207207          $protected = ''; 
    208208          if ($this->rs->post_password) { 
    209                $protected = sprintf($img,__('protected'),'locker.png'); 
     209               $protected = sprintf($img,__('Protected'),'locker.png'); 
    210210          } 
    211211           
    212212          $selected = ''; 
    213213          if ($this->rs->post_selected) { 
    214                $selected = sprintf($img,__('selected'),'selected.png'); 
     214               $selected = sprintf($img,__('Selected'),'selected.png'); 
    215215          } 
    216216           
     
    267267               } 
    268268                
    269                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     269               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    270270                
    271271               $blocks = explode('%s',$html_block); 
     
    280280               echo $blocks[1]; 
    281281                
    282                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     282               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    283283          } 
    284284     } 
     
    306306          switch ($this->rs->comment_status) { 
    307307               case 1: 
    308                     $img_status = sprintf($img,__('published'),'check-on.png'); 
     308                    $img_status = sprintf($img,__('Published'),'check-on.png'); 
    309309                    break; 
    310310               case 0: 
    311                     $img_status = sprintf($img,__('unpublished'),'check-off.png'); 
     311                    $img_status = sprintf($img,__('Unpublished'),'check-off.png'); 
    312312                    break; 
    313313               case -1: 
    314                     $img_status = sprintf($img,__('pending'),'check-wrn.png'); 
     314                    $img_status = sprintf($img,__('Pending'),'check-wrn.png'); 
    315315                    break; 
    316316               case -2: 
    317                     $img_status = sprintf($img,__('junk'),'junk.png'); 
     317                    $img_status = sprintf($img,__('Junk'),'junk.png'); 
    318318                    break; 
    319319          } 
     
    374374               } 
    375375                
    376                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     376               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    377377                
    378378               $blocks = explode('%s',$html_block); 
     
    387387               echo $blocks[1]; 
    388388                
    389                echo '<p>'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
     389               echo '<p class="pagination">'.__('Page(s)').' : '.$pager->getLinks().'</p>'; 
    390390          } 
    391391     } 
  • inc/core/class.dc.blog.php

    r1353 r1468  
    634634     private function checkCategory($title,$url,$id=null) 
    635635     { 
    636           $strReq = 'SELECT cat_id '. 
    637                     'FROM '.$this->prefix.'category '. 
    638                     "WHERE cat_url = '".$this->con->escape($url)."' ". 
    639                     "AND blog_id = '".$this->con->escape($this->id)."' "; 
    640            
    641           if ($id !== null) { 
    642                $strReq .= 'AND cat_id <> '.(integer) $id.' '; 
    643           } 
     636          # Let's check if URL is taken... 
     637          $strReq =  
     638               'SELECT cat_url FROM '.$this->prefix.'category '. 
     639               "WHERE cat_url = '".$this->con->escape($url)."' ". 
     640               ($id ? 'AND cat_id <> '.(integer) $id. ' ' : ''). 
     641               "AND blog_id = '".$this->con->escape($this->id)."' ". 
     642               'ORDER BY cat_url DESC'; 
    644643           
    645644          $rs = $this->con->select($strReq); 
    646645           
    647           if (!$rs->isEmpty()) { 
    648                throw new Exception(__('Category URL must be unique.')); 
    649           } 
     646          if (!$rs->isEmpty()) 
     647          { 
     648               if ($this->con->driver() == 'mysql') { 
     649                    $clause = "REGEXP '^".$this->con->escape($url)."[0-9]+$'"; 
     650               } elseif ($this->con->driver() == 'pgsql') { 
     651                    $clause = "~ '^".$this->con->escape($url)."[0-9]+$'"; 
     652               } else { 
     653                    $clause = "LIKE '".$this->con->escape($url)."%'"; 
     654               } 
     655               $strReq =  
     656                    'SELECT cat_url FROM '.$this->prefix.'category '. 
     657                    "WHERE cat_url ".$clause.' '. 
     658                    ($id ? 'AND cat_id <> '.(integer) $id. ' ' : ''). 
     659                    "AND blog_id = '".$this->con->escape($this->id)."' ". 
     660                    'ORDER BY cat_url DESC '; 
     661                
     662               $rs = $this->con->select($strReq); 
     663               $a = array(); 
     664               while ($rs->fetch()) { 
     665                    $a[] = $rs->cat_url; 
     666               } 
     667                
     668               natsort($a); 
     669               $t_url = end($a); 
     670                
     671               if (preg_match('/(.*?)([0-9]+)$/',$t_url,$m)) { 
     672                    $i = (integer) $m[2]; 
     673                    $url = $m[1]; 
     674               } else { 
     675                    $i = 1; 
     676               } 
     677                
     678               return $url.($i+1); 
     679          } 
     680           
     681          # URL is empty? 
     682          if ($url == '') { 
     683               throw new Exception(__('Empty category URL')); 
     684          } 
     685           
     686          return $url; 
    650687     } 
    651688      
     
    669706           
    670707          # Check if title or url are unique 
    671           $this->checkCategory($cur->cat_title,$cur->cat_url,$id); 
     708          $cur->cat_url = $this->checkCategory($cur->cat_title,$cur->cat_url,$id); 
    672709           
    673710          if ($cur->cat_desc !== null) { 
  • inc/core/class.dc.blog.php

    r1429 r1468  
    8181               $this->desc = $b->blog_desc; 
    8282               $this->url = $b->blog_url; 
    83                $this->host = preg_replace('|^([a-z]{3,}://)(.*?)/.*$|','$1$2',$this->url); 
     83               $this->host = http::getHostFromURL($this->url); 
    8484               $this->creadt = strtotime($b->blog_creadt); 
    8585               $this->upddt = strtotime($b->blog_upddt); 
     
    9191               $this->public_path = path::fullFromRoot($this->settings->system->public_path,DC_ROOT); 
    9292                
    93                $this->post_status['-2'] = __('pending'); 
    94                $this->post_status['-1'] = __('scheduled'); 
    95                $this->post_status['0'] = __('unpublished'); 
    96                $this->post_status['1'] = __('published'); 
    97                 
    98                $this->comment_status['-2'] = __('junk'); 
    99                $this->comment_status['-1'] = __('pending'); 
    100                $this->comment_status['0'] = __('unpublished'); 
    101                $this->comment_status['1'] = __('published'); 
     93               $this->post_status['-2'] = __('Pending'); 
     94               $this->post_status['-1'] = __('Scheduled'); 
     95               $this->post_status['0'] = __('Unpublished'); 
     96               $this->post_status['1'] = __('Published'); 
     97                
     98               $this->comment_status['-2'] = __('Junk'); 
     99               $this->comment_status['-1'] = __('Pending'); 
     100               $this->comment_status['0'] = __('Unpublished'); 
     101               $this->comment_status['1'] = __('Published'); 
    102102                
    103103               # --BEHAVIOR-- coreBlogConstruct 
     
    203203     @param    ids       <b>mixed</b>        Comment(s) ID(s) 
    204204     @param    del       <b>boolean</b>      If comment is delete, set this to true 
    205      @param    affected_posts      <b>mixed</b>        Posts(s) ID(s) 
    206      */ 
    207      public function triggerComments($ids, $del=false, $affected_posts=null) 
     205     */ 
     206     public function triggerComments($ids,$del=false) 
    208207     { 
    209208          $co_ids = dcUtils::cleanIds($ids); 
    210           $a_ids = dcUtils::cleanIds($affected_posts); 
    211           $a_tbs = array(); 
    212209           
    213210          # a) Retrieve posts affected by comments edition 
    214           if (empty($a_ids)) { 
    215                $strReq =  
    216                     'SELECT post_id, comment_trackback '. 
    217                     'FROM '.$this->prefix.'comment '. 
    218                     'WHERE comment_id'.$this->con->in($co_ids). 
    219                     'GROUP BY post_id,comment_trackback'; 
    220                 
    221                $rs = $this->con->select($strReq); 
    222                 
    223                while ($rs->fetch()) { 
    224                     $a_ids[] = (integer) $rs->post_id; 
    225                     $a_tbs[] = (integer) $rs->comment_trackback; 
    226                } 
     211          $strReq =  
     212               'SELECT post_id, comment_trackback '. 
     213               'FROM '.$this->prefix.'comment '. 
     214               'WHERE comment_id'.$this->con->in($co_ids). 
     215               'GROUP BY post_id,comment_trackback'; 
     216           
     217          $rs = $this->con->select($strReq); 
     218           
     219          $a_ids = $a_tbs = array(); 
     220          while ($rs->fetch()) { 
     221               $a_ids[] = (integer) $rs->post_id; 
     222               $a_tbs[] = (integer) $rs->comment_trackback; 
    227223          } 
    228224           
     
    259255          { 
    260256               $nb_comment = $nb_trackback = 0; 
    261                //$cur->nb_comment = $nb_comment; 
    262257               foreach($b_ids as $b_key => $b_id) 
    263258               { 
     
    510505          $this->core->callBehavior('coreBeforeCategoryCreate',$this,$cur); 
    511506           
    512           $id = $this->categories()->addNode($cur,$parent); 
    513           # Update category's cursor 
    514           $rs = $this->getCategory($id); 
    515           if (!$rs->isEmpty()) { 
    516                $cur->cat_lft = $rs->cat_lft; 
    517                $cur->cat_rgt = $rs->cat_rgt; 
    518           } 
     507          $this->categories()->addNode($cur,$parent); 
    519508           
    520509          # --BEHAVIOR-- coreAfterCategoryCreate 
     
    22292218          $co_ids = dcUtils::cleanIds($ids); 
    22302219           
    2231           if (empty($co_ids)) { 
     2220          if (empty($ids)) { 
    22322221               throw new Exception(__('No such comment ID')); 
    2233           } 
    2234            
    2235           # Retrieve posts affected by comments edition 
    2236           $affected_posts = array(); 
    2237           $strReq = 
    2238                'SELECT distinct(post_id) '. 
    2239                'FROM '.$this->prefix.'comment '. 
    2240                'WHERE comment_id'.$this->con->in($co_ids); 
    2241            
    2242           $rs = $this->con->select($strReq); 
    2243            
    2244           while ($rs->fetch()) { 
    2245                $affected_posts[] = (integer) $rs->post_id; 
    22462222          } 
    22472223           
     
    22732249           
    22742250          $this->con->execute($strReq); 
    2275           $this->triggerComments($co_ids, true, $affected_posts); 
     2251          $this->triggerComments($co_ids,true); 
    22762252          $this->triggerBlog(); 
    22772253     } 
     
    23282304           
    23292305          if ($cur->comment_site !== null && $cur->comment_site != '') { 
    2330                if (!preg_match('|^http(s?)://|i',$cur->comment_site, $matches)) { 
     2306               if (!preg_match('|^http(s?)://|',$cur->comment_site)) { 
    23312307                    $cur->comment_site = 'http://'.$cur->comment_site; 
    2332                }else{ 
    2333                     $cur->comment_site = strtolower($matches[0]).substr($cur->comment_site, strlen($matches[0])); 
    23342308               } 
    23352309          } 
  • inc/core/class.dc.media.php

    r1280 r1468  
    3030      
    3131     public $thumb_tp = '%s/.%s_%s.jpg';     ///< <b>string</b> Thumbnail file pattern 
     32     public $thumb_tp_alpha = '%s/.%s_%s.png'; ///< <b>string</b> Thumbnail file pattern (with alpha layer) 
    3233      
    3334     /** 
     
    298299               $f->media_thumb = array(); 
    299300               $p = path::info($f->relname); 
    300                $thumb = sprintf($this->thumb_tp,$this->root.'/'.$p['dirname'],$p['base'],'%s'); 
    301                $thumb_url = sprintf($this->thumb_tp,$this->root_url.$p['dirname'],$p['base'],'%s'); 
     301               $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     302               $thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root.'/'.$p['dirname'],$p['base'],'%s'); 
     303               $thumb_url = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$this->root_url.$p['dirname'],$p['base'],'%s'); 
    302304                
    303305               # Cleaner URLs 
     
    920922           
    921923          $p = path::info($file); 
    922           $thumb = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s'); 
     924          $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     925          $thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s'); 
    923926           
    924927          try 
     
    939942                         $rate = ($s[0] < 100 ? 95 : ($s[0] < 600 ? 90 : 85)); 
    940943                         $img->resize($s[0],$s[0],$s[1]); 
    941                          $img->output('jpeg',$thumb_file,$rate); 
     944                         $img->output(($alpha ? 'png' : 'jpeg'),$thumb_file,$rate); 
    942945                         $img->loadImage($file); 
    943946                    } 
     
    958961          { 
    959962               $p = path::info($file->relname); 
    960                $thumb_old = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s'); 
     963               $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     964               $thumb_old = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s'); 
    961965                
    962966               $p = path::info($newFile->relname); 
    963                $thumb_new = sprintf($this->thumb_tp,$p['dirname'],$p['base'],'%s'); 
     967               $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     968               $thumb_new = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),$p['dirname'],$p['base'],'%s'); 
    964969                
    965970               foreach ($this->thumb_sizes as $suffix => $s) { 
     
    974979     { 
    975980          $p = path::info($f); 
    976           $thumb = sprintf($this->thumb_tp,'',$p['base'],'%s'); 
     981          $alpha = ($p['extension'] == 'png') || ($p['extension'] == 'PNG'); 
     982          $thumb = sprintf(($alpha ? $this->thumb_tp_alpha : $this->thumb_tp),'',$p['base'],'%s'); 
    977983           
    978984          foreach ($this->thumb_sizes as $suffix => $s) { 
  • inc/core/class.dc.media.php

    r1381 r1468  
    499499     @param    post_id   <b>integer</b>      Post ID 
    500500     @param    media_id  <b>integer</b>      Optionnal media ID 
    501      @param    return_rs <b>boolean</b>      Whether to return a resultset (true) or an array (false, default value). 
    502      @return   <b>array</b> Array or ResultSet of fileItems 
    503      */ 
    504      public function getPostMedia($post_id,$media_id=null,$return_rs=false) 
     501     @return   <b>array</b> Array of fileItems 
     502     */ 
     503     public function getPostMedia($post_id,$media_id=null) 
    505504     { 
    506505          $params = array( 
     
    518517               $f = $this->fileRecord($rs); 
    519518               if ($f !== null) { 
    520                     $res[] = $return_rs ? new ArrayObject($f) : $f; 
    521                } 
    522           } 
    523            
    524           return $return_rs ? staticRecord::newFromArray($res) : $res; 
     519                    $res[] = $f; 
     520               } 
     521          } 
     522           
     523          return $res; 
    525524     } 
    526525      
  • inc/prepend.php

    r1352 r1468  
    123123# Constants 
    124124define('DC_ROOT',path::real(dirname(__FILE__).'/..')); 
    125 define('DC_VERSION','2.5.3-dev'); 
     125define('DC_VERSION','2.6-dev'); 
    126126define('DC_DIGESTS',dirname(__FILE__).'/digests'); 
    127127define('DC_L10N_ROOT',dirname(__FILE__).'/../locales'); 
  • locales/en/main.po

    r1425 r1468  
    21392139msgstr "" 
    21402140 
     2141msgid "Are you sure you want to delete this backup?" 
     2142msgstr "" 
     2143 
    21412144msgid "Zip file content" 
    21422145msgstr "" 
     
    27872790msgid "The following error was encountered while trying to read the database:" 
    27882791msgstr "" 
     2792 
     2793msgid "(No cat)" 
     2794msgstr "(none)" 
  • locales/en/main.po

    r1462 r1468  
    753753msgstr "" 
    754754 
    755 msgid "You have one spam comments." 
     755msgid "You have one spam comment." 
    756756msgstr "" 
    757757 
     
    21572157msgstr "" 
    21582158 
    2159 msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?" 
    2160 msgstr "" 
    2161  
    21622159msgid "Loading enhanced uploader, please wait." 
    21632160msgstr "" 
  • locales/fr/main.po

    r1454 r1468  
    10381038#, fuzzy, php-format 
    10391039msgid "Path <strong>%s</strong> is not writable." 
    1040 msgstr "Le répertoire de cache %s n'est pas accessible en écriture." 
     1040msgstr "Le répertoire de cache <strong>%s</strong> n'est pas accessible en écriture." 
    10411041 
    10421042#, fuzzy 
     
    11931193msgstr "Gestionnaire de médias" 
    11941194 
     1195msgid "Go to %s folder" 
     1196msgstr "Aller au dossier %s" 
     1197 
     1198msgid "Media details of %s" 
     1199msgstr "Détails du média %s" 
     1200 
    11951201msgid "confirm removal" 
    11961202msgstr "Confirmer la suppression" 
     
    19942000msgstr "Les fichiers suivants de votre installation de Dotclear ne peuvent pas être écrits. Veuillez corriger la situation ou <a href=\"http://fr.dotclear.org/download\">mettre à jour manuellement</a>." 
    19952001 
     2002msgid "Manual checking of update done successfully." 
     2003msgstr "Vérification manuelle de mise à jour effectuée avec succès." 
     2004 
    19962005msgid "No newer Dotclear version available." 
    19972006msgstr "Aucune nouvelle version de Dotclear n'est disponible." 
    19982007 
     2008msgid "Force checking update Dotclear" 
     2009msgstr "Forcer la vérification de mise à jour de Dotclear" 
     2010 
    19992011#, php-format 
    20002012msgid "Dotclear %s is available." 
     
    21332145#, fuzzy 
    21342146msgid "Go to the content" 
    2135 msgstr "Voir ce billet sur le site" 
     2147msgstr "Aller au contenu" 
    21362148 
    21372149#, fuzzy 
    21382150msgid "Go to the menu" 
    2139 msgstr "Aller sur le site" 
     2151msgstr "Aller au menu" 
    21402152 
    21412153msgid "Go to site" 
     
    22012213 
    22022214msgid "Users with posts cannot be deleted." 
    2203 msgstr "Les utilisateurs ayant écrit des billets ne peuvent être effacées." 
     2215msgstr "Les utilisateurs ayant écrit des billets ne peuvent être supprimés." 
    22042216 
    22052217#, php-format 
     
    22432255msgstr "Êtes-vous certain de vouloir supprimer le thème \"%s\" ?" 
    22442256 
     2257msgid "Are you sure you want to delete this backup?" 
     2258msgstr "Êtes-vous certain de vouloir supprimer cette sauvegarde ?" 
     2259 
    22452260msgid "Zip file content" 
    22462261msgstr "Contenu du fichier zip" 
     
    22582273msgstr "Vous avez des modifications non sauvegardées. Changer de format vous fera perdre ces modifications. Continuer ?" 
    22592274 
     2275msgid "Warning: post format change will not convert existing content. You will need to apply new format by yourself. Proceed anyway?" 
     2276msgstr "Attention : le changement de syntaxe ne transformera pas les balises des contenus déjà saisis. Pensez à les réadapter après cette opération. Confirmez-vous ce changement de syntaxe ?" 
     2277 
    22602278msgid "Loading enhanced uploader, please wait." 
    22612279msgstr "Chargement de l'interface avancée." 
     
    25062524#, fuzzy 
    25072525msgid "You are not allowed to reset categories order" 
    2508 msgstr "Vous n'êtes pas autorisé à supprimer des catégories" 
     2526msgstr "Vous n'êtes pas autorisé à réinitialiser l'ordre des catégories" 
    25092527 
    25102528msgid "Category URL must be unique." 
     
    30603078msgid "Add an introduction to the page." 
    30613079msgstr "Ajoute une introduction à la page." 
     3080 
     3081msgid "(No cat)" 
     3082msgstr "(aucune)" 
     3083 
     3084msgid "Password strength: %s" 
     3085msgstr "Force du mot de passe : %s" 
     3086 
     3087msgid "very weak" 
     3088msgstr "très faible" 
     3089 
     3090msgid "weak" 
     3091msgstr "faible" 
     3092 
     3093msgid "mediocre" 
     3094msgstr "moyen" 
     3095 
     3096msgid "strong" 
     3097msgstr "fort" 
     3098 
     3099msgid "very strong" 
     3100msgstr "très fort" 
  • locales/fr/main.po

    r1462 r1468  
    793793msgstr "Auteur du commentaire :" 
    794794 
    795 msgid "You have one spam comments." 
     795msgid "You have one spam comment." 
    796796msgstr "Vous avez un commentaire indésirable." 
    797797 
     
    10381038#, fuzzy, php-format 
    10391039msgid "Path <strong>%s</strong> is not writable." 
    1040 msgstr "Le répertoire <strong>%s</strong> n'est pas accessible en écriture." 
     1040msgstr "Le répertoire de cache <strong>%s</strong> n'est pas accessible en écriture." 
    10411041 
    10421042#, fuzzy 
     
    11231123#, php-format 
    11241124msgid "You can change your user language in your <a href=\"%1$s\">preferences</a> or change your blog's main language in your <a href=\"%2$s\">blog settings</a>." 
    1125 msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres du blog</a>." 
     1125msgstr "Vous pouvez changer votre langue d'utilisateur dans vos <a href=\"%1$s\">préférences</a> ou changer la langue principale de votre blog dans vos <a href=\"%2$s\">paramètres de blog</a>." 
    11261126 
    11271127msgid "Installed languages" 
     
    14901490 
    14911491msgid "Plugins" 
    1492 msgstr "Extensions" 
     1492msgstr "Plugins" 
    14931493 
    14941494msgid "Activated plugins" 
     
    15681568 
    15691569msgid "Search" 
    1570 msgstr "Recherche" 
     1570msgstr "Rechercher" 
    15711571 
    15721572msgid "cancel" 
     
    16281628 
    16291629msgid "Text formating:" 
    1630 msgstr "Format du texte :" 
     1630msgstr "Syntaxe de saisie :" 
    16311631 
    16321632msgid "Convert to XHTML" 
     
    19231923msgstr "Requête :" 
    19241924 
    1925 msgid "Search entries" 
    1926 msgstr "Rechercher des billets" 
    1927  
    1928 msgid "Search comments" 
    1929 msgstr "Rechercher des commentaires" 
     1925msgid "Search in entries" 
     1926msgstr "Rechercher dans les billets" 
     1927 
     1928msgid "Search in comments" 
     1929msgstr "Rechercher dans les commentaires" 
    19301930 
    19311931msgid "schedule" 
     
    20642064 
    20652065msgid "Mandatory for password recovering procedure." 
    2066 msgstr "Obligatoire pour la procédure de récupération de mot de passe." 
     2066msgstr "Indispensable pour la procédure de récupération de mot de passe." 
    20672067 
    20682068msgid "Password change required to connect" 
     
    21742174msgstr "Aide" 
    21752175 
     2176msgid "Help about this page" 
     2177msgstr "Aide pour cette page" 
     2178 
    21762179msgid "uncover" 
    21772180msgstr "dévoiler" 
     
    22592262 
    22602263msgid "XHTML markup validator" 
    2261 msgstr "Validation XHTML" 
     2264msgstr "Vérifier la validité XHTML" 
    22622265 
    22632266msgid "XHTML content is valid." 
     
    29442947msgstr "Date de publication invalide" 
    29452948 
     2949msgid "System settings" 
     2950msgstr "Réglages système" 
     2951 
     2952msgid "Additional plugins" 
     2953msgstr "Modules complémentaires" 
     2954 
     2955msgid "Personal notes:" 
     2956msgstr "Notes personnelles :" 
     2957 
     2958msgid "New user" 
     2959msgstr "Nouvel utilisateur" 
     2960 
     2961msgid "Published" 
     2962msgstr "Publié" 
     2963 
     2964msgid "Unpublished" 
     2965msgstr "Non publié" 
     2966 
     2967msgid "Pending" 
     2968msgstr "En attente" 
     2969 
     2970msgid "Junk" 
     2971msgstr "Indésirable" 
     2972 
     2973msgid "Scheduled" 
     2974msgstr "Programmé" 
     2975 
     2976msgid "Protected" 
     2977msgstr "Protégé" 
     2978 
     2979msgid "Publish" 
     2980msgstr "Publier" 
     2981 
     2982msgid "Unpublish" 
     2983msgstr "Mettre hors ligne" 
     2984 
     2985msgid "Mark as pending" 
     2986msgstr "Mettre en attente" 
     2987 
     2988msgid "Mark as junk" 
     2989msgstr "Mettre en indésirable" 
     2990 
     2991msgid "Next entry" 
     2992msgstr "Billet suivant" 
     2993 
     2994msgid "Previous entry" 
     2995msgstr "Billet précédent" 
     2996 
     2997msgid "Add an introduction to the post." 
     2998msgstr "Ajoute une introduction au billet." 
     2999 
     3000msgid "Add unpublished notes." 
     3001msgstr "Ajoute des notes non publiées." 
     3002 
     3003msgid "Edit basename:" 
     3004msgstr "Modifier l'URL spécifique :" 
     3005 
     3006msgid "Protect with password" 
     3007msgstr "Protéger par un mot de passe" 
     3008 
     3009msgid "Information collected" 
     3010msgstr "Informations recueillies" 
     3011 
     3012msgid "Comment submitted" 
     3013msgstr "Commentaire déposé" 
     3014 
     3015msgid "Entry status" 
     3016msgstr "État du billet" 
     3017 
     3018msgid "Publication date and hour" 
     3019msgstr "Date et heure de publication" 
     3020 
     3021msgid "Text formating" 
     3022msgstr "Syntaxe de saisie" 
     3023 
     3024msgid "Entry lang" 
     3025msgstr "Langue du billet" 
     3026 
     3027msgid "Password" 
     3028msgstr "Mot de passe" 
     3029 
     3030msgid "Edit basename" 
     3031msgstr "URL spécifique" 
     3032 
     3033msgid "Ordering" 
     3034msgstr "Classement" 
     3035 
     3036msgid "Filter posts list" 
     3037msgstr "Filtrer la liste des billets" 
     3038 
     3039msgid "entries per page" 
     3040msgstr "billets par page" 
     3041 
     3042msgid "Show" 
     3043msgstr "Afficher" 
     3044 
     3045msgid "Filter blogs list" 
     3046msgstr "Filtrer la liste des blogs" 
     3047 
     3048msgid "blogs per page" 
     3049msgstr "blogs par page" 
     3050 
     3051msgid "Filter comments and trackbacks list" 
     3052msgstr "Filtrer la liste des commentaires et rétroliens" 
     3053 
     3054msgid "Filter users list" 
     3055msgstr "Filtrer la liste des utilisateurs" 
     3056 
     3057msgid "users per page" 
     3058msgstr "utilisateurs par page" 
     3059 
     3060msgid "Available themes in your installation" 
     3061msgstr "Thèmes disponibles sur votre installation" 
     3062 
     3063msgid "You can also install themes by uploading or downloading zip files." 
     3064msgstr "Vous pouvez aussi installer des thèmes en les déposant ou en téléchargeant des fichiers zip." 
     3065 
     3066msgid "Add themes to your installation" 
     3067msgstr "Ajouter des thèmes sur votre installation" 
     3068 
     3069msgid "Select this comment" 
     3070msgstr "Sélectionner ce commentaire" 
     3071 
     3072msgid "Next page" 
     3073msgstr "Page suivante" 
     3074 
     3075msgid "Previous page" 
     3076msgstr "Page précédente" 
     3077 
     3078msgid "Add an introduction to the page." 
     3079msgstr "Ajoute une introduction à la page." 
     3080 
    29463081msgid "(No cat)" 
    29473082msgstr "(aucune)" 
  • locales/fr/plugins.po

    r1396 r1468  
    11661166msgstr "Pages" 
    11671167 
     1168msgid "My first page" 
     1169msgstr "Ma première page" 
     1170 
     1171msgid "This is your first page. When you\'re ready to blog, log in to edit or delete it." 
     1172msgstr "Ceci est votre première page. Quand vous serez prêt à bloguer, connectez-vous pour l'éditer ou la supprimer." 
     1173 
    11681174#, php-format 
    11691175msgid "%d page" 
  • locales/fr/plugins.po

    r1445 r1468  
    238238 
    239239#, php-format 
    240 msgid "%s configuration" 
    241 msgstr "configuration %s" 
     240msgid "%s filter configuration" 
     241msgstr "Configuration du filtre %s" 
    242242 
    243243msgid "Information" 
     
    10241024msgid "" 
    10251025"On the other hand, in WordPress, a post can not be uncategorized, and a " 
    1026 "default installation has a first category labelised <i>\"Uncategorized\"</" 
    1027 "i>. If you did not change that category, you can just ignore it while " 
     1026"default installation has a first category labelised <i>\"Uncategorized\"</i>." 
     1027"If you did not change that category, you can just ignore it while " 
    10281028"importing your blog, as Dotclear allows you to actually keep your posts " 
    10291029"uncategorized." 
     
    10311031"D'autre part, dans WordPress, un billet ne peut pas être sans catégorie, et " 
    10321032"une installation par défaut possède systématiquement une première catégorie " 
    1033 "nommée <i>« sans catégorie »</i>. Si vous n'avez pas changé cette " 
     1033"nommée <i>« sans catégorie »</ i>. Si vous n'avez pas changé cette " 
    10341034"catégorie, vous pouvez simplement l'ignorer lors de l'importation sur votre " 
    10351035"blog, puisque Dotclear vous permet réellement de conserver votre message " 
     
    11311131 
    11321132msgid "Vacuum tables" 
    1133 msgstr "Optimiser les tables" 
     1133msgstr "Vidage des tables" 
    11341134 
    11351135msgid "Counters" 
     
    11371137 
    11381138msgid "Reset comments and ping counters" 
    1139 msgstr "Recalculer les compteurs de commentaires et de signalements" 
     1139msgstr "Remet à zéro les compteurs de commentaires et de signalements" 
    11401140 
    11411141msgid "Search engine index" 
     
    11461146 
    11471147msgid "Index all posts" 
    1148 msgstr "Indexer tous les billets" 
     1148msgstr "Indexation de tous les billets" 
    11491149 
    11501150msgid "Index all comments" 
    1151 msgstr "Indexer tous les commentaires" 
     1151msgstr "Indexation de tous les commentaires" 
    11521152 
    11531153msgid "Vacuum logs" 
     
    11551155 
    11561156msgid "Delete all logs" 
    1157 msgstr "Supprimer tous les journaux" 
     1157msgstr "Suppression de tous les journaux" 
    11581158 
    11591159msgid "Empty templates cache directory" 
     
    11611161 
    11621162msgid "Empty directory" 
    1163 msgstr "Vider le répertoire" 
     1163msgstr "Vidage du répertoire" 
    11641164 
    11651165msgid "Pages" 
     
    12471247 
    12481248msgid "Go to this page on the site" 
    1249 msgstr "Aller sur cette page" 
     1249msgstr "Voir cette page sur le site" 
    12501250 
    12511251msgid "Page status:" 
     
    12831283 
    12841284msgid "Pings" 
    1285 msgstr "Signalements" 
     1285msgstr "Signalements (pings)" 
    12861286 
    12871287msgid "Ping services" 
     
    17831783msgid "" 
    17841784"Once included in a sidebar, widgets have configuration options that you can " 
    1785 "reach by clicking on the + sign next to their name." 
     1785"reach by clicking on the arrow next to their name." 
    17861786msgstr "" 
    17871787"Une fois inclus dans un bandeau, les widgets ont généralement des options " 
    1788 "que vous pouvez configurer. Cliquez sur le signe + à côté de leur nom pour y " 
     1788"que vous pouvez configurer. Cliquez sur la flèche à côté de leur nom pour y " 
    17891789"accéder." 
    17901790 
     
    19191919#~ msgid "The backup file does not appear to be well formed." 
    19201920#~ msgstr "Le fichier de sauvegarde semble mal formaté." 
     1921 
     1922msgid "Settings for %s" 
     1923msgstr "Réglages pour %s" 
     1924 
     1925msgid "Settings for %s" 
     1926msgstr "Réglages pour %s" 
     1927 
     1928msgid "User preferences" 
     1929msgstr "Préférences utilisateur" 
     1930 
     1931msgid "Global preferences" 
     1932msgstr "Préférences globales" 
     1933 
     1934msgid "Edit theme files" 
     1935msgstr "Modifier les fichiers du thème" 
  • plugins/antispam/filters/class.dc.filter.iplookup.php

    r1454 r1468  
    4444          } 
    4545 
    46           $match = array(); 
    47  
    4846          $bls = $this->getServers(); 
    4947          $bls = preg_split('/\s*,\s*/',$bls); 
    5048 
    51           foreach ($bls as $bl) 
    52           { 
     49          foreach ($bls as $bl) { 
    5350               if ($this->dnsblLookup($ip,$bl)) { 
    54                     $match[] = $bl; 
     51                    // Pass by reference $status to contain matching DNSBL 
     52                    $status = $bl; 
     53                    return true; 
    5554               } 
    56           } 
    57  
    58           if (!empty($match)) { 
    59                $status = substr(implode(', ',$match),0,128); 
    60                return true; 
    6155          } 
    6256     } 
  • plugins/antispam/filters/class.dc.filter.iplookup.php

    r1361 r1468  
    7878          '<form action="'.html::escapeURL($url).'" method="post">'. 
    7979          '<fieldset><legend>' . __('IP Lookup servers') . '</legend>'. 
    80           '<p><label for="bls">'.__('Add here a coma separated list of servers.'). 
     80          '<p><label for="bls">'.__('Add here a coma separated list of servers.').'</label>'. 
    8181          form::textarea('bls',40,3,html::escapeHTML($bls),'maximal'). 
    8282          '</p>'. 
    83           '<p><input type="submit" value="'.__('Save').'" /></label></p>'. 
     83          '<p><input type="submit" value="'.__('Save').'" /></p>'. 
    8484          $this->core->formNonce().'</p>'. 
    8585          '</fieldset>'. 
  • plugins/attachments/_admin.php

    r1398 r1468  
    4141                    '<img src="'.$f->media_icon.'" alt="" title="'.$f->basename.'" /></a>'. 
    4242                    '<ul>'. 
    43                     '<li><a class="media-link" href="media_item.php?id='.$f->media_id.'"'. 
     43                    '<li><a class="media-link" href="media_item.php?id='.$f->media_id.'" '. 
    4444                    'title="'.$f->basename.'">'.$ftitle.'</a></li>'. 
    4545                    '<li>'.$f->media_dtstr.'</li>'. 
  • plugins/attachments/_admin.php

    r1467 r1468  
    1212if (!defined('DC_CONTEXT_ADMIN')) { return; } 
    1313 
    14 $core->addBehavior ('adminPostFormSidebar',array('attachmentAdmin','adminPostFormSidebar')); 
     14$core->addBehavior ('adminPostFormItems',array('attachmentAdmin','adminPostFormItems')); 
    1515$core->addBehavior ('adminPostAfterForm',array('attachmentAdmin','adminPostAfterForm')); 
     16$core->addBehavior('adminPostHeaders',array('attachmentAdmin','postHeaders')); 
    1617 
    1718class attachmentAdmin 
    1819{ 
    19      public static function adminPostFormSidebar($post)  
     20     public static function postHeaders() 
     21     { 
     22          return  
     23          '<script type="text/javascript" src="index.php?pf=attachments/js/post.js"></script>'; 
     24     } 
     25     public static function adminPostFormItems($main,$sidebar,$post)  
    2026     { 
    2127          if ($post !== null) 
     
    2329               $core =& $GLOBALS['core']; 
    2430               $post_media = $core->media->getPostMedia($post->post_id); 
    25                echo 
    26                '<h3 class="clear">'.__('Attachments').'</h3>'; 
     31               $item = '<h5 class="clear s-attachments">'.__('Attachments').'</h5>'; 
    2732               foreach ($post_media as $f) 
    2833               { 
     
    3136                         $ftitle = substr($ftitle,0,16).'...'; 
    3237                    } 
    33                     echo 
    34                     '<div class="media-item">'. 
     38                    $item .= 
     39                    '<div class="media-item s-attachments">'. 
    3540                    '<a class="media-icon" href="media_item.php?id='.$f->media_id.'">'. 
    3641                    '<img src="'.$f->media_icon.'" alt="" title="'.$f->basename.'" /></a>'. 
     
    5358                
    5459               if (empty($post_media)) { 
    55                     echo '<p>'.__('No attachment.').'</p>'; 
    56                } else { 
    57                } 
    58                echo '<p><a class="button" href="media.php?post_id='.$post->post_id.'">'.__('Add files to this entry').'</a></p>'; 
     60                    $item .= '<p class="form-note s-attachments">'.__('No attachment.').'</p>'; 
     61               }  
     62               $item .= '<p class="s-attachments"><a class="button" href="media.php?post_id='.$post->post_id.'">'.__('Add files to this entry').'</a></p>'; 
     63               $sidebar['metas-box']['items']['attachments']= $item; 
    5964          } 
    6065     } 
Note: See TracChangeset for help on using the changeset viewer.

Sites map