Frequently Asked Questions v2 |
FAQ Main / Answer Detail |
Field Triggers
Author: Jakub Adamek jakubadamek@ecn.cz |
|
If you want to add functionality to the Add / Edit item page, you can use JavaScript code. This may be useful in many cases. JavaScript is executed on the client computer and works in most web browsers, e.g. Internet Explorer and Netscape on PC / Mac. There are many enhancements which work in IE only or in Netscape only but enough features are available for both. I assume you know about JavaScript or will look for some more info on web.
Some examples of what may be done:
Events lasting one or more days. You need two fields -- event start and event end. But most events are one-day events and the users hate to fill the same date twice. You can add a link "Copy date from Start date" which will copy the value. Or you can add an "aa_onSubmit" trigger, which will copy the value before submitting the form when End date is not changed.
Combining two fields. You want to join values from several fields into another field. You can do it just after leaving any of the fields by the "aa_onChange" trigger or just before form submit by the "aa_onSubmit" trigger.
Some useful functions are ready to work with fields. These are defined in indclude/fillform.js.
Have a look at the file to see other more general and more powerful functions.
The file is included with the Add / Edit item page if anything is defined on
the Field Javascript page. The two basic functions are:
setField (fieldid, newValue) -- sets a value to various control types, to a text box, text area, select box, check box etc. Works even with AA dates (shown by three select boxes for day, month and year) -- use a UNIX timestamp (number of seconds since 1.1.1970) to set a date.
getField (fieldid) -- gets the value from various control types. Works with AA dates, returns the UNIX timestamp.
If anything is written in this page, the file include/fillform.js
is included with the Add / Edit item page. You can write any JavaScript code
in the page. AA will look for triggers and add them to all controls if it founds
them. Each trigger must be defined with
function aa_onTrigger (fieldid) { trigger body
}
where Trigger is a name of any allowed trigger -- these
are listed at the bottom of the Field Javascript page. You can add whitespace
(spaces, tabs, line ends) but you must use the parameter fieldid
.
The ID of the field to which a control belongs or the name of the form ("inputform")
is sent in it.
Combining two fields. You want to copy headline and expiry date to abstract after editing any of them:
function aa_onChange (fieldid) {
switch (fieldid) {
case 'headline........':
case 'expiry_date.....':
var
myDate = new Date (getField('expiry_date.....')*1000);
textdate
= myDate.getDate()+'.'+(myDate.getMonth()+1)+'.'+myDate.getYear();
setField
('abstract.......2',getField('headline........')+' '+textdate);
break;
}
}
Events lasting one or more days. Suppose you are using the Expiry date and Publish date as event end / start date. You can add this code to the Before HTML code in Admin -- configure Fields:
<tr><td></td><td class=tabtxt>
<a href="javascript:setField('expiry_date.....',getField ('publish_date....'));">Copy
from post date</a>
</td></tr>
Remember to add something to the Triggers page (e.g. "//" which is a commentary in JavaScript), otherwise fillform.js with the functions getField and setField won't be loaded.
If you want to use the trigger, add this code to the Field Triggers:
function aa_onSubmit (fieldid) {
var myDate = new Date (2001,0,1); // the
default date is 1.1.2001
if (getField('expiry_date.....') == myDate.getTime()
/ 1000)
setField('expiry_date.....',getField
('publish_date....'));
}
This will change the end date before submitting but only if it is set to 1.1.2001, which is default.
Last Edit: Aug 17 2011
<aafaq id=1706> ~ToDo: 1706 Field Triggers </aafaq>
This FAQ interface was developed by Jason at Commons.ca
|
APC
ActionApps is a free software content management system initiated by
the Association for Progressive Communications (APC) APC - Internet and ICTs for social justice and development |