Changeset 267 in subversion


Ignore:
Timestamp:
Jun 27, 2006 5:56:44 PM (7 years ago)
Author:
richs
Message:

Renameable folders, mail-checking changes, other fixes (richs)

Location:
trunk/roundcubemail
Files:
21 added
40 edited

Legend:

Unmodified
Added
Removed
  • trunk/roundcubemail/CHANGELOG

    r266 r267  
    11CHANGELOG RoundCube Webmail 
    22--------------------------- 
     3 
     42006/06/26 (richs) 
     5---------- 
     6- Added button to immediately check for new messages  
     7- New message checking now displays status "Checking for new messages..." 
     8- New message checking now looks for unread messages in all mailboxes (Feature #1326401) 
     9- Task buttons now respond to clicks by darkening (as in other applications) 
     10- Fixed "Sender" column changing to "Recipient" for "Sent" and "Drafts" message lists 
     11- Added ability to sort messages by "Size" 
     12- Added ability to rename folders (Feature #1326396) 
     13- Added 'protect_default_folders' option to main.inc.php to prevent renames/deletes/unsubscribes of default folders 
     14- Corrected 5 typos of "INSTLL" to "INSTALL" in program/include/main.inc 
     15 
    316 
    4172006/06/25 
  • trunk/roundcubemail/config/main.inc.php.dist

    r263 r267  
    132132// display these folders separately in the mailbox list 
    133133$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'); 
     134 
     135// protect the default folders from renames, deletes, and subscription changes 
     136$rcmail_config['protect_default_folders'] = TRUE; 
    134137 
    135138// Set TRUE if deleted messages should not be displayed 
  • trunk/roundcubemail/index.php

    r247 r267  
    341341    include('program/steps/settings/save_prefs.inc');   
    342342 
    343   if ($_action=='folders' || $_action=='subscribe' || $_action=='unsubscribe' || $_action=='create-folder' || $_action=='delete-folder') 
     343  if ($_action=='folders' || $_action=='subscribe' || $_action=='unsubscribe' || $_action=='create-folder' || $_action=='rename-folder' || $_action=='delete-folder') 
    344344    include('program/steps/settings/manage_folders.inc'); 
    345345 
  • trunk/roundcubemail/program/include/main.inc

    r266 r267  
    290290function rcube_language_prop($lang, $prop='lang') 
    291291  { 
    292   global $INSTLL_PATH; 
     292  global $INSTALL_PATH; 
    293293  static $rcube_languages, $rcube_language_aliases, $rcube_charsets; 
    294294 
    295295  if (empty($rcube_languages)) 
    296     @include($INSTLL_PATH.'program/localization/index.inc'); 
     296    @include($INSTALL_PATH.'program/localization/index.inc'); 
    297297     
    298298  // check if we have an alias for that language 
     
    358358 
    359359  // add some basic label to client 
    360   rcube_add_label('loading'); 
     360  rcube_add_label('loading','checkingmail'); 
    361361  } 
    362362 
     
    765765  if (!sizeof($sa_languages)) 
    766766    { 
    767     @include($INSTLL_PATH.'program/localization/index.inc'); 
    768  
    769     if ($dh = @opendir($INSTLL_PATH.'program/localization')) 
     767    @include($INSTALL_PATH.'program/localization/index.inc'); 
     768 
     769    if ($dh = @opendir($INSTALL_PATH.'program/localization')) 
    770770      { 
    771771      while (($name = readdir($dh)) !== false) 
    772772        { 
    773         if ($name{0}=='.' || !is_dir($INSTLL_PATH.'program/localization/'.$name)) 
     773        if ($name{0}=='.' || !is_dir($INSTALL_PATH.'program/localization/'.$name)) 
    774774          continue; 
    775775 
     
    11931193        'foldersubscription' => 'rcube_subscription_form', 
    11941194        'createfolder' => 'rcube_create_folder_form', 
     1195        'renamefolder' => 'rcube_rename_folder_form', 
    11951196        'composebody' => 'rcmail_compose_body' 
    11961197      ); 
     
    13181319                                $attrib['type'], 
    13191320                                $attrib['imageact'] ? $skin_path.$attrib['imageact'] : $attrib['classact'], 
    1320                                 $attirb['imagesel'] ? $skin_path.$attirb['imagesel'] : $attrib['classsel'], 
     1321                                $attrib['imagesel'] ? $skin_path.$attrib['imagesel'] : $attrib['classsel'], 
    13211322                                $attrib['imageover'] ? $skin_path.$attrib['imageover'] : '')); 
    13221323 
     
    13391340    } 
    13401341 
     1342  if ($command && $attrib['imagesel']) 
     1343    { 
     1344    $attrib['onmousedown'] = sprintf("return %s.button_sel('%s','%s')", $JS_OBJECT_NAME, $command, $attrib['id']); 
     1345    $attrib['onmouseup'] = sprintf("return %s.button_out('%s','%s')", $JS_OBJECT_NAME, $command, $attrib['id']); 
     1346    } 
    13411347 
    13421348  $out = ''; 
     
    13511357      $btn_content .= ' '.$attrib['label']; 
    13521358     
    1353     $link_attrib = array('href', 'onclick', 'onmouseover', 'onmouseout', 'title'); 
     1359    $link_attrib = array('href', 'onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'title'); 
    13541360    } 
    13551361  else if ($attrib['type']=='link') 
  • trunk/roundcubemail/program/include/rcube_imap.inc

    r266 r267  
    12631263 
    12641264  // set a new name to an existing mailbox 
    1265   function rename_mailbox($mbox_name, $new_name) 
    1266     { 
    1267     // not implemented yet 
     1265  function rename_mailbox($mbox_name, $new_name, $subscribe=TRUE) 
     1266    { 
     1267    $result = FALSE; 
     1268 
     1269    // replace backslashes 
     1270    $name = preg_replace('/[\\\]+/', '-', $new_name); 
     1271 
     1272    $name_enc = UTF7EncodeString($new_name); 
     1273 
     1274    // reduce mailbox name to 100 chars 
     1275    $name_enc = substr($name_enc, 0, 100); 
     1276 
     1277    $abs_name = $this->_mod_mailbox($name_enc); 
     1278    $a_mailbox_cache = $this->get_cache('mailboxes'); 
     1279 
     1280    if (strlen($abs_name) && (!is_array($a_mailbox_cache) || !in_array($abs_name, $a_mailbox_cache))) 
     1281      $result = iil_C_RenameFolder($this->conn, $mbox_name, $abs_name); 
     1282 
     1283    // update mailboxlist cache 
     1284    if ($result && $subscribe) 
     1285      $this->unsubscribe($mbox_name); 
     1286      $this->subscribe($name_enc); 
     1287 
     1288    return $result ? $name : FALSE; 
    12681289    } 
    12691290 
  • trunk/roundcubemail/program/js/app.js

    r261 r267  
    124124 
    125125        // enable mail commands 
    126         this.enable_command('list', 'compose', 'add-contact', 'search', 'reset-search', true); 
     126        this.enable_command('list', 'checkmail', 'compose', 'add-contact', 'search', 'reset-search', true); 
    127127         
    128128        if (this.env.action=='show') 
     
    212212           
    213213        if (this.env.action=='folders') 
    214           this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'delete-folder', true); 
     214          this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', true); 
    215215           
    216216        var identities_list = this.gui_objects.identitieslist; 
     
    614614          if (this.env.search_request<0 || (this.env.search_request && props != this.env.mailbox)) 
    615615            this.reset_qsearch(); 
     616 
     617          // Reset message list header, unless returning from compose/read/etc 
     618          if (this.env.mailbox != props && this.message_rows) 
     619            this.clear_message_list_header(); 
     620 
    616621          this.list_mailbox(props); 
    617622          } 
     
    619624          this.list_contacts(); 
    620625        break; 
     626 
    621627 
    622628      case 'sort': 
     
    843849        break; 
    844850       
     851      case 'checkmail': 
     852        this.check_for_recent(); 
     853        break; 
    845854       
    846855      case 'compose': 
     
    10351044        break; 
    10361045 
     1046      case 'rename-folder': 
     1047        this.rename_folder(props); 
     1048        break; 
     1049 
    10371050      case 'delete-folder': 
    10381051        if (confirm(this.get_label('deletefolderconfirm'))) 
     
    15551568    { 
    15561569    var table = this.gui_objects.messagelist; 
     1570    
    15571571    var tbody = document.createElement('TBODY'); 
    15581572    table.insertBefore(tbody, table.tBodies[0]); 
     
    15641578    }; 
    15651579 
     1580  this.clear_message_list_header = function() 
     1581    { 
     1582    var table = this.gui_objects.messagelist; 
     1583 
     1584    var colgroup = document.createElement('COLGROUP'); 
     1585    table.removeChild(table.colgroup); 
     1586    table.insertBefore(colgroup, table.thead); 
     1587 
     1588    var thead = document.createElement('THEAD'); 
     1589    table.removeChild(table.thead); 
     1590    table.insertBefore(thead, table.tBodies[0]); 
     1591    }; 
    15661592 
    15671593  this.expunge_mailbox = function(mbox) 
     
    25852611    }; 
    25862612 
     2613  this.rename_folder = function(props) 
     2614    { 
     2615    var form; 
     2616    if ((form = this.gui_objects.editform) && form.elements['_folder_oldname'] && form.elements['_folder_newname']) 
     2617      {  
     2618      oldname = form.elements['_folder_oldname'].value; 
     2619      newname = form.elements['_folder_newname'].value; 
     2620      } 
     2621 
     2622    if (oldname && newname) 
     2623      this.http_request('rename-folder', '_folder_oldname='+escape(oldname)+'&_folder_newname='+escape(newname)); 
     2624    else if (form.elements['_folder_newname']) 
     2625      form.elements['_folder_newname'].focus(); 
     2626    }; 
     2627 
    25872628 
    25882629  this.delete_folder = function(folder) 
     
    26042645    if (id && (row = document.getElementById(id))) 
    26052646      row.style.display = 'none';     
     2647 
     2648    // remove folder from rename-folder list 
     2649    var form; 
     2650    if ((form = this.gui_objects.editform) && form.elements['_folder_oldname']) 
     2651      { 
     2652      for (var i=0;i<form.elements['_folder_oldname'].options.length;i++) 
     2653        { 
     2654        if (form.elements['_folder_oldname'].options[i].value == folder)  
     2655          { 
     2656          form.elements['_folder_oldname'].options[i] = null; 
     2657          break; 
     2658          } 
     2659        } 
     2660      } 
    26062661    }; 
    26072662 
     
    26722727     var tbody = this.gui_objects.subscriptionlist.tBodies[0]; 
    26732728     var id = tbody.childNodes.length+1; 
    2674       
     2729     
    26752730     // clone a table row 
    26762731     var row = this.clone_table_row(tbody.rows[0]); 
     
    26912746       row.cells[2].firstChild.onclick = new Function(this.ref+".command('delete-folder','"+name+"')"); 
    26922747 
    2693     var form; 
    2694     if ((form = this.gui_objects.editform) && form.elements['_folder_name']) 
    2695       form.elements['_folder_name'].value = ''; 
     2748     var form; 
     2749     if ((form = this.gui_objects.editform) && form.elements['_folder_name']) 
     2750       form.elements['_folder_name'].value = ''; 
     2751  
     2752     // add new folder to rename-folder list 
     2753     if (form.elements['_folder_oldname']) 
     2754       form.elements['_folder_oldname'].options[form.elements['_folder_oldname'].options.length] = new Option(name,name); 
     2755 
    26962756     }; 
    26972757 
     
    27962856    }; 
    27972857 
     2858  // mouse down on button 
     2859  this.button_sel = function(command, id) 
     2860    { 
     2861    var a_buttons = this.buttons[command]; 
     2862    var button, img; 
     2863 
     2864    if(!a_buttons || !a_buttons.length) 
     2865      return; 
     2866 
     2867    for(var n=0; n<a_buttons.length; n++) 
     2868      { 
     2869      button = a_buttons[n]; 
     2870      if(button.id==id && button.status=='act') 
     2871        { 
     2872        img = document.getElementById(button.id); 
     2873        if (img && button.sel) 
     2874          img.src = button.sel; 
     2875        } 
     2876      } 
     2877    }; 
    27982878 
    27992879  // mouse out of button 
     
    31823262    } 
    31833263 
    3184     if (request_obj.__lock) 
    3185       this.set_busy(false); 
     3264    this.set_busy(false); 
    31863265 
    31873266  console(request_obj.get_text()); 
     
    32373316  this.check_for_recent = function() 
    32383317    { 
     3318    this.set_busy(true, 'checkingmail'); 
    32393319    var d = new Date(); 
    32403320    this.http_request('check-recent', '_t='+d.getTime()); 
  • trunk/roundcubemail/program/localization/cn/labels.inc

    r261 r267  
    9595 
    9696// toolbar buttons 
     97$labels['checkmail']        = '检查新消息'; 
    9798$labels['writenewmessage']  = '写新邮件'; 
    9899$labels['replytomessage']   = '回倍邮件'; 
  • trunk/roundcubemail/program/localization/cn/messages.inc

    r261 r267  
    4040 
    4141$messages['loadingdata'] = '读取数据...'; 
     42 
     43$messages['checkingmail'] = '检查新消息...'; 
    4244 
    4345$messages['sendingmessage'] = '正圚发送邮件...'; 
  • trunk/roundcubemail/program/localization/de_CH/labels.inc

    r266 r267  
    9292 
    9393// toolbar buttons // Symbolleisten-Tipps 
     94$labels['checkmail']        = 'ÜberprÃŒfung auf neue Anzeigen'; 
    9495$labels['writenewmessage']  = 'Neue Nachricht schreiben'; 
    9596$labels['replytomessage']   = 'Antwort verfassen'; 
  • trunk/roundcubemail/program/localization/de_CH/messages.inc

    r266 r267  
    3434 
    3535$messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; 
     36 
     37$messages['checkingmail'] = 'ÜberprÃŒfung auf neue Anzeigen...'; 
    3638 
    3739$messages['sendingmessage'] = 'Nachricht wird gesendet...'; 
  • trunk/roundcubemail/program/localization/de_DE/labels.inc

    r266 r267  
    9393 
    9494// toolbar buttons // Symbolleisten-Tipps 
     95$labels['checkmail']        = 'ÜberprÃŒfung auf neue Anzeigen'; 
    9596$labels['writenewmessage']  = 'Neue Nachricht schreiben'; 
    9697$labels['replytomessage']   = 'Antwort verfassen'; 
  • trunk/roundcubemail/program/localization/de_DE/messages.inc

    r266 r267  
    3636 
    3737$messages['loading'] = $messages['loadingdata'] = 'Daten werden geladen...'; 
     38 
     39$messages['checkingmail'] = 'ÜberprÃŒfung auf neue Anzeigen...'; 
    3840 
    3941$messages['sendingmessage'] = 'Nachricht wird gesendet...'; 
  • trunk/roundcubemail/program/localization/el/labels.inc

    r261 r267  
    115115 
    116116// toolbar buttons 
     117$labels['checkmail']        = 'Έλεγχος για τα Μέα ΌηΜύΌατα'; 
    117118$labels['writenewmessage']  = 'ΔηΌιοϠ
    118119ργία ΜέοϠ
  • trunk/roundcubemail/program/localization/el/messages.inc

    r261 r267  
    4646 
    4747$messages['loadingdata'] = 'Ίόρτωση ΎεΎοΌέΜωΜ...'; 
     48 
     49$messages['checkingmail'] = 'Έλεγχος για τα Μέα ΌηΜύΌατα...'; 
    4850 
    4951$messages['sendingmessage'] = 'Αποστολή ΌηΜύΌατος...'; 
  • trunk/roundcubemail/program/localization/en_GB/labels.inc

    r261 r267  
    9292 
    9393// toolbar buttons 
     94$labels['checkmail']        = 'Check for new messages'; 
    9495$labels['writenewmessage']  = 'Create a new message'; 
    9596$labels['replytomessage']   = 'Reply to the message'; 
  • trunk/roundcubemail/program/localization/en_GB/messages.inc

    r261 r267  
    3636 
    3737$messages['loadingdata'] = 'Loading data...'; 
     38 
     39$messages['checkingmail'] = 'Checking for new messages...'; 
    3840 
    3941$messages['messagesent'] = 'Message sent successfully'; 
  • trunk/roundcubemail/program/localization/en_US/labels.inc

    r261 r267  
    9191 
    9292// toolbar buttons 
     93$labels['checkmail']        = 'Check for new messages'; 
    9394$labels['writenewmessage']  = 'Create a new message'; 
    9495$labels['replytomessage']   = 'Reply to the message'; 
     
    209210$labels['create']  = 'Create'; 
    210211$labels['createfolder']  = 'Create new folder'; 
     212$labels['rename'] = 'Rename'; 
     213$labels['renamefolder'] = 'Rename existing folder'; 
    211214$labels['deletefolder']  = 'Delete folder'; 
    212215$labels['managefolders']  = 'Manage folders'; 
  • trunk/roundcubemail/program/localization/en_US/messages.inc

    r261 r267  
    3636 
    3737$messages['loadingdata'] = 'Loading data...'; 
     38 
     39$messages['checkingmail'] = 'Checking for new messages...'; 
    3840 
    3941$messages['sendingmessage'] = 'Sending message...'; 
  • trunk/roundcubemail/program/localization/es/labels.inc

    r261 r267  
    9595 
    9696// toolbar buttons 
     97$labels['checkmail']        = 'Comprobación para saber si hay nuevos mensajes'; 
    9798$labels['writenewmessage']  = 'Crear nuevo mensaje'; 
    9899$labels['replytomessage']   = 'Responder al mensaje'; 
  • trunk/roundcubemail/program/localization/es/messages.inc

    r261 r267  
    4343 
    4444$messages['loadingdata'] = 'Cargando datos...'; 
     45 
     46$messages['checkingmail'] = 'Comprobación para saber si hay nuevos mensajes...'; 
    4547 
    4648$messages['sendingmessage'] = 'Enviando mensaje...'; 
  • trunk/roundcubemail/program/localization/fr/labels.inc

    r261 r267  
    9292 
    9393// toolbar buttons 
     94$labels['checkmail']        = 'Vérification les nouveaux messages'; 
    9495$labels['writenewmessage']  = 'Créer un nouveau message'; 
    9596$labels['replytomessage']   = 'Répondre au message'; 
  • trunk/roundcubemail/program/localization/fr/messages.inc

    r261 r267  
    3636 
    3737$messages['loadingdata'] = 'Chargement des données en cours...'; 
     38 
     39$messages['checkingmail'] = 'Vérification les nouveaux messages...'; 
    3840 
    3941$messages['sendingmessage'] = 'Message en cours d\'envoi...'; 
  • trunk/roundcubemail/program/localization/it/labels.inc

    r261 r267  
    9292 
    9393// toolbar buttons 
     94$labels['checkmail']        = 'Controllando per vedere se c'Ú nuovi messaggi'; 
    9495$labels['writenewmessage']  = 'Scrivi un nuovo messaggio'; 
    9596$labels['replytomessage']   = 'Rispondi al messaggio'; 
  • trunk/roundcubemail/program/localization/it/messages.inc

    r261 r267  
    3636 
    3737$messages['loadingdata'] = 'Caricamento dati...'; 
     38 
     39$messages['checkingmail'] = 'Controllando per vedere se c'Ú nuovi messaggi...'; 
    3840 
    3941$messages['sendingmessage'] = 'Invio messaggio in corso...'; 
  • trunk/roundcubemail/program/localization/ja/labels.inc

    r261 r267  
    9898 
    9999// toolbar buttons 
     100$labels['checkmail']        = '新しいメッセヌゞがあるように確認'; 
    100101$labels['writenewmessage']  = '新芏メッセヌゞを䜜成する'; 
    101102$labels['replytomessage']   = 'メッセヌゞを返信する'; 
  • trunk/roundcubemail/program/localization/ja/messages.inc

    r261 r267  
    3636 
    3737$messages['loadingdata'] = 'デヌタを読み蟌み䞭です...'; 
     38 
     39$messages['checkingmail'] = '新しいメッセヌゞがあるように確認...'; 
    3840 
    3941$messages['sendingmessage'] = 'メッセヌゞの送信䞭です...'; 
  • trunk/roundcubemail/program/localization/pt_BR/labels.inc

    r261 r267  
    9191 
    9292// toolbar buttons 
     93$labels['checkmail']        = 'Verificar para ver se há mensagens novas'; 
    9394$labels['writenewmessage']  = 'Criar nova mensagem'; 
    9495$labels['replytomessage']   = 'Responder'; 
  • trunk/roundcubemail/program/localization/pt_BR/messages.inc

    r261 r267  
    3434 
    3535$messages['loadingdata'] = 'Carregando informações...'; 
     36 
     37$messages['checkingmail'] = 'Verificar para ver se há mensagens novas...'; 
    3638 
    3739$messages['messagesent'] = 'Mensagem enviada'; 
  • trunk/roundcubemail/program/localization/pt_PT/labels.inc

    r261 r267  
    9090 
    9191// toolbar buttons 
     92$labels['checkmail']        = 'Verificar para ver se há mensagens novas'; 
    9293$labels['writenewmessage']  = 'Criar nova mensagem'; 
    9394$labels['replytomessage']   = 'Responder'; 
  • trunk/roundcubemail/program/localization/pt_PT/messages.inc

    r261 r267  
    3535 
    3636$messages['loadingdata'] = 'Carregando Informações...'; 
     37 
     38$messages['checkingmail'] = 'Verificar para ver se há mensagens novas...'; 
    3739 
    3840$messages['sendingmessage'] = 'A enviar mensagem...'; 
  • trunk/roundcubemail/program/localization/ru/labels.inc

    r261 r267  
    9494 
    9595// toolbar buttons 
     96$labels['checkmail']        = 'ПрПверять Ўля МПвыѠ
     97 ÑÐŸÐŸÐ±Ñ‰ÐµÐœÐžÐ¹'; 
    9698$labels['writenewmessage']  = 'НПвПе сППбщеМОе'; 
    9799$labels['replytomessage']   = 'ОтветОть'; 
  • trunk/roundcubemail/program/localization/ru/messages.inc

    r261 r267  
    3838$messages['loadingdata'] = 'Загрузка ЎаММыѠ
    3939...'; 
     40 
     41$messages['checkingmail'] = 'ПрПверять Ўля МПвыѠ
     42 ÑÐŸÐŸÐ±Ñ‰ÐµÐœÐžÐ¹...'; 
    4043 
    4144$messages['sendingmessage'] = 'Отправка сППбщеМОя...'; 
  • trunk/roundcubemail/program/steps/mail/func.inc

    r261 r267  
    305305  // define list of cols to be displayed 
    306306  $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); 
    307   $a_sort_cols = array('subject', 'date', 'from', 'to'); 
     307  $a_sort_cols = array('subject', 'date', 'from', 'to', 'size'); 
    308308   
    309309  // show 'to' instead of from in sent messages 
    310   if (strtolower($IMAP->get_mailbox_name())=='sent' && ($f = array_search('from', $a_show_cols)) 
     310  if (($IMAP->get_mailbox_name()==$CONFIG['sent_mbox'] || $IMAP->get_mailbox_name()==$CONFIG['drafts_mbox']) && ($f = array_search('from', $a_show_cols)) 
    311311      && !array_search('to', $a_show_cols)) 
    312312    $a_show_cols[$f] = 'to'; 
  • trunk/roundcubemail/program/steps/settings/manage_folders.inc

    r159 r267  
    2020*/ 
    2121 
    22 // init IAMP connection 
     22// init IMAP connection 
    2323rcmail_imap_init(TRUE); 
    2424 
     
    6161    } 
    6262  else if (!$create) 
     63    show_message('errorsaving', 'error'); 
     64  } 
     65 
     66// rename a mailbox 
     67else if ($_action=='rename-folder') 
     68  { 
     69  if (!empty($_GET['_folder_oldname']) && !empty($_GET['_folder_newname'])) 
     70    $rename = $IMAP->rename_mailbox(get_input_value('_folder_oldname', RCUBE_INPUT_GET), trim(get_input_value('_folder_newname', RCUBE_INPUT_GET)), TRUE); 
     71 
     72  if ($rename && $REMOTE_REQUEST) 
     73    { 
     74    $commands = sprintf("this.add_folder_row('%s');", rep_specialchars_output($rename, 'js'));  
     75    $commands .= sprintf("this.remove_folder_row('%s')", rep_specialchars_output($_GET['_folder_oldname'], 'js')); 
     76    rcube_remote_response($commands); 
     77    } 
     78  else if (!$rename && $REMOTE_REQUEST) 
     79    { 
     80    $commands = show_message('errorsaving', 'error'); 
     81    rcube_remote_response($commands); 
     82    } 
     83  else if (!$rename) 
    6384    show_message('errorsaving', 'error'); 
    6485  } 
     
    121142  foreach ($a_unsubscribed as $i => $folder) 
    122143    { 
     144    if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])) 
     145      continue; 
     146 
    123147    $zebra_class = $i%2 ? 'even' : 'odd'; 
    124148    $folder_js = rep_specialchars_output($folder, 'js'); 
     
    177201  } 
    178202 
     203function rcube_rename_folder_form($attrib) 
     204  { 
     205  global $CONFIG, $IMAP, $JS_OBJECT_NAME; 
     206 
     207  list($form_start, $form_end) = get_form_tags($attrib, 'rename-folder'); 
     208  unset($attrib['form']); 
     209 
     210  // return the complete edit form as table 
     211  $out = "$form_start\n"; 
     212 
     213  $a_unsubscribed = $IMAP->list_unsubscribed(); 
     214  $select_folder = new select(array('name' => '_folder_oldname', 'id' => 'rcmfd_oldfolder')); 
     215 
     216  foreach ($a_unsubscribed as $i => $folder) 
     217    { 
     218    if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders']))  
     219      continue; 
     220 
     221    $select_folder->add($folder); 
     222    } 
     223 
     224  $out .= $select_folder->show(); 
     225 
     226  $out .= " to "; 
     227  $inputtwo = new textfield(array('name' => '_folder_newname')); 
     228  $out .= $inputtwo->show(); 
     229 
     230  if (get_boolean($attrib['button'])) 
     231    { 
     232    $button = new input_field(array('type' => 'button', 
     233                                    'value' => rcube_label('rename'), 
     234                                    'onclick' => "$JS_OBJECT_NAME.command('rename-folder',this.form)")); 
     235    $out .= $button->show(); 
     236    } 
     237 
     238  $out .= "\n$form_end"; 
     239 
     240  return $out; 
     241  } 
     242 
    179243 
    180244// add some labels to client 
  • trunk/roundcubemail/skins/default/common.css

    r50 r267  
    4040{ 
    4141  color: #000000; 
     42  outline: none; 
    4243} 
    4344 
  • trunk/roundcubemail/skins/default/templates/addressbook.html

    r179 r267  
    1212 
    1313<div id="abooktoolbar"> 
    14 <roundcube:button command="add" imageAct="/images/buttons/add_contact_act.png" imagePas="/images/buttons/add_contact_pas.png" width="32" height="32" title="newcontact" /> 
    15 <roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletecontact" /> 
    16 <roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="composeto" /> 
    17 <roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="print" /> 
    18 <roundcube:button command="export" imageAct="/images/buttons/download_act.png" imagePas="/images/buttons/download_pas.png" width="32" height="32" title="export" /> 
    19 <roundcube:button command="ldappublicsearch" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="ldapsearch" /> 
     14<roundcube:button command="add" imageSel="/images/buttons/add_contact_sel.png" imageAct="/images/buttons/add_contact_act.png" imagePas="/images/buttons/add_contact_pas.png" width="32" height="32" title="newcontact" /> 
     15<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletecontact" /> 
     16<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="composeto" /> 
     17<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="print" /> 
     18<roundcube:button command="export" imageSel="/images/buttons/download_sel.png" imageAct="/images/buttons/download_act.png" imagePas="/images/buttons/download_pas.png" width="32" height="32" title="export" /> 
     19<roundcube:button command="ldappublicsearch" imageSel="/images/buttons/contacts_sel.png" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="ldapsearch" /> 
    2020</div> 
    2121 
    2222<div id="abookcountbar"> 
    23 <roundcube:button command="previouspage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previouspage" /> 
     23<roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previouspage" /> 
    2424&nbsp;<roundcube:object name="recordsCountDisplay" />&nbsp; 
    25 <roundcube:button command="nextpage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextpage" /> 
     25<roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextpage" /> 
    2626</div> 
    2727 
  • trunk/roundcubemail/skins/default/templates/compose.html

    r261 r267  
    3939 
    4040<div id="messagetoolbar"> 
    41 <roundcube:button command="list" image="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> 
    42 <roundcube:button command="send" imageAct="/images/buttons/send_act.png" imagePas="/images/buttons/send_pas.png" width="32" height="32" title="sendmessage" /> 
    43 <!--<roundcube:button command="contacts" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="addressbook" />--> 
    44 <roundcube:button command="spellcheck" imageAct="/images/buttons/spellcheck_act.png" imagePas="/images/buttons/spellcheck_pas.png" width="32" height="32" title="checkspelling" /> 
    45 <roundcube:button command="add-attachment" imageAct="/images/buttons/attach_act.png" imagePas="/images/buttons/attach_pas.png" width="32" height="32" title="addattachment" /> 
    46 <roundcube:button command="savedraft" imageAct="/images/buttons/drafts_act.png" imagePas="/images/buttons/drafts_pas.png" width="32" height="32" title="savemessage" /> 
     41<roundcube:button command="list" image="/images/buttons/back_act.png" imageSel="/images/buttons/back_sel.png" imageAct="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> 
     42<roundcube:button command="send" imageSel="/images/buttons/send_sel.png" imageAct="/images/buttons/send_act.png" imagePas="/images/buttons/send_pas.png" width="32" height="32" title="sendmessage" /> 
     43<!--<roundcube:button command="contacts" imageSel="/images/buttons/contacts_sel.png" imageAct="/images/buttons/contacts_act.png" imagePas="/images/buttons/contacts_pas.png" width="32" height="32" title="addressbook" />--> 
     44<roundcube:button command="spellcheck" imageSel="/images/buttons/spellcheck_sel.png" imageAct="/images/buttons/spellcheck_act.png" imagePas="/images/buttons/spellcheck_pas.png" width="32" height="32" title="checkspelling" /> 
     45<roundcube:button command="add-attachment" imageSel="/images/buttons/attach_sel.png" imageAct="/images/buttons/attach_act.png" imagePas="/images/buttons/attach_pas.png" width="32" height="32" title="addattachment" /> 
     46<roundcube:button command="savedraft" imageSel="/images/buttons/drafts_sel.png" imageAct="/images/buttons/drafts_act.png" imagePas="/images/buttons/drafts_pas.png" width="32" height="32" title="savemessage" /> 
    4747 
    4848<div id="priority-selector"> 
     
    114114<div><roundcube:label name="attachments" /></div> 
    115115<roundcube:object name="composeAttachmentList" /> 
    116 <p><roundcube:button command="add-attachment" imagePas="/images/buttons/add_pas.png" imageAct="/images/buttons/add_act.png" width="23" height="18" title="addattachment" /> 
     116<p><roundcube:button command="add-attachment" imagePas="/images/buttons/add_pas.png" imageSel="/images/buttons/add_sel.png" imageAct="/images/buttons/add_act.png" width="23" height="18" title="addattachment" /> 
    117117</div> 
    118118 
  • trunk/roundcubemail/skins/default/templates/mail.html

    r253 r267  
    1212 
    1313<div id="messagetoolbar"> 
    14 <roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> 
    15 <roundcube:button command="reply" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> 
    16 <roundcube:button command="reply-all" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> 
    17 <roundcube:button command="forward" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> 
    18 <roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> 
    19 <roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> 
     14<roundcube:button command="checkmail" imageSel="/images/buttons/inbox_sel.png" imageAct="/images/buttons/inbox_act.png" imagePas="/images/buttons/inbox_pas.png" width="32" height="32" title="checkmail" /> 
     15<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> 
     16<roundcube:button command="reply" imageSel="/images/buttons/reply_sel.png" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> 
     17<roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> 
     18<roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> 
     19<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> 
     20<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> 
    2021</div> 
    2122 
     
    2526 
    2627<div id="messagecountbar"> 
    27 <roundcube:button command="previouspage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> 
     28<roundcube:button command="previouspage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> 
    2829&nbsp;<roundcube:object name="messageCountDisplay" />&nbsp; 
    29 <roundcube:button command="nextpage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> 
     30<roundcube:button command="nextpage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> 
    3031</div> 
    3132 
  • trunk/roundcubemail/skins/default/templates/managefolders.html

    r77 r267  
    2929</div> 
    3030</div> 
     31 
     32<div class="settingsbox"> 
     33<div class="boxtitle"><roundcube:label name="renamefolder" /></div> 
     34 
     35<div class="settingspart"> 
     36<roundcube:label name="foldername" />:&nbsp; 
     37<roundcube:object name="renamefolder" form="subscriptionform" /> 
     38<roundcube:button command="rename-folder" type="input" class="button" label="rename" /> 
     39</div> 
     40</div> 
     41 
    3142</div> 
    3243 
  • trunk/roundcubemail/skins/default/templates/message.html

    r166 r267  
    1212 
    1313<div id="messagecountbar"> 
    14 <roundcube:button command="previousmessage" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> 
     14<roundcube:button command="previousmessage" imageSel="/images/buttons/previous_sel.png" imageAct="/images/buttons/previous_act.png" imagePas="/images/buttons/previous_pas.png" width="11" height="11" title="previousmessages" /> 
    1515&nbsp;<roundcube:object name="messageCountDisplay" />&nbsp; 
    16 <roundcube:button command="nextmessage" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> 
     16<roundcube:button command="nextmessage" imageSel="/images/buttons/next_sel.png" imageAct="/images/buttons/next_act.png" imagePas="/images/buttons/next_pas.png" width="11" height="11" title="nextmessages" /> 
    1717</div> 
    1818 
    1919<div id="messagetoolbar"> 
    20 <roundcube:button command="list" image="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> 
    21 <roundcube:button command="compose" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> 
    22 <roundcube:button command="reply" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> 
    23 <roundcube:button command="reply-all" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> 
    24 <roundcube:button command="forward" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> 
    25 <roundcube:button command="delete" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> 
    26 <roundcube:button command="print" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> 
    27 <roundcube:button command="viewsource" imageAct="/images/buttons/source_act.png" imagePas="/images/buttons/source_pas.png" width="32" height="32" title="viewsource" /> 
     20<roundcube:button command="list" image="/images/buttons/back_act.png" imageSel="/images/buttons/back_sel.png" imageAct="/images/buttons/back_act.png" width="32" height="32" title="backtolist" /> 
     21<roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> 
     22<roundcube:button command="reply" imageSel="/images/buttons/reply_sel.png" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> 
     23<roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> 
     24<roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> 
     25<roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> 
     26<roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> 
     27<roundcube:button command="viewsource" imageSel="/images/buttons/source_sel.png" imageAct="/images/buttons/source_act.png" imagePas="/images/buttons/source_pas.png" width="32" height="32" title="viewsource" /> 
    2828<roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mboxlist" /> 
    2929</div> 
Note: See TracChangeset for help on using the changeset viewer.