Jifty
view release on metacpan or search on metacpan
share/web/static/js/jifty.js view on Meta::CPAN
jQuery(button).timepickr({val: 'Pick time'});
jQuery(button).blur( function() {
var old_value = jQuery(this).prev().val();
if ( Jifty.Calendar.dateRegex.test(old_value) ) {
var bits = old_value.match(Jifty.Calendar.dateRegex);
old_value = bits[1] + '-' + bits[2] + '-' + bits[3];
}
var time = jQuery(button).val();
jQuery(e).val( old_value + ' ' + time + ':00' );
// Trigger an onchange event for any listeners
jQuery(e).change();
jQuery(button).val('');
}
);
jQuery(e).addClass('has_datetime_link');
}
},
'input.button_as_link': function(e) {
Jifty.Utils.buttonToLink(e);
},
"input.date, input.text": function(e) {
/* XXX TODO: Figure out how to make our enter handler detect
when the autocomplete is active so we can use it on autocompleted
fields
*/
if ( !jQuery(e).hasClass("jifty_enter_handler_attached" )
&& !jQuery(e).hasClass("ajaxautocompletes" )
&& !jQuery(e).hasClass("disable_enter_handler") )
{
/* Do not use keydown as the event, it will not work as expected in Safari */
jQuery(e).bind('keypress', Jifty.Form.Element.handleEnter).addClass("jifty_enter_handler_attached");
}
},
".messages": function(e) {
if ( !jQuery(e).hasClass('jifty_enter_handler_attached') ) {
jQuery(e).prepend(
'<a href="#" id="dismiss_'+e.id+'" title="Dismiss" onmousedown="this.onfocus=this.blur;" onmouseup="this.onfocus=window.clientInformation?null:window.undefined" onclick="Jifty.Effect(this.parentNode, \'Fade\'); return false;">Dismiss...
).addClass("jifty_enter_handler_attached" );
}
},
'.form_field .error, .form_field .warning, .form_field .canonicalization_note': function(e) {
if ( e.innerHTML == "" ) {
e.style.display = "none";
}
},
// Form elements should focus if the CSS says so.
".focus": function(e) {
/* Check to see if the element is already focused */
if (!jQuery(e).hasClass("focused")) {
jQuery(e).addClass("focused").focus();
}
},
// Hide with javascript (since the user may have even partially-working CSS
// but no JS)
".jshide": function(e) {
jQuery(e).hide();
},
/* Use jQuery for full-page-refresh notifications, as well */
'#messages.jifty.results.messages, #errors.jifty.results.messages, .popup_message, .popup_error': function(e) {
jQuery(e).hide();
},
'#messages.jifty.results.messages .message, #errors.jifty.results.messages .error, .popup_message, .popup_error': function(e) {
var je = jQuery(e);
var type = je.attr("class").match(/(message|error)\b/)[0];
var opt = {
sticky: je.hasClass('popup_sticky'),
theme: 'result-' + type
};
if ( je.closest('.jifty.results').length ) opt["life"] = 10000;
jQuery.jGrowl( e.innerHTML, opt );
}
});
/* Regions */
// Keep track of the fragments on the page
Jifty.fragments = {};
// Todo: This "fragments" variable should be localized. External access should be restricted
// to use "Jifty.fragments" instead.
var fragments = Jifty.fragments;
var Region = function() {
this.initialize.apply(this, arguments);
return this;
};
Region.prototype = {
initialize: function(name, args, path, parent, in_form) {
this.name = name;
this.args = jQuery.extend({}, args);
this.path = path;
this.parent = parent ? fragments[parent] : null;
this.in_form = in_form;
if (fragments[name]) {
// If this fragment already existed, we want to wipe out
// whatever evil lies we might have said earlier; do this
// by clearing out everything that looks relevant
jQuery.each(current_args, function(k, v) {
var parsed = k.match(/^(.*?)\.(.*)/);
if ((parsed != null) && (parsed.length == 3) && (parsed[1] == this.name)) {
current_args[k] = null;
}
});
}
fragments[name] = this;
},
setPath: function(supplied) {
var self = this;
// Merge in from current_args
jQuery.each(current_args, function(k, v) {
if (k == self.name) {
self.path = v
}
});
// Update with supplied
if (supplied != null) {
this.path = supplied;
}
// Propagate back to current args
current_args[ this.name ] = this.path;
( run in 1.807 second using v1.01-cache-2.11-cpan-364913b4093 )