all contrib module security updates done

This commit is contained in:
2020-09-24 22:47:32 +02:00
parent 7d87153100
commit 0fbb9c4610
1612 changed files with 116663 additions and 32269 deletions
@@ -0,0 +1,36 @@
span.autocomplete-deluxe-value-delete {
float: left;
}
div.autocomplete-deluxe-multiple {
padding: 4px 5px;
}
input.autocomplete-deluxe-form.autocomplete-deluxe-multiple {
margin-left: 0;
margin-right: 5px;
float: right;
}
div.autocomplete-deluxe-throbber {
float: left;
}
.autocomplete-deluxe-closed {
background-position: 0 6px;
}
.autocomplete-deluxe-open {
background-position: 0 -14px;
}
.autocomplete-deluxe-item {
float: right;
margin: 3px 5px 3px 0;
padding: 3px 5px 3px 20px;
}
.autocomplete-deluxe-item-delete {
position: absolute;
right: auto;
left: 3px;
}
@@ -1,5 +1,4 @@
<?php
// $Id$
/**
* @file
@@ -12,24 +11,26 @@
* When you want to use the Autocomplete Deluxe element, you have to choose
* between two types sources for the suggestion data: Ajax Callbacks or Lists.
* You can set the source type by using the appropriate options:
* - #autocomplete_deluxe_path expects a string with an url, that points to the ajax
* callback. The response should be encoded as json(like for the core
* - #autocomplete_deluxe_path expects a string with an url, that points to the
* ajax callback. The response should be encoded as json (like for the core
* autocomplete).
* - #autocomplete_options needs an array in the form of an array(similar to #options in core
* for selects or checkboxes): array('a', 'b', 'c') or array(1 => 'a', 2 =>
* 'b', 3 => 'c').
* - #autocomplete_options needs an array in the form of an array (similar to
* #options in core for selects or checkboxes): array('a', 'b', 'c') or
* array(1 => 'a', 2 => 'b', 3 => 'c').
*
* Besides this two, there are three other options, wich autocomplete deluxe
* Besides these two, there are four other options which autocomplete deluxe
* accepts:
* - #multiple Indicates whether the user may select more than one item. Expects
* TRUE or FALSE, by default it is set to FALSE.
* - #autocomplete_multiple_delimiter If #multiple is TRUE, then you can use
* this option to set a seperator for multiple values. By default a string
* with the follwing content will be used: ', '.
* - #autocomplete_min_length Indicates how many characters must be entered
* until, the suggesion list can be opened. Especially helpfull, when your
* - #delimiter If #multiple is TRUE, then you can use this option to set a
* seperator for multiple values. By default a string with the following
* content will be used: ', '.
* - #min_length Indicates how many characters must be entered
* until, the suggesion list can be opened. Especially helpful, when your
* ajax callback returns only valid suggestion for a minimum characters.
* The default is 0.
* - #not_found_message A message text which will be displayed, if the entered
* term was not found.
*/
function somefunction() {
switch ($type) {
@@ -38,16 +39,18 @@ function somefunction() {
'#type' => 'autocomplete_deluxe',
'#autocomplete_options' => $options,
'#multiple' => FALSE,
'#autocomplete_min_length' => 0,
'#min_length' => 0,
);
break;
case 'ajax':
$element = array(
'#type' => 'autocomplete_deluxe',
'#autocomplete_deluxe_path' => url('some_uri', array('absolute' => TRUE)),
'#multiple' => TRUE,
'#autocomplete_min_length' => 1,
'#autocomplete_multiple_delimiter' => '|',
'#min_length' => 1,
'#delimiter' => '|',
'#not_found_message' => "The term '@term' will be added.",
);
break;
}
@@ -12,7 +12,7 @@ a.autocomplete-deluxe-single:hover {
text-decoration: none;
}
.ui-state-hover {
.ui-autocomplete .ui-state-hover {
background-color: #3875d7;
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
@@ -114,7 +114,7 @@ div.autocomplete-deluxe-multiple {
background: no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: no-repeat -38px -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: no-repeat -38px -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%);
padding: 4px 5px 4px 20px;
padding: 4px 5px;
border: 1px solid #AAAAAA;
cursor: text;
height: auto !important;
@@ -5,9 +5,9 @@ core = 7.x
files[] = autocomplete_deluxe.module
dependencies[] = taxonomy
; Information added by drupal.org packaging script on 2013-01-22
version = "7.x-2.0-beta2+22-dev"
; Information added by Drupal.org packaging script on 2017-07-25
version = "7.x-2.3"
core = "7.x"
project = "autocomplete_deluxe"
datestamp = "1358814920"
datestamp = "1501005546"
@@ -82,7 +82,26 @@
return this;
};
/**
* Unescapes the given string.
*/
Drupal.autocomplete_deluxe.unescape = function (input) {
// Unescaping is done via a textarea, since the text inside of it is never
// executed. This method also allows us to support older browsers like
// IE 9 and below.
var textArea = document.createElement('textarea');
textArea.innerHTML = input;
var decoded = textArea.value;
if ('remove' in Element.prototype) {
textArea.remove();
}
return decoded;
};
/**
* If there is no result this label will be shown.
* @type {{label: string, value: string}}
*/
Drupal.autocomplete_deluxe.empty = {label: '- ' + Drupal.t('None') + ' -', value: "" };
/**
@@ -105,6 +124,9 @@
Drupal.autocomplete_deluxe.Widget = function() {
};
/**
* Url for the callback.
*/
Drupal.autocomplete_deluxe.Widget.prototype.uri = null;
/**
@@ -119,7 +141,7 @@
};
Drupal.autocomplete_deluxe.Widget.prototype.init = function(settings) {
if ($.browser.msie && $.browser.version === "6.0") {
if(navigator.appVersion.indexOf("MSIE 6.") != -1) {
return;
}
@@ -130,7 +152,17 @@
this.multiple = settings.multiple;
this.required = settings.required;
this.limit = settings.limit;
this.synonyms = settings.use_synonyms === undefined ? false : settings.use_synonyms;
this.synonyms = typeof settings.use_synonyms == 'undefined' ? false : settings.use_synonyms;
this.not_found_message = typeof settings.use_synonyms == 'undefined' ? "The term '@term' will be added." : settings.not_found_message;
this.wrapper = '""';
if (typeof settings.delimiter == 'undefined') {
this.delimiter = true;
} else {
this.delimiter = settings.delimiter.charCodeAt(0);
}
this.items = {};
var self = this;
@@ -153,7 +185,7 @@
}
if ($.isEmptyObject(result)) {
result.push({
label: Drupal.t("The term '@term' will be added.", {'@term' : term}),
label: Drupal.t(self.not_found_message, {'@term' : term}),
value: term,
newTerm: true
});
@@ -161,7 +193,7 @@
return result;
};
var cache = {}
var cache = {};
var lastXhr = null;
this.source = function(request, response) {
@@ -193,6 +225,9 @@
});
var jqObject = this.jqObject;
var autocompleteDataKey = typeof(this.jqObject.data('autocomplete')) === 'object' ? 'item.autocomplete' : 'ui-autocomplete';
var throbber = $('<div class="autocomplete-deluxe-throbber autocomplete-deluxe-closed">&nbsp;</div>').insertAfter(jqObject);
this.jqObject.bind("autocompletesearch", function(event, ui) {
@@ -214,8 +249,9 @@
var re = new RegExp('()*""' + escapedValue + '""|' + escapedValue + '()*', 'gi');
var t = item.label.replace(re,"<span class='autocomplete-deluxe-highlight-char'>$&</span>");
}
return $( "<li></li>" )
.data( "item.autocomplete", item )
.data(autocompleteDataKey, item)
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
@@ -276,14 +312,17 @@
}
this.value = item.value;
this.element = $('<span class="autocomplete-deluxe-item">' + item.label + '</span>');
this.element = $('<span class="autocomplete-deluxe-item"></span>');
this.element.text(item.label);
this.widget = widget;
this.item = item;
var self = this;
var close = $('<a class="autocomplete-deluxe-item-delete" href="javascript:void(0)"></a>').appendTo(this.element);
// Use single quotes because of the double quote encoded stuff.
var input = $('<input type="hidden" value=\'' + this.value + '\'/>').appendTo(this.element);
var input = $('<input type="hidden"/>')
input.val(this.value);
input.appendTo(this.element);
close.mousedown(function() {
self.remove(item);
@@ -294,25 +333,28 @@
this.element.remove();
var values = this.widget.valueForm.val();
var escapedValue = Drupal.autocomplete_deluxe.escapeRegex( this.item.value );
var regex = new RegExp('()*""' + escapedValue + '""|' + escapedValue + '()*', 'gi');
var regex = new RegExp('()*""' + escapedValue + '""()*', 'gi');
this.widget.valueForm.val(values.replace(regex, ''));
delete this.widget.items[this.value];
};
Drupal.autocomplete_deluxe.MultipleWidget.prototype.setup = function() {
var jqObject = this.jqObject;
var parent = jqObject.parent();
var value_container = jqObject.parent().parent().children('.autocomplete-deluxe-value-container');
var value_input = value_container.children().children();
var parent = jqObject.parents('.autocomplete-deluxe-container');
var value_container = parent.next();
var value_input = value_container.find('input');
var items = this.items;
var self = this;
this.valueForm = value_input;
// Override the resize function, so that the suggestion list doesn't resizes
// all the time.
jqObject.data("autocomplete")._resizeMenu = function() {};
var autocompleteDataKey = typeof(this.jqObject.data('autocomplete')) === 'object' ? 'autocomplete' : 'ui-autocomplete';
jqObject.data(autocompleteDataKey)._resizeMenu = function() {};
jqObject.show();
value_container.hide();
// Add the default values to the box.
@@ -346,7 +388,7 @@
var item = new Drupal.autocomplete_deluxe.MultipleWidget.Item(self, ui_item);
item.element.insertBefore(jqObject);
items[ui_item.value] = item;
var new_value = ' ""' + ui_item.value + '""';
var new_value = ' ' + self.wrapper + ui_item.value + self.wrapper;
var values = value_input.val();
value_input.val(values + new_value);
jqObject.val('');
@@ -358,7 +400,13 @@
});
jqObject.bind("autocompleteselect", function(event, ui) {
self.addValue(ui.item);
// JQuery ui autocomplete needs the terms escaped, otherwise it would be
// open to XSS issues. Drupal.autocomplete.Item also escapes on rendering
// the DOM elements. Thus we have to unescape the label here before adding
// the new item.
var item = ui.item;
item.label = Drupal.autocomplete_deluxe.unescape(item.label);
self.addValue(item);
jqObject.width(25);
// Return false to prevent setting the last term as value for the jqObject.
return false;
@@ -375,13 +423,13 @@
var clear = false;
jqObject.keydown(function (event) {
jqObject.keypress(function (event) {
var value = jqObject.val();
// If a comma was entered and there is none or more then one comma,or the
// enter key was entered, then enter the new term.
if ((event.which == 188 && (value.split('"').length - 1) != 1) || (event.which == 13 && jqObject.val() != "")) {
if ((event.which == self.delimiter && (value.split('"').length - 1) != 1) || (event.which == 13 && jqObject.val() != "")) {
value = value.substr(0, value.length);
if (self.items[value] === undefined && value != '') {
if (typeof self.items[value] == 'undefined' && value != '') {
var ui_item = {
label: value,
value: value
@@ -27,7 +27,7 @@ function autocomplete_deluxe_field_widget_info() {
/**
* Custom taxonomy callback, which also accepts an empty string search.
*/
function taxonomy_autocomplete_deluxe($field_name, $tags_typed = '', $limit = 10) {
function autocomplete_deluxe_taxonomy_callback($field_name, $tags_typed = '', $limit = 10) {
$field = field_info_field($field_name);
$use_synonyms = !empty($_GET['synonyms']);
@@ -156,6 +156,19 @@ function autocomplete_deluxe_field_widget_settings_form($field, $instance) {
'#default_value' => isset($settings['min_length']) ? $settings['min_length'] : 0,
'#element_validate' => array('_element_validate_integer'),
);
$form['delimiter'] = array(
'#type' => 'textfield',
'#title' => t('Delimiter.'),
'#description' => t('A character which should be used beside the enter key, to seperate terms.'),
'#default_value' => isset($settings['delimiter']) ? $settings['delimiter'] : '',
'#size' => 1,
);
$form['not_found_message'] = array(
'#type' => 'textfield',
'#title' => t('Term not found message.'),
'#description' => t('A message text which will be displayed, if the entered term was not found.'),
'#default_value' => isset($settings['not_found_message']) ? $settings['not_found_message'] : "The term '@term' will be added.",
);
if (module_exists('synonyms')) {
$form['use_synonyms'] = array(
@@ -211,6 +224,8 @@ function autocomplete_deluxe_field_widget_form(&$form, &$form_state, $field, $in
'#limit' => isset($instance['widget']['settings']['limit']) ? $instance['widget']['settings']['limit'] : 10,
'#min_length' => isset($instance['widget']['settings']['min_length']) ? $instance['widget']['settings']['min_length'] : 0,
'#use_synonyms' =>isset($instance['widget']['settings']['use_synonyms']) ? $instance['widget']['settings']['use_synonyms'] : 0,
'#delimiter' =>isset($instance['widget']['settings']['delimiter']) ? $instance['widget']['settings']['delimiter'] : '',
'#not_found_message' =>isset($instance['widget']['settings']['not_found_message']) ? $instance['widget']['settings']['not_found_message'] : "The term '@term' will be added.",
);
$multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED ? TRUE : FALSE;
@@ -262,12 +277,13 @@ function autocomplete_deluxe_element_process($element) {
$js_settings['autocomplete_deluxe'][$html_id] = array(
'input_id' => $html_id,
'min_length' => isset($element['#autocomplete_min_length']) ? $element['#autocomplete_min_length'] : 0,
'multiple' => $element['#multiple'],
'required' => $element['#required'],
'limit' => isset($element['#limit']) ? $element['#limit'] : 10,
'min_length' => isset($element['#min_length']) ? $element['#min_length'] : 0,
'use_synonyms' => isset($element['#use_synonyms']) ? $element['#use_synonyms'] : 0,
'delimiter' => isset($element['#delimiter']) ? $element['#delimiter'] : '',
'not_found_message' => isset($element['#not_found_message']) ? $element['#not_found_message'] : "The term '@term' will be added.",
);
if (isset($element['#autocomplete_deluxe_path'])) {
@@ -307,6 +323,7 @@ function autocomplete_deluxe_element_process($element) {
return $element;
}
$element['#attached']['js'][] = array('data' => $js_settings, 'type' => 'setting');
$element['#tree'] = TRUE;
return $element;
}
@@ -343,9 +360,11 @@ function autocomplete_deluxe_after_build($element, &$form_state) {
// Replace all double double quotes and space with a comma. This will allows
// us to keep entries in double quotes.
$element['#value'] = str_replace('"" ""', ',', $element['#value']);
$element['#value'] = str_replace('"" ""', ',', $element['#value']);
// Remove the double quotes at the beginning and the end from the first and
// the last term.
$element['#value'] = substr($element['#value'], 2, strlen($element['#value']) - 4);
unset($element['value_field']['#maxlength']);
}
@@ -373,7 +392,7 @@ function autocomplete_deluxe_element_info() {
function autocomplete_deluxe_menu() {
$items['autocomplete_deluxe/taxonomy'] = array(
'title' => 'Autocomplete deluxe taxonomy',
'page callback' => 'taxonomy_autocomplete_deluxe',
'page callback' => 'autocomplete_deluxe_taxonomy_callback',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);