forked from DGNum/gestioCOF
Déplacement de Grappelli dans gestioncof/static
This commit is contained in:
parent
d16022164b
commit
23d63b3376
794 changed files with 0 additions and 0 deletions
157
gestioncof/static/grappelli/js/grappelli.js
Normal file
157
gestioncof/static/grappelli/js/grappelli.js
Normal file
|
@ -0,0 +1,157 @@
|
|||
/**
|
||||
* GRAPPELLI UTILS
|
||||
* functions needed for Grappelli
|
||||
*/
|
||||
|
||||
// grp jQuery namespace
|
||||
var grp = {
|
||||
"jQuery": jQuery.noConflict(true)
|
||||
};
|
||||
|
||||
// django jQuery namespace
|
||||
var django = {
|
||||
"jQuery": grp.jQuery.noConflict(true)
|
||||
};
|
||||
|
||||
// var jQuery = grp.jQuery.noConflict(true);
|
||||
|
||||
(function($) {
|
||||
|
||||
// dateformat
|
||||
grappelli.getFormat = function(type) {
|
||||
if (type == "date") {
|
||||
var format = DATE_FORMAT.toLowerCase().replace(/%\w/g, function(str) {
|
||||
str = str.replace(/%/, '');
|
||||
return str + str;
|
||||
});
|
||||
return format;
|
||||
}
|
||||
};
|
||||
|
||||
// datepicker, timepicker init
|
||||
grappelli.initDateAndTimePicker = function() {
|
||||
|
||||
// HACK: get rid of text after DateField (hardcoded in django.admin)
|
||||
$('p.datetime').each(function() {
|
||||
var text = $(this).html();
|
||||
text = text.replace(/^\w*: /, "");
|
||||
text = text.replace(/<br>[^<]*: /g, "<br>");
|
||||
$(this).html(text);
|
||||
});
|
||||
|
||||
var options = {
|
||||
//appendText: '(mm/dd/yyyy)',
|
||||
constrainInput: false,
|
||||
showOn: 'button',
|
||||
buttonImageOnly: false,
|
||||
buttonText: '',
|
||||
dateFormat: grappelli.getFormat('date'),
|
||||
showButtonPanel: true,
|
||||
showAnim: '',
|
||||
// HACK: sets the current instance to a global var.
|
||||
// needed to actually select today if the today-button is clicked.
|
||||
// see onClick handler for ".ui-datepicker-current"
|
||||
beforeShow: function(year, month, inst) {
|
||||
grappelli.datepicker_instance = this;
|
||||
}
|
||||
};
|
||||
var dateFields = $("input[class*='vDateField']:not([id*='__prefix__'])");
|
||||
dateFields.datepicker(options);
|
||||
|
||||
if (typeof IS_POPUP != "undefined" && IS_POPUP) {
|
||||
dateFields.datepicker('disable');
|
||||
}
|
||||
|
||||
// HACK: adds an event listener to the today button of datepicker
|
||||
// if clicked today gets selected and datepicker hides.
|
||||
// use on() because couldn't find hook after datepicker generates it's complete dom.
|
||||
$(".ui-datepicker-current").on('click', function() {
|
||||
$.datepicker._selectDate(grappelli.datepicker_instance);
|
||||
grappelli.datepicker_instance = null;
|
||||
});
|
||||
|
||||
// init timepicker
|
||||
$("input[class*='vTimeField']:not([id*='__prefix__'])").grp_timepicker();
|
||||
|
||||
// now-button for both date and time
|
||||
// $("<button class='ui-datetime-now' />").insertAfter("button.ui-timepicker-trigger");
|
||||
// $(".ui-datetime-now").on('click', function() {
|
||||
// alert("Now for date and time: grappelli.js line 68 ff.");
|
||||
// return false
|
||||
// });
|
||||
|
||||
};
|
||||
|
||||
// changelist: filter
|
||||
grappelli.initFilter = function() {
|
||||
$("a.grp-pulldown-handler").click(function() {
|
||||
var pulldownContainer = $(this).closest(".grp-pulldown-container");
|
||||
$(pulldownContainer).toggleClass("grp-pulldown-state-open").children(".grp-pulldown-content").toggle();
|
||||
});
|
||||
$("a.grp-pulldown-handler").bind('mouseout', function() {
|
||||
$(this).blur();
|
||||
});
|
||||
$(".grp-filter-choice").change(function(){
|
||||
location.href = $(this).val();
|
||||
});
|
||||
};
|
||||
|
||||
// changelist: searchbar
|
||||
grappelli.initSearchbar = function() {
|
||||
var searchbar = $("input.grp-search-field");
|
||||
searchbar.focus();
|
||||
};
|
||||
|
||||
grappelli.updateSelectFilter = function(form) {
|
||||
if (typeof SelectFilter != "undefined"){
|
||||
form.find(".selectfilter").each(function(index, value){
|
||||
var namearr = value.name.split('-');
|
||||
SelectFilter.init(value.id, namearr[namearr.length-1], false, "{% admin_media_prefix %}");
|
||||
});
|
||||
form.find(".selectfilterstacked").each(function(index, value){
|
||||
var namearr = value.name.split('-');
|
||||
SelectFilter.init(value.id, namearr[namearr.length-1], true, "{% admin_media_prefix %}");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
grappelli.reinitDateTimeFields = function(form) {
|
||||
form.find(".vDateField").datepicker({
|
||||
constrainInput: false,
|
||||
showOn: 'button',
|
||||
buttonImageOnly: false,
|
||||
buttonText: '',
|
||||
dateFormat: grappelli.getFormat('date')
|
||||
});
|
||||
form.find(".vTimeField").grp_timepicker();
|
||||
};
|
||||
|
||||
// autocomplete helpers
|
||||
grappelli.get_app_label = function(elem) {
|
||||
var link = elem.next("a");
|
||||
if (link.length > 0) {
|
||||
var url = link.attr('href').split('/');
|
||||
return url[url.length-3];
|
||||
}
|
||||
return false;
|
||||
};
|
||||
grappelli.get_model_name = function(elem) {
|
||||
var link = elem.next("a");
|
||||
if (link.length > 0) {
|
||||
var url = link.attr('href').split('/');
|
||||
return url[url.length-2];
|
||||
}
|
||||
return false;
|
||||
};
|
||||
grappelli.get_query_string = function(elem) {
|
||||
var link = elem.next("a");
|
||||
if (link.length > 0) {
|
||||
var url = link.attr('href').split('/');
|
||||
pairs = url[url.length-1].replace('?', '').split("&");
|
||||
return pairs.join(":");
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
})(grp.jQuery);
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue