This commit is contained in:
Ricsi
2017-09-23 17:06:39 +02:00
parent 63bdbf9888
commit eb2e9b9e3f
63 changed files with 2211 additions and 57 deletions

View File

@@ -0,0 +1,567 @@
<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()}">
<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- 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>