add jquery dateinput to dateWidget and dateRangeWidget
This commit is contained in:
parent
e1ce2ee6b9
commit
313e28101d
|
@ -10,7 +10,8 @@
|
|||
sortable_indexes config/sortable_indexes;
|
||||
addindexselected python:request.has_key('addindex') and request.addindex != '';
|
||||
addoperatorselected python:request.has_key('addoperator') and request.addoperator != ''">
|
||||
|
||||
<script tal:replace="structure widget/js"/>
|
||||
|
||||
<tal:counter tal:define="dummy python:request.set('querystringwidgetcounter', 0)"/>
|
||||
<tal:row repeat="row rows">
|
||||
<div class="criteria"
|
||||
|
@ -59,17 +60,17 @@
|
|||
</dd>
|
||||
</dl>
|
||||
|
||||
<input class="querywidget queryvalue dateWidget"
|
||||
<input class="querywidget queryvalue dateWidget date"
|
||||
autocomplete="off" type="text" name="form.widgets.query.v:records"
|
||||
tal:attributes="name python:str(fieldName)+'.v:records'; value python:row['v']"
|
||||
tal:condition="python:indexes[row.i]['operators'][row.o]['widget'] == 'DateWidget'"/>
|
||||
|
||||
<div class="querywidget queryvalue dateRangeWidget"
|
||||
tal:condition="python:indexes[row.i]['operators'][row.o]['widget'] == 'DateRangeWidget'">
|
||||
<input autocomplete="off" type="text" name="form.widgets.query.v:records:list"
|
||||
<input class="date" autocomplete="off" type="text" name="form.widgets.query.v:records:list"
|
||||
tal:attributes="name python:str(fieldName)+'.v:records:list'; value python:row['v'][0]"/>
|
||||
<span> and </span>
|
||||
<input autocomplete="off" type="text" name="form.widgets.query.v:records:list"
|
||||
<input class="date" autocomplete="off" type="text" name="form.widgets.query.v:records:list"
|
||||
tal:attributes="name python:str(fieldName)+'.v:records:list'; value python:row['v'][1]"/>
|
||||
</div>
|
||||
|
||||
|
@ -140,6 +141,7 @@
|
|||
<div class="querywidget queryvalue dateWidget"
|
||||
tal:condition="python:indexes[request.form['addindex']]['operators'][request.form['addoperator']]['widget'] == 'DateWidget'">
|
||||
<input autocomplete="off" type="text" class="queryvalue" tal:attributes="name python:str(fieldName)+'.v:records';" name="form.widgets.query.v:records" />
|
||||
|
||||
</div>
|
||||
|
||||
<div class="querywidget queryvalue dateRangeWidget"
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
'type': 'text',
|
||||
'name': fname + '.v:records'
|
||||
})
|
||||
.addClass('querywidget queryvalue dateWidget');
|
||||
.addClass('querywidget queryvalue dateWidget date');
|
||||
case 'DateRangeWidget':
|
||||
return $(document.createElement('div'))
|
||||
.addClass('querywidget dateRangeWidget')
|
||||
|
@ -84,7 +84,7 @@
|
|||
'type': 'text',
|
||||
'name': fname + '.v:records:list'
|
||||
})
|
||||
.addClass('queryvalue')
|
||||
.addClass('queryvalue date')
|
||||
)
|
||||
.append($(document.createElement('span'))
|
||||
.html(' and ')
|
||||
|
@ -95,7 +95,7 @@
|
|||
'type': 'text',
|
||||
'name': fname + '.v:records:list'
|
||||
})
|
||||
.addClass('queryvalue')
|
||||
.addClass('queryvalue date')
|
||||
);
|
||||
case 'RelativeDateWidget':
|
||||
return $(document.createElement('div'))
|
||||
|
@ -184,6 +184,21 @@
|
|||
}
|
||||
};
|
||||
|
||||
$.querywidget.updateWidget = function (node) {
|
||||
if (typeof(node) === "undefined") {
|
||||
node = $('.querywidget');
|
||||
}
|
||||
if ($().dateinput) {
|
||||
$(node).parents('.criteria').find('.date').dateinput({change: function() { $.querywidget.updateSearch();}, firstDay: 1,selectors: true, trigger: false, yearRange: [-10, 10]}).unbind('change')
|
||||
.bind('onShow', function (event) {
|
||||
var trigger_offset = $(this).next().offset();
|
||||
$(this).data('dateinput').getCalendar().offset(
|
||||
{top: trigger_offset.top+20, left: trigger_offset.left}
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$.querywidget.updateSearch = function () {
|
||||
var context_url = (function() {
|
||||
var baseUrl, pieces;
|
||||
|
@ -259,6 +274,7 @@
|
|||
// Init
|
||||
$.querywidget.init();
|
||||
|
||||
|
||||
// We need two keep two fields for each sorting field ('#sort_on',
|
||||
// '#sort_reversed'). The query results preview that calls
|
||||
// '@@querybuilder_html_results' in plone.app.querystring expects a
|
||||
|
@ -343,6 +359,8 @@
|
|||
$(this).children('input').val(), fname));
|
||||
});
|
||||
$.querywidget.updateSearch();
|
||||
$.querywidget.updateWidget();
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -367,6 +385,7 @@
|
|||
var querywidget = $(this).parent(".criteria").children('.querywidget');
|
||||
if ((widget !== $.querywidget.getCurrentWidget(querywidget)) || (widget === 'MultipleSelectionWidget')) {
|
||||
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
|
||||
$.querywidget.updateWidget($(this).parent(".criteria").children('.querywidget'));
|
||||
}
|
||||
$.querywidget.updateSearch();
|
||||
});
|
||||
|
@ -379,8 +398,10 @@
|
|||
var querywidget = $(this).parent().children('.querywidget');
|
||||
if (widget !== $.querywidget.getCurrentWidget(querywidget)) {
|
||||
querywidget.replaceWith($.querywidget.createWidget(widget, index, fname));
|
||||
$.querywidget.updateWidget($(this).parent().children('.querywidget'));
|
||||
}
|
||||
$.querywidget.updateSearch();
|
||||
|
||||
});
|
||||
|
||||
$('#sort_on,#sort_order').live('change', function () {
|
||||
|
|
|
@ -16,6 +16,7 @@ from plone.registry.interfaces import IRegistry
|
|||
class QueryStringWidget(Widget):
|
||||
implements(IQueryStringWidget)
|
||||
|
||||
calendar_type = 'gregorian'
|
||||
klass = u'querystring-widget'
|
||||
input_template = ViewPageTemplateFile('input.pt')
|
||||
|
||||
|
@ -54,6 +55,33 @@ class QueryStringWidget(Widget):
|
|||
name='display_query_results')(**options)
|
||||
|
||||
|
||||
def js(self):
|
||||
language = getattr(self.request, 'LANGUAGE', 'en')
|
||||
calendar = self.request.locale.dates.calendars[self.calendar_type]
|
||||
localize = 'jQuery.tools.dateinput.localize("' + language + '", {'
|
||||
localize += 'months: "%s",' % ','.join(calendar.getMonthNames())
|
||||
localize += 'shortMonths: "%s",' % ','.join(calendar.getMonthAbbreviations())
|
||||
# calendar tool's number of days is off by one from jquery tools'
|
||||
localize += 'days: "%s",' % ','.join(
|
||||
[calendar.getDayNames()[6]] + calendar.getDayNames()[:6])
|
||||
localize += 'shortDays: "%s"' % ','.join(
|
||||
[calendar.getDayAbbreviations()[6]] +
|
||||
calendar.getDayAbbreviations()[:6])
|
||||
localize += '});'
|
||||
|
||||
defaultlang = 'jQuery.tools.dateinput.conf.lang = "%s";' % language
|
||||
|
||||
return '''
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
if (jQuery().dateinput) {
|
||||
%(localize)s
|
||||
%(defaultlang)s
|
||||
}
|
||||
});
|
||||
</script>''' % dict(defaultlang=defaultlang, localize=localize)
|
||||
|
||||
|
||||
@implementer(z3c.form.interfaces.IFieldWidget)
|
||||
def QueryStringFieldWidget(field, request):
|
||||
return FieldWidget(field, QueryStringWidget(request))
|
||||
|
|
Reference in New Issue