удаление дубль поля Мульти ссылки , приведение в порядок поля Мульти ссылки

This commit is contained in:
2025-11-26 20:34:55 +05:00
parent a1712b32c9
commit 7d07d964c1
12 changed files with 29 additions and 408 deletions

View File

@@ -1,18 +0,0 @@
.multi_lists {
position: relative;
}
.multi_lists > .ui-state-highlight {
display: inline-block;
margin: 3px;
width: 450px;
height: 26px;
background-color: rgba(255,255,255,0.5); !important;
border: solid 1px #eaeaea;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
position: relative;
text-align: center;
padding: 0 !important;
}

View File

@@ -1,216 +0,0 @@
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
*
* @license GPL v.2
*/
// Мульти лист
function get_field_link_multi($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl=null)
{
global $AVE_Template;
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
$AVE_Template->config_load($lang_file, 'lang');
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars());
$AVE_Template->config_load($lang_file, 'admin');
$res = array();
switch ($action)
{
case 'edit':
$items = array();
$items = unserialize($field_value);
if ($items != false)
{
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
}
$items = $list;
}
else
{
$items = explode(',', $default);
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
}
$items = $list;
}
$AVE_Template->assign('doc_id', $_REQUEST['Id']);
$AVE_Template->assign('field_dir', $fld_name);
$AVE_Template->assign('items', $items);
$AVE_Template->assign('field_id', $field_id);
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
return $AVE_Template->fetch($tpl_file);
break;
case 'doc':
$items = unserialize($field_value);
if ($items != false)
{
foreach($items as $list_item)
{
$list_item = clean_php($list_item);
$field_param = explode('|', $list_item);
if ($list_item)
{
if ($tpl_empty)
{
$list_item = $field_param;
}
else
{
$list_item = preg_replace_callback(
'/\[tag:parametr:(\d+)\]/i',
function($data) use($field_param)
{
return $field_param[(int)$data[1]];
},
$tpl
);
}
}
$res[] = $list_item;
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl);
if ($tpl_empty && $tpl_file)
{
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $res);
$AVE_Template->assign('field_count', count($res));
$AVE_Template->assign('default', $default);
return $AVE_Template->fetch($tpl_file);
}
return (! empty($res)) ? implode(PHP_EOL, $res) : $tpl;
break;
case 'req':
$items = unserialize($field_value);
if ($items != false)
{
foreach($items as $list_item)
{
$list_item = clean_php($list_item);
$field_param = explode('|', $list_item);
if ($list_item)
{
if ($tpl_empty)
{
$list_item = $field_param;
}
else
{
$list_item = preg_replace_callback(
'/\[tag:parametr:(\d+)\]/i',
function($data) use($field_param)
{
return $field_param[(int)$data[1]];
},
$tpl
);
}
}
$res[] = $list_item;
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl);
if ($tpl_empty && $tpl_file)
{
$AVE_Template->assign('field_id', $field_id);
$AVE_Template->assign('field_value', $res);
$AVE_Template->assign('field_count', count($res));
$AVE_Template->assign('default', $default);
return $AVE_Template->fetch($tpl_file);
}
return (!empty($res)) ? implode(PHP_EOL, $res) : $tpl;
break;
case 'save':
foreach ($field_value as $v)
{
if (! empty($v['param']))
{
$field_value_new[] = $v['param'] . ($v['value'] ? '|' . $v['value'] : '');
}
}
if (isset($field_value_new))
{
return @serialize($field_value_new);
}
else
{
return $field_value_new = '';
}
break;
case 'api':
if (empty($field_value))
return $field_value;
$items = unserialize($field_value);
if ($items != false)
{
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
}
$items = $list;
}
return $items;
break;
case 'name':
return $AVE_Template->get_config_vars('name');
break;
}
return ($res ? $res : $field_value);
}
?>

View File

@@ -1,74 +0,0 @@
var MultiLinks = {
init: false,
init: function() {
if (this.initialized) return;
this.initialized = true;
this.lists();
},
lists: function() {
this.lists_sortable();
this.lists_del_item();
this.lists_add();
},
lists_update: function() {
this.lists_maxid();
this.lists_del_item();
AveAdmin.tooltip();
},
lists_maxid: function(id) {
var maxid = 1;
$('#multi_links_' + id).children('.multi_link').each(function() {
maxid = Math.max(maxid, parseInt($(this).attr("data-id")) + 1);
});
return maxid;
},
lists_del_item: function() {
$('.multi_link .DelButton').on('click', function(event) {
event.preventDefault();
var id = $(this).attr('data-id');
jConfirm(
links_del_conf,
links_del_head,
function(b) {
if (b) {
$('#link_' + id).remove();
}
}
);
});
},
lists_add: function() {
$('.multi_links .AddButton').on('click', function(event) {
event.preventDefault();
c_id = $(this).parent().parent('.multi_links').attr("data-id");
iid = MultiLinks.lists_maxid(c_id);
$('#multi_links_' + c_id + ':last').append(
'<div class="multi_link fix mb10" id="link_' + c_id + '_' + iid + '" data-id="' + iid + '">' +
'<input class="mousetrap" type="text" value="" name="feld[' + c_id + '][' + iid + '][param]" placeholder="' + links_name + '" style="width: 200px;"/>&nbsp;&nbsp;<input type="text" class="mousetrap" value="" name="feld[' + c_id + '][' + iid + '][value]" id="links_' + c_id + '_' + iid + '" placeholder="' + links_url + '" style="width: 300px;" />&nbsp;&nbsp;<a class="btn greyishBtn" onclick="openFileWindow(\'links_' + c_id + '_' + iid + '\',\'links_' + c_id + '_' + iid + '\',\'links_' + c_id + '_' + iid + '\');">PDF</a>&nbsp;&nbsp;<a href="javascript:void(0);" data-id="' + c_id + '_' + iid + '" class="button redBtn topDir DelButton" title="' + links_del + '">&times;</a>' +
'<div class="handle" style="float: left; display: inline-block; margin: 4px 7px; cursor: move;"><span class="icon_sprite ico_move"></span></div>' +
'</div>'
);
MultiLinks.lists_update();
});
},
lists_sortable: function() {
$('.multi_links').sortable({
handle: ".handle",
placeholder: "ui-state-highlight grey_bg"
});
}
}
$(document).ready(function() {
MultiLinks.init();
});

View File

@@ -1,8 +0,0 @@
[admin]
name = "Мульти ссылки"
delete = "Удалить элемент"
param = "Наименование"
value = "Ссылка"
del_conf = "Вы уверены, что хотите удалить данный элемент?"
del_head = "Удаление элемента..."
add = "Добавить"

View File

@@ -1,33 +0,0 @@
{if ! empty($field_value)}
<table class="table table-params table-no-border">
<tr>
<td class="table-header">
Документация
</td>
</tr>
{foreach from=$field_value item=list}
<tr>
<td>
<a href="{$list[1]}" target="_blank"><i class="fa fa-file-pdf-o"></i>&nbsp;{$list[0]}</a>
</td>
</tr>
{/foreach}
</table>
{else}
<table class="table table-params table-no-border">
<tr>
<td class="table-header">
Документация
</td>
</tr>
<tr>
<td>
<div class="alert alert-warning">
Нет файлов для скачивания
</div>
</td>
</tr>
</table>
{/if}

View File

@@ -1,5 +0,0 @@
<ul>
{foreach from=$field_value item=list}
<li>{$list[0]}: {$list[1]}</li>
{/foreach}
</ul>

View File

@@ -1,5 +0,0 @@
<ul>
{foreach from=$field_value item=list}
<li>{$list[0]}: {$list[1]}</li>
{/foreach}
</ul>

View File

@@ -1,29 +0,0 @@
{if $multi_list != 'load'}
{assign var=multi_list value='' scope="global"}
{if $smarty.request.outside}
<script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script>
{else}
<script src="{$ABS_PATH}fields/{$field_dir}/js/field.js" type="text/javascript"></script>
{/if}
<link href="{$ABS_PATH}fields/{$field_dir}/css/field.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
var links_name = '{#param#}';
var links_url = '{#value#}';
var links_add = '{#add#}';
var links_del = '{#delete#}';
var links_del_conf = '{#del_conf#}';
var links_del_head = '{#del_head#}';
</script>
{assign var=multi_list value="load" scope="global"}
{/if}
<div class="multi_links mt10" id="multi_links_{$field_id}" data-id="{$field_id}">
{foreach from=$items key=key item=item}
<div class="multi_link fix mb10" id="link_{$field_id}_{$key}" data-id="{$key}">
<input type="text" class="mousetrap" value="{$item.param|escape}" name="feld[{$field_id}][{$key}][param]" placeholder="{#param#}" style="width: 200px;"/>&nbsp;&nbsp;<input type="text" class="mousetrap" value="{$item.value|escape}" name="feld[{$field_id}][{$key}][value]" id="links_{$field_id}_{$key}" placeholder="{#value#}" style="width: 300px;" />&nbsp;&nbsp;<a class="btn greyishBtn" onclick="openFileWindow('links_{$field_id}_{$key}','links_{$field_id}_{$key}','links_{$field_id}_{$key}');">PDF</a>&nbsp;&nbsp;{if $key == 0}<a href="javascript:void(0);" class="button basicBtn topDir AddButton" title="{#add#}">+</a>{else}<a href="javascript:void(0);" data-id="{$field_id}_{$key}" class="button redBtn topDir DelButton" title="{#delete#}">&times;</a>{/if}
<div class="handle" style="float: left; display: inline-block; margin: 4px 7px; cursor: move;"><span class="icon_sprite ico_move"></span></div>
</div>
{/foreach}
</div>

View File

@@ -12,12 +12,14 @@
*/
// Мульти лист
function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null){
function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl_empty=0, &$maxlength=null, $document_fields=array(), $rubric_id=0, $default=null, $_tpl=null){
global $AVE_Template;
global $AVE_DB;
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_dir = dirname(__FILE__) . '/';
$tpl_dir = $fld_dir . 'tpl/';
$fld_name = basename($fld_dir);
$lang_file = $fld_dir . 'lang/' . (defined('ACP') ? $_SESSION['admin_language'] : $_SESSION['user_language']) . '.txt';
@@ -34,7 +36,7 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
$items = array();
$items = unserialize($field_value);
$items = (trim($field_value) !== '') ? @unserialize($field_value) : [];
if ($items != false)
{
@@ -42,8 +44,8 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
$list[$k]['param'] = (isset($list_item[0])) ? $list_item[0] : '';
$list[$k]['value'] = (isset($list_item[1])) ? $list_item[1] : '';
}
$items = $list;
@@ -55,8 +57,8 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
foreach($items as $k => $v){
$list_item = explode('|', $v);
$list[$k]['param'] = (isset($list_item[0])) ? htmlspecialchars($list_item[0], ENT_QUOTES) : '';
$list[$k]['value'] = (isset($list_item[1])) ? htmlspecialchars($list_item[1], ENT_QUOTES) : '';
$list[$k]['param'] = (isset($list_item[0])) ? $list_item[0] : '';
$list[$k]['value'] = (isset($list_item[1])) ? $list_item[1] : '';
}
$items = $list;
}
@@ -66,13 +68,14 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
$AVE_Template->assign('items', $items);
$AVE_Template->assign('field_id', $field_id);
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin');
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl);
return $AVE_Template->fetch($tpl_file);
break;
case 'doc':
$items = unserialize($field_value);
$items = (trim($field_value) !== '') ? @unserialize($field_value) : [];
if ($items != false)
{
@@ -103,7 +106,7 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc');
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl);
if ($tpl_empty && $tpl_file)
{
@@ -119,7 +122,8 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
break;
case 'req':
$items = unserialize($field_value);
$items = (trim($field_value) !== '') ? @unserialize($field_value) : [];
if ($items != false)
{
@@ -150,7 +154,7 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
}
}
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req');
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl);
if ($tpl_empty && $tpl_file)
{
@@ -170,13 +174,18 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
{
if (! empty($v['param']))
{
$field_value_new[] = $v['param'] . ($v['value'] ? '|' . $v['value'] : '');
$param_safe = stripslashes(trim($v['param']));
$value_safe = stripslashes(trim($v['value']));
$field_value_new[] = $param_safe . ($value_safe ? '|' . $value_safe : '');
}
}
if (isset($field_value_new))
{
return @serialize($field_value_new);
$serialized_value = @serialize($field_value_new);
return addslashes($serialized_value);
}
else
{
@@ -188,7 +197,7 @@ function get_field_multi_links($field_value, $action, $field_id=0, $tpl='', $tpl
if (empty($field_value))
return $field_value;
$items = unserialize($field_value);
$items = (trim($field_value) !== '') ? @unserialize($field_value) : [];
if ($items != false)
{

View File

@@ -1,5 +1,5 @@
<ul>
{foreach from=$field_value item=list}
<li>{$list[0]}: {$list[1]}</li>
<li>{$list[0]}{if isset($list[1])}: {$list[1]}{/if}</li>
{/foreach}
</ul>

View File

@@ -1,6 +1,6 @@
{if $multi_list != 'load'}
{if $multi_link != 'load'}
{assign var=multi_link value='' scope="global"}
{if $smarty.request.outside}
{if isset($smarty.request.outside)}
<script src="{$ABS_PATH}fields/{$field_dir}/js/outside.js" type="text/javascript"></script>
{else}
<script src="{$ABS_PATH}fields/{$field_dir}/js/field.js" type="text/javascript"></script>

View File

@@ -1,5 +1,5 @@
<ul>
{foreach from=$field_value item=list}
<li>{$list[0]}: {$list[1]}</li>
<li>{$list[0]}{if isset($list[1])}: {$list[1]}{/if}</li>
{/foreach}
</ul>