stop hardcoding the field name. fixes the content listing tile edit form

This commit is contained in:
David Glick 2011-12-04 15:25:08 -08:00
parent f022827492
commit 0a63420624
3 changed files with 33 additions and 21 deletions

View File

@ -1,6 +1,13 @@
Changelog
=========
1.0 (unreleased)
----------------
- Stop hardcoding the field name so it works with other field names and
prefixes.
[davisagli]
1.0a1 (2011-10-28)
------------------

View File

@ -1,6 +1,7 @@
<div class="ArchetypesQueryWidget"
tal:define="fieldName view/name;
widget nocall:view;">
widget nocall:view;"
tal:attributes="data-fieldname fieldName">
<div tal:define="config widget/getConfig;
indexes config/indexes;

View File

@ -42,29 +42,29 @@
};
// Create a queryindex select menu
$.querywidget.createQueryIndex = function (value) {
$.querywidget.createQueryIndex = function (value, fname) {
return $.querywidget.createSelect($.querywidget.config.indexes,
value,
'queryindex',
'form.widgets.query.i:records');
fname + '.i:records');
};
// Create a queryoperator select menu
$.querywidget.createQueryOperator = function (index, value) {
$.querywidget.createQueryOperator = function (index, value, fname) {
return $.querywidget.createSelect($.querywidget.config.indexes[index].operators,
value,
'queryoperator',
'form.widgets.query.o:records');
fname + '.o:records');
};
$.querywidget.createWidget = function (type, index) {
$.querywidget.createWidget = function (type, index, fname) {
switch (type) {
case 'StringWidget':
return $(document.createElement('input'))
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records'
'name': fname + '.v:records'
})
.addClass('querywidget queryvalue stringWidget');
break;
@ -73,7 +73,7 @@
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records'
'name': fname + '.v:records'
})
.addClass('querywidget queryvalue dateWidget');
break;
@ -84,7 +84,7 @@
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records:list'
'name': fname + '.v:records:list'
})
.addClass('queryvalue')
)
@ -95,7 +95,7 @@
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records:list'
'name': fname + '.v:records:list'
})
.addClass('queryvalue')
)
@ -112,7 +112,7 @@
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records'
'name': fname + '.v:records'
})
.addClass('queryvalue')
)
@ -123,7 +123,7 @@
.attr({
'autocomplete': 'off',
'type': 'text',
'name': 'form.widgets.query.v:records'
'name': fname + '.v:records'
})
.addClass('querywidget queryvalue relativePathWidget');
break;
@ -146,7 +146,7 @@
.append($(document.createElement('input'))
.attr({
'type': 'checkbox',
'name': 'form.widgets.query.v:records:list',
'name': fname + '.v:records:list',
'value': i
})
)
@ -263,6 +263,7 @@
// Get object
var obj = $(this);
var fname = obj.attr('data-fieldname');
// Hide controls used for non-javascript only
obj.find(".addIndexButton").hide();
@ -275,11 +276,11 @@
.addClass('queryresults discreet')
.html('')
);
$(this).replaceWith($.querywidget.createQueryIndex($(this).children('input').val()));
$(this).replaceWith($.querywidget.createQueryIndex($(this).children('input').val()), fname);
});
$('div.queryoperator').each(function () {
$(this).replaceWith($.querywidget.createQueryOperator($(this).parents('.criteria').children('.queryindex').val(),
$(this).children('input').val()));
$(this).children('input').val(), fname));
});
$.querywidget.updateSearch();
});
@ -294,25 +295,27 @@
});
$('.queryindex').live('change', function () {
var fname = $(this).closest('.ArchetypesQueryWidget').attr('data-fieldname');
var index = $(this).find(':selected')[0].value;
$(this).parents(".criteria").children('.queryoperator')
.replaceWith($.querywidget.createQueryOperator(index, ''));
.replaceWith($.querywidget.createQueryOperator(index, '', fname));
var operatorvalue = $(this).parents('.criteria').children('.queryoperator').val();
var widget = $.querywidget.config.indexes[index].operators[operatorvalue].widget;
var querywidget = $(this).parent(".criteria").children('.querywidget');
if ((widget != $.querywidget.getCurrentWidget(querywidget)) || (widget == 'MultipleSelectionWidget')) {
querywidget.replaceWith($.querywidget.createWidget(widget, index));
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
}
$.querywidget.updateSearch();
});
$('.queryoperator').live('change', function () {
var fname = $(this).closest('.ArchetypesQueryWidget').attr('data-fieldname');
var index = $(this).parents('.criteria').children('.queryindex').val();
var operatorvalue = $(this).children(':selected')[0].value;
var widget = $.querywidget.config.indexes[index].operators[operatorvalue].widget;
var querywidget = $(this).parent().children('.querywidget');
if (widget != $.querywidget.getCurrentWidget(querywidget)) {
querywidget.replaceWith($.querywidget.createWidget(widget, index));
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
}
$.querywidget.updateSearch();
});
@ -344,6 +347,7 @@
});
$('.addIndex').live('change', function () {
var fname = $(this).closest('.ArchetypesQueryWidget').attr('data-fieldname');
var index = $(this).find(':selected')[0].value;
var criteria = $(this).parents('.criteria');
var newcriteria = $(document.createElement('div'))
@ -354,11 +358,11 @@
.addClass('queryresults discreet')
.html('')
);
newcriteria.append($.querywidget.createQueryIndex(index));
var operator = $.querywidget.createQueryOperator(index,'');
newcriteria.append($.querywidget.createQueryIndex(index, fname));
var operator = $.querywidget.createQueryOperator(index, '', fname);
newcriteria.append(operator);
var operatorvalue = $(operator.children()[0]).attr('value');
newcriteria.append($.querywidget.createWidget($.querywidget.config.indexes[index].operators[operatorvalue].widget, index));
newcriteria.append($.querywidget.createWidget($.querywidget.config.indexes[index].operators[operatorvalue].widget, index, fname));
newcriteria.append(
// How will we translate these values?