alecpl
2011-05-03 7fc056c3ffadefc48bb9f6f91f1ef783c253f5fb
program/js/app.js
@@ -324,22 +324,9 @@
          }
        }
        if ((this.env.action=='add' || this.env.action=='edit') && this.gui_objects.editform) {
        if ((this.env.action == 'add' || this.env.action == 'edit') && this.gui_objects.editform) {
          this.enable_command('save', true);
          this.enable_command('upload-photo', this.env.coltypes.photo ? true : false);
          this.enable_command('delete-photo', this.env.coltypes.photo && this.env.action == 'edit');
          for (var col in this.env.coltypes)
            this.init_edit_field(col, null);
          $('.contactfieldgroup .row a.deletebutton').click(function(){ ref.delete_edit_field(this); return false });
          $('select.addfieldmenu').change(function(e){
            ref.insert_edit_field($(this).val(), $(this).attr('rel'), this);
            this.selectedIndex = 0;
          });
          $("input[type='text']:visible").first().focus();
          this.init_contact_form();
        }
        else if (this.gui_objects.qsearchbox) {
          this.enable_command('search', 'reset-search', 'moveto', true);
@@ -356,14 +343,14 @@
      case 'settings':
        this.enable_command('preferences', 'identities', 'save', 'folders', true);
        if (this.env.action=='identities') {
        if (this.env.action == 'identities') {
          this.enable_command('add', this.env.identities_level < 2);
        }
        else if (this.env.action=='edit-identity' || this.env.action=='add-identity') {
        else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
          this.enable_command('add', this.env.identities_level < 2);
          this.enable_command('save', 'delete', 'edit', 'toggle-editor', true);
        }
        else if (this.env.action=='folders') {
        else if (this.env.action == 'folders') {
          this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
        }
        else if (this.env.action == 'edit-folder' && this.gui_objects.editform) {
@@ -486,13 +473,13 @@
    // trigger plugin hooks
    this.triggerEvent('actionbefore', {props:props, action:command});
    var event_ret = this.triggerEvent('before'+command, props);
    if (event_ret !== undefined) {
    var ret = this.triggerEvent('before'+command, props);
    if (ret !== undefined) {
      // abort if one the handlers returned false
      if (event_ret === false)
      if (ret === false)
        return false;
      else
        props = event_ret;
        props = ret;
    }
    // process internal command
@@ -821,10 +808,10 @@
      case 'compose':
        var url = this.env.comm_path+'&_action=compose';
        if (this.task=='mail') {
        if (this.task == 'mail') {
          url += '&_mbox='+urlencode(this.env.mailbox);
          if (this.env.mailbox==this.env.drafts_mailbox) {
          if (this.env.mailbox == this.env.drafts_mailbox) {
            var uid;
            if (uid = this.get_single_uid())
              url += '&_draft_uid='+uid;
@@ -833,7 +820,7 @@
             url += '&_to='+urlencode(props);
        }
        // modify url if we're in addressbook
        else if (this.task=='addressbook') {
        else if (this.task == 'addressbook') {
          // switch to mail compose step directly
          if (props && props.indexOf('@') > 0) {
            url = this.get_task_url('mail', url);
@@ -842,24 +829,21 @@
          }
          // use contact_id passed as command parameter
          var a_cids = [];
          var n, len, a_cids = [];
          if (props)
            a_cids.push(props);
          // get selected contacts
          else if (this.contact_list) {
            var selection = this.contact_list.get_selection();
            for (var n=0; n<selection.length; n++)
            for (n=0, len=selection.length; n<len; n++)
              a_cids.push(selection[n]);
          }
          if (a_cids.length)
            this.http_request('mailto', '_cid='+urlencode(a_cids.join(','))+'&_source='+urlencode(this.env.source), true);
            this.http_post('mailto', {_cid: a_cids.join(','), _source: this.env.source}, true);
          break;
        }
        // don't know if this is necessary...
        url = url.replace(/&_framed=1/, '');
        this.redirect(url);
        break;
@@ -3187,16 +3171,12 @@
    if (!form)
      return false;
    // get file input fields
    var send = false;
    for (var n=0; n<form.elements.length; n++)
      if (form.elements[n].type=='file' && form.elements[n].value) {
        send = true;
        break;
      }
    // get file input field, count files on capable browser
    var field = $('input[type=file]', form).get(0),
      files = field.files ? field.files.length : field.value ? 1 : 0;
    // create hidden iframe and post upload form
    if (send) {
    if (files) {
      var frame_name = this.async_upload_form(form, 'upload', function(e) {
        var d, content = '';
        try {
@@ -3219,7 +3199,7 @@
      });
      // display upload indicator and cancel button
      var content = this.get_label('uploading'),
      var content = this.get_label('uploading' + (files > 1 ? 'many' : '')),
        ts = frame_name.replace(/^rcmupload/, '');
      if (this.env.loadingicon)
@@ -3241,8 +3221,7 @@
    if (!this.gui_objects.attachmentlist)
      return false;
    var li = $('<li>').attr('id', name).html(att.html);
    var indicator;
    var indicator, li = $('<li>').attr('id', name).html(att.html);
    // replace indicator's li
    if (upload_id && (indicator = document.getElementById(upload_id))) {
@@ -3269,7 +3248,7 @@
      return false;
    var list = this.gui_objects.attachmentlist.getElementsByTagName("li");
    for (i=0;i<list.length;i++)
    for (i=0; i<list.length; i++)
      if (list[i].id == name)
        this.gui_objects.attachmentlist.removeChild(list[i]);
  };
@@ -3598,7 +3577,7 @@
    if (this.ksearch_pane)
      this.ksearch_pane.hide();
  };
   };
  /*********************************************************/
@@ -3838,6 +3817,28 @@
    this.contact_list.insert_row(row);
    this.enable_command('export', (this.contact_list.rowcount > 0));
  };
  this.init_contact_form = function()
  {
    var ref = this, col;
    this.set_photo_actions($('#ff_photo').val());
    for (col in this.env.coltypes)
      this.init_edit_field(col, null);
    $('.contactfieldgroup .row a.deletebutton').click(function() {
      ref.delete_edit_field(this);
      return false;
    });
    $('select.addfieldmenu').change(function(e) {
      ref.insert_edit_field($(this).val(), $(this).attr('rel'), this);
      this.selectedIndex = 0;
    });
    $("input[type='text']:visible").first().focus();
  };
  this.group_create = function()
@@ -4136,28 +4137,33 @@
      this.photo_upload_id = this.set_busy(true, 'uploading');
    }
  };
  this.replace_contact_photo = function(id)
  {
    $('#ff_photo').val(id);
    var buttons = this.buttons['upload-photo'];
    for (var n=0; n < buttons.length; n++)
      $('#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto'));
    var img_src = id == '-del-' ? this.env.photo_placeholder :
      this.env.comm_path + '&_action=photo&_source=' + this.env.source + '&_cid=' + this.env.cid + '&_photo=' + id;
    this.set_photo_actions(id);
    $(this.gui_objects.contactphoto).children('img').attr('src', img_src);
    this.enable_command('delete-photo', id != '-del-');
  };
  this.photo_upload_end = function()
  {
    this.set_busy(false, null, this.photo_upload_id);
    delete this.photo_upload_id;
  };
  this.set_photo_actions = function(id)
  {
    var n, buttons = this.buttons['upload-photo'];
    for (n=0; n < buttons.length; n++)
      $('#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto'));
    $('#ff_photo').val(id);
    this.enable_command('upload-photo', this.env.coltypes.photo ? true : false);
    this.enable_command('delete-photo', this.env.coltypes.photo && id != '-del-');
  };
  /*********************************************************/
  /*********        user settings methods          *********/