forked from rodrigofns/zabbix-service-tree
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdialogChooseIcon.php
88 lines (80 loc) · 2.89 KB
/
dialogChooseIcon.php
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
<div id="dialogChooseIcon">
<style type="text/css" scoped="scoped">
div#dialogChooseIcon { display:none; }
div#chooseIconWnd { }
div#allIcons { width:550px; height:320px; border:1px solid #DADADA; overflow-y:scroll; }
img.choosable { margin:5px; border:1px solid #DDD; cursor:pointer; }
img.chosen { border:2px solid red; box-shadow:0px 0px 12px red; }
</style>
<div id="chooseIconWnd">
<label><input type="radio" name="choice" value="none"/><?=I('No image')?></label>
<label><input type="radio" name="choice" value="icon"/><?=I('Choose image')?>:</label>
<div id="allIcons"></div>
</div>
</div>
<script type="text/javascript">
function ShowChooseIcon() {
var $div = $('div#dialogChooseIcon');
$div.find('div#allIcons').empty();
var imgObjs = [];
var popup = $div.modalForm({ hasCancel:true, title:I('Choose icon') });
function BuildImages() {
var imgs = [];
for(var i = 0; i < imgObjs.length; ++i) {
var newimg = $('<img title="'+imgObjs[i].name+'" class="choosable" src="'+imgObjs[i].imageurl+'"/>');
newimg.data('id', imgObjs[i].imageid); // keep ID into IMG element
imgs.push(newimg);
}
$div.find('div#allIcons').append(imgs);
}
function BindEvents() {
$div.find('input[name=choice]').on('change', function(ev) {
var chosen = $div.find('input[name=choice]:checked').val();
(chosen === 'icon') ? BuildImages() : $div.find('div#allIcons').empty();
});
$div.on('click', 'img', function(ev) {
$div.find('img.chosen').removeClass('chosen');
$(this).addClass('chosen');
});
}
function UnbindEvents() {
$div.find('input[name=choice]').off('change');
}
popup.ready(function() { // right before form appears
$div.find('input[name=choice][value=none]').prop('checked', true);
BindEvents();
var xhr = $.post('ajaxService.php', { images:1 });
xhr.fail(function(response) {
$('<span>'+I('Failed to query images')+'.<br/>' +
response.status+': '+response.statusText+'<br/>' +
response.responseText+'</span>'
).modalForm({ title:I('Oops...') }).ok(function() {
popup.abort();
});
});
xhr.done(function(data) {
imgObjs = data; // keep array
});
});
popup.ok(UnbindEvents); // after user clicks OK
popup.cancel(UnbindEvents); // after user clicks Cancel
popup.validateSubmit(function() { // right after user clicks OK
if($div.find('input[name=choice][value=none]').prop('checked') === true) { // use chose no image
UnbindEvents();
popup.continueSubmit(null);
} else { // user chose an image
if($div.find('img.chosen').length !== 1) {
$('<span>'+I('No image has been selected.')+'</span>').modalForm({ title:I('Oops...') });
} else {
UnbindEvents();
var $chosenImg = $div.find('img.chosen');
popup.continueSubmit({ // build return object with image ID and URL
imageid: $chosenImg.data('id'),
imageurl: $chosenImg.attr('src')
});
}
}
});
return popup; // can call ok() event
}
</script>