Scott,
Its really very good addition on trunk. Thanks for putting it in. I didn't like the Tigra Calendar. -- Ashish On Thu, Jun 5, 2008 at 4:45 AM, <[hidden email]> wrote: > Author: lektran > Date: Thu Jun 5 01:45:10 2008 > New Revision: 663501 > > URL: http://svn.apache.org/viewvc?rev=663501&view=rev > Log: > Replaced the Tigra calendar with Calendar Date Select ( > http://code.google.com/p/calendardateselect/) - OFBIZ-1808 > > Added: > ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > (with props) > Removed: > ofbiz/trunk/framework/images/webapp/images/calendar.html > ofbiz/trunk/framework/images/webapp/images/calendar1.js > Modified: > ofbiz/trunk/LICENSE > ofbiz/trunk/NOTICE > ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl > ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml > ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl > ofbiz/trunk/framework/common/widget/CommonScreens.xml > ofbiz/trunk/framework/images/webapp/images/fieldlookup.js > ofbiz/trunk/framework/images/webapp/images/maincss.css > ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl > ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml > > Modified: ofbiz/trunk/LICENSE > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/LICENSE (original) > +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 > @@ -1184,6 +1184,7 @@ > ofbiz/trunk/framework/base/lib/icu4j_3_6.jar > ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar > ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js > +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > ========================================================================= > The MIT License > > @@ -2205,24 +2206,6 @@ > of California, with venue lying in Santa Clara County, California. > > ========================================================================= > -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: > -ofbiz/trunk/framework/images/webapp/images/calendar.html > -ofbiz/trunk/framework/images/webapp/images/calendar1.js > -Tigra Calendar is licensed as follows: > -========================================================================= > -Title: Tigra Calendar > -URL: http://www.softcomplex.com/products/tigra_calendar/ > -Version <http://www.softcomplex.com/products/tigra_calendar/-Version>: > 3.2 > -Date: 10/14/2002 (mm/dd/yyyy) > -Feedback: [hidden email] (specify product title in the subject) > -Note: Permission given to use this script in ANY kind of applications if > - header lines are left unchanged. > -Note: Script consists of two files: calendar?.js and calendar.html > -About us: Our company provides offshore IT consulting services. > - Contact us at [hidden email] if you have any programming task > you > - want to be handled by professionals. Our typical hourly rate is $20. > - > -========================================================================= > Apache OFBiz includes the XML Schema files from the Open Applications > Group, Inc > NOTE: these files and the license are for an older version of the OAGIS > specification, namely version 7.2.1. > > Modified: ofbiz/trunk/NOTICE > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/NOTICE (original) > +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 > @@ -255,16 +255,6 @@ > framework/images/webapp/images/pngbehavior.htc > > ========================================================================= > -== Tigra Calendar Notice == > -========================================================================= > - > -This product includes files developed by > -Softcomplex (www.softcomplex.com): > - > -framework\images\webapp\images\calendar.html > -framework\images\webapp\images\calendar1.js > - > -========================================================================= > == JSON-LIB Notice == > ========================================================================= > > > Modified: ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl > (original) > +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu > Jun 5 01:45:10 2008 > @@ -21,10 +21,10 @@ > <head> > <title>Automation Groups - Main</title> > <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> > - <script language='javascript' > src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' > type='text/javascript'></script> > - <script language='javascript' > src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' > type='text/javascript'></script> > - <script language='javascript' > src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' > type='text/javascript'></script> > + <script language="javascript" > src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" > type="text/javascript"></script> > <script language="javascript" > src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" > type="text/javascript"></script> > + <script language="javascript" > src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" > type="text/javascript"></script> > + <script language="javascript" > src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" > type="text/javascript"></script> > <link rel='stylesheet' > href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' > type='text/css'> > <link rel='stylesheet' > href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' > type='text/css'> > <link rel='stylesheet' > href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' > type='text/css'> > > Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) > +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 > 01:45:10 2008 > @@ -41,7 +41,7 @@ > <!-- NOTE: this should be included on each screen that uses > it to avoid including it in all screens: --> > <set field="layoutSettings.javaScripts[]" > value="/images/fieldlookup.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/selectall.js" global="true"/> > - <set field="layoutSettings.javaScripts[]" > value="/images/calendar1.js" global="true"/> > + <set field="layoutSettings.javaScripts[]" > value="/images/calendar_date_select.js" global="true"/> > <set field="layoutSettings.javaScripts[+0]" > value="/images/prototypejs/validation.js" global="true"/> > <set field="layoutSettings.javaScripts[+0]" > value="/images/prototypejs/prototype.js" global="true"/> > > > Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) > +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 > 01:45:10 2008 > @@ -22,9 +22,10 @@ > <head> > <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> > <title>${title}</title> > - <script language="javascript" > src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" > type="text/javascript"></script> > + <script language="javascript" > src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" > type="text/javascript"></script> > <script language="javascript" > src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" > type="text/javascript"></script> > <script language="javascript" > src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" > type="text/javascript"></script> > + <script language="javascript" > src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" > type="text/javascript"></script> > <link rel="stylesheet" > href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" > type="text/css"/> > > <script language="JavaScript" type="text/javascript"> > > Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) > +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 > 01:45:10 2008 > @@ -118,10 +118,10 @@ > <set field="layoutSettings.rtlStyleSheets[+0]" > value="/images/mainrtl.css" global="true"/> > <!-- The default (global) java scripts --> > <!-- NOTE: this should be included on each screen that uses > it to avoid including it in all screens: <set > field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" > global="true"/> --> > - <set field="layoutSettings.javaScripts[]" > value="/images/calendar1.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/selectall.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/fieldlookup.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/prototypejs/prototype.js" global="true"/> > + <set field="layoutSettings.javaScripts[]" > value="/images/calendar_date_select.js" global="true"/> > <!-- The default (global) shortcut icon --> > <set field="layoutSettings.shortcutIcon" > value="/images/ofbiz.ico" global="true"/> > <!-- The default (global) logo --> > @@ -227,10 +227,10 @@ > <set field="layoutSettings.styleSheets[+0]" > value="/images/maincss.css" global="true"/> > <set field="layoutSettings.rtlStyleSheets[+0]" > value="/images/mainrtl.css" global="true"/> > <!-- The default (global) java scripts --> > - <set field="layoutSettings.javaScripts[]" > value="/images/calendar1.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/selectall.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/fieldlookup.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/prototypejs/prototype.js" global="true"/> > + <set field="layoutSettings.javaScripts[]" > value="/images/calendar_date_select.js" global="true"/> > <!-- The default (global) shortcut icon --> > <set field="layoutSettings.shortcutIcon" > value="/images/ofbiz.ico" global="true"/> > <!-- The settings below are used for xsl-fo screens --> > > Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto > > ============================================================================== > --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > (added) > +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu > Jun 5 01:45:10 2008 > @@ -0,0 +1,480 @@ > +// CalendarDateSelect version 1.10.2 - a prototype based date picker > +// Questions, comments, bugs? - email the Author - Tim Harper > <"[hidden email]".gsub("see", "c")> > +if (typeof Prototype == 'undefined') alert("CalendarDateSelect Error: > Prototype could not be found. Please make sure that your application's > layout includes prototype.js (.g. <%= javascript_include_tag :defaults %>) > *before* it includes calendar_date_select.js (.g. <%= > calendar_date_select_includes %>)."); > +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If > using earlier version of prototype, please use calendar_date_select version > 1.8.3"); > + > +Element.addMethods({ > + purgeChildren: function(element) { > $A(element.childNodes).each(function(e){$(e).remove();}); }, > + build: function(element, type, options, style) { > + var newElement = Element.build(type, options, style); > + element.appendChild(newElement); > + return newElement; > + } > +}); > + > +Element.build = function(type, options, style) > +{ > + var e = $(document.createElement(type)); > + $H(options).each(function(pair) { eval("e." + pair.key + " = pair.value" > ); }); > + if (style) > + $H(style).each(function(pair) { eval("e.style." + pair.key + " = > pair.value" ); }); > + return e; > +}; > +nil = null; > + > +Date.one_day = 24*60*60*1000; > +Date.weekdays = $w("S M T W T F S"); > +Date.first_day_of_week = 0; > +Date.months = $w("January February March April May June July August > September October November December" ); > +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if (hour > < 10) padded2 = "0" + padded2; return padded2; } > +Date.prototype.getPaddedMinutes = function() { return > Date.padded2(this.getMinutes()); } > +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); > return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } > +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? "AM" > : "PM"; } > +Date.prototype.stripTime = function() { return new > Date(this.getFullYear(), this.getMonth(), this.getDate());}; > +Date.prototype.daysDistance = function(compare_date) { return > Math.round((compare_date - this) / Date.one_day); }; > +Date.prototype.toFormattedString = function(include_time){ > + var hour, str; > + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + > this.getFullYear(); > + > + if (include_time) { hour = this.getHours(); str += " " + > this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } > + return str; > +} > +Date.parseFormattedString = function(string) { return new Date(string);} > +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} > +window.f_height = function() { return( [window.innerHeight ? > window.innerHeight : null, document.documentElement ? > document.documentElement.clientHeight : null, document.body ? > document.body.clientHeight : null].select(function(x){return > x>0}).first()||0); } > +window.f_scrollTop = function() { return ([window.pageYOffset ? > window.pageYOffset : null, document.documentElement ? > document.documentElement.scrollTop : null, document.body ? > document.body.scrollTop : null].select(function(x){return x>0}).first()||0 > ); } > + > +_translations = { > + "OK": "OK", > + "Now": "Now", > + "Today": "Today" > +} > +SelectBox = Class.create(); > +SelectBox.prototype = { > + initialize: function(parent_element, values, html_options, > style_options) { > + this.element = $(parent_element).build("select", html_options, > style_options); > + this.populate(values); > + }, > + populate: function(values) { > + this.element.purgeChildren(); > + var that = this; $A(values).each(function(pair) { if > (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", > { value: pair[1], innerHTML: pair[0]}) }); > + }, > + setValue: function(value) { > + var e = this.element; > + var matched = false; > + $R(0, e.options.length - 1 ).each(function(i) { > if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = > true;}; } ); > + return matched; > + }, > + getValue: function() { return $F(this.element)} > +} > +CalendarDateSelect = Class.create(); > +CalendarDateSelect.prototype = { > + initialize: function(target_element, options) { > + this.target_element = $(target_element); // make sure it's an element, > not a string > + if (!this.target_element) { alert("Target element " + target_element + > " not found!"); return false;} > + if (this.target_element.tagName != "INPUT") this.target_element = > this.target_element.down("INPUT") > + > + this.target_element.calendar_date_select = this; > + this.last_click_at = 0; > + // initialize the date control > + this.options = $H({ > + embedded: false, > + popup: nil, > + time: false, > + buttons: true, > + year_range: 10, > + close_on_click: nil, > + minute_interval: 5, > + popup_by: this.target_element, > + month_year: "dropdowns", > + onchange: this.target_element.onchange, > + valid_date_check: nil > + }).merge(options || {}); > + this.use_time = this.options.get("time"); > + this.parseDate(); > + this.callback("before_show") > + this.initCalendarDiv(); > + if(!this.options.get("embedded")) { > + this.positionCalendarDiv() > + // set the click handler to check if a user has clicked away from > the document > + Event.observe(document, "mousedown", this.closeIfClickedOut_handler > = this.closeIfClickedOut.bindAsEventListener(this)); > + Event.observe(document, "keypress", this.keyPress_handler = > this.keyPress.bindAsEventListener(this)); > + } > + this.callback("after_show") > + }, > + positionCalendarDiv: function() { > + var above = false; > + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], > c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = > c_dim.height, c_width = c_dim.width; > + var w_top = window.f_scrollTop(), w_height = window.f_height(); > + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top > = e_dim[1], e_left = e_dim[0], e_height = > $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + > e_height; > + > + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( e_bottom - > c_height > w_top )) above = true; > + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - > c_height ) : ( e_top + e_height )).toString() + "px"; > + > + this.calendar_div.style.left = left_px; this.calendar_div.style.top = > top_px; > + > + this.calendar_div.setStyle({visibility:""}); > + > + // draw an iframe behind the calendar -- ugly hack to make IE 6 happy > + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = > $(document.body).build("iframe", {src: "javascript:false", className: > "ie6_blocker"}, { left: left_px, top: top_px, height: > c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) > + }, > + initCalendarDiv: function() { > + if (this.options.get("embedded")) { > + var parent = this.target_element.parentNode; > + var style = {} > + } else { > + var parent = document.body > + var style = { position:"absolute", visibility: "hidden", left:0, > top:0 } > + } > + this.calendar_div = $(parent).build('div', {className: > "calendar_date_select"}, style); > + > + var that = this; > + // create the divs > + $w("top header body buttons footer bottom").each(function(name) { > + eval("var " + name + "_div = that." + name + "_div = > that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: > 'left'} ); "); > + }); > + > + this.initHeaderDiv(); > + this.initButtonsDiv(); > + this.initCalendarGrid(); > + this.updateFooter(" "); > + > + this.refresh(); > + this.setUseTime(this.use_time); > + }, > + initHeaderDiv: function() { > + var header_div = this.header_div; > + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", > onclick:function () { this.close(); return false; > }.bindAsEventListener(this), className: "close" }); > + this.next_month_button = header_div.build("a", { innerHTML: ">", > href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); > return false; }.bindAsEventListener(this), className: "next" }); > + this.prev_month_button = header_div.build("a", { innerHTML: "<", > href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); > return false; }.bindAsEventListener(this), className: "prev" }); > + > + if (this.options.get("month_year")=="dropdowns") { > + this.month_select = new SelectBox(header_div, > $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", > onchange: function () { this.navMonth(this.month_select.getValue()) > }.bindAsEventListener(this)}); > + this.year_select = new SelectBox(header_div, [], {className: "year", > onchange: function () { this.navYear(this.year_select.getValue()) > }.bindAsEventListener(this)}); > + this.populateYearRange(); > + } else { > + this.month_year_label = header_div.build("span") > + } > + }, > + initCalendarGrid: function() { > + var body_div = this.body_div; > + this.calendar_day_grid = []; > + var days_table = body_div.build("table", { cellPadding: "0px", > cellSpacing: "0px", width: "100%" }) > + // make the weekdays! > + var weekdays_row = days_table.build("thead").build("tr"); > + Date.weekdays.each( function(weekday) { > + weekdays_row.build("th", {innerHTML: weekday}); > + }); > + > + var days_tbody = days_table.build("tbody") > + // Make the days! > + var row_number = 0, weekday; > + for(var cell_index = 0; cell_index<42; cell_index++) > + { > + weekday = (cell_index+Date.first_day_of_week ) % 7; > + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", > {className: 'row_'+row_number++}); > + (this.calendar_day_grid[cell_index] = days_row.build("td", { > + calendar_date_select: this, > + onmouseover: function () { > this.calendar_date_select.dayHover(this); }, > + onmouseout: function () { > this.calendar_date_select.dayHoverOut(this) }, > + onclick: function() { > this.calendar_date_select.updateSelectedDate(this, true); }, > + className: (weekday==0) || (weekday==6) ? " weekend" : "" > //clear the class > + }, > + { cursor: "pointer" } > + )).build("div"); > + this.calendar_day_grid[cell_index]; > + } > + }, > + initButtonsDiv: function() > + { > + var buttons_div = this.buttons_div; > + if (this.options.get("time")) > + { > + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", > ""]] : []); > + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); > + > + var t = new Date(); > + this.hour_select = new SelectBox(buttons_div, > + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return > $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), > + { > + calendar_date_select: this, > + onchange: function() { > this.calendar_date_select.updateSelectedDate( { hour: this.value });}, > + className: "hour" > + } > + ); > + buttons_div.build("span", {innerHTML:":", className: "seperator"}); > + var that = this; > + this.minute_select = new SelectBox(buttons_div, > + blank_time.concat($R(0,59).select(function(x){return (x % > that.options.get('minute_interval')==0)}).map(function(x){ return $A([ > Date.padded2(x), x]); } ) ), > + { > + calendar_date_select: this, > + onchange: function() { > this.calendar_date_select.updateSelectedDate( {minute: this.value }) }, > + className: "minute" > + } > + ); > + > + } else if (! this.options.get("buttons")) buttons_div.remove(); > + > + if (this.options.get("buttons")) { > + buttons_div.build("span", {innerHTML: " "}); > + if (this.options.get("time")=="mixed" || !this.options.get("time")) > b = buttons_div.build("a", { > + innerHTML: _translations["Today"], > + href: "#", > + onclick: function() {this.today(false); return > false;}.bindAsEventListener(this) > + }); > + > + if (this.options.get("time")=="mixed") buttons_div.build("span", > {innerHTML: " | ", className:"button_seperator"}) > + > + if (this.options.get("time")) b = buttons_div.build("a", { > + innerHTML: _translations["Now"], > + href: "#", > + onclick: function() {this.today(true); return > false}.bindAsEventListener(this) > + }); > + > + if (!this.options.get("embedded")) > + { > + buttons_div.build("span", {innerHTML: " "}); > + buttons_div.build("a", { innerHTML: _translations["OK"], href: > "#", onclick: function() {this.close(); return > false;}.bindAsEventListener(this) }); > + } > + } > + }, > + refresh: function () > + { > + this.refreshMonthYear(); > + this.refreshCalendarGrid(); > + > + this.setSelectedClass(); > + this.updateFooter(); > + }, > + refreshCalendarGrid: function () { > + this.beginning_date = new Date(this.date).stripTime(); > + this.beginning_date.setDate(1); > + this.beginning_date.setHours(12); // Prevent daylight savings time > boundaries from showing a duplicate day > + var pre_days = this.beginning_date.getDay() // draw some days before > the fact > + if (pre_days < 3) pre_days += 7; > + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); > + > + var iterator = new Date(this.beginning_date); > + > + var today = new Date().stripTime(); > + var this_month = this.date.getMonth(); > + vdc = this.options.get("valid_date_check"); > + for (var cell_index = 0;cell_index<42; cell_index++) > + { > + day = iterator.getDate(); month = iterator.getMonth(); > + cell = this.calendar_day_grid[cell_index]; > + Element.remove(cell.childNodes[0]); div = cell.build("div", > {innerHTML:day}); > + if (month!=this_month) div.className = "other"; > + cell.day = day; cell.month = month; cell.year = > iterator.getFullYear(); > + if (vdc) { if (vdc(iterator.stripTime())) > cell.removeClassName("disabled"); else cell.addClassName("disabled") }; > + iterator.setDate( day + 1); > + } > + > + if (this.today_cell) this.today_cell.removeClassName("today"); > + > + if ( $R( 0, 41 ).include(days_until = > this.beginning_date.stripTime().daysDistance(today)) ) { > + this.today_cell = this.calendar_day_grid[days_until]; > + this.today_cell.addClassName("today"); > + } > + }, > + refreshMonthYear: function() { > + var m = this.date.getMonth(); > + var y = this.date.getFullYear(); > + // set the month > + if (this.options.get("month_year") == "dropdowns") > + { > + this.month_select.setValue(m, false); > + > + var e = this.year_select.element; > + if (this.flexibleYearRange() && (!(this.year_select.setValue(y, > false)) || e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 > )) this.populateYearRange(); > + > + this.year_select.setValue(y); > + > + } else { > + this.month_year_label.update( Date.months[m] + " " + y.toString() > ); > + } > + }, > + populateYearRange: function() { > + this.year_select.populate(this.yearRange().toArray()); > + }, > + yearRange: function() { > + if (!this.flexibleYearRange()) > + return $R(this.options.get("year_range")[0], > this.options.get("year_range")[1]); > + > + var y = this.date.getFullYear(); > + return $R(y - this.options.get("year_range"), y + > this.options.get("year_range")); > + }, > + flexibleYearRange: function() { return > (typeof(this.options.get("year_range")) == "number"); }, > + validYear: function(year) { if (this.flexibleYearRange()) { return > true;} else { return this.yearRange().include(year);} }, > + dayHover: function(element) { > + var hover_date = new Date(this.selected_date); > + hover_date.setYear(element.year); hover_date.setMonth(element.month); > hover_date.setDate(element.day); > + this.updateFooter(hover_date.toFormattedString(this.use_time)); > + }, > + dayHoverOut: function(element) { this.updateFooter(); }, > + clearSelectedClass: function() {if (this.selected_cell) > this.selected_cell.removeClassName("selected");}, > + setSelectedClass: function() { > + if (!this.selection_made) return; > + this.clearSelectedClass() > + if ($R(0,42).include( days_until = > this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) > )) { > + this.selected_cell = this.calendar_day_grid[days_until]; > + this.selected_cell.addClassName("selected"); > + } > + }, > + reparse: function() { this.parseDate(); this.refresh(); }, > + dateString: function() { > + return (this.selection_made) ? > this.selected_date.toFormattedString(this.use_time) : " "; > + }, > + parseDate: function() > + { > + var value = $F(this.target_element).strip() > + this.selection_made = (value != ""); > + this.date = value=="" ? NaN : > Date.parseFormattedString(this.options.get("date") || value); > + if (isNaN(this.date)) this.date = new Date(); > + if (!this.validYear(this.date.getFullYear())) this.date.setYear( > (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start > : this.yearRange().end); > + this.selected_date = new Date(this.date); > + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; > + this.date.setDate(1); > + }, > + updateFooter:function(text) { if (!text) text = this.dateString(); > this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: > text }); }, > + updateSelectedDate:function(partsOrElement, via_click) { > + var parts = $H(partsOrElement); > + if ((this.target_element.disabled || this.target_element.readOnly) && > this.options.get("popup") != "force") return false; > + if (parts.get("day")) { > + var t_selected_date = this.selected_date, vdc = > this.options.get("valid_date_check"); > + for (var x = 0; x<=3; x++) > t_selected_date.setDate(parts.get("day")); > + t_selected_date.setYear(parts.get("year")); > + t_selected_date.setMonth(parts.get("month")); > + > + if (vdc && ! vdc(t_selected_date.stripTime())) { return false; } > + this.selected_date = t_selected_date; > + this.selection_made = true; > + } > + > + if (!isNaN(parts.get("hour"))) > this.selected_date.setHours(parts.get("hour")); > + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( > Math.floor_to_interval(parts.get("minute"), > this.options.get("minute_interval")) ); > + if (parts.get("hour") === "" || parts.get("minute") === "") > + this.setUseTime(false); > + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) > + this.setUseTime(true); > + > + this.updateFooter(); > + this.setSelectedClass(); > + > + if (this.selection_made) this.updateValue(); > + if (this.closeOnClick()) { this.close(); } > + if (via_click && !this.options.get("embedded")) { > + if ((new Date() - this.last_click_at) < 333) this.close(); > + this.last_click_at = new Date(); > + } > + }, > + closeOnClick: function() { > + if (this.options.get("embedded")) return false; > + if (this.options.get("close_on_click")===nil ) > + return (this.options.get("time")) ? false : true > + else > + return (this.options.get("close_on_click")) > + }, > + navMonth: function(month) { (target_date = new > Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, > + navYear: function(year) { (target_date = new > Date(this.date)).setYear(year); return (this.navTo(target_date)); }, > + navTo: function(date) { > + if (!this.validYear(date.getFullYear())) return false; > + this.date = date; > + this.date.setDate(1); > + this.refresh(); > + this.callback("after_navigate", this.date); > + return true; > + }, > + setUseTime: function(turn_on) { > + this.use_time = this.options.get("time") && > (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to > true if time==true && time!="mixed" > + if (this.use_time && this.selected_date) { // only set hour/minute if > a date is already selected > + var minute = Math.floor_to_interval(this.selected_date.getMinutes(), > this.options.get("minute_interval")); > + var hour = this.selected_date.getHours(); > + > + this.hour_select.setValue(hour); > + this.minute_select.setValue(minute) > + } else if (this.options.get("time")=="mixed") { > + this.hour_select.setValue(""); this.minute_select.setValue(""); > + } > + }, > + updateValue: function() { > + var last_value = this.target_element.value; > + this.target_element.value = this.dateString(); > + if (last_value!=this.target_element.value) this.callback("onchange"); > + }, > + today: function(now) { > + var d = new Date(); this.date = new Date(); > + var o = $H({ day: d.getDate(), month: d.getMonth(), year: > d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); > + if ( ! now ) o = o.merge({hour: "", minute:""}); > + this.updateSelectedDate(o, true); > + this.refresh(); > + }, > + close: function() { > + if (this.closed) return false; > + this.callback("before_close"); > + this.target_element.calendar_date_select = nil; > + Event.stopObserving(document, "mousedown", > this.closeIfClickedOut_handler); > + Event.stopObserving(document, "keypress", this.keyPress_handler); > + this.calendar_div.remove(); this.closed = true; > + if (this.iframe) this.iframe.remove(); > + if (this.target_element.type!="hidden") this.target_element.focus(); > + this.callback("after_close"); > + }, > + closeIfClickedOut: function(e) { > + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) > this.close(); > + }, > + keyPress: function(e) { > + if (e.keyCode==Event.KEY_ESC) this.close(); > + }, > + callback: function(name, param) { if (this.options.get(name)) { > this.options.get(name).bind(this.target_element)(param); } } > + > + > +} > + > +// OFBiz addition: modified format_iso_date.js, included here for > convenience > +Date.prototype.toFormattedString = function(include_time) { > + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + 1) > + "-" +Date.padded2(this.getDate()); > + if (include_time) { > + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + ":" > + Date.padded2(this.getSeconds()); > + if (this.getMilliseconds > 0) { > + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + > (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); > + } else { > + str += ".0"; > + } > + } > + return str; > +}; > + > +Date.parseFormattedString = function (string) { > + var arr_datetime = string.split(' '); > + var str_date = arr_datetime[0]; > + var str_time = arr_datetime[1]; > + > + var arr_date = str_date.split('-'); > + var dt_date = new Date(); > + dt_date.setDate(1); > + dt_date.setMonth(arr_date[1]-1); > + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + > (arr_date[0] < 40 ? 2000 : 1900); > + dt_date.setFullYear(arr_date[0]); > + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); > + dt_date.setDate(arr_date[2]); > + > + var arr_time = String(str_time ? str_time : '').split(':'); > + dt_date.setHours(arr_time[0]); > + dt_date.setMinutes(arr_time[1]); > + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); > + dt_date.setSeconds(arr_sec[0]); > + if (!arr_sec[1]) dt_date.setMilliseconds(0); > + dt_date.setMilliseconds(arr_sec[1]); > + > + return dt_date; > +}; > + > +// OFBiz addition: functions to call the calendar > +function call_cal(target, datetime) { > + new CalendarDateSelect(target, {time:true, year_range:10} ); > +} > + > +function call_cal_notime(target, datetime) { > + new CalendarDateSelect(target, {year_range:10} ); > +} > \ No newline at end of file > > Propchange: > ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: > ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > > ------------------------------------------------------------------------------ > svn:keywords = "Date Rev Author URL Id" > > Propchange: > ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js > > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) > +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 > 01:45:10 2008 > @@ -18,9 +18,25 @@ > */ > > // ================= FIELD LOOKUP METHODS ============================ > +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && > !document.getElementById)? true : false; > +var IE4 = (document.all && !document.getElementById)? true : false; > +var IE5 = (document.getElementById && document.all)? true : false; > +var NS6 = (document.getElementById && > navigator.appName.indexOf("Netscape")>=0 )? true: false; > +var mx, my; > + > +function moveobj(evt) { > + if (NS4 || NS6) { > + mx=evt.screenX; > + my=evt.screenY; > + } else if (IE5 || IE4) { > + mx=event.screenX; > + my=event.screenY; > + } > +} > > var target = null; > var target2 = null; > +var lookups = []; > > function call_fieldlookup(target, viewName, formName,viewWidth,viewheight) > { > var fieldLookup = new fieldLookup1(target); > > Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) > +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 > 01:45:10 2008 > @@ -1722,41 +1722,138 @@ > > /* ===== Table decorator - Calendar ===== */ > > -.calendar { > -border-right: 0.1em solid #cccccc; > +.calendar_date_select { > + color:white; > + border:#777 1px solid; > + display:block; > + width:195px; > + z-index: 1000; > +} > +/* this is a fun ie6 hack to get drop downs to stay behind the popup > window. This should always be just underneath .calendar_date_select */ > +iframe.ie6_blocker { > + position: absolute; > + z-index: 999; > } > > -.calendar tr td { > -border-bottom: 0.1em solid #cccccc; > -border-left: 0.1em solid #cccccc; > -vertical-align: top; > -padding: 0.5em; > +.calendar_date_select thead th { > + font-weight:bold; > + background-color: #000; > + border-top:1px solid #777; > + border-bottom:2px solid #333; > + color: white !important; > } > > -.calendar .header-row td { > -background-color: #69a9d9; > -border-bottom: 0.1em solid #cccccc; > -border-left: 0.1em solid #cccccc; > -color: #ffffff; > -height: auto; > -text-align: center; > +.calendar_date_select .cds_buttons { > + text-align:center; > + padding:5px 0px; > + background-color: #555; > } > > -.calendar tr td .add-new { > -float: right; > +.calendar_date_select .cds_footer { > + background-color: black; > + padding:3px; > + font-size:12px; > + text-align:center; > } > > -.calendar tr td .h1 { > -color: #000099; > -float: left; > +.calendar_date_select table { > + margin: 0px; > + padding: 0px; > } > > -.calendar .current-period { > -background-color: #ffffcc; > + > +.calendar_date_select .cds_header { > + background-color: #ccc; > + border-bottom: 2px solid #aaa; > + text-align:center; > } > > -.calendar .active-period { > -background-color: #eeeeee; > +.calendar_date_select .cds_header span { > + font-size:15px; > + color: black; > + font-weight: bold; > +} > + > +.calendar_date_select select { font-size:11px;} > + > +.calendar_date_select .cds_header a:hover { > + color: white; > +} > +.calendar_date_select .cds_header a { > + width:22px; > + height:20px; > + text-decoration: none; > + font-size:14px; > + color:black !important; > +} > + > +.calendar_date_select .cds_header a.prev { > + float:left; > +} > +.calendar_date_select .cds_header a.next { > + float:right; > +} > +.calendar_date_select .cds_header a.close { > + float:right; > + display:none; > +} > + > +.calendar_date_select .cds_header select.month { > + width:90px; > +} > + > +.calendar_date_select .cds_header select.year { > + width:61px; > +} > + > +.calendar_date_select .cds_buttons a { > + color: white; > + font-size: 9px; > +} > +.calendar_date_select td { > + font-size:12px; > + width: 24px; > + height: 21px; > + text-align:center; > + vertical-align: middle; > + background-color: #666666; > +} > +.calendar_date_select td.weekend { > + background-color: #606060; > +} > + > +.calendar_date_select td div { > + color: #fff; > +} > +.calendar_date_select td div.other { > + color: #888; > +} > +.calendar_date_select td.selected div { > + color:black; > +} > + > +.calendar_date_select tbody td { > + border-bottom: 1px solid #555; > +} > +.calendar_date_select td.selected { > + background-color:white; > +} > + > +.calendar_date_select td:hover { > + background-color:#ccc; > +} > + > +.calendar_date_select td.today { > + border: 1px dashed #999; > +} > + > +.calendar_date_select td.disabled div { > + color: #454545; > +} > + > + > +.fieldWithErrors .calendar_date_select { > + border: 2px solid red; > } > > /* ======================= */ > > Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl (original) > +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun 5 > 01:45:10 2008 > @@ -19,9 +19,10 @@ > <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> > <title>${(decoratedContent.subcontent.title.render)?default("CMS Site > Generic Title (Set subcontent 'title' on your content!)")}</title> > <link rel="shortcut icon" href="/images/ofbiz.ico" /> > - <script language="javascript" src="/images/calendar1.js" > type="text/javascript"></script> > - <script language="javascript" src="/images/selectall.js" > type="text/javascript"></script> > + <script language="javascript" src="/images/prototypejs/prototype.js" > type="text/javascript"></script> > <script language="javascript" src="/images/fieldlookup.js" > type="text/javascript"></script> > + <script language="javascript" src="/images/selectall.js" > type="text/javascript"></script> > + <script language="javascript" src="/images/calendar_date_select.js" > type="text/javascript"></script> > > <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> > <link rel="stylesheet" href="/ecommerce/images/blog.css" > type="text/css"/> > > Modified: > ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff > > ============================================================================== > --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml > (original) > +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu > Jun 5 01:45:10 2008 > @@ -34,9 +34,10 @@ > of stylesheets to the first and second position --> > <set field="layoutSettings.styleSheets[+0]" > value="/images/maincss.css" global="true"/> > <!-- The default (global) java scripts --> > - <set field="layoutSettings.javaScripts[]" > value="/images/calendar1.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/selectall.js" global="true"/> > <set field="layoutSettings.javaScripts[]" > value="/images/fieldlookup.js" global="true"/> > + <set field="layoutSettings.javaScripts[]" > value="/images/prototypejs/prototype.js" global="true"/> > + <set field="layoutSettings.javaScripts[]" > value="/images/calendar_date_select.js" global="true"/> > > <set field="layoutSettings.companyName" > from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> > <set field="layoutSettings.companySubtitle" > from-field="uiLabelMap.GoogleBaseApplication" global="true"/> > > > |
Administrator
|
Yes really great. Maybe we could adapt the look (colors) to OFBiz ? If nobody disagree, I will give it a try.
Jacques From: "Ashish Vijaywargiya" <[hidden email]> > Scott, > > Its really very good addition on trunk. > Thanks for putting it in. > I didn't like the Tigra Calendar. > > -- > Ashish > > On Thu, Jun 5, 2008 at 4:45 AM, <[hidden email]> wrote: > >> Author: lektran >> Date: Thu Jun 5 01:45:10 2008 >> New Revision: 663501 >> >> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >> Log: >> Replaced the Tigra calendar with Calendar Date Select ( >> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >> >> Added: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (with props) >> Removed: >> ofbiz/trunk/framework/images/webapp/images/calendar.html >> ofbiz/trunk/framework/images/webapp/images/calendar1.js >> Modified: >> ofbiz/trunk/LICENSE >> ofbiz/trunk/NOTICE >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> ofbiz/trunk/framework/common/widget/CommonScreens.xml >> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> ofbiz/trunk/framework/images/webapp/images/maincss.css >> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> >> Modified: ofbiz/trunk/LICENSE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/LICENSE (original) >> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >> @@ -1184,6 +1184,7 @@ >> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> ========================================================================= >> The MIT License >> >> @@ -2205,24 +2206,6 @@ >> of California, with venue lying in Santa Clara County, California. >> >> ========================================================================= >> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >> -ofbiz/trunk/framework/images/webapp/images/calendar.html >> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >> -Tigra Calendar is licensed as follows: >> -========================================================================= >> -Title: Tigra Calendar >> -URL: http://www.softcomplex.com/products/tigra_calendar/ >> -Version <http://www.softcomplex.com/products/tigra_calendar/-Version>: >> 3.2 >> -Date: 10/14/2002 (mm/dd/yyyy) >> -Feedback: [hidden email] (specify product title in the subject) >> -Note: Permission given to use this script in ANY kind of applications if >> - header lines are left unchanged. >> -Note: Script consists of two files: calendar?.js and calendar.html >> -About us: Our company provides offshore IT consulting services. >> - Contact us at [hidden email] if you have any programming task >> you >> - want to be handled by professionals. Our typical hourly rate is $20. >> - >> -========================================================================= >> Apache OFBiz includes the XML Schema files from the Open Applications >> Group, Inc >> NOTE: these files and the license are for an older version of the OAGIS >> specification, namely version 7.2.1. >> >> Modified: ofbiz/trunk/NOTICE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/NOTICE (original) >> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >> @@ -255,16 +255,6 @@ >> framework/images/webapp/images/pngbehavior.htc >> >> ========================================================================= >> -== Tigra Calendar Notice == >> -========================================================================= >> - >> -This product includes files developed by >> -Softcomplex (www.softcomplex.com): >> - >> -framework\images\webapp\images\calendar.html >> -framework\images\webapp\images\calendar1.js >> - >> -========================================================================= >> == JSON-LIB Notice == >> ========================================================================= >> >> >> Modified: ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> (original) >> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >> Jun 5 01:45:10 2008 >> @@ -21,10 +21,10 @@ >> <head> >> <title>Automation Groups - Main</title> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >> type='text/css'> >> >> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -41,7 +41,7 @@ >> <!-- NOTE: this should be included on each screen that uses >> it to avoid including it in all screens: --> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/validation.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/prototype.js" global="true"/> >> >> >> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >> 01:45:10 2008 >> @@ -22,9 +22,10 @@ >> <head> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${title}</title> >> - <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel="stylesheet" >> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >> type="text/css"/> >> >> <script language="JavaScript" type="text/javascript"> >> >> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -118,10 +118,10 @@ >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> <!-- NOTE: this should be included on each screen that uses >> it to avoid including it in all screens: <set >> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >> global="true"/> --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The default (global) logo --> >> @@ -227,10 +227,10 @@ >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The settings below are used for xsl-fo screens --> >> >> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (added) >> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >> Jun 5 01:45:10 2008 >> @@ -0,0 +1,480 @@ >> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >> +// Questions, comments, bugs? - email the Author - Tim Harper >> <"[hidden email]".gsub("see", "c")> >> +if (typeof Prototype == 'undefined') alert("CalendarDateSelect Error: >> Prototype could not be found. Please make sure that your application's >> layout includes prototype.js (.g. <%= javascript_include_tag :defaults %>) >> *before* it includes calendar_date_select.js (.g. <%= >> calendar_date_select_includes %>)."); >> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >> using earlier version of prototype, please use calendar_date_select version >> 1.8.3"); >> + >> +Element.addMethods({ >> + purgeChildren: function(element) { >> $A(element.childNodes).each(function(e){$(e).remove();}); }, >> + build: function(element, type, options, style) { >> + var newElement = Element.build(type, options, style); >> + element.appendChild(newElement); >> + return newElement; >> + } >> +}); >> + >> +Element.build = function(type, options, style) >> +{ >> + var e = $(document.createElement(type)); >> + $H(options).each(function(pair) { eval("e." + pair.key + " = pair.value" >> ); }); >> + if (style) >> + $H(style).each(function(pair) { eval("e.style." + pair.key + " = >> pair.value" ); }); >> + return e; >> +}; >> +nil = null; >> + >> +Date.one_day = 24*60*60*1000; >> +Date.weekdays = $w("S M T W T F S"); >> +Date.first_day_of_week = 0; >> +Date.months = $w("January February March April May June July August >> September October November December" ); >> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if (hour >> < 10) padded2 = "0" + padded2; return padded2; } >> +Date.prototype.getPaddedMinutes = function() { return >> Date.padded2(this.getMinutes()); } >> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? "AM" >> : "PM"; } >> +Date.prototype.stripTime = function() { return new >> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >> +Date.prototype.daysDistance = function(compare_date) { return >> Math.round((compare_date - this) / Date.one_day); }; >> +Date.prototype.toFormattedString = function(include_time){ >> + var hour, str; >> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >> this.getFullYear(); >> + >> + if (include_time) { hour = this.getHours(); str += " " + >> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >> + return str; >> +} >> +Date.parseFormattedString = function(string) { return new Date(string);} >> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >> +window.f_height = function() { return( [window.innerHeight ? >> window.innerHeight : null, document.documentElement ? >> document.documentElement.clientHeight : null, document.body ? >> document.body.clientHeight : null].select(function(x){return >> x>0}).first()||0); } >> +window.f_scrollTop = function() { return ([window.pageYOffset ? >> window.pageYOffset : null, document.documentElement ? >> document.documentElement.scrollTop : null, document.body ? >> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >> ); } >> + >> +_translations = { >> + "OK": "OK", >> + "Now": "Now", >> + "Today": "Today" >> +} >> +SelectBox = Class.create(); >> +SelectBox.prototype = { >> + initialize: function(parent_element, values, html_options, >> style_options) { >> + this.element = $(parent_element).build("select", html_options, >> style_options); >> + this.populate(values); >> + }, >> + populate: function(values) { >> + this.element.purgeChildren(); >> + var that = this; $A(values).each(function(pair) { if >> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >> { value: pair[1], innerHTML: pair[0]}) }); >> + }, >> + setValue: function(value) { >> + var e = this.element; >> + var matched = false; >> + $R(0, e.options.length - 1 ).each(function(i) { >> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >> true;}; } ); >> + return matched; >> + }, >> + getValue: function() { return $F(this.element)} >> +} >> +CalendarDateSelect = Class.create(); >> +CalendarDateSelect.prototype = { >> + initialize: function(target_element, options) { >> + this.target_element = $(target_element); // make sure it's an element, >> not a string >> + if (!this.target_element) { alert("Target element " + target_element + >> " not found!"); return false;} >> + if (this.target_element.tagName != "INPUT") this.target_element = >> this.target_element.down("INPUT") >> + >> + this.target_element.calendar_date_select = this; >> + this.last_click_at = 0; >> + // initialize the date control >> + this.options = $H({ >> + embedded: false, >> + popup: nil, >> + time: false, >> + buttons: true, >> + year_range: 10, >> + close_on_click: nil, >> + minute_interval: 5, >> + popup_by: this.target_element, >> + month_year: "dropdowns", >> + onchange: this.target_element.onchange, >> + valid_date_check: nil >> + }).merge(options || {}); >> + this.use_time = this.options.get("time"); >> + this.parseDate(); >> + this.callback("before_show") >> + this.initCalendarDiv(); >> + if(!this.options.get("embedded")) { >> + this.positionCalendarDiv() >> + // set the click handler to check if a user has clicked away from >> the document >> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >> = this.closeIfClickedOut.bindAsEventListener(this)); >> + Event.observe(document, "keypress", this.keyPress_handler = >> this.keyPress.bindAsEventListener(this)); >> + } >> + this.callback("after_show") >> + }, >> + positionCalendarDiv: function() { >> + var above = false; >> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >> c_dim.height, c_width = c_dim.width; >> + var w_top = window.f_scrollTop(), w_height = window.f_height(); >> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >> = e_dim[1], e_left = e_dim[0], e_height = >> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >> e_height; >> + >> + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( e_bottom - >> c_height > w_top )) above = true; >> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >> c_height ) : ( e_top + e_height )).toString() + "px"; >> + >> + this.calendar_div.style.left = left_px; this.calendar_div.style.top = >> top_px; >> + >> + this.calendar_div.setStyle({visibility:""}); >> + >> + // draw an iframe behind the calendar -- ugly hack to make IE 6 happy >> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >> $(document.body).build("iframe", {src: "javascript:false", className: >> "ie6_blocker"}, { left: left_px, top: top_px, height: >> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >> + }, >> + initCalendarDiv: function() { >> + if (this.options.get("embedded")) { >> + var parent = this.target_element.parentNode; >> + var style = {} >> + } else { >> + var parent = document.body >> + var style = { position:"absolute", visibility: "hidden", left:0, >> top:0 } >> + } >> + this.calendar_div = $(parent).build('div', {className: >> "calendar_date_select"}, style); >> + >> + var that = this; >> + // create the divs >> + $w("top header body buttons footer bottom").each(function(name) { >> + eval("var " + name + "_div = that." + name + "_div = >> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >> 'left'} ); "); >> + }); >> + >> + this.initHeaderDiv(); >> + this.initButtonsDiv(); >> + this.initCalendarGrid(); >> + this.updateFooter(" "); >> + >> + this.refresh(); >> + this.setUseTime(this.use_time); >> + }, >> + initHeaderDiv: function() { >> + var header_div = this.header_div; >> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >> onclick:function () { this.close(); return false; >> }.bindAsEventListener(this), className: "close" }); >> + this.next_month_button = header_div.build("a", { innerHTML: ">", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >> return false; }.bindAsEventListener(this), className: "next" }); >> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >> return false; }.bindAsEventListener(this), className: "prev" }); >> + >> + if (this.options.get("month_year")=="dropdowns") { >> + this.month_select = new SelectBox(header_div, >> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >> onchange: function () { this.navMonth(this.month_select.getValue()) >> }.bindAsEventListener(this)}); >> + this.year_select = new SelectBox(header_div, [], {className: "year", >> onchange: function () { this.navYear(this.year_select.getValue()) >> }.bindAsEventListener(this)}); >> + this.populateYearRange(); >> + } else { >> + this.month_year_label = header_div.build("span") >> + } >> + }, >> + initCalendarGrid: function() { >> + var body_div = this.body_div; >> + this.calendar_day_grid = []; >> + var days_table = body_div.build("table", { cellPadding: "0px", >> cellSpacing: "0px", width: "100%" }) >> + // make the weekdays! >> + var weekdays_row = days_table.build("thead").build("tr"); >> + Date.weekdays.each( function(weekday) { >> + weekdays_row.build("th", {innerHTML: weekday}); >> + }); >> + >> + var days_tbody = days_table.build("tbody") >> + // Make the days! >> + var row_number = 0, weekday; >> + for(var cell_index = 0; cell_index<42; cell_index++) >> + { >> + weekday = (cell_index+Date.first_day_of_week ) % 7; >> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >> {className: 'row_'+row_number++}); >> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >> + calendar_date_select: this, >> + onmouseover: function () { >> this.calendar_date_select.dayHover(this); }, >> + onmouseout: function () { >> this.calendar_date_select.dayHoverOut(this) }, >> + onclick: function() { >> this.calendar_date_select.updateSelectedDate(this, true); }, >> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >> //clear the class >> + }, >> + { cursor: "pointer" } >> + )).build("div"); >> + this.calendar_day_grid[cell_index]; >> + } >> + }, >> + initButtonsDiv: function() >> + { >> + var buttons_div = this.buttons_div; >> + if (this.options.get("time")) >> + { >> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >> ""]] : []); >> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >> + >> + var t = new Date(); >> + this.hour_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >> + { >> + calendar_date_select: this, >> + onchange: function() { >> this.calendar_date_select.updateSelectedDate( { hour: this.value });}, >> + className: "hour" >> + } >> + ); >> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >> + var that = this; >> + this.minute_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,59).select(function(x){return (x % >> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >> Date.padded2(x), x]); } ) ), >> + { >> + calendar_date_select: this, >> + onchange: function() { >> this.calendar_date_select.updateSelectedDate( {minute: this.value }) }, >> + className: "minute" >> + } >> + ); >> + >> + } else if (! this.options.get("buttons")) buttons_div.remove(); >> + >> + if (this.options.get("buttons")) { >> + buttons_div.build("span", {innerHTML: " "}); >> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >> b = buttons_div.build("a", { >> + innerHTML: _translations["Today"], >> + href: "#", >> + onclick: function() {this.today(false); return >> false;}.bindAsEventListener(this) >> + }); >> + >> + if (this.options.get("time")=="mixed") buttons_div.build("span", >> {innerHTML: " | ", className:"button_seperator"}) >> + >> + if (this.options.get("time")) b = buttons_div.build("a", { >> + innerHTML: _translations["Now"], >> + href: "#", >> + onclick: function() {this.today(true); return >> false}.bindAsEventListener(this) >> + }); >> + >> + if (!this.options.get("embedded")) >> + { >> + buttons_div.build("span", {innerHTML: " "}); >> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >> "#", onclick: function() {this.close(); return >> false;}.bindAsEventListener(this) }); >> + } >> + } >> + }, >> + refresh: function () >> + { >> + this.refreshMonthYear(); >> + this.refreshCalendarGrid(); >> + >> + this.setSelectedClass(); >> + this.updateFooter(); >> + }, >> + refreshCalendarGrid: function () { >> + this.beginning_date = new Date(this.date).stripTime(); >> + this.beginning_date.setDate(1); >> + this.beginning_date.setHours(12); // Prevent daylight savings time >> boundaries from showing a duplicate day >> + var pre_days = this.beginning_date.getDay() // draw some days before >> the fact >> + if (pre_days < 3) pre_days += 7; >> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >> + >> + var iterator = new Date(this.beginning_date); >> + >> + var today = new Date().stripTime(); >> + var this_month = this.date.getMonth(); >> + vdc = this.options.get("valid_date_check"); >> + for (var cell_index = 0;cell_index<42; cell_index++) >> + { >> + day = iterator.getDate(); month = iterator.getMonth(); >> + cell = this.calendar_day_grid[cell_index]; >> + Element.remove(cell.childNodes[0]); div = cell.build("div", >> {innerHTML:day}); >> + if (month!=this_month) div.className = "other"; >> + cell.day = day; cell.month = month; cell.year = >> iterator.getFullYear(); >> + if (vdc) { if (vdc(iterator.stripTime())) >> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >> + iterator.setDate( day + 1); >> + } >> + >> + if (this.today_cell) this.today_cell.removeClassName("today"); >> + >> + if ( $R( 0, 41 ).include(days_until = >> this.beginning_date.stripTime().daysDistance(today)) ) { >> + this.today_cell = this.calendar_day_grid[days_until]; >> + this.today_cell.addClassName("today"); >> + } >> + }, >> + refreshMonthYear: function() { >> + var m = this.date.getMonth(); >> + var y = this.date.getFullYear(); >> + // set the month >> + if (this.options.get("month_year") == "dropdowns") >> + { >> + this.month_select.setValue(m, false); >> + >> + var e = this.year_select.element; >> + if (this.flexibleYearRange() && (!(this.year_select.setValue(y, >> false)) || e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 >> )) this.populateYearRange(); >> + >> + this.year_select.setValue(y); >> + >> + } else { >> + this.month_year_label.update( Date.months[m] + " " + y.toString() >> ); >> + } >> + }, >> + populateYearRange: function() { >> + this.year_select.populate(this.yearRange().toArray()); >> + }, >> + yearRange: function() { >> + if (!this.flexibleYearRange()) >> + return $R(this.options.get("year_range")[0], >> this.options.get("year_range")[1]); >> + >> + var y = this.date.getFullYear(); >> + return $R(y - this.options.get("year_range"), y + >> this.options.get("year_range")); >> + }, >> + flexibleYearRange: function() { return >> (typeof(this.options.get("year_range")) == "number"); }, >> + validYear: function(year) { if (this.flexibleYearRange()) { return >> true;} else { return this.yearRange().include(year);} }, >> + dayHover: function(element) { >> + var hover_date = new Date(this.selected_date); >> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >> hover_date.setDate(element.day); >> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >> + }, >> + dayHoverOut: function(element) { this.updateFooter(); }, >> + clearSelectedClass: function() {if (this.selected_cell) >> this.selected_cell.removeClassName("selected");}, >> + setSelectedClass: function() { >> + if (!this.selection_made) return; >> + this.clearSelectedClass() >> + if ($R(0,42).include( days_until = >> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >> )) { >> + this.selected_cell = this.calendar_day_grid[days_until]; >> + this.selected_cell.addClassName("selected"); >> + } >> + }, >> + reparse: function() { this.parseDate(); this.refresh(); }, >> + dateString: function() { >> + return (this.selection_made) ? >> this.selected_date.toFormattedString(this.use_time) : " "; >> + }, >> + parseDate: function() >> + { >> + var value = $F(this.target_element).strip() >> + this.selection_made = (value != ""); >> + this.date = value=="" ? NaN : >> Date.parseFormattedString(this.options.get("date") || value); >> + if (isNaN(this.date)) this.date = new Date(); >> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >> : this.yearRange().end); >> + this.selected_date = new Date(this.date); >> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >> + this.date.setDate(1); >> + }, >> + updateFooter:function(text) { if (!text) text = this.dateString(); >> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >> text }); }, >> + updateSelectedDate:function(partsOrElement, via_click) { >> + var parts = $H(partsOrElement); >> + if ((this.target_element.disabled || this.target_element.readOnly) && >> this.options.get("popup") != "force") return false; >> + if (parts.get("day")) { >> + var t_selected_date = this.selected_date, vdc = >> this.options.get("valid_date_check"); >> + for (var x = 0; x<=3; x++) >> t_selected_date.setDate(parts.get("day")); >> + t_selected_date.setYear(parts.get("year")); >> + t_selected_date.setMonth(parts.get("month")); >> + >> + if (vdc && ! vdc(t_selected_date.stripTime())) { return false; } >> + this.selected_date = t_selected_date; >> + this.selection_made = true; >> + } >> + >> + if (!isNaN(parts.get("hour"))) >> this.selected_date.setHours(parts.get("hour")); >> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >> Math.floor_to_interval(parts.get("minute"), >> this.options.get("minute_interval")) ); >> + if (parts.get("hour") === "" || parts.get("minute") === "") >> + this.setUseTime(false); >> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >> + this.setUseTime(true); >> + >> + this.updateFooter(); >> + this.setSelectedClass(); >> + >> + if (this.selection_made) this.updateValue(); >> + if (this.closeOnClick()) { this.close(); } >> + if (via_click && !this.options.get("embedded")) { >> + if ((new Date() - this.last_click_at) < 333) this.close(); >> + this.last_click_at = new Date(); >> + } >> + }, >> + closeOnClick: function() { >> + if (this.options.get("embedded")) return false; >> + if (this.options.get("close_on_click")===nil ) >> + return (this.options.get("time")) ? false : true >> + else >> + return (this.options.get("close_on_click")) >> + }, >> + navMonth: function(month) { (target_date = new >> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >> + navYear: function(year) { (target_date = new >> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >> + navTo: function(date) { >> + if (!this.validYear(date.getFullYear())) return false; >> + this.date = date; >> + this.date.setDate(1); >> + this.refresh(); >> + this.callback("after_navigate", this.date); >> + return true; >> + }, >> + setUseTime: function(turn_on) { >> + this.use_time = this.options.get("time") && >> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >> true if time==true && time!="mixed" >> + if (this.use_time && this.selected_date) { // only set hour/minute if >> a date is already selected >> + var minute = Math.floor_to_interval(this.selected_date.getMinutes(), >> this.options.get("minute_interval")); >> + var hour = this.selected_date.getHours(); >> + >> + this.hour_select.setValue(hour); >> + this.minute_select.setValue(minute) >> + } else if (this.options.get("time")=="mixed") { >> + this.hour_select.setValue(""); this.minute_select.setValue(""); >> + } >> + }, >> + updateValue: function() { >> + var last_value = this.target_element.value; >> + this.target_element.value = this.dateString(); >> + if (last_value!=this.target_element.value) this.callback("onchange"); >> + }, >> + today: function(now) { >> + var d = new Date(); this.date = new Date(); >> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >> + if ( ! now ) o = o.merge({hour: "", minute:""}); >> + this.updateSelectedDate(o, true); >> + this.refresh(); >> + }, >> + close: function() { >> + if (this.closed) return false; >> + this.callback("before_close"); >> + this.target_element.calendar_date_select = nil; >> + Event.stopObserving(document, "mousedown", >> this.closeIfClickedOut_handler); >> + Event.stopObserving(document, "keypress", this.keyPress_handler); >> + this.calendar_div.remove(); this.closed = true; >> + if (this.iframe) this.iframe.remove(); >> + if (this.target_element.type!="hidden") this.target_element.focus(); >> + this.callback("after_close"); >> + }, >> + closeIfClickedOut: function(e) { >> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >> this.close(); >> + }, >> + keyPress: function(e) { >> + if (e.keyCode==Event.KEY_ESC) this.close(); >> + }, >> + callback: function(name, param) { if (this.options.get(name)) { >> this.options.get(name).bind(this.target_element)(param); } } >> + >> + >> +} >> + >> +// OFBiz addition: modified format_iso_date.js, included here for >> convenience >> +Date.prototype.toFormattedString = function(include_time) { >> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + 1) >> + "-" +Date.padded2(this.getDate()); >> + if (include_time) { >> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + ":" >> + Date.padded2(this.getSeconds()); >> + if (this.getMilliseconds > 0) { >> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >> + } else { >> + str += ".0"; >> + } >> + } >> + return str; >> +}; >> + >> +Date.parseFormattedString = function (string) { >> + var arr_datetime = string.split(' '); >> + var str_date = arr_datetime[0]; >> + var str_time = arr_datetime[1]; >> + >> + var arr_date = str_date.split('-'); >> + var dt_date = new Date(); >> + dt_date.setDate(1); >> + dt_date.setMonth(arr_date[1]-1); >> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >> (arr_date[0] < 40 ? 2000 : 1900); >> + dt_date.setFullYear(arr_date[0]); >> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >> + dt_date.setDate(arr_date[2]); >> + >> + var arr_time = String(str_time ? str_time : '').split(':'); >> + dt_date.setHours(arr_time[0]); >> + dt_date.setMinutes(arr_time[1]); >> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >> + dt_date.setSeconds(arr_sec[0]); >> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >> + dt_date.setMilliseconds(arr_sec[1]); >> + >> + return dt_date; >> +}; >> + >> +// OFBiz addition: functions to call the calendar >> +function call_cal(target, datetime) { >> + new CalendarDateSelect(target, {time:true, year_range:10} ); >> +} >> + >> +function call_cal_notime(target, datetime) { >> + new CalendarDateSelect(target, {year_range:10} ); >> +} >> \ No newline at end of file >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:keywords = "Date Rev Author URL Id" >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:mime-type = text/plain >> >> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >> 01:45:10 2008 >> @@ -18,9 +18,25 @@ >> */ >> >> // ================= FIELD LOOKUP METHODS ============================ >> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >> !document.getElementById)? true : false; >> +var IE4 = (document.all && !document.getElementById)? true : false; >> +var IE5 = (document.getElementById && document.all)? true : false; >> +var NS6 = (document.getElementById && >> navigator.appName.indexOf("Netscape")>=0 )? true: false; >> +var mx, my; >> + >> +function moveobj(evt) { >> + if (NS4 || NS6) { >> + mx=evt.screenX; >> + my=evt.screenY; >> + } else if (IE5 || IE4) { >> + mx=event.screenX; >> + my=event.screenY; >> + } >> +} >> >> var target = null; >> var target2 = null; >> +var lookups = []; >> >> function call_fieldlookup(target, viewName, formName,viewWidth,viewheight) >> { >> var fieldLookup = new fieldLookup1(target); >> >> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >> 01:45:10 2008 >> @@ -1722,41 +1722,138 @@ >> >> /* ===== Table decorator - Calendar ===== */ >> >> -.calendar { >> -border-right: 0.1em solid #cccccc; >> +.calendar_date_select { >> + color:white; >> + border:#777 1px solid; >> + display:block; >> + width:195px; >> + z-index: 1000; >> +} >> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >> window. This should always be just underneath .calendar_date_select */ >> +iframe.ie6_blocker { >> + position: absolute; >> + z-index: 999; >> } >> >> -.calendar tr td { >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -vertical-align: top; >> -padding: 0.5em; >> +.calendar_date_select thead th { >> + font-weight:bold; >> + background-color: #000; >> + border-top:1px solid #777; >> + border-bottom:2px solid #333; >> + color: white !important; >> } >> >> -.calendar .header-row td { >> -background-color: #69a9d9; >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -color: #ffffff; >> -height: auto; >> -text-align: center; >> +.calendar_date_select .cds_buttons { >> + text-align:center; >> + padding:5px 0px; >> + background-color: #555; >> } >> >> -.calendar tr td .add-new { >> -float: right; >> +.calendar_date_select .cds_footer { >> + background-color: black; >> + padding:3px; >> + font-size:12px; >> + text-align:center; >> } >> >> -.calendar tr td .h1 { >> -color: #000099; >> -float: left; >> +.calendar_date_select table { >> + margin: 0px; >> + padding: 0px; >> } >> >> -.calendar .current-period { >> -background-color: #ffffcc; >> + >> +.calendar_date_select .cds_header { >> + background-color: #ccc; >> + border-bottom: 2px solid #aaa; >> + text-align:center; >> } >> >> -.calendar .active-period { >> -background-color: #eeeeee; >> +.calendar_date_select .cds_header span { >> + font-size:15px; >> + color: black; >> + font-weight: bold; >> +} >> + >> +.calendar_date_select select { font-size:11px;} >> + >> +.calendar_date_select .cds_header a:hover { >> + color: white; >> +} >> +.calendar_date_select .cds_header a { >> + width:22px; >> + height:20px; >> + text-decoration: none; >> + font-size:14px; >> + color:black !important; >> +} >> + >> +.calendar_date_select .cds_header a.prev { >> + float:left; >> +} >> +.calendar_date_select .cds_header a.next { >> + float:right; >> +} >> +.calendar_date_select .cds_header a.close { >> + float:right; >> + display:none; >> +} >> + >> +.calendar_date_select .cds_header select.month { >> + width:90px; >> +} >> + >> +.calendar_date_select .cds_header select.year { >> + width:61px; >> +} >> + >> +.calendar_date_select .cds_buttons a { >> + color: white; >> + font-size: 9px; >> +} >> +.calendar_date_select td { >> + font-size:12px; >> + width: 24px; >> + height: 21px; >> + text-align:center; >> + vertical-align: middle; >> + background-color: #666666; >> +} >> +.calendar_date_select td.weekend { >> + background-color: #606060; >> +} >> + >> +.calendar_date_select td div { >> + color: #fff; >> +} >> +.calendar_date_select td div.other { >> + color: #888; >> +} >> +.calendar_date_select td.selected div { >> + color:black; >> +} >> + >> +.calendar_date_select tbody td { >> + border-bottom: 1px solid #555; >> +} >> +.calendar_date_select td.selected { >> + background-color:white; >> +} >> + >> +.calendar_date_select td:hover { >> + background-color:#ccc; >> +} >> + >> +.calendar_date_select td.today { >> + border: 1px dashed #999; >> +} >> + >> +.calendar_date_select td.disabled div { >> + color: #454545; >> +} >> + >> + >> +.fieldWithErrors .calendar_date_select { >> + border: 2px solid red; >> } >> >> /* ======================= */ >> >> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl (original) >> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun 5 >> 01:45:10 2008 >> @@ -19,9 +19,10 @@ >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >> Generic Title (Set subcontent 'title' on your content!)")}</title> >> <link rel="shortcut icon" href="/images/ofbiz.ico" /> >> - <script language="javascript" src="/images/calendar1.js" >> type="text/javascript"></script> >> - <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/prototypejs/prototype.js" >> type="text/javascript"></script> >> <script language="javascript" src="/images/fieldlookup.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/calendar_date_select.js" >> type="text/javascript"></script> >> >> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >> <link rel="stylesheet" href="/ecommerce/images/blog.css" >> type="text/css"/> >> >> Modified: >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> (original) >> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >> Jun 5 01:45:10 2008 >> @@ -34,9 +34,10 @@ >> of stylesheets to the first and second position --> >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> >> <set field="layoutSettings.companyName" >> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >> <set field="layoutSettings.companySubtitle" >> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >> >> >> > |
In reply to this post by Ashish Vijaywargiya
Sorry Adrian, I assumed it was the styles for the Tigra calendar because
there is a separate css file (calendarstyles.css) that appeared to be referenced in the workeffort app. I can't fix it until I get home from work in about 8 hours. Regards Scott 2008/6/6 Adrian Crum <[hidden email]>: > Why was the calendar CSS class removed in this commit? Now the workeffort > calendar screen layout is broken. > > -Adrian > > > [hidden email] wrote: > >> Author: lektran >> Date: Thu Jun 5 01:45:10 2008 >> New Revision: 663501 >> >> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >> Log: >> Replaced the Tigra calendar with Calendar Date Select ( >> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >> >> Added: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (with props) >> Removed: >> ofbiz/trunk/framework/images/webapp/images/calendar.html >> ofbiz/trunk/framework/images/webapp/images/calendar1.js >> Modified: >> ofbiz/trunk/LICENSE >> ofbiz/trunk/NOTICE >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> ofbiz/trunk/framework/common/widget/CommonScreens.xml >> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> ofbiz/trunk/framework/images/webapp/images/maincss.css >> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> >> Modified: ofbiz/trunk/LICENSE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/LICENSE (original) >> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >> @@ -1184,6 +1184,7 @@ >> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> ========================================================================= >> The MIT License >> @@ -2205,24 +2206,6 @@ >> of California, with venue lying in Santa Clara County, California. >> >> ========================================================================= >> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >> -ofbiz/trunk/framework/images/webapp/images/calendar.html >> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >> -Tigra Calendar is licensed as follows: >> -========================================================================= >> -Title: Tigra Calendar >> -URL: http://www.softcomplex.com/products/tigra_calendar/ >> -Version: 3.2 >> -Date: 10/14/2002 (mm/dd/yyyy) >> -Feedback: [hidden email] (specify product title in the >> subject) >> -Note: Permission given to use this script in ANY kind of applications if >> - header lines are left unchanged. >> -Note: Script consists of two files: calendar?.js and calendar.html >> -About us: Our company provides offshore IT consulting services. >> - Contact us at [hidden email] if you have any programming task >> you >> - want to be handled by professionals. Our typical hourly rate is $20. >> - >> -========================================================================= >> Apache OFBiz includes the XML Schema files from the Open Applications >> Group, Inc >> NOTE: these files and the license are for an older version of the OAGIS >> specification, namely version 7.2.1. >> >> Modified: ofbiz/trunk/NOTICE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/NOTICE (original) >> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >> @@ -255,16 +255,6 @@ >> framework/images/webapp/images/pngbehavior.htc >> >> ========================================================================= >> -== Tigra Calendar Notice == >> -========================================================================= >> - >> -This product includes files developed by >> -Softcomplex (www.softcomplex.com): >> - >> -framework\images\webapp\images\calendar.html >> -framework\images\webapp\images\calendar1.js >> - >> -========================================================================= >> == JSON-LIB Notice == >> ========================================================================= >> >> Modified: >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> (original) >> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >> Jun 5 01:45:10 2008 >> @@ -21,10 +21,10 @@ >> <head> >> <title>Automation Groups - Main</title> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >> type='text/css'> >> >> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -41,7 +41,7 @@ >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: --> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/validation.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/prototype.js" global="true"/> >> >> >> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >> 01:45:10 2008 >> @@ -22,9 +22,10 @@ >> <head> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${title}</title> >> - <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel="stylesheet" >> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >> type="text/css"/> >> <script language="JavaScript" type="text/javascript"> >> >> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -118,10 +118,10 @@ >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: <set >> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >> global="true"/> --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The default (global) logo --> >> @@ -227,10 +227,10 @@ >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The settings below are used for xsl-fo screens --> >> >> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (added) >> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >> Jun 5 01:45:10 2008 >> @@ -0,0 +1,480 @@ >> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >> +// Questions, comments, bugs? - email the Author - Tim Harper >> <"[hidden email]".gsub("see", "c")> +if (typeof Prototype == >> 'undefined') alert("CalendarDateSelect Error: Prototype could not be found. >> Please make sure that your application's layout includes prototype.js (.g. >> <%= javascript_include_tag :defaults %>) *before* it includes >> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >> using earlier version of prototype, please use calendar_date_select version >> 1.8.3"); >> + >> +Element.addMethods({ >> + purgeChildren: function(element) { >> $A(element.childNodes).each(function(e){$(e).remove();}); }, >> + build: function(element, type, options, style) { >> + var newElement = Element.build(type, options, style); >> + element.appendChild(newElement); >> + return newElement; >> + } >> +}); >> + >> +Element.build = function(type, options, style) >> +{ >> + var e = $(document.createElement(type)); >> + $H(options).each(function(pair) { eval("e." + pair.key + " = >> pair.value" ); }); >> + if (style) + $H(style).each(function(pair) { eval("e.style." + >> pair.key + " = pair.value" ); }); >> + return e; >> +}; >> +nil = null; >> + >> +Date.one_day = 24*60*60*1000; >> +Date.weekdays = $w("S M T W T F S"); >> +Date.first_day_of_week = 0; >> +Date.months = $w("January February March April May June July August >> September October November December" ); >> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >> (hour < 10) padded2 = "0" + padded2; return padded2; } >> +Date.prototype.getPaddedMinutes = function() { return >> Date.padded2(this.getMinutes()); } >> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >> "AM" : "PM"; } >> +Date.prototype.stripTime = function() { return new >> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >> +Date.prototype.daysDistance = function(compare_date) { return >> Math.round((compare_date - this) / Date.one_day); }; >> +Date.prototype.toFormattedString = function(include_time){ >> + var hour, str; >> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >> this.getFullYear(); >> + + if (include_time) { hour = this.getHours(); str += " " + >> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >> + return str; >> +} >> +Date.parseFormattedString = function(string) { return new Date(string);} >> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >> +window.f_height = function() { return( [window.innerHeight ? >> window.innerHeight : null, document.documentElement ? >> document.documentElement.clientHeight : null, document.body ? >> document.body.clientHeight : null].select(function(x){return >> x>0}).first()||0); } >> +window.f_scrollTop = function() { return ([window.pageYOffset ? >> window.pageYOffset : null, document.documentElement ? >> document.documentElement.scrollTop : null, document.body ? >> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >> ); } >> + >> +_translations = { >> + "OK": "OK", >> + "Now": "Now", >> + "Today": "Today" >> +} >> +SelectBox = Class.create(); >> +SelectBox.prototype = { >> + initialize: function(parent_element, values, html_options, >> style_options) { >> + this.element = $(parent_element).build("select", html_options, >> style_options); >> + this.populate(values); >> + }, >> + populate: function(values) { >> + this.element.purgeChildren(); >> + var that = this; $A(values).each(function(pair) { if >> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >> { value: pair[1], innerHTML: pair[0]}) }); >> + }, >> + setValue: function(value) { >> + var e = this.element; >> + var matched = false; >> + $R(0, e.options.length - 1 ).each(function(i) { >> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >> true;}; } ); >> + return matched; >> + }, >> + getValue: function() { return $F(this.element)} >> +} >> +CalendarDateSelect = Class.create(); >> +CalendarDateSelect.prototype = { >> + initialize: function(target_element, options) { >> + this.target_element = $(target_element); // make sure it's an >> element, not a string >> + if (!this.target_element) { alert("Target element " + target_element >> + " not found!"); return false;} >> + if (this.target_element.tagName != "INPUT") this.target_element = >> this.target_element.down("INPUT") >> + + this.target_element.calendar_date_select = this; >> + this.last_click_at = 0; >> + // initialize the date control >> + this.options = $H({ >> + embedded: false, >> + popup: nil, >> + time: false, >> + buttons: true, >> + year_range: 10, >> + close_on_click: nil, >> + minute_interval: 5, >> + popup_by: this.target_element, >> + month_year: "dropdowns", >> + onchange: this.target_element.onchange, >> + valid_date_check: nil >> + }).merge(options || {}); >> + this.use_time = this.options.get("time"); >> + this.parseDate(); >> + this.callback("before_show") >> + this.initCalendarDiv(); >> + if(!this.options.get("embedded")) { >> + this.positionCalendarDiv() >> + // set the click handler to check if a user has clicked away from >> the document >> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >> = this.closeIfClickedOut.bindAsEventListener(this)); >> + Event.observe(document, "keypress", this.keyPress_handler = >> this.keyPress.bindAsEventListener(this)); >> + } >> + this.callback("after_show") >> + }, >> + positionCalendarDiv: function() { >> + var above = false; >> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >> c_dim.height, c_width = c_dim.width; + var w_top = window.f_scrollTop(), >> w_height = window.f_height(); >> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >> = e_dim[1], e_left = e_dim[0], e_height = >> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >> e_height; >> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >> e_bottom - c_height > w_top )) above = true; >> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >> c_height ) : ( e_top + e_height )).toString() + "px"; >> + + this.calendar_div.style.left = left_px; >> this.calendar_div.style.top = top_px; >> + + this.calendar_div.setStyle({visibility:""}); >> + + // draw an iframe behind the calendar -- ugly hack to make IE 6 >> happy >> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >> $(document.body).build("iframe", {src: "javascript:false", className: >> "ie6_blocker"}, { left: left_px, top: top_px, height: >> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >> + }, >> + initCalendarDiv: function() { >> + if (this.options.get("embedded")) { >> + var parent = this.target_element.parentNode; >> + var style = {} >> + } else { >> + var parent = document.body >> + var style = { position:"absolute", visibility: "hidden", left:0, >> top:0 } >> + } >> + this.calendar_div = $(parent).build('div', {className: >> "calendar_date_select"}, style); >> + + var that = this; >> + // create the divs >> + $w("top header body buttons footer bottom").each(function(name) { >> + eval("var " + name + "_div = that." + name + "_div = >> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >> 'left'} ); "); >> + }); >> + + this.initHeaderDiv(); >> + this.initButtonsDiv(); >> + this.initCalendarGrid(); >> + this.updateFooter(" "); >> + + this.refresh(); >> + this.setUseTime(this.use_time); >> + }, >> + initHeaderDiv: function() { >> + var header_div = this.header_div; >> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >> onclick:function () { this.close(); return false; >> }.bindAsEventListener(this), className: "close" }); >> + this.next_month_button = header_div.build("a", { innerHTML: ">", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >> return false; }.bindAsEventListener(this), className: "next" }); >> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >> return false; }.bindAsEventListener(this), className: "prev" }); >> + + if (this.options.get("month_year")=="dropdowns") { >> + this.month_select = new SelectBox(header_div, >> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >> onchange: function () { this.navMonth(this.month_select.getValue()) >> }.bindAsEventListener(this)}); + this.year_select = new >> SelectBox(header_div, [], {className: "year", onchange: function () { >> this.navYear(this.year_select.getValue()) }.bindAsEventListener(this)}); + >> this.populateYearRange(); >> + } else { >> + this.month_year_label = header_div.build("span") >> + } >> + }, >> + initCalendarGrid: function() { >> + var body_div = this.body_div; >> + this.calendar_day_grid = []; >> + var days_table = body_div.build("table", { cellPadding: "0px", >> cellSpacing: "0px", width: "100%" }) >> + // make the weekdays! >> + var weekdays_row = days_table.build("thead").build("tr"); >> + Date.weekdays.each( function(weekday) { + >> weekdays_row.build("th", {innerHTML: weekday}); >> + }); >> + + var days_tbody = days_table.build("tbody") >> + // Make the days! >> + var row_number = 0, weekday; >> + for(var cell_index = 0; cell_index<42; cell_index++) >> + { >> + weekday = (cell_index+Date.first_day_of_week ) % 7; >> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >> {className: 'row_'+row_number++}); >> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >> + calendar_date_select: this, >> + onmouseover: function () { >> this.calendar_date_select.dayHover(this); }, >> + onmouseout: function () { >> this.calendar_date_select.dayHoverOut(this) }, >> + onclick: function() { >> this.calendar_date_select.updateSelectedDate(this, true); }, >> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >> //clear the class >> + }, >> + { cursor: "pointer" } >> + )).build("div"); >> + this.calendar_day_grid[cell_index]; >> + } >> + }, >> + initButtonsDiv: function() >> + { >> + var buttons_div = this.buttons_div; >> + if (this.options.get("time")) >> + { >> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >> ""]] : []); >> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >> + + var t = new Date(); >> + this.hour_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( { hour: >> this.value });}, >> + className: "hour" + } >> + ); >> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >> + var that = this; >> + this.minute_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,59).select(function(x){return (x % >> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >> Date.padded2(x), x]); } ) ), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( {minute: >> this.value }) }, + className: "minute" + } >> + ); >> + + } else if (! this.options.get("buttons")) >> buttons_div.remove(); >> + + if (this.options.get("buttons")) { >> + buttons_div.build("span", {innerHTML: " "}); >> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >> b = buttons_div.build("a", { >> + innerHTML: _translations["Today"], >> + href: "#", >> + onclick: function() {this.today(false); return >> false;}.bindAsEventListener(this) >> + }); >> + + if (this.options.get("time")=="mixed") >> buttons_div.build("span", {innerHTML: " | ", className:"button_seperator"}) >> + + if (this.options.get("time")) b = buttons_div.build("a", { >> + innerHTML: _translations["Now"], >> + href: "#", >> + onclick: function() {this.today(true); return >> false}.bindAsEventListener(this) >> + }); >> + + if (!this.options.get("embedded")) >> + { >> + buttons_div.build("span", {innerHTML: " "}); >> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >> "#", onclick: function() {this.close(); return >> false;}.bindAsEventListener(this) }); >> + } >> + } >> + }, >> + refresh: function () >> + { >> + this.refreshMonthYear(); >> + this.refreshCalendarGrid(); >> + + this.setSelectedClass(); >> + this.updateFooter(); >> + }, >> + refreshCalendarGrid: function () { >> + this.beginning_date = new Date(this.date).stripTime(); >> + this.beginning_date.setDate(1); >> + this.beginning_date.setHours(12); // Prevent daylight savings time >> boundaries from showing a duplicate day >> + var pre_days = this.beginning_date.getDay() // draw some days before >> the fact >> + if (pre_days < 3) pre_days += 7; >> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >> + + var iterator = new Date(this.beginning_date); >> + + var today = new Date().stripTime(); >> + var this_month = this.date.getMonth(); >> + vdc = this.options.get("valid_date_check"); >> + for (var cell_index = 0;cell_index<42; cell_index++) >> + { >> + day = iterator.getDate(); month = iterator.getMonth(); >> + cell = this.calendar_day_grid[cell_index]; >> + Element.remove(cell.childNodes[0]); div = cell.build("div", >> {innerHTML:day}); >> + if (month!=this_month) div.className = "other"; >> + cell.day = day; cell.month = month; cell.year = >> iterator.getFullYear(); >> + if (vdc) { if (vdc(iterator.stripTime())) >> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >> + iterator.setDate( day + 1); >> + } >> + + if (this.today_cell) this.today_cell.removeClassName("today"); >> + + if ( $R( 0, 41 ).include(days_until = >> this.beginning_date.stripTime().daysDistance(today)) ) { >> + this.today_cell = this.calendar_day_grid[days_until]; >> + this.today_cell.addClassName("today"); >> + } >> + }, >> + refreshMonthYear: function() { >> + var m = this.date.getMonth(); >> + var y = this.date.getFullYear(); >> + // set the month >> + if (this.options.get("month_year") == "dropdowns") + { >> + this.month_select.setValue(m, false); >> + + var e = this.year_select.element; + if >> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >> this.populateYearRange(); >> + + this.year_select.setValue(y); >> + + } else { >> + this.month_year_label.update( Date.months[m] + " " + y.toString() >> ); >> + } >> + }, >> + populateYearRange: function() { >> + this.year_select.populate(this.yearRange().toArray()); >> + }, >> + yearRange: function() { >> + if (!this.flexibleYearRange()) >> + return $R(this.options.get("year_range")[0], >> this.options.get("year_range")[1]); >> + + var y = this.date.getFullYear(); >> + return $R(y - this.options.get("year_range"), y + >> this.options.get("year_range")); >> + }, >> + flexibleYearRange: function() { return >> (typeof(this.options.get("year_range")) == "number"); }, >> + validYear: function(year) { if (this.flexibleYearRange()) { return >> true;} else { return this.yearRange().include(year);} }, >> + dayHover: function(element) { >> + var hover_date = new Date(this.selected_date); >> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >> hover_date.setDate(element.day); >> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >> + }, >> + dayHoverOut: function(element) { this.updateFooter(); }, >> + clearSelectedClass: function() {if (this.selected_cell) >> this.selected_cell.removeClassName("selected");}, >> + setSelectedClass: function() { >> + if (!this.selection_made) return; >> + this.clearSelectedClass() >> + if ($R(0,42).include( days_until = >> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >> )) { >> + this.selected_cell = this.calendar_day_grid[days_until]; >> + this.selected_cell.addClassName("selected"); >> + } >> + }, >> + reparse: function() { this.parseDate(); this.refresh(); }, >> + dateString: function() { >> + return (this.selection_made) ? >> this.selected_date.toFormattedString(this.use_time) : " "; >> + }, >> + parseDate: function() >> + { >> + var value = $F(this.target_element).strip() >> + this.selection_made = (value != ""); >> + this.date = value=="" ? NaN : >> Date.parseFormattedString(this.options.get("date") || value); >> + if (isNaN(this.date)) this.date = new Date(); >> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >> : this.yearRange().end); >> + this.selected_date = new Date(this.date); >> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >> + this.date.setDate(1); >> + }, >> + updateFooter:function(text) { if (!text) text = this.dateString(); >> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >> text }); }, >> + updateSelectedDate:function(partsOrElement, via_click) { >> + var parts = $H(partsOrElement); >> + if ((this.target_element.disabled || this.target_element.readOnly) && >> this.options.get("popup") != "force") return false; >> + if (parts.get("day")) { >> + var t_selected_date = this.selected_date, vdc = >> this.options.get("valid_date_check"); >> + for (var x = 0; x<=3; x++) >> t_selected_date.setDate(parts.get("day")); >> + t_selected_date.setYear(parts.get("year")); >> + t_selected_date.setMonth(parts.get("month")); >> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >> false; } >> + this.selected_date = t_selected_date; >> + this.selection_made = true; >> + } >> + + if (!isNaN(parts.get("hour"))) >> this.selected_date.setHours(parts.get("hour")); >> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >> Math.floor_to_interval(parts.get("minute"), >> this.options.get("minute_interval")) ); >> + if (parts.get("hour") === "" || parts.get("minute") === "") + >> this.setUseTime(false); >> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >> + this.setUseTime(true); >> + + this.updateFooter(); >> + this.setSelectedClass(); >> + + if (this.selection_made) this.updateValue(); >> + if (this.closeOnClick()) { this.close(); } >> + if (via_click && !this.options.get("embedded")) { >> + if ((new Date() - this.last_click_at) < 333) this.close(); >> + this.last_click_at = new Date(); >> + } >> + }, >> + closeOnClick: function() { >> + if (this.options.get("embedded")) return false; >> + if (this.options.get("close_on_click")===nil ) >> + return (this.options.get("time")) ? false : true >> + else >> + return (this.options.get("close_on_click")) >> + }, >> + navMonth: function(month) { (target_date = new >> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >> + navYear: function(year) { (target_date = new >> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >> + navTo: function(date) { >> + if (!this.validYear(date.getFullYear())) return false; >> + this.date = date; >> + this.date.setDate(1); >> + this.refresh(); >> + this.callback("after_navigate", this.date); >> + return true; >> + }, >> + setUseTime: function(turn_on) { >> + this.use_time = this.options.get("time") && >> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >> true if time==true && time!="mixed" >> + if (this.use_time && this.selected_date) { // only set hour/minute if >> a date is already selected >> + var minute = >> Math.floor_to_interval(this.selected_date.getMinutes(), >> this.options.get("minute_interval")); >> + var hour = this.selected_date.getHours(); >> + + this.hour_select.setValue(hour); >> + this.minute_select.setValue(minute) >> + } else if (this.options.get("time")=="mixed") { >> + this.hour_select.setValue(""); this.minute_select.setValue(""); >> + } >> + }, >> + updateValue: function() { >> + var last_value = this.target_element.value; >> + this.target_element.value = this.dateString(); >> + if (last_value!=this.target_element.value) this.callback("onchange"); >> + }, >> + today: function(now) { >> + var d = new Date(); this.date = new Date(); >> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >> this.updateSelectedDate(o, true); >> + this.refresh(); >> + }, >> + close: function() { >> + if (this.closed) return false; >> + this.callback("before_close"); >> + this.target_element.calendar_date_select = nil; >> + Event.stopObserving(document, "mousedown", >> this.closeIfClickedOut_handler); >> + Event.stopObserving(document, "keypress", this.keyPress_handler); >> + this.calendar_div.remove(); this.closed = true; >> + if (this.iframe) this.iframe.remove(); >> + if (this.target_element.type!="hidden") this.target_element.focus(); >> + this.callback("after_close"); >> + }, >> + closeIfClickedOut: function(e) { >> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >> this.close(); >> + }, >> + keyPress: function(e) { >> + if (e.keyCode==Event.KEY_ESC) this.close(); >> + }, >> + callback: function(name, param) { if (this.options.get(name)) { >> this.options.get(name).bind(this.target_element)(param); } } >> + + >> +} >> + >> +// OFBiz addition: modified format_iso_date.js, included here for >> convenience >> +Date.prototype.toFormattedString = function(include_time) { >> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + >> 1) + "-" +Date.padded2(this.getDate()); >> + if (include_time) { >> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >> ":" + Date.padded2(this.getSeconds()); >> + if (this.getMilliseconds > 0) { >> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >> + } else { >> + str += ".0"; >> + } >> + } >> + return str; >> +}; >> + >> +Date.parseFormattedString = function (string) { >> + var arr_datetime = string.split(' '); >> + var str_date = arr_datetime[0]; >> + var str_time = arr_datetime[1]; >> + >> + var arr_date = str_date.split('-'); >> + var dt_date = new Date(); >> + dt_date.setDate(1); >> + dt_date.setMonth(arr_date[1]-1); >> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >> (arr_date[0] < 40 ? 2000 : 1900); >> + dt_date.setFullYear(arr_date[0]); >> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >> + dt_date.setDate(arr_date[2]); >> + >> + var arr_time = String(str_time ? str_time : '').split(':'); >> + dt_date.setHours(arr_time[0]); >> + dt_date.setMinutes(arr_time[1]); >> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >> + dt_date.setSeconds(arr_sec[0]); >> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >> + dt_date.setMilliseconds(arr_sec[1]); >> + >> + return dt_date; >> +}; >> + >> +// OFBiz addition: functions to call the calendar >> +function call_cal(target, datetime) { + new >> CalendarDateSelect(target, {time:true, year_range:10} ); +} >> + >> +function call_cal_notime(target, datetime) { + new >> CalendarDateSelect(target, {year_range:10} ); +} >> \ No newline at end of file >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:keywords = "Date Rev Author URL Id" >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:mime-type = text/plain >> >> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >> 01:45:10 2008 >> @@ -18,9 +18,25 @@ >> */ >> // ================= FIELD LOOKUP METHODS ============================ >> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >> !document.getElementById)? true : false; >> +var IE4 = (document.all && !document.getElementById)? true : false; >> +var IE5 = (document.getElementById && document.all)? true : false; >> +var NS6 = (document.getElementById && >> navigator.appName.indexOf("Netscape")>=0 )? true: false; >> +var mx, my; >> + >> +function moveobj(evt) { >> + if (NS4 || NS6) { >> + mx=evt.screenX; >> + my=evt.screenY; >> + } else if (IE5 || IE4) { >> + mx=event.screenX; >> + my=event.screenY; >> + } >> +} >> var target = null; >> var target2 = null; >> +var lookups = []; >> function call_fieldlookup(target, viewName, >> formName,viewWidth,viewheight) { var fieldLookup = new >> fieldLookup1(target); >> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >> 01:45:10 2008 >> @@ -1722,41 +1722,138 @@ >> /* ===== Table decorator - Calendar ===== */ >> -.calendar { >> -border-right: 0.1em solid #cccccc; >> +.calendar_date_select { >> + color:white; >> + border:#777 1px solid; >> + display:block; >> + width:195px; >> + z-index: 1000; >> +} >> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >> window. This should always be just underneath .calendar_date_select */ >> +iframe.ie6_blocker { >> + position: absolute; >> + z-index: 999; >> } >> -.calendar tr td { >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -vertical-align: top; >> -padding: 0.5em; >> +.calendar_date_select thead th { >> + font-weight:bold; >> + background-color: #000; >> + border-top:1px solid #777; >> + border-bottom:2px solid #333; >> + color: white !important; >> } >> -.calendar .header-row td { >> -background-color: #69a9d9; >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -color: #ffffff; >> -height: auto; >> -text-align: center; >> +.calendar_date_select .cds_buttons { >> + text-align:center; >> + padding:5px 0px; >> + background-color: #555; >> } >> -.calendar tr td .add-new { >> -float: right; >> +.calendar_date_select .cds_footer { >> + background-color: black; >> + padding:3px; >> + font-size:12px; >> + text-align:center; >> } >> -.calendar tr td .h1 { >> -color: #000099; >> -float: left; >> +.calendar_date_select table { >> + margin: 0px; >> + padding: 0px; >> } >> -.calendar .current-period { >> -background-color: #ffffcc; >> + >> +.calendar_date_select .cds_header { >> + background-color: #ccc; >> + border-bottom: 2px solid #aaa; >> + text-align:center; >> } >> -.calendar .active-period { >> -background-color: #eeeeee; >> +.calendar_date_select .cds_header span { >> + font-size:15px; >> + color: black; >> + font-weight: bold; >> +} >> + >> +.calendar_date_select select { font-size:11px;} >> + >> +.calendar_date_select .cds_header a:hover { >> + color: white; >> +} >> +.calendar_date_select .cds_header a { >> + width:22px; >> + height:20px; >> + text-decoration: none; >> + font-size:14px; >> + color:black !important; >> +} >> + >> +.calendar_date_select .cds_header a.prev { >> + float:left; >> +} >> +.calendar_date_select .cds_header a.next { >> + float:right; >> +} >> +.calendar_date_select .cds_header a.close { >> + float:right; >> + display:none; >> +} >> + >> +.calendar_date_select .cds_header select.month { >> + width:90px; >> +} >> + >> +.calendar_date_select .cds_header select.year { >> + width:61px; >> +} >> + >> +.calendar_date_select .cds_buttons a { >> + color: white; >> + font-size: 9px; >> +} >> +.calendar_date_select td { >> + font-size:12px; >> + width: 24px; >> + height: 21px; >> + text-align:center; >> + vertical-align: middle; >> + background-color: #666666; >> +} >> +.calendar_date_select td.weekend { >> + background-color: #606060; >> +} >> + >> +.calendar_date_select td div { >> + color: #fff; >> +} >> +.calendar_date_select td div.other { >> + color: #888; >> +} >> +.calendar_date_select td.selected div { >> + color:black; >> +} >> + >> +.calendar_date_select tbody td { >> + border-bottom: 1px solid #555; >> +} >> +.calendar_date_select td.selected { >> + background-color:white; >> +} >> + >> +.calendar_date_select td:hover { >> + background-color:#ccc; >> +} >> + >> +.calendar_date_select td.today { >> + border: 1px dashed #999; >> +} >> + >> +.calendar_date_select td.disabled div { >> + color: #454545; >> +} >> + >> + >> +.fieldWithErrors .calendar_date_select { >> + border: 2px solid red; >> } >> /* ======================= */ >> >> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> (original) >> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun >> 5 01:45:10 2008 >> @@ -19,9 +19,10 @@ >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >> Generic Title (Set subcontent 'title' on your content!)")}</title> >> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - <script >> language="javascript" src="/images/calendar1.js" >> type="text/javascript"></script> >> - <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/prototypejs/prototype.js" >> type="text/javascript"></script> >> <script language="javascript" src="/images/fieldlookup.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/calendar_date_select.js" >> type="text/javascript"></script> >> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >> <link rel="stylesheet" href="/ecommerce/images/blog.css" >> type="text/css"/> >> >> Modified: >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> (original) >> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >> Jun 5 01:45:10 2008 >> @@ -34,9 +34,10 @@ >> of stylesheets to the first and second position --> >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.companyName" >> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >> <set field="layoutSettings.companySubtitle" >> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >> >> >> >> |
Administrator
|
Adrian, Scott,
Should we also keep images/webapp/images/calendarstyles.css and images/webapp/images/calendarTable.css ? (Sorry it's late here, going to bed :o) Jacques From: "Scott Gray" <[hidden email]> > Sorry Adrian, I assumed it was the styles for the Tigra calendar because > there is a separate css file (calendarstyles.css) that appeared to be > referenced in the workeffort app. > > I can't fix it until I get home from work in about 8 hours. > > Regards > Scott > > 2008/6/6 Adrian Crum <[hidden email]>: > >> Why was the calendar CSS class removed in this commit? Now the workeffort >> calendar screen layout is broken. >> >> -Adrian >> >> >> [hidden email] wrote: >> >>> Author: lektran >>> Date: Thu Jun 5 01:45:10 2008 >>> New Revision: 663501 >>> >>> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >>> Log: >>> Replaced the Tigra calendar with Calendar Date Select ( >>> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >>> >>> Added: >>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> (with props) >>> Removed: >>> ofbiz/trunk/framework/images/webapp/images/calendar.html >>> ofbiz/trunk/framework/images/webapp/images/calendar1.js >>> Modified: >>> ofbiz/trunk/LICENSE >>> ofbiz/trunk/NOTICE >>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>> ofbiz/trunk/framework/common/widget/CommonScreens.xml >>> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>> ofbiz/trunk/framework/images/webapp/images/maincss.css >>> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>> >>> Modified: ofbiz/trunk/LICENSE >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/LICENSE (original) >>> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >>> @@ -1184,6 +1184,7 @@ >>> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >>> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >>> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >>> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> ========================================================================= >>> The MIT License >>> @@ -2205,24 +2206,6 @@ >>> of California, with venue lying in Santa Clara County, California. >>> >>> ========================================================================= >>> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >>> -ofbiz/trunk/framework/images/webapp/images/calendar.html >>> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >>> -Tigra Calendar is licensed as follows: >>> -========================================================================= >>> -Title: Tigra Calendar >>> -URL: http://www.softcomplex.com/products/tigra_calendar/ >>> -Version: 3.2 >>> -Date: 10/14/2002 (mm/dd/yyyy) >>> -Feedback: [hidden email] (specify product title in the >>> subject) >>> -Note: Permission given to use this script in ANY kind of applications if >>> - header lines are left unchanged. >>> -Note: Script consists of two files: calendar?.js and calendar.html >>> -About us: Our company provides offshore IT consulting services. >>> - Contact us at [hidden email] if you have any programming task >>> you >>> - want to be handled by professionals. Our typical hourly rate is $20. >>> - >>> -========================================================================= >>> Apache OFBiz includes the XML Schema files from the Open Applications >>> Group, Inc >>> NOTE: these files and the license are for an older version of the OAGIS >>> specification, namely version 7.2.1. >>> >>> Modified: ofbiz/trunk/NOTICE >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/NOTICE (original) >>> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >>> @@ -255,16 +255,6 @@ >>> framework/images/webapp/images/pngbehavior.htc >>> >>> ========================================================================= >>> -== Tigra Calendar Notice == >>> -========================================================================= >>> - >>> -This product includes files developed by >>> -Softcomplex (www.softcomplex.com): >>> - >>> -framework\images\webapp\images\calendar.html >>> -framework\images\webapp\images\calendar1.js >>> - >>> -========================================================================= >>> == JSON-LIB Notice == >>> ========================================================================= >>> >>> Modified: >>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>> (original) >>> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >>> Jun 5 01:45:10 2008 >>> @@ -21,10 +21,10 @@ >>> <head> >>> <title>Automation Groups - Main</title> >>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >>> - <script language='javascript' >>> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >>> type='text/javascript'></script> >>> - <script language='javascript' >>> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >>> type='text/javascript'></script> >>> - <script language='javascript' >>> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >>> type='text/javascript'></script> >>> + <script language="javascript" >>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> <script language="javascript" >>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> + <script language="javascript" >>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> + <script language="javascript" >>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> <link rel='stylesheet' >>> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >>> type='text/css'> >>> <link rel='stylesheet' >>> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >>> type='text/css'> >>> <link rel='stylesheet' >>> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >>> type='text/css'> >>> >>> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >>> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >>> 01:45:10 2008 >>> @@ -41,7 +41,7 @@ >>> <!-- NOTE: this should be included on each screen that >>> uses it to avoid including it in all screens: --> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/fieldlookup.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/selectall.js" global="true"/> >>> - <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar1.js" global="true"/> >>> + <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar_date_select.js" global="true"/> >>> <set field="layoutSettings.javaScripts[+0]" >>> value="/images/prototypejs/validation.js" global="true"/> >>> <set field="layoutSettings.javaScripts[+0]" >>> value="/images/prototypejs/prototype.js" global="true"/> >>> >>> >>> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >>> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >>> 01:45:10 2008 >>> @@ -22,9 +22,10 @@ >>> <head> >>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >>> <title>${title}</title> >>> - <script language="javascript" >>> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> + <script language="javascript" >>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> <script language="javascript" >>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> <script language="javascript" >>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> + <script language="javascript" >>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>> type="text/javascript"></script> >>> <link rel="stylesheet" >>> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >>> type="text/css"/> >>> <script language="JavaScript" type="text/javascript"> >>> >>> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >>> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >>> 01:45:10 2008 >>> @@ -118,10 +118,10 @@ >>> <set field="layoutSettings.rtlStyleSheets[+0]" >>> value="/images/mainrtl.css" global="true"/> >>> <!-- The default (global) java scripts --> >>> <!-- NOTE: this should be included on each screen that >>> uses it to avoid including it in all screens: <set >>> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >>> global="true"/> --> >>> - <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar1.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/selectall.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/fieldlookup.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/prototypejs/prototype.js" global="true"/> >>> + <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar_date_select.js" global="true"/> >>> <!-- The default (global) shortcut icon --> >>> <set field="layoutSettings.shortcutIcon" >>> value="/images/ofbiz.ico" global="true"/> >>> <!-- The default (global) logo --> >>> @@ -227,10 +227,10 @@ >>> <set field="layoutSettings.styleSheets[+0]" >>> value="/images/maincss.css" global="true"/> >>> <set field="layoutSettings.rtlStyleSheets[+0]" >>> value="/images/mainrtl.css" global="true"/> >>> <!-- The default (global) java scripts --> >>> - <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar1.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/selectall.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/fieldlookup.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/prototypejs/prototype.js" global="true"/> >>> + <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar_date_select.js" global="true"/> >>> <!-- The default (global) shortcut icon --> >>> <set field="layoutSettings.shortcutIcon" >>> value="/images/ofbiz.ico" global="true"/> >>> <!-- The settings below are used for xsl-fo screens --> >>> >>> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >>> >>> ============================================================================== >>> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> (added) >>> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >>> Jun 5 01:45:10 2008 >>> @@ -0,0 +1,480 @@ >>> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >>> +// Questions, comments, bugs? - email the Author - Tim Harper >>> <"[hidden email]".gsub("see", "c")> +if (typeof Prototype == >>> 'undefined') alert("CalendarDateSelect Error: Prototype could not be found. >>> Please make sure that your application's layout includes prototype.js (.g. >>> <%= javascript_include_tag :defaults %>) *before* it includes >>> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >>> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >>> using earlier version of prototype, please use calendar_date_select version >>> 1.8.3"); >>> + >>> +Element.addMethods({ >>> + purgeChildren: function(element) { >>> $A(element.childNodes).each(function(e){$(e).remove();}); }, >>> + build: function(element, type, options, style) { >>> + var newElement = Element.build(type, options, style); >>> + element.appendChild(newElement); >>> + return newElement; >>> + } >>> +}); >>> + >>> +Element.build = function(type, options, style) >>> +{ >>> + var e = $(document.createElement(type)); >>> + $H(options).each(function(pair) { eval("e." + pair.key + " = >>> pair.value" ); }); >>> + if (style) + $H(style).each(function(pair) { eval("e.style." + >>> pair.key + " = pair.value" ); }); >>> + return e; >>> +}; >>> +nil = null; >>> + >>> +Date.one_day = 24*60*60*1000; >>> +Date.weekdays = $w("S M T W T F S"); >>> +Date.first_day_of_week = 0; >>> +Date.months = $w("January February March April May June July August >>> September October November December" ); >>> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >>> (hour < 10) padded2 = "0" + padded2; return padded2; } >>> +Date.prototype.getPaddedMinutes = function() { return >>> Date.padded2(this.getMinutes()); } >>> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >>> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >>> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >>> "AM" : "PM"; } >>> +Date.prototype.stripTime = function() { return new >>> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >>> +Date.prototype.daysDistance = function(compare_date) { return >>> Math.round((compare_date - this) / Date.one_day); }; >>> +Date.prototype.toFormattedString = function(include_time){ >>> + var hour, str; >>> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >>> this.getFullYear(); >>> + + if (include_time) { hour = this.getHours(); str += " " + >>> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >>> + return str; >>> +} >>> +Date.parseFormattedString = function(string) { return new Date(string);} >>> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >>> +window.f_height = function() { return( [window.innerHeight ? >>> window.innerHeight : null, document.documentElement ? >>> document.documentElement.clientHeight : null, document.body ? >>> document.body.clientHeight : null].select(function(x){return >>> x>0}).first()||0); } >>> +window.f_scrollTop = function() { return ([window.pageYOffset ? >>> window.pageYOffset : null, document.documentElement ? >>> document.documentElement.scrollTop : null, document.body ? >>> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >>> ); } >>> + >>> +_translations = { >>> + "OK": "OK", >>> + "Now": "Now", >>> + "Today": "Today" >>> +} >>> +SelectBox = Class.create(); >>> +SelectBox.prototype = { >>> + initialize: function(parent_element, values, html_options, >>> style_options) { >>> + this.element = $(parent_element).build("select", html_options, >>> style_options); >>> + this.populate(values); >>> + }, >>> + populate: function(values) { >>> + this.element.purgeChildren(); >>> + var that = this; $A(values).each(function(pair) { if >>> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >>> { value: pair[1], innerHTML: pair[0]}) }); >>> + }, >>> + setValue: function(value) { >>> + var e = this.element; >>> + var matched = false; >>> + $R(0, e.options.length - 1 ).each(function(i) { >>> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >>> true;}; } ); >>> + return matched; >>> + }, >>> + getValue: function() { return $F(this.element)} >>> +} >>> +CalendarDateSelect = Class.create(); >>> +CalendarDateSelect.prototype = { >>> + initialize: function(target_element, options) { >>> + this.target_element = $(target_element); // make sure it's an >>> element, not a string >>> + if (!this.target_element) { alert("Target element " + target_element >>> + " not found!"); return false;} >>> + if (this.target_element.tagName != "INPUT") this.target_element = >>> this.target_element.down("INPUT") >>> + + this.target_element.calendar_date_select = this; >>> + this.last_click_at = 0; >>> + // initialize the date control >>> + this.options = $H({ >>> + embedded: false, >>> + popup: nil, >>> + time: false, >>> + buttons: true, >>> + year_range: 10, >>> + close_on_click: nil, >>> + minute_interval: 5, >>> + popup_by: this.target_element, >>> + month_year: "dropdowns", >>> + onchange: this.target_element.onchange, >>> + valid_date_check: nil >>> + }).merge(options || {}); >>> + this.use_time = this.options.get("time"); >>> + this.parseDate(); >>> + this.callback("before_show") >>> + this.initCalendarDiv(); >>> + if(!this.options.get("embedded")) { >>> + this.positionCalendarDiv() >>> + // set the click handler to check if a user has clicked away from >>> the document >>> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >>> = this.closeIfClickedOut.bindAsEventListener(this)); >>> + Event.observe(document, "keypress", this.keyPress_handler = >>> this.keyPress.bindAsEventListener(this)); >>> + } >>> + this.callback("after_show") >>> + }, >>> + positionCalendarDiv: function() { >>> + var above = false; >>> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >>> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >>> c_dim.height, c_width = c_dim.width; + var w_top = window.f_scrollTop(), >>> w_height = window.f_height(); >>> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >>> = e_dim[1], e_left = e_dim[0], e_height = >>> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >>> e_height; >>> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >>> e_bottom - c_height > w_top )) above = true; >>> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >>> c_height ) : ( e_top + e_height )).toString() + "px"; >>> + + this.calendar_div.style.left = left_px; >>> this.calendar_div.style.top = top_px; >>> + + this.calendar_div.setStyle({visibility:""}); >>> + + // draw an iframe behind the calendar -- ugly hack to make IE 6 >>> happy >>> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >>> $(document.body).build("iframe", {src: "javascript:false", className: >>> "ie6_blocker"}, { left: left_px, top: top_px, height: >>> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >>> + }, >>> + initCalendarDiv: function() { >>> + if (this.options.get("embedded")) { >>> + var parent = this.target_element.parentNode; >>> + var style = {} >>> + } else { >>> + var parent = document.body >>> + var style = { position:"absolute", visibility: "hidden", left:0, >>> top:0 } >>> + } >>> + this.calendar_div = $(parent).build('div', {className: >>> "calendar_date_select"}, style); >>> + + var that = this; >>> + // create the divs >>> + $w("top header body buttons footer bottom").each(function(name) { >>> + eval("var " + name + "_div = that." + name + "_div = >>> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >>> 'left'} ); "); >>> + }); >>> + + this.initHeaderDiv(); >>> + this.initButtonsDiv(); >>> + this.initCalendarGrid(); >>> + this.updateFooter(" "); >>> + + this.refresh(); >>> + this.setUseTime(this.use_time); >>> + }, >>> + initHeaderDiv: function() { >>> + var header_div = this.header_div; >>> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >>> onclick:function () { this.close(); return false; >>> }.bindAsEventListener(this), className: "close" }); >>> + this.next_month_button = header_div.build("a", { innerHTML: ">", >>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >>> return false; }.bindAsEventListener(this), className: "next" }); >>> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >>> return false; }.bindAsEventListener(this), className: "prev" }); >>> + + if (this.options.get("month_year")=="dropdowns") { >>> + this.month_select = new SelectBox(header_div, >>> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >>> onchange: function () { this.navMonth(this.month_select.getValue()) >>> }.bindAsEventListener(this)}); + this.year_select = new >>> SelectBox(header_div, [], {className: "year", onchange: function () { >>> this.navYear(this.year_select.getValue()) }.bindAsEventListener(this)}); + >>> this.populateYearRange(); >>> + } else { >>> + this.month_year_label = header_div.build("span") >>> + } >>> + }, >>> + initCalendarGrid: function() { >>> + var body_div = this.body_div; >>> + this.calendar_day_grid = []; >>> + var days_table = body_div.build("table", { cellPadding: "0px", >>> cellSpacing: "0px", width: "100%" }) >>> + // make the weekdays! >>> + var weekdays_row = days_table.build("thead").build("tr"); >>> + Date.weekdays.each( function(weekday) { + >>> weekdays_row.build("th", {innerHTML: weekday}); >>> + }); >>> + + var days_tbody = days_table.build("tbody") >>> + // Make the days! >>> + var row_number = 0, weekday; >>> + for(var cell_index = 0; cell_index<42; cell_index++) >>> + { >>> + weekday = (cell_index+Date.first_day_of_week ) % 7; >>> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >>> {className: 'row_'+row_number++}); >>> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >>> + calendar_date_select: this, >>> + onmouseover: function () { >>> this.calendar_date_select.dayHover(this); }, >>> + onmouseout: function () { >>> this.calendar_date_select.dayHoverOut(this) }, >>> + onclick: function() { >>> this.calendar_date_select.updateSelectedDate(this, true); }, >>> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >>> //clear the class >>> + }, >>> + { cursor: "pointer" } >>> + )).build("div"); >>> + this.calendar_day_grid[cell_index]; >>> + } >>> + }, >>> + initButtonsDiv: function() >>> + { >>> + var buttons_div = this.buttons_div; >>> + if (this.options.get("time")) >>> + { >>> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >>> ""]] : []); >>> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >>> + + var t = new Date(); >>> + this.hour_select = new SelectBox(buttons_div, >>> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >>> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >>> + { + calendar_date_select: this, + onchange: >>> function() { this.calendar_date_select.updateSelectedDate( { hour: >>> this.value });}, >>> + className: "hour" + } >>> + ); >>> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >>> + var that = this; >>> + this.minute_select = new SelectBox(buttons_div, >>> + blank_time.concat($R(0,59).select(function(x){return (x % >>> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >>> Date.padded2(x), x]); } ) ), >>> + { + calendar_date_select: this, + onchange: >>> function() { this.calendar_date_select.updateSelectedDate( {minute: >>> this.value }) }, + className: "minute" + } >>> + ); >>> + + } else if (! this.options.get("buttons")) >>> buttons_div.remove(); >>> + + if (this.options.get("buttons")) { >>> + buttons_div.build("span", {innerHTML: " "}); >>> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >>> b = buttons_div.build("a", { >>> + innerHTML: _translations["Today"], >>> + href: "#", >>> + onclick: function() {this.today(false); return >>> false;}.bindAsEventListener(this) >>> + }); >>> + + if (this.options.get("time")=="mixed") >>> buttons_div.build("span", {innerHTML: " | ", className:"button_seperator"}) >>> + + if (this.options.get("time")) b = buttons_div.build("a", { >>> + innerHTML: _translations["Now"], >>> + href: "#", >>> + onclick: function() {this.today(true); return >>> false}.bindAsEventListener(this) >>> + }); >>> + + if (!this.options.get("embedded")) >>> + { >>> + buttons_div.build("span", {innerHTML: " "}); >>> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >>> "#", onclick: function() {this.close(); return >>> false;}.bindAsEventListener(this) }); >>> + } >>> + } >>> + }, >>> + refresh: function () >>> + { >>> + this.refreshMonthYear(); >>> + this.refreshCalendarGrid(); >>> + + this.setSelectedClass(); >>> + this.updateFooter(); >>> + }, >>> + refreshCalendarGrid: function () { >>> + this.beginning_date = new Date(this.date).stripTime(); >>> + this.beginning_date.setDate(1); >>> + this.beginning_date.setHours(12); // Prevent daylight savings time >>> boundaries from showing a duplicate day >>> + var pre_days = this.beginning_date.getDay() // draw some days before >>> the fact >>> + if (pre_days < 3) pre_days += 7; >>> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >>> + + var iterator = new Date(this.beginning_date); >>> + + var today = new Date().stripTime(); >>> + var this_month = this.date.getMonth(); >>> + vdc = this.options.get("valid_date_check"); >>> + for (var cell_index = 0;cell_index<42; cell_index++) >>> + { >>> + day = iterator.getDate(); month = iterator.getMonth(); >>> + cell = this.calendar_day_grid[cell_index]; >>> + Element.remove(cell.childNodes[0]); div = cell.build("div", >>> {innerHTML:day}); >>> + if (month!=this_month) div.className = "other"; >>> + cell.day = day; cell.month = month; cell.year = >>> iterator.getFullYear(); >>> + if (vdc) { if (vdc(iterator.stripTime())) >>> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >>> + iterator.setDate( day + 1); >>> + } >>> + + if (this.today_cell) this.today_cell.removeClassName("today"); >>> + + if ( $R( 0, 41 ).include(days_until = >>> this.beginning_date.stripTime().daysDistance(today)) ) { >>> + this.today_cell = this.calendar_day_grid[days_until]; >>> + this.today_cell.addClassName("today"); >>> + } >>> + }, >>> + refreshMonthYear: function() { >>> + var m = this.date.getMonth(); >>> + var y = this.date.getFullYear(); >>> + // set the month >>> + if (this.options.get("month_year") == "dropdowns") + { >>> + this.month_select.setValue(m, false); >>> + + var e = this.year_select.element; + if >>> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >>> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >>> this.populateYearRange(); >>> + + this.year_select.setValue(y); >>> + + } else { >>> + this.month_year_label.update( Date.months[m] + " " + y.toString() >>> ); >>> + } >>> + }, >>> + populateYearRange: function() { >>> + this.year_select.populate(this.yearRange().toArray()); >>> + }, >>> + yearRange: function() { >>> + if (!this.flexibleYearRange()) >>> + return $R(this.options.get("year_range")[0], >>> this.options.get("year_range")[1]); >>> + + var y = this.date.getFullYear(); >>> + return $R(y - this.options.get("year_range"), y + >>> this.options.get("year_range")); >>> + }, >>> + flexibleYearRange: function() { return >>> (typeof(this.options.get("year_range")) == "number"); }, >>> + validYear: function(year) { if (this.flexibleYearRange()) { return >>> true;} else { return this.yearRange().include(year);} }, >>> + dayHover: function(element) { >>> + var hover_date = new Date(this.selected_date); >>> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >>> hover_date.setDate(element.day); >>> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >>> + }, >>> + dayHoverOut: function(element) { this.updateFooter(); }, >>> + clearSelectedClass: function() {if (this.selected_cell) >>> this.selected_cell.removeClassName("selected");}, >>> + setSelectedClass: function() { >>> + if (!this.selection_made) return; >>> + this.clearSelectedClass() >>> + if ($R(0,42).include( days_until = >>> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >>> )) { >>> + this.selected_cell = this.calendar_day_grid[days_until]; >>> + this.selected_cell.addClassName("selected"); >>> + } >>> + }, >>> + reparse: function() { this.parseDate(); this.refresh(); }, >>> + dateString: function() { >>> + return (this.selection_made) ? >>> this.selected_date.toFormattedString(this.use_time) : " "; >>> + }, >>> + parseDate: function() >>> + { >>> + var value = $F(this.target_element).strip() >>> + this.selection_made = (value != ""); >>> + this.date = value=="" ? NaN : >>> Date.parseFormattedString(this.options.get("date") || value); >>> + if (isNaN(this.date)) this.date = new Date(); >>> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >>> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >>> : this.yearRange().end); >>> + this.selected_date = new Date(this.date); >>> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >>> + this.date.setDate(1); >>> + }, >>> + updateFooter:function(text) { if (!text) text = this.dateString(); >>> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >>> text }); }, >>> + updateSelectedDate:function(partsOrElement, via_click) { >>> + var parts = $H(partsOrElement); >>> + if ((this.target_element.disabled || this.target_element.readOnly) && >>> this.options.get("popup") != "force") return false; >>> + if (parts.get("day")) { >>> + var t_selected_date = this.selected_date, vdc = >>> this.options.get("valid_date_check"); >>> + for (var x = 0; x<=3; x++) >>> t_selected_date.setDate(parts.get("day")); >>> + t_selected_date.setYear(parts.get("year")); >>> + t_selected_date.setMonth(parts.get("month")); >>> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >>> false; } >>> + this.selected_date = t_selected_date; >>> + this.selection_made = true; >>> + } >>> + + if (!isNaN(parts.get("hour"))) >>> this.selected_date.setHours(parts.get("hour")); >>> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >>> Math.floor_to_interval(parts.get("minute"), >>> this.options.get("minute_interval")) ); >>> + if (parts.get("hour") === "" || parts.get("minute") === "") + >>> this.setUseTime(false); >>> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >>> + this.setUseTime(true); >>> + + this.updateFooter(); >>> + this.setSelectedClass(); >>> + + if (this.selection_made) this.updateValue(); >>> + if (this.closeOnClick()) { this.close(); } >>> + if (via_click && !this.options.get("embedded")) { >>> + if ((new Date() - this.last_click_at) < 333) this.close(); >>> + this.last_click_at = new Date(); >>> + } >>> + }, >>> + closeOnClick: function() { >>> + if (this.options.get("embedded")) return false; >>> + if (this.options.get("close_on_click")===nil ) >>> + return (this.options.get("time")) ? false : true >>> + else >>> + return (this.options.get("close_on_click")) >>> + }, >>> + navMonth: function(month) { (target_date = new >>> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >>> + navYear: function(year) { (target_date = new >>> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >>> + navTo: function(date) { >>> + if (!this.validYear(date.getFullYear())) return false; >>> + this.date = date; >>> + this.date.setDate(1); >>> + this.refresh(); >>> + this.callback("after_navigate", this.date); >>> + return true; >>> + }, >>> + setUseTime: function(turn_on) { >>> + this.use_time = this.options.get("time") && >>> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >>> true if time==true && time!="mixed" >>> + if (this.use_time && this.selected_date) { // only set hour/minute if >>> a date is already selected >>> + var minute = >>> Math.floor_to_interval(this.selected_date.getMinutes(), >>> this.options.get("minute_interval")); >>> + var hour = this.selected_date.getHours(); >>> + + this.hour_select.setValue(hour); >>> + this.minute_select.setValue(minute) >>> + } else if (this.options.get("time")=="mixed") { >>> + this.hour_select.setValue(""); this.minute_select.setValue(""); >>> + } >>> + }, >>> + updateValue: function() { >>> + var last_value = this.target_element.value; >>> + this.target_element.value = this.dateString(); >>> + if (last_value!=this.target_element.value) this.callback("onchange"); >>> + }, >>> + today: function(now) { >>> + var d = new Date(); this.date = new Date(); >>> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >>> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >>> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >>> this.updateSelectedDate(o, true); >>> + this.refresh(); >>> + }, >>> + close: function() { >>> + if (this.closed) return false; >>> + this.callback("before_close"); >>> + this.target_element.calendar_date_select = nil; >>> + Event.stopObserving(document, "mousedown", >>> this.closeIfClickedOut_handler); >>> + Event.stopObserving(document, "keypress", this.keyPress_handler); >>> + this.calendar_div.remove(); this.closed = true; >>> + if (this.iframe) this.iframe.remove(); >>> + if (this.target_element.type!="hidden") this.target_element.focus(); >>> + this.callback("after_close"); >>> + }, >>> + closeIfClickedOut: function(e) { >>> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >>> this.close(); >>> + }, >>> + keyPress: function(e) { >>> + if (e.keyCode==Event.KEY_ESC) this.close(); >>> + }, >>> + callback: function(name, param) { if (this.options.get(name)) { >>> this.options.get(name).bind(this.target_element)(param); } } >>> + + >>> +} >>> + >>> +// OFBiz addition: modified format_iso_date.js, included here for >>> convenience >>> +Date.prototype.toFormattedString = function(include_time) { >>> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + >>> 1) + "-" +Date.padded2(this.getDate()); >>> + if (include_time) { >>> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >>> ":" + Date.padded2(this.getSeconds()); >>> + if (this.getMilliseconds > 0) { >>> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >>> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >>> + } else { >>> + str += ".0"; >>> + } >>> + } >>> + return str; >>> +}; >>> + >>> +Date.parseFormattedString = function (string) { >>> + var arr_datetime = string.split(' '); >>> + var str_date = arr_datetime[0]; >>> + var str_time = arr_datetime[1]; >>> + >>> + var arr_date = str_date.split('-'); >>> + var dt_date = new Date(); >>> + dt_date.setDate(1); >>> + dt_date.setMonth(arr_date[1]-1); >>> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >>> (arr_date[0] < 40 ? 2000 : 1900); >>> + dt_date.setFullYear(arr_date[0]); >>> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >>> + dt_date.setDate(arr_date[2]); >>> + >>> + var arr_time = String(str_time ? str_time : '').split(':'); >>> + dt_date.setHours(arr_time[0]); >>> + dt_date.setMinutes(arr_time[1]); >>> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >>> + dt_date.setSeconds(arr_sec[0]); >>> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >>> + dt_date.setMilliseconds(arr_sec[1]); >>> + >>> + return dt_date; >>> +}; >>> + >>> +// OFBiz addition: functions to call the calendar >>> +function call_cal(target, datetime) { + new >>> CalendarDateSelect(target, {time:true, year_range:10} ); +} >>> + >>> +function call_cal_notime(target, datetime) { + new >>> CalendarDateSelect(target, {year_range:10} ); +} >>> \ No newline at end of file >>> >>> Propchange: >>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> >>> ------------------------------------------------------------------------------ >>> svn:eol-style = native >>> >>> Propchange: >>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> >>> ------------------------------------------------------------------------------ >>> svn:keywords = "Date Rev Author URL Id" >>> >>> Propchange: >>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>> >>> ------------------------------------------------------------------------------ >>> svn:mime-type = text/plain >>> >>> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >>> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >>> 01:45:10 2008 >>> @@ -18,9 +18,25 @@ >>> */ >>> // ================= FIELD LOOKUP METHODS ============================ >>> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >>> !document.getElementById)? true : false; >>> +var IE4 = (document.all && !document.getElementById)? true : false; >>> +var IE5 = (document.getElementById && document.all)? true : false; >>> +var NS6 = (document.getElementById && >>> navigator.appName.indexOf("Netscape")>=0 )? true: false; >>> +var mx, my; >>> + >>> +function moveobj(evt) { >>> + if (NS4 || NS6) { >>> + mx=evt.screenX; >>> + my=evt.screenY; >>> + } else if (IE5 || IE4) { >>> + mx=event.screenX; >>> + my=event.screenY; >>> + } >>> +} >>> var target = null; >>> var target2 = null; >>> +var lookups = []; >>> function call_fieldlookup(target, viewName, >>> formName,viewWidth,viewheight) { var fieldLookup = new >>> fieldLookup1(target); >>> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >>> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >>> 01:45:10 2008 >>> @@ -1722,41 +1722,138 @@ >>> /* ===== Table decorator - Calendar ===== */ >>> -.calendar { >>> -border-right: 0.1em solid #cccccc; >>> +.calendar_date_select { >>> + color:white; >>> + border:#777 1px solid; >>> + display:block; >>> + width:195px; >>> + z-index: 1000; >>> +} >>> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >>> window. This should always be just underneath .calendar_date_select */ >>> +iframe.ie6_blocker { >>> + position: absolute; >>> + z-index: 999; >>> } >>> -.calendar tr td { >>> -border-bottom: 0.1em solid #cccccc; >>> -border-left: 0.1em solid #cccccc; >>> -vertical-align: top; >>> -padding: 0.5em; >>> +.calendar_date_select thead th { >>> + font-weight:bold; >>> + background-color: #000; >>> + border-top:1px solid #777; >>> + border-bottom:2px solid #333; >>> + color: white !important; >>> } >>> -.calendar .header-row td { >>> -background-color: #69a9d9; >>> -border-bottom: 0.1em solid #cccccc; >>> -border-left: 0.1em solid #cccccc; >>> -color: #ffffff; >>> -height: auto; >>> -text-align: center; >>> +.calendar_date_select .cds_buttons { >>> + text-align:center; >>> + padding:5px 0px; >>> + background-color: #555; >>> } >>> -.calendar tr td .add-new { >>> -float: right; >>> +.calendar_date_select .cds_footer { >>> + background-color: black; >>> + padding:3px; >>> + font-size:12px; >>> + text-align:center; >>> } >>> -.calendar tr td .h1 { >>> -color: #000099; >>> -float: left; >>> +.calendar_date_select table { >>> + margin: 0px; >>> + padding: 0px; >>> } >>> -.calendar .current-period { >>> -background-color: #ffffcc; >>> + >>> +.calendar_date_select .cds_header { >>> + background-color: #ccc; >>> + border-bottom: 2px solid #aaa; >>> + text-align:center; >>> } >>> -.calendar .active-period { >>> -background-color: #eeeeee; >>> +.calendar_date_select .cds_header span { >>> + font-size:15px; >>> + color: black; >>> + font-weight: bold; >>> +} >>> + >>> +.calendar_date_select select { font-size:11px;} >>> + >>> +.calendar_date_select .cds_header a:hover { >>> + color: white; >>> +} >>> +.calendar_date_select .cds_header a { >>> + width:22px; >>> + height:20px; >>> + text-decoration: none; >>> + font-size:14px; >>> + color:black !important; >>> +} >>> + >>> +.calendar_date_select .cds_header a.prev { >>> + float:left; >>> +} >>> +.calendar_date_select .cds_header a.next { >>> + float:right; >>> +} >>> +.calendar_date_select .cds_header a.close { >>> + float:right; >>> + display:none; >>> +} >>> + >>> +.calendar_date_select .cds_header select.month { >>> + width:90px; >>> +} >>> + >>> +.calendar_date_select .cds_header select.year { >>> + width:61px; >>> +} >>> + >>> +.calendar_date_select .cds_buttons a { >>> + color: white; >>> + font-size: 9px; >>> +} >>> +.calendar_date_select td { >>> + font-size:12px; >>> + width: 24px; >>> + height: 21px; >>> + text-align:center; >>> + vertical-align: middle; >>> + background-color: #666666; >>> +} >>> +.calendar_date_select td.weekend { >>> + background-color: #606060; >>> +} >>> + >>> +.calendar_date_select td div { >>> + color: #fff; >>> +} >>> +.calendar_date_select td div.other { >>> + color: #888; >>> +} >>> +.calendar_date_select td.selected div { >>> + color:black; >>> +} >>> + >>> +.calendar_date_select tbody td { >>> + border-bottom: 1px solid #555; >>> +} >>> +.calendar_date_select td.selected { >>> + background-color:white; >>> +} >>> + >>> +.calendar_date_select td:hover { >>> + background-color:#ccc; >>> +} >>> + >>> +.calendar_date_select td.today { >>> + border: 1px dashed #999; >>> +} >>> + >>> +.calendar_date_select td.disabled div { >>> + color: #454545; >>> +} >>> + >>> + >>> +.fieldWithErrors .calendar_date_select { >>> + border: 2px solid red; >>> } >>> /* ======================= */ >>> >>> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>> (original) >>> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun >>> 5 01:45:10 2008 >>> @@ -19,9 +19,10 @@ >>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >>> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >>> Generic Title (Set subcontent 'title' on your content!)")}</title> >>> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - <script >>> language="javascript" src="/images/calendar1.js" >>> type="text/javascript"></script> >>> - <script language="javascript" src="/images/selectall.js" >>> type="text/javascript"></script> >>> + <script language="javascript" src="/images/prototypejs/prototype.js" >>> type="text/javascript"></script> >>> <script language="javascript" src="/images/fieldlookup.js" >>> type="text/javascript"></script> >>> + <script language="javascript" src="/images/selectall.js" >>> type="text/javascript"></script> >>> + <script language="javascript" src="/images/calendar_date_select.js" >>> type="text/javascript"></script> >>> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >>> <link rel="stylesheet" href="/ecommerce/images/blog.css" >>> type="text/css"/> >>> >>> Modified: >>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>> >>> ============================================================================== >>> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>> (original) >>> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >>> Jun 5 01:45:10 2008 >>> @@ -34,9 +34,10 @@ >>> of stylesheets to the first and second position --> >>> <set field="layoutSettings.styleSheets[+0]" >>> value="/images/maincss.css" global="true"/> >>> <!-- The default (global) java scripts --> >>> - <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar1.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/selectall.js" global="true"/> >>> <set field="layoutSettings.javaScripts[]" >>> value="/images/fieldlookup.js" global="true"/> >>> + <set field="layoutSettings.javaScripts[]" >>> value="/images/prototypejs/prototype.js" global="true"/> >>> + <set field="layoutSettings.javaScripts[]" >>> value="/images/calendar_date_select.js" global="true"/> >>> <set field="layoutSettings.companyName" >>> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >>> <set field="layoutSettings.companySubtitle" >>> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >>> >>> >>> >>> > |
Keep calendarTable.css for now - it s used for the fixed asset calendar.
I'm working on fixed assets right now, so I will take care of it. calendarstyles.css isn't being used anymore - it can be removed. -Adrian Jacques Le Roux wrote: > Adrian, Scott, > > Should we also keep images/webapp/images/calendarstyles.css and > images/webapp/images/calendarTable.css ? (Sorry it's late here, going to > bed :o) > > Jacques > > From: "Scott Gray" <[hidden email]> >> Sorry Adrian, I assumed it was the styles for the Tigra calendar because >> there is a separate css file (calendarstyles.css) that appeared to be >> referenced in the workeffort app. >> >> I can't fix it until I get home from work in about 8 hours. >> >> Regards >> Scott >> >> 2008/6/6 Adrian Crum <[hidden email]>: >> >>> Why was the calendar CSS class removed in this commit? Now the >>> workeffort >>> calendar screen layout is broken. >>> >>> -Adrian >>> >>> >>> [hidden email] wrote: >>> >>>> Author: lektran >>>> Date: Thu Jun 5 01:45:10 2008 >>>> New Revision: 663501 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >>>> Log: >>>> Replaced the Tigra calendar with Calendar Date Select ( >>>> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >>>> >>>> Added: >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> (with props) >>>> Removed: >>>> ofbiz/trunk/framework/images/webapp/images/calendar.html >>>> ofbiz/trunk/framework/images/webapp/images/calendar1.js >>>> Modified: >>>> ofbiz/trunk/LICENSE >>>> ofbiz/trunk/NOTICE >>>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>>> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>>> ofbiz/trunk/framework/common/widget/CommonScreens.xml >>>> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>>> ofbiz/trunk/framework/images/webapp/images/maincss.css >>>> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>> >>>> Modified: ofbiz/trunk/LICENSE >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/LICENSE (original) >>>> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >>>> @@ -1184,6 +1184,7 @@ >>>> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >>>> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >>>> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >>>> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> ========================================================================= >>>> >>>> The MIT License >>>> @@ -2205,24 +2206,6 @@ >>>> of California, with venue lying in Santa Clara County, California. >>>> >>>> >>>> ========================================================================= >>>> >>>> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >>>> -ofbiz/trunk/framework/images/webapp/images/calendar.html >>>> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >>>> -Tigra Calendar is licensed as follows: >>>> -========================================================================= >>>> >>>> -Title: Tigra Calendar >>>> -URL: http://www.softcomplex.com/products/tigra_calendar/ >>>> -Version: 3.2 >>>> -Date: 10/14/2002 (mm/dd/yyyy) >>>> -Feedback: [hidden email] (specify product title in the >>>> subject) >>>> -Note: Permission given to use this script in ANY kind of >>>> applications if >>>> - header lines are left unchanged. >>>> -Note: Script consists of two files: calendar?.js and calendar.html >>>> -About us: Our company provides offshore IT consulting services. >>>> - Contact us at [hidden email] if you have any programming >>>> task >>>> you >>>> - want to be handled by professionals. Our typical hourly rate is >>>> $20. >>>> - >>>> -========================================================================= >>>> >>>> Apache OFBiz includes the XML Schema files from the Open Applications >>>> Group, Inc >>>> NOTE: these files and the license are for an older version of the >>>> OAGIS >>>> specification, namely version 7.2.1. >>>> >>>> Modified: ofbiz/trunk/NOTICE >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/NOTICE (original) >>>> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >>>> @@ -255,16 +255,6 @@ >>>> framework/images/webapp/images/pngbehavior.htc >>>> >>>> >>>> ========================================================================= >>>> >>>> -== Tigra Calendar >>>> Notice == >>>> -========================================================================= >>>> >>>> - >>>> -This product includes files developed by >>>> -Softcomplex (www.softcomplex.com): >>>> - >>>> -framework\images\webapp\images\calendar.html >>>> -framework\images\webapp\images\calendar1.js >>>> - >>>> -========================================================================= >>>> >>>> == JSON-LIB >>>> Notice == >>>> ========================================================================= >>>> >>>> >>>> Modified: >>>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>> (original) >>>> +++ >>>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >>>> Jun 5 01:45:10 2008 >>>> @@ -21,10 +21,10 @@ >>>> <head> >>>> <title>Automation Groups - Main</title> >>>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >>>> - <script language='javascript' >>>> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >>>> type='text/javascript'></script> >>>> - <script language='javascript' >>>> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >>>> type='text/javascript'></script> >>>> - <script language='javascript' >>>> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >>>> type='text/javascript'></script> >>>> + <script language="javascript" >>>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>>> >>>> type="text/javascript"></script> >>>> <script language="javascript" >>>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>>> >>>> type="text/javascript"></script> >>>> <link rel='stylesheet' >>>> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >>>> type='text/css'> >>>> <link rel='stylesheet' >>>> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >>>> type='text/css'> >>>> <link rel='stylesheet' >>>> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >>>> type='text/css'> >>>> >>>> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>>> (original) >>>> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu >>>> Jun 5 >>>> 01:45:10 2008 >>>> @@ -41,7 +41,7 @@ >>>> <!-- NOTE: this should be included on each screen that >>>> uses it to avoid including it in all screens: --> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/fieldlookup.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/selectall.js" global="true"/> >>>> - <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar1.js" global="true"/> >>>> + <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar_date_select.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[+0]" >>>> value="/images/prototypejs/validation.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[+0]" >>>> value="/images/prototypejs/prototype.js" global="true"/> >>>> >>>> >>>> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>>> (original) >>>> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu >>>> Jun 5 >>>> 01:45:10 2008 >>>> @@ -22,9 +22,10 @@ >>>> <head> >>>> <meta http-equiv="Content-Type" content="text/html; >>>> charset=UTF-8"/> >>>> <title>${title}</title> >>>> - <script language="javascript" >>>> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>>> >>>> type="text/javascript"></script> >>>> <script language="javascript" >>>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>>> type="text/javascript"></script> >>>> <script language="javascript" >>>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>>> >>>> type="text/javascript"></script> >>>> <link rel="stylesheet" >>>> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >>>> type="text/css"/> >>>> <script language="JavaScript" type="text/javascript"> >>>> >>>> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >>>> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >>>> 01:45:10 2008 >>>> @@ -118,10 +118,10 @@ >>>> <set field="layoutSettings.rtlStyleSheets[+0]" >>>> value="/images/mainrtl.css" global="true"/> >>>> <!-- The default (global) java scripts --> >>>> <!-- NOTE: this should be included on each screen that >>>> uses it to avoid including it in all screens: <set >>>> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >>>> global="true"/> --> >>>> - <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar1.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/selectall.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/fieldlookup.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/prototypejs/prototype.js" global="true"/> >>>> + <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar_date_select.js" global="true"/> >>>> <!-- The default (global) shortcut icon --> >>>> <set field="layoutSettings.shortcutIcon" >>>> value="/images/ofbiz.ico" global="true"/> >>>> <!-- The default (global) logo --> >>>> @@ -227,10 +227,10 @@ >>>> <set field="layoutSettings.styleSheets[+0]" >>>> value="/images/maincss.css" global="true"/> >>>> <set field="layoutSettings.rtlStyleSheets[+0]" >>>> value="/images/mainrtl.css" global="true"/> >>>> <!-- The default (global) java scripts --> >>>> - <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar1.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/selectall.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/fieldlookup.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/prototypejs/prototype.js" global="true"/> >>>> + <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar_date_select.js" global="true"/> >>>> <!-- The default (global) shortcut icon --> >>>> <set field="layoutSettings.shortcutIcon" >>>> value="/images/ofbiz.ico" global="true"/> >>>> <!-- The settings below are used for xsl-fo screens --> >>>> >>>> Added: >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> (added) >>>> +++ >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >>>> Jun 5 01:45:10 2008 >>>> @@ -0,0 +1,480 @@ >>>> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >>>> +// Questions, comments, bugs? - email the Author - Tim Harper >>>> <"[hidden email]".gsub("see", "c")> +if (typeof Prototype == >>>> 'undefined') alert("CalendarDateSelect Error: Prototype could not be >>>> found. >>>> Please make sure that your application's layout includes >>>> prototype.js (.g. >>>> <%= javascript_include_tag :defaults %>) *before* it includes >>>> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >>>> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >>>> using earlier version of prototype, please use calendar_date_select >>>> version >>>> 1.8.3"); >>>> + >>>> +Element.addMethods({ >>>> + purgeChildren: function(element) { >>>> $A(element.childNodes).each(function(e){$(e).remove();}); }, >>>> + build: function(element, type, options, style) { >>>> + var newElement = Element.build(type, options, style); >>>> + element.appendChild(newElement); >>>> + return newElement; >>>> + } >>>> +}); >>>> + >>>> +Element.build = function(type, options, style) >>>> +{ >>>> + var e = $(document.createElement(type)); >>>> + $H(options).each(function(pair) { eval("e." + pair.key + " = >>>> pair.value" ); }); >>>> + if (style) + $H(style).each(function(pair) { eval("e.style." + >>>> pair.key + " = pair.value" ); }); >>>> + return e; >>>> +}; >>>> +nil = null; >>>> + >>>> +Date.one_day = 24*60*60*1000; >>>> +Date.weekdays = $w("S M T W T F S"); >>>> +Date.first_day_of_week = 0; >>>> +Date.months = $w("January February March April May June July August >>>> September October November December" ); >>>> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >>>> (hour < 10) padded2 = "0" + padded2; return padded2; } >>>> +Date.prototype.getPaddedMinutes = function() { return >>>> Date.padded2(this.getMinutes()); } >>>> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >>>> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >>>> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >>>> "AM" : "PM"; } >>>> +Date.prototype.stripTime = function() { return new >>>> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >>>> +Date.prototype.daysDistance = function(compare_date) { return >>>> Math.round((compare_date - this) / Date.one_day); }; >>>> +Date.prototype.toFormattedString = function(include_time){ >>>> + var hour, str; >>>> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >>>> this.getFullYear(); >>>> + + if (include_time) { hour = this.getHours(); str += " " + >>>> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + >>>> this.getAMPM() } >>>> + return str; >>>> +} >>>> +Date.parseFormattedString = function(string) { return new >>>> Date(string);} >>>> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >>>> +window.f_height = function() { return( [window.innerHeight ? >>>> window.innerHeight : null, document.documentElement ? >>>> document.documentElement.clientHeight : null, document.body ? >>>> document.body.clientHeight : null].select(function(x){return >>>> x>0}).first()||0); } >>>> +window.f_scrollTop = function() { return ([window.pageYOffset ? >>>> window.pageYOffset : null, document.documentElement ? >>>> document.documentElement.scrollTop : null, document.body ? >>>> document.body.scrollTop : null].select(function(x){return >>>> x>0}).first()||0 >>>> ); } >>>> + >>>> +_translations = { >>>> + "OK": "OK", >>>> + "Now": "Now", >>>> + "Today": "Today" >>>> +} >>>> +SelectBox = Class.create(); >>>> +SelectBox.prototype = { >>>> + initialize: function(parent_element, values, html_options, >>>> style_options) { >>>> + this.element = $(parent_element).build("select", html_options, >>>> style_options); >>>> + this.populate(values); >>>> + }, >>>> + populate: function(values) { >>>> + this.element.purgeChildren(); >>>> + var that = this; $A(values).each(function(pair) { if >>>> (typeof(pair)!="object") {pair = [pair, pair]}; >>>> that.element.build("option", >>>> { value: pair[1], innerHTML: pair[0]}) }); >>>> + }, >>>> + setValue: function(value) { >>>> + var e = this.element; >>>> + var matched = false; >>>> + $R(0, e.options.length - 1 ).each(function(i) { >>>> if(e.options[i].value==value.toString()) {e.selectedIndex = i; >>>> matched = >>>> true;}; } ); >>>> + return matched; >>>> + }, >>>> + getValue: function() { return $F(this.element)} >>>> +} >>>> +CalendarDateSelect = Class.create(); >>>> +CalendarDateSelect.prototype = { >>>> + initialize: function(target_element, options) { >>>> + this.target_element = $(target_element); // make sure it's an >>>> element, not a string >>>> + if (!this.target_element) { alert("Target element " + >>>> target_element >>>> + " not found!"); return false;} >>>> + if (this.target_element.tagName != "INPUT") this.target_element = >>>> this.target_element.down("INPUT") >>>> + + this.target_element.calendar_date_select = this; >>>> + this.last_click_at = 0; >>>> + // initialize the date control >>>> + this.options = $H({ >>>> + embedded: false, >>>> + popup: nil, >>>> + time: false, >>>> + buttons: true, >>>> + year_range: 10, >>>> + close_on_click: nil, >>>> + minute_interval: 5, >>>> + popup_by: this.target_element, >>>> + month_year: "dropdowns", >>>> + onchange: this.target_element.onchange, >>>> + valid_date_check: nil >>>> + }).merge(options || {}); >>>> + this.use_time = this.options.get("time"); >>>> + this.parseDate(); >>>> + this.callback("before_show") >>>> + this.initCalendarDiv(); >>>> + if(!this.options.get("embedded")) { >>>> + this.positionCalendarDiv() >>>> + // set the click handler to check if a user has clicked away >>>> from >>>> the document >>>> + Event.observe(document, "mousedown", >>>> this.closeIfClickedOut_handler >>>> = this.closeIfClickedOut.bindAsEventListener(this)); >>>> + Event.observe(document, "keypress", this.keyPress_handler = >>>> this.keyPress.bindAsEventListener(this)); >>>> + } >>>> + this.callback("after_show") >>>> + }, >>>> + positionCalendarDiv: function() { >>>> + var above = false; >>>> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = >>>> c_pos[0], >>>> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >>>> c_dim.height, c_width = c_dim.width; + var w_top = >>>> window.f_scrollTop(), >>>> w_height = window.f_height(); >>>> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), >>>> e_top >>>> = e_dim[1], e_left = e_dim[0], e_height = >>>> $(this.options.get("popup_by")).getDimensions().height, e_bottom = >>>> e_top + >>>> e_height; >>>> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >>>> e_bottom - c_height > w_top )) above = true; >>>> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >>>> c_height ) : ( e_top + e_height )).toString() + "px"; >>>> + + this.calendar_div.style.left = left_px; >>>> this.calendar_div.style.top = top_px; >>>> + + this.calendar_div.setStyle({visibility:""}); >>>> + + // draw an iframe behind the calendar -- ugly hack to make >>>> IE 6 >>>> happy >>>> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >>>> $(document.body).build("iframe", {src: "javascript:false", className: >>>> "ie6_blocker"}, { left: left_px, top: top_px, height: >>>> c_height.toString()+"px", width: c_width.toString()+"px", border: >>>> "0px"}) >>>> + }, >>>> + initCalendarDiv: function() { >>>> + if (this.options.get("embedded")) { >>>> + var parent = this.target_element.parentNode; >>>> + var style = {} >>>> + } else { >>>> + var parent = document.body >>>> + var style = { position:"absolute", visibility: "hidden", left:0, >>>> top:0 } >>>> + } >>>> + this.calendar_div = $(parent).build('div', {className: >>>> "calendar_date_select"}, style); >>>> + + var that = this; >>>> + // create the divs >>>> + $w("top header body buttons footer bottom").each(function(name) { >>>> + eval("var " + name + "_div = that." + name + "_div = >>>> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >>>> 'left'} ); "); >>>> + }); >>>> + + this.initHeaderDiv(); >>>> + this.initButtonsDiv(); >>>> + this.initCalendarGrid(); >>>> + this.updateFooter(" "); >>>> + + this.refresh(); >>>> + this.setUseTime(this.use_time); >>>> + }, >>>> + initHeaderDiv: function() { >>>> + var header_div = this.header_div; >>>> + this.close_button = header_div.build("a", { innerHTML: "x", >>>> href:"#", >>>> onclick:function () { this.close(); return false; >>>> }.bindAsEventListener(this), className: "close" }); >>>> + this.next_month_button = header_div.build("a", { innerHTML: >>>> ">", >>>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + >>>> 1 ); >>>> return false; }.bindAsEventListener(this), className: "next" }); >>>> + this.prev_month_button = header_div.build("a", { innerHTML: >>>> "<", >>>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - >>>> 1 ); >>>> return false; }.bindAsEventListener(this), className: "prev" }); >>>> + + if (this.options.get("month_year")=="dropdowns") { >>>> + this.month_select = new SelectBox(header_div, >>>> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: >>>> "month", >>>> onchange: function () { this.navMonth(this.month_select.getValue()) >>>> }.bindAsEventListener(this)}); + this.year_select = new >>>> SelectBox(header_div, [], {className: "year", onchange: function () { >>>> this.navYear(this.year_select.getValue()) >>>> }.bindAsEventListener(this)}); + >>>> this.populateYearRange(); >>>> + } else { >>>> + this.month_year_label = header_div.build("span") >>>> + } >>>> + }, >>>> + initCalendarGrid: function() { >>>> + var body_div = this.body_div; >>>> + this.calendar_day_grid = []; >>>> + var days_table = body_div.build("table", { cellPadding: "0px", >>>> cellSpacing: "0px", width: "100%" }) >>>> + // make the weekdays! >>>> + var weekdays_row = days_table.build("thead").build("tr"); >>>> + Date.weekdays.each( function(weekday) { + >>>> weekdays_row.build("th", {innerHTML: weekday}); >>>> + }); >>>> + + var days_tbody = days_table.build("tbody") >>>> + // Make the days! >>>> + var row_number = 0, weekday; >>>> + for(var cell_index = 0; cell_index<42; cell_index++) >>>> + { >>>> + weekday = (cell_index+Date.first_day_of_week ) % 7; >>>> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >>>> {className: 'row_'+row_number++}); >>>> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >>>> + calendar_date_select: this, >>>> + onmouseover: function () { >>>> this.calendar_date_select.dayHover(this); }, >>>> + onmouseout: function () { >>>> this.calendar_date_select.dayHoverOut(this) }, >>>> + onclick: function() { >>>> this.calendar_date_select.updateSelectedDate(this, true); }, >>>> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >>>> //clear the class >>>> + }, >>>> + { cursor: "pointer" } >>>> + )).build("div"); >>>> + this.calendar_day_grid[cell_index]; >>>> + } >>>> + }, >>>> + initButtonsDiv: function() >>>> + { >>>> + var buttons_div = this.buttons_div; >>>> + if (this.options.get("time")) >>>> + { >>>> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >>>> ""]] : []); >>>> + buttons_div.build("span", {innerHTML:"@", className: >>>> "at_sign"}); >>>> + + var t = new Date(); >>>> + this.hour_select = new SelectBox(buttons_div, >>>> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); >>>> return >>>> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >>>> + { + calendar_date_select: this, + onchange: >>>> function() { this.calendar_date_select.updateSelectedDate( { hour: >>>> this.value });}, >>>> + className: "hour" + } >>>> + ); >>>> + buttons_div.build("span", {innerHTML:":", className: >>>> "seperator"}); >>>> + var that = this; >>>> + this.minute_select = new SelectBox(buttons_div, >>>> + blank_time.concat($R(0,59).select(function(x){return (x % >>>> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >>>> Date.padded2(x), x]); } ) ), >>>> + { + calendar_date_select: this, + onchange: >>>> function() { this.calendar_date_select.updateSelectedDate( {minute: >>>> this.value }) }, + className: "minute" + } >>>> + ); >>>> + + } else if (! this.options.get("buttons")) >>>> buttons_div.remove(); >>>> + + if (this.options.get("buttons")) { >>>> + buttons_div.build("span", {innerHTML: " "}); >>>> + if (this.options.get("time")=="mixed" || >>>> !this.options.get("time")) >>>> b = buttons_div.build("a", { >>>> + innerHTML: _translations["Today"], >>>> + href: "#", >>>> + onclick: function() {this.today(false); return >>>> false;}.bindAsEventListener(this) >>>> + }); >>>> + + if (this.options.get("time")=="mixed") >>>> buttons_div.build("span", {innerHTML: " | ", >>>> className:"button_seperator"}) >>>> + + if (this.options.get("time")) b = >>>> buttons_div.build("a", { >>>> + innerHTML: _translations["Now"], >>>> + href: "#", >>>> + onclick: function() {this.today(true); return >>>> false}.bindAsEventListener(this) >>>> + }); >>>> + + if (!this.options.get("embedded")) >>>> + { >>>> + buttons_div.build("span", {innerHTML: " "}); >>>> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >>>> "#", onclick: function() {this.close(); return >>>> false;}.bindAsEventListener(this) }); >>>> + } >>>> + } >>>> + }, >>>> + refresh: function () >>>> + { >>>> + this.refreshMonthYear(); >>>> + this.refreshCalendarGrid(); >>>> + + this.setSelectedClass(); >>>> + this.updateFooter(); >>>> + }, >>>> + refreshCalendarGrid: function () { >>>> + this.beginning_date = new Date(this.date).stripTime(); >>>> + this.beginning_date.setDate(1); >>>> + this.beginning_date.setHours(12); // Prevent daylight savings time >>>> boundaries from showing a duplicate day >>>> + var pre_days = this.beginning_date.getDay() // draw some days >>>> before >>>> the fact >>>> + if (pre_days < 3) pre_days += 7; >>>> + this.beginning_date.setDate(1 - pre_days + >>>> Date.first_day_of_week); >>>> + + var iterator = new Date(this.beginning_date); >>>> + + var today = new Date().stripTime(); >>>> + var this_month = this.date.getMonth(); >>>> + vdc = this.options.get("valid_date_check"); >>>> + for (var cell_index = 0;cell_index<42; cell_index++) >>>> + { >>>> + day = iterator.getDate(); month = iterator.getMonth(); >>>> + cell = this.calendar_day_grid[cell_index]; >>>> + Element.remove(cell.childNodes[0]); div = cell.build("div", >>>> {innerHTML:day}); >>>> + if (month!=this_month) div.className = "other"; >>>> + cell.day = day; cell.month = month; cell.year = >>>> iterator.getFullYear(); >>>> + if (vdc) { if (vdc(iterator.stripTime())) >>>> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >>>> + iterator.setDate( day + 1); >>>> + } >>>> + + if (this.today_cell) >>>> this.today_cell.removeClassName("today"); >>>> + + if ( $R( 0, 41 ).include(days_until = >>>> this.beginning_date.stripTime().daysDistance(today)) ) { >>>> + this.today_cell = this.calendar_day_grid[days_until]; >>>> + this.today_cell.addClassName("today"); >>>> + } >>>> + }, >>>> + refreshMonthYear: function() { >>>> + var m = this.date.getMonth(); >>>> + var y = this.date.getFullYear(); >>>> + // set the month >>>> + if (this.options.get("month_year") == "dropdowns") + { >>>> + this.month_select.setValue(m, false); >>>> + + var e = this.year_select.element; + if >>>> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >>>> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >>>> this.populateYearRange(); >>>> + + this.year_select.setValue(y); >>>> + + } else { >>>> + this.month_year_label.update( Date.months[m] + " " + >>>> y.toString() >>>> ); >>>> + } >>>> + }, >>>> + populateYearRange: function() { >>>> + this.year_select.populate(this.yearRange().toArray()); >>>> + }, >>>> + yearRange: function() { >>>> + if (!this.flexibleYearRange()) >>>> + return $R(this.options.get("year_range")[0], >>>> this.options.get("year_range")[1]); >>>> + + var y = this.date.getFullYear(); >>>> + return $R(y - this.options.get("year_range"), y + >>>> this.options.get("year_range")); >>>> + }, >>>> + flexibleYearRange: function() { return >>>> (typeof(this.options.get("year_range")) == "number"); }, >>>> + validYear: function(year) { if (this.flexibleYearRange()) { return >>>> true;} else { return this.yearRange().include(year);} }, >>>> + dayHover: function(element) { >>>> + var hover_date = new Date(this.selected_date); >>>> + hover_date.setYear(element.year); >>>> hover_date.setMonth(element.month); >>>> hover_date.setDate(element.day); >>>> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >>>> + }, >>>> + dayHoverOut: function(element) { this.updateFooter(); }, >>>> + clearSelectedClass: function() {if (this.selected_cell) >>>> this.selected_cell.removeClassName("selected");}, >>>> + setSelectedClass: function() { >>>> + if (!this.selection_made) return; >>>> + this.clearSelectedClass() >>>> + if ($R(0,42).include( days_until = >>>> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >>>> >>>> )) { >>>> + this.selected_cell = this.calendar_day_grid[days_until]; >>>> + this.selected_cell.addClassName("selected"); >>>> + } >>>> + }, >>>> + reparse: function() { this.parseDate(); this.refresh(); }, >>>> + dateString: function() { >>>> + return (this.selection_made) ? >>>> this.selected_date.toFormattedString(this.use_time) : " "; >>>> + }, >>>> + parseDate: function() >>>> + { >>>> + var value = $F(this.target_element).strip() >>>> + this.selection_made = (value != ""); >>>> + this.date = value=="" ? NaN : >>>> Date.parseFormattedString(this.options.get("date") || value); >>>> + if (isNaN(this.date)) this.date = new Date(); >>>> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >>>> (this.date.getFullYear() < this.yearRange().start) ? >>>> this.yearRange().start >>>> : this.yearRange().end); >>>> + this.selected_date = new Date(this.date); >>>> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >>>> + this.date.setDate(1); >>>> + }, >>>> + updateFooter:function(text) { if (!text) text = this.dateString(); >>>> this.footer_div.purgeChildren(); this.footer_div.build("span", >>>> {innerHTML: >>>> text }); }, >>>> + updateSelectedDate:function(partsOrElement, via_click) { >>>> + var parts = $H(partsOrElement); >>>> + if ((this.target_element.disabled || >>>> this.target_element.readOnly) && >>>> this.options.get("popup") != "force") return false; >>>> + if (parts.get("day")) { >>>> + var t_selected_date = this.selected_date, vdc = >>>> this.options.get("valid_date_check"); >>>> + for (var x = 0; x<=3; x++) >>>> t_selected_date.setDate(parts.get("day")); >>>> + t_selected_date.setYear(parts.get("year")); >>>> + t_selected_date.setMonth(parts.get("month")); >>>> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >>>> false; } >>>> + this.selected_date = t_selected_date; >>>> + this.selection_made = true; >>>> + } >>>> + + if (!isNaN(parts.get("hour"))) >>>> this.selected_date.setHours(parts.get("hour")); >>>> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >>>> Math.floor_to_interval(parts.get("minute"), >>>> this.options.get("minute_interval")) ); >>>> + if (parts.get("hour") === "" || parts.get("minute") === "") + >>>> this.setUseTime(false); >>>> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >>>> + this.setUseTime(true); >>>> + + this.updateFooter(); >>>> + this.setSelectedClass(); >>>> + + if (this.selection_made) this.updateValue(); >>>> + if (this.closeOnClick()) { this.close(); } >>>> + if (via_click && !this.options.get("embedded")) { >>>> + if ((new Date() - this.last_click_at) < 333) this.close(); >>>> + this.last_click_at = new Date(); >>>> + } >>>> + }, >>>> + closeOnClick: function() { >>>> + if (this.options.get("embedded")) return false; >>>> + if (this.options.get("close_on_click")===nil ) >>>> + return (this.options.get("time")) ? false : true >>>> + else >>>> + return (this.options.get("close_on_click")) >>>> + }, >>>> + navMonth: function(month) { (target_date = new >>>> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >>>> + navYear: function(year) { (target_date = new >>>> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >>>> + navTo: function(date) { >>>> + if (!this.validYear(date.getFullYear())) return false; >>>> + this.date = date; >>>> + this.date.setDate(1); >>>> + this.refresh(); >>>> + this.callback("after_navigate", this.date); >>>> + return true; >>>> + }, >>>> + setUseTime: function(turn_on) { >>>> + this.use_time = this.options.get("time") && >>>> (this.options.get("time")=="mixed" ? turn_on : true) // force >>>> use_time to >>>> true if time==true && time!="mixed" >>>> + if (this.use_time && this.selected_date) { // only set >>>> hour/minute if >>>> a date is already selected >>>> + var minute = >>>> Math.floor_to_interval(this.selected_date.getMinutes(), >>>> this.options.get("minute_interval")); >>>> + var hour = this.selected_date.getHours(); >>>> + + this.hour_select.setValue(hour); >>>> + this.minute_select.setValue(minute) >>>> + } else if (this.options.get("time")=="mixed") { >>>> + this.hour_select.setValue(""); this.minute_select.setValue(""); >>>> + } >>>> + }, >>>> + updateValue: function() { >>>> + var last_value = this.target_element.value; >>>> + this.target_element.value = this.dateString(); >>>> + if (last_value!=this.target_element.value) >>>> this.callback("onchange"); >>>> + }, >>>> + today: function(now) { >>>> + var d = new Date(); this.date = new Date(); >>>> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >>>> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >>>> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >>>> this.updateSelectedDate(o, true); >>>> + this.refresh(); >>>> + }, >>>> + close: function() { >>>> + if (this.closed) return false; >>>> + this.callback("before_close"); >>>> + this.target_element.calendar_date_select = nil; >>>> + Event.stopObserving(document, "mousedown", >>>> this.closeIfClickedOut_handler); >>>> + Event.stopObserving(document, "keypress", this.keyPress_handler); >>>> + this.calendar_div.remove(); this.closed = true; >>>> + if (this.iframe) this.iframe.remove(); >>>> + if (this.target_element.type!="hidden") >>>> this.target_element.focus(); >>>> + this.callback("after_close"); >>>> + }, >>>> + closeIfClickedOut: function(e) { >>>> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >>>> this.close(); >>>> + }, >>>> + keyPress: function(e) { >>>> + if (e.keyCode==Event.KEY_ESC) this.close(); >>>> + }, >>>> + callback: function(name, param) { if (this.options.get(name)) { >>>> this.options.get(name).bind(this.target_element)(param); } } >>>> + + >>>> +} >>>> + >>>> +// OFBiz addition: modified format_iso_date.js, included here for >>>> convenience >>>> +Date.prototype.toFormattedString = function(include_time) { >>>> + var str = this.getFullYear() + "-" + >>>> Date.padded2(this.getMonth() + >>>> 1) + "-" +Date.padded2(this.getDate()); >>>> + if (include_time) { >>>> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >>>> ":" + Date.padded2(this.getSeconds()); >>>> + if (this.getMilliseconds > 0) { >>>> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >>>> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >>>> + } else { >>>> + str += ".0"; >>>> + } >>>> + } >>>> + return str; >>>> +}; >>>> + >>>> +Date.parseFormattedString = function (string) { >>>> + var arr_datetime = string.split(' '); >>>> + var str_date = arr_datetime[0]; >>>> + var str_time = arr_datetime[1]; >>>> + >>>> + var arr_date = str_date.split('-'); >>>> + var dt_date = new Date(); >>>> + dt_date.setDate(1); >>>> + dt_date.setMonth(arr_date[1]-1); >>>> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >>>> (arr_date[0] < 40 ? 2000 : 1900); >>>> + dt_date.setFullYear(arr_date[0]); >>>> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >>>> + dt_date.setDate(arr_date[2]); >>>> + >>>> + var arr_time = String(str_time ? str_time : '').split(':'); >>>> + dt_date.setHours(arr_time[0]); >>>> + dt_date.setMinutes(arr_time[1]); >>>> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >>>> + dt_date.setSeconds(arr_sec[0]); >>>> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >>>> + dt_date.setMilliseconds(arr_sec[1]); >>>> + >>>> + return dt_date; >>>> +}; >>>> + >>>> +// OFBiz addition: functions to call the calendar >>>> +function call_cal(target, datetime) { + new >>>> CalendarDateSelect(target, {time:true, year_range:10} ); +} >>>> + >>>> +function call_cal_notime(target, datetime) { + new >>>> CalendarDateSelect(target, {year_range:10} ); +} >>>> \ No newline at end of file >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> svn:eol-style = native >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> svn:keywords = "Date Rev Author URL Id" >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> svn:mime-type = text/plain >>>> >>>> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>>> (original) >>>> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu >>>> Jun 5 >>>> 01:45:10 2008 >>>> @@ -18,9 +18,25 @@ >>>> */ >>>> // ================= FIELD LOOKUP METHODS >>>> ============================ >>>> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >>>> !document.getElementById)? true : false; >>>> +var IE4 = (document.all && !document.getElementById)? true : false; >>>> +var IE5 = (document.getElementById && document.all)? true : false; >>>> +var NS6 = (document.getElementById && >>>> navigator.appName.indexOf("Netscape")>=0 )? true: false; >>>> +var mx, my; >>>> + >>>> +function moveobj(evt) { >>>> + if (NS4 || NS6) { >>>> + mx=evt.screenX; >>>> + my=evt.screenY; >>>> + } else if (IE5 || IE4) { >>>> + mx=event.screenX; >>>> + my=event.screenY; >>>> + } >>>> +} >>>> var target = null; >>>> var target2 = null; >>>> +var lookups = []; >>>> function call_fieldlookup(target, viewName, >>>> formName,viewWidth,viewheight) { var fieldLookup = new >>>> fieldLookup1(target); >>>> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >>>> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >>>> 01:45:10 2008 >>>> @@ -1722,41 +1722,138 @@ >>>> /* ===== Table decorator - Calendar ===== */ >>>> -.calendar { >>>> -border-right: 0.1em solid #cccccc; >>>> +.calendar_date_select { >>>> + color:white; >>>> + border:#777 1px solid; >>>> + display:block; >>>> + width:195px; >>>> + z-index: 1000; >>>> +} >>>> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >>>> window. This should always be just underneath .calendar_date_select */ >>>> +iframe.ie6_blocker { >>>> + position: absolute; >>>> + z-index: 999; >>>> } >>>> -.calendar tr td { >>>> -border-bottom: 0.1em solid #cccccc; >>>> -border-left: 0.1em solid #cccccc; >>>> -vertical-align: top; >>>> -padding: 0.5em; >>>> +.calendar_date_select thead th { >>>> + font-weight:bold; >>>> + background-color: #000; >>>> + border-top:1px solid #777; >>>> + border-bottom:2px solid #333; >>>> + color: white !important; >>>> } >>>> -.calendar .header-row td { >>>> -background-color: #69a9d9; >>>> -border-bottom: 0.1em solid #cccccc; >>>> -border-left: 0.1em solid #cccccc; >>>> -color: #ffffff; >>>> -height: auto; >>>> -text-align: center; >>>> +.calendar_date_select .cds_buttons { >>>> + text-align:center; >>>> + padding:5px 0px; >>>> + background-color: #555; >>>> } >>>> -.calendar tr td .add-new { >>>> -float: right; >>>> +.calendar_date_select .cds_footer { >>>> + background-color: black; >>>> + padding:3px; >>>> + font-size:12px; >>>> + text-align:center; >>>> } >>>> -.calendar tr td .h1 { >>>> -color: #000099; >>>> -float: left; >>>> +.calendar_date_select table { >>>> + margin: 0px; >>>> + padding: 0px; >>>> } >>>> -.calendar .current-period { >>>> -background-color: #ffffcc; >>>> + >>>> +.calendar_date_select .cds_header { >>>> + background-color: #ccc; >>>> + border-bottom: 2px solid #aaa; >>>> + text-align:center; >>>> } >>>> -.calendar .active-period { >>>> -background-color: #eeeeee; >>>> +.calendar_date_select .cds_header span { >>>> + font-size:15px; >>>> + color: black; >>>> + font-weight: bold; >>>> +} >>>> + >>>> +.calendar_date_select select { font-size:11px;} >>>> + >>>> +.calendar_date_select .cds_header a:hover { >>>> + color: white; >>>> +} >>>> +.calendar_date_select .cds_header a { >>>> + width:22px; >>>> + height:20px; >>>> + text-decoration: none; >>>> + font-size:14px; >>>> + color:black !important; >>>> +} >>>> + >>>> +.calendar_date_select .cds_header a.prev { >>>> + float:left; >>>> +} >>>> +.calendar_date_select .cds_header a.next { >>>> + float:right; >>>> +} >>>> +.calendar_date_select .cds_header a.close { >>>> + float:right; >>>> + display:none; >>>> +} >>>> + >>>> +.calendar_date_select .cds_header select.month { >>>> + width:90px; >>>> +} >>>> + >>>> +.calendar_date_select .cds_header select.year { >>>> + width:61px; >>>> +} >>>> + >>>> +.calendar_date_select .cds_buttons a { >>>> + color: white; >>>> + font-size: 9px; >>>> +} >>>> +.calendar_date_select td { >>>> + font-size:12px; >>>> + width: 24px; >>>> + height: 21px; >>>> + text-align:center; >>>> + vertical-align: middle; >>>> + background-color: #666666; >>>> +} >>>> +.calendar_date_select td.weekend { >>>> + background-color: #606060; >>>> +} >>>> + >>>> +.calendar_date_select td div { >>>> + color: #fff; >>>> +} >>>> +.calendar_date_select td div.other { >>>> + color: #888; >>>> +} >>>> +.calendar_date_select td.selected div { >>>> + color:black; >>>> +} >>>> + >>>> +.calendar_date_select tbody td { >>>> + border-bottom: 1px solid #555; >>>> +} >>>> +.calendar_date_select td.selected { >>>> + background-color:white; >>>> +} >>>> + >>>> +.calendar_date_select td:hover { >>>> + background-color:#ccc; >>>> +} >>>> + >>>> +.calendar_date_select td.today { >>>> + border: 1px dashed #999; >>>> +} >>>> + >>>> +.calendar_date_select td.disabled div { >>>> + color: #454545; >>>> +} >>>> + >>>> + >>>> +.fieldWithErrors .calendar_date_select { >>>> + border: 2px solid red; >>>> } >>>> /* ======================= */ >>>> >>>> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>> (original) >>>> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu >>>> Jun >>>> 5 01:45:10 2008 >>>> @@ -19,9 +19,10 @@ >>>> <meta http-equiv="Content-Type" content="text/html; >>>> charset=UTF-8"/> >>>> <title>${(decoratedContent.subcontent.title.render)?default("CMS >>>> Site >>>> Generic Title (Set subcontent 'title' on your content!)")}</title> >>>> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - >>>> <script >>>> language="javascript" src="/images/calendar1.js" >>>> type="text/javascript"></script> >>>> - <script language="javascript" src="/images/selectall.js" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="/images/prototypejs/prototype.js" >>>> type="text/javascript"></script> >>>> <script language="javascript" src="/images/fieldlookup.js" >>>> type="text/javascript"></script> >>>> + <script language="javascript" src="/images/selectall.js" >>>> type="text/javascript"></script> >>>> + <script language="javascript" >>>> src="/images/calendar_date_select.js" >>>> type="text/javascript"></script> >>>> <link rel="stylesheet" href="/images/ecommain.css" >>>> type="text/css"/> >>>> <link rel="stylesheet" href="/ecommerce/images/blog.css" >>>> type="text/css"/> >>>> >>>> Modified: >>>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>> >>>> >>>> ============================================================================== >>>> >>>> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>> (original) >>>> +++ >>>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >>>> Jun 5 01:45:10 2008 >>>> @@ -34,9 +34,10 @@ >>>> of stylesheets to the first and second position >>>> --> >>>> <set field="layoutSettings.styleSheets[+0]" >>>> value="/images/maincss.css" global="true"/> >>>> <!-- The default (global) java scripts --> >>>> - <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar1.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/selectall.js" global="true"/> >>>> <set field="layoutSettings.javaScripts[]" >>>> value="/images/fieldlookup.js" global="true"/> >>>> + <set field="layoutSettings.javaScripts[]" >>>> value="/images/prototypejs/prototype.js" global="true"/> >>>> + <set field="layoutSettings.javaScripts[]" >>>> value="/images/calendar_date_select.js" global="true"/> >>>> <set field="layoutSettings.companyName" >>>> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >>>> <set field="layoutSettings.companySubtitle" >>>> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >>>> >>>> >>>> >>>> >> > > |
In reply to this post by Ashish Vijaywargiya
Thanks for pointing it out Adrian, I've restored the workeffort calendar
styles in rev. 663842. Regards Scott 2008/6/6 Adrian Crum <[hidden email]>: > Why was the calendar CSS class removed in this commit? Now the workeffort > calendar screen layout is broken. > > -Adrian > > > [hidden email] wrote: > >> Author: lektran >> Date: Thu Jun 5 01:45:10 2008 >> New Revision: 663501 >> >> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >> Log: >> Replaced the Tigra calendar with Calendar Date Select ( >> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >> >> Added: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (with props) >> Removed: >> ofbiz/trunk/framework/images/webapp/images/calendar.html >> ofbiz/trunk/framework/images/webapp/images/calendar1.js >> Modified: >> ofbiz/trunk/LICENSE >> ofbiz/trunk/NOTICE >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> ofbiz/trunk/framework/common/widget/CommonScreens.xml >> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> ofbiz/trunk/framework/images/webapp/images/maincss.css >> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> >> Modified: ofbiz/trunk/LICENSE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/LICENSE (original) >> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >> @@ -1184,6 +1184,7 @@ >> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> ========================================================================= >> The MIT License >> @@ -2205,24 +2206,6 @@ >> of California, with venue lying in Santa Clara County, California. >> >> ========================================================================= >> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >> -ofbiz/trunk/framework/images/webapp/images/calendar.html >> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >> -Tigra Calendar is licensed as follows: >> -========================================================================= >> -Title: Tigra Calendar >> -URL: http://www.softcomplex.com/products/tigra_calendar/ >> -Version: 3.2 >> -Date: 10/14/2002 (mm/dd/yyyy) >> -Feedback: [hidden email] (specify product title in the >> subject) >> -Note: Permission given to use this script in ANY kind of applications if >> - header lines are left unchanged. >> -Note: Script consists of two files: calendar?.js and calendar.html >> -About us: Our company provides offshore IT consulting services. >> - Contact us at [hidden email] if you have any programming task >> you >> - want to be handled by professionals. Our typical hourly rate is $20. >> - >> -========================================================================= >> Apache OFBiz includes the XML Schema files from the Open Applications >> Group, Inc >> NOTE: these files and the license are for an older version of the OAGIS >> specification, namely version 7.2.1. >> >> Modified: ofbiz/trunk/NOTICE >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/NOTICE (original) >> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >> @@ -255,16 +255,6 @@ >> framework/images/webapp/images/pngbehavior.htc >> >> ========================================================================= >> -== Tigra Calendar Notice == >> -========================================================================= >> - >> -This product includes files developed by >> -Softcomplex (www.softcomplex.com): >> - >> -framework\images\webapp\images\calendar.html >> -framework\images\webapp\images\calendar1.js >> - >> -========================================================================= >> == JSON-LIB Notice == >> ========================================================================= >> >> Modified: >> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >> (original) >> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >> Jun 5 01:45:10 2008 >> @@ -21,10 +21,10 @@ >> <head> >> <title>Automation Groups - Main</title> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> - <script language='javascript' >> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >> type='text/javascript'></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >> type='text/css'> >> <link rel='stylesheet' >> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >> type='text/css'> >> >> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -41,7 +41,7 @@ >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: --> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/validation.js" global="true"/> >> <set field="layoutSettings.javaScripts[+0]" >> value="/images/prototypejs/prototype.js" global="true"/> >> >> >> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >> 01:45:10 2008 >> @@ -22,9 +22,10 @@ >> <head> >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${title}</title> >> - <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <script language="javascript" >> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> + <script language="javascript" >> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >> type="text/javascript"></script> >> <link rel="stylesheet" >> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >> type="text/css"/> >> <script language="JavaScript" type="text/javascript"> >> >> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >> 01:45:10 2008 >> @@ -118,10 +118,10 @@ >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> <!-- NOTE: this should be included on each screen that >> uses it to avoid including it in all screens: <set >> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >> global="true"/> --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The default (global) logo --> >> @@ -227,10 +227,10 @@ >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <set field="layoutSettings.rtlStyleSheets[+0]" >> value="/images/mainrtl.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <!-- The default (global) shortcut icon --> >> <set field="layoutSettings.shortcutIcon" >> value="/images/ofbiz.ico" global="true"/> >> <!-- The settings below are used for xsl-fo screens --> >> >> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> (added) >> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >> Jun 5 01:45:10 2008 >> @@ -0,0 +1,480 @@ >> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >> +// Questions, comments, bugs? - email the Author - Tim Harper >> <"[hidden email]".gsub("see", "c")> +if (typeof Prototype == >> 'undefined') alert("CalendarDateSelect Error: Prototype could not be found. >> Please make sure that your application's layout includes prototype.js (.g. >> <%= javascript_include_tag :defaults %>) *before* it includes >> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >> using earlier version of prototype, please use calendar_date_select version >> 1.8.3"); >> + >> +Element.addMethods({ >> + purgeChildren: function(element) { >> $A(element.childNodes).each(function(e){$(e).remove();}); }, >> + build: function(element, type, options, style) { >> + var newElement = Element.build(type, options, style); >> + element.appendChild(newElement); >> + return newElement; >> + } >> +}); >> + >> +Element.build = function(type, options, style) >> +{ >> + var e = $(document.createElement(type)); >> + $H(options).each(function(pair) { eval("e." + pair.key + " = >> pair.value" ); }); >> + if (style) + $H(style).each(function(pair) { eval("e.style." + >> pair.key + " = pair.value" ); }); >> + return e; >> +}; >> +nil = null; >> + >> +Date.one_day = 24*60*60*1000; >> +Date.weekdays = $w("S M T W T F S"); >> +Date.first_day_of_week = 0; >> +Date.months = $w("January February March April May June July August >> September October November December" ); >> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >> (hour < 10) padded2 = "0" + padded2; return padded2; } >> +Date.prototype.getPaddedMinutes = function() { return >> Date.padded2(this.getMinutes()); } >> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >> "AM" : "PM"; } >> +Date.prototype.stripTime = function() { return new >> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >> +Date.prototype.daysDistance = function(compare_date) { return >> Math.round((compare_date - this) / Date.one_day); }; >> +Date.prototype.toFormattedString = function(include_time){ >> + var hour, str; >> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >> this.getFullYear(); >> + + if (include_time) { hour = this.getHours(); str += " " + >> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >> + return str; >> +} >> +Date.parseFormattedString = function(string) { return new Date(string);} >> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >> +window.f_height = function() { return( [window.innerHeight ? >> window.innerHeight : null, document.documentElement ? >> document.documentElement.clientHeight : null, document.body ? >> document.body.clientHeight : null].select(function(x){return >> x>0}).first()||0); } >> +window.f_scrollTop = function() { return ([window.pageYOffset ? >> window.pageYOffset : null, document.documentElement ? >> document.documentElement.scrollTop : null, document.body ? >> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >> ); } >> + >> +_translations = { >> + "OK": "OK", >> + "Now": "Now", >> + "Today": "Today" >> +} >> +SelectBox = Class.create(); >> +SelectBox.prototype = { >> + initialize: function(parent_element, values, html_options, >> style_options) { >> + this.element = $(parent_element).build("select", html_options, >> style_options); >> + this.populate(values); >> + }, >> + populate: function(values) { >> + this.element.purgeChildren(); >> + var that = this; $A(values).each(function(pair) { if >> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >> { value: pair[1], innerHTML: pair[0]}) }); >> + }, >> + setValue: function(value) { >> + var e = this.element; >> + var matched = false; >> + $R(0, e.options.length - 1 ).each(function(i) { >> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >> true;}; } ); >> + return matched; >> + }, >> + getValue: function() { return $F(this.element)} >> +} >> +CalendarDateSelect = Class.create(); >> +CalendarDateSelect.prototype = { >> + initialize: function(target_element, options) { >> + this.target_element = $(target_element); // make sure it's an >> element, not a string >> + if (!this.target_element) { alert("Target element " + target_element >> + " not found!"); return false;} >> + if (this.target_element.tagName != "INPUT") this.target_element = >> this.target_element.down("INPUT") >> + + this.target_element.calendar_date_select = this; >> + this.last_click_at = 0; >> + // initialize the date control >> + this.options = $H({ >> + embedded: false, >> + popup: nil, >> + time: false, >> + buttons: true, >> + year_range: 10, >> + close_on_click: nil, >> + minute_interval: 5, >> + popup_by: this.target_element, >> + month_year: "dropdowns", >> + onchange: this.target_element.onchange, >> + valid_date_check: nil >> + }).merge(options || {}); >> + this.use_time = this.options.get("time"); >> + this.parseDate(); >> + this.callback("before_show") >> + this.initCalendarDiv(); >> + if(!this.options.get("embedded")) { >> + this.positionCalendarDiv() >> + // set the click handler to check if a user has clicked away from >> the document >> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >> = this.closeIfClickedOut.bindAsEventListener(this)); >> + Event.observe(document, "keypress", this.keyPress_handler = >> this.keyPress.bindAsEventListener(this)); >> + } >> + this.callback("after_show") >> + }, >> + positionCalendarDiv: function() { >> + var above = false; >> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >> c_dim.height, c_width = c_dim.width; + var w_top = window.f_scrollTop(), >> w_height = window.f_height(); >> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >> = e_dim[1], e_left = e_dim[0], e_height = >> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >> e_height; >> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >> e_bottom - c_height > w_top )) above = true; >> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >> c_height ) : ( e_top + e_height )).toString() + "px"; >> + + this.calendar_div.style.left = left_px; >> this.calendar_div.style.top = top_px; >> + + this.calendar_div.setStyle({visibility:""}); >> + + // draw an iframe behind the calendar -- ugly hack to make IE 6 >> happy >> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >> $(document.body).build("iframe", {src: "javascript:false", className: >> "ie6_blocker"}, { left: left_px, top: top_px, height: >> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >> + }, >> + initCalendarDiv: function() { >> + if (this.options.get("embedded")) { >> + var parent = this.target_element.parentNode; >> + var style = {} >> + } else { >> + var parent = document.body >> + var style = { position:"absolute", visibility: "hidden", left:0, >> top:0 } >> + } >> + this.calendar_div = $(parent).build('div', {className: >> "calendar_date_select"}, style); >> + + var that = this; >> + // create the divs >> + $w("top header body buttons footer bottom").each(function(name) { >> + eval("var " + name + "_div = that." + name + "_div = >> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >> 'left'} ); "); >> + }); >> + + this.initHeaderDiv(); >> + this.initButtonsDiv(); >> + this.initCalendarGrid(); >> + this.updateFooter(" "); >> + + this.refresh(); >> + this.setUseTime(this.use_time); >> + }, >> + initHeaderDiv: function() { >> + var header_div = this.header_div; >> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >> onclick:function () { this.close(); return false; >> }.bindAsEventListener(this), className: "close" }); >> + this.next_month_button = header_div.build("a", { innerHTML: ">", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >> return false; }.bindAsEventListener(this), className: "next" }); >> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >> return false; }.bindAsEventListener(this), className: "prev" }); >> + + if (this.options.get("month_year")=="dropdowns") { >> + this.month_select = new SelectBox(header_div, >> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >> onchange: function () { this.navMonth(this.month_select.getValue()) >> }.bindAsEventListener(this)}); + this.year_select = new >> SelectBox(header_div, [], {className: "year", onchange: function () { >> this.navYear(this.year_select.getValue()) }.bindAsEventListener(this)}); + >> this.populateYearRange(); >> + } else { >> + this.month_year_label = header_div.build("span") >> + } >> + }, >> + initCalendarGrid: function() { >> + var body_div = this.body_div; >> + this.calendar_day_grid = []; >> + var days_table = body_div.build("table", { cellPadding: "0px", >> cellSpacing: "0px", width: "100%" }) >> + // make the weekdays! >> + var weekdays_row = days_table.build("thead").build("tr"); >> + Date.weekdays.each( function(weekday) { + >> weekdays_row.build("th", {innerHTML: weekday}); >> + }); >> + + var days_tbody = days_table.build("tbody") >> + // Make the days! >> + var row_number = 0, weekday; >> + for(var cell_index = 0; cell_index<42; cell_index++) >> + { >> + weekday = (cell_index+Date.first_day_of_week ) % 7; >> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >> {className: 'row_'+row_number++}); >> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >> + calendar_date_select: this, >> + onmouseover: function () { >> this.calendar_date_select.dayHover(this); }, >> + onmouseout: function () { >> this.calendar_date_select.dayHoverOut(this) }, >> + onclick: function() { >> this.calendar_date_select.updateSelectedDate(this, true); }, >> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >> //clear the class >> + }, >> + { cursor: "pointer" } >> + )).build("div"); >> + this.calendar_day_grid[cell_index]; >> + } >> + }, >> + initButtonsDiv: function() >> + { >> + var buttons_div = this.buttons_div; >> + if (this.options.get("time")) >> + { >> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >> ""]] : []); >> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >> + + var t = new Date(); >> + this.hour_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( { hour: >> this.value });}, >> + className: "hour" + } >> + ); >> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >> + var that = this; >> + this.minute_select = new SelectBox(buttons_div, >> + blank_time.concat($R(0,59).select(function(x){return (x % >> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >> Date.padded2(x), x]); } ) ), >> + { + calendar_date_select: this, + onchange: >> function() { this.calendar_date_select.updateSelectedDate( {minute: >> this.value }) }, + className: "minute" + } >> + ); >> + + } else if (! this.options.get("buttons")) >> buttons_div.remove(); >> + + if (this.options.get("buttons")) { >> + buttons_div.build("span", {innerHTML: " "}); >> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >> b = buttons_div.build("a", { >> + innerHTML: _translations["Today"], >> + href: "#", >> + onclick: function() {this.today(false); return >> false;}.bindAsEventListener(this) >> + }); >> + + if (this.options.get("time")=="mixed") >> buttons_div.build("span", {innerHTML: " | ", className:"button_seperator"}) >> + + if (this.options.get("time")) b = buttons_div.build("a", { >> + innerHTML: _translations["Now"], >> + href: "#", >> + onclick: function() {this.today(true); return >> false}.bindAsEventListener(this) >> + }); >> + + if (!this.options.get("embedded")) >> + { >> + buttons_div.build("span", {innerHTML: " "}); >> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >> "#", onclick: function() {this.close(); return >> false;}.bindAsEventListener(this) }); >> + } >> + } >> + }, >> + refresh: function () >> + { >> + this.refreshMonthYear(); >> + this.refreshCalendarGrid(); >> + + this.setSelectedClass(); >> + this.updateFooter(); >> + }, >> + refreshCalendarGrid: function () { >> + this.beginning_date = new Date(this.date).stripTime(); >> + this.beginning_date.setDate(1); >> + this.beginning_date.setHours(12); // Prevent daylight savings time >> boundaries from showing a duplicate day >> + var pre_days = this.beginning_date.getDay() // draw some days before >> the fact >> + if (pre_days < 3) pre_days += 7; >> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >> + + var iterator = new Date(this.beginning_date); >> + + var today = new Date().stripTime(); >> + var this_month = this.date.getMonth(); >> + vdc = this.options.get("valid_date_check"); >> + for (var cell_index = 0;cell_index<42; cell_index++) >> + { >> + day = iterator.getDate(); month = iterator.getMonth(); >> + cell = this.calendar_day_grid[cell_index]; >> + Element.remove(cell.childNodes[0]); div = cell.build("div", >> {innerHTML:day}); >> + if (month!=this_month) div.className = "other"; >> + cell.day = day; cell.month = month; cell.year = >> iterator.getFullYear(); >> + if (vdc) { if (vdc(iterator.stripTime())) >> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >> + iterator.setDate( day + 1); >> + } >> + + if (this.today_cell) this.today_cell.removeClassName("today"); >> + + if ( $R( 0, 41 ).include(days_until = >> this.beginning_date.stripTime().daysDistance(today)) ) { >> + this.today_cell = this.calendar_day_grid[days_until]; >> + this.today_cell.addClassName("today"); >> + } >> + }, >> + refreshMonthYear: function() { >> + var m = this.date.getMonth(); >> + var y = this.date.getFullYear(); >> + // set the month >> + if (this.options.get("month_year") == "dropdowns") + { >> + this.month_select.setValue(m, false); >> + + var e = this.year_select.element; + if >> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >> this.populateYearRange(); >> + + this.year_select.setValue(y); >> + + } else { >> + this.month_year_label.update( Date.months[m] + " " + y.toString() >> ); >> + } >> + }, >> + populateYearRange: function() { >> + this.year_select.populate(this.yearRange().toArray()); >> + }, >> + yearRange: function() { >> + if (!this.flexibleYearRange()) >> + return $R(this.options.get("year_range")[0], >> this.options.get("year_range")[1]); >> + + var y = this.date.getFullYear(); >> + return $R(y - this.options.get("year_range"), y + >> this.options.get("year_range")); >> + }, >> + flexibleYearRange: function() { return >> (typeof(this.options.get("year_range")) == "number"); }, >> + validYear: function(year) { if (this.flexibleYearRange()) { return >> true;} else { return this.yearRange().include(year);} }, >> + dayHover: function(element) { >> + var hover_date = new Date(this.selected_date); >> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >> hover_date.setDate(element.day); >> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >> + }, >> + dayHoverOut: function(element) { this.updateFooter(); }, >> + clearSelectedClass: function() {if (this.selected_cell) >> this.selected_cell.removeClassName("selected");}, >> + setSelectedClass: function() { >> + if (!this.selection_made) return; >> + this.clearSelectedClass() >> + if ($R(0,42).include( days_until = >> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >> )) { >> + this.selected_cell = this.calendar_day_grid[days_until]; >> + this.selected_cell.addClassName("selected"); >> + } >> + }, >> + reparse: function() { this.parseDate(); this.refresh(); }, >> + dateString: function() { >> + return (this.selection_made) ? >> this.selected_date.toFormattedString(this.use_time) : " "; >> + }, >> + parseDate: function() >> + { >> + var value = $F(this.target_element).strip() >> + this.selection_made = (value != ""); >> + this.date = value=="" ? NaN : >> Date.parseFormattedString(this.options.get("date") || value); >> + if (isNaN(this.date)) this.date = new Date(); >> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >> : this.yearRange().end); >> + this.selected_date = new Date(this.date); >> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >> + this.date.setDate(1); >> + }, >> + updateFooter:function(text) { if (!text) text = this.dateString(); >> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >> text }); }, >> + updateSelectedDate:function(partsOrElement, via_click) { >> + var parts = $H(partsOrElement); >> + if ((this.target_element.disabled || this.target_element.readOnly) && >> this.options.get("popup") != "force") return false; >> + if (parts.get("day")) { >> + var t_selected_date = this.selected_date, vdc = >> this.options.get("valid_date_check"); >> + for (var x = 0; x<=3; x++) >> t_selected_date.setDate(parts.get("day")); >> + t_selected_date.setYear(parts.get("year")); >> + t_selected_date.setMonth(parts.get("month")); >> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >> false; } >> + this.selected_date = t_selected_date; >> + this.selection_made = true; >> + } >> + + if (!isNaN(parts.get("hour"))) >> this.selected_date.setHours(parts.get("hour")); >> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >> Math.floor_to_interval(parts.get("minute"), >> this.options.get("minute_interval")) ); >> + if (parts.get("hour") === "" || parts.get("minute") === "") + >> this.setUseTime(false); >> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >> + this.setUseTime(true); >> + + this.updateFooter(); >> + this.setSelectedClass(); >> + + if (this.selection_made) this.updateValue(); >> + if (this.closeOnClick()) { this.close(); } >> + if (via_click && !this.options.get("embedded")) { >> + if ((new Date() - this.last_click_at) < 333) this.close(); >> + this.last_click_at = new Date(); >> + } >> + }, >> + closeOnClick: function() { >> + if (this.options.get("embedded")) return false; >> + if (this.options.get("close_on_click")===nil ) >> + return (this.options.get("time")) ? false : true >> + else >> + return (this.options.get("close_on_click")) >> + }, >> + navMonth: function(month) { (target_date = new >> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >> + navYear: function(year) { (target_date = new >> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >> + navTo: function(date) { >> + if (!this.validYear(date.getFullYear())) return false; >> + this.date = date; >> + this.date.setDate(1); >> + this.refresh(); >> + this.callback("after_navigate", this.date); >> + return true; >> + }, >> + setUseTime: function(turn_on) { >> + this.use_time = this.options.get("time") && >> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >> true if time==true && time!="mixed" >> + if (this.use_time && this.selected_date) { // only set hour/minute if >> a date is already selected >> + var minute = >> Math.floor_to_interval(this.selected_date.getMinutes(), >> this.options.get("minute_interval")); >> + var hour = this.selected_date.getHours(); >> + + this.hour_select.setValue(hour); >> + this.minute_select.setValue(minute) >> + } else if (this.options.get("time")=="mixed") { >> + this.hour_select.setValue(""); this.minute_select.setValue(""); >> + } >> + }, >> + updateValue: function() { >> + var last_value = this.target_element.value; >> + this.target_element.value = this.dateString(); >> + if (last_value!=this.target_element.value) this.callback("onchange"); >> + }, >> + today: function(now) { >> + var d = new Date(); this.date = new Date(); >> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >> this.updateSelectedDate(o, true); >> + this.refresh(); >> + }, >> + close: function() { >> + if (this.closed) return false; >> + this.callback("before_close"); >> + this.target_element.calendar_date_select = nil; >> + Event.stopObserving(document, "mousedown", >> this.closeIfClickedOut_handler); >> + Event.stopObserving(document, "keypress", this.keyPress_handler); >> + this.calendar_div.remove(); this.closed = true; >> + if (this.iframe) this.iframe.remove(); >> + if (this.target_element.type!="hidden") this.target_element.focus(); >> + this.callback("after_close"); >> + }, >> + closeIfClickedOut: function(e) { >> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >> this.close(); >> + }, >> + keyPress: function(e) { >> + if (e.keyCode==Event.KEY_ESC) this.close(); >> + }, >> + callback: function(name, param) { if (this.options.get(name)) { >> this.options.get(name).bind(this.target_element)(param); } } >> + + >> +} >> + >> +// OFBiz addition: modified format_iso_date.js, included here for >> convenience >> +Date.prototype.toFormattedString = function(include_time) { >> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + >> 1) + "-" +Date.padded2(this.getDate()); >> + if (include_time) { >> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >> ":" + Date.padded2(this.getSeconds()); >> + if (this.getMilliseconds > 0) { >> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >> + } else { >> + str += ".0"; >> + } >> + } >> + return str; >> +}; >> + >> +Date.parseFormattedString = function (string) { >> + var arr_datetime = string.split(' '); >> + var str_date = arr_datetime[0]; >> + var str_time = arr_datetime[1]; >> + >> + var arr_date = str_date.split('-'); >> + var dt_date = new Date(); >> + dt_date.setDate(1); >> + dt_date.setMonth(arr_date[1]-1); >> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >> (arr_date[0] < 40 ? 2000 : 1900); >> + dt_date.setFullYear(arr_date[0]); >> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >> + dt_date.setDate(arr_date[2]); >> + >> + var arr_time = String(str_time ? str_time : '').split(':'); >> + dt_date.setHours(arr_time[0]); >> + dt_date.setMinutes(arr_time[1]); >> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >> + dt_date.setSeconds(arr_sec[0]); >> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >> + dt_date.setMilliseconds(arr_sec[1]); >> + >> + return dt_date; >> +}; >> + >> +// OFBiz addition: functions to call the calendar >> +function call_cal(target, datetime) { + new >> CalendarDateSelect(target, {time:true, year_range:10} ); +} >> + >> +function call_cal_notime(target, datetime) { + new >> CalendarDateSelect(target, {year_range:10} ); +} >> \ No newline at end of file >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:keywords = "Date Rev Author URL Id" >> >> Propchange: >> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >> >> ------------------------------------------------------------------------------ >> svn:mime-type = text/plain >> >> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >> 01:45:10 2008 >> @@ -18,9 +18,25 @@ >> */ >> // ================= FIELD LOOKUP METHODS ============================ >> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >> !document.getElementById)? true : false; >> +var IE4 = (document.all && !document.getElementById)? true : false; >> +var IE5 = (document.getElementById && document.all)? true : false; >> +var NS6 = (document.getElementById && >> navigator.appName.indexOf("Netscape")>=0 )? true: false; >> +var mx, my; >> + >> +function moveobj(evt) { >> + if (NS4 || NS6) { >> + mx=evt.screenX; >> + my=evt.screenY; >> + } else if (IE5 || IE4) { >> + mx=event.screenX; >> + my=event.screenY; >> + } >> +} >> var target = null; >> var target2 = null; >> +var lookups = []; >> function call_fieldlookup(target, viewName, >> formName,viewWidth,viewheight) { var fieldLookup = new >> fieldLookup1(target); >> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >> 01:45:10 2008 >> @@ -1722,41 +1722,138 @@ >> /* ===== Table decorator - Calendar ===== */ >> -.calendar { >> -border-right: 0.1em solid #cccccc; >> +.calendar_date_select { >> + color:white; >> + border:#777 1px solid; >> + display:block; >> + width:195px; >> + z-index: 1000; >> +} >> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >> window. This should always be just underneath .calendar_date_select */ >> +iframe.ie6_blocker { >> + position: absolute; >> + z-index: 999; >> } >> -.calendar tr td { >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -vertical-align: top; >> -padding: 0.5em; >> +.calendar_date_select thead th { >> + font-weight:bold; >> + background-color: #000; >> + border-top:1px solid #777; >> + border-bottom:2px solid #333; >> + color: white !important; >> } >> -.calendar .header-row td { >> -background-color: #69a9d9; >> -border-bottom: 0.1em solid #cccccc; >> -border-left: 0.1em solid #cccccc; >> -color: #ffffff; >> -height: auto; >> -text-align: center; >> +.calendar_date_select .cds_buttons { >> + text-align:center; >> + padding:5px 0px; >> + background-color: #555; >> } >> -.calendar tr td .add-new { >> -float: right; >> +.calendar_date_select .cds_footer { >> + background-color: black; >> + padding:3px; >> + font-size:12px; >> + text-align:center; >> } >> -.calendar tr td .h1 { >> -color: #000099; >> -float: left; >> +.calendar_date_select table { >> + margin: 0px; >> + padding: 0px; >> } >> -.calendar .current-period { >> -background-color: #ffffcc; >> + >> +.calendar_date_select .cds_header { >> + background-color: #ccc; >> + border-bottom: 2px solid #aaa; >> + text-align:center; >> } >> -.calendar .active-period { >> -background-color: #eeeeee; >> +.calendar_date_select .cds_header span { >> + font-size:15px; >> + color: black; >> + font-weight: bold; >> +} >> + >> +.calendar_date_select select { font-size:11px;} >> + >> +.calendar_date_select .cds_header a:hover { >> + color: white; >> +} >> +.calendar_date_select .cds_header a { >> + width:22px; >> + height:20px; >> + text-decoration: none; >> + font-size:14px; >> + color:black !important; >> +} >> + >> +.calendar_date_select .cds_header a.prev { >> + float:left; >> +} >> +.calendar_date_select .cds_header a.next { >> + float:right; >> +} >> +.calendar_date_select .cds_header a.close { >> + float:right; >> + display:none; >> +} >> + >> +.calendar_date_select .cds_header select.month { >> + width:90px; >> +} >> + >> +.calendar_date_select .cds_header select.year { >> + width:61px; >> +} >> + >> +.calendar_date_select .cds_buttons a { >> + color: white; >> + font-size: 9px; >> +} >> +.calendar_date_select td { >> + font-size:12px; >> + width: 24px; >> + height: 21px; >> + text-align:center; >> + vertical-align: middle; >> + background-color: #666666; >> +} >> +.calendar_date_select td.weekend { >> + background-color: #606060; >> +} >> + >> +.calendar_date_select td div { >> + color: #fff; >> +} >> +.calendar_date_select td div.other { >> + color: #888; >> +} >> +.calendar_date_select td.selected div { >> + color:black; >> +} >> + >> +.calendar_date_select tbody td { >> + border-bottom: 1px solid #555; >> +} >> +.calendar_date_select td.selected { >> + background-color:white; >> +} >> + >> +.calendar_date_select td:hover { >> + background-color:#ccc; >> +} >> + >> +.calendar_date_select td.today { >> + border: 1px dashed #999; >> +} >> + >> +.calendar_date_select td.disabled div { >> + color: #454545; >> +} >> + >> + >> +.fieldWithErrors .calendar_date_select { >> + border: 2px solid red; >> } >> /* ======================= */ >> >> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >> (original) >> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun >> 5 01:45:10 2008 >> @@ -19,9 +19,10 @@ >> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >> Generic Title (Set subcontent 'title' on your content!)")}</title> >> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - <script >> language="javascript" src="/images/calendar1.js" >> type="text/javascript"></script> >> - <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/prototypejs/prototype.js" >> type="text/javascript"></script> >> <script language="javascript" src="/images/fieldlookup.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/selectall.js" >> type="text/javascript"></script> >> + <script language="javascript" src="/images/calendar_date_select.js" >> type="text/javascript"></script> >> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >> <link rel="stylesheet" href="/ecommerce/images/blog.css" >> type="text/css"/> >> >> Modified: >> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> URL: >> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >> >> ============================================================================== >> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >> (original) >> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >> Jun 5 01:45:10 2008 >> @@ -34,9 +34,10 @@ >> of stylesheets to the first and second position --> >> <set field="layoutSettings.styleSheets[+0]" >> value="/images/maincss.css" global="true"/> >> <!-- The default (global) java scripts --> >> - <set field="layoutSettings.javaScripts[]" >> value="/images/calendar1.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/selectall.js" global="true"/> >> <set field="layoutSettings.javaScripts[]" >> value="/images/fieldlookup.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/prototypejs/prototype.js" global="true"/> >> + <set field="layoutSettings.javaScripts[]" >> value="/images/calendar_date_select.js" global="true"/> >> <set field="layoutSettings.companyName" >> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >> <set field="layoutSettings.companySubtitle" >> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >> >> >> >> |
Administrator
|
In reply to this post by Adrian Crum
Thanks Adrian,
calendarstyles.css removed in revision 663859. Jacques From: "Adrian Crum" <[hidden email]> > Keep calendarTable.css for now - it s used for the fixed asset calendar. I'm working on fixed assets right now, so I will take > care of it. > > calendarstyles.css isn't being used anymore - it can be removed. > > -Adrian > > Jacques Le Roux wrote: >> Adrian, Scott, >> >> Should we also keep images/webapp/images/calendarstyles.css and images/webapp/images/calendarTable.css ? (Sorry it's late here, >> going to bed :o) >> >> Jacques >> >> From: "Scott Gray" <[hidden email]> >>> Sorry Adrian, I assumed it was the styles for the Tigra calendar because >>> there is a separate css file (calendarstyles.css) that appeared to be >>> referenced in the workeffort app. >>> >>> I can't fix it until I get home from work in about 8 hours. >>> >>> Regards >>> Scott >>> >>> 2008/6/6 Adrian Crum <[hidden email]>: >>> >>>> Why was the calendar CSS class removed in this commit? Now the workeffort >>>> calendar screen layout is broken. >>>> >>>> -Adrian >>>> >>>> >>>> [hidden email] wrote: >>>> >>>>> Author: lektran >>>>> Date: Thu Jun 5 01:45:10 2008 >>>>> New Revision: 663501 >>>>> >>>>> URL: http://svn.apache.org/viewvc?rev=663501&view=rev >>>>> Log: >>>>> Replaced the Tigra calendar with Calendar Date Select ( >>>>> http://code.google.com/p/calendardateselect/) - OFBIZ-1808 >>>>> >>>>> Added: >>>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> (with props) >>>>> Removed: >>>>> ofbiz/trunk/framework/images/webapp/images/calendar.html >>>>> ofbiz/trunk/framework/images/webapp/images/calendar1.js >>>>> Modified: >>>>> ofbiz/trunk/LICENSE >>>>> ofbiz/trunk/NOTICE >>>>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>>> ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>>>> ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>>>> ofbiz/trunk/framework/common/widget/CommonScreens.xml >>>>> ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>>>> ofbiz/trunk/framework/images/webapp/images/maincss.css >>>>> ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>>> >>>>> Modified: ofbiz/trunk/LICENSE >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/LICENSE (original) >>>>> +++ ofbiz/trunk/LICENSE Thu Jun 5 01:45:10 2008 >>>>> @@ -1184,6 +1184,7 @@ >>>>> ofbiz/trunk/framework/base/lib/icu4j_3_6.jar >>>>> ofbiz/trunk/framework/entity/lib/ofbiz-minerva.jar >>>>> ofbiz/trunk/framework/images/webapp/images/htmledit/whizzywig_v55i.js >>>>> +ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> ========================================================================= >>>>> The MIT License >>>>> @@ -2205,24 +2206,6 @@ >>>>> of California, with venue lying in Santa Clara County, California. >>>>> >>>>> ========================================================================= >>>>> -Apache OFBiz includes the Tigra Calendar HTML and JavaScript files: >>>>> -ofbiz/trunk/framework/images/webapp/images/calendar.html >>>>> -ofbiz/trunk/framework/images/webapp/images/calendar1.js >>>>> -Tigra Calendar is licensed as follows: >>>>> -========================================================================= >>>>> -Title: Tigra Calendar >>>>> -URL: http://www.softcomplex.com/products/tigra_calendar/ >>>>> -Version: 3.2 >>>>> -Date: 10/14/2002 (mm/dd/yyyy) >>>>> -Feedback: [hidden email] (specify product title in the >>>>> subject) >>>>> -Note: Permission given to use this script in ANY kind of applications if >>>>> - header lines are left unchanged. >>>>> -Note: Script consists of two files: calendar?.js and calendar.html >>>>> -About us: Our company provides offshore IT consulting services. >>>>> - Contact us at [hidden email] if you have any programming task >>>>> you >>>>> - want to be handled by professionals. Our typical hourly rate is $20. >>>>> - >>>>> -========================================================================= >>>>> Apache OFBiz includes the XML Schema files from the Open Applications >>>>> Group, Inc >>>>> NOTE: these files and the license are for an older version of the OAGIS >>>>> specification, namely version 7.2.1. >>>>> >>>>> Modified: ofbiz/trunk/NOTICE >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/NOTICE?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/NOTICE (original) >>>>> +++ ofbiz/trunk/NOTICE Thu Jun 5 01:45:10 2008 >>>>> @@ -255,16 +255,6 @@ >>>>> framework/images/webapp/images/pngbehavior.htc >>>>> >>>>> ========================================================================= >>>>> -== Tigra Calendar Notice == >>>>> -========================================================================= >>>>> - >>>>> -This product includes files developed by >>>>> -Softcomplex (www.softcomplex.com): >>>>> - >>>>> -framework\images\webapp\images\calendar.html >>>>> -framework\images\webapp\images\calendar1.js >>>>> - >>>>> -========================================================================= >>>>> == JSON-LIB Notice == >>>>> ========================================================================= >>>>> >>>>> Modified: >>>>> ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl >>>>> (original) >>>>> +++ ofbiz/trunk/applications/ecommerce/webapp/ecommerce/blog/main.ftl Thu >>>>> Jun 5 01:45:10 2008 >>>>> @@ -21,10 +21,10 @@ >>>>> <head> >>>>> <title>Automation Groups - Main</title> >>>>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> >>>>> - <script language='javascript' >>>>> src='<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>' >>>>> type='text/javascript'></script> >>>>> - <script language='javascript' >>>>> src='<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>' >>>>> type='text/javascript'></script> >>>>> - <script language='javascript' >>>>> src='<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>' >>>>> type='text/javascript'></script> >>>>> + <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> <link rel='stylesheet' >>>>> href='<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>' >>>>> type='text/css'> >>>>> <link rel='stylesheet' >>>>> href='<@ofbizContentUrl>/images/tabstyles.css</@ofbizContentUrl>' >>>>> type='text/css'> >>>>> <link rel='stylesheet' >>>>> href='<@ofbizContentUrl>/ecommerce/images/blog.css</@ofbizContentUrl>' >>>>> type='text/css'> >>>>> >>>>> Modified: ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml (original) >>>>> +++ ofbiz/trunk/applications/ecommerce/widget/CommonScreens.xml Thu Jun 5 >>>>> 01:45:10 2008 >>>>> @@ -41,7 +41,7 @@ >>>>> <!-- NOTE: this should be included on each screen that >>>>> uses it to avoid including it in all screens: --> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/fieldlookup.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/selectall.js" global="true"/> >>>>> - <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar1.js" global="true"/> >>>>> + <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar_date_select.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[+0]" >>>>> value="/images/prototypejs/validation.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[+0]" >>>>> value="/images/prototypejs/prototype.js" global="true"/> >>>>> >>>>> >>>>> Modified: ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl (original) >>>>> +++ ofbiz/trunk/framework/common/webcommon/includes/lookup.ftl Thu Jun 5 >>>>> 01:45:10 2008 >>>>> @@ -22,9 +22,10 @@ >>>>> <head> >>>>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >>>>> <title>${title}</title> >>>>> - <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/calendar1.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/prototypejs/prototype.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/fieldlookup.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/selectall.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" >>>>> src="<@ofbizContentUrl>/images/calendar_date_select.js</@ofbizContentUrl>" >>>>> type="text/javascript"></script> >>>>> <link rel="stylesheet" >>>>> href="<@ofbizContentUrl>/images/maincss.css</@ofbizContentUrl>" >>>>> type="text/css"/> >>>>> <script language="JavaScript" type="text/javascript"> >>>>> >>>>> Modified: ofbiz/trunk/framework/common/widget/CommonScreens.xml >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/widget/CommonScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/framework/common/widget/CommonScreens.xml (original) >>>>> +++ ofbiz/trunk/framework/common/widget/CommonScreens.xml Thu Jun 5 >>>>> 01:45:10 2008 >>>>> @@ -118,10 +118,10 @@ >>>>> <set field="layoutSettings.rtlStyleSheets[+0]" >>>>> value="/images/mainrtl.css" global="true"/> >>>>> <!-- The default (global) java scripts --> >>>>> <!-- NOTE: this should be included on each screen that >>>>> uses it to avoid including it in all screens: <set >>>>> field="layoutSettings.javaScripts[]" value="/images/dojo/dojo.js" >>>>> global="true"/> --> >>>>> - <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar1.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/selectall.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/fieldlookup.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/prototypejs/prototype.js" global="true"/> >>>>> + <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar_date_select.js" global="true"/> >>>>> <!-- The default (global) shortcut icon --> >>>>> <set field="layoutSettings.shortcutIcon" >>>>> value="/images/ofbiz.ico" global="true"/> >>>>> <!-- The default (global) logo --> >>>>> @@ -227,10 +227,10 @@ >>>>> <set field="layoutSettings.styleSheets[+0]" >>>>> value="/images/maincss.css" global="true"/> >>>>> <set field="layoutSettings.rtlStyleSheets[+0]" >>>>> value="/images/mainrtl.css" global="true"/> >>>>> <!-- The default (global) java scripts --> >>>>> - <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar1.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/selectall.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/fieldlookup.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/prototypejs/prototype.js" global="true"/> >>>>> + <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar_date_select.js" global="true"/> >>>>> <!-- The default (global) shortcut icon --> >>>>> <set field="layoutSettings.shortcutIcon" >>>>> value="/images/ofbiz.ico" global="true"/> >>>>> <!-- The settings below are used for xsl-fo screens --> >>>>> >>>>> Added: ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js?rev=663501&view=auto >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> (added) >>>>> +++ ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js Thu >>>>> Jun 5 01:45:10 2008 >>>>> @@ -0,0 +1,480 @@ >>>>> +// CalendarDateSelect version 1.10.2 - a prototype based date picker >>>>> +// Questions, comments, bugs? - email the Author - Tim Harper >>>>> <"[hidden email]".gsub("see", "c")> +if (typeof Prototype == >>>>> 'undefined') alert("CalendarDateSelect Error: Prototype could not be found. >>>>> Please make sure that your application's layout includes prototype.js (.g. >>>>> <%= javascript_include_tag :defaults %>) *before* it includes >>>>> calendar_date_select.js (.g. <%= calendar_date_select_includes %>)."); >>>>> +if (Prototype.Version < "1.6") alert("Prototype 1.6.0 is required. If >>>>> using earlier version of prototype, please use calendar_date_select version >>>>> 1.8.3"); >>>>> + >>>>> +Element.addMethods({ >>>>> + purgeChildren: function(element) { >>>>> $A(element.childNodes).each(function(e){$(e).remove();}); }, >>>>> + build: function(element, type, options, style) { >>>>> + var newElement = Element.build(type, options, style); >>>>> + element.appendChild(newElement); >>>>> + return newElement; >>>>> + } >>>>> +}); >>>>> + >>>>> +Element.build = function(type, options, style) >>>>> +{ >>>>> + var e = $(document.createElement(type)); >>>>> + $H(options).each(function(pair) { eval("e." + pair.key + " = >>>>> pair.value" ); }); >>>>> + if (style) + $H(style).each(function(pair) { eval("e.style." + >>>>> pair.key + " = pair.value" ); }); >>>>> + return e; >>>>> +}; >>>>> +nil = null; >>>>> + >>>>> +Date.one_day = 24*60*60*1000; >>>>> +Date.weekdays = $w("S M T W T F S"); >>>>> +Date.first_day_of_week = 0; >>>>> +Date.months = $w("January February March April May June July August >>>>> September October November December" ); >>>>> +Date.padded2 = function(hour) { var padded2 = parseInt(hour, 10); if >>>>> (hour < 10) padded2 = "0" + padded2; return padded2; } >>>>> +Date.prototype.getPaddedMinutes = function() { return >>>>> Date.padded2(this.getMinutes()); } >>>>> +Date.prototype.getAMPMHour = function() { var hour = this.getHours(); >>>>> return (hour == 0) ? 12 : (hour > 12 ? hour - 12 : hour ) } >>>>> +Date.prototype.getAMPM = function() { return (this.getHours() < 12) ? >>>>> "AM" : "PM"; } >>>>> +Date.prototype.stripTime = function() { return new >>>>> Date(this.getFullYear(), this.getMonth(), this.getDate());}; >>>>> +Date.prototype.daysDistance = function(compare_date) { return >>>>> Math.round((compare_date - this) / Date.one_day); }; >>>>> +Date.prototype.toFormattedString = function(include_time){ >>>>> + var hour, str; >>>>> + str = Date.months[this.getMonth()] + " " + this.getDate() + ", " + >>>>> this.getFullYear(); >>>>> + + if (include_time) { hour = this.getHours(); str += " " + >>>>> this.getAMPMHour() + ":" + this.getPaddedMinutes() + " " + this.getAMPM() } >>>>> + return str; >>>>> +} >>>>> +Date.parseFormattedString = function(string) { return new Date(string);} >>>>> +Math.floor_to_interval = function(n, i) { return Math.floor(n/i) * i;} >>>>> +window.f_height = function() { return( [window.innerHeight ? >>>>> window.innerHeight : null, document.documentElement ? >>>>> document.documentElement.clientHeight : null, document.body ? >>>>> document.body.clientHeight : null].select(function(x){return >>>>> x>0}).first()||0); } >>>>> +window.f_scrollTop = function() { return ([window.pageYOffset ? >>>>> window.pageYOffset : null, document.documentElement ? >>>>> document.documentElement.scrollTop : null, document.body ? >>>>> document.body.scrollTop : null].select(function(x){return x>0}).first()||0 >>>>> ); } >>>>> + >>>>> +_translations = { >>>>> + "OK": "OK", >>>>> + "Now": "Now", >>>>> + "Today": "Today" >>>>> +} >>>>> +SelectBox = Class.create(); >>>>> +SelectBox.prototype = { >>>>> + initialize: function(parent_element, values, html_options, >>>>> style_options) { >>>>> + this.element = $(parent_element).build("select", html_options, >>>>> style_options); >>>>> + this.populate(values); >>>>> + }, >>>>> + populate: function(values) { >>>>> + this.element.purgeChildren(); >>>>> + var that = this; $A(values).each(function(pair) { if >>>>> (typeof(pair)!="object") {pair = [pair, pair]}; that.element.build("option", >>>>> { value: pair[1], innerHTML: pair[0]}) }); >>>>> + }, >>>>> + setValue: function(value) { >>>>> + var e = this.element; >>>>> + var matched = false; >>>>> + $R(0, e.options.length - 1 ).each(function(i) { >>>>> if(e.options[i].value==value.toString()) {e.selectedIndex = i; matched = >>>>> true;}; } ); >>>>> + return matched; >>>>> + }, >>>>> + getValue: function() { return $F(this.element)} >>>>> +} >>>>> +CalendarDateSelect = Class.create(); >>>>> +CalendarDateSelect.prototype = { >>>>> + initialize: function(target_element, options) { >>>>> + this.target_element = $(target_element); // make sure it's an >>>>> element, not a string >>>>> + if (!this.target_element) { alert("Target element " + target_element >>>>> + " not found!"); return false;} >>>>> + if (this.target_element.tagName != "INPUT") this.target_element = >>>>> this.target_element.down("INPUT") >>>>> + + this.target_element.calendar_date_select = this; >>>>> + this.last_click_at = 0; >>>>> + // initialize the date control >>>>> + this.options = $H({ >>>>> + embedded: false, >>>>> + popup: nil, >>>>> + time: false, >>>>> + buttons: true, >>>>> + year_range: 10, >>>>> + close_on_click: nil, >>>>> + minute_interval: 5, >>>>> + popup_by: this.target_element, >>>>> + month_year: "dropdowns", >>>>> + onchange: this.target_element.onchange, >>>>> + valid_date_check: nil >>>>> + }).merge(options || {}); >>>>> + this.use_time = this.options.get("time"); >>>>> + this.parseDate(); >>>>> + this.callback("before_show") >>>>> + this.initCalendarDiv(); >>>>> + if(!this.options.get("embedded")) { >>>>> + this.positionCalendarDiv() >>>>> + // set the click handler to check if a user has clicked away from >>>>> the document >>>>> + Event.observe(document, "mousedown", this.closeIfClickedOut_handler >>>>> = this.closeIfClickedOut.bindAsEventListener(this)); >>>>> + Event.observe(document, "keypress", this.keyPress_handler = >>>>> this.keyPress.bindAsEventListener(this)); >>>>> + } >>>>> + this.callback("after_show") >>>>> + }, >>>>> + positionCalendarDiv: function() { >>>>> + var above = false; >>>>> + var c_pos = this.calendar_div.cumulativeOffset(), c_left = c_pos[0], >>>>> c_top = c_pos[1], c_dim = this.calendar_div.getDimensions(), c_height = >>>>> c_dim.height, c_width = c_dim.width; + var w_top = window.f_scrollTop(), >>>>> w_height = window.f_height(); >>>>> + var e_dim = $(this.options.get("popup_by")).cumulativeOffset(), e_top >>>>> = e_dim[1], e_left = e_dim[0], e_height = >>>>> $(this.options.get("popup_by")).getDimensions().height, e_bottom = e_top + >>>>> e_height; >>>>> + + if ( (( e_bottom + c_height ) > (w_top + w_height)) && ( >>>>> e_bottom - c_height > w_top )) above = true; >>>>> + var left_px = e_left.toString() + "px", top_px = (above ? (e_top - >>>>> c_height ) : ( e_top + e_height )).toString() + "px"; >>>>> + + this.calendar_div.style.left = left_px; >>>>> this.calendar_div.style.top = top_px; >>>>> + + this.calendar_div.setStyle({visibility:""}); >>>>> + + // draw an iframe behind the calendar -- ugly hack to make IE 6 >>>>> happy >>>>> + if(navigator.appName=="Microsoft Internet Explorer") this.iframe = >>>>> $(document.body).build("iframe", {src: "javascript:false", className: >>>>> "ie6_blocker"}, { left: left_px, top: top_px, height: >>>>> c_height.toString()+"px", width: c_width.toString()+"px", border: "0px"}) >>>>> + }, >>>>> + initCalendarDiv: function() { >>>>> + if (this.options.get("embedded")) { >>>>> + var parent = this.target_element.parentNode; >>>>> + var style = {} >>>>> + } else { >>>>> + var parent = document.body >>>>> + var style = { position:"absolute", visibility: "hidden", left:0, >>>>> top:0 } >>>>> + } >>>>> + this.calendar_div = $(parent).build('div', {className: >>>>> "calendar_date_select"}, style); >>>>> + + var that = this; >>>>> + // create the divs >>>>> + $w("top header body buttons footer bottom").each(function(name) { >>>>> + eval("var " + name + "_div = that." + name + "_div = >>>>> that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: >>>>> 'left'} ); "); >>>>> + }); >>>>> + + this.initHeaderDiv(); >>>>> + this.initButtonsDiv(); >>>>> + this.initCalendarGrid(); >>>>> + this.updateFooter(" "); >>>>> + + this.refresh(); >>>>> + this.setUseTime(this.use_time); >>>>> + }, >>>>> + initHeaderDiv: function() { >>>>> + var header_div = this.header_div; >>>>> + this.close_button = header_div.build("a", { innerHTML: "x", href:"#", >>>>> onclick:function () { this.close(); return false; >>>>> }.bindAsEventListener(this), className: "close" }); >>>>> + this.next_month_button = header_div.build("a", { innerHTML: ">", >>>>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() + 1 ); >>>>> return false; }.bindAsEventListener(this), className: "next" }); >>>>> + this.prev_month_button = header_div.build("a", { innerHTML: "<", >>>>> href:"#", onclick:function () { this.navMonth(this.date.getMonth() - 1 ); >>>>> return false; }.bindAsEventListener(this), className: "prev" }); >>>>> + + if (this.options.get("month_year")=="dropdowns") { >>>>> + this.month_select = new SelectBox(header_div, >>>>> $R(0,11).map(function(m){return [Date.months[m], m]}), {className: "month", >>>>> onchange: function () { this.navMonth(this.month_select.getValue()) >>>>> }.bindAsEventListener(this)}); + this.year_select = new >>>>> SelectBox(header_div, [], {className: "year", onchange: function () { >>>>> this.navYear(this.year_select.getValue()) }.bindAsEventListener(this)}); + >>>>> this.populateYearRange(); >>>>> + } else { >>>>> + this.month_year_label = header_div.build("span") >>>>> + } >>>>> + }, >>>>> + initCalendarGrid: function() { >>>>> + var body_div = this.body_div; >>>>> + this.calendar_day_grid = []; >>>>> + var days_table = body_div.build("table", { cellPadding: "0px", >>>>> cellSpacing: "0px", width: "100%" }) >>>>> + // make the weekdays! >>>>> + var weekdays_row = days_table.build("thead").build("tr"); >>>>> + Date.weekdays.each( function(weekday) { + >>>>> weekdays_row.build("th", {innerHTML: weekday}); >>>>> + }); >>>>> + + var days_tbody = days_table.build("tbody") >>>>> + // Make the days! >>>>> + var row_number = 0, weekday; >>>>> + for(var cell_index = 0; cell_index<42; cell_index++) >>>>> + { >>>>> + weekday = (cell_index+Date.first_day_of_week ) % 7; >>>>> + if ( cell_index % 7==0 ) days_row = days_tbody.build("tr", >>>>> {className: 'row_'+row_number++}); >>>>> + (this.calendar_day_grid[cell_index] = days_row.build("td", { >>>>> + calendar_date_select: this, >>>>> + onmouseover: function () { >>>>> this.calendar_date_select.dayHover(this); }, >>>>> + onmouseout: function () { >>>>> this.calendar_date_select.dayHoverOut(this) }, >>>>> + onclick: function() { >>>>> this.calendar_date_select.updateSelectedDate(this, true); }, >>>>> + className: (weekday==0) || (weekday==6) ? " weekend" : "" >>>>> //clear the class >>>>> + }, >>>>> + { cursor: "pointer" } >>>>> + )).build("div"); >>>>> + this.calendar_day_grid[cell_index]; >>>>> + } >>>>> + }, >>>>> + initButtonsDiv: function() >>>>> + { >>>>> + var buttons_div = this.buttons_div; >>>>> + if (this.options.get("time")) >>>>> + { >>>>> + var blank_time = $A(this.options.get("time")=="mixed" ? [[" - ", >>>>> ""]] : []); >>>>> + buttons_div.build("span", {innerHTML:"@", className: "at_sign"}); >>>>> + + var t = new Date(); >>>>> + this.hour_select = new SelectBox(buttons_div, >>>>> + blank_time.concat($R(0,23).map(function(x) {t.setHours(x); return >>>>> $A([t.getAMPMHour()+ " " + t.getAMPM(),x])} )), >>>>> + { + calendar_date_select: this, + onchange: >>>>> function() { this.calendar_date_select.updateSelectedDate( { hour: >>>>> this.value });}, >>>>> + className: "hour" + } >>>>> + ); >>>>> + buttons_div.build("span", {innerHTML:":", className: "seperator"}); >>>>> + var that = this; >>>>> + this.minute_select = new SelectBox(buttons_div, >>>>> + blank_time.concat($R(0,59).select(function(x){return (x % >>>>> that.options.get('minute_interval')==0)}).map(function(x){ return $A([ >>>>> Date.padded2(x), x]); } ) ), >>>>> + { + calendar_date_select: this, + onchange: >>>>> function() { this.calendar_date_select.updateSelectedDate( {minute: >>>>> this.value }) }, + className: "minute" + } >>>>> + ); >>>>> + + } else if (! this.options.get("buttons")) >>>>> buttons_div.remove(); >>>>> + + if (this.options.get("buttons")) { >>>>> + buttons_div.build("span", {innerHTML: " "}); >>>>> + if (this.options.get("time")=="mixed" || !this.options.get("time")) >>>>> b = buttons_div.build("a", { >>>>> + innerHTML: _translations["Today"], >>>>> + href: "#", >>>>> + onclick: function() {this.today(false); return >>>>> false;}.bindAsEventListener(this) >>>>> + }); >>>>> + + if (this.options.get("time")=="mixed") >>>>> buttons_div.build("span", {innerHTML: " | ", className:"button_seperator"}) >>>>> + + if (this.options.get("time")) b = buttons_div.build("a", { >>>>> + innerHTML: _translations["Now"], >>>>> + href: "#", >>>>> + onclick: function() {this.today(true); return >>>>> false}.bindAsEventListener(this) >>>>> + }); >>>>> + + if (!this.options.get("embedded")) >>>>> + { >>>>> + buttons_div.build("span", {innerHTML: " "}); >>>>> + buttons_div.build("a", { innerHTML: _translations["OK"], href: >>>>> "#", onclick: function() {this.close(); return >>>>> false;}.bindAsEventListener(this) }); >>>>> + } >>>>> + } >>>>> + }, >>>>> + refresh: function () >>>>> + { >>>>> + this.refreshMonthYear(); >>>>> + this.refreshCalendarGrid(); >>>>> + + this.setSelectedClass(); >>>>> + this.updateFooter(); >>>>> + }, >>>>> + refreshCalendarGrid: function () { >>>>> + this.beginning_date = new Date(this.date).stripTime(); >>>>> + this.beginning_date.setDate(1); >>>>> + this.beginning_date.setHours(12); // Prevent daylight savings time >>>>> boundaries from showing a duplicate day >>>>> + var pre_days = this.beginning_date.getDay() // draw some days before >>>>> the fact >>>>> + if (pre_days < 3) pre_days += 7; >>>>> + this.beginning_date.setDate(1 - pre_days + Date.first_day_of_week); >>>>> + + var iterator = new Date(this.beginning_date); >>>>> + + var today = new Date().stripTime(); >>>>> + var this_month = this.date.getMonth(); >>>>> + vdc = this.options.get("valid_date_check"); >>>>> + for (var cell_index = 0;cell_index<42; cell_index++) >>>>> + { >>>>> + day = iterator.getDate(); month = iterator.getMonth(); >>>>> + cell = this.calendar_day_grid[cell_index]; >>>>> + Element.remove(cell.childNodes[0]); div = cell.build("div", >>>>> {innerHTML:day}); >>>>> + if (month!=this_month) div.className = "other"; >>>>> + cell.day = day; cell.month = month; cell.year = >>>>> iterator.getFullYear(); >>>>> + if (vdc) { if (vdc(iterator.stripTime())) >>>>> cell.removeClassName("disabled"); else cell.addClassName("disabled") }; >>>>> + iterator.setDate( day + 1); >>>>> + } >>>>> + + if (this.today_cell) this.today_cell.removeClassName("today"); >>>>> + + if ( $R( 0, 41 ).include(days_until = >>>>> this.beginning_date.stripTime().daysDistance(today)) ) { >>>>> + this.today_cell = this.calendar_day_grid[days_until]; >>>>> + this.today_cell.addClassName("today"); >>>>> + } >>>>> + }, >>>>> + refreshMonthYear: function() { >>>>> + var m = this.date.getMonth(); >>>>> + var y = this.date.getFullYear(); >>>>> + // set the month >>>>> + if (this.options.get("month_year") == "dropdowns") + { >>>>> + this.month_select.setValue(m, false); >>>>> + + var e = this.year_select.element; + if >>>>> (this.flexibleYearRange() && (!(this.year_select.setValue(y, false)) || >>>>> e.selectedIndex <= 1 || e.selectedIndex >= e.options.length - 2 )) >>>>> this.populateYearRange(); >>>>> + + this.year_select.setValue(y); >>>>> + + } else { >>>>> + this.month_year_label.update( Date.months[m] + " " + y.toString() >>>>> ); >>>>> + } >>>>> + }, >>>>> + populateYearRange: function() { >>>>> + this.year_select.populate(this.yearRange().toArray()); >>>>> + }, >>>>> + yearRange: function() { >>>>> + if (!this.flexibleYearRange()) >>>>> + return $R(this.options.get("year_range")[0], >>>>> this.options.get("year_range")[1]); >>>>> + + var y = this.date.getFullYear(); >>>>> + return $R(y - this.options.get("year_range"), y + >>>>> this.options.get("year_range")); >>>>> + }, >>>>> + flexibleYearRange: function() { return >>>>> (typeof(this.options.get("year_range")) == "number"); }, >>>>> + validYear: function(year) { if (this.flexibleYearRange()) { return >>>>> true;} else { return this.yearRange().include(year);} }, >>>>> + dayHover: function(element) { >>>>> + var hover_date = new Date(this.selected_date); >>>>> + hover_date.setYear(element.year); hover_date.setMonth(element.month); >>>>> hover_date.setDate(element.day); >>>>> + this.updateFooter(hover_date.toFormattedString(this.use_time)); >>>>> + }, >>>>> + dayHoverOut: function(element) { this.updateFooter(); }, >>>>> + clearSelectedClass: function() {if (this.selected_cell) >>>>> this.selected_cell.removeClassName("selected");}, >>>>> + setSelectedClass: function() { >>>>> + if (!this.selection_made) return; >>>>> + this.clearSelectedClass() >>>>> + if ($R(0,42).include( days_until = >>>>> this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()) >>>>> )) { >>>>> + this.selected_cell = this.calendar_day_grid[days_until]; >>>>> + this.selected_cell.addClassName("selected"); >>>>> + } >>>>> + }, >>>>> + reparse: function() { this.parseDate(); this.refresh(); }, >>>>> + dateString: function() { >>>>> + return (this.selection_made) ? >>>>> this.selected_date.toFormattedString(this.use_time) : " "; >>>>> + }, >>>>> + parseDate: function() >>>>> + { >>>>> + var value = $F(this.target_element).strip() >>>>> + this.selection_made = (value != ""); >>>>> + this.date = value=="" ? NaN : >>>>> Date.parseFormattedString(this.options.get("date") || value); >>>>> + if (isNaN(this.date)) this.date = new Date(); >>>>> + if (!this.validYear(this.date.getFullYear())) this.date.setYear( >>>>> (this.date.getFullYear() < this.yearRange().start) ? this.yearRange().start >>>>> : this.yearRange().end); >>>>> + this.selected_date = new Date(this.date); >>>>> + this.use_time = /[0-9]:[0-9]{2}/.exec(value) ? true : false; >>>>> + this.date.setDate(1); >>>>> + }, >>>>> + updateFooter:function(text) { if (!text) text = this.dateString(); >>>>> this.footer_div.purgeChildren(); this.footer_div.build("span", {innerHTML: >>>>> text }); }, >>>>> + updateSelectedDate:function(partsOrElement, via_click) { >>>>> + var parts = $H(partsOrElement); >>>>> + if ((this.target_element.disabled || this.target_element.readOnly) && >>>>> this.options.get("popup") != "force") return false; >>>>> + if (parts.get("day")) { >>>>> + var t_selected_date = this.selected_date, vdc = >>>>> this.options.get("valid_date_check"); >>>>> + for (var x = 0; x<=3; x++) >>>>> t_selected_date.setDate(parts.get("day")); >>>>> + t_selected_date.setYear(parts.get("year")); >>>>> + t_selected_date.setMonth(parts.get("month")); >>>>> + + if (vdc && ! vdc(t_selected_date.stripTime())) { return >>>>> false; } >>>>> + this.selected_date = t_selected_date; >>>>> + this.selection_made = true; >>>>> + } >>>>> + + if (!isNaN(parts.get("hour"))) >>>>> this.selected_date.setHours(parts.get("hour")); >>>>> + if (!isNaN(parts.get("minute"))) this.selected_date.setMinutes( >>>>> Math.floor_to_interval(parts.get("minute"), >>>>> this.options.get("minute_interval")) ); >>>>> + if (parts.get("hour") === "" || parts.get("minute") === "") + >>>>> this.setUseTime(false); >>>>> + else if (!isNaN(parts.get("hour")) || !isNaN(parts.get("minute"))) >>>>> + this.setUseTime(true); >>>>> + + this.updateFooter(); >>>>> + this.setSelectedClass(); >>>>> + + if (this.selection_made) this.updateValue(); >>>>> + if (this.closeOnClick()) { this.close(); } >>>>> + if (via_click && !this.options.get("embedded")) { >>>>> + if ((new Date() - this.last_click_at) < 333) this.close(); >>>>> + this.last_click_at = new Date(); >>>>> + } >>>>> + }, >>>>> + closeOnClick: function() { >>>>> + if (this.options.get("embedded")) return false; >>>>> + if (this.options.get("close_on_click")===nil ) >>>>> + return (this.options.get("time")) ? false : true >>>>> + else >>>>> + return (this.options.get("close_on_click")) >>>>> + }, >>>>> + navMonth: function(month) { (target_date = new >>>>> Date(this.date)).setMonth(month); return (this.navTo(target_date)); }, >>>>> + navYear: function(year) { (target_date = new >>>>> Date(this.date)).setYear(year); return (this.navTo(target_date)); }, >>>>> + navTo: function(date) { >>>>> + if (!this.validYear(date.getFullYear())) return false; >>>>> + this.date = date; >>>>> + this.date.setDate(1); >>>>> + this.refresh(); >>>>> + this.callback("after_navigate", this.date); >>>>> + return true; >>>>> + }, >>>>> + setUseTime: function(turn_on) { >>>>> + this.use_time = this.options.get("time") && >>>>> (this.options.get("time")=="mixed" ? turn_on : true) // force use_time to >>>>> true if time==true && time!="mixed" >>>>> + if (this.use_time && this.selected_date) { // only set hour/minute if >>>>> a date is already selected >>>>> + var minute = >>>>> Math.floor_to_interval(this.selected_date.getMinutes(), >>>>> this.options.get("minute_interval")); >>>>> + var hour = this.selected_date.getHours(); >>>>> + + this.hour_select.setValue(hour); >>>>> + this.minute_select.setValue(minute) >>>>> + } else if (this.options.get("time")=="mixed") { >>>>> + this.hour_select.setValue(""); this.minute_select.setValue(""); >>>>> + } >>>>> + }, >>>>> + updateValue: function() { >>>>> + var last_value = this.target_element.value; >>>>> + this.target_element.value = this.dateString(); >>>>> + if (last_value!=this.target_element.value) this.callback("onchange"); >>>>> + }, >>>>> + today: function(now) { >>>>> + var d = new Date(); this.date = new Date(); >>>>> + var o = $H({ day: d.getDate(), month: d.getMonth(), year: >>>>> d.getFullYear(), hour: d.getHours(), minute: d.getMinutes()}); >>>>> + if ( ! now ) o = o.merge({hour: "", minute:""}); + >>>>> this.updateSelectedDate(o, true); >>>>> + this.refresh(); >>>>> + }, >>>>> + close: function() { >>>>> + if (this.closed) return false; >>>>> + this.callback("before_close"); >>>>> + this.target_element.calendar_date_select = nil; >>>>> + Event.stopObserving(document, "mousedown", >>>>> this.closeIfClickedOut_handler); >>>>> + Event.stopObserving(document, "keypress", this.keyPress_handler); >>>>> + this.calendar_div.remove(); this.closed = true; >>>>> + if (this.iframe) this.iframe.remove(); >>>>> + if (this.target_element.type!="hidden") this.target_element.focus(); >>>>> + this.callback("after_close"); >>>>> + }, >>>>> + closeIfClickedOut: function(e) { >>>>> + if (! $(Event.element(e)).descendantOf(this.calendar_div) ) >>>>> this.close(); >>>>> + }, >>>>> + keyPress: function(e) { >>>>> + if (e.keyCode==Event.KEY_ESC) this.close(); >>>>> + }, >>>>> + callback: function(name, param) { if (this.options.get(name)) { >>>>> this.options.get(name).bind(this.target_element)(param); } } >>>>> + + >>>>> +} >>>>> + >>>>> +// OFBiz addition: modified format_iso_date.js, included here for >>>>> convenience >>>>> +Date.prototype.toFormattedString = function(include_time) { >>>>> + var str = this.getFullYear() + "-" + Date.padded2(this.getMonth() + >>>>> 1) + "-" +Date.padded2(this.getDate()); >>>>> + if (include_time) { >>>>> + str += " " + this.getHours() + ":" + this.getPaddedMinutes() + >>>>> ":" + Date.padded2(this.getSeconds()); >>>>> + if (this.getMilliseconds > 0) { >>>>> + str += "." + (this.getMilliseconds() < 100 ? '0' : '') + >>>>> (this.getMilliseconds() < 10 ? '0' : '') + this.getMilliseconds(); >>>>> + } else { >>>>> + str += ".0"; >>>>> + } >>>>> + } >>>>> + return str; >>>>> +}; >>>>> + >>>>> +Date.parseFormattedString = function (string) { >>>>> + var arr_datetime = string.split(' '); >>>>> + var str_date = arr_datetime[0]; >>>>> + var str_time = arr_datetime[1]; >>>>> + >>>>> + var arr_date = str_date.split('-'); >>>>> + var dt_date = new Date(); >>>>> + dt_date.setDate(1); >>>>> + dt_date.setMonth(arr_date[1]-1); >>>>> + if (arr_date[0] < 100) arr_date[2] = Number(arr_date[0]) + >>>>> (arr_date[0] < 40 ? 2000 : 1900); >>>>> + dt_date.setFullYear(arr_date[0]); >>>>> + var dt_numdays = new Date(arr_date[0], arr_date[1], 0); >>>>> + dt_date.setDate(arr_date[2]); >>>>> + >>>>> + var arr_time = String(str_time ? str_time : '').split(':'); >>>>> + dt_date.setHours(arr_time[0]); >>>>> + dt_date.setMinutes(arr_time[1]); >>>>> + var arr_sec = String(arr_time[2] ? arr_time[2] : '').split('.'); >>>>> + dt_date.setSeconds(arr_sec[0]); >>>>> + if (!arr_sec[1]) dt_date.setMilliseconds(0); >>>>> + dt_date.setMilliseconds(arr_sec[1]); >>>>> + >>>>> + return dt_date; >>>>> +}; >>>>> + >>>>> +// OFBiz addition: functions to call the calendar >>>>> +function call_cal(target, datetime) { + new >>>>> CalendarDateSelect(target, {time:true, year_range:10} ); +} >>>>> + >>>>> +function call_cal_notime(target, datetime) { + new >>>>> CalendarDateSelect(target, {year_range:10} ); +} >>>>> \ No newline at end of file >>>>> >>>>> Propchange: >>>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> svn:eol-style = native >>>>> >>>>> Propchange: >>>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> svn:keywords = "Date Rev Author URL Id" >>>>> >>>>> Propchange: >>>>> ofbiz/trunk/framework/images/webapp/images/calendar_date_select.js >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> svn:mime-type = text/plain >>>>> >>>>> Modified: ofbiz/trunk/framework/images/webapp/images/fieldlookup.js >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/fieldlookup.js?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/framework/images/webapp/images/fieldlookup.js (original) >>>>> +++ ofbiz/trunk/framework/images/webapp/images/fieldlookup.js Thu Jun 5 >>>>> 01:45:10 2008 >>>>> @@ -18,9 +18,25 @@ >>>>> */ >>>>> // ================= FIELD LOOKUP METHODS ============================ >>>>> +var NS4 = (navigator.appName.indexOf("Netscape")>=0 && >>>>> !document.getElementById)? true : false; >>>>> +var IE4 = (document.all && !document.getElementById)? true : false; >>>>> +var IE5 = (document.getElementById && document.all)? true : false; >>>>> +var NS6 = (document.getElementById && >>>>> navigator.appName.indexOf("Netscape")>=0 )? true: false; >>>>> +var mx, my; >>>>> + >>>>> +function moveobj(evt) { >>>>> + if (NS4 || NS6) { >>>>> + mx=evt.screenX; >>>>> + my=evt.screenY; >>>>> + } else if (IE5 || IE4) { >>>>> + mx=event.screenX; >>>>> + my=event.screenY; >>>>> + } >>>>> +} >>>>> var target = null; >>>>> var target2 = null; >>>>> +var lookups = []; >>>>> function call_fieldlookup(target, viewName, >>>>> formName,viewWidth,viewheight) { var fieldLookup = new >>>>> fieldLookup1(target); >>>>> Modified: ofbiz/trunk/framework/images/webapp/images/maincss.css >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/maincss.css?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/framework/images/webapp/images/maincss.css (original) >>>>> +++ ofbiz/trunk/framework/images/webapp/images/maincss.css Thu Jun 5 >>>>> 01:45:10 2008 >>>>> @@ -1722,41 +1722,138 @@ >>>>> /* ===== Table decorator - Calendar ===== */ >>>>> -.calendar { >>>>> -border-right: 0.1em solid #cccccc; >>>>> +.calendar_date_select { >>>>> + color:white; >>>>> + border:#777 1px solid; >>>>> + display:block; >>>>> + width:195px; >>>>> + z-index: 1000; >>>>> +} >>>>> +/* this is a fun ie6 hack to get drop downs to stay behind the popup >>>>> window. This should always be just underneath .calendar_date_select */ >>>>> +iframe.ie6_blocker { >>>>> + position: absolute; >>>>> + z-index: 999; >>>>> } >>>>> -.calendar tr td { >>>>> -border-bottom: 0.1em solid #cccccc; >>>>> -border-left: 0.1em solid #cccccc; >>>>> -vertical-align: top; >>>>> -padding: 0.5em; >>>>> +.calendar_date_select thead th { >>>>> + font-weight:bold; >>>>> + background-color: #000; >>>>> + border-top:1px solid #777; >>>>> + border-bottom:2px solid #333; >>>>> + color: white !important; >>>>> } >>>>> -.calendar .header-row td { >>>>> -background-color: #69a9d9; >>>>> -border-bottom: 0.1em solid #cccccc; >>>>> -border-left: 0.1em solid #cccccc; >>>>> -color: #ffffff; >>>>> -height: auto; >>>>> -text-align: center; >>>>> +.calendar_date_select .cds_buttons { >>>>> + text-align:center; >>>>> + padding:5px 0px; >>>>> + background-color: #555; >>>>> } >>>>> -.calendar tr td .add-new { >>>>> -float: right; >>>>> +.calendar_date_select .cds_footer { >>>>> + background-color: black; >>>>> + padding:3px; >>>>> + font-size:12px; >>>>> + text-align:center; >>>>> } >>>>> -.calendar tr td .h1 { >>>>> -color: #000099; >>>>> -float: left; >>>>> +.calendar_date_select table { >>>>> + margin: 0px; >>>>> + padding: 0px; >>>>> } >>>>> -.calendar .current-period { >>>>> -background-color: #ffffcc; >>>>> + >>>>> +.calendar_date_select .cds_header { >>>>> + background-color: #ccc; >>>>> + border-bottom: 2px solid #aaa; >>>>> + text-align:center; >>>>> } >>>>> -.calendar .active-period { >>>>> -background-color: #eeeeee; >>>>> +.calendar_date_select .cds_header span { >>>>> + font-size:15px; >>>>> + color: black; >>>>> + font-weight: bold; >>>>> +} >>>>> + >>>>> +.calendar_date_select select { font-size:11px;} >>>>> + >>>>> +.calendar_date_select .cds_header a:hover { >>>>> + color: white; >>>>> +} >>>>> +.calendar_date_select .cds_header a { >>>>> + width:22px; >>>>> + height:20px; >>>>> + text-decoration: none; >>>>> + font-size:14px; >>>>> + color:black !important; >>>>> +} >>>>> + >>>>> +.calendar_date_select .cds_header a.prev { >>>>> + float:left; >>>>> +} >>>>> +.calendar_date_select .cds_header a.next { >>>>> + float:right; >>>>> +} >>>>> +.calendar_date_select .cds_header a.close { >>>>> + float:right; >>>>> + display:none; >>>>> +} >>>>> + >>>>> +.calendar_date_select .cds_header select.month { >>>>> + width:90px; >>>>> +} >>>>> + >>>>> +.calendar_date_select .cds_header select.year { >>>>> + width:61px; >>>>> +} >>>>> + >>>>> +.calendar_date_select .cds_buttons a { >>>>> + color: white; >>>>> + font-size: 9px; >>>>> +} >>>>> +.calendar_date_select td { >>>>> + font-size:12px; >>>>> + width: 24px; >>>>> + height: 21px; >>>>> + text-align:center; >>>>> + vertical-align: middle; >>>>> + background-color: #666666; >>>>> +} >>>>> +.calendar_date_select td.weekend { >>>>> + background-color: #606060; >>>>> +} >>>>> + >>>>> +.calendar_date_select td div { >>>>> + color: #fff; >>>>> +} >>>>> +.calendar_date_select td div.other { >>>>> + color: #888; >>>>> +} >>>>> +.calendar_date_select td.selected div { >>>>> + color:black; >>>>> +} >>>>> + >>>>> +.calendar_date_select tbody td { >>>>> + border-bottom: 1px solid #555; >>>>> +} >>>>> +.calendar_date_select td.selected { >>>>> + background-color:white; >>>>> +} >>>>> + >>>>> +.calendar_date_select td:hover { >>>>> + background-color:#ccc; >>>>> +} >>>>> + >>>>> +.calendar_date_select td.today { >>>>> + border: 1px dashed #999; >>>>> +} >>>>> + >>>>> +.calendar_date_select td.disabled div { >>>>> + color: #454545; >>>>> +} >>>>> + >>>>> + >>>>> +.fieldWithErrors .calendar_date_select { >>>>> + border: 2px solid red; >>>>> } >>>>> /* ======================= */ >>>>> >>>>> Modified: ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl >>>>> (original) >>>>> +++ ofbiz/trunk/specialpurpose/cmssite/template/cms/HtmlHead.ftl Thu Jun >>>>> 5 01:45:10 2008 >>>>> @@ -19,9 +19,10 @@ >>>>> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> >>>>> <title>${(decoratedContent.subcontent.title.render)?default("CMS Site >>>>> Generic Title (Set subcontent 'title' on your content!)")}</title> >>>>> <link rel="shortcut icon" href="/images/ofbiz.ico" /> - <script >>>>> language="javascript" src="/images/calendar1.js" >>>>> type="text/javascript"></script> >>>>> - <script language="javascript" src="/images/selectall.js" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" src="/images/prototypejs/prototype.js" >>>>> type="text/javascript"></script> >>>>> <script language="javascript" src="/images/fieldlookup.js" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" src="/images/selectall.js" >>>>> type="text/javascript"></script> >>>>> + <script language="javascript" src="/images/calendar_date_select.js" >>>>> type="text/javascript"></script> >>>>> <link rel="stylesheet" href="/images/ecommain.css" type="text/css"/> >>>>> <link rel="stylesheet" href="/ecommerce/images/blog.css" >>>>> type="text/css"/> >>>>> >>>>> Modified: >>>>> ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>>> URL: >>>>> http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml?rev=663501&r1=663500&r2=663501&view=diff >>>>> >>>>> ============================================================================== >>>>> --- ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml >>>>> (original) >>>>> +++ ofbiz/trunk/specialpurpose/googlebase/widget/GoogleBaseScreens.xml Thu >>>>> Jun 5 01:45:10 2008 >>>>> @@ -34,9 +34,10 @@ >>>>> of stylesheets to the first and second position --> >>>>> <set field="layoutSettings.styleSheets[+0]" >>>>> value="/images/maincss.css" global="true"/> >>>>> <!-- The default (global) java scripts --> >>>>> - <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar1.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/selectall.js" global="true"/> >>>>> <set field="layoutSettings.javaScripts[]" >>>>> value="/images/fieldlookup.js" global="true"/> >>>>> + <set field="layoutSettings.javaScripts[]" >>>>> value="/images/prototypejs/prototype.js" global="true"/> >>>>> + <set field="layoutSettings.javaScripts[]" >>>>> value="/images/calendar_date_select.js" global="true"/> >>>>> <set field="layoutSettings.companyName" >>>>> from-field="uiLabelMap.GoogleBaseCompanyName" global="true"/> >>>>> <set field="layoutSettings.companySubtitle" >>>>> from-field="uiLabelMap.GoogleBaseApplication" global="true"/> >>>>> >>>>> >>>>> >>>>> >>> >> >> > |
Free forum by Nabble | Edit this page |