phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] rostering inc/class.borostering.inc.php inc/cla...


From: Dave Hall
Subject: [Phpgroupware-cvs] rostering inc/class.borostering.inc.php inc/cla...
Date: Wed, 14 Feb 2007 14:29:51 +0000

CVSROOT:        /cvsroot/phpgroupware
Module name:    rostering
Changes by:     Dave Hall <skwashd>     07/02/14 14:29:51

Modified files:
        inc            : class.borostering.inc.php 
                         class.sorostering.inc.php 
        js/base        : site_view.js 

Log message:
        more work

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rostering/inc/class.borostering.inc.php?cvsroot=phpgroupware&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/rostering/inc/class.sorostering.inc.php?cvsroot=phpgroupware&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/rostering/js/base/site_view.js?cvsroot=phpgroupware&r1=1.3&r2=1.4

Patches:
Index: inc/class.borostering.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/rostering/inc/class.borostering.inc.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- inc/class.borostering.inc.php       13 Feb 2007 13:50:17 -0000      1.2
+++ inc/class.borostering.inc.php       14 Feb 2007 14:29:51 -0000      1.3
@@ -28,6 +28,7 @@
                var $public_functions = array
                (
                        'add_shift'                     => true,
+                       'edit_shift'            => true,
                        'get_staff_list'        => true
                );
 
@@ -51,15 +52,15 @@
 
                        $entry = array
                        (
-                               'end_hr'        => $_POST['end_hr'],
-                               'end_min'       => $_POST['end_min'],
+                               'end_hr'        => $_POST['a_end_hr'],
+                               'end_min'       => $_POST['a_end_min'],
                                'roster_d'      => $_POST['a_roster_d'],
                                'roster_m'      => $_POST['a_roster_m'],
                                'roster_y'      => $_POST['a_roster_y'],
                                'site_id'       => $_POST['a_site_id'],
                                'staff_id'      => $_POST['a_staff_id'],
-                               'start_hr'      => $_POST['start_hr'],
-                               'start_min'     => $_POST['start_min']
+                               'start_hr'      => $_POST['a_start_hr'],
+                               'start_min'     => $_POST['a_start_min']
                        );
                        
                        if ( !$this->has_rights($entry['site_id'], 
PHPGW_ACL_ADD) )
@@ -87,6 +88,52 @@
                }
 
                /**
+               * Edit an existing shift to the roster
+               *
+               * @return array status information to be provided back to app 
via json
+               */
+               function edit_shift()
+               {
+                       $invalid = array();
+
+                       $entry = array
+                       (
+                               'end_hr'        => $_POST['end_hr'],
+                               'end_min'       => $_POST['end_min'],
+                               'roster_d'      => $_POST['roster_d'],
+                               'roster_m'      => $_POST['roster_m'],
+                               'roster_y'      => $_POST['roster_y'],
+                               'site_id'       => $_POST['site_id'],
+                               'staff_id'      => $_POST['staff_id'],
+                               'start_hr'      => $_POST['start_hr'],
+                               'start_min'     => $_POST['start_min']
+                       );
+                       
+                       if ( !$this->has_rights($entry['site_id'], 
PHPGW_ACL_EDIT) )
+                       {
+                               Header('HTTP/1.0 403 Forbidden');
+                               return array('error' => lang('access denied') );
+                       }
+
+                       if ( $entry['shift_s'] = @mktime($entry['start_hr'], 
$entry['start_min'], 0, $entry['roster_m'], $entry['roster_d'], 
$entry['roster_y']) <= 0 )
+                       {
+                               $invalid['start_date'] = 'Start time is 
invalid';
+                       }
+
+                       if ( $entry['shift_e'] = @mktime($entry['end_hr'], 
$entry['end_min'], 0, $entry['roster_m'], $entry['roster_d'], 
$entry['roster_y']) <= 0 )
+                       {
+                               $invalid['end_date'] = 'End time is invalid';
+                       }
+
+                       if ( count($invalid) || !($entry = 
$this->so->edit_shift($entry) ) )
+                       {
+                               Header('HTTP/1.0 500 Internal Server Error');
+                               return $invalid;
+                       }
+                       return $entry;
+               }
+               
+               /**
                * Get a list of sites available to the user
                *
                * @param bool $edit_mode list sites a user can edit

Index: inc/class.sorostering.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/rostering/inc/class.sorostering.inc.php,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- inc/class.sorostering.inc.php       13 Feb 2007 13:50:17 -0000      1.2
+++ inc/class.sorostering.inc.php       14 Feb 2007 14:29:51 -0000      1.3
@@ -69,17 +69,17 @@
                */
                function edit_shift($id, $staff_id, $start, $end, $comment)
                {
-                       $id = (int) $id;
-                       $staff_id = (int) $staff_id;
-                       $start = (int) $start;
-                       $end = (int) $end;
-                       $comment = $this->db->db_addslashes($comment);
-                       $ts = time();
+                       $id = (int) $entry['id'];
+                       $staff_id = (int) $entry['staff_id'];
+                       $start = mktime($entry['roster_m'], $entry['roster_d'], 
$entry['roster_y'], $entry['start_hr'], $entry['start_min']);
+                       $end = mktime($entry['roster_m'], $entry['roster_d'], 
$entry['roster_y'], $entry['end_hr'], $entry['end_min']);
+                       $now = time();
+                       $comment = ''; //$this->db->db_addslashes($comment);
                        $user = (int) 
$GLOBALS['phpgw_info']['user']['account_id'];
                        
-                       $this->db->query("UPDATE phpgw_roster_shifts SET 
staff_id = $staff_id, shift_s = $start, shift_e = $end, comment = $comment, 
lastmod = $ts, lastmod_id = $user WHERE shift_id = $id", __LINE__, __FILE__);
+                       $this->db->query("UPDATE phpgw_roster_shifts SET 
staff_id = $staff_id, shift_s = $start, shift_e = $end, comment = $comment, 
lastmod = $now, lastmod_id = $user WHERE shift_id = $id", __LINE__, __FILE__);
 
-                       return true;
+                       return $id;
                }
 
                

Index: js/base/site_view.js
===================================================================
RCS file: /cvsroot/phpgroupware/rostering/js/base/site_view.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- js/base/site_view.js        13 Feb 2007 13:50:17 -0000      1.3
+++ js/base/site_view.js        14 Feb 2007 14:29:51 -0000      1.4
@@ -1,36 +1,81 @@
 // Roster dialog JS
 YAHOO.namespace('example.container');
 
-var dlg;
+var dlgAdd;
+var dlgEdit;
 
-function submitCallback(obj)
+function submitAddCallback(obj)
 {
        var response = eval(obj.responseText);
        if ( isNaN(response) )
        {
                alert('Invalid shift, try again');
-               dlg.render();
+               dlgAdd.render();
                return false;
        }
        var oFormElms = {
+                                               id:                     
response,
                                                roster_d:       
document.getElementById('a_roster_d').value,
                                                roster_m:       
document.getElementById('a_roster_m').value,
                                                roster_y:       
document.getElementById('a_roster_y').value,
+                                               start_h:        
document.getElementById('a_start_hr').value,
+                                               start_m:        
document.getElementById('a_start_min').value,
+                                               end_h:          
document.getElementById('a_end_hr').value,
+                                               end_m:          
document.getElementById('a_end_min').value,
+                                               staff_id:       
document.getElementById('a_staff_id').options[document.getElementById('a_staff_id').selectedIndex].value,
+                                               staff_name:     
document.getElementById('a_staff_id').options[document.getElementById('a_staff_id').selectedIndex].text
+                                       };
+
+       var dStart = new Date(oFormElms.roster_y, oFormElms.roster_m, 
oFormElms.roster_m, oFormElms.start_h, oFormElms.start_m, 0);
+       var dEnd = new Date(oFormElms.roster_y, oFormElms.roster_m, 
oFormElms.roster_m, oFormElms.end_h, oFormElms.end_m, 0);
+
+       addEntry(oFormElms, dStart, dEnd);
+}
+
+function submitEditCallback(obj)
+{
+       var response = eval(obj.responseText);
+       if ( isNaN(response) )
+       {
+               alert('Invalid shift, try again');
+               dlgEdit.render();
+               return false;
+       }
+       var oFormElms = {
+                                               id:                     
response,
+                                               roster_d:       
document.getElementById('roster_d').value,
+                                               roster_m:       
document.getElementById('roster_m').value,
+                                               roster_y:       
document.getElementById('roster_y').value,
                                                start_h:        
document.getElementById('start_hr').value,
                                                start_m:        
document.getElementById('start_min').value,
                                                end_h:          
document.getElementById('end_hr').value,
                                                end_m:          
document.getElementById('end_min').value,
-                                               staff_id:       
document.getElementById('a_staff_id').options[document.getElementById('a_staff_id').selectedIndex].value,
-                                               staff_name:     
document.getElementById('a_staff_id').options[document.getElementById('a_staff_id').selectedIndex].text
+                                               staff_id:       
document.getElementById('staff_id').options[document.getElementById('staff_id').selectedIndex].value,
+                                               staff_name:     
document.getElementById('staff_id').options[document.getElementById('staff_id').selectedIndex].text
                                        };
 
        var dStart = new Date(oFormElms.roster_y, oFormElms.roster_m, 
oFormElms.roster_m, oFormElms.start_h, oFormElms.start_m, 0);
        var dEnd = new Date(oFormElms.roster_y, oFormElms.roster_m, 
oFormElms.roster_m, oFormElms.end_h, oFormElms.end_m, 0);
 
+       addEntry(oFormElms, dStart, dEnd);
+}
+
+function addEntry(oFormElms, dStart, dEnd)
+{
        var oTBody = document.getElementById('roster_contents')
 
+       if ( elm = document.getElementById('shift_' + oFormElms.id) )//it is 
easier to delete and readd then try changing the row
+       {
+               oTBody.removeChild(elm);
+               var i = oTBody.childNodes.length;
+               for ( j = 0; j < i; ++j)
+               {
+                       oTBody.childNodes[j].className = 'row_' + (j % 2 ? 'on' 
: 'off');
+               }
+       }
+
        var oTR = document.createElement('tr');
-       oTR.id = 'shift_' + response;
+       oTR.id = 'shift_' + oFormElms.id;
        oTR.ondbclick = 'editEntry(this.id)';
        oTR.className = oTBody.childNodes.length % 2 ? 'row_on' : 'row_off';
 
@@ -39,7 +84,7 @@
        oTD.appendChild(document.createTextNode(oFormElms.staff_name));
        
        var oHidden = document.createElement('input');
-       oHidden.id = 'shift_start_' + response;
+       oHidden.id = 'shift_start_' + oFormElms.id;
        oHidden.name = oHidden.id;
        oHidden.type = 'hidden';
        oHidden.className = 'hidden';
@@ -47,7 +92,7 @@
        oTD.appendChild(oHidden);
 
        var oHidden = document.createElement('input');
-       oHidden.id = 'shift_end_' + response;
+       oHidden.id = 'shift_end_' + oFormElms.id;
        oHidden.name = oHidden.id;
        oHidden.type = 'hidden';
        oHidden.className = 'hidden';
@@ -81,7 +126,12 @@
        oTR.appendChild(oTD);
 }
 
-function submitFailure(obj)
+function submitAddFailure(obj)
+{
+       alert('FAILED: \n' + obj.responseText);
+}
+
+function submitEditFailure(obj)
 {
        alert('FAILED: \n' + obj.responseText);
 }
@@ -98,20 +148,37 @@
                this.submit();
        }
 
-       dlg = new 
YAHOO.widget.Dialog(document.getElementById('add_shift_dialog'), { modal:true, 
visible:false, width:"350px", fixedcenter:true, constraintoviewport:true, 
draggable:true });
+       //ADD
+       dlgAdd = new 
YAHOO.widget.Dialog(document.getElementById('add_shift_dialog'), { modal:true, 
visible:false, width:"350px", fixedcenter:true, constraintoviewport:true, 
draggable:true });
+       
+       var listeners = new YAHOO.util.KeyListener(document, { keys : 27 }, 
{fn:handleCancel,scope:YAHOO.example.container.dlgAdd,correctScope:true} );
+       
+       dlgAdd.cfg.queueProperty('postmethod','from');
+
+       dlgAdd.cfg.queueProperty("keylisteners", listeners);
+       
+       dlgAdd.cfg.queueProperty("buttons", [ { text : 'Cancel', handler : 
handleCancel },
+                                                                               
{ text: 'Add', handler : handleSubmit, isDefault : true } ]);
+       
+       dlgAdd.callback.success = submitAddCallback;
+       dlgAdd.callback.failure = submitAddFailure;
+       dlgAdd.render();
+
+       //EDIT
+       dlgEdit = new 
YAHOO.widget.Dialog(document.getElementById('add_shift_dialog'), { modal:true, 
visible:false, width:"350px", fixedcenter:true, constraintoviewport:true, 
draggable:true });
        
-       var listeners = new YAHOO.util.KeyListener(document, { keys : 27 }, 
{fn:handleCancel,scope:YAHOO.example.container.dlg,correctScope:true} );
+       var listeners = new YAHOO.util.KeyListener(document, { keys : 27 }, 
{fn:handleCancel,scope:YAHOO.example.container.dlgEdit,correctScope:true} );
        
-       dlg.cfg.queueProperty('postmethod','from');
+       dlgEdit.cfg.queueProperty('postmethod','from');
 
-       dlg.cfg.queueProperty("keylisteners", listeners);
+       dlgEdit.cfg.queueProperty("keylisteners", listeners);
        
-       dlg.cfg.queueProperty("buttons", [ { text : 'Cancel', handler : 
handleCancel },
+       dlgEdit.cfg.queueProperty("buttons", [ { text : 'Cancel', handler : 
handleCancel },
                                                                                
{ text: 'Add', handler : handleSubmit, isDefault : true } ]);
        
-       dlg.callback.success = submitCallback;
-       dlg.callback.failure = submitFailure;
-       dlg.render();
+       dlgEdit.callback.success = submitEditCallback;
+       dlgEdit.callback.failure = submitEditFailure;
+       dlgEdit.render();
 }
 
 YAHOO.util.Event.addListener(window, "load", init);
@@ -130,8 +197,6 @@
        var iEnd = (parseInt(document.getElementById('shift_end_' + 
iShift).value) * 1000) + iOffset; // + (d.getTimezoneOffset() * 1000);
        d = null;
        
-       //alert('Staff == ' + iShift + "\nStart: " + iStart + "\nEnd: " + iEnd);
-
        var dStart = new Date(iStart);
        document.getElementById('start_hr').value = dStart.getHours();
        if ( dStart.getMinutes() == 30 )
@@ -162,7 +227,5 @@
                document.getElementById('end_min').options.selectedIndex = 0;
        }
 
-       dlg.mode = 'edit';
-       
-       dlg.show();
+       dlgEdit.show();
 }




reply via email to

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