diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/auth.cfg.php.sample b/auth.cfg.php.sample index 875e3d5..21b97e9 100644 --- a/auth.cfg.php.sample +++ b/auth.cfg.php.sample @@ -1,5 +1,5 @@ - \ No newline at end of file diff --git a/doc/actions.txt b/doc/actions.txt index 0505fe4..838b3af 100755 --- a/doc/actions.txt +++ b/doc/actions.txt @@ -1,571 +1,571 @@ -Equipment Reserve Actions - -A list of actions that the people using the system can take, and the role(s) necessary to take each action. - -GENERAL DESIGN/IMPLEMENTATION NOTE: - all data manipulation actions should be implemented as ajax calls when possible, - but navigation uses full page reloads - ------------------------------------- -ALL USERS ------------------------------------- - -View index page w/ log in form - reqs: - currently in an unauthenticated session - effects: - WEB: - display tool title & other relevant public info - display log in form (https) - -Log in - reqs: - has an LDAP account - currently in an unauthenticated session - effects: - WEB: - establish an authenticated session - DB: - if no eqreserve users table entry, create one and associated groups (if needed) and link_users_groups - else update users table, groups, and link_users_groups - LOG?: - track user log in event - -Log out - reqs: - currently in an authenticated session - effects: - WEB: - unauthenticate the session - LOG?: - track user log out event - -View index page w/ tool active - reqs: - currently in an authenticated session - effects: - WEB: - show list of allowed system actions - show list of eq_groups, indicating level of access for each one - LOG?: - track user index view - -See available groups - reqs: - currently in an authenticated session - effects: - WEB: - show list of eq_groups for which the current user has access - direct, via user id - indirect, via group membership - indicate role in each group, and from whence the role derives) - DB: - selects against - users - inst_groups - link_users_inst_groups - link_entities_roles_eq_groups - LOG?: - track user action - -See reservations list - reqs: - currently in an authenticated session - notes: this is driven by the user_id and grouped by the block_group - effects: - WEB: - show list of reservations the user has made - flag manager_reservations - show a single entry per block_group, with a list of the items/entities that are tied together in that block group - DB: - selects - LOG?: - track user action - ------------------------------------- -ADMINS ------------------------------------- - -System action: create user - reqs: - currently in an authenticated session - current user has admin role - notes: needs an LDAP search feature - effects: - WEB: display a user creation form - DB: create a users record, or update it if one already exists - LOG?: - track user action - -System action: look up user or institutional (LDAP) group - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: - display a search form - display result set w/ record summaries for 2+ results - w/ links to single user or inst group view/edit - visual cue users vs inst groups - jump directly to single user or inst_group view/edit if 1 result - ??? if no local user, jump to LDAP search? - DB: select set of users based on criteria - LOG?: - track user action - -System action: view/edit base user info - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: - display user info, with each field that can be edited in an editable form - display user roles - direct - via user id - indirect - via group membership - DB: retrieve and update a single users record - LOG?: - track user action - -System action: view/edit institutional (LDAP) group info - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: display inst_group info, with each field that can be edited in an editable form - DB: retrieve and update a single inst_groups record - LOG?: - track user action - -System action: globally ban a user or institutional (LDAP) group - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: a button/check on the edit user page - DB: flip the flag_is_banned field for the user - LOG?: - track user action - -System action: edit user/inst_group roles for eq_groups - reqs: - currently in an authenticated session - current user has admin role - notes: - editing access / roles from a group perspective is described / handled in the Group actions below - 'banned' has the same effects as 'none', but can be reported on and is actively indicative of state - effects: - WEB: - select a user or entity from a list / search result, or from the view / edit form for that user / inst_group - for a given user or group entity, list all eq groups, with current role for each group (banned, none, customer, manager) - allow changing of roles - DB: - adds, or deletes (or updates - maybe? might just do ti all w/ adds/deletes) link_entity_roles_eq_groups records - LOG?: - track user action - -System action: create equipment group - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: displays form for creating an equipment group - DB: eq_groups record created - LOG?: - track user action - -NOTE: editing an equipment group is described / handled in the Group actions below - -Group action: delete equipment group - reqs: - currently in an authenticated session - current user has admin role - effects: - WEB: - list all equipment groups - confirm action check - 'delete' selected one - DB: - mark appropriate eq_group record(s) as deleted - LOG?: - track user action - ------------------------------------- -MANAGERS (and ADMINS? might just require an admin to grant themselves manager role for the relevant group) ------------------------------------- - -Group action: view/edit group info - reqs: - currently in an authenticated session - current user has manager role for this group - notes: there are many actions associated with groups and which would appear on main group view page, these are detailed below - effects: - WEB: - display eq group info, with each field that can be edited in an editable form - DB: - retrieve and update a single eq_groups record - LOG?: - track user action - -Group action: (sub-action of view/edit group) manage entity roles for this group - reqs: - currently in an authenticated session - current user has manager role for this group - effects: - WEB: - show list of entities that have roles in the group (sortable by entity type, name, and role) - see DKC's work w/ sortable tables - quick-form (ajax-y) for adding a new entity role - include on-the-fly entity creation? - DB: - adds, or deletes (or updates - maybe? might just do ti all w/ adds/deletes) link_entity_roles_eq_groups records - LOG?: - track user action - -Group action: (sub-action of view/edit group) make scheduling rules for this group - reqs: - currently in an authenticated session - current user has manager role for this group - effects: - WEB: - show scheduling rule, and allow editing there-of - DB: - retrieve and update a single scheduling_rules record - LOG?: - track user action - -Group action: (sub-action of view/edit group) create availability block for this group - reqs: - currently in an authenticated session - current user has manager role for this group - this group has a scheduling rule - effects: - WEB: - show overview of scheduling/reservations for the group - calendar format (days horizontally and items (sub-grouped) vertically?) - list format - DB: - create availability block(s) - LOG?: - track user action - -Group action: (sub-action of view/edit group) create an manager reserve block for this group - reqs: - currently in an authenticated session - current user has manager role for this group - this group has a scheduling rule - effects: - WEB: - show overview of scheduling/reservations for the group - calendar format (days horizontally and items (sub-grouped) vertically?) - list format - DB: - create manager reserve block(s) for the group - LOG?: - track user action - -Group action: (sub-action of view/edit group) view and re-order sub-groups and items for this group - reqs: - currently in an authenticated session - current user has manager role for this group - notes: this can also be done individually by editing specific sub-groups, but this is conceptually a separate action - effects: - WEB: - list eq sub-groups and eq items, appropriately organized - DB: - alter the ordering values for the relevant record(s) - LOG?: - track user action - -Group action: (sub-action of view/edit group) create sub-group for this group - reqs: - currently in an authenticated session - current user has manager role for this group - effects: - WEB: - show add button at top and/or bottom of sub-group list - show sub-group creation form in-place (i.e. no page reload) - hide form on creation - dynamically add new sub-group info on creation / form hiding - DB: - create eq_subgroups record - LOG?: - track user action - -Group action: REPORTS on eq_group - reqs: - currently in an authenticated session - current user has manager role for this group - effects: - WEB: - over all activity, per item - # users - % in use - ???? - specific users and times - filter by time - all - historical - upcoming/future - DB: various SELECTs - LOG?: - track user action - -------------------- - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: edit sub-group info -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X effects: -X WEB: -X in-place editing form -X DB: -X update eq_subgroups record -X LOG?: -X track user action - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: delete sub-group -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X effects: -X WEB: -X delete button -X confirm action check -X DB: -X mark eq_subgroups record as deleted -X LOG?: -X track user action - -[Group action: make scheduling rules for this sub-group -[ reqs: -[ currently in an authenticated session -[ current user has manager role for this group -[ notes: -[ fail back to group level rule -[ effects: -[ WEB: -[ DB: -[ LOG?: -[ track user action - -[Group action: create availability block for this sub-group -[ reqs: -[ currently in an authenticated session -[ current user has manager role for this group -[ notes: -[ fail back to group level availability -[ effects: -[ WEB: -[ DB: -[ LOG?: -[ track user action - -[Group action: create an manager reserve block for this sub-group -[ reqs: -[ currently in an authenticated session -[ current user has manager role for this group -[ this group has a scheduling rule -[ effects: -[ WEB: -[ show overview of scheduling/reservations for the group -[ calendar format (days horizontally and items (sub-grouped) vertically?) -[ list format -[ DB: -[ create manager reserve block(s) for the sub-group -[ LOG?: -[ track user action - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: re-order items within this sub-group -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X notes: this can also be done individually by editing specific items, but this is conceptually a separate action -X effects: -X WEB: -X DB: -X LOG?: -X track user action - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: create item -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X effects: -X WEB: -X DB: -X LOG?: -X track user action - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: edit item -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X effects: -X WEB: -X DB: -X LOG?: -X track user action - -THIS IS HANDLED AT THE GROUP LEVEL -XGroup action: delete item -X reqs: -X currently in an authenticated session -X current user has manager role for this group -X effects: -X WEB: -X DB: -X LOG?: -X track user action - -[Group action: make scheduling rules for this item -[ reqs: -[ currently in an authenticated session -[ current user has manager role for this group -[ notes: -[ fail back to group level availability -[ effects: -[ WEB: -[ DB: -[ LOG?: -[ track user action - -[Group action: create availability block for this item -[ reqs: -[ currently in an authenticated session -[ current user has manager role for this group -[ effects: -[ WEB: -[ DB: -[ LOG?: -[ track user action - -Group action: create an manager reserve block for this item - reqs: - currently in an authenticated session - current user has manager role for this group - this group has a scheduling rule - notes: the UI for this is the same as consumer reservation, but there's a checkbox to make it a manager reservation; ALSO, the back-end implementation is the same, except- conflicts do not cause an abort, over-rides of non-manager reservations send an alert to the person that made the other reservation, and the other reservation is removed/deleted - effects: - WEB: - show overview of scheduling/reservations for the group - calendar format (days horizontally and items (sub-grouped) vertically?) - list format - DB: - create manager reserve block(s) for the sub-group - LOG?: - track user action - ------------------------------------- -CONSUMERS (and MANAGERS and ADMINS? might require them to grant themselves the consumer role for the group...) ------------------------------------- - -Consumer action: see group info - reqs: - currently in an authenticated session - current user has consumer role for the group (direct or indirect) - this group has a scheduling rule - effects: - WEB: - show eq_group info - show eq_subgroups - mouse over for descr - show eq_items - mouse over for descr and image (if the latter exists) - show overview of scheduling/reservations for the group - calendar format (days horizontally and items (sub-grouped) vertically?) - list format - DB: - many selects - LOG?: - track user action - -Consumer action: specify a reservation - reqs: - currently in an authenticated session - current user has consumer role for the group (direct or indirect) - this group has a scheduling rule - notes: there's a complex interplay between choosing items and choosing times- as items are chosen, various times become unavailable, and as times are chosen various items become unavailable. Try to make UI handle this in a flexible manner... - effects: - WEB: - show overview of scheduling/reservations for the group - calendar format (days horizontally and items (sub-grouped) vertically?) - list format - user chooses eq_items - limited by availability - user specifies time block (start, end) - limited by scheduling rules and availability - DB: - many selects - LOG?: - track user action - -Consumer action: (related to the above) create/make a reservations - reqs: - currently in an authenticated session - current user has consumer role for the group (direct or indirect) - reservation spec-ed by above process - this group has a scheduling rule - notes: - effects: - WEB: - post-creation, jump to the reservation view page - DB: - create the relevant time blocks, linked with a unique block_group identifier - LOG?: - track user action - -Consumer action: see reservation details - reqs: - currently in an authenticated session - user is the creator/owner of the reservation - effects: - WEB: - show eq_group, eq_subgroups, eq_items, and time_blocks - DB: - selects - LOG?: - track user action - - -THIS IS HANDLED ON THE VIEW RESERVATION PAGE -XConsumer action: delete a reservations -X reqs: -X currently in an authenticated session -X current user has consumer role for the group (direct or indirect) -X reservation spec-ed by above process -X notes: handled by a button on the view page -X effects: -X WEB: -X confirm action check -X post delete head to either the reservations list or the group info page, depending on where the user last visited -X DB: -X mark the relvant time blocks as deleted -X LOG?: -X track user action - - -[NOT SURE HOW / IF TO HANDLE THIS... certainly easier to have user just delete and re-create -[ - also relatively simple to allow reductive edits (remove items, shrink times) -[ - adding items is tricky -[ - altering times (extending and/or shifting) is tricky -[Consumer action: edit reservation -[ reqs: -[ currently in an authenticated session -[ user is the creator/owner of the reservation -[ effects: -[ WEB: -[ show reservation details -[ show other eq_group info -[ sub-groups and items -[ calendar / time list -[ allow alteration of time blocks -[ allow addition of items -[ allow removal of items -[ DB: -[ create, alter, or delete time blocks -[ LOG?: -[ track user action - - +Equipment Reserve Actions + +A list of actions that the people using the system can take, and the role(s) necessary to take each action. + +GENERAL DESIGN/IMPLEMENTATION NOTE: + all data manipulation actions should be implemented as ajax calls when possible, + but navigation uses full page reloads + +------------------------------------ +ALL USERS +------------------------------------ + +View index page w/ log in form + reqs: + currently in an unauthenticated session + effects: + WEB: + display tool title & other relevant public info + display log in form (https) + +Log in + reqs: + has an LDAP account + currently in an unauthenticated session + effects: + WEB: + establish an authenticated session + DB: + if no eqreserve users table entry, create one and associated groups (if needed) and link_users_groups + else update users table, groups, and link_users_groups + LOG?: + track user log in event + +Log out + reqs: + currently in an authenticated session + effects: + WEB: + unauthenticate the session + LOG?: + track user log out event + +View index page w/ tool active + reqs: + currently in an authenticated session + effects: + WEB: + show list of allowed system actions + show list of eq_groups, indicating level of access for each one + LOG?: + track user index view + +See available groups + reqs: + currently in an authenticated session + effects: + WEB: + show list of eq_groups for which the current user has access + direct, via user id + indirect, via group membership + indicate role in each group, and from whence the role derives) + DB: + selects against + users + inst_groups + link_users_inst_groups + link_entities_roles_eq_groups + LOG?: + track user action + +See reservations list + reqs: + currently in an authenticated session + notes: this is driven by the user_id and grouped by the block_group + effects: + WEB: + show list of reservations the user has made + flag manager_reservations + show a single entry per block_group, with a list of the items/entities that are tied together in that block group + DB: + selects + LOG?: + track user action + +------------------------------------ +ADMINS +------------------------------------ + +System action: create user + reqs: + currently in an authenticated session + current user has admin role + notes: needs an LDAP search feature + effects: + WEB: display a user creation form + DB: create a users record, or update it if one already exists + LOG?: + track user action + +System action: look up user or institutional (LDAP) group + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: + display a search form + display result set w/ record summaries for 2+ results + w/ links to single user or inst group view/edit + visual cue users vs inst groups + jump directly to single user or inst_group view/edit if 1 result + ??? if no local user, jump to LDAP search? + DB: select set of users based on criteria + LOG?: + track user action + +System action: view/edit base user info + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: + display user info, with each field that can be edited in an editable form + display user roles + direct - via user id + indirect - via group membership + DB: retrieve and update a single users record + LOG?: + track user action + +System action: view/edit institutional (LDAP) group info + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: display inst_group info, with each field that can be edited in an editable form + DB: retrieve and update a single inst_groups record + LOG?: + track user action + +System action: globally ban a user or institutional (LDAP) group + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: a button/check on the edit user page + DB: flip the flag_is_banned field for the user + LOG?: + track user action + +System action: edit user/inst_group roles for eq_groups + reqs: + currently in an authenticated session + current user has admin role + notes: + editing access / roles from a group perspective is described / handled in the Group actions below + 'banned' has the same effects as 'none', but can be reported on and is actively indicative of state + effects: + WEB: + select a user or entity from a list / search result, or from the view / edit form for that user / inst_group + for a given user or group entity, list all eq groups, with current role for each group (banned, none, customer, manager) + allow changing of roles + DB: + adds, or deletes (or updates - maybe? might just do ti all w/ adds/deletes) link_entity_roles_eq_groups records + LOG?: + track user action + +System action: create equipment group + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: displays form for creating an equipment group + DB: eq_groups record created + LOG?: + track user action + +NOTE: editing an equipment group is described / handled in the Group actions below + +Group action: delete equipment group + reqs: + currently in an authenticated session + current user has admin role + effects: + WEB: + list all equipment groups + confirm action check + 'delete' selected one + DB: + mark appropriate eq_group record(s) as deleted + LOG?: + track user action + +------------------------------------ +MANAGERS (and ADMINS? might just require an admin to grant themselves manager role for the relevant group) +------------------------------------ + +Group action: view/edit group info + reqs: + currently in an authenticated session + current user has manager role for this group + notes: there are many actions associated with groups and which would appear on main group view page, these are detailed below + effects: + WEB: + display eq group info, with each field that can be edited in an editable form + DB: + retrieve and update a single eq_groups record + LOG?: + track user action + +Group action: (sub-action of view/edit group) manage entity roles for this group + reqs: + currently in an authenticated session + current user has manager role for this group + effects: + WEB: + show list of entities that have roles in the group (sortable by entity type, name, and role) - see DKC's work w/ sortable tables + quick-form (ajax-y) for adding a new entity role + include on-the-fly entity creation? + DB: + adds, or deletes (or updates - maybe? might just do ti all w/ adds/deletes) link_entity_roles_eq_groups records + LOG?: + track user action + +Group action: (sub-action of view/edit group) make scheduling rules for this group + reqs: + currently in an authenticated session + current user has manager role for this group + effects: + WEB: + show scheduling rule, and allow editing there-of + DB: + retrieve and update a single scheduling_rules record + LOG?: + track user action + +Group action: (sub-action of view/edit group) create availability block for this group + reqs: + currently in an authenticated session + current user has manager role for this group + this group has a scheduling rule + effects: + WEB: + show overview of scheduling/reservations for the group + calendar format (days horizontally and items (sub-grouped) vertically?) + list format + DB: + create availability block(s) + LOG?: + track user action + +Group action: (sub-action of view/edit group) create an manager reserve block for this group + reqs: + currently in an authenticated session + current user has manager role for this group + this group has a scheduling rule + effects: + WEB: + show overview of scheduling/reservations for the group + calendar format (days horizontally and items (sub-grouped) vertically?) + list format + DB: + create manager reserve block(s) for the group + LOG?: + track user action + +Group action: (sub-action of view/edit group) view and re-order sub-groups and items for this group + reqs: + currently in an authenticated session + current user has manager role for this group + notes: this can also be done individually by editing specific sub-groups, but this is conceptually a separate action + effects: + WEB: + list eq sub-groups and eq items, appropriately organized + DB: + alter the ordering values for the relevant record(s) + LOG?: + track user action + +Group action: (sub-action of view/edit group) create sub-group for this group + reqs: + currently in an authenticated session + current user has manager role for this group + effects: + WEB: + show add button at top and/or bottom of sub-group list + show sub-group creation form in-place (i.e. no page reload) + hide form on creation + dynamically add new sub-group info on creation / form hiding + DB: + create eq_subgroups record + LOG?: + track user action + +Group action: REPORTS on eq_group + reqs: + currently in an authenticated session + current user has manager role for this group + effects: + WEB: + over all activity, per item + # users + % in use + ???? + specific users and times + filter by time + all + historical + upcoming/future + DB: various SELECTs + LOG?: + track user action + +------------------- + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: edit sub-group info +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X effects: +X WEB: +X in-place editing form +X DB: +X update eq_subgroups record +X LOG?: +X track user action + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: delete sub-group +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X effects: +X WEB: +X delete button +X confirm action check +X DB: +X mark eq_subgroups record as deleted +X LOG?: +X track user action + +[Group action: make scheduling rules for this sub-group +[ reqs: +[ currently in an authenticated session +[ current user has manager role for this group +[ notes: +[ fail back to group level rule +[ effects: +[ WEB: +[ DB: +[ LOG?: +[ track user action + +[Group action: create availability block for this sub-group +[ reqs: +[ currently in an authenticated session +[ current user has manager role for this group +[ notes: +[ fail back to group level availability +[ effects: +[ WEB: +[ DB: +[ LOG?: +[ track user action + +[Group action: create an manager reserve block for this sub-group +[ reqs: +[ currently in an authenticated session +[ current user has manager role for this group +[ this group has a scheduling rule +[ effects: +[ WEB: +[ show overview of scheduling/reservations for the group +[ calendar format (days horizontally and items (sub-grouped) vertically?) +[ list format +[ DB: +[ create manager reserve block(s) for the sub-group +[ LOG?: +[ track user action + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: re-order items within this sub-group +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X notes: this can also be done individually by editing specific items, but this is conceptually a separate action +X effects: +X WEB: +X DB: +X LOG?: +X track user action + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: create item +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X effects: +X WEB: +X DB: +X LOG?: +X track user action + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: edit item +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X effects: +X WEB: +X DB: +X LOG?: +X track user action + +THIS IS HANDLED AT THE GROUP LEVEL +XGroup action: delete item +X reqs: +X currently in an authenticated session +X current user has manager role for this group +X effects: +X WEB: +X DB: +X LOG?: +X track user action + +[Group action: make scheduling rules for this item +[ reqs: +[ currently in an authenticated session +[ current user has manager role for this group +[ notes: +[ fail back to group level availability +[ effects: +[ WEB: +[ DB: +[ LOG?: +[ track user action + +[Group action: create availability block for this item +[ reqs: +[ currently in an authenticated session +[ current user has manager role for this group +[ effects: +[ WEB: +[ DB: +[ LOG?: +[ track user action + +Group action: create an manager reserve block for this item + reqs: + currently in an authenticated session + current user has manager role for this group + this group has a scheduling rule + notes: the UI for this is the same as consumer reservation, but there's a checkbox to make it a manager reservation; ALSO, the back-end implementation is the same, except- conflicts do not cause an abort, over-rides of non-manager reservations send an alert to the person that made the other reservation, and the other reservation is removed/deleted + effects: + WEB: + show overview of scheduling/reservations for the group + calendar format (days horizontally and items (sub-grouped) vertically?) + list format + DB: + create manager reserve block(s) for the sub-group + LOG?: + track user action + +------------------------------------ +CONSUMERS (and MANAGERS and ADMINS? might require them to grant themselves the consumer role for the group...) +------------------------------------ + +Consumer action: see group info + reqs: + currently in an authenticated session + current user has consumer role for the group (direct or indirect) + this group has a scheduling rule + effects: + WEB: + show eq_group info + show eq_subgroups - mouse over for descr + show eq_items - mouse over for descr and image (if the latter exists) + show overview of scheduling/reservations for the group + calendar format (days horizontally and items (sub-grouped) vertically?) + list format + DB: + many selects + LOG?: + track user action + +Consumer action: specify a reservation + reqs: + currently in an authenticated session + current user has consumer role for the group (direct or indirect) + this group has a scheduling rule + notes: there's a complex interplay between choosing items and choosing times- as items are chosen, various times become unavailable, and as times are chosen various items become unavailable. Try to make UI handle this in a flexible manner... + effects: + WEB: + show overview of scheduling/reservations for the group + calendar format (days horizontally and items (sub-grouped) vertically?) + list format + user chooses eq_items - limited by availability + user specifies time block (start, end) - limited by scheduling rules and availability + DB: + many selects + LOG?: + track user action + +Consumer action: (related to the above) create/make a reservations + reqs: + currently in an authenticated session + current user has consumer role for the group (direct or indirect) + reservation spec-ed by above process + this group has a scheduling rule + notes: + effects: + WEB: + post-creation, jump to the reservation view page + DB: + create the relevant time blocks, linked with a unique block_group identifier + LOG?: + track user action + +Consumer action: see reservation details + reqs: + currently in an authenticated session + user is the creator/owner of the reservation + effects: + WEB: + show eq_group, eq_subgroups, eq_items, and time_blocks + DB: + selects + LOG?: + track user action + + +THIS IS HANDLED ON THE VIEW RESERVATION PAGE +XConsumer action: delete a reservations +X reqs: +X currently in an authenticated session +X current user has consumer role for the group (direct or indirect) +X reservation spec-ed by above process +X notes: handled by a button on the view page +X effects: +X WEB: +X confirm action check +X post delete head to either the reservations list or the group info page, depending on where the user last visited +X DB: +X mark the relvant time blocks as deleted +X LOG?: +X track user action + + +[NOT SURE HOW / IF TO HANDLE THIS... certainly easier to have user just delete and re-create +[ - also relatively simple to allow reductive edits (remove items, shrink times) +[ - adding items is tricky +[ - altering times (extending and/or shifting) is tricky +[Consumer action: edit reservation +[ reqs: +[ currently in an authenticated session +[ user is the creator/owner of the reservation +[ effects: +[ WEB: +[ show reservation details +[ show other eq_group info +[ sub-groups and items +[ calendar / time list +[ allow alteration of time blocks +[ allow addition of items +[ allow removal of items +[ DB: +[ create, alter, or delete time blocks +[ LOG?: +[ track user action + + diff --git a/doc/architecture.txt b/doc/architecture.txt index d7524fc..4c6efcf 100644 --- a/doc/architecture.txt +++ b/doc/architecture.txt @@ -1,55 +1,55 @@ -Equipment Reserve - -This is a system / application to enable efficient use of limited resources via scheduling. - -The file structure is -- app root : license, readme, config files, primary php files - ## index.php - ## institution.cfg.php - this file has all the institution specific and/or sensitive info (e.g. db connection strings) - ## auth.cfg.php - local config info specifically related to the authentication system that the app uses - + classes : various PHP class files - + css : all the style sheets - ## style.css - general styling of HTML elements and web page layout - ## calendar.css - making a calendar look good - ## ui.css - styling specific to interactivity - + db_setup : files / documents relating to setting up the database, but unused once the app is up and running - ## schema.sql - the sql code necessary to create the table structure for this app - + doc : documentation for/about the system - ## architecture.txt - an overview of how the app is organized - + js : local javascript; there's a jquery dir here, but only as a palce to organize plugins as the main jquerylibrary will be loaded form a cdn source - ## app.js - general javascript for the application - * jquery - % plugins : has sub-folders for each plugin - + tests : automated tests (unit, functional, integration) - * simpletest : the SimpleTest php unit testing framework - - - -The general approach is individual PHP pages for primary navigation / functional grouping: - index/login/landing - group - own account - item details - reservation details - -Within each functional grouping individual functions are implemented as ajax calls and/or other in-place behavior (i.e. whenever DB info/interaction is not needed then there's no reason for a call to the server). - -The classes fall into 2 general categories: data objects, and application infrastructure. - -The data object classes are all based on a root db_linked class which handles all basic MySQL DB IO and also has some static methods that handle some basic library-like DB methods (e.g. automatically correctly quote a constant, build pre-set sections of queries, etc.). - -The app infrastructure classes are: - Session - a basic session handling wrapper, with sugar methods to make other code easier to read (e.g. session.isAuthenticated) - AuthRoot - defines an interface that any auth module must support - AuthLDAP - a simple implementation of AuthRoot that uses LDAP as the authority - - -The PHP pages use a general approach of - - +Equipment Reserve + +This is a system / application to enable efficient use of limited resources via scheduling. + +The file structure is +- app root : license, readme, config files, primary php files + ## index.php + ## institution.cfg.php - this file has all the institution specific and/or sensitive info (e.g. db connection strings) + ## auth.cfg.php - local config info specifically related to the authentication system that the app uses + + classes : various PHP class files + + css : all the style sheets + ## style.css - general styling of HTML elements and web page layout + ## calendar.css - making a calendar look good + ## ui.css - styling specific to interactivity + + db_setup : files / documents relating to setting up the database, but unused once the app is up and running + ## schema.sql - the sql code necessary to create the table structure for this app + + doc : documentation for/about the system + ## architecture.txt - an overview of how the app is organized + + js : local javascript; there's a jquery dir here, but only as a palce to organize plugins as the main jquerylibrary will be loaded form a cdn source + ## app.js - general javascript for the application + * jquery + % plugins : has sub-folders for each plugin + + tests : automated tests (unit, functional, integration) + * simpletest : the SimpleTest php unit testing framework + + + +The general approach is individual PHP pages for primary navigation / functional grouping: + index/login/landing + group + own account + item details + reservation details + +Within each functional grouping individual functions are implemented as ajax calls and/or other in-place behavior (i.e. whenever DB info/interaction is not needed then there's no reason for a call to the server). + +The classes fall into 2 general categories: data objects, and application infrastructure. + +The data object classes are all based on a root db_linked class which handles all basic MySQL DB IO and also has some static methods that handle some basic library-like DB methods (e.g. automatically correctly quote a constant, build pre-set sections of queries, etc.). + +The app infrastructure classes are: + Session - a basic session handling wrapper, with sugar methods to make other code easier to read (e.g. session.isAuthenticated) + AuthRoot - defines an interface that any auth module must support + AuthLDAP - a simple implementation of AuthRoot that uses LDAP as the authority + + +The PHP pages use a general approach of + + diff --git a/doc/mockups/_BASE.html b/doc/mockups/_BASE.html index a09f38a..3a414d3 100644 --- a/doc/mockups/_BASE.html +++ b/doc/mockups/_BASE.html @@ -1,23 +1,23 @@ - -
-equipment | upcoming reservation reminder | on reservations made | on cancellations |
other things |
time | equipment |
2013/02/17 9:00PM-11:00PM | lasers : diffuser, refractor, reflector |
time | equipment |
2012/11/22 3:00PM-8:00PM | lasers : nose cone B, tray A, computer A |
equipment | upcoming reservation reminder | on reservations made | on cancellations |
other things |
time | equipment |
2013/02/17 9:00PM-11:00PM | lasers : diffuser, refractor, reflector |
time | equipment |
2012/11/22 3:00PM-8:00PM | lasers : nose cone B, tray A, computer A |
Description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description
- -Managed by: Prof. Ruminamanager have the above replaced with a form
-repeat rates cause addition ui elements to appear to support specifying days of week, or month, and an end date
-on mouse over, or perhaps on click
-Description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description description
+ +Managed by: Prof. Ruminamanager have the above replaced with a form
+repeat rates cause addition ui elements to appear to support specifying days of week, or month, and an end date
+on mouse over, or perhaps on click
+managers get editable versions of the below (e.g text fields instead of just text, spec-url for the image, etc.)
- -Description: ffuses two things
-number of reservation could get overwhelming - consider incremental, ajax-driven, load-on-demand approach
- -who | when | equipment |
Violet Bovinea | 2013/02/17 9:00PM-11:00PM | lasers : diffuser, refractor, reflector |
who | when | equipment |
Violet Bovinea | 2012/11/22 3:00PM-8:00PM | lasers : diffuser, tray A, computer A |
Prof. Rumina | MANAGER RESERVE 2012/10/16 12:00AM- 2012/10/22 12:00AM | lasers : diffuser, reflector |
managers get editable versions of the below (e.g text fields instead of just text, spec-url for the image, etc.)
+ +Description: ffuses two things
+number of reservation could get overwhelming - consider incremental, ajax-driven, load-on-demand approach
+ +who | when | equipment |
Violet Bovinea | 2013/02/17 9:00PM-11:00PM | lasers : diffuser, refractor, reflector |
who | when | equipment |
Violet Bovinea | 2012/11/22 3:00PM-8:00PM | lasers : diffuser, tray A, computer A |
Prof. Rumina | MANAGER RESERVE 2012/10/16 12:00AM- 2012/10/22 12:00AM | lasers : diffuser, reflector |
This page has a brief description of the system, contact info for the admin, and a log in form.
- - - -This page has a brief description of the system, contact info for the admin, and a log in form.
+ + + +This page provides high-level navigation of the eqreserve system. It provides links to all the groups to which the user has access, with an indicaiton of why/how/degree of access. Admins also see admin tools and reports linked on this page. Users also access their prefs on this page (e.g. preferred contact email, displayed name, etc.).
- -General instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here
- -time | equipment |
2013/02/17 9:00PM-11:00PM | MANAGER RESERVE lasers : diffuser, refractor, reflector |
2013/02/19 11:30AM-4:00PM | very small things : miniscope, microscope, nanoscope |
system admins will be able to drag groups to re-order them - a small drag-handle will be shown for them
-On clicking the above, shows in place the creation form:
- - Once created then the link for the group shows up in the list -This page provides high-level navigation of the eqreserve system. It provides links to all the groups to which the user has access, with an indicaiton of why/how/degree of access. Admins also see admin tools and reports linked on this page. Users also access their prefs on this page (e.g. preferred contact email, displayed name, etc.).
+ +General instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here general instructions here
+ +time | equipment |
2013/02/17 9:00PM-11:00PM | MANAGER RESERVE lasers : diffuser, refractor, reflector |
2013/02/19 11:30AM-4:00PM | very small things : miniscope, microscope, nanoscope |
system admins will be able to drag groups to re-order them - a small drag-handle will be shown for them
+On clicking the above, shows in place the creation form:
+ + Once created then the link for the group shows up in the list +group | type | how |
lasers | consumer | member of 13S-BIOL-750 (Very Advanced Biology) |
lasers | direct | |
very small things | direct | |
gargantuan things | ||
funky smells | direct | |
other things |
time | equipment |
2013/02/17 9:00PM-11:00PM | very small things: tweezers A, magnifier B |
time | equipment |
2012/11/22 3:00PM-8:00PM | very small things: tweezers B, magnifier C, lights A |
group | type | how |
lasers | ||
very small things | ||
gargantuan things | ||
funky smells | ||
other things |
user | time | equipment |
Violet Bovinea | 2013/02/17 9:00PM-11:00PM | lasers : nose cone A, tray B, computer A |
user | time | equipment |
Violet Bovinea | 2012/11/22 3:00PM-8:00PM | lasers : nose cone B, tray A, computer A |
group | type | how |
lasers | consumer | member of 13S-BIOL-750 (Very Advanced Biology) |
lasers | direct | |
very small things | direct | |
gargantuan things | ||
funky smells | direct | |
other things |
time | equipment |
2013/02/17 9:00PM-11:00PM | very small things: tweezers A, magnifier B |
time | equipment |
2012/11/22 3:00PM-8:00PM | very small things: tweezers B, magnifier C, lights A |
group | type | how |
lasers | ||
very small things | ||
gargantuan things | ||
funky smells | ||
other things |
user | time | equipment |
Violet Bovinea | 2013/02/17 9:00PM-11:00PM | lasers : nose cone A, tray B, computer A |
user | time | equipment |
Violet Bovinea | 2012/11/22 3:00PM-8:00PM | lasers : nose cone B, tray A, computer A |
if this is a management reservation (as opposed to a normal reservation made by someone who has manager role)
-on mouse over, or perhaps on click
-list of time blocks in this time block group, ordered from past to future; past ones grayed out, next upcoming bolded
-For the following times:on clicking the edit button
-if this is a management reservation (as opposed to a normal reservation made by someone who has manager role)
+on mouse over, or perhaps on click
+list of time blocks in this time block group, ordered from past to future; past ones grayed out, next upcoming bolded
+For the following times:on clicking the edit button
+