ソースを参照

Filter only '/' character in user input when version of server is 8.1 or later

masensio 9 年 前
コミット
afaa2879d1

+ 1 - 1
owncloud-android-library

@@ -1 +1 @@
-Subproject commit e48aa9c30447d67b0f8ee2054e1fc826108fc5ec
+Subproject commit 9fc332eef9733ad1d857ea2b470b260b271fd3ca

+ 13 - 1
src/com/owncloud/android/files/FileOperationsHelper.java

@@ -316,5 +316,17 @@ public class FileOperationsHelper {
         mWaitingForOpId = waitingForOpId;
     }
     
-    
+    /**
+     *  @return 'True' if the server doesn't need to check forbidden characters
+     */
+    public boolean isVersionWithForbiddenCharacters() {
+        if (mFileActivity.getAccount() != null) {
+            AccountManager accountManager = AccountManager.get(mFileActivity);
+
+            String version = accountManager.getUserData(mFileActivity.getAccount(),
+                    Constants.KEY_OC_VERSION);
+            return (new OwnCloudVersion(version)).isVersionWithForbiddenCharacters();
+        }
+        return false;
+    }
 }

+ 8 - 0
src/com/owncloud/android/services/OperationsService.java

@@ -34,6 +34,7 @@ import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
 import com.owncloud.android.lib.common.OwnCloudCredentials;
 import com.owncloud.android.lib.common.OwnCloudCredentialsFactory;
+import com.owncloud.android.lib.common.accounts.AccountUtils;
 import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException;
 import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -54,6 +55,7 @@ import com.owncloud.android.operations.SynchronizeFolderOperation;
 import com.owncloud.android.operations.UnshareLinkOperation;
 
 import android.accounts.Account;
+import android.accounts.AccountManager;
 import android.accounts.AccountsException;
 import android.accounts.AuthenticatorException;
 import android.accounts.OperationCanceledException;
@@ -442,6 +444,12 @@ public class OperationsService extends Service {
                                     mService);
                             mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
                                     getClientFor(ocAccount, mService);
+
+                            AccountManager am = AccountManager.get(mService.getApplicationContext());
+                            String version = am.getUserData(mLastTarget.mAccount,
+                                    AccountUtils.Constants.KEY_OC_VERSION);
+                            mOwnCloudClient.setOwnCloudVersion(version);
+
                             mStorageManager = new FileDataStorageManager(
                                     mLastTarget.mAccount, 
                                     mService.getContentResolver()

+ 8 - 4
src/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java

@@ -21,6 +21,7 @@
 package com.owncloud.android.ui.dialog;
 
 import com.actionbarsherlock.app.SherlockDialogFragment;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.files.FileUtils;
@@ -52,8 +53,8 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener {
     /**
      * Public factory method to create new CreateFolderDialogFragment instances.
      * 
-     * @param file            File to remove.
-     * @return                Dialog ready to show.
+     * @param parentFolder            Folder to create
+     * @return                        Dialog ready to show.
      */
     public static CreateFolderDialogFragment newInstance(OCFile parentFolder) {
         CreateFolderDialogFragment frag = new CreateFolderDialogFragment();
@@ -106,8 +107,11 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener {
                         Toast.LENGTH_LONG).show();
                 return;
             }
-            
-            if (!FileUtils.isValidName(newFolderName)) {
+
+
+            if (!FileUtils.isValidName(newFolderName,
+                    ((ComponentsGetter)getSherlockActivity()).
+                            getFileOperationsHelper().isVersionWithForbiddenCharacters())) {
                 Toast.makeText(
                         getSherlockActivity(), 
                         R.string.filename_forbidden_characters, 

+ 5 - 2
src/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java

@@ -119,7 +119,9 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener {
                 return;
             }
             
-            if (!FileUtils.isValidName(newFileName)) {
+            if (!FileUtils.isValidName(newFileName,
+                    ((ComponentsGetter)getSherlockActivity()).
+                            getFileOperationsHelper().isVersionWithForbiddenCharacters())) {
                 Toast.makeText(
                         getSherlockActivity(), 
                         R.string.filename_forbidden_characters, 
@@ -127,7 +129,8 @@ extends SherlockDialogFragment implements DialogInterface.OnClickListener {
                 return;
             }
 
-            ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper().renameFile(mTargetFile, newFileName);
+            ((ComponentsGetter)getSherlockActivity()).getFileOperationsHelper().
+                    renameFile(mTargetFile, newFileName);
         }
     }
 }