import { load as cheerioLoad } from 'cheerio'; import Lang from '../util/i18n.js'; import Wiki from '../util/wiki.js'; import { got, db, sendMsg, createNotice, hasPerm } from './util.js'; import { createRequire } from 'module'; const require = createRequire(import.meta.url); const {defaultSettings, limit: {rcgcdw: rcgcdwLimit}} = require('../util/default.json'); const allLangs = Lang.allLangs(true).names; const display_types = [ 'compact', 'embed', 'image', 'diff' ]; const avatar_content_types = ['image/jpeg', 'image/png', 'image/webp', 'image/gif']; const fieldset = { channel: '' + '', name: '' + '', avatar: '' + '' + '' + '', wiki: '' + '' + '' + '' + '
', //+ '' //+ '
' //+ 'Wiki search' //+ '
', lang: '' + '' + '', display: 'Display mode:' + '
' + '' + '' + '
' + '' + '' + '
' + '' + '' + '
' + '' + '' + '
', feeds: '' + '' + '
' + '' + '' + '
', save: '', delete: '' }; /** * Create a settings form * @param {import('cheerio').CheerioAPI} $ - The response body * @param {String} header - The form header * @param {import('./i18n.js').default} dashboardLang - The user language * @param {Object} settings - The current settings * @param {Boolean} settings.patreon * @param {String} [settings.channel] * @param {String} [settings.name] * @param {String} [settings.avatar] * @param {String} settings.wiki * @param {String} settings.lang * @param {Number} settings.display * @param {Number} [settings.rcid] * @param {String} [settings.postid] * @param {import('./util.js').Channel[]} guildChannels - The guild channels * @param {String[]} allWikis - The guild wikis */ function createForm($, header, dashboardLang, settings, guildChannels, allWikis) { var readonly = ( process.env.READONLY ? true : false ); var curChannel = guildChannels.find( guildChannel => settings.channel === guildChannel.id ); var fields = []; let channel = $('
').append(fieldset.channel); channel.find('label').text(dashboardLang.get('rcscript.form.channel')); let curCat = null; if ( !settings.channel || ( curChannel && hasPerm(curChannel.botPermissions, 'MANAGE_WEBHOOKS') && hasPerm(curChannel.userPermissions, 'VIEW_CHANNEL', 'MANAGE_WEBHOOKS') ) ) { channel.find('#wb-settings-channel').append( ...guildChannels.filter( guildChannel => { return ( ( hasPerm(guildChannel.userPermissions, 'VIEW_CHANNEL', 'MANAGE_WEBHOOKS') && hasPerm(guildChannel.botPermissions, 'MANAGE_WEBHOOKS') ) || guildChannel.isCategory ); } ).map( guildChannel => { if ( guildChannel.isCategory ) { curCat = $('').attr('label', guildChannel.name); return curCat; } var optionChannel = $(`