2. Два списка со связанными данными
id="sel_onto“ – первый список
id="info_onto“ - второй список
Первый список содержит список
объектов типа Ontology
Второй список заполняется данными из
объекта, выбранного в первом списке
3. Рассмотрен пример организации
взаимодействия двух списков в шаблоне
CMS Plone средствами Java Scripts и AJAX
запросов
8. (function($) {
base=document.baseURI;
//получаем адрес портала
url1=base+"guieditor?listonto=all";
//формируем адрес сервиса
….здесь функция формирования списка
}
9. функция формирования списка
jq.ajax({
url: url1,
complete: function(data, status) {
var json = eval('(' + data.responseText + ')');
var selContainer =jq("#list_Onto");
var tmp='‘
jq.each(json, function(key, value) {
tmp=tmp+'<option value="'+value+'">'+value+'</option>';
});
$("#sel_onto").html(tmp);
}
});
10. обработка события
изменение значения в первом списке
jq("#sel_onto1").change(function() {
var new_val=$('#sel_onto1
option:selected').val();
var
url2=document.baseURI+"guieditor1?ontovalue
="+new_val;
jq.getJSON(url2, function(data) {
..здесь перебор элементов data и
формирование второго списка
});
11. функции
jq.ajax({
url: url1,
complete: function(data, status)})
jq.getJSON(url2, function(data) )
имеют одинаковое действие
12. класс сервиса
class GuiEditor1(BrowserView):
template =
ViewPageTemplateFile('templates/GuiEditor1.pt')
def __init__(self, context,request):
self.context=context
self.request=request
14. формирование списка объектов
def list_ontologys(self):
l=[i.getObject() for i in
self.catalogtool.searchResults(portal_type="
Ontology")]
f={}
for i in l:
f[str(i.getTitle())]=i.getId()
return f