Skip to content
Snippets Groups Projects
Unverified Commit 07699c19 authored by Christoph Wurst's avatar Christoph Wurst
Browse files

Move OC.appSettings to the bundle and deprecate it

parent b8c01dc2
No related branches found
No related tags found
No related merge requests found
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -4,63 +4,6 @@
Object.assign(window.OC, {
/* jshint camelcase: false */
/**
* Opens a popup with the setting for an app.
* @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.
* @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string
* it will attempt to load a script by that name in the 'js' directory.
* @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.
* @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in
* the root of the app directory hierarchy.
*/
appSettings:function(args) {
if(typeof args === 'undefined' || typeof args.appid === 'undefined') {
throw { name: 'MissingParameter', message: 'The parameter appid is missing' };
}
var props = {scriptName:'settings.php', cache:true};
$.extend(props, args);
var settings = $('#appsettings');
if(settings.length === 0) {
throw { name: 'MissingDOMElement', message: 'There has be be an element with id "appsettings" for the popup to show.' };
}
var popup = $('#appsettings_popup');
if(popup.length === 0) {
$('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>');
popup = $('#appsettings_popup');
popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft');
}
if(popup.is(':visible')) {
popup.hide().remove();
} else {
var arrowclass = settings.hasClass('topright') ? 'up' : 'left';
var jqxhr = $.get(OC.filePath(props.appid, '', props.scriptName), function(data) {
popup.html(data).ready(function() {
popup.prepend('<span class="arrow '+arrowclass+'"></span><h2>'+t('core', 'Settings')+'</h2><a class="close"></a>').show();
popup.find('.close').bind('click', function() {
popup.remove();
});
if(typeof props.loadJS !== 'undefined') {
var scriptname;
if(props.loadJS === true) {
scriptname = 'settings.js';
} else if(typeof props.loadJS === 'string') {
scriptname = props.loadJS;
} else {
throw { name: 'InvalidParameter', message: 'The "loadJS" parameter must be either boolean or a string.' };
}
if(props.cache) {
$.ajaxSetup({cache: true});
}
$.getScript(OC.filePath(props.appid, 'js', scriptname))
.fail(function(jqxhr, settings, e) {
throw e;
});
}
}).show();
}, 'html');
}
},
/**
* Warn users that the connection to the server was lost temporarily
*
......
/*
* @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/>.
*/
import $ from 'jquery'
import {filePath} from './routing'
/**
* Opens a popup with the setting for an app.
* @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.
* @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string
* it will attempt to load a script by that name in the 'js' directory.
* @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.
* @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in
* the root of the app directory hierarchy.
*
* @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18
*/
export const appSettings = args => {
console.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')
if (typeof args === 'undefined' || typeof args.appid === 'undefined') {
throw {
name: 'MissingParameter',
message: 'The parameter appid is missing'
}
}
var props = {scriptName: 'settings.php', cache: true}
$.extend(props, args)
var settings = $('#appsettings')
if (settings.length === 0) {
throw {
name: 'MissingDOMElement',
message: 'There has be be an element with id "appsettings" for the popup to show.'
}
}
var popup = $('#appsettings_popup')
if (popup.length === 0) {
$('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>')
popup = $('#appsettings_popup')
popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')
}
if (popup.is(':visible')) {
popup.hide().remove()
} else {
const arrowclass = settings.hasClass('topright') ? 'up' : 'left'
$.get(filePath(props.appid, '', props.scriptName), function (data) {
popup.html(data).ready(function () {
popup.prepend('<span class="arrow ' + arrowclass + '"></span><h2>' + t('core', 'Settings') + '</h2><a class="close"></a>').show()
popup.find('.close').bind('click', function () {
popup.remove()
})
if (typeof props.loadJS !== 'undefined') {
var scriptname
if (props.loadJS === true) {
scriptname = 'settings.js'
} else if (typeof props.loadJS === 'string') {
scriptname = props.loadJS
} else {
throw {
name: 'InvalidParameter',
message: 'The "loadJS" parameter must be either boolean or a string.'
}
}
if (props.cache) {
$.ajaxSetup({cache: true})
}
$.getScript(filePath(props.appid, 'js', scriptname))
.fail(function (jqxhr, settings, e) {
throw e
})
}
}).show()
}, 'html')
}
}
......@@ -22,6 +22,7 @@
import {addScript, addStyle} from './legacy-loader'
import Apps from './apps'
import {AppConfig, appConfig} from './appconfig'
import {appSettings} from './appsettings'
import appswebroots from './appswebroots'
import Backbone from './backbone'
import {
......@@ -129,6 +130,7 @@ export default {
Apps,
AppConfig,
appConfig,
appSettings,
appswebroots,
Backbone,
ContactsMenu,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment