Revision history for App-Dochazka-WWW

0.101  2014-09-11
- deleted pre-App::MFILE::WWW code

0.102  2014-09-11 16:23 CEST
- project restart from clean slate

0.103  2014-09-19 20:27 CEST
- get it working with demo JS code

0.104  2014-09-22 09:58 CEST
- dmenu-init.js, dform-init.js: start bringing back in the Dochazka-specific
  targets

0.105  2014-09-22 16:09 CEST
- bring in more 'dochazka-www' JS code, adapting it to new targets setup

0.106  2014-09-22 21:36 CEST
- dform-init.js: get forms working again (without actions for now)

0.107  2014-09-22 21:50 CEST
- dform-init.js: restore 'empProfileEdit' target; fix punctuation errors
  that were ignored by Firefox

0.108  2014-09-22 22:08 CEST
- bring in 000boilerplate.js
- start emp-profile-update.js (to be a dependency of daction-init.js or maybe
  we'll make it a separate file and call it daction-start.js)

0.109  2014-09-23 09:29 CEST
- bring in empProfileUpdate action (adapt from pre-split version)

0.110  2014-09-23 18:10 CEST
- prototypes.js: bring in Dochazka-specific prototype
- emp-profile-update.js: create empProfile object and merge into it the object
  we get from form submit - this endows our object with the "sanitize" method
- status: 'empProfileUpdate' target working now

0.111  2014-09-24 08:03 CEST
- restore basic change password functionality

0.112  2014-09-24 10:21 CEST
- redesign changePassword dialog - it now asks for confirmation, but the
  password is still displayed on-screen (ick!)

0.113  2014-09-24 11:55 CEST
- emp-lib.js: when password change is saved successfully, display "Password
  changed" message instead of "Employee profile updated"

0.114  2014-09-24 16:41 CEST
- js/: migrate lots of employee profile code from previous incarnation
- status: new employee functionality works as long as non-ASCII characters
  are not entered; when non-ASCII characters are entered, the REST server
  inserts the employee properly but 500 Internal Server Error is returned
  because Plack::MiddleWare::Lint detects wide characters in the entity
  body (unknown ATM whether request or response)

0.115  2014-09-25 09:27 CEST
- js/: start work on renewing "employee search" functionality; cleanup

0.116  2014-09-27 10:56 CEST
- js/: bring in "simple employee browser" code

0.117  2014-10-03 12:48 CEST
- js/: 'hookGetObj' has been renamed to just plain 'hook'

0.118  2014-10-11 22:11 CEST
- daction-init.js: get rid of extraneous demo actions, keeping just one;
  get rid of deprecated 'browseEmpMultPrev' and 'browseEmpMultNext'
  actions; bring in 'returnToBrowser' action from App::MFILE::WWW
- daction-start.js: get rid of extraneous demo actions, keeping just one;
  fix name of internal library function implementing the
  'passChangePending' action; activate 'masqEmployee' action; bring in
  'returnToBrowser' action
- dform-init.js: cleanup
- emp-lib.js: get rid of deprecated 'simpleEmployeeBrowser' custom action;
  use the new dbrowser feature to implement searchEmp; bring in
  masqEmployee code from before the split
- target-init.js: bring in new code from App::MFILE::WWW for the dbrowser
  feature
- dbrowser-init.js: new file brought in from App::MFILE::WWW and adapted to
  provide "Employee search" functionality
- lib.js: bring in new application-specific library module from
  App::MFILE::WWW containing the new 'fillUserBox' method
- STATUS: employee search and masquerade working once again; all features
  that were working before the code split have been restored/reimplemented

0.119  2014-10-11 22:44 CEST
- lib.js: add 'fillNoticesLine' method with copyright notice, link for
  opening a bug, etc.

0.120  2014-10-11 23:16 CEST
- daction-start.js: when masquerading, 'logout' becomes a synonym for 'end
  the masquerade'
- emp-lib.js: move masquerade-ending code into a separate function

0.121  2014-10-13 16:47 CEST
- js/: CSS tweaks

0.122  2014-10-14 09:36 CEST
- js/: enable new dnotice feature and use it to implement privhistory listing

0.123  2014-10-14 11:21 CEST
- js/: refine privHistory dnotice

0.124  2014-10-16 15:42 CEST
- js/emp-lib.js: fix "Edit employee profile" functionality (was using PUT
  on 'employee/eid' resource, which is no longer supported by the server)

0.125  2015-07-22 09:59 CEST
- update copyright statement to 2015
- migrate repo to Github
- new release script
- drop t/boilerplate.t

0.126 2016-09-04 20:40 CEST
- packaging tweaks
- Travis CI

0.127 2016-09-12 09:10 CEST
- build/ops: MANIFEST update, Build.PL update
- lib.js: update copyright notice and bug report link
- bin/dochazka-www: show how to pass sitedir to mfile-www
- build/ops: require App::MFILE::WWW 0.140
- Dispatch.pm: new file
- config: introduce DOCHAZKA_WWW_BACKEND_URI param and tweak defaults

0.128 2016-09-12 10:23 CEST
- Dispatch.pm: uncomment some debug messages
- Dispatch.pm: properly set currentUserPriv
- build/ops: require App::MFILE::WWW 0.141

0.129 2016-09-12 10:27 CEST
- build/ops: change OBS project to Application:Dochazka:staging
- build/ops: add Dispatch.pm to MANIFEST

0.130 2016-09-12 11:58 CEST
- add systemd unit file (Theo Chatzimichos)

0.131 2016-09-12 20:43 CEST
- js: fix "Change my password" functionality
- config: add new file WWW_Message_en.conf
- js: fix "New employee" functionality
- js: fix "Search employee" functionality

0.132 2016-09-15 13:41 CEST
- js: percent-encode employee search keys
- bin/dochazka-www: uncomment --sitedir /etc/dochazka-www
- build/ops: new file WWW_SiteConfig.pm.example

0.133 2016-09-16 00:24 CEST
- config: drop derived distro site config file
- MANIFEST: drop share/config/WWW_SiteConfig.pm
- js: replace EID with sec_id in Employee profile
- build/ops: require most recent App::MFILE::WWW
- js: drop password change option from Employee profile menu

0.134 2016-09-19 12:48 CEST
- build/ops: require App::MFILE::WWW 0.143
- js: minor reformatting in dochazka-www/dform-init.js
- Use employee/self/full resource instead of employee/current/priv
- In employee/self/full resource, current_emp prop renamed to "emp"

0.135 2016-09-25 10:01 CEST
- build/ops: require REST 0.546 and MFILE::WWW 0.144

0.136 2016-09-25 12:03 CEST
- dform-init.js: add status, statusSince empProfile entries
- js: drop dispEmployee target
- Make "My profile" display "Status" and "Status since"
- Rename empProfileEdit target to empProfileEditRemark
- emp-lib.js: separate myProfile function
- Make "Edit remark" display updated employee profile

0.137 2016-09-25 21:47 CEST
- Fix hook in empProfileEditRemark
- Rip out password change feature
- Fix "My profile" + Masquerade mode
- Replace "newEmployee" target with "ldapLookup"
- Replace "newEmplSubmit" with "ldapLookupSubmit"
- Rip out "insertEmployee" target
- Implement "LDAP lookup" feature
- Provide masquerade option if LDAP lookup succeeds

0.138 2016-09-27 16:59 CEST
- Move privHistory target to Employee menu
- ldapLookup: always display AJAX error
- Improve AJAX error reporting
- Dispatch.pm: revamp/simplify session management
- Rip out entry definitions for deprecated newEmployee target
- Plumb in an empObject prototype distinct from empProfile
- js: make ldapLookupSubmit GET instead of PUT
- dispatch: tweak debug log messages
- js: lower ACL profile of ldapLookupSubmit and privHistory targets
- Revamp LDAP lookup feature (GET first)
- js: handle empty nick in ldapLookupSubmit
- Add "Sync" option to LDAP lookup result miniMenu
- js: simplify LDAP lookup failure handling
- Reinstate "Priv (status) menu" with privHistory target
- Display workforce ID instead of EID in simpleEmployeeBrowser
- Change "Status"/"Since" to "Privlevel"/"Effective"
- dmenu: add Schedule menu
- js: Tweak text of menu entries
- js: rename "searchEmp" to "actionEmplSearch" in emp-lib.js
- js: move dform and dbrowser entries to lib.js

0.139 2016-09-28 19:12 CEST
- Drop LDAPdochazka entry from simpleEmployeeBrowser
- Clarify difference between LDAP and Dochazka employees
- Put masquerade at end of Employee menu
- Dispatch.pm: reduce log verbosity
- Implement LDAP sync miniMenu entry in simpleEmployeeBrowser

0.140 2016-09-29 00:16 CEST
- build/ops: change OBS_PROJECT to Application:Dochazka
- build/ops: require App::MFILE::WWW 0.147 for dtable feature
- Implement basic (read-only) Privhistory table

0.141 2016-11-01 15:40 CET
- Display effective date more readably
- Dispatch.pm: AJAX call session/terminate on logout
- js: Enable active users to "LDAP sync" themselves

0.142 2016-11-05 22:40 CET
- js: implement "REST server details" dform
- js: make REST server details form return to mainMenu
- build/ops: require App::MFILE::WWW 0.152
- Plumb in drowselect target, privhistory edit menu option
- lib.js: add aclProfileWrite prop to pHeffective and pHpriv
- Implement "Add record" option in privhistory drowselect
- emp-lib.js: call lib.displayError() whenever AJAX fails
- Implement "Delete record" option in Privhistory drowselect

0.143 2017-02-25 09:28 CET
- Dispatch.pm: implement user agent lookup table
- Dispatch.pm: refactor session management
- Fix "incoming AJAX calls on a dead session don't return"
- script: proper arg handling in dochazka-www startup script

0.144 2017-02-27 22:38 CET
- MANIFEST: add new JavaScript files
- Implement feature: "look up schedule by code or ID"
- build/ops: require App::MFILE::WWW 0.154
- Implement "browse all schedules" functionality
- cleanup: remove dead code from dform-init.js
- emp-lib.js: improve AJAX call error-reporting

0.145 2017-02-28 15:23 CET
- build/ops: require App::MFILE::WWW 0.155
- Add "Adminitrivia" menu and move REST server details to it
- "Create new schedule" menu structure and dforms
- Basic "Create a new schedule" functionality
- Improve the "Create a schedule" experience

0.146 2017-03-01 17:13 CET
- build/ops: require App::MFILE::WWW 0.156
- Implement "Schedule history (browse and edit)" feature

0.147 2017-03-02 22:59 CET
- Drop SHID column from schedule history table
- build/ops: designed to work with App::Dochazka::REST >=0.549
- Add scode field to schedhistory dtable and drowselect
- Make schedule menu visible to all
- Implement schedule update dform
- Improve usability of "employee profile edit" feature
- Implement "schedule edit (from schedule display)" feature
- Implement "delete schedule from lookup" feature
- sched-lib.js: refactor schedEditSave and schedDelete
- Implement "schedule edit and delete from browser" feature
- Move "{priv,schedule} history EDIT" to miniMenu

0.148 2017-08-29 15:16 CEST
- schedhistory: make dtable columns visible to inactive+
- Employee Profile: rename priv/status entries
- Employee Profile: show current schedule
- Implement "target stack" feature/redesign
- js: emp-lib: migrate ldapSync from Employee Profile
- js: emp-lib: migrate empProfileEditSave to target stack
- tests: js: first dochazka-www unit test
- tests: js: migrate unit test to QUnit 2.4.0
- build/ops: require App::MFILE::WWW 0.158

0.149 2017-09-24 00:03 CEST
- build/ops: add ext/codepaths file to MANIFEST
- js: tests: add simple test cases for mainMenu targets
- Dispatch.pm: upon login success, expurgate currentUser object
- js: tests: force root user for mainMenu test
- js: tests: refactor and add test for mainEmpl menu
- js: tests: use setTimeout properly
- js: tests/main-menu.js: refactor to do login/logout
- Dispatch.pm: use _prep_ajax_response for logout
- daction-start.js: call loggout instead of logout
- tests/main-menu.js: use current user object correctly
- js: tests: refactor all three existing tests

0.150 2017-09-25 17:36 CEST
- js: emp-lib: migrate ldapLookupSubmit() to target stack
- js: tests: add LDAP lookup test case
- js: tests: put focus on selection field when populating it
- canned-tests.js: use stack methods instead of examining stack itself
- emp-lib.js: use stack to display employee in ldapEmployeeLink
- tests: main-empl.js: return to dmenu from LDAP test before logging out
- tests: main-empl.js: implement LDAP lookup - failure test case
- js: emp-lib: light refactor of ldapEmployeeObject handling
- js: tests: main-empl: change how LDAP lookup success is determined
- js: tests: main-empl: after ncutler LDAP lookup, add him to Dochazka
- js: tests: implement Search Dochazka employees - success test case
- js: emp-lib: refrain from pushing duplicate ldapDisplayEmployee targets
- js: add test case for LDAP sync from simpleEmployeeBrowser
- js: emp-lib: update dbrowser dataset after successful empProfile edit

0.151 2017-09-28 11:43 CEST
- js: emp-lib: rely on stack in LDAPsync AJAX success callback
- js: emp-lib: refactor, split off LDAP functions into ldap-lib.js
- js: cleanup: remove last vestiges of (dform, dbrowser) "hook"
- js: cleanup: refrain from calling ajaxMessage() twice
- Dispatch.pm: migrate is_authorized to App::MFILE::HTTP
- Eliminate dependency on App::MFILE distro
- Dispatch.pm: improve process_post error handling
- js: immediately display schedules upon creation
- js: daction-init: some action targets were still pushable
- js: dform-init: activate rememberState for some dforms
- js: tests: add "bogus schedule lookup" test case

0.152 2017-10-14 13:08 CEST
- js: tests: create "active" and "inactive" employees
- js: add blank lines to empProfile dform
- js: add interval browse and create menus
- js: move form entry definitions into separate entries.js module
- js: use entriesRead in all targets
- js: get readableDate() from datetime.js in core
- js: entries: use date vetter function
- js: implement "Select activity" dialog
- js: implement "Create a single interval" dialog
- js: populate activities cache upon successful login

0.153 2017-10-19 09:36 CEST
- js: sched-lib: implement schedule caching
- js: create interval: start async population feature
- js: tests: pad more time for AJAX calls (slow LDAP server)
- js: poke at "create interval by offset with populate" feature

0.154 2017-10-19 23:36 CEST
- script: dochazka-www: fix option pass-through to mfile-www
- ext: add MFILE_WWW_DISPLAY_SESSION_DATA to config example
- js: int-lib: fix undefined variable in log messages
- js: dform-init: improve data entry hint
- Dispatch: fix login bypass
- Some progress on create interval "last plus offset" and non-interactive async
  dform population features
- js: display supervisor nick in employee profile

0.155 2017-10-20 22:43 CEST
- Dispatch: rename _login_dialog method to validate_user_credentials
- js: daction-init: fix pushable flag in one of the actions
- js: act-lib: use populate pattern for populateActivitiesCache
- js: implement employee profile caching
- js: upon successful masquerade, load full employee profile into cache
- js: move all cache-related code into a new caches.js module
- js: implement populateSchedIntvlsForDate() and populateSIDByDate()

0.156 2017-10-21 12:03 CEST
- build/ops: require App::MFILE::WWW 0.164
- js: fix ACL on schedule lookup/display
- Revert "js: daction-init: fix pushable flag in one of the actions"
- js: caches: implement populateLastExisting
- js: refactor to use populate.bootstrap() and populate.shift()

0.157 2017-10-23 01:52 CEST
- js: finish Create interval "last plus offset" dialog
- build/ops: require App::MFILE::WWW 0.166 for hidden entries feature
- js: implement "Create next scheduled interval" feature
- build/ops: designed to work with App::Dochazka::REST 0.552

0.158 2017-10-27 23:11 CEST
- js: improve "Create next scheduled interval" dialog
- js: tests: disable tests that require LDAP
- WISHLIST: proper skipping of LDAP tests
- js: allow user to modify to-be-created interval
- daction-start: send logout message to core

0.159 2017-10-29 14:40 CET
- js: "Create multiple intervals": add pre-populated year entry
- js: caches: use datetime.currentYear() function from core
- js: int-lib: implement vetDayList()
- build/ops: require App::MFILE::WWW 0.168 for entry "size" attribute
- js: implement createMultipleIntSave()
- Initial implementation of "Create multiple intervals according to schedule"
  feature

0.160 2017-10-30 08:42 CET
- build/ops: require App::MFILE::WWW 0.169 for bug fix
- js: caches: use "interval/scheduled" resource instead of "interval/fillup"
- js: First sketch of "View intervals" functionality

0.161 2017-10-31 12:33 CET
- js: Make "View intervals" dform take single day or day range only
- js: dmenu-init: move Masqeruade to main menu
- js: tests/main-menu: add "Masquerade as a different employee" test case
- js: ldap: stop ldapSync from partially clobbering employee profile
- js: implement "Set supervisor" feature
- build/ops: require App::MFILE:WWW 0.170 for unwindToTarget opts handling

0.162 2017-11-02 20:21 CET
- js: move "Set supervisor" functionality to employee profile
- js: Implement "Multi-day interval viewer" feature
- build/ops: require App::MFILE::WWW 0.171 for dcallback widget

0.163 2017-11-10 15:19 CET
- js: viewer: display periods with no scheduled intervals
- js: int-lib: refactor createSingleIntSave
- js: add "Direct reports" field to Employee profile
- build/ops: designed to work with App::Dochazka::REST 0.557
- js: fix improperly populated nick in "Add schedule history record"
- js: implement create, update, delete of single intervals
- build/ops: require App::MFILE::WWW 0.172 for nullify and vetTimeRangeNoOffset

0.164 2017-11-11 04:16 CET
- js: int-lib: make iNshortDesc really be short by truncating it
- js: do not lose information when updating employee profile
- js: move status and schedule histories to profile
- js: simplify interval menu

0.165 2017-11-14 17:25 CET
- js: int-lib: properly detect null long_desc in interval object
- js: lib: change fillUserBox() behavior
- js: Rearrange menus
- js: initial Locks implementation
- js: viewLocksAction: implement caching of year input
- js: reinstate viewIntervalsDrowselect target
- js: Throw up multi-day interval viewer even for empty query
- js: drop schedHistoryDtable which is no longer used
- js: emp-lib: display "Direct reports" as "(none)" instead of "(undefined)"
- js: let supervisors masquerade as their reports
- js: fix functional tests
- build/ops: require App::MFILE::WWW 0.175 for menu prototype and new fillUserBox() behavior

0.166 2017-11-15 12:11 CET
- js: canned-tests: implement log() - logs messages to both console log and test
  protocol
- js: canned-tests: implement getMenuEntry() - avoids hard-coding of menu entry
  numbers
- js: tests: implement new test "Masquerading as active, set inactive as supervisor"
- js: empProfile: call reports "Supervisees"
- js: Always load employee profile from server

0.167 2017-11-27 13:21 CET
- js: caches: check more carefully if activityCache populated; refactor masqEmployee
- js: allow inactives to view intervals
- js: hide inaccessible functionality from passerbies
- js: implement vetting of privlevels when adding/modifying status records
- js: viewer: use throw for assert-like conditions
- js: int-lib: use multi-date viewer even when no intervals in range