Weird Request..

Archived from the Xataface Users forum.

digital1 — Thu Dec 16, 2010 8:10 am

I know this may be a bit weird, but is there a way in the Event’s calendar to have the link go directly to the edit screen instead of the right side panel view that shows the event details? I have a client that wants the linked event on the calendar to just go to the edit form.


shannah — Thu Dec 16, 2010 11:46 am

You should be able to do this by overriding the Dataface.Calendar.Event.prototype.getDescription function.

e.g.

Create a javascript file “calendar-override.js”:

Code: Select all
jQuery(document).ready(function($){     Dataface.Calendar.Event.prototype.getDescription = function(){         window.location.href=DATAFACE_SITE_HREF+'?-action=edit&-recordid='+encodeURIComponent(this.record_id);     }; });

Then Add appropriate javascript files to the head of the document by adding the following to your application delegate class:

Code: Select all
function beforeHandleRequest(){     $app = Dataface_Application::getInstance();     $query =& $app->getQuery();     if ( $query['-action'] == 'calendar' ){          $app->addHeadContent('<script src="'.DATAFACE_URL.'/js/jquery.packed.js"></script>');          $app->addHeadContent('<script src="'.DATAFACE_SITE_URL.'/calendar-override.js"></script>');     } }

(Note this snippet hasn’t been tested so undoubtedly contains a few bugs… but this is the right idea).

-Steve


digital1 — Mon Dec 20, 2010 9:22 am

Greetings Steve,

Thanks for the quick response. I have been trying to get it to work, this is what I have so far:

This is the Application delegate

Code: Select all
if ( $query['-table'] == 'show' and $app->_conf['using_default_action'] ){             $query['-action'] = 'calendar';          $app->addHeadContent('<script src="'.DATAFACE_URL.'/js/jquery.packed.js"></script>');           $app->addHeadContent('<script src="'.DATAFACE_SITE_URL.'/calendar-override.js"></script>');                }

Here is my JS

Code: Select all
jQuery(document).ready(function($){         //window.location.href=DATAFACE_SITE_HREF+'?-action=edit&-recordid='+encodeURIComponent(this.record_id);                 Dataface.Calendar.prototype.drawMonth = function () {     var firstDay = new Date(this.selectedDate.getFullYear(), this.selectedDate.getMonth(), 1);     var out = '<table class="Dataface-Calendar-month" cellspacing="0"><thead><tr><th>' + Date.daysOfWeek.join('</th><th>') + '</th></tr></thead>';     out += '<tbody>';     var day = -1;     for (var i = 0; i < 5; i++) {         out += '<tr>';         for (var j = 0; j < 7; j++) {             if ((day == -1) && (firstDay.getDay() == j)) {                 day = 0;             }             if (day == this.selectedDate.daysInMonth()) {                 day = -1;             }             var cls = '';             if (day >= 0) cls = 'Dataface-Calendar-day';             else cls = 'Dataface-Calendar-empty-day';             out += '<td class="' + cls + '"><div class="day-wrapper"';             if (day >= 0) {                 var currDay = this.selectedDate.clone();                 currDay.setDate(day + 1);                 out += '<div class="day-number"><a href="javascript:Dataface.Calendar.getInstance(\'' + this.id + '\').handleSelectDay(\'' + currDay.toString() + '\')">' + (day + 1) + '</a></div>';                 var events = this.events.day(currDay);                 for (var k = 0; k < events.length; k++) {                       var link=DATAFACE_SITE_HREF+'?-action=edit&-recordid='+encodeURIComponent(this.record_id);                     out += '<div class="Dataface-Calendar-event" id="event-preview-' + events[k].id + '"><a href="'+link+'">' + events[k].title + '</a></div>';                 }                 day++;             }             out += '</div></td>';         }         out += '</tr>';     }        out += '</tbody></table>';     return out;                             }; });

Am I doing something wrong here? I am not seeing the change happen in the calendar. I did notice that some interesting path info got set in the generated HTML.


shannah — Fri Jan 14, 2011 12:30 pm

Hard to say what is going wrong… overriding the entire drawMonth method may be more extreme than necessary. Is overriding just the description not sufficient?