From: garvinhicking Date: Mon, 18 Apr 2005 20:57:27 +0000 (+0000) Subject: Upload multiple images at once: RFE #1174118 X-Git-Tag: 0.8.1~30^2~23 X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=153105bae11fff4f906718ca452a5a698abc22d5;p=s9y.git Upload multiple images at once: RFE #1174118 Needs a bit TODO for renaming files. --- diff --git a/docs/NEWS b/docs/NEWS index d3f9bd8..4cb8c81 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -3,6 +3,9 @@ Version 0.9 () ------------------------------------------------------------------------ + * Media manager: Allow to upload as many files as you want via + JavaScript interaction and "add more images" button. (garvinhicking) + * RSS feed does no longer initialize a session and thus now causes proper cachability for Conditional Get (garvinhicking) diff --git a/include/admin/images.inc.php b/include/admin/images.inc.php index 12e57d1..7b1978d 100644 --- a/include/admin/images.inc.php +++ b/include/admin/images.inc.php @@ -112,8 +112,8 @@ switch ($serendipity['GET']['adminAction']) { // 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']); } @@ -124,8 +124,8 @@ switch ($serendipity['GET']['adminAction']) { } $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; @@ -156,47 +156,60 @@ switch ($serendipity['GET']['adminAction']) { printf(FILE_FETCHED . '
', $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 . '
'; } // 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 . '
', $_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 . '
'; - } - // 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 '
'; + 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 '
'; } else { - echo ERROR_UNKNOWN_NOUPLOAD . '
'; + // Accept file + if (move_uploaded_file($uploadtmp, $target)) { + printf(FILE_UPLOADED . '
', $uploadfile, $target); + @umask(0000); + @chmod($target, 0664); + + // Create thumbnail + if ( $created_thumbnail = serendipity_makeThumbnail($tfile, $serendipity['POST']['target_directory'][$idx]) ) { + echo THUMB_CREATED_DONE . '
'; + } + // Insert into database + $image_id = serendipity_insertImageInDatabase($tfile, $serendipity['POST']['target_directory'][$idx], $authorid); + } else { + echo ERROR_UNKNOWN_NOUPLOAD . '
'; + } } } } @@ -337,9 +350,75 @@ switch ($serendipity['GET']['adminAction']) { @@ -357,10 +436,13 @@ switch ($serendipity['GET']['adminAction']) { } } ?> - +
- + @@ -375,10 +457,16 @@ switch ($serendipity['GET']['adminAction']) { +
- -
+ +
+ - + @@ -387,13 +475,12 @@ switch ($serendipity['GET']['adminAction']) { - + - - - - - -
-
+ +
+
+ + + +
+ + +
diff --git a/lang/serendipity_lang_bg.inc.php b/lang/serendipity_lang_bg.inc.php index 4ab01b5..c2963b2 100644 --- a/lang/serendipity_lang_bg.inc.php +++ b/lang/serendipity_lang_bg.inc.php @@ -650,6 +650,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_cn.inc.php b/lang/serendipity_lang_cn.inc.php index 4a618c7..7cec8fa 100644 --- a/lang/serendipity_lang_cn.inc.php +++ b/lang/serendipity_lang_cn.inc.php @@ -664,6 +664,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_cs.inc.php b/lang/serendipity_lang_cs.inc.php index 7eff04c..9477ab2 100644 --- a/lang/serendipity_lang_cs.inc.php +++ b/lang/serendipity_lang_cs.inc.php @@ -666,6 +666,7 @@ @define('FETCH_METHOD_HOTLINK', 'Odkaz na server'); @define('DELETE_HOTLINK_FILE', 'Vymazán odkazovaný soubor %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_cz.inc.php b/lang/serendipity_lang_cz.inc.php index d1bf1a9..5d2b067 100644 --- a/lang/serendipity_lang_cz.inc.php +++ b/lang/serendipity_lang_cz.inc.php @@ -666,6 +666,7 @@ @define('FETCH_METHOD_HOTLINK', 'Odkaz na server'); @define('DELETE_HOTLINK_FILE', 'Vymazán odkazovaný soubor %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_da.inc.php b/lang/serendipity_lang_da.inc.php index 3288b96..77f69c5 100644 --- a/lang/serendipity_lang_da.inc.php +++ b/lang/serendipity_lang_da.inc.php @@ -666,6 +666,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink til server'); @define('DELETE_HOTLINK_FILE', 'Slet den hotlinked fil ved navn %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Vis E-Mail adresser?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> diff --git a/lang/serendipity_lang_de.inc.php b/lang/serendipity_lang_de.inc.php index dff9d25..b00da5d 100644 --- a/lang/serendipity_lang_de.inc.php +++ b/lang/serendipity_lang_de.inc.php @@ -664,6 +664,7 @@ @define('FETCH_METHOD_HOTLINK', 'Nur zum Quellserver linken'); @define('DELETE_HOTLINK_FILE', 'Link zu Datei namens %s löschen?'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'E-Mail Adressen einbinden?'); +@define('IMAGE_MORE_INPUT', 'Mehr Bilder hinzufügen'); /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_en.inc.php b/lang/serendipity_lang_en.inc.php index 539f42f..c991bec 100644 --- a/lang/serendipity_lang_en.inc.php +++ b/lang/serendipity_lang_en.inc.php @@ -663,6 +663,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_es.inc.php b/lang/serendipity_lang_es.inc.php index fb8a357..73cff57 100644 --- a/lang/serendipity_lang_es.inc.php +++ b/lang/serendipity_lang_es.inc.php @@ -668,6 +668,7 @@ @define('FETCH_METHOD_HOTLINK', 'Enlazar externamente al servidor'); @define('DELETE_HOTLINK_FILE', 'Borrado el recurso enlazado externamente con el nombre %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_fa.inc.php b/lang/serendipity_lang_fa.inc.php index 26790bc..50a9600 100644 --- a/lang/serendipity_lang_fa.inc.php +++ b/lang/serendipity_lang_fa.inc.php @@ -665,6 +665,7 @@ @define('FETCH_METHOD_HOTLINK', 'لینک دادن به سرور'); @define('DELETE_HOTLINK_FILE', 'لینک فایل %s حذف شد'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'آیا آدرس ایمیل ها دیده شود؟'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_fi.inc.php b/lang/serendipity_lang_fi.inc.php index 9725dd5..4b62ef5 100644 --- a/lang/serendipity_lang_fi.inc.php +++ b/lang/serendipity_lang_fi.inc.php @@ -663,6 +663,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_fr.inc.php b/lang/serendipity_lang_fr.inc.php index 11d3611..c04da7f 100644 --- a/lang/serendipity_lang_fr.inc.php +++ b/lang/serendipity_lang_fr.inc.php @@ -669,6 +669,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_is.inc.php b/lang/serendipity_lang_is.inc.php index 46ba192..22ba7e2 100644 --- a/lang/serendipity_lang_is.inc.php +++ b/lang/serendipity_lang_is.inc.php @@ -663,6 +663,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlinka á þjón'); @define('DELETE_HOTLINK_FILE', 'Eyddi hotlinkaðri skrá, nefnd %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Sýna netföng?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_it.inc.php b/lang/serendipity_lang_it.inc.php index 1a1fc86..b07390b 100644 --- a/lang/serendipity_lang_it.inc.php +++ b/lang/serendipity_lang_it.inc.php @@ -665,6 +665,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_ja.inc.php b/lang/serendipity_lang_ja.inc.php index b803587..0a3b0d8 100644 --- a/lang/serendipity_lang_ja.inc.php +++ b/lang/serendipity_lang_ja.inc.php @@ -665,6 +665,7 @@ Serendipity のアップグレードステージを無視しました。正し @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', '電子メールアドレスを表示しますか?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> diff --git a/lang/serendipity_lang_ko.inc.php b/lang/serendipity_lang_ko.inc.php index 76a41d6..71c9b10 100644 --- a/lang/serendipity_lang_ko.inc.php +++ b/lang/serendipity_lang_ko.inc.php @@ -668,6 +668,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_nl.inc.php b/lang/serendipity_lang_nl.inc.php index 719542f..87b671c 100644 --- a/lang/serendipity_lang_nl.inc.php +++ b/lang/serendipity_lang_nl.inc.php @@ -667,6 +667,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_no.inc.php b/lang/serendipity_lang_no.inc.php index 3b1e5c8..e45d808 100644 --- a/lang/serendipity_lang_no.inc.php +++ b/lang/serendipity_lang_no.inc.php @@ -666,5 +666,6 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate ?> \ No newline at end of file diff --git a/lang/serendipity_lang_pt.inc.php b/lang/serendipity_lang_pt.inc.php index 35b5819..b2017be 100644 --- a/lang/serendipity_lang_pt.inc.php +++ b/lang/serendipity_lang_pt.inc.php @@ -666,6 +666,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_ru.inc.php b/lang/serendipity_lang_ru.inc.php index af8f265..2fffb5a 100644 --- a/lang/serendipity_lang_ru.inc.php +++ b/lang/serendipity_lang_ru.inc.php @@ -666,6 +666,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_tn.inc.php b/lang/serendipity_lang_tn.inc.php index 7ebe642..a67ed03 100644 --- a/lang/serendipity_lang_tn.inc.php +++ b/lang/serendipity_lang_tn.inc.php @@ -664,6 +664,7 @@ @define('FETCH_METHOD_HOTLINK', '盜連到主機'); @define('DELETE_HOTLINK_FILE', '刪除盜連的檔案 %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', '顯示電子郵件嗎?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_tw.inc.php b/lang/serendipity_lang_tw.inc.php index 1bbf9b5..536c2be 100644 --- a/lang/serendipity_lang_tw.inc.php +++ b/lang/serendipity_lang_tw.inc.php @@ -664,6 +664,7 @@ @define('FETCH_METHOD_HOTLINK', 'µs³s¨ì¥D¾÷'); @define('DELETE_HOTLINK_FILE', '§R°£µs³sªºÀÉ®× %s'); @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Åã¥Ü¹q¤l¶l¥ó¶Ü?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file diff --git a/lang/serendipity_lang_zh.inc.php b/lang/serendipity_lang_zh.inc.php index 54b6fed..aff3274 100644 --- a/lang/serendipity_lang_zh.inc.php +++ b/lang/serendipity_lang_zh.inc.php @@ -664,6 +664,7 @@ @define('FETCH_METHOD_HOTLINK', 'Hotlink to server'); // Translate @define('DELETE_HOTLINK_FILE', 'Deleted the hotlinked file entitled %s'); // Translate @define('SYNDICATION_PLUGIN_SHOW_MAIL', 'Show E-Mail addresses?'); +@define('IMAGE_MORE_INPUT', 'Add more images'); // Translate /* vim: set sts=4 ts=4 expandtab : */ ?> \ No newline at end of file