Revision 45f2fce6 Classes/AddFolderViewController.m

b/Classes/AddFolderViewController.m
49 49
            [self alert:@"Folder Name Required" message:@"Please enter a folder name."];
50 50
        } else {
51 51
            [textField resignFirstResponder];
52
            NSString *objectName;
53
            BOOL objectNameHasTrailingSlash = [textField.text hasSuffix:@"/"];
54
            NSUInteger indexOfFirstSlash = [textField.text rangeOfString:@"/"].location;
55
            
56
            if (!objectNameHasTrailingSlash && indexOfFirstSlash != NSNotFound || 
57
                objectNameHasTrailingSlash && indexOfFirstSlash < textField.text.length - 1) {
58
                [self alert:@"Invalid folder name" message:@"'/' characters are only allowed at the end of folder names"];
59
                return;
60
            }
61
                
62
            if (folder && folder.name) {
63
                objectName = [NSString stringWithFormat:@"%@/%@", [folder fullPath], textField.text];
64
            } else {
65
                objectName = textField.text;
66
            }
67
            
68
            if ([folderViewController.folder.folders objectForKey:objectName] && !allowOverwrite) {
69
                NSString *alertMessage = [NSString stringWithFormat:@"An object with path '%@' in the container '%@' already exists, do you want to replace it?",objectName, folderViewController.container.name];
70
                NSString *alertTitle = @"Apply changes";
71
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:alertTitle
72
                                                                message:alertMessage
73
                                                               delegate:self
74
                                                      cancelButtonTitle:@"Cancel"
75
                                                      otherButtonTitles:@"OK", nil];
76
                [alert show];
77
                return;
78
            }
79

  
52 80
            NSString *activityMessage = @"Adding folder...";
53 81
            
54 82
            // figure out how many folders to create
......
58 86
            
59 87
            // actually create the folders
60 88
            StorageObject *object = [[StorageObject alloc] init];
61
            if (folder && folder.name) {
62
                object.name = object.fullPath = [NSString stringWithFormat:@"%@/%@", [folder fullPath], textField.text];
63
            } else {
64
                object.name = object.fullPath = textField.text;
65
            }
66
            
89
            object.name = object.fullPath = objectName;
67 90
            object.data = [NSData data];
68 91
            object.contentType = @"application/directory";
69 92

  
......
74 97
                                                                                 queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
75 98
            {
76 99
                Folder *newFolder = [[Folder alloc] init];
100
                if (objectNameHasTrailingSlash)
101
                    object.name = [object.name substringToIndex:object.name.length - 1];
77 102
                newFolder.name = [[object.name componentsSeparatedByString:@"/"] lastObject];
103
                if (objectNameHasTrailingSlash)
104
                    newFolder.name = [newFolder.name stringByAppendingString:@"/"];
78 105
                newFolder.parent = folder;
79 106
                newFolder.sharing = folder.sharing;
80 107
                [folder.folders setObject:newFolder forKey:newFolder.name];
81 108
                [folderViewController.tableView reloadData];
109
                allowOverwrite = NO;
82 110
                [activityIndicatorView removeFromSuperviewAndRelease];
83 111
                [self dismissModalViewControllerAnimated:YES];
84 112
                [newFolder release];
113
                [object release];
85 114
                [[NSNotificationCenter defaultCenter] removeObserver:successObserver];
86 115
            }];
87 116
            
88 117
            failureObserver = [[NSNotificationCenter defaultCenter] addObserverForName:@"writeObjectFailed" object:object 
89 118
                                                                                 queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification)
90 119
            {
120
                allowOverwrite = NO;
91 121
                [activityIndicatorView removeFromSuperviewAndRelease];
92 122
                [self alert:@"There was a problem creating this folder." request:[notification.userInfo objectForKey:@"request"]];
93
                
123
                [object release];
94 124
                [[NSNotificationCenter defaultCenter] removeObserver:failureObserver];
95 125
            }];
96 126
            
......
127 157
    return cell;
128 158
}
129 159

  
160
#pragma mark - Alertview delegate
161

  
162
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
163
{
164
    if (buttonIndex == 1) {
165
        allowOverwrite = YES;
166
        [self saveButtonPressed:nil];
167
    } 
168
}
169

  
170

  
130 171
#pragma mark -
131 172
#pragma mark Text Field Delegate
132 173

  

Also available in: Unified diff