silverstripe-userforms/javascript/UserForm.js

148 lines
4.2 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Javascript required to power the user defined forms.
*
* Rewritten and refactored from the prototype version FieldEditor.
*
* @todo Upgrade to jQuery 1.3 so we can use live rather
* then livequery
*/
(function($) {
$(document).ready(function() {
/*--------------------- SUBMISSIONS ------------------------ */
/**
* Delete a given Submission from the form, or all submissions
* we let the href of the delete link to do all the work for us
*/
$("#FormSubmissions .deleteSubmission").click(function() {
var deletedSubmission = $(this);
$.post($(this).attr('href'), function(data) {
deletedSubmission.parents('div.report').fadeOut();
});
return false;
});
/*-------------------- FIELD EDITOR ----------------------- */
/**
* Create a new instance of a field in the current form
* area. the type information should all be on this object
*/
$("div.FieldEditor ul.Menu li a").livequery('click',function() {
// if this form is readonly...
if($("#Fields").hasClass('readonly')) return false;
// Give the user some feedback
statusMessage(ss.i18n._t('UserForms.ADDINGNEWFIELD', 'Adding New Field'));
// variables
var action = $("#Form_EditForm").attr("action") + '/field/Fields/addfield';
var length = $(".FieldInfo").length + 1;
var securityID = ($("#SecurityID")) ? '&SecurityID='+$("#SecurityID").attr("value") : '';
var type = $(this).attr("ID");
//send ajax request to the page
$.ajax({
type: "GET",
url: action,
data: 'NewID='+ length +"&Type="+ type + securityID,
// create a new field
success: function(msg){
$('#Fields_fields').append(msg);
statusMessage(ss.i18n._t('UserForms.ADDEDNEWFIELD', 'Added New Field'));
},
// error creating new field
error: function(request, text, error) {
statusMessage(ss.i18n._t('UserForms.ERRORCREATINGFIELD', 'Error Creating Field'));
}
});
});
/**
* Show the more options popdown. Or hide it if we
* currently have it open
*/
$(".EditableFormField .moreOptions").livequery('click',function() {
var parentID = $(this).parents(".EditableFormField");
if(parentID) {
var extraOptions = parentID.children(".extraOptions");
if(extraOptions) {
if(extraOptions.hasClass('hidden')) {
extraOptions.removeClass('hidden').show();
}
else {
extraOptions.addClass('hidden').hide();
}
}
}
return false;
});
/**
* Delete a field from the user defined form
*/
$(".EditableFormField .delete").livequery('click', function() {
$(this).parents(".EditableFormField").remove();
});
/**
* Add a suboption to a radio field or to a dropdown box
* for example
*/
$(".EditableFormField .addableOption").livequery('click', function() {
// Give the user some feedback
statusMessage(ss.i18n._t('UserForms.ADDINGNEWFIELD', 'Adding New Option'));
// variables
var options = $(this).parent("li");
var action = $("#Form_EditForm").attr("action") + '/field/Fields/addoptionfield';
var parent = $(this).attr("rel");
var text = $(this).parents("li").children(".text").val();
// clear input
$(this).parents("li").children(".text").val("");
//send ajax request to the page
$.ajax({
type: "GET",
url: action,
data: 'Parent='+ parent +"&Text="+ text,
// create a new field
success: function(msg){
options.before(msg);
statusMessage(ss.i18n._t('UserForms.ADDEDNEWFIELD', 'Added New Field'));
},
// error creating new field
error: function(request, text, error) {
statusMessage(ss.i18n._t('UserForms.ERRORCREATINGFIELD', 'Error Creating Field'));
}
});
return false;
});
/**
* Delete a suboption such as an dropdown option or a
* checkbox field
*/
$(".EditableFormField .deleteOption").livequery('click', function() {
// pass the deleted status onto the element
$(this).parents("li").children("[type=text]").attr("value", "field-node-deleted");
$(this).parents("li").hide();
// Give the user some feedback
statusMessage(ss.i18n._t('UserForms.REMOVINGOPTION', 'Removed Option'));
return false;
});
});
})
(jQuery);