diff options
author | Sem <sembrestels@riseup.net> | 2012-07-31 10:09:51 +0200 |
---|---|---|
committer | Sem <sembrestels@riseup.net> | 2012-07-31 10:09:51 +0200 |
commit | 28b1669c4b1afaed7429da2cc9580340dcb13b6e (patch) | |
tree | 041440d7e32d2bde64101e7ab8a99dbe9d2ed8e8 | |
parent | e0879bc60015ab6be470b6828da0e50a7399bb9b (diff) | |
download | elgg-28b1669c4b1afaed7429da2cc9580340dcb13b6e.tar.gz elgg-28b1669c4b1afaed7429da2cc9580340dcb13b6e.tar.bz2 |
New uploader based on javascript for Tidypics
-rw-r--r-- | languages/en.php | 10 | ||||
-rw-r--r-- | pages/photos/image/upload.php | 16 | ||||
-rw-r--r-- | start.php | 16 | ||||
-rw-r--r-- | views/default/forms/photos/basic_upload.php | 75 | ||||
-rw-r--r-- | views/default/photos/css.php | 64 |
5 files changed, 135 insertions, 46 deletions
diff --git a/languages/en.php b/languages/en.php index 1c40e5e0a..9d8773efd 100644 --- a/languages/en.php +++ b/languages/en.php @@ -57,6 +57,13 @@ $english = array( 'tidypics:sort' => 'Sorting the %s album', 'tidypics:none' => 'No photo albums', + //upload + 'tidypics:upload:error' => 'Error:', + 'tidypics:upload:maxfilesize' => 'File is too big', + 'tidypics:upload:minfilesize' => 'File is too small', + 'tidypics:upload:acceptfiletypes' => 'Filetype not allowed', + 'tidypics:upload:maxnumberoffiles' => 'Max number of files exceeded', + //settings 'tidypics:settings' => 'Settings', 'tidypics:settings:main' => 'Primary settings', @@ -157,8 +164,7 @@ $english = array( 'tidypics:uploader:upload' => "Upload photos", 'tidypics:uploader:describe' => "Describe photos", 'tidypics:uploader:filedesc' => 'Image files (jpeg, png, gif)', - 'tidypics:uploader:instructs' => 'There are three easy steps for adding photos to your album using this uploader: choosing, uploading, and describing them. There is a %s MB maximum per photo. If you do not have Flash, there is also a <a href="%s">basic uploader</a> available.', - 'tidypics:uploader:basic' => 'You can upload up to 10 photos at a time (%s MB maximum per photo)', + 'tidypics:uploader:help' => 'Tip: use <code>Ctrl</code> or <code>Shift</code> keys to select more than one file. You also can drag&drop photos from desktop.', 'tidypics:sort:instruct' => 'Sort the album photos by dragging and dropping the images. Then click the save button.', 'tidypics:sort:no_images' => 'No images found to sort. Upload images using the link above.', diff --git a/pages/photos/image/upload.php b/pages/photos/image/upload.php index 61be8523b..c8e57038c 100644 --- a/pages/photos/image/upload.php +++ b/pages/photos/image/upload.php @@ -38,7 +38,21 @@ elgg_push_breadcrumb($owner->name, "photos/owner/$owner->username"); elgg_push_breadcrumb($album->getTitle(), $album->getURL()); elgg_push_breadcrumb(elgg_echo('album:addpix')); -$content = elgg_view('forms/photos/basic_upload', array('entity' => $album)); +// load javascript dependences +elgg_load_js('jquery-tmpl'); +elgg_load_js('jquery-load-image'); +elgg_load_js('jquery-canvas-to-blob'); +elgg_load_js('jquery-fileupload'); +elgg_load_js('jquery-fileupload-ui'); +elgg_load_js('tidypics:upload'); + +$form_vars = array( + 'id' => 'fileupload', + 'action' => 'action/photos/image/upload', + 'enctype' => 'multipart/form-data', +); + +$content = elgg_view_form('photos/basic_upload', $form_vars, array('entity' => $album)); $body = elgg_view_layout('content', array( 'content' => $content, @@ -38,12 +38,28 @@ function tidypics_init() { $js = elgg_get_simplecache_url('js', 'photos/tidypics'); elgg_register_simplecache_view('js/photos/tidypics'); elgg_register_js('tidypics', $js, 'footer'); + $js = elgg_get_simplecache_url('js', 'photos/upload'); + elgg_register_simplecache_view('js/photos/upload'); + elgg_register_js('tidypics:upload', $js, 'footer'); $js = elgg_get_simplecache_url('js', 'photos/tagging'); elgg_register_simplecache_view('js/photos/tagging'); elgg_register_js('tidypics:tagging', $js, 'footer'); elgg_register_js('tidypics:slideshow', 'mod/tidypics/vendors/PicLensLite/piclens_optimized.js', 'footer'); + $js_base = 'mod/tidypics/vendors/jquery-file-upload/js'; + + elgg_register_js('jquery-tmpl', "http://blueimp.github.com/JavaScript-Templates/tmpl.js", 'footer'); + elgg_register_js('jquery-load-image', "$js_base/vendor/load-image.min.js", 'footer'); + elgg_register_js('jquery-canvas-to-blob', "$js_base/vendor/canvas-to-blob.min.js", 'footer'); + elgg_register_js('jquery-image-gallery', "$js_base/vendor/jquery.image-gallery.min.js", 'footer'); + elgg_register_js('jquery-iframe-transport', "$js_base/jquery.iframe-transport.js", 'footer'); + + elgg_register_js('jquery-fileupload', "$js_base/jquery.fileupload.js", 'footer'); + elgg_register_js('jquery-fileupload-fp', "$js_base/jquery.fileupload-fp.js", 'footer'); + elgg_register_js('jquery-fileupload-ui', "$js_base/jquery.fileupload-ui.js", 'footer'); + elgg_register_js('jquery-fileupload-jui', "$js_base/jquery.fileupload-jui.js", 'footer'); + // Add photos link to owner block/hover menus elgg_register_plugin_hook_handler('register', 'menu:owner_block', 'tidypics_owner_block_menu'); diff --git a/views/default/forms/photos/basic_upload.php b/views/default/forms/photos/basic_upload.php index ba849d1b4..9e71cf59e 100644 --- a/views/default/forms/photos/basic_upload.php +++ b/views/default/forms/photos/basic_upload.php @@ -1,48 +1,63 @@ <?php -/** - * Basic uploader form - * - * This only handled uploading the images. Editing the titles and descriptions - * are handled with the edit forms. - * - * @uses $vars['entity'] - * - * @author Cash Costello - * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License v2 - */ - $album = $vars['entity']; -$access_id = $album->access_id; +$help = elgg_echo('tidypics:uploader:help'); -$maxfilesize = (float) elgg_get_plugin_setting('maxfilesize', 'tidypics'); +$input = elgg_view('input/file', array( + 'name' => 'images[]', + 'multiple' => 'multiple', + 'class' => 'hidden-js', +)); -$instructions = elgg_echo("tidypics:uploader:upload"); -$max = elgg_echo('tidypics:uploader:basic', array($maxfilesize)); +$button = elgg_view('output/url', array( + 'text' => elgg_echo('tidypics:uploader:upload') . $input, + 'class' => 'elgg-button elgg-button-action fileinput-button', +)); -$list = ''; -for ($x = 0; $x < 10; $x++) { - $list .= '<li>' . elgg_view('input/file', array('name' => 'images[]')) . '</li>'; -} +$reset = elgg_view('input/reset', array( + 'value' => elgg_echo('cancel'), + 'class' => 'hidden', +)); $foot = elgg_view('input/hidden', array('name' => 'guid', 'value' => $album->getGUID())); $foot .= elgg_view('input/submit', array('value' => elgg_echo("save"))); -$form_body = <<<HTML +echo <<<HTML <div> $max </div> -<div> - <ol> - $list - </ol> +<div class="fileinput-container"> + $button + $reset + <p class="elgg-text-help">$help</p> +</div> +<div class="mtm"><!-- The table listing the files available for upload/download --> + <table role="presentation" class="elgg-table-alt clearfloat mtm"> + <tbody class="files"></tbody> + </table> </div> <div class='elgg-foot'> $foot </div> HTML; -echo elgg_view('input/form', array( - 'body' => $form_body, - 'action' => 'action/photos/image/upload', - 'enctype' => 'multipart/form-data', -)); +?> + +<noscript><style type="text/css">hidden-nojs {display: hidden}</style></noscript> + +<!-- The template to display files available for upload --> +<script id="template-upload" type="text/x-tmpl"> +{% for (var i=0, file; file=o.files[i]; i++) { %} + <tr class="template-upload fade"> + {% if (file.error) { %} + <td class="error"><span class="elgg-message elgg-state-error">{%=locale.fileupload.error%} {%=locale.fileupload.errors[file.error] || file.error%}</span></td> + {% } else { %} + <td class="preview"><span class="fade"></span></td> + {% } %} + <td class="name"><span>{%=file.name%}</span></td> + <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td> + + </tr> +{% } %} +</script> +<!-- The template to display files available for download --> +<script id="template-download" type="text/x-tmpl" /> diff --git a/views/default/photos/css.php b/views/default/photos/css.php index 3f0218fdc..b031b825c 100644 --- a/views/default/photos/css.php +++ b/views/default/photos/css.php @@ -145,30 +145,68 @@ } /* *************************************** - AJAX UPLOADER + UPLOADER *************************************** */ -#tidypics-uploader-steps { - list-style: none; + +.fileinput-container { + text-align: center; +} +.fileinput-button { + cursor: pointer; } +.fileinput-button input { + position: absolute; + top: 0; + right: 0; + margin: 0; + opacity: 0; + filter: alpha(opacity=0); -#tidypics-uploader-steps li a { - font-weight:bold; +} +.files .fade { + display: none; +} +/* Fix for IE 6: */ +*html .fileinput-button { + margin-right: -2px; +} +*html .fileinput-button .elgg-button { + line-height: 24px; +} +*html .fileupload-buttonbar .elgg-button { + margin-left: 3px; } -.tidypics-choose-button-hover { - color:#0054a7; - text-decoration:underline; +/* Fix for IE 7: */ +*+html .fileinput-button { + margin-right: 1px; +} +*+html .fileinput-button .elgg-button { + line-height: 24px; +} +*+html .fileupload-buttonbar .elgg-button { + margin-left: 3px; } -.tidypics-disable { - color:#cccccc; +@media (max-width: 480px) { + .files .preview * { + width: 40px; + } + .files .name * { + width: 80px; + display: inline-block; + word-wrap: break-word; + } } -.tidypics-disable:hover { -color:#cccccc; -text-decoration:none; +/* Fix for Webkit (Safari, Chrome) */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + .fileinput-button { + margin-top: 2px; + } } + <?php return true; ?> |