diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/include/photos_add_direct_process.inc.php | 84 | ||||
-rw-r--r-- | admin/include/uploadify/uploadify.php | 27 | ||||
-rw-r--r-- | admin/themes/clear/theme.css | 3 | ||||
-rw-r--r-- | admin/themes/default/template/include/colorbox.inc.tpl | 2 | ||||
-rw-r--r-- | admin/themes/default/template/photos_add_direct.tpl | 166 | ||||
-rw-r--r-- | admin/themes/default/theme.css | 4 |
6 files changed, 164 insertions, 122 deletions
diff --git a/admin/include/photos_add_direct_process.inc.php b/admin/include/photos_add_direct_process.inc.php index 27cb0b9a1..15c7abebb 100644 --- a/admin/include/photos_add_direct_process.inc.php +++ b/admin/include/photos_add_direct_process.inc.php @@ -43,44 +43,7 @@ if (isset($_GET['processed'])) ); } - $category_id = null; - if (!isset($_POST['category_type'])) - { - // nothing to do, we certainly have the post_max_size issue - } - elseif ('existing' == $_POST['category_type']) - { - $category_id = $_POST['category']; - } - elseif ('new' == $_POST['category_type']) - { - $output_create = create_virtual_category( - $_POST['category_name'], - (0 == $_POST['category_parent'] ? null : $_POST['category_parent']) - ); - - $category_id = $output_create['id']; - - if (isset($output_create['error'])) - { - array_push($page['errors'], $output_create['error']); - } - else - { - $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&cat_id='); - // information - array_push( - $page['infos'], - sprintf( - l10n('Album "%s" has been added'), - '<em>'.$category_name.'</em>' - ) - ); - // TODO: add the onclick="window.open(this.href); return false;" - // attribute with jQuery on upload.tpl side for href containing - // "cat_modify" - } - } + $category_id = $_POST['category']; $image_ids = array(); @@ -206,20 +169,6 @@ if (isset($_GET['processed'])) if (isset($_SESSION['uploads'][ $_POST['upload_id'] ])) { $image_ids = $_SESSION['uploads'][ $_POST['upload_id'] ]; - - associate_images_to_categories( - $image_ids, - array($category_id) - ); - - $query = ' -UPDATE '.IMAGES_TABLE.' - SET level = '.$_POST['level'].' - WHERE id IN ('.implode(', ', $image_ids).') -;'; - pwg_query($query); - - invalidate_user_cache(); } } @@ -291,28 +240,25 @@ SELECT ); } - if ('existing' == $_POST['category_type']) - { - $query = ' + $query = ' SELECT COUNT(*) FROM '.IMAGE_CATEGORY_TABLE.' WHERE category_id = '.$category_id.' ;'; - list($count) = pwg_db_fetch_row(pwg_query($query)); - $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&cat_id='); - - // information - array_push( - $page['infos'], - sprintf( - l10n('Album "%s" now contains %d photos'), - '<em>'.$category_name.'</em>', - $count - ) - ); - } - + list($count) = pwg_db_fetch_row(pwg_query($query)); + $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&cat_id='); + + // information + array_push( + $page['infos'], + sprintf( + l10n('Album "%s" now contains %d photos'), + '<em>'.$category_name.'</em>', + $count + ) + ); + $page['batch_link'] = PHOTOS_ADD_BASE_URL.'&batch='.implode(',', $image_ids); } } diff --git a/admin/include/uploadify/uploadify.php b/admin/include/uploadify/uploadify.php index 8b3f49bb5..948280d90 100644 --- a/admin/include/uploadify/uploadify.php +++ b/admin/include/uploadify/uploadify.php @@ -19,7 +19,7 @@ echo '$user'."\n"; print_r($user); $tmp = ob_get_contents(); ob_end_clean(); -// error_log($tmp, 3, "/tmp/php-".date('YmdHis').'-'.sprintf('%020u', rand()).".log"); +error_log($tmp, 3, "/tmp/php-".date('YmdHis').'-'.sprintf('%020u', rand()).".log"); if ($_FILES['Filedata']['error'] !== UPLOAD_ERR_OK) { @@ -43,8 +43,8 @@ ob_start(); $image_id = add_uploaded_file( $_FILES['Filedata']['tmp_name'], $_FILES['Filedata']['name'], - null, - 8 + array($_POST['category_id']), + $_POST['level'] ); if (!isset($_SESSION['uploads'])) @@ -62,12 +62,31 @@ array_push( $image_id ); +$query = ' +SELECT + id, + path, + tn_ext + FROM '.IMAGES_TABLE.' + WHERE id = '.$image_id.' +;'; +$image_infos = pwg_db_fetch_assoc(pwg_query($query)); + +$thumbnail_url = preg_replace('#^'.PHPWG_ROOT_PATH.'#', './', get_thumbnail_url($image_infos)); + +$return = array( + 'image_id' => $image_id, + 'category_id' => $_POST['category_id'], + 'thumbnail_url' => $thumbnail_url, + ); + $output = ob_get_contents(); ob_end_clean(); if (!empty($output)) { add_upload_error($_POST['upload_id'], $output); + $return['error_message'] = $output; } -echo "1"; +echo json_encode($return); ?>
\ No newline at end of file diff --git a/admin/themes/clear/theme.css b/admin/themes/clear/theme.css index aa8b97a19..af5dcb768 100644 --- a/admin/themes/clear/theme.css +++ b/admin/themes/clear/theme.css @@ -20,7 +20,7 @@ body, h3, dt, h2, .throw, .content, label { color:#777; } th { color: #888; } INPUT, select, textarea { color:#666; background-color: #ccc; } input[type="radio"], input[type="checkbox"] { background-color: transparent; } -INPUT[type="submit"], INPUT[type="reset"] { color:#666; border: 1px solid #777; background-color: #bbb; padding: 1px 15px; } +INPUT[type="submit"], INPUT[type="button"], INPUT[type="reset"] { color:#666; border: 1px solid #777; background-color: #bbb; padding: 1px 15px; } legend, h3 { color: #777; } h2 { color: #777; } @@ -50,6 +50,7 @@ input[type="button"], input[type="submit"], input[type="reset"] { } input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover { + cursor:pointer; color:#666; border-color: #999; } diff --git a/admin/themes/default/template/include/colorbox.inc.tpl b/admin/themes/default/template/include/colorbox.inc.tpl index 6ca8e0502..76651eafd 100644 --- a/admin/themes/default/template/include/colorbox.inc.tpl +++ b/admin/themes/default/template/include/colorbox.inc.tpl @@ -1,2 +1,2 @@ {combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'} -{combine_css path="themes/default/js/plugins/jquery.colorbox.css"}
\ No newline at end of file +{combine_css path="themes/default/js/plugins/colorbox/style2/colorbox.css"} diff --git a/admin/themes/default/template/photos_add_direct.tpl b/admin/themes/default/template/photos_add_direct.tpl index ffcb265d5..7f17663f8 100644 --- a/admin/themes/default/template/photos_add_direct.tpl +++ b/admin/themes/default/template/photos_add_direct.tpl @@ -6,6 +6,8 @@ {combine_css path="admin/include/uploadify/uploadify.css"} {/if} +{include file='include/colorbox.inc.tpl'} + {footer_script}{literal} jQuery(document).ready(function(){ function checkUploadStart() { @@ -13,11 +15,6 @@ jQuery(document).ready(function(){ jQuery("#formErrors").hide(); jQuery("#formErrors li").hide(); - if (jQuery("input[name=category_type]:checked").val() == "new" && jQuery("input[name=category_name]").val() == "") { - jQuery("#formErrors #emptyCategoryName").show(); - nbErrors++; - } - var nbFiles = 0; if (jQuery("#uploadBoxes").size() == 1) { jQuery("input[name^=image_upload]").each(function() { @@ -65,15 +62,79 @@ jQuery(document).ready(function(){ return byteSize+suffix; } - if (jQuery("select[name=category] option").length == 0) { - jQuery('input[name=category_type][value=existing]').attr('disabled', true); - jQuery('input[name=category_type]').attr('checked', false); - jQuery('input[name=category_type][value=new]').attr('checked', true); + function fillCategoryListbox(selectId, selectedValue) { + jQuery.getJSON( + "ws.php?format=json&method=pwg.categories.getList", + { + recursive: true, + fullname: true, + format: "json", + }, + function(data) { + jQuery.each( + data.result.categories, + function(i,category) { + var selected = ""; + if (category.id == selectedValue) { + selected = "selected"; + } + + jQuery("<option/>") + .attr("value", category.id) + .attr("selected", selected) + .text(category.name) + .appendTo("#"+selectId) + ; + } + ); + } + ); } - jQuery("input[name=category_type]").click(function () { - jQuery("[id^=category_type_]").hide(); - jQuery("#category_type_"+jQuery(this).attr("value")).show(); +/* + jQuery("#albumSelect").find("option").remove(); + fillCategoryListbox("albumSelect"); + fillCategoryListbox("category_parent"); +*/ + + jQuery(".addAlbumOpen").colorbox({inline:true, href:"#addAlbumForm"}); + + jQuery("#addAlbumForm form").submit(function(){ + jQuery("#categoryNameError").text(""); + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.categories.add", + data: { + parent: jQuery("select[name=category_parent] option:selected").val(), + name: jQuery("input[name=category_name]").val(), + }, + beforeSend: function() { + jQuery("#albumCreationLoading").show(); + }, + success:function(html) { + jQuery("#albumCreationLoading").hide(); + + var newAlbum = jQuery.parseJSON(html).result.id; + jQuery(".addAlbumOpen").colorbox.close(); + + jQuery("#albumSelect").find("option").remove(); + fillCategoryListbox("albumSelect", newAlbum); + + /* we refresh the album creation form, in case the user wants to create another album */ + jQuery("#category_parent").find("option").remove(); + fillCategoryListbox("category_parent", newAlbum); + + jQuery("#addAlbumForm form input[name=category_name]").val(''); + + return true; + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery("#albumCreationLoading").hide(); + jQuery("#categoryNameError").text(errorThrows).css("color", "red"); + } + }); + + return false; }); jQuery("#hideErrors").click(function() { @@ -120,7 +181,6 @@ var sizeLimit = {$upload_max_filesize}; 'cancelImg' : uploadify_path + '/cancel.png', 'queueID' : 'fileQueue', 'auto' : false, - 'displayData' : 'speed', 'buttonText' : buttonText, 'multi' : true, 'fileDesc' : 'Photo files (*.jpg,*.jpeg,*.png)', @@ -196,8 +256,14 @@ var sizeLimit = {$upload_max_filesize}; } ); }, - onComplete: function (a, b ,c, d, e) { + onComplete: function (a, b ,c, response, e) { var size = Math.round(c.size/1024); + + var response = jQuery.parseJSON(response); + + jQuery("#uploadedPhotos").parent("fieldset").show(); + jQuery("#uploadedPhotos").prepend('<img src="'+response.thumbnail_url+'" class="thumbnail"> '); + jQuery.jGrowl( '<p></p>'+c.name+' - '+size+'KB', { @@ -215,6 +281,14 @@ var sizeLimit = {$upload_max_filesize}; return false; } + jQuery("#uploadify").uploadifySettings( + 'scriptData', + { + 'category_id' : jQuery("select[name=category] option:selected").val(), + 'level' : jQuery("select[name=level] option:selected").val(), + } + ); + jQuery("#uploadify").uploadifyUpload(); }); @@ -268,47 +342,39 @@ var sizeLimit = {$upload_max_filesize}; <div id="formErrors" class="errors" style="display:none"> <ul> - <li id="emptyCategoryName">{'The name of an album must not be empty'|@translate}</li> <li id="noPhoto">{'Select at least one photo'|@translate}</li> </ul> <div class="hideButton" style="text-align:center"><a href="#" id="hideErrors">{'Hide'|@translate}</a></div> </div> +<div style="display:none"> + <div id="addAlbumForm" style="text-align:left;padding:1em;"> + <form> + {'Parent album'|@translate}<br> + <select id ="category_parent" name="category_parent"> + <option value="0">------------</option> + {html_options options=$category_parent_options selected=$category_parent_options_selected} + </select> + + <br><br>{'Album name'|@translate}<br><input name="category_name" type="text"> <span id="categoryNameError"></span> + <br><br><br><input type="submit" value="{'Create'|@translate}"> <span id="albumCreationLoading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span> + </form> + </div> +</div> + <form id="uploadForm" enctype="multipart/form-data" method="post" action="{$form_action}" class="properties"> +{if $upload_mode eq 'multiple'} + <input name="upload_id" value="{$upload_id}" type="hidden"> +{/if} + <fieldset> <legend>{'Drop into album'|@translate}</legend> - {if $upload_mode eq 'multiple'} - <input name="upload_id" value="{$upload_id}" type="hidden"> - {/if} - <label><input type="radio" name="category_type" value="existing"> {'existing album'|@translate}</label> - <label><input type="radio" name="category_type" value="new" checked="checked"> {'create a new album'|@translate}</label> - - <div id="category_type_existing" style="display:none" class="category_selection"> - <select class="categoryDropDown" name="category"> - {html_options options=$category_options selected=$category_options_selected} - </select> - </div> - - <div id="category_type_new" class="category_selection"> - <table> - <tr> - <td>{'Parent album'|@translate}</td> - <td> - <select class="categoryDropDown" name="category_parent"> - <option value="0">------------</option> - {html_options options=$category_parent_options selected=$category_parent_options_selected} - </select> - </td> - </tr> - <tr> - <td>{'Album name'|@translate}</td> - <td> - <input type="text" name="category_name" value="{$F_CATEGORY_NAME}" style="width:400px"> - </td> - </tr> - </table> - </div> + <select id="albumSelect" name="category"> + {html_options options=$category_options selected=$category_options_selected} + </select> + <br>{'... or '|@translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a> + </fieldset> <fieldset> @@ -348,11 +414,17 @@ var sizeLimit = {$upload_max_filesize}; </fieldset> <p> - <input class="submit" type="button" value="{'Upload'|@translate}"> + <input class="submit" type="button" value="{'Start Upload'|@translate}"> <input type="submit" name="submit_upload" style="display:none"> </p> {/if} </form> + +<fieldset style="display:none"> + <legend>{'Uploaded Photos'|@translate}</legend> + <div id="uploadedPhotos"></div> +</fieldset> + {/if} {* empty($thumbnails) *} {/if} {* $setup_errors *} diff --git a/admin/themes/default/theme.css b/admin/themes/default/theme.css index 3bfffcaea..ad99e20ce 100644 --- a/admin/themes/default/theme.css +++ b/admin/themes/default/theme.css @@ -605,6 +605,10 @@ img.ui-datepicker-trigger { margin:0; } +#photosAddContent { + text-align:left; +} + #photosAddContent FIELDSET { width:650px; margin:0 auto 20px auto; |