Ошибка "URL is not valid" в модуле link в Drupal
Если в Drupal 7 с использованием модуля link при сохранении материала с полем типа "Ссылка" выпадает ошибка с сообщением "URL is not valid ", то нужно применить патчи вот с этой страницы https://www.drupal.org/project/link/issues/2651742 либо в настройках поля в типе материала нужно убрать галочку: "Validate URL". У меня лично вот этот патч https://www.drupal.org/files/issues/link-always-not-a-valid-url-2651742-48.patch сработал:
diff --git a/link.module b/link.module
index 1e9d088..ed89a8b 100644
--- a/link.module
+++ b/link.module
@@ -420,7 +420,7 @@ function _link_process(&$item, $delta, $field, $entity, $instance) {
function _link_validate(&$item, $delta, $field, $entity, $instance, $langcode, &$optional_field_found, &$errors) {
if ($item['url'] && !(isset($instance['default_value'][$delta]['url']) && $item['url'] === $instance['default_value'][$delta]['url'] && !$instance['required'])) {
// Validate the link.
- if (!link_validate_url(trim($item['url']), $langcode)) {
+ if (!link_validate_url(trim($item['url']), $langcode) && !link_validate_url(trim($item['url']), $entity->language)) {
$errors[$field['field_name']][$langcode][$delta][] = array(
'error' => 'link_required',
'message' => t('The value %value provided for %field is not a valid URL.', array(
@@ -1231,12 +1231,13 @@ function link_validate_url($text, $langcode = NULL) {
if ($type && ($type == LINK_INTERNAL || $type == LINK_EXTERNAL)) {
$flag = valid_url($text, TRUE);
if (!$flag) {
- $normal_path = drupal_get_normal_path($text, $langcode);
- $parsed_link = parse_url($normal_path, PHP_URL_PATH);
- if ($normal_path != $parsed_link) {
- $normal_path = $parsed_link;
+ foreach (language_list('language') as $langcode => $language_object) {
+ $parsed_link = parse_url($text, PHP_URL_PATH);
+ $normal_path = drupal_get_normal_path($parsed_link, $langcode);
+ if ($flag = drupal_valid_path($normal_path)) {
+ break;
+ }
}
- $flag = drupal_valid_path($normal_path);
}
if (!$flag) {
$flag = file_exists($normal_path);