mirror of
https://github.com/nextcloud/server.git
synced 2026-02-14 00:04:57 -05:00
Merge pull request #20989 from nextcloud/td/js/move_core_files_webpack
Move core/js/files to webpack
This commit is contained in:
commit
5e35594cb6
25 changed files with 615 additions and 570 deletions
|
|
@ -16,8 +16,6 @@
|
|||
"../search/js/search.js",
|
||||
"mimetype.js",
|
||||
"mimetypelist.js",
|
||||
"files/fileinfo.js",
|
||||
"files/client.js",
|
||||
"systemtags/systemtags.js",
|
||||
"systemtags/templates.js",
|
||||
"systemtags/systemtagmodel.js",
|
||||
|
|
|
|||
33
core/js/dist/files_client.js
vendored
Normal file
33
core/js/dist/files_client.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
core/js/dist/files_client.js.map
vendored
Normal file
1
core/js/dist/files_client.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
core/js/dist/files_fileinfo.js
vendored
Normal file
2
core/js/dist/files_fileinfo.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
core/js/dist/files_fileinfo.js.map
vendored
Normal file
1
core/js/dist/files_fileinfo.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
2
core/js/dist/files_iedavclient.js
vendored
Normal file
2
core/js/dist/files_iedavclient.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
core/js/dist/files_iedavclient.js.map
vendored
Normal file
1
core/js/dist/files_iedavclient.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
10
core/js/dist/install.js
vendored
10
core/js/dist/install.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/install.js.map
vendored
2
core/js/dist/install.js.map
vendored
File diff suppressed because one or more lines are too long
30
core/js/dist/login.js
vendored
30
core/js/dist/login.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/login.js.map
vendored
2
core/js/dist/login.js.map
vendored
File diff suppressed because one or more lines are too long
44
core/js/dist/main.js
vendored
44
core/js/dist/main.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/main.js.map
vendored
2
core/js/dist/main.js.map
vendored
File diff suppressed because one or more lines are too long
24
core/js/dist/maintenance.js
vendored
24
core/js/dist/maintenance.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/maintenance.js.map
vendored
2
core/js/dist/maintenance.js.map
vendored
File diff suppressed because one or more lines are too long
4
core/js/dist/recommendedapps.js
vendored
4
core/js/dist/recommendedapps.js
vendored
File diff suppressed because one or more lines are too long
2
core/js/dist/recommendedapps.js.map
vendored
2
core/js/dist/recommendedapps.js.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,163 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2015
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global dav */
|
||||
(function(dav) {
|
||||
|
||||
/**
|
||||
* Override davclient.js methods with IE-compatible logic
|
||||
*/
|
||||
dav.Client.prototype = _.extend({}, dav.Client.prototype, {
|
||||
|
||||
/**
|
||||
* Performs a HTTP request, and returns a Promise
|
||||
*
|
||||
* @param {string} method HTTP method
|
||||
* @param {string} url Relative or absolute url
|
||||
* @param {Object} headers HTTP headers as an object.
|
||||
* @param {string} body HTTP request body.
|
||||
* @return {Promise}
|
||||
*/
|
||||
request : function(method, url, headers, body) {
|
||||
|
||||
var self = this;
|
||||
var xhr = this.xhrProvider();
|
||||
headers = headers || {};
|
||||
|
||||
if (this.userName) {
|
||||
headers.Authorization = 'Basic ' + btoa(this.userName + ':' + this.password);
|
||||
// xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);
|
||||
}
|
||||
xhr.open(method, this.resolveUrl(url), true);
|
||||
var ii;
|
||||
for(ii in headers) {
|
||||
xhr.setRequestHeader(ii, headers[ii]);
|
||||
}
|
||||
|
||||
if (body === undefined) {
|
||||
xhr.send();
|
||||
} else {
|
||||
xhr.send(body);
|
||||
}
|
||||
|
||||
return new Promise(function(fulfill, reject) {
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
|
||||
if (xhr.readyState !== 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
var resultBody = xhr.response;
|
||||
if (xhr.status === 207) {
|
||||
resultBody = self.parseMultiStatus(xhr.responseXML);
|
||||
}
|
||||
|
||||
fulfill({
|
||||
body: resultBody,
|
||||
status: xhr.status,
|
||||
xhr: xhr
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
xhr.ontimeout = function() {
|
||||
|
||||
reject(new Error('Timeout exceeded'));
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
_getElementsByTagName: function(node, name, resolver) {
|
||||
var parts = name.split(':');
|
||||
var tagName = parts[1];
|
||||
var namespace = resolver(parts[0]);
|
||||
// make sure we can get elements
|
||||
if (typeof node === 'string') {
|
||||
var parser = new DOMParser()
|
||||
node = parser.parseFromString(node, 'text/xml')
|
||||
}
|
||||
if (node.getElementsByTagNameNS) {
|
||||
return node.getElementsByTagNameNS(namespace, tagName);
|
||||
}
|
||||
return node.getElementsByTagName(name);
|
||||
},
|
||||
|
||||
/**
|
||||
* Parses a multi-status response body.
|
||||
*
|
||||
* @param {string} xmlBody
|
||||
* @param {Array}
|
||||
*/
|
||||
parseMultiStatus : function(doc) {
|
||||
var result = [];
|
||||
var resolver = function(foo) {
|
||||
var ii;
|
||||
for(ii in this.xmlNamespaces) {
|
||||
if (this.xmlNamespaces[ii] === foo) {
|
||||
return ii;
|
||||
}
|
||||
}
|
||||
}.bind(this);
|
||||
|
||||
var responses = this._getElementsByTagName(doc, 'd:response', resolver);
|
||||
var i;
|
||||
for (i = 0; i < responses.length; i++) {
|
||||
var responseNode = responses[i];
|
||||
var response = {
|
||||
href : null,
|
||||
propStat : []
|
||||
};
|
||||
|
||||
var hrefNode = this._getElementsByTagName(responseNode, 'd:href', resolver)[0];
|
||||
|
||||
response.href = hrefNode.textContent || hrefNode.text;
|
||||
|
||||
var propStatNodes = this._getElementsByTagName(responseNode, 'd:propstat', resolver);
|
||||
var j = 0;
|
||||
|
||||
for (j = 0; j < propStatNodes.length; j++) {
|
||||
var propStatNode = propStatNodes[j];
|
||||
var statusNode = this._getElementsByTagName(propStatNode, 'd:status', resolver)[0];
|
||||
|
||||
var propStat = {
|
||||
status : statusNode.textContent || statusNode.text,
|
||||
properties : []
|
||||
};
|
||||
|
||||
var propNode = this._getElementsByTagName(propStatNode, 'd:prop', resolver)[0];
|
||||
if (!propNode) {
|
||||
continue;
|
||||
}
|
||||
var k = 0;
|
||||
for (k = 0; k < propNode.childNodes.length; k++) {
|
||||
var prop = propNode.childNodes[k];
|
||||
var value = this._parsePropNode(prop);
|
||||
propStat.properties['{' + prop.namespaceURI + '}' + (prop.localName || prop.baseName)] = value;
|
||||
|
||||
}
|
||||
response.propStat.push(propStat);
|
||||
}
|
||||
|
||||
result.push(response);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
})(dav);
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,3 +1,4 @@
|
|||
/* eslint-disable */
|
||||
/*
|
||||
* Copyright (c) 2015
|
||||
*
|
||||
|
|
@ -18,35 +19,35 @@
|
|||
*
|
||||
* @since 8.2
|
||||
*/
|
||||
var FileInfo = function(data) {
|
||||
var self = this;
|
||||
const FileInfo = function(data) {
|
||||
const self = this
|
||||
_.each(data, function(value, key) {
|
||||
if (!_.isFunction(value)) {
|
||||
self[key] = value;
|
||||
self[key] = value
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
if (!_.isUndefined(this.id)) {
|
||||
this.id = parseInt(data.id, 10);
|
||||
this.id = parseInt(data.id, 10)
|
||||
}
|
||||
|
||||
// TODO: normalize path
|
||||
this.path = data.path || '';
|
||||
this.path = data.path || ''
|
||||
|
||||
if (this.type === 'dir') {
|
||||
this.mimetype = 'httpd/unix-directory';
|
||||
this.mimetype = 'httpd/unix-directory'
|
||||
} else {
|
||||
this.mimetype = this.mimetype || 'application/octet-stream';
|
||||
this.mimetype = this.mimetype || 'application/octet-stream'
|
||||
}
|
||||
|
||||
if (!this.type) {
|
||||
if (this.mimetype === 'httpd/unix-directory') {
|
||||
this.type = 'dir';
|
||||
this.type = 'dir'
|
||||
} else {
|
||||
this.type = 'file';
|
||||
this.type = 'file'
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @memberof OC.Files
|
||||
|
|
@ -137,12 +138,11 @@
|
|||
/**
|
||||
* @type int
|
||||
*/
|
||||
sharePermissions: null
|
||||
};
|
||||
sharePermissions: null,
|
||||
}
|
||||
|
||||
if (!OC.Files) {
|
||||
OC.Files = {};
|
||||
OC.Files = {}
|
||||
}
|
||||
OC.Files.FileInfo = FileInfo;
|
||||
})(OC);
|
||||
|
||||
OC.Files.FileInfo = FileInfo
|
||||
})(OC)
|
||||
162
core/src/files/iedavclient.js
Normal file
162
core/src/files/iedavclient.js
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
/* eslint-disable */
|
||||
/*
|
||||
* Copyright (c) 2015
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global dav */
|
||||
(function(dav) {
|
||||
|
||||
/**
|
||||
* Override davclient.js methods with IE-compatible logic
|
||||
*/
|
||||
dav.Client.prototype = _.extend({}, dav.Client.prototype, {
|
||||
|
||||
/**
|
||||
* Performs a HTTP request, and returns a Promise
|
||||
*
|
||||
* @param {string} method HTTP method
|
||||
* @param {string} url Relative or absolute url
|
||||
* @param {Object} headers HTTP headers as an object.
|
||||
* @param {string} body HTTP request body.
|
||||
* @returns {Promise}
|
||||
*/
|
||||
request: function(method, url, headers, body) {
|
||||
|
||||
const self = this
|
||||
const xhr = this.xhrProvider()
|
||||
headers = headers || {}
|
||||
|
||||
if (this.userName) {
|
||||
headers.Authorization = 'Basic ' + btoa(this.userName + ':' + this.password)
|
||||
// xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);
|
||||
}
|
||||
xhr.open(method, this.resolveUrl(url), true)
|
||||
let ii
|
||||
for (ii in headers) {
|
||||
xhr.setRequestHeader(ii, headers[ii])
|
||||
}
|
||||
|
||||
if (body === undefined) {
|
||||
xhr.send()
|
||||
} else {
|
||||
xhr.send(body)
|
||||
}
|
||||
|
||||
return new Promise(function(fulfill, reject) {
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
|
||||
if (xhr.readyState !== 4) {
|
||||
return
|
||||
}
|
||||
|
||||
let resultBody = xhr.response
|
||||
if (xhr.status === 207) {
|
||||
resultBody = self.parseMultiStatus(xhr.responseXML)
|
||||
}
|
||||
|
||||
fulfill({
|
||||
body: resultBody,
|
||||
status: xhr.status,
|
||||
xhr: xhr,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
xhr.ontimeout = function() {
|
||||
|
||||
reject(new Error('Timeout exceeded'))
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
_getElementsByTagName: function(node, name, resolver) {
|
||||
const parts = name.split(':')
|
||||
const tagName = parts[1]
|
||||
const namespace = resolver(parts[0])
|
||||
// make sure we can get elements
|
||||
if (typeof node === 'string') {
|
||||
const parser = new DOMParser()
|
||||
node = parser.parseFromString(node, 'text/xml')
|
||||
}
|
||||
if (node.getElementsByTagNameNS) {
|
||||
return node.getElementsByTagNameNS(namespace, tagName)
|
||||
}
|
||||
return node.getElementsByTagName(name)
|
||||
},
|
||||
|
||||
/**
|
||||
* Parses a multi-status response body.
|
||||
*
|
||||
* @param {string} xmlBody
|
||||
* @param {Array}
|
||||
*/
|
||||
parseMultiStatus: function(doc) {
|
||||
const result = []
|
||||
const resolver = function(foo) {
|
||||
let ii
|
||||
for (ii in this.xmlNamespaces) {
|
||||
if (this.xmlNamespaces[ii] === foo) {
|
||||
return ii
|
||||
}
|
||||
}
|
||||
}.bind(this)
|
||||
|
||||
const responses = this._getElementsByTagName(doc, 'd:response', resolver)
|
||||
let i
|
||||
for (i = 0; i < responses.length; i++) {
|
||||
const responseNode = responses[i]
|
||||
const response = {
|
||||
href: null,
|
||||
propStat: [],
|
||||
}
|
||||
|
||||
const hrefNode = this._getElementsByTagName(responseNode, 'd:href', resolver)[0]
|
||||
|
||||
response.href = hrefNode.textContent || hrefNode.text
|
||||
|
||||
const propStatNodes = this._getElementsByTagName(responseNode, 'd:propstat', resolver)
|
||||
let j = 0
|
||||
|
||||
for (j = 0; j < propStatNodes.length; j++) {
|
||||
const propStatNode = propStatNodes[j]
|
||||
const statusNode = this._getElementsByTagName(propStatNode, 'd:status', resolver)[0]
|
||||
|
||||
const propStat = {
|
||||
status: statusNode.textContent || statusNode.text,
|
||||
properties: [],
|
||||
}
|
||||
|
||||
const propNode = this._getElementsByTagName(propStatNode, 'd:prop', resolver)[0]
|
||||
if (!propNode) {
|
||||
continue
|
||||
}
|
||||
let k = 0
|
||||
for (k = 0; k < propNode.childNodes.length; k++) {
|
||||
const prop = propNode.childNodes[k]
|
||||
const value = this._parsePropNode(prop)
|
||||
propStat.properties['{' + prop.namespaceURI + '}' + (prop.localName || prop.baseName)] = value
|
||||
|
||||
}
|
||||
response.propStat.push(propStat)
|
||||
}
|
||||
|
||||
result.push(response)
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
})(dav)
|
||||
|
|
@ -58,8 +58,8 @@
|
|||
:redirect-url="redirectUrl"
|
||||
:inverted-colors="invertedColors"
|
||||
:auto-complete-allowed="autoCompleteAllowed"
|
||||
:isHttps="isHttps"
|
||||
:hasPublicKeyCredential="hasPublicKeyCredential"
|
||||
:is-https="isHttps"
|
||||
:has-public-key-credential="hasPublicKeyCredential"
|
||||
@submit="loading = true" />
|
||||
<a @click.prevent="passwordlessLogin = false">
|
||||
{{ t('core', 'Back') }}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@ module.exports = [
|
|||
main: path.join(__dirname, 'src/main.js'),
|
||||
maintenance: path.join(__dirname, 'src/maintenance.js'),
|
||||
recommendedapps: path.join(__dirname, 'src/recommendedapps.js'),
|
||||
install: path.join(__dirname, 'src/install.js')
|
||||
install: path.join(__dirname, 'src/install.js'),
|
||||
files_client: path.join(__dirname, 'src/files/client.js'),
|
||||
files_fileinfo: path.join(__dirname, 'src/files/fileinfo.js'),
|
||||
files_iedavclient: path.join(__dirname, 'src/files/iedavclient.js')
|
||||
},
|
||||
output: {
|
||||
filename: '[name].js',
|
||||
|
|
|
|||
|
|
@ -118,14 +118,14 @@ class OC_Template extends \OC\Template\Base {
|
|||
OC_Util::addScript('search', 'search', true);
|
||||
OC_Util::addScript('search', 'searchprovider');
|
||||
OC_Util::addScript('merged-template-prepend', null, true);
|
||||
OC_Util::addScript('files/fileinfo');
|
||||
OC_Util::addScript('files/client');
|
||||
OC_Util::addScript('dist/files_fileinfo');
|
||||
OC_Util::addScript('dist/files_client');
|
||||
}
|
||||
OC_Util::addScript('core', 'dist/main', true);
|
||||
|
||||
if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) {
|
||||
// shim for the davclient.js library
|
||||
\OCP\Util::addScript('files/iedavclient');
|
||||
\OCP\Util::addScript('dist/files_iedavclient');
|
||||
}
|
||||
|
||||
self::$initTemplateEngineFirstRun = false;
|
||||
|
|
|
|||
|
|
@ -127,6 +127,8 @@ module.exports = function(config) {
|
|||
|
||||
files.push(corePath + 'tests/html-domparser.js');
|
||||
files.push('core/js/dist/main.js');
|
||||
files.push('core/js/dist/files_fileinfo.js');
|
||||
files.push('core/js/dist/files_client.js');
|
||||
// core mocks
|
||||
files.push(corePath + 'tests/specHelper.js');
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue