fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [14292] fixing forms


From: Saul
Subject: [Fmsystem-commits] [14292] fixing forms
Date: Fri, 06 Nov 2015 21:46:59 +0000

Revision: 14292
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=14292
Author:   psaul
Date:     2015-11-06 21:46:59 +0000 (Fri, 06 Nov 2015)
Log Message:
-----------
fixing forms

Modified Paths:
--------------
    branches/dev-syncromind/bookingfrontend/inc/class.uibuilding.inc.php
    branches/dev-syncromind/bookingfrontend/inc/class.uievent.inc.php
    branches/dev-syncromind/bookingfrontend/inc/class.uiresource.inc.php
    branches/dev-syncromind/bookingfrontend/templates/base/application_edit.xsl

Added Paths:
-----------
    branches/dev-syncromind/bookingfrontend/js/bookingfrontend/event.js
    branches/dev-syncromind/bookingfrontend/js/bookingfrontend/schedule.js

Modified: branches/dev-syncromind/bookingfrontend/inc/class.uibuilding.inc.php
===================================================================
--- branches/dev-syncromind/bookingfrontend/inc/class.uibuilding.inc.php        
2015-11-06 21:44:29 UTC (rev 14291)
+++ branches/dev-syncromind/bookingfrontend/inc/class.uibuilding.inc.php        
2015-11-06 21:46:59 UTC (rev 14292)
@@ -274,7 +274,7 @@
             $building['date'] = phpgw::get_var('date', 'GET');
         }
 
-        self::add_javascript('booking', 'booking', 'schedule.js');
+        self::add_javascript('bookingfrontend', 'bookingfrontend', 
'schedule.js');
         phpgwapi_jquery::load_widget("datepicker");
 
         $building['picker_img'] = 
$GLOBALS['phpgw']->common->image('phpgwapi','cal');
@@ -299,7 +299,7 @@
             $building['date'] = phpgw::get_var('date', 'GET');
         }
         $building['deactivate_application'] = 1;
-        self::add_javascript('booking', 'booking', 'schedule.js');
+        self::add_javascript('bookingfrontend', 'bookingfrontend', 
'schedule.js');
         self::render_template('building_schedule', array('building' => 
$building, 'backend' => $backend));
     }
 

Modified: branches/dev-syncromind/bookingfrontend/inc/class.uievent.inc.php
===================================================================
--- branches/dev-syncromind/bookingfrontend/inc/class.uievent.inc.php   
2015-11-06 21:44:29 UTC (rev 14291)
+++ branches/dev-syncromind/bookingfrontend/inc/class.uievent.inc.php   
2015-11-06 21:46:59 UTC (rev 14292)
@@ -125,7 +125,7 @@
             }
 
             $date = substr($event['from_'], 0, 10);
-            self::add_javascript('booking', 'booking', 'event.js');
+            self::add_javascript('bookingfrontend', 'bookingfrontend', 
'event.js');
             $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
             $event['cancel_link'] = self::link(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
             $activities = $this->activity_bo->fetch_activities();
@@ -203,7 +203,7 @@
             }
             $this->flash_form_errors($errors);
             $date = substr($event['from_'], 0, 10);
-            self::add_javascript('booking', 'booking', 'event.js');
+            self::add_javascript('bookingfrontend', 'bookingfrontend', 
'event.js');
             $event['resources_json'] = json_encode(array_map('intval', 
$event['resources']));
             $event['cancel_link'] = self::link(array('menuaction' => 
'bookingfrontend.uibuilding.schedule', 'id'=> $event['building_id'], 'date' => 
$date));
             $activities = $this->activity_bo->fetch_activities();

Modified: branches/dev-syncromind/bookingfrontend/inc/class.uiresource.inc.php
===================================================================
--- branches/dev-syncromind/bookingfrontend/inc/class.uiresource.inc.php        
2015-11-06 21:44:29 UTC (rev 14291)
+++ branches/dev-syncromind/bookingfrontend/inc/class.uiresource.inc.php        
2015-11-06 21:46:59 UTC (rev 14292)
@@ -64,7 +64,7 @@
                                'resource_id' => $resource['id'], 
                                'phpgw_return_as' => 'json',
                        ));
-            self::add_javascript('booking', 'booking', 'schedule.js');
+            self::add_javascript('bookingfrontend', 'bookingfrontend', 
'schedule.js');
             phpgwapi_jquery::load_widget("datepicker");
             $resource['picker_img'] = 
$GLOBALS['phpgw']->common->image('phpgwapi','cal');
             

Added: branches/dev-syncromind/bookingfrontend/js/bookingfrontend/event.js
===================================================================
--- branches/dev-syncromind/bookingfrontend/js/bookingfrontend/event.js         
                (rev 0)
+++ branches/dev-syncromind/bookingfrontend/js/bookingfrontend/event.js 
2015-11-06 21:46:59 UTC (rev 14292)
@@ -0,0 +1,221 @@
+var building_id_selection = "";
+$(document).ready(function() {
+    
JqueryPortico.autocompleteHelper('index.php?menuaction=booking.uibuilding.index&phpgw_return_as=json&',
 
+                                                  'field_building_name', 
'field_building_id', 'building_container');
+
+    
JqueryPortico.autocompleteHelper('index.php?menuaction=booking.uiorganization.index&phpgw_return_as=json&',
 
+                                         'field_org_name', 'field_org_id', 
'org_container');
+
+    $("#field_activity").change(function(){
+        var oArgs = 
{menuaction:'bookingfrontend.uiapplication.get_activity_data', 
activity_id:$(this).val()};
+        var requestUrl = phpGWLink('index.php', oArgs, true);
+
+        $.ajax({
+            type: 'POST',
+            dataType: 'json',
+            url: requestUrl,
+            success: function(data) {
+                var html_agegroups = '';
+                var html_audience = '';
+
+                if( data != null)
+                {
+                    var agegroups = data.agegroups;
+                    for ( var i = 0; i < agegroups.length; ++i )
+                    {
+                        html_agegroups += "<tr>";
+                        html_agegroups += "<th>" + agegroups[i]['name'] + 
"</th>";
+                        html_agegroups += "<td>";
+                        html_agegroups += "<input class=\"input50\" 
type=\"text\" name='male[" +agegroups[i]['id'] + "]' value='0'></input>";
+                        html_agegroups += "</td>";
+                        html_agegroups += "<td>";
+                        html_agegroups += "<input class=\"input50\" 
type=\"text\" name='female[" +agegroups[i]['id'] + "]' value='0'></input>";
+                        html_agegroups += "</td>";
+                        html_agegroups += "</tr>";
+                    }
+                    $("#agegroup_tbody").html( html_agegroups );
+
+                    var audience = data.audience;
+                    for ( var i = 0; i < audience.length; ++i )
+                    {
+                            html_audience += "<li>";
+                            html_audience += "<label>";
+                            html_audience += "<input type=\"radio\" 
name=\"audience[]\" value='" +audience[i]['id'] + "'></input>";
+                            html_audience += audience[i]['name'];
+                            html_audience += "</label>";
+                            html_audience += "</li>";
+                    }
+                    $("#audience").html( html_audience );
+                }
+            }
+        });
+    });
+});
+    
+$(window).load(function() {
+    var building_id = $('#field_building_id').val();
+    if(building_id) {
+        populateTableChkResources(building_id, initialSelection);
+        building_id_selection = building_id;
+    }
+    $("#field_building_name").on("autocompleteselect", function(event, ui){
+        var building_id = ui.item.value;        
+        if (building_id != building_id_selection){
+            populateTableChkResources(building_id, []);
+            building_id_selection = building_id;
+        }
+    });
+});
+
+$.formUtils.addValidator({
+    name: 'target_audience',
+    validatorFunction: function(value, $el, config, languaje, $form) {
+        var n = 0;
+        $('#audience input[name="audience[]"]').each(function(){
+           if ($(this).is(':checked')) {
+               n++;
+           }
+        });
+        var v = (n > 0) ? true : false;
+        return v;
+    },
+    errorMessage: 'Please choose at least 1 target audience',
+    errorMessageKey: ''
+})
+
+$.formUtils.addValidator({
+    name: 'number_participants',
+    validatorFunction: function(value, $el, config, languaje, $form) {
+        var n = 0;
+        $('#agegroup_tbody input').each(function() {
+            if ($(this).val() != "" && $(this).val() > 0) {
+                n++;
+            } 
+        });
+        var v = (n > 0) ? true : false;
+        return v;
+    },
+    errorMessage: 'Number of participants is required',
+    errorMessageKey: ''
+});
+
+$.formUtils.addValidator({
+    name: 'customer_identifier',
+    validatorFunction: function(value, $el, config, languaje, $form) {
+        var v = true;
+        var customer_ssn = $('#field_customer_ssn').val();
+        var customer_organization_number = 
$('#field_customer_organization_number').val();
+        var cost = $('#field_cost').val();
+        if ( (customer_ssn == "" && customer_organization_number == "") && 
(cost > 0) ) {
+           v = false;
+        }
+        return v;
+    },
+    errorMessage: 'There is set a cost, but no invoice data is filled inn',
+    errorMessageKey: ''
+});
+
+$.formUtils.addValidator({
+    name: 'application_dates',
+    validatorFunction: function(value, $el, config, languaje, $form) {
+        var n = 0;
+        if ($('input[name="from_[]"]').length == 0 || 
$('input[name="from_[]"]').length == 0) {
+            return false;
+        }
+        $('input[name="from_[]"]').each(function(){
+            if ($(this).val() == "") {
+                $($(this).addClass("error").css("border-color","red"));
+                n++;
+            } else {
+                $($(this).removeClass("error").css("border-color",""));
+            }
+        });
+        $('input[name="to_[]"]').each(function(){
+            if ($(this).val() == "") {
+                $($(this).addClass("error").css("border-color","red"));
+                n++;
+            } else {
+                $($(this).removeClass("error").css("border-color",""));
+            }
+        });
+        var v = (n == 0) ? true : false;
+        return v;
+    },
+    errorMessage: 'Invalida date',
+    errorMessageKey: ''
+});
+
+function populateTableChkResources (building_id, selection) {
+    var url = 
'index.php?menuaction=booking.uiresource.index&sort=name&filter_building_id=' + 
 building_id + '&phpgw_return_as=json&';
+    var container = 'resources_container';
+    var colDefsResources = [{label: '', object: [{type: 'input', attrs: 
[{name: 'type', value: 'checkbox'},{name: 'name', value: 'resources[]'},{name: 
'data-validation', value: 'checkbox_group'},{name: 'data-validation-qty', 
value: 'min1'},{name: 'data-validation-error-msg', value: 'Please choose at 
least 1 resource'}]}], value: 'id', checked: selection},{key: 'name', label: 
lang['Name']}, {key: 'type', label: lang['Resource Type']}];
+    populateTableChk(url, container, colDefsResources);
+}
+
+function populateTableChk (url, container, colDefs) {    
+    createTable(container,url,colDefs);
+}
+
+
+/*
+
+populateResourceTable = function(building_id, selection) {
+    YAHOO.booking.checkboxTableHelper('resources_container', 
'index.php?menuaction=booking.uiresource.index&sort=name&filter_building_id=' + 
 building_id + '&phpgw_return_as=json&',
+    'resources[]', selection, {additional_fields: [{key: 'type', label: 
lang['Resource Type']}]});
+}
+
+var createFromToDatePickerSection = function(containerEl) {
+       if (!this.counter) { this.counter = 0; }
+       containerEl.className = 'date-container';
+       containerEl.innerHTML = '                                               
        ' +
+'                      <a href="#" class="close-btn">-</a>             ' +
+'                      <div><label>'+lang['From']+'</label></div>              
                ' +
+'                      <div class="datetime-picker">                   ' +
+'                              <input id="js_date_'+this.counter+'_from" 
type="text" name="from_[]">   ' +
+'                      </div>                                                  
                ' +
+'                      <div><label>'+lang['To']+'</label></div>                
                ' +
+'                      <div class="datetime-picker">                   ' +
+'                              <input id="js_date_'+this.counter+'_to" 
type="text" name="to_[]">       ' +
+'                      </div>';
+       this.counter++;
+}
+
+removeDateRow = function(e) {
+       this.parentNode.parentNode.removeChild(this.parentNode);
+       YAHOO.util.Event.stopEvent(e);
+}
+
+YAHOO.util.Event.addListener(window, "load", function() {
+       var Dom = YAHOO.util.Dom;
+    var building_id = YAHOO.util.Dom.get('field_building_id').value;
+    if(building_id) {
+        populateResourceTable(building_id, YAHOO.booking.initialSelection);
+    }
+    var ac = 
YAHOO.booking.autocompleteHelper('index.php?menuaction=booking.uibuilding.index&phpgw_return_as=json&',
 
+                                              'field_building_name', 
'field_building_id', 'building_container');
+    // Update the resource table as soon a new building is selected
+    ac.itemSelectEvent.subscribe(function(sType, aArgs) {
+        populateResourceTable(aArgs[2].id, []);
+    });
+       Dom.getElementsByClassName('close-btn', 'a', null, function(a) {
+               a.onclick = removeDateRow;
+       });
+       // Add more From-To datepicker pairs when the user clicks on the add 
link/button
+       YAHOO.util.Event.addListener("add-date-link", "click", function(e) {
+               var container = Dom.get('dates-container');
+               var div = document.createElement('div');
+
+               createFromToDatePickerSection(div);     
+       
+               container.appendChild(div);
+               var a = div.getElementsByTagName('a')[0];
+               a.onclick = removeDateRow;
+               YAHOO.booking.setupDatePickers();
+               YAHOO.util.Event.stopEvent(e);
+       });
+    
YAHOO.booking.autocompleteHelper('index.php?menuaction=booking.uiorganization.index&phpgw_return_as=json&',
 
+                                     'field_org_name', 'field_org_id', 
'org_container');
+});
+
+
+*/
\ No newline at end of file

Added: branches/dev-syncromind/bookingfrontend/js/bookingfrontend/schedule.js
===================================================================
--- branches/dev-syncromind/bookingfrontend/js/bookingfrontend/schedule.js      
                        (rev 0)
+++ branches/dev-syncromind/bookingfrontend/js/bookingfrontend/schedule.js      
2015-11-06 21:46:59 UTC (rev 14292)
@@ -0,0 +1,489 @@
+var schedule = new Array();
+
+schedule.renderSchedule = function(container, url, date, colFormatter, 
includeResource, classTable) {
+    classTable = (classTable) ? classTable : "pure-table";
+    while(date.getDay() != 1) {
+        date.setDate(date.getDate()-1);
+    }
+//    var container = document.getElementById(container);
+//    container.innerHTML = '';
+    url += '&date=' + date.getFullYear() + '-' + (date.getMonth()+1) + '-' + 
date.getDate();
+
+    var lang = {
+            WEEKDAYS_FULL: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 
'Thursday', 'Friday', 'Saturday'],
+            MONTHS_LONG: ['January', 'February', 'March', 'April', 'May', 
'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+            LBL_TIME: 'Time',
+            LBL_RESOURCE: 'Resource',
+            LBL_WEEK: 'Week'
+    };
+    
+    var colDefs = [{key: 'time', label: date.getFullYear() +'<br/>' + 
lang['LBL_TIME']}];
+    if(includeResource) {
+        colDefs.push({key: 'resource', label: lang['LBL_RESOURCE'], formatter: 
'scheduleResourceColumn'});
+    }
+    schedule.dates = {};
+    var keys = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+    for (var i=0;i<7;i++) {
+        var d = new Date(date.getFullYear(), date.getMonth(), date.getDate());
+        d.setDate(d.getDate() + i);
+        var x = (i<6) ? i+1 : 0;
+        schedule.dates[keys[x]] = d;
+        colDefs.push({key: keys[x], label: lang['WEEKDAYS_FULL'][x] + '<br>' + 
lang['MONTHS_LONG'][d.getMonth()] + ' ' + d.getDate(), formatter: colFormatter, 
date: d, day: d.getDate()});
+    }
+    var r = [{n: 'ResultSet'},{n: 'Result'}];
+//    createta d u c r cl
+    createTableSchedule(container, url, colDefs, r, classTable, 
schedule.state);
+
+};
+
+schedule.setupWeekPicker = function(){}
+$(function() {
+    $( "#cal_container #datepicker" ).datepicker({
+        showWeek: true,
+        changeMonth: true,
+        changeYear: true,
+        firstDay: 1,
+        onSelect: function(a,e){
+            if (a != schedule.dateSelected){
+                var date = new Date(a);
+                schedule.dateSelected = a;
+                schedule.updateSchedule(date);
+            }
+        }
+    });
+    $("#cal_container #pickerImg").on('click', function(){
+        $( "#cal_container #datepicker" ).datepicker( "show" );
+    });
+});
+
+schedule.updateSchedule = function (date) {
+    schedule.week = $.datepicker.iso8601Week(date);
+    $('#cal_container #numberWeek').text(schedule.week);
+    $("#cal_container #datepicker").datepicker("setDate", date);
+    classTable = (schedule.classTable) ? schedule.classTable : 'pure-table';
+
+    var url = self.location.href;
+    url = url.substr(0, (url.indexOf("#date")));
+    url += '#date=' + date.getFullYear() + '-' + (date.getMonth()+1) + '-' + 
date.getDate();
+    location.replace(url);
+    schedule.renderSchedule('schedule_container', schedule.datasourceUrl, 
date, schedule.colFormatter, schedule.includeResource, classTable);
+    schedule.date = date;
+}
+
+schedule.moveWeek = function (n) {
+    var date = schedule.date;
+    while(date.getDay() != 1) {
+        date.setDate(date.getDate()-1);
+    }
+    date.setDate(date.getDate() + n);
+    schedule.updateSchedule(date);
+}
+schedule.prevWeek = function () {
+    schedule.moveWeek(-7)
+};
+schedule.nextWeek = function () {
+    schedule.moveWeek(7)
+}
+
+
+schedule.newApplicationForm = function(date, _from, _to, resource) {
+//    console.log(arguments);
+//    console.log(arguments.length);
+    var url = schedule.newApplicationUrl;
+    if (!url){
+        return;
+    }
+    if (arguments.length == 0) {
+        window.location.href = url;
+        return;
+    }
+    resource = (resource) ? resource : null;
+    date = (date) ? date : schedule.date;
+    _from = _from ? '%20' + _from: '';
+    _to = _to ? '%20' + _to: '';
+    var state = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + 
date.getDate();
+    var day = date.getDay();
+    var weekday=new Array(7);
+    weekday[0]="sunday";
+    weekday[1]="monday";
+    weekday[2]="tuesday";
+    weekday[3]="wednesday";
+    weekday[4]="thursday";
+    weekday[5]="friday";
+    weekday[6]="saturday";
+    url += '&from_[]=' + state + _from + '&to_[]=' + state + _to + '&weekday=' 
+ weekday[day];
+    if (resource){
+        url += '&resource=' + resource;
+    }
+    window.location.href = url;
+}
+
+schedule.showInfo2 = function(url, resource) {
+    var content_overlay = document.getElementById('content_overlay');
+    var overlay = document.createElement('div');
+    var img = document.createElement('img');
+    
img.setAttribute('src','/portico/phpgwapi/templates/pure/images/loading_overlay.gif');
    
+    overlay.appendChild(img);
+    content_overlay.appendChild(overlay);
+    var hc = $('#content_overlay').height();
+    var ho = $('#schedule_overlay').height();
+    var top = (hc-(ho+42))/2;
+    overlay.style.top = top+"px";
+    overlay.style.display = 'block';
+    resource = (resource) ? resource : null;
+    url = url.replace(/&amp;/gi, '&') + '&resource=' + resource;
+    overlay.setAttribute('id', 'schedule_overlay');
+    content_overlay.appendChild(overlay);
+    $.get(url, function(data){
+       overlay.innerHTML = data;
+       var hc = $('#content_overlay').height();
+       var ho = $('#schedule_overlay').height();
+       var top = (hc-(ho+42))/2;
+       overlay.style.top = top+"px";
+       overlay.style.display = 'block';
+    })
+    .fail(function() {
+        $('#schedule_overlay').hide().remove();
+        alert( "Failed to load booking details page" );
+    });
+}
+
+schedule.showInfo = function(url, resource) {
+    var dialog = document.getElementById('dialog_schedule');
+    var img = document.createElement('img');
+    
img.setAttribute('src','/portico/phpgwapi/templates/pure/images/loading_overlay.gif');
+    img.style.display = "block";
+    img.style.margin = "37px auto 0";
+    dialog.appendChild(img);
+    
+    schedule.dialogSchedule.dialog("close");
+    schedule.dialogSchedule.dialog("destroy");
+    schedule.createDialogSchedule(300);
+    schedule.dialogSchedule.dialog("open");
+    
+    resource = (resource) ? resource : null;
+    url = url.replace(/&amp;/gi, '&') + '&resource=' + resource;
+    
+    $.get(url, function(data){
+       schedule.dialogSchedule.dialog("close");
+       schedule.dialogSchedule.dialog("destroy");
+       dialog.innerHTML = data;
+       schedule.createDialogSchedule(650);
+       schedule.dialogSchedule.dialog("open");
+    })
+    .fail(function() {
+        schedule.dialogSchedule.dialog("close");
+        alert( "Failed to load booking details page" );
+    });
+}
+
+schedule.createDialogSchedule = function(w){
+    var ww = $(window).width();
+    w = (w > (ww-40)) ? (ww-40) : w;
+    schedule.dialogSchedule = $('#dialog_schedule').dialog({
+        autoOpen: false,
+        modal: true,
+        width: w,
+        close: function(){
+            schedule.cleanDialog();
+        }
+    });
+}
+
+schedule.cleanDialog = function(){
+    $('#dialog_schedule').html("");
+}
+
+schedule.closeOverlay = function(){
+    $('#schedule_overlay').hide().remove();
+}
+
+schedule.newAllocationForm = function(args) {
+       
+       var oArgs = {menuaction:'booking.uiseason.wtemplate_alloc'};
+       if (typeof(args['id']) !== 'undefined')
+       {
+               oArgs['id'] = args['id'];
+       } else {
+               if (typeof(args['_from']) !== 'undefined')
+               {
+                       oArgs['_from'] = args['_from'];
+               }
+               if (typeof(args['_to']) !== 'undefined')
+               {
+                       oArgs['_to'] = args['_to'];
+               }
+               if (typeof(args['wday']) !== 'undefined')
+               {
+                       oArgs['wday'] = args['wday'];
+               }
+       }
+       
+       var sUrl = phpGWLink('index.php', oArgs);
+       
+    for(var i=0; i< resource_ids.length; i++) {
+               sUrl += '&filter_id[]=' + resource_ids[i];
+       }
+       
+       TINY.box.show({iframe:sUrl, 
boxid:'frameless',width:650,height:500,fixed:false,maskid:'darkmask',maskopacity:40,
 mask:true, animate:true,
+       close: true,
+       closejs:false
+       });
+};
+
+
+
+
+
+/*
+colors = ['color1', 'color2', 'color3', 'color4', 'color5', 'color6', 
'color7', 'color8', 'color9', 'color10',
+                 'color11', 'color12', 'color13', 'color14', 'color15', 
'color16', 'color17', 'color18', 'color19', 'color20',
+          'color21', 'color22', 'color23', 'color24', 'color25', 'color26', 
'color27', 'color28', 'color29', 'color30',
+          'color31', 'color32', 'color33', 'color34', 'color35', 'color36', 
'color37', 'color38', 'color39', 'color40',
+          'color41', 'color42', 'color43', 'color44', 'color45', 'color46', 
'color47', 'color48', 'color49', 'color50',
+          'color51', 'color52', 'color53', 'color54', 'color55', 'color56', 
'color57', 'color58', 'color59', 'color60',];
+colorMap = {};
+
+YAHOO.booking.shorten = function(text, max) {
+       if(max && text.length > max)
+               text = text.substr(text, max) + '...';
+       return text;
+}
+
+YAHOO.booking.link = function(label, link, max) {
+       label = YAHOO.booking.shorten(label, max);
+       if(link)
+               return '<a href="' + link + '">' + label + '</a>';
+       else
+               return label;
+}
+
+YAHOO.booking.scheduleResourceColFormatter = function(elCell, oRecord, 
oColumn, text) {
+       if(text && oRecord.getData('resource_link')) {
+               elTr = elCell.parentNode.parentNode;
+               elTr.setAttribute("resource", oRecord.getData('resource_id'));
+               elCell.innerHTML = '<a href="' + 
oRecord.getData('resource_link') + '">' + text + '</a>';
+       }
+       else if (text) {
+               elCell.innerHTML = text;
+       }
+}
+
+YAHOO.booking.frontendScheduleColorFormatter = function(elCell, oRecord, 
oColumn, booking) { 
+       if(booking) {
+               if(!colorMap[booking.name]) {
+                       colorMap[booking.name] = colors.length ? colors.shift() 
: 'color60';
+               }1
+               var color = colorMap[booking.name];
+               YAHOO.util.Dom.addClass(elCell, 'info');
+               YAHOO.util.Dom.addClass(elCell, color);
+               YAHOO.util.Dom.addClass(elCell, booking.type);
+               if (booking.is_public == 0) {
+                       elCell.innerHTML = YAHOO.booking.shorten('Privat arr.', 
9);
+               } else {
+                       if (booking.shortname)
+                               elCell.innerHTML = 
YAHOO.booking.shorten(booking.shortname, 9);
+                       else    
+                               elCell.innerHTML = 
YAHOO.booking.shorten(booking.name, 9);
+               }
+               elCell.onclick = function() 
{YAHOO.booking.showBookingInfo(booking,elCell); return false; };
+       }
+       else {
+               elCell.innerHTML = '...';
+               var data = oRecord.getData();
+               elCell.ondblclick = function() 
{YAHOO.booking.newApplicationForm(YAHOO.booking.dates[oColumn.field], 
data._from, data._to, elCell); return false; };
+       }
+};
+
+YAHOO.booking.showBookingInfo = function(booking,elCell) {
+       var overlay = new YAHOO.widget.Overlay("overlay-info", { 
fixedcenter:true, visible:true, width:"400px" } );     
+       var callback = {
+               success : function(o) {
+                       overlay.setBody(o.responseText);
+               },
+               failure : function(o) {
+                       overlay.hide();
+                       alert('Failed to load booking details page');
+               }
+       }
+       resource = elCell.parentNode.parentNode.getAttribute('resource');
+       var conn = YAHOO.util.Connect.asyncRequest("GET", 
booking.info_url.replace(/&amp;/gi, '&') + '&resource=' + resource, callback);
+       overlay.setBody('<img 
src="http://l.yimg.com/a/i/us/per/gr/gp/rel_interstitial_loading.gif"; />');
+       overlay.render(document.body);
+}
+
+YAHOO.booking.bookingToHtml = function(booking) { 
+       if(booking.type == 'booking') {
+               var link = 'index.php?menuaction=booking.uibooking.edit&id=' + 
booking.id;
+       }
+       else if(booking.type == 'allocation') {
+               var link = 'index.php?menuaction=booking.uiallocation.edit&id=' 
+ booking.id;
+       }
+       else if(booking.type == 'event') {
+               var link = 'index.php?menuaction=booking.uievent.edit&id=' + 
booking.id;
+       }
+       else {
+               var link = null;
+       }
+       if (booking.shortname)
+               var html = YAHOO.booking.link(booking.shortname, link, 9);
+       else 
+               var html = YAHOO.booking.link(booking.name, link, 9);
+
+       if(booking.type == 'event' && booking.conflicts) {
+               for(var i=0; i<booking.conflicts.length;i++) {
+                       html += '<div class="conflict">conflicts with: ' + 
YAHOO.booking.bookingToHtml(booking.conflicts[i]) + '</div>';
+               }
+       }
+       return html;
+};
+
+YAHOO.booking.backendScheduleColorFormatter = function(elCell, oRecord, 
oColumn, booking) { 
+       if(booking) {
+               if(!colorMap[booking.name]) {
+                       colorMap[booking.name] = colors.length ? colors.shift() 
: 'color60';
+               }
+               var color = colorMap[booking.name];
+               YAHOO.util.Dom.addClass(elCell, color);
+               YAHOO.util.Dom.addClass(elCell, booking.type);
+               elCell.innerHTML = YAHOO.booking.bookingToHtml(booking);
+       }
+       else {
+               elCell.innerHTML = '...';
+       }
+};
+
+YAHOO.booking.scheduleColorFormatter = function(elCell, oRecord, oColumn, 
booking) { 
+       if(booking) {
+               if(!colorMap[booking.name]) {
+                       colorMap[booking.name] = colors.length ? colors.shift() 
: 'color60';
+               }
+               var color = colorMap[booking.name];
+               YAHOO.util.Dom.addClass(elCell, color);
+               if (booking.shortname)
+                       elCell.innerHTML = 
YAHOO.booking.link(booking.shortname, null, 9);
+               else
+                       elCell.innerHTML = YAHOO.booking.link(booking.name, 
null, 9);
+       }
+       else {
+               elCell.innerHTML = '...';
+       }
+};
+
+
+YAHOO.booking.scheduleRowFormatter = function(elTr, oRecord) { 
+       if (!oRecord.getData('resource')) {
+               YAHOO.util.Dom.addClass(elTr, 'free'); 
+       } 
+       if (oRecord.getData('time')) { 
+               YAHOO.util.Dom.addClass(elTr, 'time'); 
+       }
+       return true; 
+};
+
+YAHOO.booking.renderSchedule = function(container, url, date, colFormatter, 
includeResource) {
+       // Make sure date is a Monday
+       while(date.getDay() != 1)
+               date.setDate(date.getDate()-1);
+       var container = YAHOO.util.Dom.get(container);
+       container.innerHTML = '';
+       url += '&date=' + date.getFullYear() + '-' + (date.getMonth()+1) + '-' 
+ date.getDate();
+
+       var lang = {
+               WEEKDAYS_FULL: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 
'Thursday', 'Friday', 'Saturday'],
+               MONTHS_LONG: ['January', 'February', 'March', 'April', 'May', 
'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+               LBL_TIME: 'Time',
+               LBL_RESOURCE: 'Resource',
+               LBL_WEEK: 'Week'
+       };
+       YAHOO.booking.lang('Calendar', lang);
+       YAHOO.booking.lang('common', lang);
+       YAHOO.booking.oButton.set('label', lang['LBL_WEEK'] + ' ' + 
YAHOO.booking.weeknumber(date));
+
+       var colDefs = [{key: 'time', label: date.getFullYear() +'<br/>' + 
lang['LBL_TIME']}];
+       if(includeResource) 
+               colDefs.push({key: 'resource', label: lang['LBL_RESOURCE'], 
formatter: YAHOO.booking.scheduleResourceColFormatter});
+       YAHOO.booking.dates = {};
+    var keys = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+       for(var i=0; i < 7; i++) {
+               var d = new Date(date.getFullYear(), date.getMonth(), 
date.getDate());
+               d.setDate(d.getDate() + i);
+               var x = i < 6 ? i+1: 0;
+               YAHOO.booking.dates[keys[x]] = d;
+               colDefs.push({key: keys[x], label: lang['WEEKDAYS_FULL'][x] + 
'<br/>' + lang['MONTHS_LONG'][d.getMonth()] + ' ' + d.getDate(), formatter: 
colFormatter, 'date': d});
+       }
+       YAHOO.booking.inlineTableHelper('schedule_container', url, colDefs, {
+               formatRow: YAHOO.booking.scheduleRowFormatter
+       }, true);
+}
+
+YAHOO.booking.prevWeek = function() {
+       YAHOO.booking.date.setDate(YAHOO.booking.date.getDate() - 7);
+       var state = YAHOO.booking.date.getFullYear() + '-' + 
(YAHOO.booking.date.getMonth()+1) + '-' + YAHOO.booking.date.getDate();
+       YAHOO.util.History.navigate('date', state);
+}
+
+YAHOO.booking.nextWeek = function() {
+       YAHOO.booking.date.setDate(YAHOO.booking.date.getDate() + 7);
+       var state = YAHOO.booking.date.getFullYear() + '-' + 
(YAHOO.booking.date.getMonth()+1) + '-' + YAHOO.booking.date.getDate();
+       YAHOO.util.History.navigate('date', state);
+}
+
+YAHOO.booking.newApplicationForm = function(date, _from, _to, elCell) {
+       if(elCell) 
+       {       
+               resource = 
elCell.parentNode.parentNode.getAttribute('resource');
+       }
+       else
+       {
+               resource = null;
+       }
+       date = date ? date : YAHOO.booking.date;
+       _from = _from ? '%20' + _from: '';
+       _to = _to ? '%20' + _to: '';
+       var url = YAHOO.booking.newApplicationUrl;
+       var state = date.getFullYear() + '-' + (date.getMonth()+1) + '-' + 
date.getDate();
+    var day = date.getDay();
+    var weekday=new Array(7);
+    weekday[0]="sunday";
+    weekday[1]="monday";
+    weekday[2]="tuesday";
+    weekday[3]="wednesday";
+    weekday[4]="thursday";
+    weekday[5]="friday";
+    weekday[6]="saturday";
+       url += '&from_[]=' + state + _from + '&to_[]=' + state + _to + 
'&resource=' + resource + '&weekday=' + weekday[day];
+    if (YAHOO.booking.endOfSeason === undefined || YAHOO.booking.endOfSeason > 
date) {
+       window.location.href = url;
+    }
+    
+}
+
+YAHOO.booking.setupWeekPicker = function(container) {
+       var Dom = YAHOO.util.Dom;
+       var oCalendarMenu = new YAHOO.widget.Overlay(Dom.generateId(), { 
visible: false});
+       var oButton = new YAHOO.widget.Button({type: "menu", id: 
Dom.generateId(), menu: oCalendarMenu, container: container});
+       YAHOO.booking.oButton = oButton;
+       oButton.on("appendTo", function () {
+               oCalendarMenu.setBody(" ");
+               oCalendarMenu.body.id = Dom.generateId();
+       });
+       oButton.on("click", function () {
+               var oCalendar = new YAHOO.widget.Calendar(Dom.generateId(), 
oCalendarMenu.body.id, {START_WEEKDAY: 1});
+               oCalendar.cfg.setProperty("pagedate", 
(YAHOO.booking.date.getMonth()+1) + "/" + YAHOO.booking.date.getFullYear());
+               oCalendar.render();
+               oCalendar.selectEvent.subscribe(function (p_sType, p_aArgs) {
+                       if (p_aArgs) {
+                               var aDate = p_aArgs[0][0];
+                               YAHOO.util.History.navigate('date', aDate[0] + 
'-' + aDate[1] + '-' + aDate[2]);
+                       }
+                       oCalendarMenu.hide();
+               }, this, true);
+       });
+}
+
+YAHOO.booking.closeOverlay = function() {
+       var o = YAHOO.util.Dom.get('overlay-info');
+       o.parentNode.removeChild(o);
+}
+*/

Modified: 
branches/dev-syncromind/bookingfrontend/templates/base/application_edit.xsl
===================================================================
--- branches/dev-syncromind/bookingfrontend/templates/base/application_edit.xsl 
2015-11-06 21:44:29 UTC (rev 14291)
+++ branches/dev-syncromind/bookingfrontend/templates/base/application_edit.xsl 
2015-11-06 21:46:59 UTC (rev 14292)
@@ -80,25 +80,74 @@
                     </dd>
                 </dl>
             </div>
+            
+            <!--div class="date-container">
+                <a href="#" class="close-btn">-</a>
+                <dt><label for="field_{position()}_from"><xsl:value-of 
select="php:function('lang', 'From')" /></label></dt>
+                <dd class="datetime-picker">
+                    <input id="field_{position()}_from" name="from_[]" 
type="text">
+                        <xsl:attribute name="value"><xsl:value-of 
select="from_"/></xsl:attribute>
+                    </input>
+                </dd>
+                <dt><label for="field_{position()}_to"><xsl:value-of 
select="php:function('lang', 'To')" /></label></dt>
+                <dd class="datetime-picker">
+                    <input id="field_{position()}_to" name="to_[]" type="text">
+                        <xsl:attribute name="value"><xsl:value-of 
select="to_"/></xsl:attribute>
+                    </input>
+                </dd>
+            </div-->
+            
             <div class="pure-u-1 pure-u-md-1-2 pure-u-lg-1-3">
                 <dl class="form-col">
                     <div class="heading">3. <xsl:value-of 
select="php:function('lang', 'When?')" /></div>
                     <div id="dates-container">
-                        <xsl:for-each select="application/dates"><div 
class="date-container">
-                            <a href="#" class="close-btn">-</a>
-                            <dt><label 
for="field_{position()}_from"><xsl:value-of select="php:function('lang', 
'From')" /></label></dt>
-                            <dd class="datetime-picker">
-                                <input id="field_{position()}_from" 
name="from_[]" type="text">
-                                    <xsl:attribute name="value"><xsl:value-of 
select="from_"/></xsl:attribute>
-                                </input>
-                            </dd>
-                            <dt><label 
for="field_{position()}_to"><xsl:value-of select="php:function('lang', 'To')" 
/></label></dt>
-                            <dd class="datetime-picker">
-                                <input id="field_{position()}_to" name="to_[]" 
type="text">
-                                    <xsl:attribute name="value"><xsl:value-of 
select="to_"/></xsl:attribute>
-                                </input>
-                            </dd>
-                        </div></xsl:for-each>
+                        <xsl:for-each select="application/dates">
+                            <xsl:variable name="index" select="position()-2"/>
+                            <xsl:choose>
+                                <xsl:when test="position() > 1">
+                                    <div class="date-container">
+                                        <a href="javascript:void(0);" 
class="close-btn btnclose">-</a>
+                                        <dt><label 
for="start_date_{$index}"><xsl:value-of select="php:function('lang', 'From)" 
/></label></dt>
+                                        <dd>
+                                            <input class="newaddedpicker 
datetime" id="start_date_{$index}" type="text" name="from[]">
+                                                <xsl:attribute name="value">
+                                                    <xsl:value-of 
select="from_" />
+                                                </xsl:attribute>
+                                            </input>
+                                        </dd>
+                                        <dt><label 
for="end_date_{$index}"><xsl:value-of select="php:function('lang', 'To')" 
/></label></dt>
+                                        <dd>
+                                            <input class="datepicker datetime" 
id="end_date_{$index}" type="text" name="to_[]">
+                                                <xsl:attribute name="value">
+                                                    <xsl:value-of select="to_" 
/>
+                                                </xsl:attribute>
+                                            </input>
+                                        </dd>
+                                    </div>
+                                </xsl:when>
+                                <xsl:otherwise>
+                                    <div class="date-container">
+                                        <a href="javascript:void(0);" 
class="close-btn btnclose">-</a>
+                                        <dt><label 
for="start_date"><xsl:value-of select="php:function('lang', 'From')" 
/></label></dt>
+                                        <dd>
+                                            <input class="datetime" 
id="start_date" type="text" name="from_[]">
+                                                <xsl:attribute name="value">
+                                                    <xsl:value-of 
select="from_" />
+                                                </xsl:attribute>
+                                            </input>
+                                        </dd>
+                                        <dt><label 
for="end_date"><xsl:value-of select="php:function('lang', To)" /></label></dt>
+                                        <dd>
+                                            <input class="datetime" 
id="end_date" type="text" name="to_[]">
+                                                <xsl:attribute name="value">
+                                                    <xsl:value-of select="to_" 
/>
+                                                </xsl:attribute>
+                                            </input>
+                                        </dd>
+                                    </div>
+                                </xsl:otherwise>
+                            </xsl:choose>
+                        </xsl:for-each>
                     </div>
                     <dt><a href="#" id="add-date-link"><xsl:value-of 
select="php:function('lang', 'Add another date')" /></a></dt>
                 </dl>
@@ -184,7 +233,7 @@
             </div>
             <div class="pure-u-1 pure-u-md-1-2 pure-u-1-3">
                 <dl class="form-col">
-                    <div class="heading"><br /><xsl:value-of 
select="php:function('lang', 'Terms and conditions')" /></div>
+                    <div class="heading"><xsl:value-of 
select="php:function('lang', 'Terms and conditions')" /></div>
                     <br/>
                     <div id='regulation_documents'/>
                 </dl>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]