|
@@ -16,14 +16,6 @@
|
|
|
"locales",
|
|
|
"moment_with_locales",
|
|
|
"strophe",
|
|
|
- "tpl!field",
|
|
|
- "tpl!select_option",
|
|
|
- "tpl!form_select",
|
|
|
- "tpl!form_textarea",
|
|
|
- "tpl!form_checkbox",
|
|
|
- "tpl!form_username",
|
|
|
- "tpl!form_input",
|
|
|
- "tpl!form_captcha"
|
|
|
], factory);
|
|
|
}(this, function (
|
|
|
sizzle,
|
|
@@ -32,15 +24,7 @@
|
|
|
_,
|
|
|
locales,
|
|
|
moment,
|
|
|
- Strophe,
|
|
|
- tpl_field,
|
|
|
- tpl_select_option,
|
|
|
- tpl_form_select,
|
|
|
- tpl_form_textarea,
|
|
|
- tpl_form_checkbox,
|
|
|
- tpl_form_username,
|
|
|
- tpl_form_input,
|
|
|
- tpl_form_captcha
|
|
|
+ Strophe
|
|
|
) {
|
|
|
"use strict";
|
|
|
locales = locales || {};
|
|
@@ -49,17 +33,6 @@
|
|
|
|
|
|
const URL_REGEX = /\b(https?:\/\/|www\.|https?:\/\/www\.)[^\s<>]{2,200}\b/g;
|
|
|
|
|
|
- var XFORM_TYPE_MAP = {
|
|
|
- 'text-private': 'password',
|
|
|
- 'text-single': 'text',
|
|
|
- 'fixed': 'label',
|
|
|
- 'boolean': 'checkbox',
|
|
|
- 'hidden': 'hidden',
|
|
|
- 'jid-multi': 'textarea',
|
|
|
- 'list-single': 'dropdown',
|
|
|
- 'list-multi': 'dropdown'
|
|
|
- };
|
|
|
-
|
|
|
var afterAnimationEnd = function (el, callback) {
|
|
|
el.classList.remove('visible');
|
|
|
if (_.isFunction(callback)) {
|
|
@@ -447,28 +420,6 @@
|
|
|
return _.filter(el.children, _.partial(u.matchesSelector, _, selector));
|
|
|
};
|
|
|
|
|
|
- u.webForm2xForm = function (field) {
|
|
|
- /* Takes an HTML DOM and turns it into an XForm field.
|
|
|
- *
|
|
|
- * Parameters:
|
|
|
- * (DOMElement) field - the field to convert
|
|
|
- */
|
|
|
- let value;
|
|
|
- if (field.getAttribute('type') === 'checkbox') {
|
|
|
- value = field.checked && 1 || 0;
|
|
|
- } else if (field.tagName == "textarea") {
|
|
|
- value = _.filter(field.value.split('\n'), _.trim);
|
|
|
- } else {
|
|
|
- value = field.value;
|
|
|
- }
|
|
|
- return u.stringToDOM(
|
|
|
- tpl_field({
|
|
|
- name: field.getAttribute('name'),
|
|
|
- value: value
|
|
|
- })
|
|
|
- )[0];
|
|
|
- };
|
|
|
-
|
|
|
u.contains = function (attr, query) {
|
|
|
return function (item) {
|
|
|
if (typeof attr === 'object') {
|
|
@@ -485,93 +436,6 @@
|
|
|
};
|
|
|
};
|
|
|
|
|
|
- u.xForm2webForm = function (field, stanza) {
|
|
|
- /* Takes a field in XMPP XForm (XEP-004: Data Forms) format
|
|
|
- * and turns it into an HTML field.
|
|
|
- *
|
|
|
- * Returns either text or a DOM element (which is not ideal, but fine
|
|
|
- * for now).
|
|
|
- *
|
|
|
- * Parameters:
|
|
|
- * (XMLElement) field - the field to convert
|
|
|
- */
|
|
|
- if (field.getAttribute('type') === 'list-single' ||
|
|
|
- field.getAttribute('type') === 'list-multi') {
|
|
|
-
|
|
|
- const values = _.map(
|
|
|
- u.queryChildren(field, 'value'),
|
|
|
- _.partial(_.get, _, 'textContent')
|
|
|
- );
|
|
|
- const options = _.map(
|
|
|
- u.queryChildren(field, 'option'),
|
|
|
- function (option) {
|
|
|
- const value = _.get(option.querySelector('value'), 'textContent');
|
|
|
- return tpl_select_option({
|
|
|
- 'value': value,
|
|
|
- 'label': option.getAttribute('label'),
|
|
|
- 'selected': _.startsWith(values, value),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- }
|
|
|
- );
|
|
|
- return tpl_form_select({
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'label': field.getAttribute('label'),
|
|
|
- 'options': options.join(''),
|
|
|
- 'multiple': (field.getAttribute('type') === 'list-multi'),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- } else if (field.getAttribute('type') === 'fixed') {
|
|
|
- const text = _.get(field.querySelector('value'), 'textContent');
|
|
|
- const el = u.stringToDOM('<p class="form-help">');
|
|
|
- el.textContent = text;
|
|
|
- return el;
|
|
|
- } else if (field.getAttribute('type') === 'jid-multi') {
|
|
|
- return tpl_form_textarea({
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'label': field.getAttribute('label') || '',
|
|
|
- 'value': _.get(field.querySelector('value'), 'textContent'),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- } else if (field.getAttribute('type') === 'boolean') {
|
|
|
- return tpl_form_checkbox({
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'type': XFORM_TYPE_MAP[field.getAttribute('type')],
|
|
|
- 'label': field.getAttribute('label') || '',
|
|
|
- 'checked': _.get(field.querySelector('value'), 'textContent') === "1" && 'checked="1"' || '',
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- } else if (field.getAttribute('type') && field.getAttribute('var') === 'username') {
|
|
|
- return tpl_form_username({
|
|
|
- 'domain': ' @'+this.domain,
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'type': XFORM_TYPE_MAP[field.getAttribute('type')],
|
|
|
- 'label': field.getAttribute('label') || '',
|
|
|
- 'value': _.get(field.querySelector('value'), 'textContent'),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- } else if (field.getAttribute('type')) {
|
|
|
- return tpl_form_input({
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'type': XFORM_TYPE_MAP[field.getAttribute('type')],
|
|
|
- 'label': field.getAttribute('label') || '',
|
|
|
- 'value': _.get(field.querySelector('value'), 'textContent'),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- } else {
|
|
|
- if (field.getAttribute('var') === 'ocr') { // Captcha
|
|
|
- const uri = field.querySelector('uri');
|
|
|
- const el = sizzle('data[cid="'+uri.textContent.replace(/^cid:/, '')+'"]', stanza)[0];
|
|
|
- return tpl_form_captcha({
|
|
|
- 'label': field.getAttribute('label'),
|
|
|
- 'name': field.getAttribute('var'),
|
|
|
- 'data': _.get(el, 'textContent'),
|
|
|
- 'type': uri.getAttribute('type'),
|
|
|
- 'required': _.isNil(field.querySelector('required'))
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
u.detectLocale = function (library_check) {
|
|
|
/* Determine which locale is supported by the user's system as well
|