anchor.diff:          actions = gui_jq:form_submit_action(<<"ceph_submit">>,
               ceph_submit, [<<"ceph_storage_name">>, <<"ceph_username">>,
                   <<"ceph_key">>, <<"ceph_mon_host">>,
  -                <<"ceph_cluster_name">>, <<"ceph_pool_name">>]),
  +                <<"ceph_cluster_name">>, <<"ceph_pool_name">>,
  +                <<"ceph_timeout">>]),
           body = [
               #textbox{
                   id = <<"ceph_storage_name">>,
  
positive.code:                 end,
                  State;
  
              {dio_submit, <<>>, _} ->
                  onepanel_gui_utils:message(error, <<"Please provide storage name.">>),
                  State;
  
              {dio_submit, _, <<>>} ->
                  onepanel_gui_utils:message(error, <<"Please provide mount point.">>),
                  State;
  
              {dio_submit, StorageName, MountPoint} ->
                  case onepanel_gui_logic:add_storage([{StorageName, [{type, <<"posix">>}, {mountPoint, MountPoint}]}]) of
                      ok ->
                          onepanel_gui_utils:message(success, <<"Storage successfully added.">>),
                          clear_textboxes(),
  
negative.code:     Hostname = gui_ctx:postback_param(<<"s3_hostname">>),
      IamHostname = gui_ctx:postback_param(<<"iam_hostname">>),
      BucketName = gui_ctx:postback_param(<<"s3_bucket_name">>),
      BlockSize = gui_ctx:postback_param(<<"s3_block_size">>),
      Timeout = gui_ctx:postback_param(<<"s3_timeout">>),
      get(comet) ! {s3_submit, strip(StorageName), strip(AccessKey),
          strip(SecretKey), strip(Hostname), strip(IamHostname), strip(BucketName),
          strip(BlockSize), strip(Timeout)};
  
  event(swift_submit) ->
      gui_jq:show(<<"main_spinner">>),
      StorageName = gui_ctx:postback_param(<<"swift_storage_name">>),
      Username = gui_ctx:postback_param(<<"swift_username">>),
      Password = gui_ctx:postback_param(<<"swift_password">>),
      AuthUrl = gui_ctx:postback_param(<<"swift_auth_url">>),
      ContainerName = gui_ctx:postback_param(<<"swift_container_name">>),
      TenantName = gui_ctx:postback_param(<<"swift_tenant_name">>),
      BlockSize = gui_ctx:postback_param(<<"swift_block_size">>),
      Timeout = gui_ctx:postback_param(<<"swift_timeout">>),
      get(comet) ! {swift_submit, strip(StorageName), strip(Username), strip(Password),
          strip(AuthUrl), strip(ContainerName), strip(TenantName), strip(BlockSize),
          strip(Timeout)};
  
  event({close_message, MessageId}) ->
      gui_jq:hide(MessageId);
  
  event(terminate) ->
      ok.