569 lines
19 KiB
Smarty
569 lines
19 KiB
Smarty
<div class="form_wrapper">
|
|
<form method="post">
|
|
<div class="buttons">
|
|
<a href="/admin/delete_user_group/{$user_group->get_ug_id()}" class="addbutton delete-big">Csoport törlése</a>
|
|
</div>
|
|
<input type="hidden" name="action" value="user_group_update">
|
|
<input type="hidden" name="ug_id" id="ug_id" value="{$user_group->get_ug_id()}">
|
|
<input type="hidden" name="ug_automatic" id="ug_automatic" value="{$user_group->get_ug_is_automatic()}">
|
|
|
|
<div>
|
|
<label class="desc" id="title1" for="ug_name">Név:</label>
|
|
<div><input type="text" name="ug_name" id="ug_name" value="{$user_group->get_ug_name()}" required></div>
|
|
</div>
|
|
|
|
<div>
|
|
<label class="desc" id="title1" for="ug_description">Leírás:</label>
|
|
<div><textarea rows="5" name="ug_description" id="ug_description">{$user_group->get_ug_description()}</textarea></div>
|
|
</div>
|
|
|
|
<div>
|
|
<label class="desc" id="title1" for="ug_is_automatic">Automatikus csoport:</label>
|
|
<div><input type="checkbox" name="ug_is_automatic" id="ug_is_automatic" value="1" disabled="disabled" {if $user_group->get_ug_is_automatic()}checked{/if}></div>
|
|
</div>
|
|
|
|
<div>
|
|
<div>
|
|
<input class="button black" type="submit" value="Mentés">
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
|
|
{if $user_group->get_ug_is_automatic()}
|
|
<br><br><br>
|
|
<form method="post" id="auto_filters">
|
|
</form>
|
|
<input type="hidden" name="ug_id" id="ug_id" value="{$user_group->get_ug_id()}">
|
|
<div class="user_filter">
|
|
<button type="button" class="button black" onclick="add_filter()" style="height: 40px;">Szűrő Hozzáadás</button>
|
|
</div>
|
|
<br>
|
|
<div class="user_filter">
|
|
<button type="button" class="button black" onclick="apply_filters()" style="height: 40px;">Halmaz</button>
|
|
<button type="button" class="button black" onclick="apply_filters(1)" style="height: 40px;">Metszet</button>
|
|
</div>
|
|
|
|
<div class="list wide" id="user_list" style="padding: 20px 0px 50px 0px;"></div>
|
|
|
|
<div id="footer_control">
|
|
<a onclick="update_user_list()" class="addbutton add" style="cursor: pointer;">Minden tag</a>
|
|
<div id="categories">
|
|
</div>
|
|
|
|
</div>
|
|
<div id="footer_toggle" onclick="footer_toggle();">
|
|
<img src="/_image/collapse.png">
|
|
</div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
var footer_category_ids = [];
|
|
var footer_values = [];
|
|
|
|
$( document ).ready(function() {
|
|
update_user_list(null, true);
|
|
update_footer();
|
|
get_filters();
|
|
});
|
|
|
|
|
|
function get_filters() {
|
|
$.post("/_ajax/get_filter_value_list.php",
|
|
{
|
|
group_id: $("#ug_id").val()
|
|
},
|
|
function(data, status) {
|
|
//filter array
|
|
var pdata = JSON.parse(data);
|
|
|
|
$.each(pdata, function(key, filter_value) {
|
|
//végigmegyünk a filter_value-kon
|
|
var filter_id = filter_value['ugfv_filter_id'];
|
|
var filter_value_id = filter_value['ugfv_id'];
|
|
var filter_html = '\
|
|
<div class="filter_row"><label for="filter_'+filter_value_id+'""><select class="filter_select" onChange="update_value_list('+filter_value_id+', this)" id="filter_'+filter_value_id+'"><option value="null">- Válassz szűrőt -</option></select></label>\
|
|
<div>\
|
|
<select id="filter_value_'+filter_value_id+'"><option value="null">- Szűrő értéke -</option></select>\
|
|
</div></div>\
|
|
';
|
|
$("#auto_filters").append(filter_html);
|
|
load_filters(filter_value_id, filter_id, filter_value['ugfv_value']);
|
|
//update_value_list(filter_value_id, $("#filter_"+filter_value_id), filter_value['ugfv_value']);
|
|
});
|
|
|
|
});
|
|
}
|
|
|
|
|
|
function load_filters(select_id, selected_filter_id = null, ugfv_value = null) {
|
|
$.post("/_ajax/get_filter_list.php",
|
|
function(data, status) {
|
|
//filter array
|
|
var pdata = JSON.parse(data);
|
|
var selected;
|
|
var option_string = '<option value="null">- Válassz szűrőt -</option>';
|
|
$.each(pdata, function(key, value) {
|
|
selected = '';
|
|
if (selected_filter_id) {
|
|
if (selected_filter_id == value["ugf_id"]) {
|
|
selected = ' selected';
|
|
}
|
|
}
|
|
option_string += "<option value='"+value["ugf_id"]+"'"+selected+">"+value["ugf_name"]+"</option>";
|
|
});
|
|
$("#filter_"+select_id).html(option_string);
|
|
//$("#filter_"+select_id).trigger('change');
|
|
if (ugfv_value) {
|
|
update_value_list(select_id, $("#filter_"+select_id), ugfv_value);
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
|
|
function update_value_list(id, select_element, selected_id = null) {
|
|
//itt kell megvizsgálni, hogy milyen fajta mező stb
|
|
//mármint az ajaxezés közben
|
|
$.post("/_ajax/get_filter_values.php",
|
|
{
|
|
filter_id: $("#filter_"+id).val(),
|
|
},
|
|
function(data, status) {
|
|
//value array
|
|
var pdata = JSON.parse(data);
|
|
if (pdata != null) {
|
|
var option_string = '';
|
|
$.each(pdata, function(key, value) {
|
|
option_string += "<option value='"+value["ugf_id"]+"'>"+value["ugf_name"]+"</option>";
|
|
});
|
|
$("#filter_value_"+id).html(option_string);
|
|
if (selected_id) {
|
|
$("#filter_value_"+id).val(selected_id);
|
|
}
|
|
}
|
|
else {
|
|
$("#filter_value_"+id).html('<option value="null">- Szűrő értéke -</option>');
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
function update_footer() {
|
|
$("#categories").html('');
|
|
$.each(footer_category_ids, function(key, value) {
|
|
$("#categories").append('<a onclick="update_user_list('+value+')" class="addbutton add" style="cursor: pointer;">'+footer_values[key]+'</a>');
|
|
});
|
|
}
|
|
|
|
function apply_filters(intersect = 0) {
|
|
//ha üres a filter list, akkor nem csinál semmit
|
|
var to_remove = [];
|
|
if( ($('#auto_filters').children()).length ) {
|
|
//todo: a kiválasztott mezőket is hozzá kell rakni
|
|
|
|
//bele kell rakni egy tömbbe a filterek id-ját
|
|
var filter_array = [];
|
|
$.each($(".filter_select"), function(key, value) {
|
|
//le kell vágni a _ után a számot
|
|
//tömb[tömb]
|
|
//a belső tömbben egy filter ID, filter_value ID és egy value van
|
|
var filter_select_value = $(this).val();
|
|
|
|
|
|
if (filter_select_value == 'null') {
|
|
to_remove.push($(this).parent().parent());
|
|
}
|
|
|
|
var parts = $(value).attr('id').split('_');
|
|
var filter_id = parts[1];
|
|
var filter_value = [];
|
|
filter_value.push(filter_id);
|
|
filter_value.push($("#filter_value_"+filter_id).val());
|
|
filter_value.push($("#filter_"+filter_id).val());
|
|
|
|
filter_array.push(filter_value);
|
|
|
|
|
|
});
|
|
//return;
|
|
$.post("/_ajax/apply_filters.php",
|
|
{
|
|
filter_array: filter_array,
|
|
user_group_id: $("#ug_id").val(),
|
|
intersect: intersect,
|
|
},
|
|
function(data, status) {
|
|
update_user_list(null, true);
|
|
$.each(to_remove, function(key, value) {
|
|
value.remove();
|
|
});
|
|
});
|
|
|
|
}
|
|
}
|
|
|
|
function update_user_list(category_id = 0, footer_update = false) {
|
|
//lekéri a usereket a csoportból
|
|
|
|
|
|
$.ajax({
|
|
url: '/_ajax/get_auto_group_members.php',
|
|
global: false,
|
|
type: 'POST',
|
|
data: {
|
|
group_id: $("#ug_id").val(),
|
|
category_id: category_id,
|
|
},
|
|
async: true, //blocks window close
|
|
success: function(data, status) {
|
|
var pdata = JSON.parse(data);
|
|
console.log(pdata);
|
|
var content = '';
|
|
var ugc_name_parts;
|
|
footer_category_ids = [];
|
|
footer_values = [];
|
|
content += '<div class="date_separator">'+pdata.length+' fő';
|
|
if (category_id) {
|
|
content += ' (szűkített nézet!)';
|
|
}
|
|
|
|
content += '</div>';
|
|
$.each(pdata, function(key, value) {
|
|
ugc_name_parts = value['ugc_names'].split(",");
|
|
//footer elements
|
|
//darabokra szedjük + mégegy each
|
|
if (value['ugc_ids']) {
|
|
var ugc_ids = value['ugc_ids'].split(',');
|
|
$.each(ugc_ids, function(k, v) {
|
|
if (footer_category_ids.indexOf(v) == -1) {
|
|
footer_category_ids.push(v);
|
|
}
|
|
});
|
|
}
|
|
//fe. end
|
|
|
|
ugc_name_parts.sort();
|
|
content +=
|
|
'\
|
|
<div class="list_item" id="kid_'+value['uk_id']+'">\
|
|
<span class="name_span">'+value['uk_name']+'</span>';
|
|
if (value['ugc_ids']) {
|
|
content += '<div class="categories">';
|
|
|
|
$.each(ugc_name_parts, function(ugc_key, ugc_value) {
|
|
content += '<span class="category_tab">'+ugc_value+'</span>';
|
|
if (footer_values.indexOf(ugc_value) == -1) {
|
|
footer_values.push(ugc_value);
|
|
}
|
|
|
|
});
|
|
|
|
content += '\
|
|
</div>';
|
|
}
|
|
content += '</div>';
|
|
});
|
|
if (footer_update) {
|
|
update_footer();
|
|
}
|
|
document.getElementById('user_list').innerHTML = content;
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function add_filter() {
|
|
//hozzáad egy új szűrő a HTML-hez
|
|
|
|
$.post("/_ajax/create_user_group_filter.php",
|
|
{
|
|
create_new: true,
|
|
},
|
|
function(data, status) {
|
|
//az új szűrő id-ját kapjuk vissza
|
|
var pdata = JSON.parse(data);
|
|
//illesszünk be rögtön egy új szűrőt, először csak null filter_id-val, és majd az Alkalmaz gombra kattintva tölti ki
|
|
var filter_html = '\
|
|
<div class="filter_row"><label for="filter_'+pdata+'""><select class="filter_select" onChange="update_value_list('+pdata+', this)" id="filter_'+pdata+'"><option value="null">- Válassz szűrőt -</option></select></label>\
|
|
<div>\
|
|
<select id="filter_value_'+pdata+'"><option value="null">- Szűrő értéke -</option></select>\
|
|
</div></div>\
|
|
';
|
|
$("#auto_filters").append(filter_html);
|
|
//legyen egy function, ami egy adott selectbe beletölti az összes filter típust
|
|
load_filters(pdata);
|
|
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
{else}
|
|
|
|
<div class="user_filter">
|
|
<input name="uk_filter_name" id="uk_filter_name" placeholder="Keresés..." autofocus>
|
|
<button type="button" class="button black" onclick="get_group_members({$user_group->get_ug_id()}, null)" style="height: 40px;">Összes tag</button>
|
|
</div>
|
|
<div class="user_filter">
|
|
<input class="add_category" id="add_category" placeholder="Új kategória">
|
|
<button type="button" class="button black" onclick="add_category()" style="height: 40px;">Hozzáadás</button>
|
|
</div>
|
|
|
|
<div class="list wide" id="user_list" style="padding: 20px 0px 50px 0px;"></div>
|
|
|
|
|
|
</div>
|
|
|
|
<div id="footer_control">
|
|
<a href="#" id="members" onclick="get_group_members({$user_group->get_ug_id()},'members')" class="addbutton add">Tagok</a>
|
|
<a href="#" id="not_members" onclick="get_group_members({$user_group->get_ug_id()},'not_members')" class="addbutton add">Nem tagok</a>
|
|
<a href="#" id="members_without_category" onclick="get_group_members({$user_group->get_ug_id()},'members_without_category')" class="addbutton add">Kategória nélküli tagok</a>
|
|
</div>
|
|
<div id="footer_toggle" onclick="footer_toggle();">
|
|
<img src="/_image/collapse.png">
|
|
</div>
|
|
|
|
<script>
|
|
|
|
var Timer;
|
|
var options = '';
|
|
|
|
$( document ).ready(function() {
|
|
//$("#uk_filter_name").focus();
|
|
|
|
//legeneráljuk az option-öket, és ezeket csak appendeljük, hogy ne kelljen minden lépésben lekérni
|
|
generate_options($("#ug_id").val());
|
|
|
|
//betöltjük a footerbe a category-kat
|
|
generate_footer_items($("#ug_id").val());
|
|
|
|
//mutassuk a tagokat
|
|
get_group_members($('#ug_id').val(), 'members');
|
|
|
|
});
|
|
|
|
$("#uk_filter_name").keyup(function() {
|
|
var text = $("#uk_filter_name").val();
|
|
if (text.length >= 3) {
|
|
document.getElementById('user_list').innerHTML = 'Betöltés...';
|
|
clearTimeout(Timer);
|
|
Timer = window.setTimeout(get_group_members($("#ug_id").val(),text), 1000);
|
|
}
|
|
});
|
|
|
|
function generate_options(ug_id) {
|
|
$.post("/_ajax/get_category_list.php",
|
|
{
|
|
group_id: ug_id,
|
|
},
|
|
function(data, status) {
|
|
var pdata = JSON.parse(data);
|
|
var option_string = '';
|
|
$.each(pdata, function(key, value) {
|
|
option_string += "<option value='"+value["ugc_id"]+"'>"+value["ugc_name"]+"</option>";
|
|
});
|
|
options = option_string;
|
|
update_select_lists();
|
|
});
|
|
}
|
|
|
|
function generate_footer_items(ug_id) {
|
|
$.post("/_ajax/get_category_list.php",
|
|
{
|
|
group_id: ug_id,
|
|
},
|
|
function(data, status) {
|
|
var pdata = JSON.parse(data);
|
|
var option_string = '';
|
|
$.each(pdata, function(key, value) {
|
|
option_string += '<a href="#" id="members" onclick="get_group_members({$user_group->get_ug_id()},'+value['ugc_id']+')" class="addbutton add">'+value['ugc_name']+'</a>';
|
|
});
|
|
$("#footer_control").append(option_string);
|
|
});
|
|
}
|
|
|
|
|
|
function modify_membership(uk_id, group_id) {
|
|
|
|
//css átállítása
|
|
if ($("#kid_"+uk_id).hasClass('member')) {
|
|
$("#kid_"+uk_id).removeClass('member');
|
|
$("#kid_"+uk_id).addClass('not_member');
|
|
}
|
|
else {
|
|
$("#kid_"+uk_id).addClass('member');
|
|
$("#kid_"+uk_id).removeClass('not_member');
|
|
}
|
|
|
|
//adatbázis módosítás
|
|
$.post("/_ajax/update_membership.php",
|
|
{
|
|
uk_id: uk_id,
|
|
group_id: group_id
|
|
});
|
|
}
|
|
|
|
function create_category(group_id, category_name) {
|
|
$.post("/_ajax/create_category.php",
|
|
{
|
|
group_id: group_id,
|
|
category_name: category_name
|
|
},
|
|
function(data, status) {
|
|
var pdata = JSON.parse(data);
|
|
|
|
generate_options(group_id);
|
|
//add_category_to_kid(uk_id, pdata, group_id);
|
|
//update_select_list(uk_id, group_id, pdata);
|
|
add_category_to_footer(pdata);
|
|
});
|
|
|
|
}
|
|
|
|
function update_select_list(uk_id, group_id, category_id = null) {
|
|
//az utolsó paraméter határozza meg, hogy selecteddé kell-e tenni valamit
|
|
|
|
//kitöröljük az összes optiont-t
|
|
$('#cat_list_'+uk_id).html('');
|
|
|
|
//lekérjük a friss category listát ehhez a grouphoz
|
|
$.post("/_ajax/get_category_list.php",
|
|
{
|
|
group_id: group_id,
|
|
},
|
|
function(data, status){
|
|
var pdata = JSON.parse(data);
|
|
var selected;
|
|
//végigmegyünk rajta
|
|
$.each(pdata, function(key, value) {
|
|
selected = false;
|
|
if (category_id) {
|
|
if (value['ugc_id'] == category_id) {
|
|
selected = 'selected';
|
|
$('#select_value_'+uk_id).val(category_id);
|
|
}
|
|
}
|
|
//a hidden mező értékét kéne csak beállítani
|
|
$('#cat_list_'+uk_id).append($("<option></option>")
|
|
.attr('value', value['ugc_id'])
|
|
.prop('selected', selected)
|
|
.text(value['ugc_name'])
|
|
|
|
);
|
|
});
|
|
|
|
update_select_lists();
|
|
});
|
|
}
|
|
|
|
function update_select_lists() {
|
|
//updateli az összes selectet az oldalon
|
|
//először elmenti h melyik id-jú a selected
|
|
//betöltés után beállítja
|
|
var selected;
|
|
var select_id;
|
|
var kid_id;
|
|
var temp_array;
|
|
$("select").each(function() {
|
|
select_id = $(this).prop('id');
|
|
temp_array = select_id.split('_');
|
|
kid_id = temp_array[2];
|
|
selected = $("#select_value_"+kid_id).val();
|
|
$(this).html('<option value="null">- nincs kategória -</option>');
|
|
$(this).append(options);
|
|
$(this).val(selected);
|
|
});
|
|
}
|
|
|
|
function add_category_to_footer(category_id) {
|
|
$.post("/_ajax/get_category.php",
|
|
{
|
|
category_id: category_id,
|
|
},
|
|
function(data, status){
|
|
var pdata = JSON.parse(data);
|
|
$("#footer_control").append('<a href="#" onclick="get_group_members('+$("#ug_id").val()+','+category_id+')" class="addbutton add">'+pdata[0]['ugc_name']+'</a>');
|
|
});
|
|
|
|
|
|
}
|
|
|
|
function add_category() {
|
|
//létrehozzuk a category-t a group-hoz
|
|
var cat_name = $("#add_category").val();
|
|
create_category($("#ug_id").val(), cat_name);
|
|
$("#add_category").val('');
|
|
|
|
//hozzáadjuk az új category-t a footerhez
|
|
}
|
|
|
|
function add_category_to_kid(uk_id, category_id, group_id) {
|
|
$.post("/_ajax/add_category_to_kid.php",
|
|
{
|
|
uk_id: uk_id,
|
|
category_id: category_id,
|
|
group_id: group_id
|
|
});
|
|
}
|
|
|
|
function update_category_to_user(uk_id, group_id, select_element) {
|
|
$.post("/_ajax/add_category_to_kid.php",
|
|
{
|
|
uk_id: uk_id,
|
|
category_id: select_element.value,
|
|
group_id: group_id
|
|
});
|
|
}
|
|
|
|
|
|
//searchStr lehetséges paraméterek: members, not_members, category_id
|
|
function get_group_members(groupId, searchStr) {
|
|
document.getElementById('user_list').innerHTML = 'Betöltés...';
|
|
$.post("/_ajax/get_group_members.php",
|
|
{
|
|
searchStr: searchStr,
|
|
groupId: groupId,
|
|
|
|
},
|
|
function(data, status){
|
|
var pdata = JSON.parse(data);
|
|
var member;
|
|
var content = '';
|
|
for (var i=0; i<pdata.length; ++i) {
|
|
|
|
member = 'not_member';
|
|
if (pdata[i]['ugk_user_group_ug_id'] == groupId) {
|
|
member = 'member';
|
|
}
|
|
|
|
content +=
|
|
'\
|
|
<div class="list_item '+member+'" id="kid_'+pdata[i]['uk_id']+'">\
|
|
<span class="toggle" onclick="modify_membership('+pdata[i]['uk_id']+', '+groupId+')"><img src="/_image/switch.png"></span>\
|
|
<span class="name_span">'+pdata[i]['uk_name']+'</span>\
|
|
<select class="category_list" onChange="update_category_to_user('+pdata[i]['uk_id']+', '+groupId+', this)" id="cat_list_'+pdata[i]['uk_id']+'" name="cat_list_'+pdata[i]['uk_id']+'"><option value="null">- nincs kategória -</option></select>\
|
|
<input type="hidden" id="select_value_'+pdata[i]['uk_id']+'" value="'+pdata[i]['ugk_category_ugc_id']+'">\
|
|
</div>\
|
|
';
|
|
}
|
|
document.getElementById('user_list').innerHTML = content;
|
|
update_select_lists();
|
|
});
|
|
}
|
|
|
|
</script>
|
|
|
|
{/if}
|
|
|
|
<script type="text/javascript">
|
|
function footer_toggle() {
|
|
$("#footer_control").fadeToggle( "fast", "linear" );
|
|
}
|
|
</script>
|