Aleksander Machniak
2013-05-31 3863a9d2c5515fe4c61c433503450531098358ec
Added user preference to open all popups as standard windows
7 files modified
41 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 4 ●●●● patch | view | raw | blame | history
program/include/rcmail_output_html.php 1 ●●●● patch | view | raw | blame | history
program/js/app.js 11 ●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 1 ●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 22 ●●●● patch | view | raw | blame | history
program/steps/settings/save_prefs.inc 1 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Added user preference to open all popups as standard windows
- Fix unintentional compose window resize (#1489114)
- Fix performance regression in text wrapping function (#1489133)
- Fix connection to posgtres db using unix socket (#1489132)
config/main.inc.php.dist
@@ -723,6 +723,10 @@
// skin name: folder from skins/
$rcmail_config['skin'] = 'larry';
// Enables using standard browser windows (that can be handled as tabs)
// instead of popup windows
$rcmail_config['standard_windows'] = false;
// show up to X items in messages list view
$rcmail_config['mail_pagesize'] = 50;
program/include/rcmail_output_html.php
@@ -67,6 +67,7 @@
        //$this->framed = $framed;
        $this->set_env('task', $task);
        $this->set_env('x_frame_options', $this->config->get('x_frame_options', 'sameorigin'));
        $this->set_env('standard_windows', (bool) $this->config->get('standard_windows'));
        // add cookie info
        $this->set_env('cookie_domain', ini_get('session.cookie_domain'));
program/js/app.js
@@ -1629,6 +1629,13 @@
  // open popup window
  this.open_window = function(url, small, toolbar)
  {
    var wname = 'rcmextwin' + new Date().getTime();
    url += (url.match(/\?/) ? '&' : '?') + '_extwin=1';
    if (this.env.standard_windows)
      extwin = window.open(url, wname);
    else {
    var win = this.is_framed() ? parent.window : window,
      page = $(win),
      page_width = page.width(),
@@ -1637,10 +1644,10 @@
      h = page_height, // always use same height
      l = (win.screenLeft || win.screenX) + 20,
      t = (win.screenTop || win.screenY) + 20,
      wname = 'rcmextwin' + new Date().getTime(),
      extwin = window.open(url + (url.match(/\?/) ? '&' : '?') + '_extwin=1', wname,
        extwin = window.open(url, wname,
        'width='+w+',height='+h+',top='+t+',left='+l+',resizable=yes,location=no,scrollbars=yes'
        +(toolbar ? ',toolbar=yes,menubar=yes,status=yes' : ',toolbar=no,menubar=no,status=no'));
    }
    // write loading... message to empty windows
    if (!url && extwin.document) {
program/localization/en_US/labels.inc
@@ -472,6 +472,7 @@
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Messages forwarding';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
program/steps/settings/func.inc
@@ -152,6 +152,8 @@
    $blocks = array(
      'main'    => array('name' => Q(rcube_label('mainoptions'))),
      'skin'    => array('name' => Q(rcube_label('skin'))),
      'browser' => array('name' => Q(rcube_label('browseroptions'))),
    );
    // language selection
@@ -263,8 +265,6 @@
        $field_id = 'rcmfd_skin';
        $input_skin = new html_radiobutton(array('name'=>'_skin'));
        $blocks['skin'] = array('name' => Q(rcube_label('skin')),);
        foreach($skins as $skin) {
          $thumbnail = "./skins/$skin/thumbnail.png";
          if (!is_file($thumbnail))
@@ -290,17 +290,27 @@
      }
    }
    // standard_windows option decides if new windows should be
    // opened as popups or standard windows (which can be handled by browsers as tabs)
    if (!isset($no_override['standard_windows'])) {
      $field_id = 'rcmfd_standard_windows';
      $checkbox = new html_checkbox(array('name' => '_standard_windows', 'id' => $field_id, 'value' => 1));
      $blocks['browser']['options']['standard_windows'] = array(
        'title' => html::label($field_id, Q(rcube_label('standardwindows'))),
        'content' => $checkbox->show($config['standard_windows']?1:0),
      );
    }
    $product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
    $RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
      JS_OBJECT_NAME, JQ($product_name)), 'foot');
    $blocks['browser'] = array(
      'name' => Q(rcube_label('browseroptions')),
      'options' => array('mailtoprotohandler' => array(
    $blocks['browser']['options']['mailtoprotohandler'] = array(
        'content' => html::a(array(
          'href' => '#',
          'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))),
        )),
    );
    break;
program/steps/settings/save_prefs.inc
@@ -34,6 +34,7 @@
      'time_format'  => isset($_POST['_time_format']) ? get_input_value('_time_format', RCUBE_INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'),
      'prettydate'   => isset($_POST['_pretty_date']) ? TRUE : FALSE,
      'refresh_interval' => isset($_POST['_refresh_interval']) ? intval($_POST['_refresh_interval'])*60 : $CONFIG['refresh_interval'],
      'standard_windows' => isset($_POST['_standard_windows']) ? TRUE : FALSE,
      'skin'         => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'],
    );