Under development.
TODOS:
- still nothing
- moved some css/font libraries. Added jasny bootstrap extras
- creating job management GUI
- created "general_application_init.php": it contains session check and other "things" to check in every JoM application script (such as application.php, manage_job.php and other new ones)
- created manage_job.php file: it will be the GUI/view of job data editing
Completed.
TODOS:
- implement a method in bbkk_base_class that checks $pdo variable connection and $tablename variable. Also some general user error messages, like prepare statement, connection missing, ....
- add checks and documentation comments to nonce library
- check UTF-8 encoding on POST sending data method in Ajax call
- check new-job bad answer "save ko" possible error messages on after new job creation
- create time format (I18N) (hh:mm.ss) and insert in job list details
evaluate -> stackable system messages
- fixed javascript warning on job/upd ajax callback
- changed label from "created" to "started"
- now close-modal-window callback is called exactyl only once, because associated the event 'hidden' and not 'hide'; this prevents strange behaviours on details buttons
- fixed duality/errors/lacks between Job_creation_datetime and Jom_start_datetime: now save and load job work correctly
- in new job window, if a date is not selected and save button is pressed, the field is correctly shown as missing
- in new job window, fixed errors checking and visual warnings; fixed also behaviours on error dismiss
- in the datepicker Js object, the trigger 'change' is fired on input date filed when day is selected
- fixed issue #27
- added THAT.default_value public property: now default_status() public method uses this value to automatically set the default deleted element
- fixed issue #26: now job creation date saves correctly
- fixed the HTML in the login page: now the panel is positioned in the center without using Bootstrap's row/span/offset system: browser's page resize do not cause visual issues, like user and password input fields border overlap
- moved some login page style in job_default_style.css file (even if there are too many inline style attributes)
- Refactored category/issue loading system. Before: second level data (such as issue) were loaded after first level (category) seclection via ajax. Now all tables data are loaded; when a category is selected, issues are selected using a filter and not a server call.
- Added Casper unit test code for table_data_structure Javascript object.
- minor fixes
- forked and cloned "HubSpot Messaging Library" at http://github.hubspot.com/messenger/
- now database trashed field for job row id is correctly set
- minor fixes in the job list click handler
- on job delete button press, the icon changes, the tooltip changes text, and the button color changes too
- now also x-editable elements now are correctly disabled/enable on job delete/restore
- Tooltips in job list page are coherent in code and due to a JOM.conf.GUI.tooltip JSON object
- Job deleted and job selected background color now are stored in JOM.conf.GUI.jobs_list
- Added message area in the top bar
- job delete effect made better
- added nice tooltips on job row button
- changed job deleted color and assigned to a variable
- pressing the button delete, job is now graphically shown as deleted
- refactored code and moved from job_list.js to application.js: events on jobs row are now moved from job list creation and consolidated in one single handler
- now favourite star is loaded correctly
- refactored click event code: moved in job_list.js source
- refactored job list creation cycle routine: now cloned jquery objects are clearer
- after saving successfully a new job, the job list is updated
- now Job_is_favourite field is correctly saved
- moved nonce code generation in the Ajax Requests Dispatcher (ard.php) file and removed from the single librery file.
- completed jsJOMlib__GUI_set_alert_message_and_show(): now the warnig/error message HTML block is inside the page and this function uses the message DIV and the container DIV to perform operations. Added more checks and console warning messages
- added warning/error HTML block in application.php
- moved set_alert_message_and_show() placed in login.php into js/generic_lib.js and renamed in jsJOMlib__GUI_set_alert_message_and_show(). Added a parameter to specify jQuery pointer within which insert alert code
- added Job_is_favourite flag in tables_definition PHP data structure file
- big refactoring for PHP JOM_Job class: now table fields are contained in an array: it defines field name, PDO: constant type value and other useful attributes.
- created jom_pdo__ functions in generic_lib.php to generate fields lists and do parameters binding
- refactored requests_job.php to reflect above updates
- added table_definition.php in cfg file (could be merged with table_configuration contained in inst folder, used in the installation procedure?)
- update job_list.js script for the above reasons
- now alert box background is less than 100% opacity
- translated TITLE text in english
- fixed messages delays
- created (but not uploaded into repository) script to create registered users
- fixed back a wrong patch about table prefix
- now the user John Doe is correctly created with id 0
- fixed ids in users table (no more missing id)
- added ajax call for owner update
- added update case in request_job.php
- Added field "Job_is_favourite" to Jobs table
- Added sort order in Statuses sample values
- Little changes to readme markdown
- X-editable style owner pop-up selector now contains users dynamic list
- added X-Editable jQuery-Bootstrap component for user assignement on object
- implemented dynamic load of users list
- some fixes
- job not assigned during creation now are shown in the list
- added x-editable plugin
- added basic selectable job assignement (only graphic GUI pop-up implemented)
- fixed issue #20
- added a file writeability check in save_config.php installatione part (added also top license-and-copyright note on top)
- fixed issue #19 (in the table Session definition for SQLite there was not primary key defined... and is fundamental because of a REPLACE query)
- fix in tables creation SQL query for SQLite database: wrong NOT NULL removed
- fix in sample data creation SQL query: now ids for categories 1 & 2 are explicitely created, no more left to AUTO INCREMENT to set
- fixed issue #18
- added minimal checks on username and password in login page: avoided 0 length
- refactored set_alert_message_and_show() function in login page: added hide and show code, with parametric delay on show
- added jsJOMlib__isInteger(n) function in generic_lib.js to check that a variable is an integer number; accepted also strings containing the value
- application top bar now is a little... better
- implemented sign-out
- added the not-logged-in check in application
- fixed issue #22
- fixed issue #24
- fixed issue #23
- added index.php as redirect to login.php page
- update this file: moved TODOs points if inserted as issue in the bug tracking / milestones system in GitHub
- important FIX in login: the specific request_dispatcher() was returning true also on login unsuccessful
- the query in the user class, authenticate method, is now in a variable. In this way can be printed easily
- completed job list call using filters
- improvement in gui_select class: added a second parameter in the constructor to set if old options values have to be cleared
- now also the job_creation_date select form field have its object in job_search class
- implemented update_filters_values method in search_filters class (should improve it)
- added a filter_values property in search_filters class
- now DATA__load_job_list method in job_list class have parameters set by search filters status sent in the Ajax call
- added search filter enable/disable switch on filter-by-issue too.
- fixed empty data for issue select: now is correctly se to empty
- added first implementation for search button management in search_filters.js
- various GUI tests on giving filters a nice placement in the page.... actually is not optimal
- tried/tested checkbox stylish plugin: prettyCheckable
- added checkboxes, with tooltips, to enable/disable each filter
- changed datepicker with a more friendly select to have creation-date filtering
- datepicker fixed
- plugged datepicker into its field in search filters blocks... fixes needed
- theme tests for search filters
- added "search" button in application page
- fixed session destroy method: query was wrong
- now also the application.php script have its own session expiration check with redirection to login page
- implemented jom_immediate_redirect() parametric function for redirection
- fixed constants in user_config.template: removed protocol specification in URI constant
- removed redirect parameter within JSON reply from ard.php: was the deprecated HTTP_REFERER
- implemented issues dynamic load on category change in search filters
- reverted font-awesome to local and updated to latest version
- continues refactoring new_job -> issues object (like categories)
- fixed some issues on avascript gui objects and form field component
- added auto_enable_switch property in javascript gui_select_standard class: now when update_data() and/or clear_data() are called, the enable() method is called
- modified update_data() method in javascript gui_select_standard class
- modified clear_data() method in javascript gui_select_standard class
- modified enable() method in javascript gui_select_standard class
- made font-awesome locally installed (and pathed the various font formats file path search)
- refactoring new_job -> issues object (like categories)
- refactored new_job -> categories object: now it works using gui_select_standard class
- created gui_select_standard javascript object: the aim is to have one only interface to populate widget values
- created gui_WIDGET_TEMPLATE.js to have a code start for future HTML widgets implementation
- refactored code according to new javascript code introduced (see above)
- added categories and issues objects instances in search_filter javascript class
- added base setup for categories and issues in application
- added context for ajax callback dispatcher for categories load
- fixed login fields look
- now statuses are correctly loaded and select/combo data field populated
- added remote load for Font-awesome 3.1.1
- created search_filter javascript object
- created statuses javascript object
- added parameter 'c' sent by each ajax call: is the call context (needed in centralized callback dispatcher)
- added in ard.php code to read and send back the context (variable 'c')
- added bootstrap select javascript plugin (see humans.txt)
- fixed problem in JSON data return (was UTF8 encoding): added recursive_utf8_encode() in generic_lib.php to have recursive UTF8 encoding of all returned strings contained in the JSON data field
- job row element adds correctly
- now live event on info icon press fires correctly
- created global JOM.conf object containing dateformat and dateseparator; changed classes accordingly.
- now details are correctly inserted (the date is converted according i18n format)
- "favourite" star correctly toggles
- click events on buttons are correctly managed
- splitted session variable (as user setting) for data format and separator. Added dateformat_human and separator_human (for example, datepicker plugin does not support custom formats)
- job summary row in the job list is correctly filles with data
- tested and fixed install procedure (most of all, db creation) after Statuses table add
- added Logger table and install table creation code too
- reset default values in save job routines for categories_is to 1 (instead of null)
- job query created successfully: data are returned
- job list data are now returned in JSON format
- created Job_List_GUI javascript class with minimal ajax load method call
- created Job_List_GUI object instance and load method call in application
- created backend structures, file and functions for server side request dispatch
- created gui layout for job infos
- added Statuses table (contains job possible statuses) and sample data
- fixed open/close job info row
- enhanched job info
Completed.
- formalized new job form states in a class
- set form messages (saving, ok, ko) as form elements
- refactored and fixed code
- added in session the last_visit value for user after login (requests_users.php - login)
- added checks and renew for the last_visit session user variable in the ard.php. If session expired, return some ajax redirect infos
- added check code in check_session_variables() in lib/generic_lib.php file
- added 2 other messages in the new job modal for OK and KO
- now, if job save is successful, a message is printed; refine the code using new_job class methods!
- redirect on session expire works in application.php script
- BUG FIX: if loggin in, do not have to check if session expired
- now text parameters passed using GET methods are correctly URLencoded/decoded
- now the login operation sets in SESSION also user's id and full name (first name and last name)
- JOB SAVE DATA completed using GET method
- minor fixes
- added utf8_decode in GET PHP parameter to correctly convert charset in generic_lib.php function get_or_post()
- changed method name from reset_job_data_to_nulls to reset_job_data_to_defaults
- removed attachment fields in the Job table
- coding and testing save job methods
- added jsJOMlib__string_date_to_object() function to generic_lib.js
- now the ajax save job call sends a unix timestamp as start date parameter
- in JOM_Job class, renamed reset_to_defaults() to reset_job_data_to_nulls() and chanded behaviour according to its name
- removed all "NOT NULL" in fields for JoB table creation SQL query in tables_specifications.php
- created new field in jobs table: start_datetime; changed fields order (all *_datetime are now in sequence)
- documented some New_Job_GUI javascript class properties and methods; started creating namespacing for methods
- in JOM_Job class, added reset_to_defaults() method
- fixed animate_opacity() function rename in jsJOMlib__animate_opacity() in install.php
- created structures to make the request work in Ajax Request Dispatcher
- created requests_job.php file to manage the job requests
- added constructor to JOM_Job class
- fixed tables name in tables creation during install procedure
- now values are correctly sent to server
- fixed new-economy message position: now is readable
- before sending new job data to server, modal form buttons are disabled, fields disappear, and a "saving" message appears
- in new-job form
- added save button event
- added read values on save
- stripped some space (20px!) from the form margin bottom
- fixed jQuery clear button object pointer caching (bad selector)
- creted jom_init() function and copied inside init GUI opations (such as datepicker initializazion, ...)
- changed license from GPLv3 to AGPLv3 (deleted LICENSE.md file and created LICENSE.txt file in place)
- added license headers in root files... todo all the remaining...
- added default date separator character in config.php as I18N default parm and corresponsing session (with default) parameter
- added in new_job javascript class, methods for read and check data
- added javasctipt library for date check against format and separator
- in new_job javascript class assigned this to var THAT (can prevent javascript scope tipical issues)
- added trim javascirpt function from php.js
- completed implementation for read data and check before save; this includes highlight the field containing error
- continues datepicker bootstrap plugin integration... some stupid problems make me waste time....
- ...now fixed!
- in login page, fixed the login button icon change
- rebuild naturaldocs documentation: naturaldocs -i /var/www/jom_git/JoM/ -o HTML /var/www/jom_git/JoM/docs/ -p /var/www/jom_git/JoM/docs_proj/ -r
- fixed serious bug in bbkk_session_manager class, read() method: could not read stored values!
- created variable $query in bbkk_session_manager class to debug/log. Added also log information for every parameter binding.
- now date field in new-job modal is set correctly by default width current date
- datepicker boostrap plugin calendar now works correctly in new-job modal
- CSS patch for tags
- removed tag field in ticket creation fieldset
- added data field in ticket creation fieldset
- added Datepicker for Bootstrap plugin
- refactored functions name in JS library in lib/generic_lib.js: added namespacing
- added documentation to jsJOMlib__getParameterByName() JS function
- now datepicker opens on date input field in the "new job" fieldset
- changed issues GUI interaction from hidden/shown to disabled/enabled
- added load icon during issues load
- in new_job javascript class added function that manages issues list status
- added priority field for "Create new Job" form
- added tags field for "Create new Job" form
- added XOXCO jQuery tags input plugin to use tags
- fixed category/subcategory issues; now use tha very same class in Javascript too.
- Ajax callbacks are now centralized as $(document).ajaxComplete() function
- created application.js that contains $(document).ajaxComplete() callback that can manage Ajax return values in a centralized way
- added generate_json_javascript_values() function to nonce library
- now nonce timestamp have 5 more characters to have more randomness... is not so unfrequent that one can generate 2 nonces in the ver same Unix timestamp second
- fixed ajax calls for categories without have to distinguish between parenting level but the p GET parameter
- completed all component inveolved in fetching categories via Ajax
- fixed data creation samples for categories during install procedure
- fixed a bug in the query for nonces management (error in SQL query statement)
- added in application the session initialization
- added in categories javascript class the nonce parameters passing
- added generate_json_javascript_values() function in nonce-lib
- ajax call to categories is successful (application, new_job javascript class, category javascript class, ajax call, dispatcher, category PHP object)
- added application HTML page
- added new_job javascript class for GUI interaction
- added categories javascript for categories management
- tested load() method for category, to load 1st level, 2nd level and 2nd level with filter
Completed.
- nonce library completed
- if login fails, a new nonce is generated and sent back via Ajax
- if nonce expired, a reload message is sent back
- fixed Session Manager issue
- added NONCE_EXPIRE constant in cfg/config.php
- nonce functions cutted&pasted in a separated lib file
- added expiration time
- added Nonces table (also in tables creation procedure in installation procedure)
- added nonce check
- if login nonce expires, a new one will be generated and sent back via Ajax
- replacing ft-nonce-lib with hand-created functions... still in progress...
- added check nonce against subsequent regeneration; still to add database coupling for duplication check
- now login.php page call ajax dispatcher passing user and hashed password parameters
- enhanced GUI interaction and effects
- added warning message for unsuccessfull login
- added redirect on successful login
- added nonce library (and testing) ft-nonce-lib
- optimized ARD
- set some session variables
- fixed ard.php (Ajax Requests Dispatcher) in calling right script to handle request
- more tests on SESSION
- added SESSION_EXPIRE define in config.php
- in login page 'show details...' text swaps with 'hide details...' on open/close
- added comments to javascript code
- replaced var_dump with var_export (because the latter returns the string: useful for debug on/off purposes)
- added boolean $debug_on_screen public property in base_class: can enable/disable log_info() method to output debug messages on screen
- now login page starts the session
- now the Ajax dispatcher starts session
- renamed field User_password in User_password_hash in the table Users
- added key in mysql table Users for User_contacts_email and in sqlite for User_contacts_email and User_username
- added pidCrypt SHA256 library load in login.php script; it correctly generates the hash for password field
- added enter bind event on login GUI fields
- rinominata classe in JOM_User
- aggiunta query di login e testata
- creato script di test di login
- creata classe bbkk_user con metodo authenticate
- in BBKK_Session_Manager removed the session_id regeneration on each start: in this way the session can be recovered
- in BBKK_Session_Manager, in the read() method, fixed a bug in the query
- in BBKK_Session_Manager created private properties for errors
- in BBKK_Session_Manager moved some class setting to constructor
- in BBKK_Session_Manager added defaults for parameters in order to avoid parameter number passing warning
- in BBKK_Session_Manager implemented destroy() method
- in BBKK_Session_Manager implemented read() method
- in BBKK_Session_Manager added possibility enable/disable encrtyption
- some changes made in BBKK_Base_Class class.
- fixed and tested in BBKK_Session_Manager, methods: constructor(), __set(), start_session()
- added generate_random_string() function in lib/generic_lib.php file
- added $config['SALT'] in user_config.template. Need to add random generation
- added encrypt and decrypt private methods in BBKK_Session_Manager class: can encode/decode any data structure via serialize/unserialize
- added 64 characters string generation during configuration save (useful for encryption tasks)
- implemented garbage collector method in BBKK_Session_Manager class
- added table Sessions in install procedure
- continues Session Managemen class creation
- created test script in test/ for Session Managemen class tests
- added new table "Login_attempts" and so all necessary data for installation scripts: tables_specification.php, config.php, create_tables.php
- fixed multiple values INSERT in SQLITE
- modified User_password field in Users table, from VARCHAR(5) to CHAR(128)
- added User_salt field in Users table, a CHAR(128)
- created HTML login page (GUI): some animations added; good styling added
Completed.
- fixed table creation
- fixed sample data creation
- created js/categories.js; first class definition for categories and subcategories for data interaction
- created ard.php (Ajax Request Dispatcher) in root folder: parses passed 'd' parameter (domain) and opens a PHP contained in ./lib
- renamed tables Categories_[A|B] in Categories_[1|2]
- table Users created
- table Jobs for sqlite created
- User sample data created
- working on main application page design: added a modal window for Job creation
- added humans.txt and linked in install and application
- added Jobs table
- started main application page design
- Javascript function animate_opacity() moved from installation_procedure.js to generic_lib.js
- sample data creation routines implemented and working.
- installation procedure correctly call all scripts
- fixed password input field to regular type="password"
- now the installer can create tables in both implemented databases type (mysql and sqlite). Tables prepend correctly managed
- created first table "Companies"
- created tabke "Users"
- started tables creation
- created inst/create_tables.php script for tables creation (not DB dependant)
- created inst/tables_specification.php; contains an array of tables and CREATE SQL statement, for each DBMS
- fixed user_config_template.php: the array index od DB name is now the same in SQLite ad MySQL (so that there can be one only database open procedure)
- documented BBKK_Base_Class properties
- created (compiled) first documentation files via naturalDocs
- chiamata alla set_database.php per database MySQL ora attiva
- fix minori nella GUI di installazione
- added PDO and Base_Class PHP classes
- in PDO, added sqlite database open
- now the inst/set_database.php script creates/opens correctly the SQLite database file
- simplified ajax calls for installation
- inst/save_config.php reviewed: more error checks and messages; almost finished
- global improvements to save configuration procedure
- minor fixes
- now the installation info result block shows an icon that contains (on hover) the error explanation
- made STEP a global variable
- made the progress bar work
- checked config file save: save_config.php should be ok. Needed more tests, mainly checks against SQL injection
- created the structure for database check/create
- ribbon improvement
- updated directory and consts for config.php and installer procedure
- import libraries in install procedure
- rebuilt in bootstrap-style the install steps; added also a progress bar
- SQLite specific parameters (form fields) and interactivity (GUI dynamics)
- splitted install.css stylesheet file and created a new generic default style for entire application
- fixed "for" label's attribute
- added description (title) hover the version ribbon element
- GUI fix: unique buttons "go back" and "proceed"
- better installation steps progression management
- smoother transitions
- more syling tests: fixed ribbon, animate opacity, scaffolding
- splitted old config.php into 2 files: cnf/config.php and user_config.php (and its template version)
- install.php now includes cnf/config.php: so that the version ribbon contains a dynamic label according to config file
- upgraded also inline css style
- added Bootstrap components (css, js, imgs)
- minor fix in install.php file
- some install.php page graphic remake
Completed.