Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundle all vendor libs together .... #30088

Closed
wants to merge 13 commits into from

Conversation

DeepDiver1975
Copy link
Member

@DeepDiver1975 DeepDiver1975 commented Jan 10, 2018

Description

Use webpack to bundle vendor libs into one bundle.js

Related Issue

@PVince81 I don't find the related issue anymore.

Motivation and Context

  • load less files
  • reduce tar ball size
  • simplify release script

How Has This Been Tested?

  • make test-js
  • manual web ui testing

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@PVince81
Copy link
Contributor

partly discussed in #17169

@@ -0,0 +1,42 @@
var $ = require('jquery');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok so it seems this file is still some kind of weird workaround to make libraries available at load time.

I expect that this one will disappear once we start using require() in all our JS code that actually requires these libs. And also once we use webpack for other things...

@felixheidecke any thoughts on this ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll have a look to make this work with ProvidePlugin ...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@PVince81 are we moving to ES6 already? Would be nice. :-D

@@ -1,6 +1,6 @@
<?php /** @var $l \OCP\IL10N */ ?>
<?php
vendor_script('jsTimezoneDetect/jstz');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove completely ?

@PVince81
Copy link
Contributor

Nice!

@DeepDiver1975 DeepDiver1975 force-pushed the use-webpack-for-core-vendor branch 3 times, most recently from 0521d9f to 856ab46 Compare January 11, 2018 10:20
@codecov
Copy link

codecov bot commented Jan 11, 2018

Codecov Report

Merging #30088 into master will increase coverage by <.01%.
The diff coverage is 100%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master   #30088      +/-   ##
============================================
+ Coverage     63.95%   63.95%   +<.01%     
- Complexity    18592    18593       +1     
============================================
  Files          1172     1172              
  Lines         69820    69811       -9     
  Branches       1267     1267              
============================================
- Hits          44654    44650       -4     
+ Misses        24797    24792       -5     
  Partials        369      369
Flag Coverage Δ Complexity Δ
#javascript 52.81% <ø> (ø) 0 <ø> (ø) ⬇️
#phpunit 65.23% <100%> (ø) 18593 <0> (+1) ⬆️
Impacted Files Coverage Δ Complexity Δ
core/templates/login.php 0% <ø> (ø) 0 <0> (ø) ⬇️
lib/private/legacy/template.php 49.34% <100%> (-2.51%) 38 <0> (-2)
lib/private/Encryption/DecryptAll.php 90.51% <0%> (+0.42%) 36% <0%> (+3%) ⬆️
apps/dav/lib/Server.php 51.42% <0%> (+1.07%) 24% <0%> (ø) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 7c6b81b...0a20275. Read the comment docs.

@phil-davis
Copy link
Contributor

The UI tests fail that use the sharing panel. Locally for me I do not get any list of files in the webUI, no menus,... This is after doing composer install and ctrl-F5 to make sure to reload all JS etc.

@DeepDiver1975
Copy link
Member Author

Locally for me I do not get any list of files in the webUI, no menus,... This is after doing composer install and ctrl-F5 to make sure to reload all JS etc.

make clean & make should pull in everything what is needed ....

@phil-davis
Copy link
Contributor

After make clean then make (among other stuff) does npx webpack and that gets npx: not found

make works fine in master

I tried stuff like:

npm install npx
sudo npm install npx

but does not help.

Is there some extra magic needed here?

@DeepDiver1975
Copy link
Member Author

hmmm .... npx is part of node 8. We need a different approach here ...

Workaround:

cd build
webpack

@PVince81
Copy link
Contributor

maybe just add "build/node_modules/.bin" to the PATH inside the Makefile before running command?

@PVince81
Copy link
Contributor

or if this is about running webpack from CLI, just add it here: https://github.com/owncloud/core/blob/master/Makefile#L42

@DeepDiver1975
Copy link
Member Author

maybe just add "build/node_modules/.bin" to the PATH inside the Makefile before running command?

yarn already sets the PATH ... but there is a bug when calling yarn with --cwd ...

@PVince81 PVince81 modified the milestones: development, planned Jan 12, 2018
@DeepDiver1975
Copy link
Member Author

I guess it's better to add the webpack call to the make file because webpack needs to be executed as soon as package.json, webpack.config.js or entry.js changes - we can only handle this properly in the Makefile afaik.

I'd like to get some help with this ;-)

Furthermore we should take a closer look on the libs - afaik Promise is only needed for IE - right? We might want to have two different bundle.js - one for ie and one for other browsers.

no idea what is the best solution - some webpack practicioneer support would be great ;-)

@PVince81
Copy link
Contributor

I've added webpack to the Makefile.

Note that if you edit package.json or the webpack config and run make directly after, it will rebuild.

Makefile Outdated
cd $(NODE_PREFIX) && $(YARN) install
touch $@

# alias for core deps
$(core_vendor): $(nodejs_deps)
$(core_vendor): $(nodejs_deps) $(NODE_PREFIX)/webpack.config.js
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

entry.js should also be a criteria to rerun this step

Makefile Outdated
cd $(NODE_PREFIX) && $(YARN) install
touch $@

# alias for core deps
$(core_vendor): $(nodejs_deps)
$(core_vendor): $(nodejs_deps) $(NODE_PREFIX)/webpack.config.js
mkdir -p $(core_vendor)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a rm -rf to get a clean vendor folder?

@@ -20,7 +20,6 @@ module.exports = {
// Promise: 'es6-promise'
}),
new CopyWebpackPlugin([
{ from: 'browser-update/browser-update.js', to: 'browser-update/browser-update.js' },
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oooops - THX

@PVince81
Copy link
Contributor

@DeepDiver1975 comments adressed + some additional changes to make test-js also depend on core_vendor

@phil-davis
Copy link
Contributor

phil-davis commented Jan 12, 2018

The make process works for me now. webUI functions manually. Hopefully CI will pass.

@PVince81
Copy link
Contributor

Javascript tests fail: https://drone.owncloud.com/owncloud/core/2452/16

However running make test-js on a clean checkout will properly fetch the deps and make it work.

It turns out test-javascript.sh is not using the makefile. We need to change that.

Also yarn-install.sh should not exist, we should use make, that's what it's for: installing deps.

@DeepDiver1975 @SergioBertolinSG

@DeepDiver1975 DeepDiver1975 force-pushed the use-webpack-for-core-vendor branch 2 times, most recently from 574e22f to ef5e40c Compare January 16, 2018 14:36
@PVince81
Copy link
Contributor

Damn, I thought this was already merged.

Blocking #29815

@PVince81
Copy link
Contributor

While investigating #32117 (comment) I tried moving "oc-backbone-webdav" into the template.php, directly after "oc-backbone". But then when I reloaded the page the order was wrong and different.

This made me realize that the order in which addScript() calls appear in template.php do not match the output. It seems addScript() has a third parameter which we always set to true there and which means "prepend before all others" which might reverse the order somehow.

Why is this information relevant to this PR here ?

I believe that this PR was written assuming that the order of addScript in template was correct, so the wrapper script with the imports would load in that order. However that order doesn't match what we had before, so some side effects appear.

So the plan is to reverify the webpack wrapper script and reorder the imports to match what we see in the head tag on master.

  • adjust script order in webpack wrapper based on the order of <script> tags and <style> tags in the <head> tag on master

@PVince81 PVince81 self-assigned this Jul 27, 2018
@PVince81
Copy link
Contributor

here we go, the reference list:

<link rel="stylesheet" href="/owncloud/core/vendor/select2/select2.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/styles.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/inputs.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/header.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/icons.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/fonts.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/apps.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/global.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/fixes.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/multiselect.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/mobile.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/vendor/jquery-ui/themes/base/jquery-ui.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/jquery-ui-fixes.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/tooltip.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/files_pdfviewer/css/style.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/share.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files_versions/css/versions.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps2/files_videoviewer/css/style.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps2/files_videoviewer/css/mediaelementplayer.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/gallery/css/slideshow.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/gallery/css/gallerybutton.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/notifications/css/styles.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps2/user_migrate/css/style.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/jquery.ocdialog.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files/css/files.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files/css/upload.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files/css/mobile.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files/css/detailsView.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files_sharing/css/sharedfilelist.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files_trashbin/css/trash.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/activity/css/style.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/comments/css/comments.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/files_sharing/css/sharetabview.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/files_texteditor/css/DroidSansMono/stylesheet.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/files_texteditor/css/style.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps3/files_texteditor/css/mobile.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/core/css/systemtags.css?v=12212c820a033750a57ff01c8d119120">
<link rel="stylesheet" href="/owncloud/apps/systemtags/css/systemtagsfilelist.css?v=12212c820a033750a57ff01c8d119120">
<script src="/owncloud/index.php/core/js/oc.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/jquery/dist/jquery.min.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/jquery-migrate/jquery-migrate.min.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/jquery-ui/ui/jquery-ui.custom.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/underscore/underscore.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/moment/min/moment-with-locales.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/handlebars/handlebars.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/blueimp-md5/js/md5.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/bootstrap/js/tooltip.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/backbone/backbone.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/davclient.js/lib/client.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/clipboard/dist/clipboard.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/bowser/src/bowser.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/jquery.ocdialog.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/oc-dialogs.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/js.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/l10n.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/octemplate.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/eventsource.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/config.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/search/js/search.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/oc-requesttoken.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/apps.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/mimetype.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/mimetypelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/snapjs/dist/latest/snap.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/vendor/select2/select2.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/oc-backbone.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/oc-backbone-webdav.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/placeholder.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/jquery.avatar.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/backgroundjobs.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps2/files_odfviewer/js/viewer.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/files_pdfviewer/js/previewplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/shareconfigmodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharemodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharescollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/shareitemmodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialogresharerinfoview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialoglinklistview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialoglinkshareview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialogmailview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialoglinksocialview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialogexpirationview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialogshareelistview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/sharedialogview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/share.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps2/files_videoviewer/js/viewer.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/vendor/bigshot/bigshot-compressed.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/vendor/dompurify/src/purify.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/galleryutility.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/galleryfileaction.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/slideshow.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/slideshowcontrols.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/slideshowzoomablepreview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/gallerybutton.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/rotate.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/gallery/js/rotacion_cup.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/notifications/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/notifications/js/notification.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps2/user_migrate/js/export.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/files/fileinfo.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/files/client.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/file-upload.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/newfilemenu.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/jquery.fileupload.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/jquery-visibility.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/fileinfomodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/filesummary.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/breadcrumb.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/filelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/search.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/favoritesfilelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/tagsplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/favoritesplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/detailfileinfoview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/detailtabview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/mainfileinfodetailview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/detailsview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/fileactions.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/fileactionsmenu.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/files.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/keyboardshortcuts.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files/js/navigation.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_sharing/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_sharing/js/sharedfilelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_trashbin/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_trashbin/js/filelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/activity/js/formatter.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/activity/js/activitymodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/activity/js/activitycollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/activity/js/activitytabview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/activity/js/filesplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/commentmodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/commentcollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/commentsummarymodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/commentstabview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/filesplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/comments/js/activitytabviewplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_sharing/js/share.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_sharing/js/sharetabview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_sharing/js/external.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/files_texteditor/js/editor.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps3/files_texteditor/js/vendor/ace/src-noconflict/ace.js?v=12212c820a033750a57ff01c8d119120"></script>
<style id="ace_editor.css">.ace_editor {position: relative;overflow: hidden;font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: '';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius    : 3px;}.ace_br2 {border-top-right-radius   : 3px;}.ace_br3 {border-top-left-radius    : 3px; border-top-right-radius:    3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius    : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius   : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius    : 3px; border-bottom-left-radius:  3px;}.ace_br10{border-top-right-radius   : 3px; border-bottom-left-radius:  3px;}.ace_br11{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-left-radius:  3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br13{border-top-left-radius    : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br14{border-top-right-radius   : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius:  3px;}.ace_br15{border-top-left-radius    : 3px; border-top-right-radius:    3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} /*# sourceURL=ace/css/ace_editor.css */</style><style id="ace-tm">.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;} /*# sourceURL=ace/css/ace-tm */</style><style>    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }</style>
<script src="/owncloud/apps/files_versions/js/versionmodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_versions/js/versioncollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_versions/js/versionstabview.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/files_versions/js/filesplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/select2-toggleselect.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/systemtags/systemtags.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/systemtags/systemtagmodel.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/systemtags/systemtagsmappingcollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/systemtags/systemtagscollection.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/core/js/systemtags/systemtagsinputfield.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/systemtags/js/app.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/systemtags/js/systemtagsfilelist.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/systemtags/js/filesplugin.js?v=12212c820a033750a57ff01c8d119120"></script>
<script src="/owncloud/apps/systemtags/js/systemtagsinfoview.js?v=12212c820a033750a57ff01c8d119120"></script>

@PVince81
Copy link
Contributor

I've now reordered the vendor libs in "entry.js" to match the order of vendor libs from the list above.

Unfortunately the autocomplete still doesn't work.
I believe that this one isn't really select2 but jquery.ui, so it is likely that there is a styling order problem with jquery.ui here.

I noticed the following:

  • jquery.ui is never loaded directly, but loaded as jquery.ui/custom. not sure why we need require('jquery.ui') additionally. (removing it doesn't seem to break)
  • in the list above, the order of vendor libs is mixed with local libs, so we'll never have the exact same order. in general it sucks that we need an order at all.

Needs further research and deeper look at the order.

Maybe we first wait for the jquery.ui update before continuing ? #18739

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

Seems we updated jquery.ui by mistake by using the ~ operator instead of ^, this likely explains our problems...

I'm now trying to enforce using the same versions like we had on master.
I think we should go step by step: first bundle all libs with the same versions.
Then in a next PR, update some libraries where safe.

Updating jquery and jquery.ui are separate tasks on their own.

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

(will push later, still testing locally...)

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

ok, apparrently ~ is the correct operator... and yet, yarn.lock will still update jquery ui 1.10.0 to the latest minor 1.10.5

Vincent Petry added 2 commits August 3, 2018 19:07
We only need to load the custom one
@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

Still same problem...

One clue I see is that something looks wrong with the jquery ui CSS. With a few hacks I'm able to make the autocomplete field appear, and here we see that the selection items look completely different than on master:
image

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

I think I'm onto something: on this PR the vendor libs are loaded after the jquery-ui-fixes.css is loaded. The challenge we have here is that the vendor.js bundle contains both JS and CSS.
I've tried to make OC first load the vendor bundle and then the jquery-ui-fixes.css, but the addStyles logic will always move all styles to the top of <head>, so they will always be loaded first.

Maybe we should separate the JS and CSS and have the vendor bundle contain only JS, and find another way to load CSS. Maybe have them concatenated into a vendor CSS file.

@felixheidecke thoughts ?

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

I've now managed to make the jquery-ui* CSS load in the same order as above by simply copying the CSS over with CopyWebpackPlugin.

Sadly this doesn't solve the autocomplete problem...

Next up to try: have jquery.ui 0.10.0 in here instead of 0.10.5...

This ensures that the loading order is the same as before on master.
@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

on master the version in yarn.lock is:

"@bower_components/jquery-ui@components/jqueryui#1.10.0":
  version "1.10.0"
  resolved "https://codeload.github.com/components/jqueryui/tar.gz/4c0bac635cc97c8cd5087bb244d497100429fea2"

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

I tried changing the version from ~1.10.0 to 1.10.0, now:

image

😢

@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

AHA, a new insight:

I went to master and updated jquery.ui from 1.10.0 to 1.10.4 in the bower dependencies. After that update the autocomplete stopped worked with the same symptoms (z-index problem).

This confirms that the main problem now is the forced update to 1.10.4. I didn't find a nice way to make yarn load jquery-ui 1.10.0 without bower, due to #30088 (comment).

Maybe we'll need to wait for #18739 to have a clean jquery.ui update.

The other alternative is trying to adjust our jquery-ui-fixes.css to properly override the styles of 1.10.4... The worse part here is mostly that we had this jquery-ui-fixes file in the first place...

@PVince81 PVince81 mentioned this pull request Aug 3, 2018
4 tasks
@PVince81
Copy link
Contributor

PVince81 commented Aug 3, 2018

At this point I have the feeling that there is no point trying to hack this PR further before jquery-ui is updated and all related hacks as part of #18739.

@PVince81 PVince81 mentioned this pull request Aug 8, 2018
@DeepDiver1975 DeepDiver1975 removed their assignment Oct 23, 2018
@PVince81
Copy link
Contributor

PVince81 commented Nov 6, 2018

we now have jquery ui update and jquery 2 on master, so could carry on with this PR if we still think it's important

@PVince81 PVince81 closed this Nov 6, 2018
@PVince81 PVince81 deleted the use-webpack-for-core-vendor branch November 6, 2018 13:24
@PVince81
Copy link
Contributor

PVince81 commented Nov 6, 2018

deferred for now. also Phoenix brings its own UI components now, so likely obsolete

@lock lock bot locked as resolved and limited conversation to collaborators Nov 6, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants