我对elgg的第一次实验。 elgg_view('input / date'使用datepicker函数,但我需要添加一些选项。
在我的插件(称为“帮助”)初始化函数(start.php)中我声明了 elgg_extend_view('js / elgg','help / js'); 然后,在\ mod \ help \ views \ default \ help \ js.php中我从elgg核心复制了elgg.ui.initDatePicker函数,并添加了我的选项。我也添加了
elgg.provide( 'elgg.help');
位于顶部,
elgg.register_hook_handler('init','system',elgg.ui.initDatePicker);
在底部,像这样:
- 开始\ mod \ help \ views \ default \ help \ js.php code
elgg.provide('elgg.help');
elgg.ui.initDatePicker = function() {
var loadDatePicker = function() {
$('.elgg-input-date').datepicker({
// MY OPTIONS ADDED
yearRange: "-100:+0",
changeYear: true,
changeMonth: true,
// ISO-8601
dateFormat: 'yy-mm-dd',
onSelect: function(dateText) {
if ($(this).is('.elgg-input-timestamp')) {
// convert to unix timestamp
var dateParts = dateText.split("-");
var timestamp = Date.UTC(dateParts[0], dateParts[1] - 1, dateParts[2]);
timestamp = timestamp / 1000;
var id = $(this).attr('id');
$('input[name="' + id + '"]').val(timestamp);
}
}
});
};
if ($('.elgg-input-date').length && elgg.get_language() == 'en') {
loadDatePicker();
} else if ($('.elgg-input-date').length) {
elgg.get({
url: elgg.config.wwwroot + 'vendors/jquery/i18n/jquery.ui.datepicker-'+ elgg.get_language() +'.js',
dataType: "script",
cache: true,
success: loadDatePicker,
error: loadDatePicker // english language is already loaded.
});
}
}
elgg.register_hook_handler('init', 'system', elgg.ui.initDatePicker);
---结束\ mod \ help \ views \ default \ help \ js.php code
它确实打开了一个日历,但它不适用于我的yearRange,changeYear和changeMonth选项。但是,如果我只是在elgg \ js \ lib \ ui.js中添加选项,它可以正常工作。由于我不想搞乱核心文件,我在这里要求提示。谢谢
答案 0 :(得分:0)
请注意,您以这种方式覆盖elgg.ui.initDatePicker的核心版本。
您似乎在init系统上第二次注册了相同的功能(它是由核心注册的,您刚刚更改了实现)
如果不使用提供的(elgg.help)对象,也不需要运行elgg.provide。
除了这些注释,我还要确保JS代码按时加载。你如何加载代码? elgg_load_js或某些视图扩展名?
答案 1 :(得分:0)
使用
elgg_view('input/datepicker',array('name'=>'startDate'));
FOR elgg 1.8.16