all contrib module security updates done
This commit is contained in:
@@ -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"> </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,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user