/
multivybor-v-doppoljah-by-sander.xml
114 lines (112 loc) · 5.47 KB
/
multivybor-v-doppoljah-by-sander.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
<name>Мультивыбор в доп.полях by Sander</name>
<description>Дополняет тип поля "Список" добавляя возможность выбирать несколько значений из списка.</description>
<icon></icon>
<version>1.2</version>
<dleversion></dleversion>
<versioncompare>less</versioncompare>
<upgradeurl></upgradeurl>
<filedelete>0</filedelete>
<mysqlinstall><![CDATA[]]></mysqlinstall>
<mysqlupgrade><![CDATA[]]></mysqlupgrade>
<mysqlenable><![CDATA[]]></mysqlenable>
<mysqldisable><![CDATA[]]></mysqldisable>
<mysqldelete><![CDATA[]]></mysqldelete>
<file name="engine/inc/xfields.php">
<operation action="before">
<searchcode><![CDATA[foreach (explode("\r\n", htmlspecialchars($value[4], ENT_QUOTES, $config['charset'] )) as $index1 => $value1) {]]></searchcode>
<replacecode><![CDATA[ if ($value[1][0] === '_') {
$fieldvalue = html_entity_decode($fieldvalue, ENT_QUOTES, $config['charset']);
$fieldvalue = explode(',', $fieldvalue);
$fieldvalue = array_map('trim', $fieldvalue);
$select = "<select class=\"uniform\" name=\"xfield[$fieldname][]\" multiple>";
$multiselect = true;
$value[1] = ltrim($value[1], '_');
} else {
$multiselect = false;
}]]></replacecode>
</operation>
<operation action="after">
<searchcode><![CDATA[ if( count($value1) < 2) $value1[1] = $value1[0];]]></searchcode>
<replacecode><![CDATA[ if ($multiselect) {
$select .= "<option value=\"$index1\"" . (in_array($value1[0], $fieldvalue) ? " selected" : "") . ">{$value1[1]}</option>\r\n";
} else ]]></replacecode>
</operation>
<operation action="replace">
<searchcode><![CDATA[ $options = explode("|", $options[$_POST['xfield'][$value[0]]] );
$postedxfields[$value[0]] = $options[0];]]></searchcode>
<replacecode><![CDATA[if ($value[1][0] === '_') {
$postedxfields[$value[0]] = [];
if (!is_array($_POST['xfield'][$value[0]])) {
$_POST['xfield'][$value[0]] = explode(',', $_POST['xfield'][$value[0]]);
$_POST['xfield'][$value[0]] = array_map('trim', $_POST['xfield'][$value[0]]);
}
foreach ($_POST['xfield'][$value[0]] as $opk) {
if ($options[$opk]) {
$temp = explode('|', $options[$opk]);
$postedxfields[$value[0]][] = $temp[0];
}
}
$postedxfields[$value[0]] = join(', ', $postedxfields[$value[0]]);
} else {
$options = explode("|", $options[$_POST['xfield'][$value[0]]] );
$postedxfields[$value[0]] = $options[0];
}]]></replacecode>
</operation>
<operation action="after">
<searchcode><![CDATA[ $editedxfield[21] = clear_js($editedxfield[21]);]]></searchcode>
<replacecode><![CDATA[ if (isset($editedxfield['multiselect'])) {
$editedxfield[1] = '_' . $editedxfield[1];
unset($editedxfield['multiselect']);
}]]></replacecode>
</operation>
<operation action="after">
<searchcode><![CDATA[ <?php echo $lang['xfield_title']; ?>]]></searchcode>
<replacecode><![CDATA[<?php
$multiselect = $editedxfield[1][0] === '_';
$editedxfield[1] = ltrim($editedxfield[1], '_');
?>]]></replacecode>
</operation>
<operation action="before">
<searchcode><![CDATA[<div class="text-muted text-size-small"><?php echo $lang['xfield_xfsel']; ?></div>]]></searchcode>
<replacecode><![CDATA[<div class="checkbox"><label><input class="icheck" type="checkbox" name="editedxfield[multiselect]"<?= $multiselect ? 'checked' : '' ?> /> Использовать множественный выбор</label></div>]]></replacecode>
</operation>
</file>
<file name="engine/ajax/editnews.php">
<operation action="replace">
<searchcode><![CDATA[ $fieldvalue = str_replace('&', '&', $fieldvalue);
$xfbuffer .= "<div class=\"xfieldsrow\"><div class=\"xfieldscolleft\">{$value[1]}:</div><div class=\"xfieldscolright\"><select name=\"xfield[{$fieldname}]\" class=\"quick-edit-select\">";]]></searchcode>
<replacecode><![CDATA[ $fieldvalue = str_replace('&', '&', $fieldvalue);
$multiselect = $value[1][0] === '_';
if ($multiselect) {
$value[1] = ltrim($value[1], '_');
$fieldvalue = explode(',', $fieldvalue);
$fieldvalue = array_map('trim', $fieldvalue);
$xfbuffer .= <<<HTML
<div class="xfieldsrow"><div class="xfieldscolleft">{$value[1]}:</div>
<div class="xfieldscolright">
<script>
function xfmultiselect(item, id) {
var list = [];
$(item).find('option:selected').each(function(i,v) {
list.push(v.value)
})
$('#xfmultiselect_' + id).val(list.join(', '));
}
</script>
<input type="hidden" id="xfmultiselect_{$fieldname}" name="xfield[{$fieldname}]" value="" />
<select class="quick-edit-select" multiple onchange="xfmultiselect(this, '{$fieldname}')">
HTML;
} else {
$xfbuffer .= "<div class=\"xfieldsrow\"><div class=\"xfieldscolleft\">{$value[1]}:</div><div class=\"xfieldscolright\"><select name=\"xfield[{$fieldname}]\" class=\"quick-edit-select\">";
}]]></replacecode>
</operation>
<operation action="before">
<searchcode><![CDATA[ $xfbuffer .= "<option value=\"$index\"" . ($fieldvalue == $value[0] ? " selected" : "") . ">$value[1]</option>\r\n";]]></searchcode>
<replacecode><![CDATA[ if ($multiselect) {
$xfbuffer .= "<option value=\"$index\"" . (in_array($value[0], $fieldvalue) ? " selected" : "") . ">{$value[1]}</option>\r\n";
} else]]></replacecode>
</operation>
</file>
</dleplugin>