[Top][All Lists]
[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();
}