Dotclear

Changeset 1159:887a30463ee0


Ignore:
Timestamp:
06/20/13 13:58:24 (12 years ago)
Author:
Nicolas <nikrou77@…>
Branch:
default
Message:

Improve upload multiple
Restore option to enable/disable enhanced interface

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • admin/js/_media.js

    r1144 r1159  
    11$(function() { 
    2     $('#fileupload') 
    3      .fileupload({ 
    4          url: $('#fileupload').attr('action'), 
    5          autoUpload: false 
    6      }); 
     2    var jqXHR = null; 
     3    $('#fileupload').fileupload({ 
     4     url: $('#fileupload').attr('action'), 
     5     autoUpload: false, 
     6     disabled: true 
     7    }).bind('fileuploaddone', function(e, data) { 
     8     if (data.result.files[0].html !==undefined) { 
     9         $('.media-list').append(data.result.files[0].html); 
     10     } 
     11    }); 
    712 
    8     // Load existing files: 
    9     $('#fileupload').addClass('fileupload-processing'); 
    10     $.ajax({ 
    11         url: $('#fileupload').fileupload('option', 'url'), 
    12         dataType: 'json', 
    13         context: $('#fileupload')[0] 
    14     }).always(function (result) { 
    15         $(this).removeClass('fileupload-processing'); 
    16     }).done(function (result) { 
    17         $(this).fileupload('option', 'done') 
    18             .call(this, null, {result: result}); 
    19     }); 
     13    if (!$.browser.opera) { 
     14     var $container = $('#fileupload').parent().parent(); 
     15     var $msg; 
     16 
     17     if ($container.hasClass('enhanced_uploader')) { 
     18         $msg = dotclear.msg.enhanced_uploader_disable; 
     19         $('#fileupload').fileupload({disabled:false}); 
     20     } else { 
     21         $msg = dotclear.msg.enhanced_uploader_activate; 
     22     } 
     23 
     24     $('<div><a href="#">' + $msg + '</a></div>').click( function() { 
     25         if ($container.hasClass('enhanced_uploader')) { 
     26          $msg = dotclear.msg.enhanced_uploader_activate; 
     27          $('#upfile').attr('multiple', false); 
     28 
     29          // when a user has clicked enhanced_uploader, and has added files 
     30          // We must remove files in table 
     31          $('.table-files tr', '#fileupload').remove(); 
     32          $('#fileupload').fileupload({disabled:true}); 
     33         } else { 
     34          $msg = dotclear.msg.enhanced_uploader_disable; 
     35          $('#upfile').attr('multiple', true); 
     36          $('#fileupload').fileupload({disabled:false}); 
     37         } 
     38         $(this).find('a').text($msg); 
     39 
     40         $container.toggleClass('enhanced_uploader'); 
     41     }).appendTo($('#fileupload')); 
     42    } 
    2043 
    2144    // Replace remove links by a POST on hidden form 
     
    2346 
    2447    function fileRemoveAct() { 
    25      $('a.media-remove').click(function() { 
     48     $('a.media-remove').live('click', function() { 
    2649         var m_name = $(this).parents('ul').find('li:first>a').text(); 
    2750         if (window.confirm(dotclear.msg.confirm_delete_media.replace('%s',m_name))) { 
  • admin/media.php

    r1145 r1159  
    132132 
    133133# Adding a file 
    134 if ($dir && !empty($_FILES['upfile'])) 
    135 { 
     134if ($dir && !empty($_FILES['upfile'])) { 
     135  // only one file per request : @see option singleFileUploads in admin/js/jsUpload/jquery.fileupload 
    136136  $upfile = array('name' => $_FILES['upfile']['name'][0], 
    137137                  'type' => $_FILES['upfile']['type'][0], 
     
    141141                  ); 
    142142 
    143      try { 
    144     files::uploadStatus($upfile); 
    145  
    146     $core->media->uploadFile($upfile['tmp_name'],$upfile['name']); 
    147  
    148     if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
    149       header('Content-type: application/json'); 
    150       $message = array(); 
     143  if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
     144    header('Content-type: application/json'); 
     145    $message = array(); 
     146 
     147    try { 
     148      files::uploadStatus($upfile); 
     149      $new_file_id = $core->media->uploadFile($upfile['tmp_name'], $upfile['name']); 
     150 
    151151      $message['files'][] = array('name' => $upfile['name'], 
    152                                   'size' => $upfile['size'] 
     152                                  'size' => $upfile['size'], 
     153                                  'html' => mediaItemLine($core->media->getFile($new_file_id), count($dir['files'])) 
    153154                                  ); 
    154  
    155       echo json_encode($message); 
    156       exit(); 
    157     } else { 
    158         http::redirect($page_url.'&d='.rawurlencode($d).'&upok=1'); 
    159     } 
    160      } catch (Exception $e) { 
    161     if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { 
    162       header('Content-type: application/json'); 
    163       $message = array(); 
     155    } catch (Exception $e) { 
    164156      $message['files'][] = array('name' => $upfile['name'], 
    165157                                  'error' => $e->getMessage() 
    166158                                  ); 
    167       echo json_encode($message); 
    168       exit(); 
    169     } else { 
     159    } 
     160    echo json_encode($message); 
     161    exit(); 
     162  } else { 
     163    try { 
     164      files::uploadStatus($upfile); 
     165 
     166      $f_title = (isset($_POST['upfiletitle']) ? $_POST['upfiletitle'] : ''); 
     167      $f_private = (isset($_POST['upfilepriv']) ? $_POST['upfilepriv'] : false); 
     168 
     169      $core->media->uploadFile($upfile['tmp_name'], $upfile['name'], $f_title, $f_private); 
     170      http::redirect($page_url.'&d='.rawurlencode($d).'&upok=1'); 
     171    } catch (Exception $e) { 
    170172      $core->error->add($e->getMessage()); 
    171173    } 
    172      } 
     174  } 
    173175} 
    174176 
     
    319321     echo '<div class="two-cols">'; 
    320322      
    321      echo 
    322   '<div class="col">'. 
     323     if ($user_ui_enhanceduploader) { 
     324    echo 
     325      '<div class="col enhanced_uploader">'; 
     326  } else { 
     327    echo 
     328      '<div class="col">'; 
     329  } 
     330 
     331  echo 
    323332  '<fieldset id="add-file-f"><legend>'.__('Add files').'</legend>'. 
    324333  '<p>'.__('Please take care to publish media that you own and that are not protected by copyright.').'</p>'. 
    325334  ' <form id="fileupload" action="'.html::escapeURL($page_url).'" method="POST" enctype="multipart/form-data">'. 
    326335  '<div>'.form::hidden(array('MAX_FILE_SIZE'),DC_MAX_UPLOAD_SIZE). 
    327     $core->formNonce().'</div>'. 
     336  $core->formNonce().'</div>'; 
     337 
     338  echo 
    328339  '<div class="fileupload-buttonbar">'. 
    329340  '<label class="button-add button" for="upfile">'.__('Add files'). 
    330   '<input type="file" id="upfile" name="upfile[]" multiple="multiple" data-url="'.html::escapeURL($page_url).'" />'. 
     341  '<span class="one-file"> ('.sprintf(__('Maximum size %s'),files::size(DC_MAX_UPLOAD_SIZE)).')</span>'. 
     342    '<input type="file" id="upfile" name="upfile[]"'.($user_ui_enhanceduploader?' multiple="mutiple"':'').' data-url="'.html::escapeURL($page_url).'" />'. 
    331343  '</label>'. 
    332   '</span>'. 
     344  '</span>'; 
     345 
     346  echo 
     347     '<p class="one-file"><label for="upfiletitle">'.__('Title:').form::field(array('upfiletitle','upfiletitle'),35,255).'</label></p>'. 
     348     '<p class="one-file"><label for="upfilepriv" class="classic">'.form::checkbox(array('upfilepriv','upfilepriv'),1).' '. 
     349  __('Private').'</label></p>'; 
     350 
     351     if (!$user_ui_enhanceduploader) { 
     352          echo 
     353          '<p class="one-file form-help info">'.__('To send several files at the same time, you can activate the enhanced uploader in'). 
     354          ' <a href="preferences.php?tab=user-options">'.__('My preferences').'</a></p>'; 
     355     } 
     356 
     357  echo 
    333358  '<input class="button start" type="submit" value="'.__('Send').'"/>'. 
    334   '</div>'. 
    335   '<table role="presentation" class="table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table>'. 
    336     form::hidden(array('d'),$d).'</p>'. 
     359  '</div>'; 
     360 
     361 
     362  echo 
     363  '<table role="presentation" class="table-files table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table>'. 
     364  '<div>'.form::hidden(array('d'),$d).'</div>'. 
    337365  '</fieldset>'. 
    338366  '</form>'. 
  • admin/style/jsUpload/style.css

    r1145 r1159  
    1 .button { 
     1.enhanced_uploader .button { 
    22  display: inline-block; 
    33  *display: inline; 
     
    1616} 
    1717 
    18 .button-add {  
     18.enhanced_uploader .button-add { 
    1919  position: relative; 
    2020} 
    2121 
    22 .button:hover { 
     22.enhanced_uploader .button:hover { 
    2323  background: #2373A8; 
    2424  border: 1px solid #2C8FD1; 
    2525} 
    2626 
    27 .button-add input { 
     27.enhanced_uploader .button-add input { 
    2828  position: absolute; 
    2929  top: 0; 
     
    3535} 
    3636 
    37 .progress .bar { 
     37.enhanced_uploader .progress .bar { 
    3838  background: transparent url('loader.png') repeat left top; 
    3939} 
    4040 
    41 .upload-status {  
     41.enhanced_uploader .upload-status { 
    4242  margin-top: 3px; 
    4343  width: 13px; 
     
    4646} 
    4747 
    48 .upload-status.ok {  
     48.enhanced_uploader .upload-status.ok { 
    4949  background: transparent url('../../images/check-on.png') no-repeat left top; 
    5050} 
    5151 
    52 .upload-status.error {  
     52.enhanced_uploader .upload-status.error { 
    5353  background: transparent url('../../images/check-off.png') no-repeat left top; 
    5454} 
     55 
     56.enhanced_uploader .one-file { 
     57  display: none; 
     58} 
     59 
     60.table-files { 
     61  display: none; 
     62} 
     63 
     64.enhanced_uploader .table-files { 
     65  display: block; 
     66} 
     67 
     68label span.one-file { 
     69  display: inline; 
     70} 
  • inc/admin/lib.dc.page.php

    r1145 r1159  
    758758          "dotclear.jsUpload = {};\n". 
    759759          "dotclear.jsUpload.msg = {};\n". 
     760          self::jsVar('dotclear.msg.enhanced_uploader_activate',__('Temporarily activate enhanced uploader')). 
     761          self::jsVar('dotclear.msg.enhanced_uploader_disable',__('Temporarily disable enhanced uploader')). 
    760762          self::jsVar('dotclear.jsUpload.msg.limit_exceeded',__('Limit exceeded.')). 
    761763          self::jsVar('dotclear.jsUpload.msg.size_limit_exceeded',__('File size exceeds allowed limit.')). 
Note: See TracChangeset for help on using the changeset viewer.

Sites map