fully off of pure and now on bootstrap. still needs tweaking but overall in the same or better position than we were on pure...

This commit is contained in:
Josh North 2017-05-12 00:38:26 -04:00
parent 0084a916b8
commit fa6238997c
8 changed files with 37 additions and 84 deletions

View File

@ -1,26 +0,0 @@
The following license applies to some of the software included in this project.
==================================================
Font License
==================================================
Applies to all desktop and webfont files in the following directory: font-awesome/fonts/.
License: SIL OFL 1.1
URL: http://scripts.sil.org/OFL
Code License
==================================================
Applies to all CSS and LESS files in the following directories: font-awesome/css/, font-awesome/less/, and font-awesome/scss/.
License: MIT License
URL: http://opensource.org/licenses/mit-license.html
Documentation License
==================================================
Applies to all Font Awesome project files that are not a part of the Font or Code licenses.
License: CC BY 3.0
URL: http://creativecommons.org/licenses/by/3.0/
Brand Icons
==================================================
All brand icons are trademarks of their respective owners.
The use of these trademarks does not indicate endorsement of the trademark holder by Font Awesome, nor vice versa.
Brand icons should only be used to represent the company or product to which they refer.

View File

@ -1,19 +0,0 @@
The following license applies to some of the software included in this project.
==================================================
Software License Agreement (BSD License)
Copyright 2013 Yahoo! Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the Yahoo! Inc. nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,40 +1,34 @@
# YAPTC #
### About: ###
Josh North - josh.north@point808.com - 2015-02-09
This is a basic timekeeping application that is steadily getting more complex. It may or may not work for you but I'm pretty proud of it.
### Demo: ###
The demo username/password is admin/admin. It is fully functional with the exception of changing the admin password.
http://www.point808.com/timecard
Josh North - josh.north@point808.com
Basic (i.e. stupidly simple) timekeeping application. I'm working on more features but who knows if that will get released.
### License ###
Free for use and modification. Credit is appreciated if you do anything with it but nothing is required.
### Credits ###
* Pure (CSS styling, license included) - http://purecss.io/
* Bootstrap - http://getbootstrap.com
* phpass (password hashing, license included) - http://www.openwall.com/phpass/
* HUGE thank you to PHP Developers Network users "califdon", "Celauran", and "social_experiment" for their guide on login and registration systems at http://forums.devnetwork.net/viewtopic.php?f=28&t=135287&sid=f7140b48a14f50fd7f0340581442447b#p675168
### Status: ###
This script is (as of today, 2015-02-26) in *fully-working beta status*.
### Theory: ###
We track time in this application by punching start and end times on each record. Times are calculated using MySQL math functions in the queries. This allows us to be more flexible with granularity and time zones, etc etc. Everything else is mostly in line with standard PHP web apps.
### Requirements: ###
* PHP (I used PHP 5.5.9)
* PHP 7 working fine
* MySQL (I used MySQL 5.5.41)
* Web server (I used NGINX 1.4.6)
* Web server (tested on NGINX)
### Setup Assumptions: ###
* You have the above requirements met.
* You are somewhat familiar with editing PHP config files (I hope).
* I assume you have git installed - if not, rather than using the git-pull, download the zip from my git page.
* MAKE SURE YOUR SERVER CLOCK IS CORRECT!!! This system relies on the server time, not the client machine time.
### Setup Instructions: ###
1. Go to your webserver root as a user with write privileges (i.e. /usr/share/nginx/html)
1. Go to your webserver root as a user with write privileges (i.e. /var/www/html)
2. Decide what sub-directory you want the app in. I use "timecard" here.
3. Run the following `git clone https://github.com/joshnorth/yaptc.git timecard`
3. Download the zip release and unzip in the correct directory.
4. Change to the new directory and copy the config.inc.php.example file to config.inc.php
5. Edit the config.inc.php top section variables to suit your environment.
6. Use your MySQL management interface of choice to import the mysql.sql file to your database server. It will create a database named "yaptc". You also need to probably make a user with permissions on that database and that database alone to use in the config file so that this app does not have root mysql permissions!!! Note also - I had trouble importing with some tools. In the end, I used the mysql command line tool and just copied/pasted the text in.

View File

@ -65,6 +65,7 @@ function lang($phrase){
'QUICK_PUNCH_PARAGRAPH' => 'Click below to immediately punch your time. You may enter notes for your administrator to review.',
'ADVANCED_PUNCH_PARAGRAPH' => 'Click the punch button to immediately punch your time. You may also make changes to the defaults. Note that changing the punch time will result in a flag on the punch for your administrator to review.',
'YOU_HAVE_BEEN_PUNCHED' => 'You have been punched',
'REPORTS_DESC' => 'The drop-down below can be used to select pre-configured reports. Other reports are currently being written.',
'QUICK_PUNCH' => 'Quick Punch',
'SOFTWARE_VERSION' => 'Software Version',
'ADVANCED_PUNCH' => 'Advanced Punch'

View File

@ -67,14 +67,16 @@ $page_count = 0;
if (0 === $row_count): else: $page_count = (int)ceil($row_count / $yaptc_rowsperpage); if($page_num > $page_count): $page_num = 1; endif; endif;
?>
<div class="container">
<div class="page-header">
<h2><i class="glyphicon glyphicon-pencil"></i> <?php echo lang('EDIT_PUNCH_HEADER'); ?></h2>
</div>
<p class="lead"><?php echo lang('EDIT_PUNCH_DESC'); ?></p>
<h2 class="content-subhead"><i class="fa fa-pencil"></i> <?php echo lang('EDIT_PUNCH_HEADER'); ?></h2>
<p><?php echo lang('EDIT_PUNCH_DESC'); ?></p>
<form method="post" onsubmit="return confirm('<?php echo lang('SAVE_PUNCH_WARNING'); ?>')">
<table class="pure-table pure-table-striped">
<thead>
<tr><th colspan="6"><?php echo lang('PAGE') . ": "; for ($i = 1; $i <= $page_count; $i++): if ($i === $page_num): echo $i . ' '; else: echo '<a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a> '; endif; endfor; ?></th></tr>
<tr><th colspan="6"><?php echo '<ul class="pagination pagination-sm">'; for ($i = 1; $i <= $page_count; $i++): echo '<li class="'; if ($i === $page_num): echo 'active'; else: echo ' '; endif; echo '"><a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a></li>'; endfor; echo '</ul>'; ?></th></tr>
<tr><th><?php echo lang('IN') . "/" . lang('OUT'); ?></th><th><?php echo lang('NAME'); ?></th><th><?php echo lang('HOURS'); ?></th><th><?php echo lang('FLAG'); ?></th><th><?php echo lang('NOTES'); ?></th><th><?php echo lang('ACTIONS'); ?></th></tr>
</thead>
<tbody>
@ -86,6 +88,6 @@ if (0 === $row_count): else: $page_count = (int)ceil($row_count / $yaptc_rowsper
</tbody>
</table>
</form>
</div>
<!-- ********** END CONTENT ********** -->
<?php endif; require_once($yaptc_inc . "footer.inc.php"); ?>

View File

@ -92,7 +92,7 @@ if (0 === $row_count): else: $page_count = (int)ceil($row_count / $yaptc_rowsper
<table class="table table-striped">
<thead>
<tr><th colspan="4"><?php echo lang('PAGE') . ": "; for ($i = 1; $i <= $page_count; $i++): if ($i === $page_num): echo $i . ' '; else: echo '<a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a> '; endif; endfor; ?></th></tr>
<tr><th colspan="4"><?php echo '<ul class="pagination pagination-sm">'; for ($i = 1; $i <= $page_count; $i++): echo '<li class="'; if ($i === $page_num): echo 'active'; else: echo ' '; endif; echo '"><a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a></li>'; endfor; echo '</ul>'; ?></th></tr>
<tr><th><?php echo lang('IN') . " / " . lang('OUT'); ?></th><th><?php echo lang('HOURS'); ?></th><th><?php echo lang('FLAG'); ?></th><th><?php echo lang('NOTES'); ?></th></tr>
</thead>
<tbody>

View File

@ -11,13 +11,18 @@ else: ?>
<!-- ********** BEGIN CONTENT ********** -->
<?php if ($session_user["0"]["usertype"] == "Administrator"): ?>
<h2 class="content-subhead"><i class="fa fa-history"></i> Historical Reports</h2>
<p>The drop-down below can be used to select pre-configured reports. Other reports are currently being written.</p>
<form class="pure-form pure-form-stacked" action="reports.php" method="post">
<div class="container">
<div class="page-header">
<h2><i class="glyphicon glyphicon-calendar"></i> <?php echo lang('REPORTS'); ?></h2>
</div>
<p class="lead"><?php echo lang('REPORTS_DESC'); ?></p>
<form action="reports.php" method="post">
<fieldset>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-2">
<select name="reporttype" class="pure-input-1-2">
<div class="form-group row">
<div class="col-sm-6">
<select name="reporttype" class="form-control">
<?php if (isset($_POST['reporttype'])): ?>
<option value="<?php echo $_POST['reporttype']; ?>" placeholder="Report Type"><?php echo $_POST['reporttype']; ?></option>
<option>----------</option>
@ -29,8 +34,8 @@ else: ?>
<option value="All Punches">All Punches</option>
</select>
</div>
<div class="pure-u-1 pure-u-md-1-2">
<button type="submit" class="pure-button button-success pure-input-1-2"><i class="fa fa-play-circle"></i></button>
<div class="col-sm-6">
<button type="submit" class="form-control btn btn-block btn-primary"><i class="glyphicon glyphicon-play"></i> Run Report</button>
</div>
</div>
</fieldset>
@ -38,21 +43,21 @@ else: ?>
<?php if (isset($_POST['reporttype'])): ?>
<?php if ($_POST['reporttype'] == "Hours per week per user"): ?><table class="pure-table pure-table-striped">
<?php if ($_POST['reporttype'] == "Hours per week per user"): ?><table class="table table-striped">
<thead><tr><th>Year</th><th>Week#</th><th>Name</th><th>Hours</th></tr></thead>
<tbody><?php foreach (reportWeeklyByUser($yaptc_db) as $row): ?>
<tr><td><?php echo $row['g_year']; ?></td><td><?php echo $row['g_week']; ?></td><td><?php echo $row['lastname'] . ", " . $row['firstname']; ?></td><td><?php echo $row['punchhours']; ?></td></tr><?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
<?php if ($_POST['reporttype'] == "Hours per month per user"): ?><table class="pure-table pure-table-striped">
<?php if ($_POST['reporttype'] == "Hours per month per user"): ?><table class="table table-striped">
<thead><tr><th>Year</th><th>Month</th><th>Name</th><th>Hours</th></tr></thead>
<tbody><?php foreach (reportMonthlyByUser($yaptc_db) as $row): ?>
<tr><td><?php echo $row['g_year']; ?></td><td><?php echo $row['g_month']; ?></td><td><?php echo $row['lastname'] . ", " . $row['firstname']; ?></td><td><?php echo $row['punchhours']; ?></td></tr><?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
<?php if ($_POST['reporttype'] == "All Punches"): ?><table class="pure-table pure-table-striped">
<?php if ($_POST['reporttype'] == "All Punches"): ?><table class="table table-striped">
<thead><tr><th>In</th><th>Out</th><th>Name</th><th>Hours</th><th>Flagged</th><th>Notes</th></tr></thead>
<tbody><?php foreach (listPunches($yaptc_db, "%") as $row): ?>
<tr><td><?php echo $row['intime']; ?></td><td><?php echo $row['outtime']; ?></td><td><?php echo $row['lastname'] . ", " . $row['firstname']; ?></td><td><?php echo $row['punchhours']; ?></td><td><?php echo $row['modified']; ?></td><td><?php echo $row['notes']; ?></td></tr><?php endforeach; ?>
@ -62,6 +67,7 @@ else: ?>
<?php else: ?>
<p>No query to display. Please select from the dropdown above...</p>
<?php endif; ?>
</div>
<?php else: ?>
<h2 class="content-subhead">NOT AUTHORIZED!</h2>
<?php endif; ?>

View File

@ -178,17 +178,11 @@ if (0 === $row_count): else: $page_count = (int)ceil($row_count / $yaptc_rowsper
<h2><i class="fa fa-list"></i> <?php echo lang('USERS'); ?></h2>
</div>
<p class="lead"><?php echo lang('USER_LIST_DESC'); ?></p>
</div>
<table class="pure-table pure-table-striped">
<table class="table table-striped">
<thead>
<tr><th colspan="6"><?php echo lang('PAGE') . ": "; for ($i = 1; $i <= $page_count; $i++): if ($i === $page_num): echo $i . ' '; else: echo '<a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a> '; endif; endfor; ?></th></tr>
<tr><th colspan="6"><?php echo '<ul class="pagination pagination-sm">'; for ($i = 1; $i <= $page_count; $i++): echo '<li class="'; if ($i === $page_num): echo 'active'; else: echo ' '; endif; echo '"><a href="' . $_SERVER['PHP_SELF'] . '?pnum=' . $i . '">' . $i . '</a></li>'; endfor; echo '</ul>'; ?></th></tr>
<tr><th><?php echo lang('NAME'); ?></th><th><?php echo lang('USERNAME'); ?></th><th><?php echo lang('EMAIL'); ?></th><th><?php echo lang('CREATED'); ?></th><th><?php echo lang('USERTYPE'); ?></th><th><?php echo lang('ACTIONS'); ?></th></tr>
</thead>
<tbody>
@ -199,6 +193,7 @@ if (0 === $row_count): else: $page_count = (int)ceil($row_count / $yaptc_rowsper
<?php endforeach; ?>
</tbody>
</table>
</div>
<!-- ********** END CONTENT ********** -->
<?php endif; require_once($yaptc_inc . "footer.inc.php"); ?>