Merge branch '2015.11-develop' into 2016.03
authorPhilipp Schüle <p.schuele@metaways.de>
Wed, 18 May 2016 12:44:55 +0000 (14:44 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 18 May 2016 12:44:55 +0000 (14:44 +0200)
Conflicts:
tine20/Calendar/Config.php
tine20/Expressomail/js/AclsGrid.js
tine20/Tinebase/js/LoginPanel.js

Change-Id: I180380d4528260ba3469dcacfe800ccced0b7c51

22 files changed:
1  2 
tine20/Admin/js/user/EditDialog.js
tine20/Calendar/Config.php
tine20/Calendar/Frontend/Json.php
tine20/Calendar/js/Calendar.js
tine20/Expressodriver/js/ExceptionHandler.js
tine20/Expressodriver/js/NodeGridPanel.js
tine20/Expressomail/js/AccountEditDialog.js
tine20/Expressomail/js/AclsEditDialog.js
tine20/Expressomail/js/AclsGrid.js
tine20/Expressomail/js/ContactGrid.js
tine20/Expressomail/js/Expressomail.js
tine20/Expressomail/js/GridPanel.js
tine20/Expressomail/js/MessageEditDialog.js
tine20/Expressomail/js/Model.js
tine20/Expressomail/js/TreeContextMenu.js
tine20/Expressomail/js/sieve/RuleEditDialog.js
tine20/Felamimail/Controller/Account.php
tine20/Felamimail/Controller/Message.php
tine20/Filemanager/js/ExceptionHandler.js
tine20/Setup/Controller.php
tine20/Tinebase/js/LoginPanel.js
tine20/Tinebase/js/tineInit.js

Simple merge
@@@ -371,9 -382,10 +382,10 @@@ class Calendar_Config extends Tinebase_
              ),
              'default'               => array(
                  self::FEATURE_SPLIT_VIEW                        => true,
 -                self::FEATURE_YEAR_VIEW                         => true,
 +                self::FEATURE_YEAR_VIEW                         => false,
                  self::FEATURE_EXTENDED_EVENT_CONTEXT_ACTIONS    => true,
                  self::FEATURE_COLOR_BY                          => true,
+                 self::FEATURE_RECUR_EXCEPT                      => false,
              ),
          ),
      );
Simple merge
Simple merge
@@@ -57,19 -56,17 +57,19 @@@ Tine.Expressomail.AclsGrid = Ext.extend
                  width: 55
              }),
              new Ext.ux.grid.CheckColumn({
-                 header: _('Write'),
-                 tooltip: _('Write and delete messages from folders'),
+                 header: i18n._('Write'),
+                 tooltip: i18n._('Write and delete messages from folders'),
                  dataIndex: 'writeacl',
                  width: 55
 -            }),
 -            new Ext.ux.grid.CheckColumn({
 +            })
 +        ];
 +        if (this.enableSendAs) {
 +            this.configColumns.push(new Ext.ux.grid.CheckColumn({
-                 header: _('Send as'),
-                 tooltip: _('Send as folder owner'),
+                 header: i18n._('Send as'),
+                 tooltip: i18n._('Send as folder owner'),
                  dataIndex: 'sendacl',
 -                width: 55
 -            })            
 -        ];
 +                width: 55,
 +            }));
 +        }
      }
  });
Simple merge
Simple merge
Simple merge
@@@ -310,67 -294,9 +310,67 @@@ Tine.Expressomail.setTreeContextMenus 
          }
      };
  
 +    //export mail dir scheduler
 +    var scheduleFolderExportAction = {
 +        text: this.app.i18n._('Export Folder'),
 +        iconCls: 'action_export',
 +        scope: this,
 +        handler: function() {
 +            if (this.ctxNode) {
 +                var folderId = this.ctxNode.attributes.folder_id,
 +                    folder = this.app.getFolderStore().getById(folderId),
 +                    folderName = folder.get('globalname');
 +
 +                var baseStyle = 'border:1px solid rgb(214,133,2);padding:4px;margin:5px;background-color: rgb(250,239,165);';
 +                var confirmQuestion = this.app.i18n._('Please, do you confirm your request to schedule a task to export all mail data contained in the following folder?')
 +                                                    + '<div style="' + baseStyle + '">' + setFolderName(folderName) + '</div><p>'
 +                                                    + this.app.i18n._('<b>NOTE:</b> if you choose a folder root, all child folders will be included too.<br/>')
 +                                                    + this.app.i18n._('<b>IMPORTANT:</b> all events related to this action will be comunicated to your e-mail address.')
 +                                                    + '</p>';
 +
 +                Ext.MessageBox.confirm(this.app.i18n._('Scheduler confirm'), confirmQuestion, function (btn) {
 +                    if (btn == 'yes') {
 +                        Ext.MessageBox.wait(this.app.i18n.gettext('Please wait'), this.app.i18n.gettext('Scheduling your request...'));
 +
 +                        var params = {
 +                            method: 'Expressomail.schedulerFolder',
 +                            folder: folderId
 +                        };
 +
 +                        Ext.Ajax.request({
 +                            params: params,
 +                            scope: this,
 +                            timeout: 15000, // 15s
 +                            success: function(_result, _request){
 +                                var scheduled = Ext.util.JSON.decode(_result.responseText);
 +                                if(scheduled.status === 'failure'){
 +                                    Ext.MessageBox.alert(
 +                                            this.app.i18n._('Failed'),
 +                                            this.app.i18n._(scheduled.message)
 +                                    );
 +                                } else{
 +                                    Ext.MessageBox.show({
 +                                        buttons: Ext.Msg.OK,
 +                                        icon: Ext.MessageBox.INFO,
 +                                        title: this.app.i18n._('Export Folder'),
 +                                        msg: this.app.i18n._('Your scheduler was successfully done! Pay attention at you mail box for notifications.')
 +                                    });
 +                                }
 +                            },
 +                            failure: function (_result, _request) {
 +                                var msgError = Ext.util.JSON.decode(_result.responseText);
 +                                Ext.MessageBox.alert(this.app.i18n._('Failed'), this.app.i18n._(msgError.message));
 +                            }
 +                        });
 +                    }
 +                }, this);
 +            }
 +        }
 +    };
 +
      // mutual config options
      var config = {
-         nodeName: _('Folder'),
+         nodeName: i18n._('Folder'),
          scope: this,
          backend: 'Expressomail',
          backendModel: 'Folder'
@@@ -29,9 -29,9 +29,9 @@@ Tine.Filemanager.handleRequestExceptio
              Ext.MessageBox.show({
                  buttons: Ext.Msg.OK,
                  icon: Ext.MessageBox.WARNING,
-                 title: _('Service Unavailable'),
+                 title: i18n._('Service Unavailable'),
                  msg: String.format(app.i18n._('The Filemanager is not configured correctly. Please refer to the {0}Tine 2.0 Admin FAQ{1} for configuration advice or contact your administrator.'),
 -                    '<a href="http://www.tine20.org/wiki/index.php/Admin_FAQ#The_message_.22filesdir_config_value_not_set.22_appears_in_the_logfile_and_I_can.27t_open_the_Filemanager" target="_blank">',
 +                    '<a href="http://wiki.tine20.org/Admin_FAQ#The_message_.22filesdir_config_value_not_set.22_appears_in_the_logfile_and_I_can.27t_open_the_Filemanager" target="_blank">',
                      '</a>')
              });
              break;
Simple merge
@@@ -227,15 -227,15 +227,15 @@@ Tine.Tinebase.LoginPanel = Ext.extend(E
                      '</ul><br/>'
                  }, {
                      cls: 'tb-login-big-label',
-                     html: _('Translations')
+                     html: i18n._('Translations')
                  }, {
-                     html: Ext.isDefined(percentageCompleted) ? ('<p>' + String.format(_('Translation state of {0}: {1}%.'), language, percentageCompleted) + '</p>') : ''
+                     html: Ext.isDefined(percentageCompleted) ? ('<p>' + String.format(i18n._('Translation state of {0}: {1}%.'), language, percentageCompleted) + '</p>') : ''
                  }, {
-                     html: '<p>' + String.format(_('If the state of your language is not satisfying, or if you miss a language, please consider becoming a {0} translator.'), Tine.title) + '</p>'
+                     html: '<p>' + String.format(i18n._('If the state of your language is not satisfying, or if you miss a language, please consider becoming a {0} translator.'), Tine.title) + '</p>'
                  }, {
                      html: '<br/><ul>' +
-                         '<li><a target="_blank" href="http://wiki.tine20.org/Contributors/Howtos/Translations" border="0">' + String.format(_('{0} Translation Howto'), Tine.title) + '</a></li>' +
-                         '<li><a target="_blank" href="https://www.transifex.com/projects/p/tine20/" border="0">' + _('Detailed Language Statistics') + '</a></li>'
 -                        '<li><a target="_blank" href="http://www.tine20.org/wiki/index.php/Contributors/Howtos/Translations" border="0">' + String.format(i18n._('{0} Translation Howto'), Tine.title) + '</a></li>' +
++                        '<li><a target="_blank" href="http://wiki.tine20.org/Contributors/Howtos/Translations" border="0">' + String.format(i18n._('{0} Translation Howto'), Tine.title) + '</a></li>' +
+                         '<li><a target="_blank" href="https://www.transifex.com/projects/p/tine20/" border="0">' + i18n._('Detailed Language Statistics') + '</a></li>'
                      + '</ul>'
                  }]
              });
Simple merge