Skip to content

Commit

Permalink
Item14223: repalce plupload with jQuery-FileUpload
Browse files Browse the repository at this point in the history
- attachments can now be uploaded by dragging them anywhere, not only on a dedicated dropzone
- images can be uploaded directly by pasting them from the clipboard (ctrl-v)
- upload seems to be a lot faster now (evaluated by guts benchmark_tm)
  • Loading branch information
MichaelDaum committed Nov 22, 2016
1 parent 8a2f33f commit 63a7ac0
Show file tree
Hide file tree
Showing 33 changed files with 5,523 additions and 7,563 deletions.
17 changes: 6 additions & 11 deletions .gitignore
Expand Up @@ -2,19 +2,14 @@
igp_*
*.gz
*.swp
pub/System/TopicInteractionPlugin/plupload.gears.js
pub/System/TopicInteractionPlugin/plupload.browserplus.js
pub/System/TopicInteractionPlugin/jquery.uploader.css
pub/System/TopicInteractionPlugin/jquery.uploader.js
pub/System/TopicInteractionPlugin/plupload.flash.js
pub/System/TopicInteractionPlugin/plupload.html5.js
pub/System/TopicInteractionPlugin/plupload.silverlight.js
pub/System/TopicInteractionPlugin/browserplus.init.js
pub/System/TopicInteractionPlugin/plupload.html4.js
pub/System/TopicInteractionPlugin/plupload.js
*.jslint
pub/System/TopicInteractionPlugin/attic/
pub/System/TopicInteractionPlugin/dist/
pub/System/TopicInteractionPlugin/jquery.fileupload-process.js
pub/System/TopicInteractionPlugin/metadata.css
pub/System/TopicInteractionPlugin/metadata.js
pub/System/TopicInteractionPlugin/gears.init.js
pub/System/TopicInteractionPlugin/uploader.css
pub/System/TopicInteractionPlugin/uploader.js
/TopicInteractionPlugin.md5
/TopicInteractionPlugin.sha1
/TopicInteractionPlugin.tgz
Expand Down
4 changes: 2 additions & 2 deletions lib/Foswiki/Plugins/TopicInteractionPlugin.pm
Expand Up @@ -18,8 +18,8 @@ package Foswiki::Plugins::TopicInteractionPlugin;
use strict;
use warnings;

our $VERSION = '5.00';
our $RELEASE = '18 Nov 2016';
our $VERSION = '5.99';
our $RELEASE = '22 Nov 2016';
our $SHORTDESCRIPTION = 'Improved interaction with attachments and !DataForms';
our $NO_PREFS_IN_TOPIC = 1;
our $core;
Expand Down
10 changes: 5 additions & 5 deletions lib/Foswiki/Plugins/TopicInteractionPlugin/Attachments.pm
Expand Up @@ -390,7 +390,7 @@ sub renderPager {
my $result = '';
if ($currentPage > 0) {
my $skip = ($currentPage - 1) * $entriesPerPage;
$result .= "<a href='#skip$skip' class='foswikiAttachmentsPagerPrev {skip:$skip}'>%MAKETEXT{\"Previous\"}%</a>";
$result .= "<a href='#skip$skip' class='foswikiAttachmentsPagerPrev' data-skip='$skip'>%MAKETEXT{\"Previous\"}%</a>";
} else {
$result .= "<span class='foswikiAttachmentsPagerPrev foswikiGrayText'>%MAKETEXT{\"Previous\"}%</span>";
}
Expand All @@ -408,7 +408,7 @@ sub renderPager {
$endPage = $lastPage if $endPage > $lastPage;

if ($startPage > 0) {
$result .= "<a href='#' class='{skip:0}'>1</a>";
$result .= "<a href='#' data-skip='0'>1</a>";
}

if ($startPage > 1) {
Expand All @@ -420,7 +420,7 @@ sub renderPager {
for (my $i = $startPage; $i <= $endPage; $i++) {
$marker = $i == $currentPage?'current':'';
my $skip = $i * $entriesPerPage;
$result .= "<a href='#skip$skip' class='$marker {skip:$skip}'>".($i+1)."</a>";
$result .= "<a href='#skip$skip' class='$marker' data-skip='$skip'>".($i+1)."</a>";
$count++;
}

Expand All @@ -431,12 +431,12 @@ sub renderPager {
if ($endPage < $lastPage) {
$marker = $currentPage == $lastPage?'current':'';
my $skip = $lastPage * $entriesPerPage;
$result .= "<a href='#skip$skip' class='$marker {skip:$skip}'>".($lastPage+1)."</a>";
$result .= "<a href='#skip$skip' class='$marker' data-skip='$skip'>".($lastPage+1)."</a>";
}

if ($currentPage < $lastPage) {
my $skip = ($currentPage + 1) * $entriesPerPage;
$result .= "<a href='#skip$skip' class='foswikiAttachmentsPagerNext {skip:$skip}'>%MAKETEXT{\"Next\"}%</a>";
$result .= "<a href='#skip$skip' class='foswikiAttachmentsPagerNext' data-skip='$skip'>%MAKETEXT{\"Next\"}%</a>";
} else {
$result .= "<span class='foswikiAttachmentsPagerNext foswikiGrayText'>%MAKETEXT{\"Next\"}%</span>";
}
Expand Down
6 changes: 0 additions & 6 deletions lib/Foswiki/Plugins/TopicInteractionPlugin/Config.spec
@@ -1,12 +1,6 @@
# ---+ Extensions
# ---++ TopicInteractionPlugin

# **STRING**
# This is the preference list of engines to test.
# Available engines: html5, flash, silverlight, gears, browserplus, html4
# Note that silverlight, gears and browserplus are disabled by default as these browser extensions are mostly unsupported.
$Foswiki::cfg{TopicInteractionPlugin}{UploadEngines} = 'html5, html4';

# **REGEX EXPERT**
# Specify a regular expression matching fileextensions to be webdav enabled in the attachments list of a topic.
# By default this is undefined. Use
Expand Down
17 changes: 0 additions & 17 deletions lib/Foswiki/Plugins/TopicInteractionPlugin/Core.pm
Expand Up @@ -55,9 +55,6 @@ sub new {
prefs => {
officeSuite => Foswiki::Func::getPreferencesValue("WEBDAV_OFFICE_SUITE") || $Foswiki::cfg{TopicInteractionPlugin}{DefaultOfficeSuite} || '',
attachFileSizeLimit => Foswiki::Func::getPreferencesValue("ATTACHFILESIZELIMIT") || 0,
runtimeEngines => $Foswiki::cfg{TopicInteractionPlugin}{UploadEngines} || 'html5, html4',
flashUrl => isEngineEnabled("flash")?"%PUBURLPATH%/%SYSTEMWEB%/TopicInteractionPlugin/plupload.flash.swf":undef,
silverlightUrl => isEngineEnabled("silverlight")?"%PUBURLPATH%/%SYSTEMWEB%/TopicInteractionPlugin/plupload.silverlight.xap":undef,
},
@_,
},
Expand All @@ -71,20 +68,6 @@ sub new {
return $this;
}

##############################################################################
our %_enabledEngines;
sub isEngineEnabled {
my $engine = shift;

unless (keys %_enabledEngines) {
%_enabledEngines =
map {lc($_), 1}
split(/\s*,\s*/, $Foswiki::cfg{TopicInteractionPlugin}{UploadEngines} || 'html5, html4');
}

return $_enabledEngines{$engine};
}

##############################################################################
sub restChangeProperties {
my ($this, $subject, $verb, $response) = @_;
Expand Down
2 changes: 1 addition & 1 deletion lib/Foswiki/Plugins/TopicInteractionPlugin/DEPENDENCIES
Expand Up @@ -4,7 +4,7 @@ Foswiki::Plugins::FlexFormPlugin,>=2.40,perl,Required
Foswiki::Plugins::DocumentViewerPlugin,>=1.0,perl,Optional
Foswiki::Plugins::ImageGalleryPlugin,>=6.00,perl,Optional
Foswiki::Plugins::ImagePlugin,>=2.41,perl,Optional
Foswiki::Plugins::JQueryPlugin,>=6.00,perl,Required
Foswiki::Plugins::JQueryPlugin,>=7.20,perl,Required
Foswiki::Plugins::MediaElementPlugin,>=1.00,perl,Optional
Foswiki::Plugins::MetaCommentPlugin,>=1.11,perl,Optional
Foswiki::Plugins::LikePlugin,>=2.00,perl,Optional
Expand Down
54 changes: 13 additions & 41 deletions lib/Foswiki/Plugins/TopicInteractionPlugin/MANIFEST
Expand Up @@ -18,12 +18,9 @@ lib/Foswiki/Plugins/TopicInteractionPlugin/Uploader.pm 0644
lib/Foswiki/Plugins/TopicInteractionPlugin/WebDAVUrl.pm 0644
locale/TopicInteractionPlugin/de.po 0644
locale/TopicInteractionPlugin/Foswiki.pot 0644
pub/System/TopicInteractionPlugin/browserplus.init.js 0644
pub/System/TopicInteractionPlugin/browserplus.init.js.gz 0644
pub/System/TopicInteractionPlugin/browserplus.init.uncompressed.js 0644
pub/System/TopicInteractionPlugin/gears.init.js 0644
pub/System/TopicInteractionPlugin/gears.init.js.gz 0644
pub/System/TopicInteractionPlugin/gears.init.uncompressed.js 0644
pub/System/TopicInteractionPlugin/detectos.uncompressed.js 0644
pub/System/TopicInteractionPlugin/foswiki.attachments.uncompressed.js 0644
pub/System/TopicInteractionPlugin/foswiki.fileupload.uncompressed.js 0644
pub/System/TopicInteractionPlugin/i18n/cs.js 0644
pub/System/TopicInteractionPlugin/i18n/da.js 0644
pub/System/TopicInteractionPlugin/i18n/de.js 0644
Expand All @@ -38,20 +35,11 @@ pub/System/TopicInteractionPlugin/i18n/nl.js 0644
pub/System/TopicInteractionPlugin/i18n/pt-br.js 0644
pub/System/TopicInteractionPlugin/i18n/ru.js 0644
pub/System/TopicInteractionPlugin/i18n/sv.js 0644
pub/System/TopicInteractionPlugin/icons/document-export.png 0644
pub/System/TopicInteractionPlugin/icons/download.png 0644
pub/System/TopicInteractionPlugin/icons/insert-image.png 0644
pub/System/TopicInteractionPlugin/icons/insert-link.png 0644
pub/System/TopicInteractionPlugin/icons/trash-full.png 0644
pub/System/TopicInteractionPlugin/icons/trash.png 0644
pub/System/TopicInteractionPlugin/icons/white-bulb.png 0644
pub/System/TopicInteractionPlugin/icons/yellow-bulb.png 0644
pub/System/TopicInteractionPlugin/jquery.uploader.css 0644
pub/System/TopicInteractionPlugin/jquery.fileupload-process.js 0644
pub/System/TopicInteractionPlugin/jquery.fileupload-process.uncompressed.js 0644
pub/System/TopicInteractionPlugin/jquery.fileupload.uncompressed.js 0644
pub/System/TopicInteractionPlugin/jquery.uploader.css.gz 0644
pub/System/TopicInteractionPlugin/jquery.uploader.js 0644
pub/System/TopicInteractionPlugin/jquery.uploader.js.gz 0644
pub/System/TopicInteractionPlugin/jquery.uploader.uncompressed.css 0644
pub/System/TopicInteractionPlugin/jquery.uploader.uncompressed.js 0644
pub/System/TopicInteractionPlugin/LibreOfficeWebDAV.reg 0644
pub/System/TopicInteractionPlugin/Makefile 0644
pub/System/TopicInteractionPlugin/metadata.css 0644
Expand All @@ -60,35 +48,19 @@ pub/System/TopicInteractionPlugin/metadata.js 0644
pub/System/TopicInteractionPlugin/metadata.js.gz 0644
pub/System/TopicInteractionPlugin/metadata.uncompressed.css 0644
pub/System/TopicInteractionPlugin/metadata.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.browserplus.js 0644
pub/System/TopicInteractionPlugin/plupload.browserplus.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.browserplus.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.flash.js 0644
pub/System/TopicInteractionPlugin/plupload.flash.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.flash.swf 0644
pub/System/TopicInteractionPlugin/plupload.flash.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.gears.js 0644
pub/System/TopicInteractionPlugin/plupload.gears.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.gears.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.html4.js 0644
pub/System/TopicInteractionPlugin/plupload.html4.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.html4.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.html5.js 0644
pub/System/TopicInteractionPlugin/plupload.html5.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.html5.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.js 0644
pub/System/TopicInteractionPlugin/plupload.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.silverlight.js 0644
pub/System/TopicInteractionPlugin/plupload.silverlight.js.gz 0644
pub/System/TopicInteractionPlugin/plupload.silverlight.uncompressed.js 0644
pub/System/TopicInteractionPlugin/plupload.silverlight.xap 0644
pub/System/TopicInteractionPlugin/plupload.uncompressed.js 0644
pub/System/TopicInteractionPlugin/Screenshot.png 0644
pub/System/TopicInteractionPlugin/TopicInteractionPluginSnap1.png 0644
pub/System/TopicInteractionPlugin/TopicInteractionPluginSnap2.png 0644
pub/System/TopicInteractionPlugin/TopicInteractionPluginSnap3.png 0644
pub/System/TopicInteractionPlugin/TopicInteractionPluginSnap4.png 0644
pub/System/TopicInteractionPlugin/TopicInteractionPluginSnap5.png 0644
pub/System/TopicInteractionPlugin/uploader.css 0644
pub/System/TopicInteractionPlugin/uploader.css.gz 0644
pub/System/TopicInteractionPlugin/uploader.js 0644
pub/System/TopicInteractionPlugin/uploader.js.gz 0644
pub/System/TopicInteractionPlugin/uploader.uncompressed.css 0644
pub/System/TopicInteractionPlugin/uploader.uncompressed.js 0644
pub/System/TopicInteractionPlugin/webdav.uncompressed.js 0644
templates/attach.topicinteraction.tmpl 0644
templates/metadata.tmpl 0644
templates/metadata.topicinteraction.tmpl 0644
Expand Down
35 changes: 4 additions & 31 deletions lib/Foswiki/Plugins/TopicInteractionPlugin/Uploader.pm
Expand Up @@ -49,14 +49,14 @@ sub new {
$class->SUPER::new(
$Foswiki::Plugins::SESSION,
name => 'Uploader',
version => '1.3.1',
version => '2.00',
author => 'Michael Daum',
homepage => 'http://foswiki.org/Externsions/TopicInteractionPlugin',
puburl => '%PUBURLPATH%/%SYSTEMWEB%/TopicInteractionPlugin',
documentation => "$Foswiki::cfg{SystemWebName}.TopicInteractionPlugin",
javascript => ['jquery.uploader.js'],
css => ['jquery.uploader.css'],
dependencies => ['blockui', 'scrollto', 'button', 'livequery', 'metadata', 'ui::dialog', 'pnotify', 'form', 'JavascriptFiles/foswikiPref', 'JQUERYPLUGIN::UPLOADER::ENGINES'],
javascript => ['uploader.js'],
css => ['uploader.css'],
dependencies => ['blockui', 'scrollto', 'button', 'livequery', 'metadata', 'ui::dialog', 'pnotify', 'form', 'i18n', 'JavascriptFiles/foswikiPref'],
i18n => $Foswiki::cfg{SystemWebName} . "/TopicInteractionPlugin/i18n",
@_
),
Expand All @@ -66,32 +66,5 @@ sub new {
return $this;
}

=begin TML
---++ ClassMethod init( $this )
Initialize this plugin by adding the required static files to the page
=cut

sub init {
my $this = shift;

$this->SUPER::init();

my $js = $this->renderJS("plupload.js");

# get js for runtime engines
foreach my $engine (split(/\s*,\s*/, $Foswiki::cfg{TopicInteractionPlugin}{UploadEngines} || 'html5, flash, silverlight, gears, browserplus, html4')) {
$js .= $this->renderJS("$engine.init.js") if
Foswiki::Plugins::TopicInteractionPlugin::Core::isEngineEnabled("browserplus") ||
Foswiki::Plugins::TopicInteractionPlugin::Core::isEngineEnabled("gears");

$js .= $this->renderJS("plupload.$engine.js");
}

Foswiki::Func::addToZone("script", "JQUERYPLUGIN::UPLOADER::ENGINES", $js, 'JQUERYPLUGIN::UPLOADER::META');
}

1;

59 changes: 27 additions & 32 deletions pub/System/TopicInteractionPlugin/Makefile
Expand Up @@ -2,39 +2,34 @@ FOSWIKI_ROOT?=~/foswiki/trunk/core
TARGET= \
metadata.js \
metadata.css \
gears.init.js \
browserplus.init.js \
plupload.browserplus.js \
plupload.flash.js \
plupload.gears.js \
plupload.html4.js \
plupload.html5.js \
plupload.silverlight.js \
plupload.js \
jquery.uploader.js \
jquery.uploader.css
uploader.js \
uploader.css

UPLOADER_SOURCE= \
jquery.fileupload.uncompressed.js \
jquery.fileupload-process.js \
foswiki.fileupload.uncompressed.js

METADATA_SOURCE= \
detectos.uncompressed.js \
webdav.uncompressed.js \
foswiki.attachments.uncompressed.js

-include $(FOSWIKI_ROOT)/pub/System/JQueryPlugin/Makefile.include

DEBUG=false

to-git:
cp plupload.browserplus.uncompressed.js git/src/javascript/plupload.browserplus.js
cp plupload.flash.swf git/bin/plupload.flash.swf
cp plupload.flash.uncompressed.js git/src/javascript/plupload.flash.js
cp plupload.gears.uncompressed.js git/src/javascript/plupload.gears.js
cp plupload.html4.uncompressed.js git/src/javascript/plupload.html4.js
cp plupload.html5.uncompressed.js git/src/javascript/plupload.html5.js
cp plupload.silverlight.uncompressed.js git/src/javascript/plupload.silverlight.js
cp plupload.uncompressed.js git/src/javascript/plupload.js

from-git:
cp git/src/javascript/plupload.browserplus.js plupload.browserplus.uncompressed.js
#cp git/bin/plupload.flash.swf plupload.flash.swf
cp git/src/javascript/plupload.flash.js plupload.flash.uncompressed.js
cp git/src/javascript/plupload.gears.js plupload.gears.uncompressed.js
cp git/src/javascript/plupload.html4.js plupload.html4.uncompressed.js
cp git/src/javascript/plupload.html5.js plupload.html5.uncompressed.js
cp git/src/javascript/plupload.silverlight.js plupload.silverlight.uncompressed.js
cp git/src/javascript/plupload.js plupload.uncompressed.js
.PRECIOUS: %.uncompressed.js

uploader.uncompressed.js: $(UPLOADER_SOURCE)
cat $^ > $@

metadata.uncompressed.js: $(METADATA_SOURCE)
cat $^ > $@

clean:
rm -f $(TARGET) *.gz igp_* genpdf_*

ifneq (,$(wildcard dist))
%.uncompressed.js: dist/js/%.js
cp $< $@
endif

0 comments on commit 63a7ac0

Please sign in to comment.