EJS.Helpers.prototype.date_tag = function(name, value , html_options) { if(! (value instanceof Date)) value = new Date() var month_names = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var years = [], months = [], days =[]; var year = value.getFullYear(); var month = value.getMonth(); var day = value.getDate(); for(var y = year - 15; y < year+15 ; y++) { years.push({value: y, text: y}) } for(var m = 0; m < 12; m++) { months.push({value: (m), text: month_names[m]}) } for(var d = 0; d < 31; d++) { days.push({value: (d+1), text: (d+1)}) } var year_select = this.select_tag(name+'[year]', year, years, {id: name+'[year]'} ) var month_select = this.select_tag(name+'[month]', month, months, {id: name+'[month]'}) var day_select = this.select_tag(name+'[day]', day, days, {id: name+'[day]'}) return year_select+month_select+day_select; } EJS.Helpers.prototype.form_tag = function(action, html_options) { html_options = html_options || {}; html_options.action = action if(html_options.multipart == true) { html_options.method = 'post'; html_options.enctype = 'multipart/form-data'; } return this.start_tag_for('form', html_options) } EJS.Helpers.prototype.form_tag_end = function() { return this.tag_end('form'); } EJS.Helpers.prototype.hidden_field_tag = function(name, value, html_options) { return this.input_field_tag(name, value, 'hidden', html_options); } EJS.Helpers.prototype.input_field_tag = function(name, value , inputType, html_options) { html_options = html_options || {}; html_options.id = html_options.id || name; html_options.value = value || ''; html_options.type = inputType || 'text'; html_options.name = name; return this.single_tag_for('input', html_options) } EJS.Helpers.prototype.is_current_page = function(url) { return (window.location.href == url || window.location.pathname == url ? true : false); } EJS.Helpers.prototype.link_to = function(name, url, html_options) { if(!name) var name = 'null'; if(!html_options) var html_options = {} if(html_options.confirm){ html_options.onclick = " var ret_confirm = confirm(\""+html_options.confirm+"\"); if(!ret_confirm){ return false;} " html_options.confirm = null; } html_options.href=url return this.start_tag_for('a', html_options)+name+ this.tag_end('a'); } EJS.Helpers.prototype.submit_link_to = function(name, url, html_options){ if(!name) var name = 'null'; if(!html_options) var html_options = {} html_options.onclick = html_options.onclick || '' ; if(html_options.confirm){ html_options.onclick = " var ret_confirm = confirm(\""+html_options.confirm+"\"); if(!ret_confirm){ return false;} " html_options.confirm = null; } html_options.value = name; html_options.type = 'submit' html_options.onclick=html_options.onclick+ (url ? this.url_for(url) : '')+'return false;'; //html_options.href='#'+(options ? Routes.url_for(options) : '') return this.start_tag_for('input', html_options) } EJS.Helpers.prototype.link_to_if = function(condition, name, url, html_options, post, block) { return this.link_to_unless((condition == false), name, url, html_options, post, block); } EJS.Helpers.prototype.link_to_unless = function(condition, name, url, html_options, block) { html_options = html_options || {}; if(condition) { if(block && typeof block == 'function') { return block(name, url, html_options, block); } else { return name; } } else return this.link_to(name, url, html_options); } EJS.Helpers.prototype.link_to_unless_current = function(name, url, html_options, block) { html_options = html_options || {}; return this.link_to_unless(this.is_current_page(url), name, url, html_options, block) } EJS.Helpers.prototype.password_field_tag = function(name, value, html_options) { return this.input_field_tag(name, value, 'password', html_options); } EJS.Helpers.prototype.select_tag = function(name, value, choices, html_options) { html_options = html_options || {}; html_options.id = html_options.id || name; html_options.value = value; html_options.name = name; var txt = '' txt += this.start_tag_for('select', html_options) for(var i = 0; i < choices.length; i++) { var choice = choices[i]; var optionOptions = {value: choice.value} if(choice.value == value) optionOptions.selected ='selected' txt += this.start_tag_for('option', optionOptions )+choice.text+this.tag_end('option') } txt += this.tag_end('select'); return txt; } EJS.Helpers.prototype.single_tag_for = function(tag, html_options) { return this.tag(tag, html_options, '/>');} EJS.Helpers.prototype.start_tag_for = function(tag, html_options) { return this.tag(tag, html_options); } EJS.Helpers.prototype.submit_tag = function(name, html_options) { html_options = html_options || {}; //html_options.name = html_options.id || 'commit'; html_options.type = html_options.type || 'submit'; html_options.value = name || 'Submit'; return this.single_tag_for('input', html_options); } EJS.Helpers.prototype.tag = function(tag, html_options, end) { if(!end) var end = '>' var txt = ' ' for(var attr in html_options) { if(html_options[attr] != null) var value = html_options[attr].toString(); else var value='' if(attr == "Class") // special case because "class" is a reserved word in IE attr = "class"; if( value.indexOf("'") != -1 ) txt += attr+'=\"'+value+'\" ' else txt += attr+"='"+value+"' " } return '<'+tag+txt+end; } EJS.Helpers.prototype.tag_end = function(tag) { return ''; } EJS.Helpers.prototype.text_area_tag = function(name, value, html_options) { html_options = html_options || {}; html_options.id = html_options.id || name; html_options.name = html_options.name || name; value = value || '' if(html_options.size) { html_options.cols = html_options.size.split('x')[0] html_options.rows = html_options.size.split('x')[1]; delete html_options.size } html_options.cols = html_options.cols || 50; html_options.rows = html_options.rows || 4; return this.start_tag_for('textarea', html_options)+value+this.tag_end('textarea') } EJS.Helpers.prototype.text_tag = EJS.Helpers.prototype.text_area_tag EJS.Helpers.prototype.text_field_tag = function(name, value, html_options) { return this.input_field_tag(name, value, 'text', html_options); } EJS.Helpers.prototype.url_for = function(url) { return 'window.location="'+url+'";' } EJS.Helpers.prototype.img_tag = function(image_location, alt, options){ options = options || {}; options.src = image_location options.alt = alt return this.single_tag_for('img', options) }