first commit

This commit is contained in:
LAPTOP-V9RRD1TL\Michelle's Computer
2025-07-21 21:38:17 +08:00
commit f8f8fcaf96
2529 changed files with 227800 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -0,0 +1,662 @@
<?php
include 'connect/cms-config.php' ;
include 'requires/function.php' ;
include 'requires/session.php' ;
// check permission
if ( !permissionCheck($row_user, 'attendance-list-view') ){
header('Location: index.php') ;
exit ;
}
// keep parameter in value
$edit = escapeString($_GET['edit']) ;
$page = escapeString($_GET['page']) ;
$page_mode = escapeString($_GET['page_mode']) ;
$type = escapeString($_GET['type']) ;
// get all branch
$branch = [] ;
$get_branch = $mysqli->query("SELECT * FROM branch
WHERE deleted_at IS NULL".$user_branch_permission_sql) ;
if ( $get_branch->num_rows > 0 ){
while ( $row_branch = $get_branch->fetch_assoc() ){
$branch[$row_branch['branch_id']] = $row_branch['branch_name'] ;
}
}
include 'HR/hr-attendance-format-2-update.php' ;
include 'HR/hr-attendance-format-2-data.php' ;
$boolean_role = false ;
$boolean_edit = false ;
if ( permissionCheck($row_user,"attendance-list-edit") ){
$boolean_role = true ;
if ( $edit == 'yes' ){
$boolean_edit = true ;
}
}
// active page
$active_main_menu = 'hr' ;
$active_sub_menu = 'hr-attendance' ;
$active_menu = 'hr-attendance-list' ;
// start header here
include 'requires/page_header.php' ;
include 'requires/page_top.php' ;
// reset sort by type
$sort_by_type = ( $sort_by_type == 'DESC' ? 'ASC' : 'DESC' ) ;
// get all attendance list
$array_list = [] ;
$get_attendaces = $mysqli->query("SELECT list_id, list_work_day, list_ot_day, list_late, list_early_out, list_time_off, list_type_remark, staff_id, list_date, list_attendance_remark FROM staff_attendance_list
WHERE deleted_at IS NULL AND list_date LIKE '".$date_time."%'") ;
if ( $get_attendaces->num_rows > 0 ){
while ( $row_list = $get_attendaces->fetch_assoc() ){
$array_list[$row_list['staff_id']][$row_list['list_date']] = $row_list ;
}
}
// get all requires
$tier_list = [] ;
$mysqli_tier = $mysqli->query("SELECT a.tier_id, b.title FROM profile_tier a
LEFT JOIN profile_tier_translation b ON ( a.tier_id = b.tier_id )
WHERE a.deleted_at IS NULL AND b.lang = 'en' ORDER BY a.sortable ASC") ;
if ( $mysqli_tier->num_rows > 0 ){
while ( $row_tier = $mysqli_tier->fetch_assoc() ){
$tier_list[] = $row_tier ;
}
}
?>
<style>
.check_in_out_warning{
background:#f7a6a6;
}
.select_datepicker{
text-align: center;
}
.datepicker_box{
display: inline-block;
}
.datepicker_submit{
border: 0;
padding: 7px;
}
</style>
<!-- Header Ends -->
<div class="warper container-fluid">
<div class="page-header">
<h1><?= $lang['attendance']?> <small><?= $lang['list']?></small></h1>
<div class="clearfix">
<div style="float: right;">
<?php if ( permissionCheck($row_user, 'attendance-attendance-reprocessing') ){ ?>
[ <a href="hr-attendance.php?page_mode=reprocessing" target="_blank"><?= $lang['Reprocessing'] ?></a> ]
<br />
<?php } ?>
[ <a href="<?= ( PATHEXPORT != 'PATHEXPORT' ? PATHEXPORT : '' ) ?>hr-attendance-format-2.php?<?= $search_url ?>&export=yes" target="_blank"><?= $lang['export_as']?> Excel</a> ]
</div>
</div>
</div>
<?php
if ( $boolean_role ){
if ( $edit == 'yes' ){
echo '<a href="?'.$search_url.'&edit=" class="btn btn-purple" style="margin-bottom:10px;">'.$lang['Normal Mode'].'</a>' ;
}else{
echo '<a href="?'.$search_url.'&edit=yes" class="btn btn-purple" style="margin-bottom:10px;">'.$lang['Edit Mode'].'</a>' ;
}
}
?>
<?php
if ($_SESSION['system_result'] != ''){
echo $_SESSION['system_result'] ;
unset($_SESSION['system_result']) ;
}
?>
<div class="panel panel-default" id="basic-table-title">
<div class="panel-heading"></div>
<div class="panel-body">
<form method="get" class="form-horizontal" style="max-width:600px;">
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Name']?></label>
<div class="col-sm-9">
<input type="text" name="search_name" value="<?= $search_name ?>" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['ID No']?></label>
<div class="col-sm-9">
<input type="text" name="search_idno" value="<?= $search_idno ?>" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Mobile'] ?></label>
<div class="col-sm-9">
<input type="text" name="search_mobile" value="<?= $search_mobile ?>" class="form-control" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['email'] ?></label>
<div class="col-sm-9">
<input type="text" name="search_mail" value="<?= $search_mail ?>" class="form-control" />
</div>
</div>
<div class="form-group" style="display: none;">
<label class="col-sm-2 control-label"><?= $lang['Tier'] ?></label>
<div class="col-sm-9">
<select name="search_tier" class="form-control">
<option value=""><?= $lang['All'] ?></option>
<?php foreach( $tier_list as $k => $v ){ ?>
<option value="<?= $v['tier_id'] ?>" <?= ( $search_tier == $v['tier_id'] ? 'selected' : '' ) ?> ><?= $v['title'] ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="form-group" style="display: none;">
<label class="col-sm-2 control-label"><?= $lang['Department']?></label>
<div class="col-sm-9">
<select name="search_department[]" class="chosen-select select2-basic-single form-control" multiple >
<?php
// department check list
$department = [] ;
$get_department = $mysqli->query("SELECT a.department_id, b.department_desc FROM setting_department a
LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id )
WHERE a.deleted_at IS NULL AND b.lang = 'en'") ;
if ( $get_department->num_rows > 0 ){
while ( $row_department = $get_department->fetch_assoc() ){
$department[$row_department['department_id']] = $row_department['department_desc'] ;
}
}
foreach ( $department as $kk => $vv ){
$selected = '';
if(arrayCheck($_GET['search_department'])){
if(in_array("$kk", $_GET['search_department'], TRUE)){
$selected = 'selected';
}
}
echo '<option value="'.$kk.'" '.$selected.'>'.$vv.'</option>' ;
}
?>
</select>
</div>
</div>
<div class="form-group" style="display: none;">
<label class="col-sm-2 control-label"><?= $lang['L_F']?></label>
<div class="col-sm-9">
<select name="search_country" class="form-control">
<option value=""><?= $lang['All']?></option>
<option value="local" <?= $search_country == 'local' ? 'selected' : '' ?> ><?= $lang['Local']?></option>
<option value="foreigner" <?= $search_country == 'foreigner' ? 'selected' : '' ?> ><?= $lang['Foreigner']?></option>
</select>
</div>
</div>
<div class="form-group" style="display: none;">
<label class="col-sm-2 control-label"><?= $lang['branch']?></label>
<div class="col-sm-9">
<select name="search_branch" class="form-control">
<option value=""><?= $lang['All']?></option>
<?php
foreach ( $branch as $kk => $vv ){
echo '<option value="'.$kk.'" '.( $search_branch == $kk ? 'selected' : '' ).' >'.$vv.'</option>' ;
}
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Day From'] ?></label>
<div class="col-sm-9">
<select class="form-control" name="search_day_from">
<option value="">Select</option>
<?php
for ($i=1; $i < date("t", strtotime($date_time)) ; $i++) {
echo ' <option value="'.$i.'" '.($search_day_from == $i ? "selected" : '').'>'.$i.'</option>';
}
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Day To'] ?></label>
<div class="col-sm-9">
<select class="form-control" name="search_day_to">
<option value="">Select</option>
<?php
for ($i=1; $i < date("t", strtotime($date_time)) ; $i++) {
echo ' <option value="'.$i.'" '.($search_day_to == $i ? "selected" : '').'>'.$i.'</option>';
}
?>
</select>
</div>
</div>
<!-- <div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Date Resigned'] ?></label>
<div class="col-sm-9">
<input class="form-control" name="search_resigned" type="date" value="<?= ($search_resigned!= '' ? $search_resigned : date('Y-m-d',time()) ) ?>" placeholder="Date Resigned">
</div>
</div> -->
<div class="form-group">
<label class="col-sm-2 control-label"><?= $lang['Resign List'] ?></label>
<div class="col-sm-9">
<input name="search_resigned" type="checkbox" value="1" <?= ($search_resigned!= '' ? "checked" : "") ?> placeholder="Resign List">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">View Type</label>
<div class="col-sm-9">
<select name="export" class="form-control">
<option value="">Search</option>
<option value="yes">View as Excel </option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-11">
<input type="hidden" name="page_mode" value="<?= $page_mode ?>" />
<input type="hidden" name="edit" value="<?= $edit ?>" />
<input type="hidden" name="date_time" value="<?= $date_time ?>" />
<input type="hidden" name="sort_by" value="<?= $sort_by ?>" />
<input type="hidden" name="sort_by_type" value="<?= $sort_by_type ?>" />
<button type="submit" class="btn btn-purple" style="float:right"><?= $lang['submit']?></button>
</div>
</div>
</form>
</div>
</div>
<div class="panel panel-default" id="basic-table-title">
<div class="panel-heading"></div>
<div class="panel-body">
<div class="form-group">
<div class="col-sm-12">
<div class="box-tools col-sm-12 col-md-12 col-lg-12" style="text-align: center; margin: 20px;">
<a href="?<?= $search_url ?>&page=1&date_time=<?= date('Y-m', strtotime($date_time.' -1 month')) ?>" class="width_auto"><?= $lang['Prev Month']?></a>
<div class="datepicker_box">
<span style="margin-left:10px; margin-right:10px;">
<input type="text" readonly name="date_time" class="select_datepicker" value="<?= $date_time ?>">
</span>
</div>
<?php
if ( $date_time >= date('Y-m', strtotime(TODAYDAY)) ){}else{
?>
<a href="?<?= $search_url ?>&page=1&date_time=<?= date('Y-m', strtotime($date_time.' +1 month')) ?>" class="width_auto"><?= $lang['Next Month']?></a>
<?php
}
?>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<table class="ui-table table table-striped jambo_table bulk_action table-bordered stripe row-border order-column" id="basic-datatable-column">
<thead>
<tr class="headings">
<th class="column-title text-center" width="8%">
<div class="custom_dropdown_title">
<div class="dataTable_width_image"><?= $lang['Image']?></div>
</div>
</th>
<th class="column-title text-center" width="8%">
<div class="custom_dropdown_title">
<div class="dataTable_width_id">
<a href="?<?= $search_url ?>&sort_by=staff_idno&sort_by_type=<?= ($sort_by == 'staff_idno' ? $sort_by_type : 'ASC') ?>">
ID<?= ( $sort_by == 'staff_idno' ? '<i class="fa fa-sort-alpha-'.( $sort_by_type == 'DESC' ? 'asc' : 'desc' ).'"></i>' : '' ) ?>
</a>
</div>
</div>
</th>
<th class="custom_dropdown_th" >
<div class="custom_dropdown_title">
<a href="?<?= $search_url ?>&sort_by=staff_name&sort_by_type=<?= ($sort_by == 'staff_name' ? $sort_by_type : 'ASC') ?>">
<?= $lang['Name']?><?= ( $sort_by == 'staff_name' ? '<i class="fa fa-sort-alpha-'.( $sort_by_type == 'DESC' ? 'desc' : 'asc' ).'"></i>' : '' ) ?>
</a>
</div>
</th>
<th>
<div class="custom_dropdown_title">
<a href="?<?= $search_url ?>&sort_by=department_desc&sort_by_type=<?= ($sort_by == 'department_desc' ? $sort_by_type : 'ASC') ?>">
<?= $lang['Department']?><?= ( $sort_by == 'department_desc' ? '<i class="fa fa-sort-alpha-'.( $sort_by_type == 'DESC' ? 'desc' : 'asc' ).'"></i>' : '' ) ?>
</a>
</div>
</th>
<th>
<div class="custom_dropdown_title">
<a href="?<?= $search_url ?>&sort_by=job_position_id&sort_by_type=<?= ($sort_by == 'job_position_id' ? $sort_by_type : 'ASC') ?>">
<?= $lang['Designation']?><?= ( $sort_by == 'job_position_id' ? '<i class="fa fa-sort-alpha-'.( $sort_by_type == 'DESC' ? 'desc' : 'asc' ).'"></i>' : '' ) ?>
</a>
</div>
</th>
<?php
for ( $a = $start_day ; $a <= $day_of_month ; $a++ ){
echo '<th class="column-title text-center"><div class="dataTable_width" style="margin: auto;">'.$a.'</div></th>' ;
}
?>
</tr>
</thead>
<tbody>
<?php
if ( count($attendances) > 0 ){
foreach ( $attendances as $k_staff => $v_staff ){
$date_group = $v_staff['group'] ;
$staff_id = $v_staff['staff_id'] ;
$staff_idno = ucwords($v_staff['staff_idno']) ;
$staff_tier = $v_staff['staff_tier'] ;
$departments = explode( ',', $v_staff['staff_department'] ) ;
$check_permission = false ;
if ( $get_user_tier['check'] ){
if ( in_array( $staff_tier, $get_user_tier['tiers'] ) ){
$check_permission = true ;
}
}else{
$check_permission = true ;
}
echo '
<tr staff_id="'.$v_staff['staff_id'].'">
<td class="text-center">
<div class="dataTable_width_image"><image src="'.$v_staff['staff_image'].'" /></div>
</td>
<td class="text-center" title="'.$v_staff['staff_idno'].'">
<div class="dataTable_width_id">'.$staff_idno.' </div>
</td>
<td class="text-center">
<div class="dataTable_width_name"><a href="hr-attendance.php?page_mode=reprocessing-list&date_time='.$date_time.'&staff_id='.$v_staff['staff_id'].'" target="_blank">'.ucwords($v_staff['staff_name']).'</div>
</td>
<td>'.implode( '<br />', $departments ).'</td>
<td class="text-center">'.ucwords($v_staff['staff_positionname']).'</td>' ;
for ( $a = $start_day ; $a <= $day_of_month ; $a++ ){
$new_day = $date_time.'-'.str_pad($a, 2, '0', STR_PAD_LEFT) ;
$list_date = $new_day ;
$row_report = $array_list[$v_staff['staff_id']][$list_date] ;
$report_day = 0 ;
$report_min = '00:00:00' ;
$report_ot = 0 ;
$report_wt = '' ;
$report_remark = '' ;
$report_health = ( $array_health[$staff_id][$list_date] != '' ? $array_health[$staff_id][$list_date] : '' ) ;
if ( $row_report != undefined && arrayCheck($row_report) ){
$report_day = ( $row_report['list_work_day'] != '00:00:00' ? $row_report['list_work_day'] : 0 ) ;
$report_ot = ( $row_report['list_ot_day'] != '00:00:00' ? $row_report['list_ot_day'] : 0 ) ;
$list_late = ( $row_report['list_late'] != '00:00:00' ? $row_report['list_late'] : 0 ) ;
$list_early_out = ( $row_report['list_early_out'] != '00:00:00' ? $row_report['list_early_out'] : 0 ) ;
if ( $row_report['list_late'] != '00:00:00' ){
$report_min = commonAddTime($row_report['list_late'], '00:00:01') ;
}
if ( $row_report['list_early_out'] != '00:00:00' ){
$report_min = commonAddTime($row_report['list_early_out'], $report_min) ;
}
if ( $row_report['list_time_off'] != '00:00:00' && $row_report['list_time_off'] != '' ){
$report_min = commonAddTime($row_report['list_time_off'], $report_min) ;
}
// $report_min = ( $row_report['list_late'] != '00:00:00' ? $row_report['list_late'] : '00:00' ) ;
$report_wt = ( $row_report['list_type_remark'] != '' ? $row_report['list_type_remark'] : '' ) ;
$report_remark = ( $row_report['list_attendance_remark'] != '' ? $row_report['list_attendance_remark'] : '' ) ;
}
$report_min = substr($report_min, 0, -3) ;
$array_group = [] ;
if ( !empty($date_group[$new_day]) ){
$get_group = $date_group[$new_day] ;
foreach ( $get_group as $k_group => $v_group ){
$coordinates = '' ;
if ( $v_group['latitude'] != '' && $v_group['longitude'] != '' ){
$coordinates = '<a target="_blank" href="https://maps.google.com/?q='.$v_group['latitude'].','.$v_group['longitude'].'" style="margin-left:5px;"><i class="fa fa-location-arrow"></i></a>' ;
}
$array_group[] = ( $v_group['created_at'] != $v_group['updated_at'] ? '<span>*</span>' : '' ) . '<span '.( $v_group['abnormal'] == 'yes' ? 'class="red"' : '' ).' title="'.ucwords($v_group['record_from']).( $v_group['code'] != '' ? ' : ' . $v_group['code'] : '' ).'" >'.date('H:i:s', strtotime($v_group['created_at'])).'</span>' . $coordinates ;
}
}
echo '
<td class="text-center">
<div class="dataTable_width2">
<table>
<tr>
<td>
<div class="dataTable_width_time">' ;
if ( $boolean_edit && $new_day <= TODAYDAY ){
if ( $check_permission ){
echo '<a data-toggle="tooltip" title="Edit" data-staffid="'.$staff_id.'" data-check_group="'.$new_day.'" class="allinfodata attendance_format2_edit"><i class="fa fa-edit"></i></a><br />' ;
}
}
echo implode('<br />', $array_group) ;
if(arrayCheck($array_group)){
}else{
echo '--:--:--:--';
}
echo '
</div>
</td>';
if (EXCELDETAIL == "YES"){
echo '
<td style="border-left: 1px solid #ddd; vertical-align: top;">
';
if ( $boolean_edit && $new_day <= TODAYDAY ){
$list_id = $row_report['list_id'] ;
echo '
<form method="post" class="dataTable_form_edit">
<div class="dataTable_form_edit_title">Work Day : </div>
<input type="text" name="list_work_day" class="list_work_day" value="'.$report_day.'" /><br />
<div class="dataTable_form_edit_title">OT Day : </div>
<input type="text" name="list_ot_day" class="list_ot_day" value="'.$report_ot.'" /><br />
<div class="dataTable_form_edit_title">Min : </div>
<input type="text" name="list_min" class="list_min" value="'.$report_min.'" /><br />
<div class="dataTable_form_edit_title">Working Type : </div>
<select name="list_wt" class="list_wt">
<option value="">-- CHOOSE --</option>
<option value="WD" '.($report_wt == 'WD' ? 'selected' : '').'>WORK DAY</option>
<option value="AL" '.($report_wt == 'AL' ? 'selected' : '').'>ANNUAL LEAVE</option>
<option value="UL" '.($report_wt == 'UL' ? 'selected' : '').'>UNPAID LEAVE</option>
<option value="MC" '.($report_wt == 'MC' ? 'selected' : '').'>SICK LEAVE</option>
<option value="AS" '.($report_wt == 'AS' ? 'selected' : '').'>ABSENT</option>
<option value="HL" '.($report_wt == 'HL' ? 'selected' : '').'>HOLIDAY LIST</option>
<option value="OD" '.($report_wt == 'OD' ? 'selected' : '').'>OFF DAY</option>
<option value="CL" '.($report_wt == 'CL' ? 'selected' : '').'>COMPANY LEAVE</option>
<option value="SP" '.($report_wt == 'SP' ? 'selected' : '').'>SUSPEND LEAVE</option>
</select><br />
<div class="dataTable_form_edit_title">Remark : </div>
<input type="text" class="list_remark" value="'.$report_remark.'" /><br />
<input type="hidden" name="list_id" class="list_id" value="'.$list_id.'" />
'.( $list_id != '' ? '<button type="submit"><i class="fa fa-pencil"></i></button>' : '' ).'
</form>
'.( arrayCheck($array_group) ? '
<form method="post" class="dataTable_form_edit_health">
<div class="dataTable_form_edit_title">Health : </div>
<input type="text" class="list_health" class="list_health" value="'.$report_health.'" />
<input type="hidden" name="list_staff_id" class="list_staff_id" value="'.$staff_id.'" />
<input type="hidden" name="list_date" class="list_date" value="'.$list_date.'" />
<button type="submit"><i class="fa fa-pencil"></i></button>
</form>' : '' ) ;
}else{
echo '
<div>
W : '.$report_day.'<br />
O : '.( $report_ot != 0 ? $report_ot : '-' ).'<br />
Min : '.( $report_min != '00:00' ? numberFormat(convertMinutes($report_min)) : '-' ).'<br />'.'
WT : ';
switch ($report_wt) {
case 'WD': echo 'WORK DAY'; break;
case 'AL': echo 'ANNUAL LEAVE'; break;
case 'UL': echo 'UNPAID LEAVE'; break;
case 'MC': echo 'SICK LEAVE'; break;
case 'AS': echo 'ABSENT'; break;
case 'HL': echo 'HOLIDAY LIST'; break;
case 'OD': echo 'OFF DAY'; break;
case 'CL': echo 'COMPANY LEAVE'; break;
case 'SP': echo 'SUSPEND LEAVE'; break;
}
echo '<br/>
RK : '.( $report_remark != '' ? $report_remark : '-' ).'<br />
HL : '.$report_health.'
</div>' ;
}
echo '
</td>';
}
echo '
</tr>
</table>
</div>
</td>' ;
}
echo '
</tr>' ;
}
}
?>
</tbody>
</table>
<?= $page_pagination['page_pagination'] ?>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$('.allinfodata').live('click', function(){
$('.modaldata').val('');
$('.modal2title').empty();
$('.modal2title').append('Update');
var staffid = $(this).data('staffid');
var check_group = $(this).data('check_group');
$('#modal_staff_id').val(staffid);
$('#modal_check_group').val(check_group);
// if ( confirm('Confirm update attendance?') ) {
$.ajax({
url : 'hr-attendance.php?page_mode=admend-format-2&staff_id='+staffid+'&check_group='+check_group,
type: 'get',
dataType: 'json',
success:function(data) {
if ( data['result'] == 'success' ){
var content = '' ;
// loop all date time
$.each( data['data'], function(k, v) {
content += '<div class="form-group clearfix">' ;
content += '<label class="control-label col-md-2 col-sm-2 col-xs-12">Time ( '+(k+1)+' )</label>' ;
content += '<div class="col-md-10 col-sm-10 col-xs-12">' ;
content += '<div class="form-group">' ;
content += '<div class="col-md-4 col-sm-4 col-xs-4">' ;
content += '<input type="hidden" class="form-control modaldata" name="attendance_id_'+k+'" value="'+v['id']+'" placeholder="<?= $lang['attendance'] ?> ID">' ;
content += '<input type="hidden" class="form-control modaldata" name="attendance_date_'+k+'" value="'+v['date']+'" placeholder="<?= $lang['date'] ?>">' ;
content += '<input type="time" class="form-control modaldata" name="attendance_time_'+k+'" value="'+v['time']+'" placeholder="<?= $lang['Time'] ?>">' ;
content += '</div>' ;
content += '<div class="col-md-8 col-sm-8 col-xs-8">' ;
content += '<input type="text" class="form-control modaldata" style="padding: 8px; font-size: 13px;" name="attendance_remark_'+k+'" value="'+v['remark']+'" placeholder="<?= $lang['remark'] ?>">' ;
content += '</div>' ;
content += '</div>' ;
content += '</div>' ;
content += '</div>' ;
}) ;
// show_all_datetime
$(".show_all_datetime").html( content ) ;
}else{
alert("Failed to get attendance") ;
location.reload() ;
}
}
});
$('#modal-2').modal('show');
// }
});
</script>
<div class="modal modal-default fade" id="modal-2">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title modal2title"></h4>
</div>
<form method="post" action="?<?= $search_url ?>">
<input type="hidden" name="modal_staff_id" id="modal_staff_id" class="modaldata" />
<input type="hidden" name="modal_check_group" id="modal_check_group" class="modaldata" />
<div class="modal-body">
<div class="show_all_datetime clearfix"></div>
</div>
<div class="modal-footer">
<div class="form-group clearfix">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<div class="col-md-12 col-sm-12 col-xs-12">
<button type="submit" class="btn btn-purple addbtn2"><i class="fa fa-check-circle"></i> <?= $lang['Save']?></button>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<?php
// footer
include 'requires/page_footer.php' ;
?>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+327
View File
@@ -0,0 +1,327 @@
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib
Usage: convert [options ...] file [ [options ...] file ...] [options ...] file
Image Settings:
-adjoin join images into a single multi-image file
-affine matrix affine transform matrix
-alpha option activate, deactivate, reset, or set the alpha channel
-antialias remove pixel-aliasing
-authenticate password
decipher image with this password
-attenuate value lessen (or intensify) when adding noise to an image
-background color background color
-bias value add bias when convolving an image
-black-point-compensation
use black point compensation
-blue-primary point chromaticity blue primary point
-bordercolor color border color
-caption string assign a caption to an image
-channel type apply option to select image channels
-clip-mask filename associate a clip mask with the image
-colors value preferred number of colors in the image
-colorspace type alternate image colorspace
-comment string annotate image with comment
-compose operator set image composite operator
-compress type type of pixel compression when writing the image
-define format:option
define one or more image format options
-delay value display the next image after pausing
-density geometry horizontal and vertical density of the image
-depth value image depth
-direction type render text right-to-left or left-to-right
-display server get image or font from this X server
-dispose method layer disposal method
-dither method apply error diffusion to image
-encoding type text encoding type
-endian type endianness (MSB or LSB) of the image
-family name render text with this font family
-fill color color to use when filling a graphic primitive
-filter type use this filter when resizing an image
-font name render text with this font
-format "string" output formatted image characteristics
-fuzz distance colors within this distance are considered equal
-gravity type horizontal and vertical text placement
-green-primary point chromaticity green primary point
-intensity method method to generate intensity value from pixel
-intent type type of rendering intent when managing the image color
-interlace type type of image interlacing scheme
-interline-spacing value
set the space between two text lines
-interpolate method pixel color interpolation method
-interword-spacing value
set the space between two words
-kerning value set the space between two letters
-label string assign a label to an image
-limit type value pixel cache resource limit
-loop iterations add Netscape loop extension to your GIF animation
-mask filename associate a mask with the image
-matte store matte channel if the image has one
-mattecolor color frame color
-moments report image moments
-monitor monitor progress
-orient type image orientation
-page geometry size and location of an image canvas (setting)
-ping efficiently determine image attributes
-pointsize value font point size
-precision value maximum number of significant digits to print
-preview type image preview type
-quality value JPEG/MIFF/PNG compression level
-quiet suppress all warning messages
-red-primary point chromaticity red primary point
-regard-warnings pay attention to warning messages
-remap filename transform image colors to match this set of colors
-respect-parentheses settings remain in effect until parenthesis boundary
-sampling-factor geometry
horizontal and vertical sampling factor
-scene value image scene number
-seed value seed a new sequence of pseudo-random numbers
-size geometry width and height of image
-stretch type render text with this font stretch
-stroke color graphic primitive stroke color
-strokewidth value graphic primitive stroke width
-style type render text with this font style
-support factor resize support: > 1.0 is blurry, < 1.0 is sharp
-synchronize synchronize image to storage device
-taint declare the image as modified
-texture filename name of texture to tile onto the image background
-tile-offset geometry
tile offset
-treedepth value color tree depth
-transparent-color color
transparent color
-undercolor color annotation bounding box color
-units type the units of image resolution
-verbose print detailed information about the image
-view FlashPix viewing transforms
-virtual-pixel method
virtual pixel access method
-weight type render text with this font weight
-white-point point chromaticity white point
Image Operators:
-adaptive-blur geometry
adaptively blur pixels; decrease effect near edges
-adaptive-resize geometry
adaptively resize image using 'mesh' interpolation
-adaptive-sharpen geometry
adaptively sharpen pixels; increase effect near edges
-alpha option on, activate, off, deactivate, set, opaque, copy
transparent, extract, background, or shape
-annotate geometry text
annotate the image with text
-auto-gamma automagically adjust gamma level of image
-auto-level automagically adjust color levels of image
-auto-orient automagically orient (rotate) image
-bench iterations measure performance
-black-threshold value
force all pixels below the threshold into black
-blue-shift factor simulate a scene at nighttime in the moonlight
-blur geometry reduce image noise and reduce detail levels
-border geometry surround image with a border of color
-bordercolor color border color
-brightness-contrast geometry
improve brightness / contrast of the image
-canny geometry detect edges in the image
-cdl filename color correct with a color decision list
-charcoal radius simulate a charcoal drawing
-chop geometry remove pixels from the image interior
-clamp keep pixel values in range (0-QuantumRange)
-clip clip along the first path from the 8BIM profile
-clip-path id clip along a named path from the 8BIM profile
-colorize value colorize the image with the fill color
-color-matrix matrix apply color correction to the image
-connected-components connectivity
connected-components uniquely labeled
-contrast enhance or reduce the image contrast
-contrast-stretch geometry
improve contrast by `stretching' the intensity range
-convolve coefficients
apply a convolution kernel to the image
-cycle amount cycle the image colormap
-decipher filename convert cipher pixels to plain pixels
-deskew threshold straighten an image
-despeckle reduce the speckles within an image
-distort method args
distort images according to given method ad args
-draw string annotate the image with a graphic primitive
-edge radius apply a filter to detect edges in the image
-encipher filename convert plain pixels to cipher pixels
-emboss radius emboss an image
-enhance apply a digital filter to enhance a noisy image
-equalize perform histogram equalization to an image
-evaluate operator value
evaluate an arithmetic, relational, or logical expression
-extent geometry set the image size
-extract geometry extract area from image
-features distance analyze image features (e.g. contrast, correlation)
-fft implements the discrete Fourier transform (DFT)
-flip flip image vertically
-floodfill geometry color
floodfill the image with color
-flop flop image horizontally
-frame geometry surround image with an ornamental border
-function name parameters
apply function over image values
-gamma value level of gamma correction
-gaussian-blur geometry
reduce image noise and reduce detail levels
-geometry geometry preferred size or location of the image
-grayscale method convert image to grayscale
-hough-lines geometry
identify lines in the image
-identify identify the format and characteristics of the image
-ift implements the inverse discrete Fourier transform (DFT)
-implode amount implode image pixels about the center
-interpolative-resize geometry
resize image using 'point sampled' interpolation
-kuwahara geometry edge preserving noise reduction filter
-lat geometry local adaptive thresholding
-level value adjust the level of image contrast
-level-colors color,color
level image with the given colors
-linear-stretch geometry
improve contrast by `stretching with saturation'
-liquid-rescale geometry
rescale image with seam-carving
-local-contrast geometry
enhance local contrast
-magnify double the size of the image with pixel art scaling
-mean-shift geometry delineate arbitrarily shaped clusters in the image
-median geometry apply a median filter to the image
-mode geometry make each pixel the 'predominant color' of the
neighborhood
-modulate value vary the brightness, saturation, and hue
-monochrome transform image to black and white
-morphology method kernel
apply a morphology method to the image
-motion-blur geometry
simulate motion blur
-negate replace every pixel with its complementary color
-noise geometry add or reduce noise in an image
-normalize transform image to span the full range of colors
-opaque color change this color to the fill color
-ordered-dither NxN
add a noise pattern to the image with specific
amplitudes
-paint radius simulate an oil painting
-perceptible epsilon
pixel value less than |epsilon| become epsilon or
-epsilon
-polaroid angle simulate a Polaroid picture
-posterize levels reduce the image to a limited number of color levels
-profile filename add, delete, or apply an image profile
-quantize colorspace reduce colors in this colorspace
-radial-blur angle radial blur the image (deprecated use -rotational-blur
-raise value lighten/darken image edges to create a 3-D effect
-random-threshold low,high
random threshold the image
-region geometry apply options to a portion of the image
-render render vector graphics
-repage geometry size and location of an image canvas
-resample geometry change the resolution of an image
-resize geometry resize the image
-roll geometry roll an image vertically or horizontally
-rotate degrees apply Paeth rotation to the image
-rotational-blur angle
rotational blur the image
-sample geometry scale image with pixel sampling
-scale geometry scale the image
-segment values segment an image
-selective-blur geometry
selectively blur pixels within a contrast threshold
-sepia-tone threshold
simulate a sepia-toned photo
-set property value set an image property
-shade degrees shade the image using a distant light source
-shadow geometry simulate an image shadow
-sharpen geometry sharpen the image
-shave geometry shave pixels from the image edges
-shear geometry slide one edge of the image along the X or Y axis
-sigmoidal-contrast geometry
increase the contrast without saturating highlights or
shadows
-sketch geometry simulate a pencil sketch
-solarize threshold negate all pixels above the threshold level
-sparse-color method args
fill in a image based on a few color points
-splice geometry splice the background color into the image
-spread radius displace image pixels by a random amount
-statistic type geometry
replace each pixel with corresponding statistic from the
neighborhood
-strip strip image of all profiles and comments
-swirl degrees swirl image pixels about the center
-threshold value threshold the image
-thumbnail geometry create a thumbnail of the image
-tile filename tile image when filling a graphic primitive
-tint value tint the image with the fill color
-transform affine transform image
-transparent color make this color transparent within the image
-transpose flip image vertically and rotate 90 degrees
-transverse flop image horizontally and rotate 270 degrees
-trim trim image edges
-type type image type
-unique-colors discard all but one of any pixel color
-unsharp geometry sharpen the image
-vignette geometry soften the edges of the image in vignette style
-wave geometry alter an image along a sine wave
-wavelet-denoise threshold
removes noise from the image using a wavelet transform
-white-threshold value
force all pixels above the threshold into white
Image Sequence Operators:
-append append an image sequence
-clut apply a color lookup table to the image
-coalesce merge a sequence of images
-combine combine a sequence of images
-compare mathematically and visually annotate the difference between an image and its reconstruction
-complex operator perform complex mathematics on an image sequence
-composite composite image
-copy geometry offset
copy pixels from one area of an image to another
-crop geometry cut out a rectangular region of the image
-deconstruct break down an image sequence into constituent parts
-evaluate-sequence operator
evaluate an arithmetic, relational, or logical expression
-flatten flatten a sequence of images
-fx expression apply mathematical expression to an image channel(s)
-hald-clut apply a Hald color lookup table to the image
-layers method optimize, merge, or compare image layers
-morph value morph an image sequence
-mosaic create a mosaic from an image sequence
-poly terms build a polynomial from the image sequence and the corresponding
terms (coefficients and degree pairs).
-print string interpret string and print to console
-process arguments process the image with a custom image filter
-separate separate an image channel into a grayscale image
-smush geometry smush an image sequence together
-write filename write images to this file
Image Stack Operators:
-clone indexes clone an image
-delete indexes delete the image from the image sequence
-duplicate count,indexes
duplicate an image one or more times
-insert index insert last image into the image sequence
-reverse reverse image sequence
-swap indexes swap two images in the image sequence
Miscellaneous Options:
-debug events display copious debugging information
-distribute-cache port
distributed pixel cache spanning one or more servers
-help print program options
-list type print a list of supported option arguments
-log format format of debugging information
-version print version information
By default, the image format of `file' is determined by its magic
number. To specify a particular image format, precede the filename
with an image format name and a colon (i.e. ps:image) or specify the
image type as the filename suffix (i.e. image.ps). Specify 'file' as
'-' for standard input or output.
Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB