// First find out whether to fetch a file or accept an upload
if ($serendipity['POST']['imageurl'] != '' && $serendipity['POST']['imageurl'] != 'http://') {
- if (!empty($serendipity['POST']['target_filename'])) {
- $tfile = $serendipity['POST']['target_filename'];
+ if (!empty($serendipity['POST']['target_filename'][1])) {
+ $tfile = $serendipity['POST']['target_filename'][1];
} else {
$tfile = basename($serendipity['POST']['imageurl']);
}
}
$tfile = serendipity_uploadSecure($tfile);
- $serendipity['POST']['target_directory'] = serendipity_uploadSecure($serendipity['POST']['target_directory'], true);
- $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'] . $tfile;
+ $serendipity['POST']['target_directory'][1] = serendipity_uploadSecure($serendipity['POST']['target_directory'][1], true);
+ $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][1] . $tfile;
if (file_exists($target)) {
echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
printf(FILE_FETCHED . '<br />', $serendipity['POST']['imageurl'], $tfile);
// Create thumbnail
- if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory']) ) {
+ if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][1]) ) {
echo THUMB_CREATED_DONE . '<br />';
}
// Insert into database
- $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'], $authorid);
+ $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][1], $authorid);
}
}
}
} else {
- if (!empty($serendipity['POST']['target_filename'])) {
- $tfile = $serendipity['POST']['target_filename'];
- } else {
- $tfile = $_FILES['userfile']['name'];
- }
-
- if ($serendipity['serendipityUserlevel'] < USERLEVEL_ADMIN && preg_match('@\.(php[34]?|[ps]html?)$@i', $tfile)) {
- printf(ERROR_FILE_FORBIDDEN, $tfile);
+ if (!is_array($serendipity['POST']['target_filename'])) {
break;
}
-
- $tfile = serendipity_uploadSecure($tfile);
- $serendipity['POST']['target_directory'] = serendipity_uploadSecure($serendipity['POST']['target_directory'], true);
- $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'] . $tfile;
-
- if (file_exists($target)) {
- echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
- } else {
- // Accept file
- if (move_uploaded_file($_FILES['userfile']['tmp_name'], $target)) {
- printf(FILE_UPLOADED . '<br />', $_FILES['userfile']['name'], $target);
- @umask(0000);
- @chmod($target, 0664);
-
- // Create thumbnail
- if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory']) ) {
- echo THUMB_CREATED_DONE . '<br />';
- }
- // Insert into database
- $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'], $authorid);
+
+ foreach($serendipity['POST']['target_filename'] AS $idx => $target_filename) {
+ $uploadfile = &$_FILES['serendipity']['name']['userfile'][$idx];
+ $uploadtmp = &$_FILES['serendipity']['tmp_name']['userfile'][$idx];
+ if (!empty($target_filename)) {
+ $tfile = $target_filename;
+ } elseif (!empty($uploadfile)) {
+ $tfile = $uploadfile;
+ } else {
+ // skip empty array
+ continue;
+ }
+
+ if ($serendipity['serendipityUserlevel'] < USERLEVEL_ADMIN && preg_match('@\.(php[34]?|[ps]html?)$@i', $tfile)) {
+ printf(ERROR_FILE_FORBIDDEN, $tfile);
+ echo '<br />';
+ continue;
+ }
+
+ $tfile = serendipity_uploadSecure($tfile);
+ $serendipity['POST']['target_directory'][$idx] = serendipity_uploadSecure($serendipity['POST']['target_directory'][$idx], true);
+ $target = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $serendipity['POST']['target_directory'][$idx] . $tfile;
+
+ if (file_exists($target)) {
+ echo '(' . $target . ') ' . ERROR_FILE_EXISTS_ALREADY;
+ echo '<br />';
} else {
- echo ERROR_UNKNOWN_NOUPLOAD . '<br />';
+ // Accept file
+ if (move_uploaded_file($uploadtmp, $target)) {
+ printf(FILE_UPLOADED . '<br />', $uploadfile, $target);
+ @umask(0000);
+ @chmod($target, 0664);
+
+ // Create thumbnail
+ if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx]) ) {
+ echo THUMB_CREATED_DONE . '<br />';
+ }
+ // Insert into database
+ $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid);
+ } else {
+ echo ERROR_UNKNOWN_NOUPLOAD . '<br />';
+ }
}
}
}
<?php echo ADD_MEDIA_BLAHBLAH; ?>
<script type="text/javascript">
- function getfilename(field, value) {
+ function getfilename(value) {
re = /^.+[\/\\]+?(.+)$/;
- document.getElementById(field).value = value.replace(re, "$1");
+ return value.replace(re, "$1");
+ }
+
+ function hideForeign() {
+ document.getElementById('foreign_upload').style.display = 'none';
+ document.getElementById('imageurl').value = '';
+ }
+
+ var fieldcount = 1;
+ function addField() {
+ fieldcount++;
+
+ fields = document.getElementById('upload_template').cloneNode(true);
+ fields.id = 'upload_form_' + fieldcount;
+ fields.style.display = 'block';
+
+ // Now, this is easy... ;-)
+ userfile = fields.childNodes[1].childNodes[1].childNodes[0].childNodes[3].childNodes[0];
+ targetfilename = fields.childNodes[1].childNodes[1].childNodes[4].childNodes[3].childNodes[0];
+ targetdir = fields.childNodes[1].childNodes[1].childNodes[6].childNodes[3].childNodes[0];
+ columncount = fields.childNodes[3].childNodes[0];
+
+ userfile.id = 'userfile_' + fieldcount;
+ userfile.name = 'serendipity[userfile][' + fieldcount + ']';
+
+ targetfilename.id = 'target_filename_' + fieldcount;
+ targetfilename.name = 'serendipity[target_filename][' + fieldcount + ']';
+
+ targetdir.id = 'target_directory_' + fieldcount;
+ targetdir.name = 'serendipity[target_directory][' + fieldcount + ']';
+
+ columncount.id = 'column_count_' + fieldcount;
+ columncount.name = 'serendipity[column_count][' + fieldcount + ']';
+
+ iNode = document.getElementById('upload_form');
+ iNode.parentNode.insertBefore(fields, iNode);
+ }
+
+ var inputStorage = new Array();
+ function checkInputs() {
+ for (i = 1; i <= fieldcount; i++) {
+ if (!inputStorage[i]) {
+ fillInput(i, i);
+ } else if (inputStorage[i] == document.getElementById('target_filename_' + i).value) {
+ fillInput(i, i);
+ }
+ }
+ }
+
+ // TODO: This does not yet work as expected and if an imageurl is entered it will overwrite the custom name again
+ function fillInput(source, target) {
+ // First field is a special value for foreign URLs instead of uploaded files
+ if (source == 1) {
+ sourceval = getfilename(document.getElementById('imageurl').value);
+ } else {
+ sourceval = getfilename(document.getElementById('userfile_' + source).value);
+ }
+
+ if (sourceval.length > 0) {
+ document.getElementById('target_filename_' + target).value = sourceval;
+ inputStorage[target] = document.getElementById('target_filename_' + target).value;
+ }
+
+ // Display filename in duplicte form as well!
+ if (source == 1 && target == 1) {
+ fillInput(1, 2);
+ }
}
</script>
}
}
?>
- <table>
+ <table id="foreign_upload">
<tr>
<td nowrap="nowrap"><?php echo ENTER_MEDIA_URL; ?></td>
- <td><input type="text" name="serendipity[imageurl]" onblur="getfilename('target_filename', this.value);" onchange="getfilename('target_filename', this.value);" onkeyup="getfilename('target_filename', this.value);" value="" size="40" /></td>
+ <td><input type="text" id="imageurl" name="serendipity[imageurl]"
+ onchange="checkInputs()"
+ value=""
+ size="40" /></td>
</tr>
<tr>
<td nowrap="nowrap"><?php echo ENTER_MEDIA_URL_METHOD; ?></td>
<tr>
<td align="center" colspan="2"><b> - <?php echo WORD_OR; ?> - </b></td>
</tr>
+ </table>
+ <!-- WARNING: Do not change spacing or breaks below. If you do, the JavaScript childNodes need to be edited. Newlines count as nodes! -->
+ <div id="upload_template">
+ <table style="margin-top: 35px" id="upload_table">
<tr>
<td nowrap='nowrap'><?php echo ENTER_MEDIA_UPLOAD; ?></td>
- <td><input name="userfile" onchange="getfilename('target_filename', this.value);" onblur="getfilename('target_filename', this.value);" onkeyup="getfilename('target_filename', this.value);" type="file" /></td>
+ <td><input id="userfile_1" name="serendipity[userfile][1]"
+ onchange="checkInputs();"
+ type="file" /></td>
</tr>
<tr>
<tr>
<td><?php echo SAVE_FILE_AS; ?></td>
- <td><input type="text" id="target_filename" name="serendipity[target_filename]" value="" size="40" /></td>
+ <td><input type="text" id="target_filename_1" name="serendipity[target_filename][1]" value="" size="40" /></td>
</tr>
<tr>
<td><?php echo STORE_IN_DIRECTORY; ?></td>
- <td>
- <select name="serendipity[target_directory]">
+ <td><select id="target_directory_1" name="serendipity[target_directory][1]">
<option value=""><?php echo BASE_DIRECTORY; ?></option>
<?php foreach (serendipity_traversePath($serendipity['serendipityPath'] . $serendipity['uploadPath']) as $folder) { ?>
<option <?php echo ($serendipity['GET']['only_path'] == $folder['relpath']) ? 'selected="selected"' : '' ?> value="<?php echo $folder['relpath'] ?>"><?php echo str_repeat(' ', $folder['depth']*2) . ' '. $folder['name'] ?></option>
</select>
</td>
</tr>
-
- <tr>
- <td align="right" colspan="2"><input type="checkbox" name="serendipity[all_authors]" value="true" checked="checked" id="all_authors" /><label for="all_authors"><?php echo ALL_AUTHORS; ?></label> <input type="submit" value="<?php echo GO; ?>" class="serendipityPrettyButton" /></td>
- </tr>
- </table>
+ </table>
+ <div id="ccounter"><input type="hidden" name="serendipity[column_count][1]" id="column_count_1" value="true" /></div>
+ </div>
+
+ <script type="text/javascript">
+ document.getElementById('upload_template').style.display = 'none';
+ document.write('<span id="upload_form"><' + '/span>');
+ addField();
+ </script>
+
+ <div style="text-align: center; margin-top: 15px; margin-bottom: 15px">
+ <script type="text/javascript">
+ document.write('<input class="serendipityPrettyButton" type="button" value="<?php echo IMAGE_MORE_INPUT; ?>" onclick="hideForeign(); addField()"' + '/><br' + '/>');
+ </script>
+ <input type="checkbox" name="serendipity[all_authors]" value="true" checked="checked" id="all_authors" /><label for="all_authors"><?php echo ALL_AUTHORS; ?></label> <input onclick="checkInputs();" type="submit" value="<?php echo GO; ?>" class="serendipityPrettyButton" />
+ </div>
</div>
<div><?php echo ADD_MEDIA_BLAHBLAH_NOTE; ?></div>
</form>