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