diff --recursive -c worklog/.svn/entries worklog.new/.svn/entries *** worklog/.svn/entries 2009-04-16 22:21:29.000000000 +0200 --- worklog.new/.svn/entries 2009-04-16 22:20:41.000000000 +0200 *************** *** 1,7 **** 10 dir ! 5529 http://trac-hacks.org/svn/worklogplugin/0.11/worklog http://trac-hacks.org/svn --- 1,7 ---- 10 dir ! 5516 http://trac-hacks.org/svn/worklogplugin/0.11/worklog http://trac-hacks.org/svn *************** *** 32,38 **** ! 2009-04-16T20:21:18.000000Z 111186e5a9acf364309575aa4a3a7887 2008-12-16T22:36:36.187817Z 5022 --- 32,38 ---- ! 2009-03-03T16:42:54.000000Z 111186e5a9acf364309575aa4a3a7887 2008-12-16T22:36:36.187817Z 5022 *************** *** 100,106 **** ! 2009-04-16T20:21:23.000000Z f3c10b00a3aaf813e5f31146c3b08e35 2008-01-17T12:04:42.628933Z 3075 --- 100,106 ---- ! 2009-03-03T16:42:54.000000Z f3c10b00a3aaf813e5f31146c3b08e35 2008-01-17T12:04:42.628933Z 3075 *************** *** 134,140 **** ! 2009-04-16T20:21:29.000000Z 97f8831cc266f0529972b1b11d72595b 2008-12-16T22:36:36.187817Z 5022 --- 134,140 ---- ! 2009-03-03T16:42:54.000000Z 97f8831cc266f0529972b1b11d72595b 2008-12-16T22:36:36.187817Z 5022 diff --recursive -c worklog/htdocs/.svn/entries worklog.new/htdocs/.svn/entries *** worklog/htdocs/.svn/entries 2009-04-16 22:21:37.000000000 +0200 --- worklog.new/htdocs/.svn/entries 2009-04-16 22:20:41.000000000 +0200 *************** *** 1,7 **** 10 dir ! 5529 http://trac-hacks.org/svn/worklogplugin/0.11/worklog/htdocs http://trac-hacks.org/svn --- 1,7 ---- 10 dir ! 5516 http://trac-hacks.org/svn/worklogplugin/0.11/worklog/htdocs http://trac-hacks.org/svn *************** *** 270,276 **** ! 2009-04-16T20:21:37.000000Z b588745ca8720f1be42bcc53442a9009 2008-04-08T20:56:51.096361Z 3490 --- 270,276 ---- ! 2009-03-03T16:42:54.000000Z b588745ca8720f1be42bcc53442a9009 2008-04-08T20:56:51.096361Z 3490 diff --recursive -c worklog/htdocs/tracWorklog.js worklog.new/htdocs/tracWorklog.js *** worklog/htdocs/tracWorklog.js 2009-04-16 22:21:37.000000000 +0200 --- worklog.new/htdocs/tracWorklog.js 2009-04-16 22:20:41.000000000 +0200 *************** *** 7,12 **** --- 7,13 ---- var tracWorklog = { start: function() { return true; }, + stop: function() { var mynow = new Date(); var change_handler = function() *************** *** 21,28 **** $('#worklogStoptime')[0].value = (chosen.getTime() / 1000); }; ! $('#worklogStopDate').datepicker({onSelect: change_handler, ! maxDate: new Date()}); $('#worklogPopup').jqm({modal: true}).jqmShow(); try --- 22,28 ---- $('#worklogStoptime')[0].value = (chosen.getTime() / 1000); }; ! $('#worklogStopDate').datepicker({onSelect: change_handler, maxDate: new Date()}); $('#worklogPopup').jqm({modal: true}).jqmShow(); try *************** *** 36,40 **** --- 36,82 ---- alert(er); } return false; + }, + + addh: function() { + var mynow = new Date(); + var change_handler = function() + { + var chosen_date = $('#worklogAddhDatepicker').datepicker('getDate'); + var chosen_time_from = $('#worklogAddhTimeFrom').timeEntry('getTime'); + var chosen_time_to = $('#worklogAddhTimeTo').timeEntry('getTime'); + + var chosen_from = new Date(); + var chosen_to = new Date(); + chosen_from.setTime(chosen_date.getTime() + (((chosen_time_from.getHours() * 60) + chosen_time_from.getMinutes()) * 60) * 1000); + chosen_to.setTime(chosen_date.getTime() + (((chosen_time_to.getHours() * 60) + chosen_time_to.getMinutes()) * 60) * 1000); + + $('#worklogAddhSubmit')[0].disabled = ((chosen_from > (new Date())) || (chosen_from > chosen_to)); + $('#worklogAddhUnixstampFrom')[0].value = (chosen_from.getTime() / 1000); + $('#worklogAddhUnixstampTo')[0].value = (chosen_to.getTime() / 1000); + }; + + $('#worklogAddhDatepicker').datepicker({onSelect: change_handler}); + $('#worklogAddhPopup').jqm({modal: true}).jqmShow(); + + try + { + $('#worklogAddhTimeFrom').timeEntry({show24Hours: true, spinnerImage: ''}); + $('#worklogAddhTimeFrom').timeEntry('setTime', mynow); + $('#worklogAddhTimeFrom').bind('change', change_handler); + + mynow.setTime(mynow.getTime() + (3600 * 1000)); + $('#worklogAddhTimeTo').timeEntry({show24Hours: true, spinnerImage: ''}); + $('#worklogAddhTimeTo').timeEntry('setTime', mynow); + $('#worklogAddhTimeTo').bind('change', change_handler); + + // to set hidden fields with unix timestamp to set by submit + change_handler(); + } + catch (er) + { + alert(er); + } + return false; } }; diff --recursive -c worklog/manager.py worklog.new/manager.py *** worklog/manager.py 2009-04-16 22:21:23.000000000 +0200 --- worklog.new/manager.py 2009-04-16 22:20:41.000000000 +0200 *************** *** 333,336 **** 'status': status, 'comment': comment}) return rv ! \ Chybí znak konce řádku na konci souboru --- 333,399 ---- 'status': status, 'comment': comment}) return rv ! ! def add_hours(self, ticket, starttime, stoptime, comment): ! """Store new work log entry for given ticket. ! In contrast to 'start_work' this method does NOT manilupulate ! with status or owner or some other ticket. ! """ ! ! # There is only 2 conditions to be able to add hours to ticket: ! # 1) user is logged in ! # 2) no other user's worklog entry interlapped with this one ! ! # see 1 ! if self.authname == 'anonymous': ! self.explanation = 'You need to be logged in to work on tickets.' ! return False ! ! if None == starttime or None == stoptime: ! self.explanation = 'Start or stop time is empty.' ! return False ! ! if not comment or '' == comment: ! self.explanation = 'Comment is empty.' ! return False ! ! if stoptime <= starttime: ! self.explanation = 'You cannot set your stop time to that value as it is before the start time.' ! return False ! ! # see 2 ! db = self.env.get_db_cnx() ! cursor = db.cursor() ! cursor.execute('SELECT count(*) FROM work_log WHERE ticket=%s AND worker=%s ' ! 'AND NOT ((starttime>%s AND starttime>%s) OR (endtime<%s AND endtime<%s))', ! (ticket, self.authname, starttime, stoptime, starttime, stoptime)) ! cnt = cursor.fetchone() ! if cnt and cnt[0] > 0: ! self.explanation = 'Interlapped work log entry.' ! return False ! ! cursor.execute('INSERT INTO work_log (worker, ticket, starttime, endtime, comment) ' ! 'VALUES (%s, %s, %s, %s, %s)', ! (self.authname, ticket, starttime, stoptime, comment)) ! db.commit() ! ! message = '' ! # Leave a comment if the user has configured this or if they have entered ! # a work log comment. ! if self.config.getbool('worklog', 'comment') or comment: ! started = datetime.fromtimestamp(starttime) ! finished = datetime.fromtimestamp(stoptime) ! message = '%s worked on this ticket for %s between %s %s and %s %s.' % \ ! (self.authname, pretty_timedelta(started, finished), \ ! format_date(starttime), format_time(starttime), \ ! format_date(stoptime), format_time(stoptime)) ! if comment: ! message += "\n[[BR]]\n" + comment ! ! if message: ! db = self.env.get_db_cnx() ! tckt = Ticket(self.env, ticket, db) ! self.save_ticket(tckt, db, message) ! ! return True ! diff --recursive -c worklog/templates/.svn/entries worklog.new/templates/.svn/entries *** worklog/templates/.svn/entries 2009-04-16 22:20:52.000000000 +0200 --- worklog.new/templates/.svn/entries 2009-04-16 22:20:41.000000000 +0200 *************** *** 1,7 **** 10 dir ! 5529 http://trac-hacks.org/svn/worklogplugin/0.11/worklog/templates http://trac-hacks.org/svn --- 1,7 ---- 10 dir ! 5516 http://trac-hacks.org/svn/worklogplugin/0.11/worklog/templates http://trac-hacks.org/svn diff --recursive -c worklog/ticket_filter.py worklog.new/ticket_filter.py *** worklog/ticket_filter.py 2009-04-16 22:21:18.000000000 +0200 --- worklog.new/ticket_filter.py 2009-04-16 22:20:41.000000000 +0200 *************** *** 46,58 **** --- 46,62 ---- else: action = 'start' label = 'Start Work' + addHoursAction = 'addh' + addHoursLabel = 'Add Hours' return '''
+