Thanks Frederic, this worked perfectly right out of the box. I can see how
you changed DataPicker to handle this - the natural next step is to
make DatePicker
have the first weekday as a configuration setting, so that everybody can use
it without hacking the code.

Thanks,
Erlend

2009/8/11 Frederic Aguiard <[email protected]>

> Hello,
>
> To get the MongeyGTD-embedded calendar to start weeks on mondays, you
> have to edit the tiddler named "DatePicker", and replace its contents
> with the following patched code below, between the two 'code start /
> code end' lines.
> Let me know if this works or not; I hope that email will not trash the
> code :)
>
> Kind regards,
>
> Frederic
>
> ----- Code start belows, do not include this line ----
> /***
> |''Name:''|DatePickerLibrary|
> |''Description:''|DatePicker library for use with macros|
> |''Author:''|Saq Imtiaz ( [email protected] )|
> |''Code Repository:''|http://svn.tiddlywiki.org/Trunk/contributors/
> SaqImtiaz/libraries/DatePicker.js|
> |''Version:''|0.9|
> |''Date:''|06/04/2007|
> |''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|
> http://creativecommons.org/licenses/by-sa/3.0/]]|
> |''~CoreVersion:''|2.3.0|
> ***/
>
> // /%
> //!BEGIN-PLUGIN-CODE
> //{{{
> function $id(n) {
>        return document.getElementById(n);
> }
>
> DatePicker = {
>
>        days : ['M','T','W','T','F','S','S'],
>
>        cells : new Array(42),
>
>        setup : function(){
>                var cte = createTiddlyElement;
>                var table = this.table =
> cte(null,"table","datePickerTable");
>                table.style.display = 'none';
>        document.body.appendChild(table);
>                var thead = cte(table,"thead");
>                var hRow = cte(thead,"tr");
>                hRow.onclick = stopEvent;
>                cte(hRow,"td",null,"datePickerNav","<<").onclick =
> DatePicker.prevm;
>                cte(hRow,"td","datePickerMNS",null,null,{colSpan:"5"});
>                cte(hRow,"td",null,"datePickerNav",">>",
> {align:"right"}).onclick=DatePicker.nextm;
>
>                var tbody = cte(table,"tbody","datePickerTableBody");
>                var dayRow = cte(tbody,"tr",null,"datePickerDaysHeader");
>
>                for (var i=0; i<this.days.length; i++){
>                        cte(dayRow,"td",null,null,this.days[i]);
>                }
>        },
>
>        show : function(el,dateObj,cb) {
>                var me = DatePicker;
>                var now = me.now = new Date();
>                if (!dateObj)
>                        dateObj = now;
>                me.root = el;
>                if (cb)
>                        me.root.datePickerCallback = cb;
>                me.scc = { m : now.getMonth(), y : now.getFullYear(), d :
> now.getDate
> () };
>
>                Popup.place(el,me.table,{x:0,y:1});
>
>
>                var cur =
> [dateObj.getDate(),dateObj.getMonth()+1,dateObj.getFullYear
> ()];
>
>                me.cc = { m : cur[1]-1, y : cur[2] };
>                me.sd = { m : cur[1]-1, y : cur[2], d : cur[0] };
>                me.fillCalendar(cur[0],me.scc.d,cur[1]-1,cur[2]);
>        },
>
>        fillCalendar : function(hd,today,cm,cy) {
>                var me = DatePicker;
>
>                var sd = me.now.getDate();
>                var td = new Date(cy,cm,1)
>                var cd = td.getDay();
>
>                $id('datePickerMNS').innerHTML = td.formatString('MMM YYYY')
>
>                var tbody = $id('datePickerTableBody');
>                removeChildren(tbody);
>                var dowRow = createTiddlyElement
> (tbody,"tr",null,"datePickerDowRow");
>
>                for (var d=0;d<=7;d++) {
>                        // dow headings
>
>  createTiddlyElement(dowRow,"td",null,null,DatePicker.days[d]);
>                }
>
>                var days = (new Date(cy, cm+1, 0)).getDate();
>                var day = 1;
>                for (var j=1;j<=6;j++) { //rows
>                        var row =
> createTiddlyElement(tbody,"tr",null,"datePickerDayRow");
>                        for (var t=1; t<=7; t++) { //cells
>                                var d = 7 * (j-1) - (-t) +1; //id key
>                                if ( (d >= (cd -(-1))) && (d<=cd-(-(days)))
> ) {
>                                        var dip = ( ((d-cd < sd) && (cm ==
> me.scc.m) && (cy == me.scc.y))
> || (cm < me.scc.m && cy == me.scc.y) || (cy < me.scc.y) );
>                                        var htd = ( (hd != '') && (d-cd ==
> hd) );
>                                        var hToday = ( (today != '') &&
> (d-cd == today) && cy == me.scc.y
> && cm == me.scc.m );
>                                        if (htd)
>                                                _class = 'highlightedDate';
>                                        else if (dip)
>                                                _class = 'oldDate';
>                                        else if (hToday && ! htd)
>                                                _class = 'todayDate';
>                                        else
>                                                _class = 'defaultDate';
>                                        if (t == 6 || t == 7) {
>                                                // weekend
>                                                _class += ' weekend';
>                                        }
>                                        var cell = createTiddlyElement
> (row,"td","datePickerDay"+d,_class,d-cd);
>                                        cell.onmouseover =
> function(e){addClass(this,'tdover');};
>                                        cell.onmouseout =
> function(e){removeClass(this,'tdover');};
>                                        cell.onclick = me.selectDate;
>                                        me.cells[d] = new Date(cy,cm,d-cd);
>                                }
>                                else {
>                                        var cell = createTiddlyElement
> (row,"td","datePickerDay"+d,"emptyDate");
>                                }
>                                day++;
>                        }
>                        if(day > days + cd)
>                                break;
>                }
>        },
>
>        nextm : function() {
>                var me = DatePicker;
>                me.cc.m += 1;
>                if (me.cc.m >= 12) {
>                        me.cc.m = 0;
>                        me.cc.y++;
>                }
>                me.fillCalendar(me.getDayStatus
> (me.cc.m,me.cc.y),me.scc.d,me.cc.m,me.cc.y);
>                return false;
>        },
>
>        prevm : function() {
>                var me = DatePicker;
>                me.cc.m -= 1;
>                if (me.cc.m < 0) {
>                        me.cc.m = 11;
>                        me.cc.y--;
>                }
>                me.fillCalendar(me.getDayStatus
> (me.cc.m,me.cc.y),me.scc.d,me.cc.m,me.cc.y);
>                return false;
>        },
>
>        getDayStatus : function(ccm,ccy){
>                return (ccy == this.sd.y && ccm == this.sd.m)? this.sd.d :
> '';
>        },
>
>        selectDate : function(ev){
>                var e = ev ? ev : window.event;
>                var me = DatePicker;
>                var date =
> me.cells[resolveTarget(e).id.substring(13,resolveTarget
> (e).id.length)];
>                if (me.root.datePickerCallback && typeof
> me.root.datePickerCallback
> == 'function')
>                        me.root.datePickerCallback(me.root,date);
>                $id('datePickerTable').style.display = 'none';
>                return false;
>        },
>
>        onclick : function(ev){
>                $id("datePickerTable").style.display = 'none';
>                return false;
>        },
>
>        create : function(el,dateObj,cb){
>                el.onclick = el.onfocus = function(e){DatePicker.show
> (el,dateObj,cb);stopEvent(e)};
>        },
>
>        css: "table#datePickerTable td.datePickerNav {\n"+
>                "    cursor:pointer;\n"+
>                "}\n"+
>                "\n"+
>                ".datePickerDaysHeader td {\n"+
>                "    text-align:center;\n"+
>                "    background:#ABABAB;\n"+
>                "    font:12px Arial;\n"+
>                "}\n"+
>                "\n"+
>                ".datePickerDayRow td {\n"+
>                "    width:18px;\n"+
>                "    height:18px;\n"+
>                "}\n"+
>                "\n"+
>                "td#datePickerMNS, td.datePickerNav {\n"+
>                "    font:bold 13px Arial;\n"+
>                "}\n"+
>                "\n"+
>                "table#datePickerTable {\n"+
>                "    position:absolute;\n"+
>                "    border-collapse:collapse;\n"+
>                "    background:#FFFFFF;\n"+
>                "    border:1px solid #ABABAB;\n"+
>                "    display:none;   \n"+
>                "}\n"+
>                "\n"+
>                "table#datePickerTable td{\n"+
>                "    padding: 3px;\n"+
>                "}\n"+
>                "\n"+
>                "td#datePickerMNS {\n"+
>                "    text-align: center;\n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td {\n"+
>                "    background-color : #C4D3EA;\n"+
>                "    cursor : pointer;\n"+
>                "    border : 1px solid #6487AE;\n"+
>                "    text-align : center;\n"+
>                "       font : 10px Arial;\n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td.defaultDate {\n"+
>                "       color : #333333;        \n"+
>                "       text-decoration : none;   \n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td.emptyDate {\n"+
>                "    cursor:default; \n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td.oldDate {\n"+
>                "       color : #ABABAB;\n"+
>                "    text-decoration : line-through;\n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td.highlightedDate {\n"+
>                "    background : #FFF799;\n"+
>                "       font-weight : bold;\n"+
>                "       color : #333333;\n"+
>                "}\n"+
>                "\n"+
>                "tr.datePickerDayRow td.todayDate {\n"+
>                "       font-weight : bold;\n"+
>                "       color : red;\n"+
>                "}\n"+
>                "\n"+
>                "table#datePickerTable tr.datePickerDayRow td.tdover {\n"+
>                "    background:#fc6;\n"+
>                "}",
>
>        init : function(){
>                this.setup();
>                addEvent(document,'click',DatePicker.onclick);
>                config.shadowTiddlers['StyleSheetDatePicker'] = this.css;
>                if(store)
>
>  store.addNotification('StyleSheetDatePicker',refreshStyles);
>        }
> };
>
> DatePicker.init();
> //}}}
> //!END-PLUGIN-CODE
> // %/
> ----- Code ends here, do not include this line ----

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "GTD 
TiddlyWiki" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/gtd-tiddlywiki?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to