mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 09:42:09 -04:00
Merge pull request #15532 from nextcloud/refactor/oc-query-string-helpers-bundle
Move query string helpers to the bundle
This commit is contained in:
commit
b06aebbe60
7 changed files with 196 additions and 126 deletions
39
core/js/dist/login.js
vendored
39
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
109
core/js/dist/main.js
vendored
109
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
|
|
@ -7,77 +7,6 @@ var OCP = Object.assign({}, window.OCP);
|
|||
Object.assign(window.OC, {
|
||||
/* jshint camelcase: false */
|
||||
|
||||
/**
|
||||
* Parses a URL query string into a JS map
|
||||
* @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz
|
||||
* @return {Object.<string, string>} map containing key/values matching the URL parameters
|
||||
*/
|
||||
parseQueryString:function(queryString){
|
||||
var parts,
|
||||
pos,
|
||||
components,
|
||||
result = {},
|
||||
key,
|
||||
value;
|
||||
if (!queryString){
|
||||
return null;
|
||||
}
|
||||
pos = queryString.indexOf('?');
|
||||
if (pos >= 0){
|
||||
queryString = queryString.substr(pos + 1);
|
||||
}
|
||||
parts = queryString.replace(/\+/g, '%20').split('&');
|
||||
for (var i = 0; i < parts.length; i++){
|
||||
// split on first equal sign
|
||||
var part = parts[i];
|
||||
pos = part.indexOf('=');
|
||||
if (pos >= 0) {
|
||||
components = [
|
||||
part.substr(0, pos),
|
||||
part.substr(pos + 1)
|
||||
];
|
||||
}
|
||||
else {
|
||||
// key only
|
||||
components = [part];
|
||||
}
|
||||
if (!components.length){
|
||||
continue;
|
||||
}
|
||||
key = decodeURIComponent(components[0]);
|
||||
if (!key){
|
||||
continue;
|
||||
}
|
||||
// if equal sign was there, return string
|
||||
if (components.length > 1) {
|
||||
result[key] = decodeURIComponent(components[1]);
|
||||
}
|
||||
// no equal sign => null value
|
||||
else {
|
||||
result[key] = null;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* Builds a URL query from a JS map.
|
||||
* @param {Object.<string, string>} params map containing key/values matching the URL parameters
|
||||
* @return {string} String containing a URL query (without question) mark
|
||||
*/
|
||||
buildQueryString: function(params) {
|
||||
if (!params) {
|
||||
return '';
|
||||
}
|
||||
return $.map(params, function(value, key) {
|
||||
var s = encodeURIComponent(key);
|
||||
if (value !== null && typeof(value) !== 'undefined') {
|
||||
s += '=' + encodeURIComponent(value);
|
||||
}
|
||||
return s;
|
||||
}).join('&');
|
||||
},
|
||||
|
||||
/**
|
||||
* Opens a popup with the setting for an app.
|
||||
* @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ import {
|
|||
isSamePath,
|
||||
joinPaths,
|
||||
} from './path'
|
||||
import {
|
||||
build as buildQueryString,
|
||||
parse as parseQueryString,
|
||||
} from './query-string'
|
||||
import Config from './config'
|
||||
import {
|
||||
coreApps,
|
||||
|
|
@ -198,6 +202,12 @@ export default {
|
|||
*/
|
||||
addTranslations: L10N.load,
|
||||
|
||||
/**
|
||||
* Query string helpers
|
||||
*/
|
||||
buildQueryString,
|
||||
parseQueryString,
|
||||
|
||||
msg,
|
||||
Notification,
|
||||
PasswordConfirmation,
|
||||
|
|
|
|||
89
core/src/OC/query-string.js
Normal file
89
core/src/OC/query-string.js
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
/*
|
||||
* @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
*
|
||||
* @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Parses a URL query string into a JS map
|
||||
* @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz
|
||||
* @return {Object.<string, string>} map containing key/values matching the URL parameters
|
||||
*/
|
||||
export const parse = queryString => {
|
||||
let parts,
|
||||
pos,
|
||||
components,
|
||||
result = {},
|
||||
key,
|
||||
value
|
||||
if (!queryString) {
|
||||
return null
|
||||
}
|
||||
pos = queryString.indexOf('?')
|
||||
if (pos >= 0) {
|
||||
queryString = queryString.substr(pos + 1)
|
||||
}
|
||||
parts = queryString.replace(/\+/g, '%20').split('&')
|
||||
for (let i = 0; i < parts.length; i++) {
|
||||
// split on first equal sign
|
||||
var part = parts[i]
|
||||
pos = part.indexOf('=')
|
||||
if (pos >= 0) {
|
||||
components = [
|
||||
part.substr(0, pos),
|
||||
part.substr(pos + 1)
|
||||
]
|
||||
} else {
|
||||
// key only
|
||||
components = [part]
|
||||
}
|
||||
if (!components.length) {
|
||||
continue
|
||||
}
|
||||
key = decodeURIComponent(components[0])
|
||||
if (!key) {
|
||||
continue
|
||||
}
|
||||
// if equal sign was there, return string
|
||||
if (components.length > 1) {
|
||||
result[key] = decodeURIComponent(components[1])
|
||||
} else {
|
||||
// no equal sign => null value
|
||||
result[key] = null
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a URL query from a JS map.
|
||||
* @param {Object.<string, string>} params map containing key/values matching the URL parameters
|
||||
* @return {string} String containing a URL query (without question) mark
|
||||
*/
|
||||
export const build = params => {
|
||||
if (!params) {
|
||||
return ''
|
||||
}
|
||||
return $.map(params, function (value, key) {
|
||||
var s = encodeURIComponent(key)
|
||||
if (value !== null && typeof (value) !== 'undefined') {
|
||||
s += '=' + encodeURIComponent(value)
|
||||
}
|
||||
return s
|
||||
}).join('&')
|
||||
}
|
||||
Loading…
Reference in a new issue