+++ /dev/null
-<!DOCTYPE html>
-
-<html lang="fr">
-<head>
- <meta charset="utf-8">
-
- <title>Employé(e)</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
-
- <link href="../../../oldvendor/css/bootstrap.min.css" rel="stylesheet" type="text/css">
- <link href="../../../vendor/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css">
- <!-- <link href="../../../oldvendor/css/bootstrap-timepicker.min.css" rel="stylesheet" type="text/css"> -->
- <link href="../../../oldvendor/css/glyphicons.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/jquery.minicolors.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/modules.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
- <nav class="navbar navbar-inverse navbar-fixed-top">
-
- <div class="">
- <ul class="nav navbar-nav navbar-left">
- <li style="padding-top: 7px; padding-left: 10px; color: #fff;font-size: 24px;">Employé(e)</li>
- </ul>
- </div>
-
- </nav>
- <div class="container-fluid" style="padding-top: 55px;">
- <br/>
- <!--<span class="pagehead" id="pagehead">Collaborateur</span> -->
- <input type="hidden" value="" id="staff_uuid">
- <table style="width: 100%;">
- <tbody>
- <tr>
- <td style="width: 50%">
- <form>
- <div class="field form-inline">
- <label for="staff_surname">Nom / Prénom</label>
- <input type="text" value="" id="staff_surname" class="form-control">
- <input type="text" value="" id="staff_prename" class="form-control">
- </div>
-
- <div class="field">
- <label for="staff_address">Adresse</label> <input type="text" value="" id="staff_address" class="form-control">
- </div>
-
- <div class="field form-inline">
- <label for="staff_zip">CP / Ville</label>
- <input type="text" value="" size="5" id="staff_zip" class="form-control">
- <input type="text" value="" id="staff_city" class="form-control">
- </div>
-
- <div class="field">
- <label for="staff_country">Pays</label> <input type="text" value="" id="staff_country" class="form-control">
- </div>
- <div class="field form-inline">
- <label for="staff_phone">Tel / E-Mail</label>
- <input type="text" value="" id="staff_phone" class="form-control">
- <input type="text" value="" id="staff_email" class="form-control">
- </div>
- </form>
-
- </td>
-
- <td style="width: 50%;">
- <form>
- <div class="field form-inline" id="date-container">
- <label for="staff_entrydate" style="width: 200px;">Date d'entrée / de sortie</label>
- <div id="dt_staff_entrydate" class="input-group date">
- <input type="date" class="form-control" value="" limits="0" placeholder="dd.mm.yyyy" id="staff_entrydate"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
-
- <div id="dt_staff_exitdate" class="input-group date">
- <input type="date" class="form-control" value="" limits="0" placeholder="dd.mm.yyyy" id="staff_exitdate"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
-
- <div class="field">
- <label for="staff_jobtitle">Position / Contrat</label> <input type="text" value="" id="staff_jobtitle" class="form-control">
- </div>
- <table style="width: 100%;">
- <tr><td style="width: 40%;"><div class="field">
- <label for="staff_weekhours">heures/semaine</label>
- <div class="input-group number">
- <input type="number" value="" id="staff_weekhours" style="text-align: right;" class="form-control">
-
- <div class="input-group-addon">h</div>
- </div>
- </div></td><td style="width: 40%;"><div class="field">
- <label for="staff_maxdayhours">heures/jour</label>
- <div class="input-group number">
- <input type="number" value="" id="staff_maxdayhours" style="text-align: right;" class="form-control">
-
- <div class="input-group-addon">h</div>
- </div>
- </div></td><td style="width:20%"><div class="field" >
- <label for="staff_color">Couleur</label>
- <div class="input-group">
- <input type="hidden" id="staff_color" class="form-control " value="">
- </div>
- </div></td></tr>
- </table>
- <div class="field">
- <label for="staff_iban">Compte Bancaire</label> <input type="text" value="" id="staff_iban" class="form-control">
- </div>
- <div class="field" id="pwddata">
- <label for="staff_password">Mot de Passe</label>
- <div class="input-group">
- <input type="password" value="" id="staff_password" class="form-control">
- <div class="input-group-addon">(Min: 4 charatères)</div>
- </div>
- </div>
-
- </form>
-
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="tabbable">
- <ul class="nav nav-tabs" id="tabgrouphead">
- <li><a data-toggle="tab" href="#activity">Organisation interne</a></li>
- <li><a data-toggle="tab" href="#vacancy">Congé</a></li>
- </ul>
-
- <div class="tab-content">
-
- <div id="activity" class="tab-pane" id="mnuactivity">
- <div class="form-group form-inline">
- <label for="year_organisation">Année:</label>
- <div class="input-group">
- <select id="year_organisation" class="selyear">
-
- </select>
- </div>
- <button onclick="dlg_event({'uuid':''},'ins');" class="btn btn-primary" type="button"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Activité</button>
- </div>
- <table id="tbl_activity" class="table table-striped table-bordered">
- <thead></thead>
- <tfoot></tfoot>
- <tbody></tbody>
- </table>
- </div>
- <div id="vacancy" class="tab-pane">
- <div class="form-group form-inline" id="mnuvac">
- <label for="year_vacancy">Année:</label>
- <div class="input-group">
- <select id="year_vacancy" class="selyear">
-
- </select>
- </div>
- <button onclick="dlg_vacancy({'uuid':''},'ins');" class="btn btn-primary" type="button"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Congé</button>
- <div class="form-group">
- <label for="vacancy_total">congé normale</label>
-
- <div class="input-group" style="width: 120px;">
- <input type="text" id="vacancyyeartotal" class="form-control" value="" onblur="saveyearvacdays();">
- <span class="input-group-addon">h</span>
- </div>
-
- </div>
- </div>
-
- <table id="tbl_vacancy" class="table table-striped table-bordered" data-toggle="table" data-heigth="10vh" style="width: 100%;" >
- <thead>
- <tr>
- <th class="noprint" style="width: 120px;"></th>
- <th style="width: 80px;">année</th>
- <th style="width: 100px;">début</th>
- <th style="width: 100px;">fin</th>
- <th style="width: 60px;">jours</th>
- <th style="width: 60px;">h/j</th>
- <th style="width: 250px;">Description</th>
- <th style="width: 100px;">type</th>
- <th style="width: 60px;" colspan="2">normal</th>
- <th style="width: 60px;" colspan="2">except.</th>
- <th style="width: 60px;" colspan="2">maladie</th>
- </tr>
- </thead>
- <tbody></tbody>
- <tfoot></tfoot>
- </table>
-
-
- <div id="vacancystatus" style=" white-space: nowrap; width: 100%; text-align: center;"></div>
-
- </div>
- </div>
- </div>
-<!-- EVENT DLG begin -->
-<div class="modal fade" id="edit_event">
- <div class="modal-dialog" style="width: 800px; max-width: 800px;">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
- <h4 class="modal-title">Editer Activité</h4>
- </div>
- <div class="modal-body" style=" height: 550px; max-height: 550px ">
-<div id="frmeditevent">
- <input type="hidden" value="0" id="uuid" />
- <input type="hidden" value="" id="staffuuid" />
- <input type="hidden" value="" id="description" />
- <input type="hidden" value="" id="color" />
- <input type="hidden" value="" id="location" />
- <div class="form-inline row">
- <label for="staffname" class="col-md-2">Employé(e)</label>
- <input value="" id="staffname" readonly class="form-control col-md-8" style="width: 80%;" ></select>
- </div>
- <div class="row">
- <div class="form-inline">
- <div id="date-container">
- <label class="col-md-3">Dates début / fin</label>
- <div id="dt_datefrom" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="datefrom"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- <div id="dt_dateto" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="dateto"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="form-inline ">
- <label class="col-md-3">heures début / fin</label>
- <div class="input-group bootstrap-timepicker time">
- <input type="text" class="form-control timepicker" placeholder="" value="" id="timefrom">
- </div>
- <div class="input-group bootstrap-timepicker time">
- <input type="text" class="form-control timepicker" placeholder="" value="" id="timeto">
- </div>
- </div>
- </div>
- <div class="row">
-
- </div>
- <div class="row">
- <div class="panel panel-default">
- <div class="panel-heading">
- <h3 class="panel-title">Récurrence
- <select id="freq" onchange="setfreq();">
- <option value="">pas de récurrence</option>
- <option value="daily">quotidienne</option>
- <option value="weekly">hebdomaire</option>
- <option value="monthly">mensuelle</option>
- </select>
- </h3>
- </div>
- <div class="panel-body">
- <div class="row">
- <div class="form-inline" id="freqinterval">
- <label>interval: tous les</label>
- <input class="form-control" type="number" id="interval" style="width: 50px;" value="1"/>
- <label id="lblfreq"></label>
- </div>
- </div>
- <div class="row" id="freqweekly">
- <div class="form-inline">
- <label>jours de semaine:</label>
- <!--<input class="col-md-2 form-control" style="width: 50px;" type="number" id="xtimes_num" value="1"/>-->
- <!--<label class="col-md-2">semaines,le </label>-->
- <div class="btn-group form-inline" id="weekly_byday" data-toggle="buttons">
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_mo" value="MO" /> Lundi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_tu" value="TU" /> Mardi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_we" value="WE" /> Mercredi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_th" value="TH" /> Jeudi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_fr" value="FR" /> Vendredi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="weekly_byday_sa" value="SA" /> Samedi
- </label>
- <!--<label class="btn btn-primary">-->
- <!-- <input type="checkbox" id="weekly_byday_su" value="SU" /> Di-->
- <!--</label>-->
- </div>
- </div>
- </div>
- <div class="row" id="freqmonthly">
- <div class="form-inline">
- <div class="btn-group" data-toggle="buttons" id="monthly_by">
- <label class="btn btn-primary active">
- <input type="radio" id="pnl_monthly_byday" value="monthly_byday" checked="1"/> par jour de semaine
- </label>
- <label class="btn btn-primary">
- <input type="radio" id="pnl_monthly_bymonthday" value="monthly_bymonthday"/> par jour du mois
- </label>
- </div>
- </div>
- <div class="form-inline" id="freq_monthly_byday">
- <!--<label class="col-md-2">tous les</label>-->
- <!--<input class="col-md-2 form-control" type="number" id="xtimes_num" style="width: 50px;" value="1"/>-->
- <!--<label class="col-formmd-2">mois, le </label><br/>-->
- <div class="btn-group" data-toggle="buttons" id="monthly_bydaypos">
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaypos_1" value="1" /> 1ier
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaypos_2" value="2" /> 2ième
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaypos_3" value="3" /> 3ième
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaypos_4" value="4" /> 4ième
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaypos_5" value="5" /> 5ième
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydayppos_last-1" value="-1" /> dernier
- </label>
- </div>
- <br/>
- <div class="btn-group" data-toggle="buttons" id="monthly_bydaywday">
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_mo" value="MO" /> Lundi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_tu" value="TU" /> Mardi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_we" value="WE" /> Merecredi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_th" value="TH" /> Jeudi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_fr" value="FR" /> Vendredi
- </label>
- <label class="btn btn-primary">
- <input type="checkbox" id="monthly_bydaywday_sa" value="SA" /> Samedi
- </label>
- <!--<label class="btn btn-primary">-->
- <!-- <input type="checkbox" id="monthly_bydaywday_su" value="SU" /> Di-->
- <!--</label>-->
- </div>
- </div>
- <div class="form-inline" id="freq_monthly_bymonthday">
- <div class="btn-group" data-toggle="buttons" id="monthly_bymonthday">
- <label class="btn btn-primary" style="width: 40px; border-radius: 0px;">
- <input type="checkbox" id="monthly_bymonthday_1" value="1" />1
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_2" value="2" />2
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_3" value="3" />3
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_4" value="4" />4
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_5" value="5" />5
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_6" value="6" />6
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_7" value="7" />7
- </label>
- <br/>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_8" value="8" />8
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_9" value="9" />9
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_10" value="10" /> 10
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_11" value="11" /> 11
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_12" value="12" /> 12
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_13" value="13" /> 13
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_14" value="14" /> 14
- </label>
-
- <br/>
-
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_15" value="15" /> 15
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_16" value="16" /> 16
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_17" value="17" /> 17
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_18" value="18" /> 18
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_19" value="19" /> 19
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_20" value="20" /> 20
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_21" value="21" /> 21
- </label>
-
- <br/>
-
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_22" value="22" /> 22
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_23" value="23" /> 23
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_24" value="24" /> 24
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_25" value="25" /> 25
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_26" value="26" /> 26
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_27" value="27" /> 27
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_28" value="28" /> 28
- </label>
-
- <br/>
-
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_29" value="29" /> 29
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_31" value="31" /> 30
- </label>
- <label class="btn btn-primary" style="width: 40px;">
- <input type="checkbox" id="monthly_bymonthday_31" value="31" /> 31
- </label>
- <label class="btn btn-primary" style="width: 157px;" >
- <input type="checkbox" id="monthly_bymonthday_-1" value="-1" /> dernier
- </label>
-
- <br/>
- <label class="btn btn-primary" style="width: 138px;">
- <input type="checkbox" id="monthly_bymonthday_-2" value="-2" /> av.-dernier
- </label>
- <label class="btn btn-primary" style="width: 138px; border-radius: 0px;">
- <input type="checkbox" id="monthly_bymonthday_-3" value="-3" /> av.-av.-dernier
- </label>
- </div>
-
- </div>
-
-
-
- <br/>
-
- </div>
- </div>
-
- </div>
- </div>
-</div>
- </div>
- <div class="modal-footer">
- <button aria-hidden="true" data-dismiss="modal" id="btndeleteevent" onclick="confirm_delete_event();" class="btn">Supprimer</button>
- <button aria-hidden="true" data-dismiss="modal" class="btn">Annuler</button> <button onclick="save_event();" id="btn_save_event" class="btn btn-primary">Accepter</button>
- </div>
- </div>
- </div>
- </div>
- <div class="modal fade" id="confirm_delete_event">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
-
- <h4 class="modal-title">Supprimer Activité</h4>
- </div><!-- dialog contents -->
-
- <div class="modal-body">
- Êtes vous sûre de supprimer cette Activité?<br>
-
- </div><!-- dialog buttons -->
-
- <div class="modal-footer">
- <button aria-hidden="true" data-dismiss="modal" class="btn">Non</button> <button onclick="delete_event();" class="btn btn-primary">Oui</button>
- </div>
- </div>
- </div>
- </div>
-<!-- EVENT DLG end -->
- <div class="modal fade" id="edit_vacancy">
- <div class="modal-dialog" style="width: 800px; max-width: 800px;">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
- <h4 class="modal-title">Editer Congé</h4>
- </div>
- <div class="modal-body" style="height: 410px; max-height: 410px; ">
-<div id="frmeditvacancy">
- <input type="hidden" value="0" id="uuid" />
- <input type="hidden" value="" id="staffuuid" />
- <!--<div class="form-inline row">-->
- <!-- <label for="location" class="col-md-2">Lieu</label>-->
- <!-- <input type="text" value="" id="location" nullable="true" class="form-control col-md-8" style="width: 80%;">-->
- <!--</div>-->
-
- <div class="form-inline row">
- <label for="dailyduration" class="col-md-3">Journée</label>
- <select value="" id="dailyduration" class="form-control" onchange="setdailydurationfields();">
- <option value="1.0">Journée(s) complet(s)</option>
- <option value="0.4">demi(s) Journée(s)</option>
- <option value="0.">quelques heures</option>
- </select>
- </div>
-
- <div class="row form-inline">
- <label class="col-md-3">Date début</label>
- <div id="dt_vacdatefrom" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="vacdatefrom"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
- <div class="row form-inline">
- <label class="col-md-3">Date fin</label>
- <div id="dt_vacdateto" class="input-group date">
- <input type="date" class="form-control" value="" limits="1" placeholder="dd.mm.yyyy" id="vacdateto"><span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
- </div>
- </div>
-
- <div id="ftimefrom" class="row form-inline">
-
- <label class="col-md-3">heure début</label>
- <div class="input-group bootstrap-timepicker time">
- <input type="text" class="form-control timepicker" placeholder="" value="" id="timefrom">
- </div>
- </div>
- <div class="form-inline row" id="fhours">
- <label for="description" class="col-md-3">nbr. d'heures</label>
- <input type="text" value="" id="hours" nullable="true" class="form-control col-md-6" style="width: 20%;">
-
- </div>
-
- <div class="form-inline row">
- <label for="type" class="col-md-3">Type de congé</label>
- <select id="type" value="">
- <option value="0">Congé normal</option>
- <option value="1">Congé expetionelle</option>
- <option value="-1">Congé de maladie</option>
- </select>
- </div>
- <div class="form-inline row">
- <label for="description" class="col-md-3">Description</label>
- <input type="text" value="" id="description" nullable="true" class="form-control col-md-6" style="width: 70%;">
-
- </div>
- <div class="row" style="height: 120px;"></div>
- </div>
- </div>
- <div class="modal-footer">
- <button aria-hidden="true" onclick="accept_vacancy();" data-dismiss="modal" id="btnacceptvacancy" class="btn">Valider Congé</button>
- <button aria-hidden="true" data-dismiss="modal" class="btn">Annuler</button>
- <button onclick="save_vacancy();" class="btn btn-primary">Accepter</button>
- </div>
- </div>
- </div>
- </div>
- <div class="modal fade" id="confirm_delete_vacancy">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
-
- <h4 class="modal-title">Supprimer Congé</h4>
- </div><!-- dialog contents -->
-
- <div class="modal-body">
- Êtes vous sûre de supprimer ce congé?<br>
-
- </div><!-- dialog buttons -->
-
- <div class="modal-footer">
- <button aria-hidden="true" data-dismiss="modal" class="btn">Non</button> <button onclick="delete_vacancy();" class="btn btn-primary">Oui</button>
- </div>
- </div>
- </div>
-
-
- </div>
- <script src="../../../oldvendor/js/jquery.min.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/bootstrap.min.js" type="text/javascript"></script>
- <script src="../../../vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
- <script src="../../../vendor/bootstrap-table/locale/bootstrap-table-fr-FR.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/moment-with-locales.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/jquery.minicolors.min.js" type="text/javascript"></script>
- <script src="../../../vendor/rrule/rrule.js" type="text/javascript"></script>
- <script src="../../../vendor/rrule/nlp.js" type="text/javascript"></script>
- <script src="../../../js/webpreferences.js" type="text/javascript"></script>
- <script src="../../../js/webdatabase.js" type="text/javascript"></script>
- <script src="../../../js/module_functions.js" type="text/javascript"></script>
- <script src="../../../js/labels.js" type="text/javascript"></script>
- <script src="js/coworker.js" type="text/javascript"></script>
-</body>
-</html>
+++ /dev/null
-//Source-code licensed under EUPL v1.2 ( Copyright 2019 By DKS s.à r.l. - Kilian Saffran - Luxembourg )
-var pconfig = {};
-var delplan = null;
-var delvacation = null;
-var wh= window.innerHeight -320;
-var curdatediff = null;
-var redate = /\d\d.\d\d.\d\d\d\d/;
-var curfreq ={};
-var maxdayhours = null;
-var maxhalfdayhours = null;
-var tblvac = null;
-//var lictype = parent.apppref.getpreference("support.lictype");
-
-function initdata() {
- load_helpers();
- var sp = getSearchParams();
- pconfig = parent.apppref.getpreference("coworker");
- if (sp.uuid){
- pconfig.uuid = sp.uuid;
- }
- if (pconfig == null) {
- pconfig = {};
- }
- parent.appdb.dbexec("update vacancycalendar set vacyear=strftime('%Y',datefrom) where vacyear is null;");
- //"get CoWorker cfg:" +JSON.stringify(pconfig) + "\n");
- if (!pconfig.year) {
- pconfig.year=new Date().getFullYear();
- }
- if (!pconfig.printlayout) {
- pconfig.printlayout = 'list';
- parent.apppref.setpreference("coworker",pconfig);
- }
- var cdatasql = "SELECT jobtitle, prename, surname, address, zip, city, country, strftime('%d.%m.%Y',entrydate) as entrydate, strftime('%d.%m.%Y',exitdate) as exitdate, iban, bic, accountname, phone, email, uuid,color,weekhours,maxdayhours,case when password is not null and length(password) > 3 then 1 else 0 end as passwordset FROM staff where uuid='" + pconfig.uuid + "';";
- var cdata = parent.appdb.dbquery(cdatasql);
- cdata = cdata.sqldata[0];
- for (var ci in cdata) {
- if (document.getElementById("staff_" + ci)) {
- document.getElementById("staff_" + ci).setAttribute('value', cdata[ci]);
- }
-
- }
-
- // var crdata = parent.appdb.dbquery("select stafflist from creche;");
- // if ((crdata) && (crdata.sqldata[0].stafflist == "1")){
- // $("#pwddata").hide();
- // }
- // if (cdata) {
- // set_infoheader(cdata.prename + " " + cdata.surname);
- // }
- $('#staff_color').minicolors({theme:'bootstrap'});
- set_selectyears();
- //load_staff_selection('staffuuid');
-
- if (pconfig && pconfig.activetab) {
- $('a[href="#'+pconfig.activetab+'"]').tab('show');
- }else{
- $('a[href="#vacancy"]').tab('show');
- pconfig.activetab = 'vacancy';
- }
-
-// if (pconfig && pconfig.vacancyunit){
-// //dump("has vacancy unit:" + pconfig.vacancyunit + "\n");
-// $('#vacancy_unit').val(pconfig.vacancyunit);
-// }else {
- pconfig.vacancyunit = "hours";
-// $('#vacancy_unit').val("days");
-// }
-
-
-
-}
-
-$('#frmeditvacancy #vacdatefrom').on("blur",function (e) {
- var ok = true;
- if ($('#frmeditvacancy #vacdatefrom').val().match(redate)) {
- $('#btn_save_vacancy').removeAttr("disabled");
- }else {
- ok = false;
- $('#btn_save_vacancy').attr("disabled","1");
- }
- if ((ok == true) && ($('#frmeditvacancy #vacdateto').val() != '')) {
- var tmpdt1 = encodeparam($('#frmeditvacancy #vacdatefrom').val(),'date');
- var nd = new Date(tmpdt1.replace(/'/g,''));
- var xd = new Date(nd.getFullYear(),nd.getMonth(),nd.getDate() + curdatediff);
- $('#frmeditvacancy #vacdateto').val(xd.toISOString().substring(0,10));
- var tmpdt2 = encodeparam($('#frmeditvacancy #vacdateto').val(),'date');
- if (tmpdt1 > tmpdt2) {
- $('#btn_save_vacancy').attr("disabled","1");
- } else {
- $('#btn_save_vacancy').removeAttr("disabled");
- }
-
- }
-});
-$('#frmeditvacancy #vacdateto').on("blur",function (e) {
- var ok = true;
- if ($('#frmeditvacancy #vacdateto').val().match(redate)) {
- $('#btn_save_vacancy').removeAttr("disabled");
- }else {
- ok = false;
- $('#btn_save_vacancy').attr("disabled","1");
- }
- curdatediff=daysBetween(new Date(encodeparam($('#frmeditvacancy #vacdatefrom').val(),'date').replace(/'/g,'')),new Date(encodeparam($('#frmeditvacancy #vacdateto').val(),'date').replace(/'/g,'')));
- if ((ok == true) && ($('#frmeditvacancy #vacdateto').val() != '')) {
- var tmpdt1 = encodeparam($('#frmeditvacancy #vacdatefrom').val(),'date');
- var tmpdt2 = encodeparam($('#frmeditvacancy #vacdateto').val(),'date');
- if (tmpdt1 > tmpdt2) {
- $('#btn_save_vacancy').attr("disabled","1");
- } else {
- $('#btn_save_vacancy').removeAttr("disabled");
- }
-
- }
-});
-$('#dailyduration').on('change',function(e){
- if ($('#dailyduration').val() == "1.0"){
- $('#frmeditvacancy #hours').val(maxdayhours);
- }
- if ($('#dailyduration').val() == "0.4"){
- $('#frmeditvacancy #hours').val(maxhalfdayhours);
- }
-});
-$('#staff_color').on('change',function(e){
- saveonfocusout('staff_color');
-});
-
-$("#weekly_byday :input").change(function() {
- if (this.checked) {
- this.setAttribute("checked",true);
- }else {
- this.removeAttribute("checked");
- }
-
-});
-$("#monthly_bydaypos :input").change(function() {
-
- if (this.checked) {
- this.setAttribute("checked",true);
- }else {
- this.removeAttribute("checked");
- }
-
-});
-$("#monthly_bydaywday :input").change(function() {
-
- if (this.checked) {
- this.setAttribute("checked",true);
- }else {
- this.removeAttribute("checked");
- }
-
-});
-$("#monthly_bymonthday :input").change(function() {
-
- if (this.checked) {
- this.setAttribute("checked",true);
- }else {
- this.removeAttribute("checked");
- }
-
-});
-$("#monthly_by :input").change(function() {
- var xd = this.id.split("_");
- curfreq.freqtype=xd[2];
-
- this.setAttribute("checked",true);
-
- $('#freq_monthly_byday').hide();
- $('#freq_monthly_bymonthday').hide();
- $('#pnl_monthly_byday').removeAttr("checked");
- $('#pnl_monthly_bymonthday').removeAttr("checked");
-
- $('#freq_' + this.value).show();
-
-});
-
-$('#frmeditevent #datefrom').on("blur",function (e) {
- var ok = true;
- if ($('#frmeditevent #datefrom').val().match(redate)) {
- $('#btn_save_event').removeAttr("disabled");
- }else {
- ok = false;
- $('#btn_save_event').attr("disabled","1");
- }
- if ((ok == true) && ($('#frmeditevent #dateto').val() != '')) {
- var tmpdt1 = encodeparam($('#frmeditevent #datefrom').val(),'date');
- var tmpdt2 = encodeparam($('#frmeditevent #dateto').val(),'date');
- if (tmpdt1 >= tmpdt2) {
- $('#btn_save_event').attr("disabled","1");
- } else {
- $('#btn_save_event').removeAttr("disabled");
- }
-
- }
-});
-$('#frmeditevent #dateto').on("blur",function (e) {
- var ok = true;
- if ($('#frmeditevent #dateto').val().match(redate)) {
- $('#btn_save_event').removeAttr("disabled");
- }else {
- ok = false;
- $('#btn_save_event').attr("disabled","1");
- }
- if ((ok == true) && ($('#frmeditevent #dateto').val() != '')) {
- var tmpdt1 = encodeparam($('#frmeditevent #datefrom').val(),'date');
- var tmpdt2 = encodeparam($('#frmeditevent #dateto').val(),'date');
-
- if (tmpdt1 >= tmpdt2) {
- $('#btn_save_event').attr("disabled","1");
- } else {
- $('#btn_save_event').removeAttr("disabled");
- }
-
- }
-});
-
-$('.selyear').on( "change", function(e){
- e.preventDefault();
-
- $(".selyear").val($(this).val());
- pconfig.year = $(this).val();
- parent.apppref.setpreference("coworker",pconfig);
- if ($(this).attr('id') == "year_organisation") {
- load_event_data();
- }else if ($(this).attr('id') == "year_vacancy") {
- load_table_vacancy();
- }
-});
-
-$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
- var tn = e.target.toString();
- pconfig.activetab = tn.substring(tn.lastIndexOf("#")+1);
-
- parent.apppref.setpreference("coworker",pconfig);
- if (pconfig.activetab == 'activity') {
- load_event_data();
- }
- if (pconfig.activetab == 'vacancy') {
- load_table_vacancy();
- }
- });
-
-function load_event_data() {
- //dump("Load event Table!\n");
- var where = new Array();
-
- where.push(" st.uuid in ('"+ pconfig.uuid + "')");
-
- $("div.panel-daybody").html("");
- var sql = "SELECT cal.uuid, cal.datefrom, cal.dateto, '<div style=\"display:none;\">' || strftime('%Y%m%d',cal.datefrom) ||'</div>' || strftime('%d.%m.%Y',cal.datefrom) AS tbldatefrom ,strftime('%Y%m%d',cal.datefrom) AS strdatefrom, strftime('%Y%m%d',cal.dateto) AS strdateto,cal.timefrom, cal.timeto, cal.description, cal.location, cal.color, cal.freq, '[\"' || GROUP_CONCAT(sp.staffuuid,'\",\"') || '\"]' as staffuuid, GROUP_CONCAT(coalesce(st.surname,'') || ' ' || coalesce(st.prename,''), '<br/>' ) as staffnames ,'[\"' || GROUP_CONCAT(st.color,'\",\"') || '\"]' as staffcolors from eventcalendar cal " +" join staffplanning sp on (cal.uuid=sp.eventcalendaruuid " + " AND sp.staffuuid in ('"+ pconfig.uuid +"')) left join staff st on (sp.staffuuid=st.uuid) "+
- " where (cal.datefrom between '" + $('#year_organisation').val() + "-01-01' and '" + $('#year_organisation').val() + "-12-31' and (cal.dateto >= '" + $('#year_organisation').val() + "-01-01' or cal.dateto is null)) or (cal.dateto between '" + $('#year_organisation').val() + "-01-01' and '" + $('#year_organisation').val() + "-12-31' and cal.datefrom < '" + $('#year_organisation').val() + "-01-01') or ((cal.datefrom <= '" + $('#year_organisation').val() + "-01-01') and ((cal.dateto >= '" + $('#year_organisation').val() + "-12-31') or cal.dateto is null)) "+ ((where.length > 0)?" AND (" + where.join(" or ") + ")":"")+" group by cal.uuid order by cal.datefrom,cal.dateto;";
-
- var caldata = parent.appdb.dbquery(sql);
-
- caldata = caldata.sqldata;
-
- var headerdata = getlabels("act,datefrom,hours,recurrance");
- $("#tbl_activity").html("");
-
- var hrow = headerdata;
- var tdclass= new Array();
- var tblheader = '<tr>';
-
- for (var h=0;h<hrow.length;h++){
- tdclass.push(headerdata[h].class);
- tblheader += '<th class="' + headerdata[h].class +'">'+ headerdata[h].title+'</th>';
- }
- tblheader += '</tr>';
-
- $("#tbl_activity").append("<thead>" + tblheader + "</thead>");
- $("#tbl_activity").append("<tbody>");
- var tblbody = [];
- for (var c in caldata) {
- var tblrow = "<tr>";
- tblrow += '<td class="noprint"><button type="button" class="btn btn-primary" onclick="dlg_event({uuid:\''+caldata[c].uuid+'\'},\'upd\');" title="editer"><span class="glyphicon glyphicon-pencil"></span></button></td>';
- //tblrow += "<td><span style=\"display: none;\">"+caldata[c].description+"</span><strong style=\"color:"+ caldata[c].color +"\">" + caldata[c].description + "</strong></td>";
- //tblrow += "<td>" + caldata[c].staffnames + "</td>";
- tblrow += "<td>" + caldata[c].tbldatefrom + "</td>";
- tblrow += "<td>" + caldata[c].timefrom + "- " + caldata[c].timeto + "</td>";
-
- var freq2 = caldata[c].freq;
- if (freq2 != '') {
-
- freq2 += ';DTSTART='+caldata[c].strdatefrom + 'T000000Z';
- if (caldata[c].dateto != ''){
- freq2 += ';UNTIL='+caldata[c].strdateto + 'T000000Z';
- }
- }
-
- try {
-
- var rule2 = RRule.fromString(freq2);
-
-
- tblrow += "<td>" + rule2.toText() + "</td>";
-
- } catch (ex){
- //"ERROR! loading data!" + ex + " FREQ:" + freq2 + "\n");
- }
- tblrow += "</tr>";
- tblbody.push(tblrow);
- }
-
- //load table
- $("#tbl_activity").append(tblbody.join(''));
- $("#tbl_activity").append("</tbody>");
-
- $("#tbl_activity").bootstrapTable({
- locale: 'fr-FR',
- pagination: false,
- search: false,
- height: wh,
- toolbar: "#mnuact"
- });
-
-
-}
-
-function load_table_vacancy() {
- tblvac =null;
- var yearvacanysql = "select hours from staffvacancydays where staffuuid='"+ pconfig.uuid+"' and vacancyyear='"+ $("#year_vacancy").val() +"';";
- var yearvac = parent.appdb.dbquery(yearvacanysql);
- var nvyear = "";
- if ((yearvac) && (yearvac.sqldata)){
- nvyear = yearvac.sqldata[0].hours;
- }
- $("#vacancyyeartotal").val(nvyear);
- var vacdatasql = "SELECT '<button type=\"button\" class=\"btn btn-primary\" onclick=\"dlg_vacancy({''uuid'':'''|| uuid || '''},''upd'');\"><span class=\"glyphicon glyphicon-pencil\"></span></button>" +
- "<button type=\"button\" class=\"btn btn-danger\" onclick=\"confirm_delete_vacancy(''' || uuid || ''');\"><span class=\"glyphicon glyphicon-remove\"></span></button>' AS action," + "vacyear," +
- "strftime('%d.%m.%Y', datefrom) as datefrom,strftime('%d.%m.%Y', dateto) as dateto,printf(\"%.2f\",dayhours) as dayhours,totaldays,description," +
- "case when type = 0 and accepted != '1' then printf(\"%.2f\", hours) else '' end as thnormalnv," +
- "case when type = 1 and accepted != '1' then printf(\"%.2f\", hours) else '' end as thextranv," +
- "case when type =-1 and accepted != '1' then printf(\"%.2f\", hours) else '' end as thillnv," +
- "case when type = 0 and accepted = '1' then printf(\"%.2f\", hours) else '' end as thnormalval," +
- "case when type = 1 and accepted = '1' then printf(\"%.2f\", hours) else '' end as thextraval," +
- "case when type =-1 and accepted = '1' then printf(\"%.2f\", hours) else '' end as thillval," +
- "case when type = 0 then 'normal' when type = 1 then 'exceptionnel' when type =-1 then 'maladie' end as vacancytype" +
- " FROM (" +
- "select uuid, vacyear, datefrom, dateto, type, description, accepted, (days-day_to_much-vdays) * (case when hours < maxdayhours then hours when hours > maxdayhours then maxdayhours else hours end ) as hours, "+
- "case when hours < maxdayhours then hours when hours > maxdayhours then maxdayhours else hours end as dayhours,days-day_to_much-vdays as totaldays " +
- " from (" +
- "select vc.uuid,vc.vacyear,vc.datefrom,vc.dateto,vc.type,vc.description,vc.accepted," +
- "((strftime('%s',vc.dateto) - strftime('%s',vc.datefrom)) /84600) + 1 as days," +
- "((((strftime('%s',vc.dateto) - strftime('%s',vc.datefrom)) /84600) + 1) / 7) * (7 - (st.weekhours / st.maxdayhours)) as day_to_much," +
- "(select count(v.vacancydate) from vacancy v where v.vacancydateto is null and strftime('%s',v.vacancydate) not in ('0','6') and v.vacancydate between vc.datefrom and vc.dateto) as vdays,st.weekhours,st.weekhours / maxdayhours as days_per_week,vc.timefrom,vc.timeto,st.maxdayhours, " +
- "cast(cast(strftime(\"%s\",vc.timeto) as int)- cast(strftime(\"%s\",vc.timefrom) as int) as real)/3600 as hours " +
- "from vacancycalendar vc join staff st on (vc.staffuuid=st.uuid) where vc.staffuuid='"+ pconfig.uuid+"' and vc.vacyear=" + pconfig.year+"));";
-
-//jsdump("XXSQL:" + vacdatasql + "\n");
-var vacdata = parent.appdb.dbquery(vacdatasql);
- var sums = { normal:0,except:0,ill:0,normal_ok:0,except_ok:0,ill_ok:0};
-
- $("#tbl_vacancy > tbody").html("");
-
- for (var i in vacdata.sqldata){
- var row = vacdata.sqldata[i];
- // sums.all = sums.all + ((row.dayhours != '')?parseFloat(row.dayhours):0.00);
- sums.normal = sums.normal + ((row.thnormalnv != '')?parseFloat(row.thnormalnv):0.00);
- sums.except = sums.except + ((row.thextranv != '')?parseFloat(row.thextranv):0.00);
- sums.ill = sums.ill + ((row.thillnv != '')?parseFloat(row.thillnv):0.00);
- sums.normal_ok = sums.normal_ok + ((row.thnormalval != '')?parseFloat(row.thnormalval):0.00);
- sums.except_ok = sums.except_ok + ((row.thextraval != '')?parseFloat(row.thextraval):0.00);
- sums.ill_ok = sums.ill_ok + ((row.thillval != '')?parseFloat(row.thillval):0.00);
- var tr = '<tr>';
- tr += '<td style="width: 120px;">' + row.action + '</td>';
- tr += '<td style="width: 80px;">' + row.vacyear + '</td>';
- tr += '<td style="width: 100px;">' + row.datefrom + '</td>';
- tr += '<td style="width: 100px;">' + row.dateto + '</td>';
- tr += '<td class="alignright" style="width: 60px;">' + row.totaldays + '</td>';
- tr += '<td class="alignright" style="width: 60px;">' + row.dayhours + '</td>';
- tr += '<td style="width: 250px;">' + row.description + '</td>';
- tr += '<td style="width: 100px;">' + row.vacancytype + '</td>';
- tr += '<td class="alignright" style="color: red;width: 60px;">' + row.thnormalnv + '</td>';
- tr += '<td class="alignright" style="color: green;width: 60px;">' + row.thnormalval + '</td>';
- tr += '<td class="alignright" style="color: red;width: 60px;">' + row.thextranv + '</td>';
- tr += '<td class="alignright" style="color: green;width: 60px;">' + row.thextraval + '</td>';
- tr += '<td class="alignright" style="color: red;width: 60px;">' + row.thillnv + '</td>';
- tr += '<td class="alignright" style="color: green;width: 60px;">' + row.thillval + '</td>';
- tr += '<tr>';
- $("#tbl_vacancy > tbody").append(tr);
-
- }
- var tfoot = "<tr>"
- + '<th style="width: 120px;"></th>'
- + '<th style="width: 80px;"></th>'
- + '<th style="width: 100px;"></th>'
- + '<th style="width: 100px;"></th>'
- + '<th style="width: 60px;"></th>'
- + '<th style="width: 60px;"></th>'
- + '<th style="width: 250px;"></th>'
- + '<th style="width: 100px;"></th>'
- + '<th class="alignright" style="color: red;width: 60px;">' + sums.normal.toFixed(2) + '</th>'
- + '<th class="alignright" style="color: green;width: 60px;">' + sums.normal_ok.toFixed(2) + '</th>'
- + '<th class="alignright" style="color: red;width: 60px;">' + sums.except.toFixed(2) + '</th>'
- + '<th class="alignright" style="color: green;width: 60px;">' + sums.except_ok.toFixed(2) + '</th>'
- + '<th class="alignright" style="color: red;width: 60px;">' + sums.ill.toFixed(2) + '</th>'
- + '<th class="alignright" style="color: green;width: 60px;">' + sums.ill_ok.toFixed(2) + '</th>'
- +"</tr>";
- $("#tbl_vacancy > tfoot").html(tfoot);
-
- $("#tbl_vacancy").bootstrapTable({
- locale: 'fr-FR',
- pagination: false,
- search: false,
- toolbar: "#mnuvac"
- });
-
-
-
-}
-
-function dlg_vacancy(uuid, type) {
- //select weekhours/5 = max daily hours
- maxdayhours = (parseFloat($("#staff_weekhours").val())/5).toFixed(2);
- maxhalfdayhours = (maxdayhours/2).toFixed(2);
- var evdata = {
- uuid: 0,
- description: '',
- vacdatefrom:new Date().toISOString().substring(0,10),
- vacdateto:new Date().toISOString().substring(0,10),
- staffuuid:[pconfig.uuid],
- timefrom: '00:00',
- hours: maxdayhours,
- type:'0',
- //dailyduration:'1.0',
- //hourmax: whr
- };
-
- if (type == 'upd') {
- var evsql = "select uuid,vacdatefrom,vacdateto,timefrom,description,staffuuid,case when hours = '0.00' then '" + maxdayhours +"' else hours end as hours,accepted from (SELECT uuid, strftime(\"%d.%m.%Y\",datefrom) as vacdatefrom, strftime(\"%d.%m.%Y\",dateto) as vacdateto, timefrom, description, '"+pconfig.uuid+"' as staffuuid,type, printf(\"%.2f\",cast((cast(strftime(\"%s\",timeto) as int)- cast(strftime(\"%s\",timefrom) as int))/3600 as real)) as hours,accepted FROM vacancycalendar where uuid='" + uuid.uuid + "');";
- //var evsql = "SELECT uuid, strftime(\"%d.%m.%Y\",datefrom) as vacdatefrom, strftime(\"%d.%m.%Y\",dateto) as vacdateto, timefrom, description, '"+pconfig.uuid+"' as staffuuid,type, case when timefrom!=timeto then '0.' || (cast(substr(timeto,1,2) as int) - cast(substr(timefrom,1,2) as int)) else 1.0 end as dailyduration,null as hours,accepted FROM vacancycalendar where uuid='" + uuid.uuid + "';";
- //dump("EVSQL: " + evsql + "\n");
- evdata = parent.appdb.dbquery(evsql);
- evdata = evdata.sqldata[0];
- if (evdata.type == -1){
- $("#btnacceptvacancy").hide();
- }else {
- $("#btnacceptvacancy").show();
- }
- if (evdata.hours >= maxdayhours) {
- evdata.hours=maxdayhours;
- $('#dailyduration select').val("1.0");
- } else if (evdata.hours == maxhalfdayhours){
- $('#dailyduration select').val("0.4");
- } else {
- $('#dailyduration select').val("0.");
- }
-
- }else {
- $('#dailyduration select').val("1.0");
- }
- for (var w in evdata) {
- if ((w == 'datefrom') || (w == 'dateto')) {
- w='vac' + w;
- }
-
- if ($("#frmeditvacancy #" + w)) {
- //dump(w + "->"+evdata[w]+"\n");
- if (w == "type"){
- $("#frmeditvacancy #" + w + " select").val(evdata[w]);
- } else {
- $("#frmeditvacancy #" + w).val(evdata[w]);
- }
-
-
- }
-
- }
-
- setdailydurationfields();
- $("#edit_vacancy").modal('show');
-}
-
-function confirm_delete_vacancy(uuid) {
- delvacation = uuid;
- $("#confirm_delete_vacancy").modal('show');
- return false;
-}
-
-function delete_vacancy() {
- var delsql = "DELETE FROM vacancycalendar where uuid='" + delvacation+"';";
- parent.appdb.dbexec(delsql);
- load_table_vacancy();
- delvacancy=null;
- $("#confirm_delete_vacancy").modal('hide');
-
- return false;
-}
-
-function setdailydurationfields() {
- var dd = $('#dailyduration :selected').val();
- if (dd=='1.0') {
- //$("#ftimefrom").hide();
- $("#hours").prop("disabled",true);
- }else if (dd=='0.4') {
- //$("#ftimefrom").show();
- $("#hours").prop("disabled",true);
- }else if (dd=='0.') {
- //$("#ftimefrom").show();
- $("#hours").prop("disabled",false);
- }
-}
-
-function save_vacancy() {
- var type = 'ins';
- var cuuid = "";
- if ($("#frmeditvacancy #uuid").val() != 0) {
- type = 'upd';
- cuuid = $("#frmeditvacancy #uuid").val();
- }
- var evsvdata = {
- uuid:cuuid,
- datefrom: $("#frmeditvacancy #vacdatefrom").val(),
- dateto: $("#frmeditvacancy #vacdateto").val(),
- timefrom: $("#frmeditvacancy #timefrom").val(),
- hours: $("#frmeditvacancy #hours").val(),
- description: $("#frmeditvacancy #description").val(),
- staffuuid: $("#frmeditvacancy #staffuuid").val(),
- type: $("#frmeditvacancy #type").val()
- }
- var savesql = "";
- if (type == 'ins') {
- savesql = "INSERT INTO vacancycalendar (uuid, datefrom, dateto, timefrom, timeto, description, staffuuid, type,vacyear) VALUES "
- +"('" + parent.appdb.generate_uuid() + "', date("+encodeparam(evsvdata.datefrom, 'date')+"), date("+encodeparam(evsvdata.dateto, 'date')+"), "+encodeparam(evsvdata.timefrom, 'text')+", strftime(\"%H:%M\",time("+encodeparam(evsvdata.timefrom, 'text')+",'+"+evsvdata.hours+" hours')), "+encodeparam(evsvdata.description, 'text')+", "+encodeparam(evsvdata.staffuuid, 'text')+","+evsvdata.type+","+encodeparam(evsvdata.datefrom, 'year')+");";
- } else {
- savesql = "UPDATE vacancycalendar SET vacyear=" + encodeparam(evsvdata.datefrom, 'year') + ", datefrom = date("+encodeparam(evsvdata.datefrom, 'date')+"), dateto = date("+encodeparam(evsvdata.dateto, 'date')+"), timefrom = "+encodeparam(evsvdata.timefrom, 'text')+", timeto = strftime(\"%H:%M\",time("+encodeparam(evsvdata.timefrom, 'text')+",'+"+evsvdata.hours+" hours')), description = "+encodeparam(evsvdata.description, 'text')+", staffuuid = "+encodeparam(evsvdata.staffuuid, 'text')+", type = "+evsvdata.type+" WHERE uuid = '"+evsvdata.uuid+"';";
- }
- //dump("VACSAVESQL:" + savesql + "\n");
- parent.appdb.dbexec(savesql);
- load_table_vacancy();
-
- $("#frmeditvacancy #uuid").val("0");
- $("#edit_vacancy").modal('hide');
-}
-
-
-function set_selectyears() {
-
- var years = parent.appdb.dbquery("select strftime('%Y',coalesce(min(entrydate),date('now','-1 year'))) as minyear, strftime('%Y',date('now', '+1 year')) as maxyear from staff where uuid='"+pconfig.uuid+"';");
- var minyear = parseInt(years.sqldata[0].minyear);
- var maxyear = parseInt(years.sqldata[0].maxyear);
- for (var y=minyear;y<=maxyear;y++){
-
- var sel = "";
- if (y == pconfig.year) {
- sel=' selected="1" ';
-
- }
-
- $(".selyear").append("<option value=\""+y+"\""+sel+">"+y+"</option>");
- }
-
-}
-
-function saveyearvacdays() {
- var csel = "select * from staffvacancydays where staffuuid='"+pconfig.uuid+"' and vacancyyear='"+pconfig.year+"';";
- var days = 0;
- var hours = 0;
- if ($('#vacancyyeartotal').val() === ""){
- return;
- }
- if (pconfig.vacancyunit == "hours"){
- days = parseFloat($('#vacancyyeartotal').val().replace(',','.')) / 8;
- hours = $('#vacancyyeartotal').val();
- }else {
- days = parseFloat($('#vacancyyeartotal').val().replace(',','.'));
- hours = parseFloat($('#vacancyyeartotal').val().replace(',','.')) * 8;
- }
- var cnum = parent.appdb.dbquery(csel);
- var inssql = "INSERT INTO staffvacancydays (staffuuid,vacancyyear,days,hours) VALUES ('"+pconfig.uuid+"','"+pconfig.year+"',"+days+","+hours+");";
- if (cnum.sqldata.length > 0) {
- inssql = "UPDATE staffvacancydays SET days="+days+",hours="+hours+" where staffuuid='"+pconfig.uuid+"' and vacancyyear='"+pconfig.year+"';";
- }
- parent.appdb.dbexec(inssql);
- //calcvacancy();
-}
-
-
-
-function dlg_event(uuid, type) {
-
- if (type== "ins") {
-
- $('#btndeleteevent').hide();
-
- }else {
- $('#btndeleteevent').show();
- }
- $('#frmeditevent #freqinterval').hide();
- $('#frmeditevent #freqmonthly').hide();
- $('#frmeditevent #freqweekly').hide();
- $('#frmeditevent #freq_monthly_byday').show();
- $('#frmeditevent #freq_monthly_bymonthday').hide();
- $('#frmeditevent #freq').val("");
- $('#frmeditevent .active').removeClass('active');
- if ((type == 'upd') || (type == 'ins')) {
-
- var evdata = {
- uuid: '0',
- description: '',
- activityuuid:'',
- location: '',
- color: '',
- datefrom:new Date().toISOString().substring(0,10),
- dateto:'',
- staffuuid: pconfig.uuid,
- timefrom: '00:00',
- timeto: '00:00',
- freq: '',
- staffname: $("#staff_prename").val() + " " + $("#staff_surname").val()
- };
- //jsdump(JSON.stringify(pconfig) + "\n");
- //jsdump(JSON.stringify(evdata) + "\n");
- if (type == 'upd') {
- var evsql = "SELECT uuid, strftime(\"%d.%m.%Y\",datefrom) as datefrom, strftime(\"%d.%m.%Y\",dateto) as dateto, timefrom, timeto, description, location, color, freq, '"+ pconfig.uuid+"' as staffuuid FROM eventcalendar ev left join staffplanning st on (ev.uuid=st.eventcalendaruuid) where ev.uuid='" + uuid.uuid + "' group by ev.uuid;";
- evdata = parent.appdb.dbquery(evsql);
- evdata = evdata.sqldata[0];
- evdata['staffname'] = $("#staff_prename").val() + " " + $("#staff_surname").val();
- if (evdata.freq != '') {
- var tmpfreq = evdata.freq.split(';');
- for (var t in tmpfreq){
- if (tmpfreq[t] != '') {
- var spl = tmpfreq[t].split("=");
- evdata[spl[0].toLowerCase()] = spl[1].toLowerCase();
- }
- }
- }
- }
- for (var w in evdata) {
- if ($("#frmeditevent #" + w)) {
- // if (w == 'staffuuid') {
- // if (evdata[w] == '') {
- // $("#frmeditevent #" + w).multiselect('select',[]);
- // } else {
- // $("#frmeditevent #" + w).multiselect('select',evdata[w].split(','));
- // }
-
- // }
- // else if (w == 'color') {
- // $("#frmeditevent #color").val(evdata[w]);
- // $('#frmeditevent #color').minicolors('value',{color: evdata[w]});
- // }
- // else {
- $("#frmeditevent #" + w).val(evdata[w]);
- // }
- }
- }
- if ((evdata.freq == 'weekly') && (evdata.byday)) {
- var bd = evdata.byday.split(',');
- for (var i in bd){
- document.getElementById('weekly_byday_' + bd[i]).setAttribute("checked",true);
- $('#frmeditevent #weekly_byday_' + bd[i]).parent().addClass("active");
- }
- }
- if (evdata.freq == 'monthly') {
- $('#freq_monthly_byday').hide();
- $('#freq_monthly_bymonthday').hide();
- $('#pnl_monthly_byday').removeAttr("checked");
- $('#pnl_monthly_bymonthday').removeAttr("checked");
- if (evdata.byday) {
- document.getElementById('pnl_monthly_byday').setAttribute("checked",true);
- $('#frmeditevent #pnl_monthly_byday').parent().addClass("active");
- $('#freq_monthly_byday').show();
- var bd = evdata.byday.split(',');
- var adpos = new Array();
- var awday = new Array();
- for (var i in bd){
- var wday = bd[i].substr(bd[i].length-2);
- var pos = bd[i].substring(0,bd[i].length-2);
- awday.push(wday.toLowerCase());
- adpos.push(pos);
- }
-
- for (var i in adpos){
- document.getElementById('monthly_bydaypos_' + adpos[i]).setAttribute("checked",true);
- $('#frmeditevent #monthly_bydaypos_' + adpos[i]).parent().addClass("active");
- }
- for (var i in awday){
- document.getElementById('monthly_bydaywday_' + awday[i]).setAttribute("checked",true);
- $('#frmeditevent #monthly_bydaywday_' + awday[i]).parent().addClass("active");
- }
- }else if (evdata.bymonthday) {
- document.getElementById('pnl_monthly_bymonthday').setAttribute("checked",true);
- $('#frmeditevent #pnl_monthly_bymonthday').parent().addClass("active");
- $('#freq_monthly_bymonthday').show();
- var bd = evdata.bymonthday.split(',');
- for (var i in bd){
- document.getElementById('monthly_bymonthday_' + bd[i]).setAttribute("checked",true);
- $('#frmeditevent #monthly_bymonthday_' + bd[i]).parent().addClass("active");
- }
- }
- }
- setfreq();
- $("#edit_event").modal('show');
- }
-}
-
-
-function save_event() {
- var sql1 = new Array();
- var sql2 = new Array();
- if ($('#timefrom').val() == $('#timeto').val() || $('#timefrom').val() == "00:00" || $('#timeto').val() == "00:00"){
- errormsg("Erreur","les heures doivent être différent et différent de la valeur 00:00!");
- return false;
- }
- if ($('#timefrom').val() > $('#timeto').val()){
- errormsg("Erreur","l'heure de début ne peux pas être supérieur à l'heure de fin!");
- return false;
- }
- if (!$('#staffuuid').val()){
- errormsg("Erreur","Vous devez selectionner au moin 1 membre du staff!");
- return false;
- }
- if ($('#dateto').val() != '' && (encodeparam($('#datefrom').val()) > encodeparam($('#dateto').val())) ) {
- errormsg("Erreur","La Date début ne peut pas être supérieur à la date fin!");
- return false;
- }
- var type = 'ins';
- var cuuid = "";
- if ($("#frmeditevent #uuid").val() != 0) {
- type = 'upd';
- cuuid = $("#frmeditevent #uuid").val();
- } else {
- cuuid = parent.appdb.generate_uuid();
- }
- var freqdata = {};
- var cfreq = $("#frmeditevent #freq").val();
- $("#frmeditevent :input").each(function() {
- var input = $(this);
-
- if (input.attr("id") && (input.attr("id") != "staffuuid") && (input.attr("id") != "staffname")) {
- if ((input.attr("type") == "checkbox") && (input.attr("id").indexOf(cfreq) >= 0)){
- var xd = input.attr("id").split("_");
- if (input.attr("checked")) {
- if (!freqdata[xd[1]]) {
- freqdata[xd[1]] = new Array();
- }
- freqdata[xd[1]].push(input.val());
- }
- }
- else if ((input.attr("type") == "radio") && (input.attr("id").indexOf(cfreq) >= 0)) {
- var xd = input.attr("id").split("_");
- if (input.attr("checked")) {
- freqdata['freqtype'] = xd[2];
- }
- }
- else if ((input.attr("type") != "checkbox") && ((input.attr("type") != "radio"))){
- if ((input.attr("id") == 'interval') || (input.attr("id") == 'freq')) {
- freqdata[input.attr("id")] = input.val();
- } else if ((type == 'ins') && (input.attr("id") != 'staffuuid')) {
-
- sql1.push('"' + input.attr("id") + '"');
- if (input.attr("id") == 'uuid') {
- if (input.val() == "" || input.val() == "0") {
- sql2.push("'" + cuuid + "'");
- } else {
- sql2.push("'" + input.val() + "'");
- }
- } else {
- var ival = encodeparam(input.val(), input.attr('type'));
- sql2.push(ival);
- }
- } else {
- if ((input.attr("id") != 'uuid') && (input.attr("id") != 'staffuuid')){
- var ival = encodeparam(input.val(), input.attr('type'));
- sql2.push('"' + input.attr("id") + '"=' + ival);
- }
- }
- }
- }
-
- });
- if (!freqdata.freqtype) {
- freqdata['freqtype'] = curfreq.freqtype;
- }
-
- var strfreq ="";
- if (cfreq != "") {
- strfreq='FREQ=' + cfreq.toUpperCase()+';INTERVAL=' + freqdata.interval +';';
- if ((cfreq == 'weekly') && (freqdata.byday)){
- strfreq += 'BYDAY=' + freqdata.byday.join(",");
- }
- if ((cfreq == 'monthly') && (freqdata.bydaypos) || ((freqdata.bydaywday)) || (freqdata.bymonthday)){
- strfreq += freqdata.freqtype.toUpperCase() + '=';
- if (freqdata.freqtype == 'bymonthday') {
- strfreq += freqdata.bymonthday.join(',') + ";"
- }else {
- var abyday = new Array();
- for (var p in freqdata.bydaypos){
- for (var w in freqdata.bydaywday){
- abyday.push(freqdata.bydaypos[p] + freqdata.bydaywday[w]);
- }
- }
- strfreq += abyday.join(",");
- }
- }
- if (strfreq.slice(-1) == ';') {
- strfreq = strfreq.substring(0,strfreq.length-1);
- }
- }
- var staffuuids = $('#staffuuid').val();
- var delsql = "";
- var xsql = [];
- if (type != 'ins') {
- xsql.push("DELETE FROM staffplanning where eventcalendaruuid = '"+cuuid+"';");
- }
- var staffinssql = "";
-
- if (staffuuids && (staffuuids.length != 0)) {
-
- staffinssql = "INSERT INTO staffplanning (eventcalendaruuid,staffuuid) VALUES ";
- var tmps = [];
- var curcoworkerok = false;
- for (var s in staffuuids){
- if (staffuuids[s] == pconfig.uuid){
- curcoworkerok = true;
- }
- tmps.push("('"+cuuid+"','"+staffuuids[s]+"')");
- }
- if (!curcoworkerok){
- tmps.push("('"+cuuid+"','"+pconfig.uuid+"')");
- }
- staffinssql += tmps.join(',') + ";";
- xsql.push(staffinssql);
- }
- if (staffuuids.length == 0){
- staffinssql = "INSERT INTO staffplanning (eventcalendaruuid,staffuuid) VALUES ('"+cuuid+"','"+pconfig.uuid+"');";
- xsql.push(staffinssql);
- }
-
-
-
- if (type == 'upd') {
- sql2.push('freq=' + encodeparam(strfreq));
- xsql.push("UPDATE eventcalendar SET " + sql2.join(',') + " where \"uuid\"='" + cuuid + "';");
- } else {
- sql1.push('freq');
- sql2.push(encodeparam(strfreq));
- xsql.push("INSERT INTO eventcalendar (" + sql1.join(',') + ") VALUES (" + sql2.join(',') + ");");
- }
- dump(JSON.stringify(xsql));
- for (var i in xsql){
- parent.appdb.dbexec(xsql[i]);
- }
-
- load_event_data();
-
- $("#frmeditevent #uuid").val("0");
- $("#edit_event").modal('hide');
-}
-
-function confirm_delete_event() {
- $("#confirm_delete_event").modal('show');
- return false;
-}
-
-function delete_event() {
- parent.appdb.dbexec("DELETE FROM eventcalendar where uuid='" + $('#frmeditevent #uuid').val()+"';");
- parent.appdb.dbexec("DELETE FROM staffplanning where eventcalendaruuid='" + $('#frmeditevent #uuid').val()+"';");
- load_event_data();
- $("#confirm_delete_event").modal('hide');
-
- return false;
-}
-
-
-
-function setfreq() {
-
- curfreq.freq = $('#freq option:selected').val();
-
- $('#freqinterval').hide();
- $('#freqmonthly').hide();
- $('#freqweekly').hide();
- if (curfreq.freq != "") {
-
- $('#lblfreq').text(lblfreq[curfreq.freq]);
- $('#freqinterval').show();
- if (curfreq.freq != 'daily') {
- $('#freq' + curfreq.freq).show();
- }
- }
-
-}
-
-// function load_staff_selection(objid,option){
-// var stdata = parent.appdb.dbquery("select uuid, coalesce(surname,'') || ' ' || coalesce(prename,'') as name,case when color is null then '#000' else color end as color from staff order by surname,prename");
-
-// stdata = stdata.sqldata;
-// for (var s in stdata){
-// $('#' + objid).append('<option value="'+ stdata[s].uuid+'"><span style="color: '+stdata[s].color+';" >' +stdata[s].name+ '</span></option>');
-// }
-
-// var copt = {};
-// if (option) {
-// copt = option;
-// }
-// copt['enableHTML'] = true;
-// copt['nonSelectedText']="Sélectionner un(e) employé(e)...";
-// copt['numberDisplayed']=5;
-// copt['allSelectedText']='Tous';
-// copt['nSelectedText']=' selections';
-
-// $('#' + objid).multiselect(copt);
-
-// }
-
-function accept_vacancy(){
- var cuuid = "";
- if ($("#frmeditvacancy #uuid").val() != 0) {
- type = 'upd';
- cuuid = $("#frmeditvacancy #uuid").val();
- }
- var xsql = "UPDATE vacancycalendar SET accepted='1' where \"uuid\"='" + cuuid + "';";
- parent.appdb.dbexec(xsql);
- load_table_vacancy();
-
- $("#frmeditvacancy #uuid").val("0");
- $("#edit_vacancy").modal('hide');
-}
-
-function getlastyearsrest(){
- var weekhours = $('#staff_weekhours').val();
- if (weekhours === '') {
- $("#vacancylastyearrest").val(0);
- return;
- }
- var df = new Date(pconfig.year-1,0,1);
- var dt = new Date(pconfig.year-1,11,31);
- var vcalcrestsql = "select (select hours from staffvacancydays where staffuuid='"+pconfig.uuid+ "' and vacancyyear="+df.getFullYear()+")-SUM(dayhours) AS hours from (" +
- "select vd.daydate,case when daydate <= date('now') then 1 else 0 end as taken,case when vc.timefrom=vc.timeto then cast ("+weekhours+"/5 as real) else (cast (substr(vc.timeto,1,2) as int) + (cast(substr(vc.timeto,4,5) as int)/60)) - (cast(substr(vc.timefrom,1,2) as int) + (cast(substr(vc.timeto,4,5) as int)/60)) end as dayhours,type,case when type != -1 then accepted else '1' end as accepted "+
- "from vacancycalendar vc left join ( "+
- "select daydate from ( ";
-
- var yd = [];
- for (var dx=df;dx<=dt;dx.setDate(dx.getDate()+1)){
- yd.push("select date('"+dx.toISOString().substring(0,10)+"') as daydate");
- }
- vcalcrestsql += yd.join(" UNION ") +
- ") yd where strftime('%w',daydate) not in ('0','6') and daydate not in (select vacancydate from vacancy where vacancydate between '"+df.getFullYear()+"-01-01' and '"+dt.getFullYear()+"-12-31' and vacancydateto is null) " +
- ") vd on (vd.daydate between vc.datefrom and vc.dateto) " +
- "left join staffvacancydays svd on (vc.staffuuid=svd.staffuuid) " +
- "where vc.staffuuid='"+pconfig.uuid+ "' and daydate is not null group by daydate) where type in (0,1) and taken=1 and accepted=1 group by taken,accepted;";
- //dump("SQLREST:" + vcalcrestsql + "\n");
- var vcalc = parent.appdb.dbquery(vcalcrestsql);
- //dump(JSON.stringify(vcalc) + "\n");
- if (vcalc && vcalc.sqldata[0]){
-
- $("#vacancylastyearrest").val(vcalc.sqldata[0].hours);
- }else {
- $("#vacancylastyearrest").val(0);
- }
- return;
-}
+++ /dev/null
-//Source-code licensed under EUPL v1.2 ( Copyright 2019 By DKS s.à r.l. - Kilian Saffran - Luxembourg )
-var pconfig = {};
-var delcoworker = null;
-var wh = window.innerHeight - 100;
-var tblstaff = null;
-
-function initdata() {
-
- loadtable();
- set_infoheader("");
- pconfig = parent.apppref.getpreference("staff");
- if (!pconfig.printlayout) {
- pconfig.printlayout = 'list';
- parent.apppref.setpreference("staff", pconfig);
- }
-
- }
-
-function loadtable() {
- var delbtn = "";
- if (parent.app.info.modules.stafflist.delete == true){
- delbtn = "<button type=\"button\" class=\"btn btn-danger\" onclick=\"confirm_delete_coworker(''' || uuid || ''');\" title=\"supprimer\"><span class=\"glyphicon glyphicon-remove\"></span></button>";
- }
- var sql = "SELECT '<button type=\"button\" class=\"btn btn-primary\" onclick=\"parent.app.loadpage(''modules/staff/coworker.html'',{uuid:''' || uuid || '''});\" title=\"editer\"><span class=\"glyphicon glyphicon-pencil\"></span></button>"+delbtn+"' as action, coalesce(prename,'') || '<br/>' || coalesce(surname,'') as name,case when color is not null then '<div style=\"width: 50px; height: 30px;background-color: ' || color ||';\"></div>' else null end color, coalesce(address,'')|| '<br/>' || coalesce(zip,'') || ' ' || coalesce(city,'') || '<br/>' || coalesce(country,'') as address, case when phone is not null then '<span class=\"glyphicon glyphicon-earphone\" aria-hidden=\"true\"></span>: ' || phone || '<br/>' else '' end || case when email is not null then '<span class=\"glyphicon glyphicon-envelope\" aria-hidden=\"true\"></span>:' || email else '' end as phonemail, coalesce(jobtitle,'') || '<br/>' || case when entrydate is not null then 'à partir du: ' || strftime('%d.%m.%Y',entrydate) else '' end || case when exitdate is not null then ' jusqu''au: ' || strftime('%d.%m.%Y',exitdate) else '' end as jobtitle FROM staff;";
- //dump("STAFFSQL:" +sql + "\n");
- var data = parent.appdb.dbqueryarray(sql);
-
- var headerdata = getlabels(data.sqlhead.join(","));
- $("#tbl_staff").html("");
- tblstaff = $("#tbl_staff").dataTable({
- "language": {
- "url": "../../../oldvendor/js/locale/datatable_fr.json"
- },
- "data": data.sqldata,
- "columns": headerdata,
- "paging": false,
- "scrollY": wh + "px",
- "scrollCollapse": true,
- "ordering": true,
- "info": false,
- "filter": true,
- "destroy": true
- });
-// $('#tbl_staff').on('search.dt', function() {
-// pconfig.filter = tblstaff.api().search();
-// parent.apppref.setpreference("pageconfig.staff", pconfig);
-// });
-
- $('#tbl_staff').on('order.dt', function() {
- pconfig.order = tblstaff.fnSettings().aaSorting;
- parent.apppref.setpreference("pageconfig.staff", pconfig);
-
- });
-// if (pconfig.filter) {
-// tblstaff.fnFilter(pconfig.filter);
-// }
- if (pconfig.order) {
- tblstaff.fnSort(pconfig.order);
- }
- if (/*(!pconfig.filter) && */ (!pconfig.order)) {
- tblstaff.fnDraw();
- }
-}
-
-
-
-function add_coworker() {
- var newuuid = parent.appdb.generate_uuid();
- parent.appdb.dbexec("insert into staff (uuid) VALUES ('" + newuuid + "');");
- parent.app.loadpage('modules/staff/coworker.html',{uuid:newuuid});
-
-}
-
-function confirm_delete_coworker(myuuid) {
-
- delcoworker = myuuid;
- $("#confirm_delete_coworker").modal('show');
- return false;
-}
-
-function delete_coworker() {
- //var frmdata = new Object();
- //parent.appdb.dbexec("DELETE FROM planningstaff where staffuuid='"+delcoworker +"';");
- var evdel = parent.appdb.dbquery("select eventcalendaruuid,count(staffuuid) as cnt from staffplanning where staffuuid='" + delcoworker + "';");
-
- parent.appdb.dbexec("DELETE FROM staffvacancydays where staffuuid='" + delcoworker + "';");
- parent.appdb.dbexec("DELETE FROM vacancycalendar where staffuuid='" + delcoworker + "';");
- parent.appdb.dbexec("DELETE FROM staffplanning where staffuuid='" + delcoworker + "';");
- parent.appdb.dbexec("DELETE FROM staff where uuid='" + delcoworker + "';");
- for (var e in evdel.sqldata) {
- if (evdel.sqldata[e].cnt == 1) {
- parent.appdb.dbexec("DELETE FROM eventcalendar where uuid='" + evdel.sqldata[e].eventcalendaruuid + "';");
- }
- }
- //
- delcoworker = null;
- loadtable();
- //
- $("#confirm_delete_coworker").modal('hide');
-
-}
-
-function load_coworker(couuid){
- //"coworker uuid:" + couuid + "\n");
- var cwdata = parent.apppref.getpreference("pageconfig.coworker");
- var cow = new Object();
- if (cwdata && cwdata !== ""){
- cow = JSON.parse(cwdata);
- }
- //dump("Current CoWorker cfg:" +JSON.stringify(cow) + "\n");
- cow.uuid = couuid;
- //dump("New CoWorker cfg:" +JSON.stringify(cow) + "\n");
- parent.apppref.setpreference("pageconfig.coworker",cow);
- globelreq.send_request({page:'coworker',
- module:'staff',
- data:null,
- header:'Employé(e)'});
-
-}
\ No newline at end of file
+++ /dev/null
-<!DOCTYPE html>
-
-<html lang="fr">
-<head>
- <meta charset="utf-8">
-
- <title>StaffList</title>
- <meta name="viewport" content="width=device-width, initial-scale=1">
-
- <link href="../../../oldvendor/css/bootstrap.min.css" rel="stylesheet" type="text/css">
- <!--<link href="../../../oldvendor/css/bootstrap-theme.min.css" rel="stylesheet" type="text/css">-->
- <link href="../../../oldvendor/css/datatables.min.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/dataTables.bootstrap.min.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/glyphicons.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/style.css" rel="stylesheet" type="text/css">
- <link href="../../../oldvendor/css/modules.css" rel="stylesheet" type="text/css"><!-- Fav and touch icons -->
-
-
-</head>
-
-<body>
- <nav class="navbar navbar-inverse navbar-fixed-top">
-
- <div class="">
- <ul class="nav navbar-nav navbar-left">
- <li style="padding-top: 7px; padding-left: 10px; color: #fff;font-size: 24px;">Employé(e)s</li>
- <li style="padding-top: 7px; padding-left: 10px;"><div class="btn-group" role="group" aria-label="topbar" ">
- <button onclick="add_coworker();" class="btn btn-primary"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button>
-
-
- </div>
- <span class="pagehead" id="pagehead" style="color: #fff"></span></li>
- </ul>
- </div>
-
- </nav>
- <div class="container-fluid" style="padding-top: 55px;">
- <!--<span class="pagehead" id="pagehead">Personnel</span> -->
- <div class="btn-group" style="z-index: 10;">
-
- </div>
- <div style="margin-top: -30px;z-index: -10;">
- <table id="tbl_staff" class="table table-striped">
- </table>
- </div>
- <div class="modal fade" id="confirm_delete_coworker">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button data-dismiss="modal" class="close" type="button"><span aria-hidden="true">x</span><span class="sr-only">Close</span></button>
-
- <h4 class="modal-title">Supprimer un collaborateur</h4>
- </div><!-- dialog contents -->
-
- <div class="modal-body">
- Êtes vous sûre de supprimer ce collaborateur et tous ces données?<br>
- </div><!-- dialog buttons -->
-
- <div class="modal-footer">
- <button aria-hidden="true" data-dismiss="modal" class="btn">Non</button> <button onclick="delete_coworker();" class="btn btn-primary">Oui</button>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <script src="../../../oldvendor/js/jquery.min.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/bootstrap.min.js" type="text/javascript"></script>
- <script src="../../../oldvendor/js/datatables.min.js" type="text/javascript"></script>
- <script src="../../../js/webpreferences.js" type="text/javascript"></script>
- <script src="../../../js/webdatabase.js" type="text/javascript"></script>
- <script src="../../../js/module_functions.js" type="text/javascript"></script>
- <script src="../../../js/labels.js" type="text/javascript"></script>
- <script src="js/staff.js" type="text/javascript"></script>
-</body>
-</html>
# $self->{$x} = $p->{$x};
#}
$self->{dbtype} = 'PgPP'; #PgPP,SQLite
- #$self->{dbhost} = 'sql629.your-server.de';
- $self->{dbhost} = 'localhost';
+ $self->{dbhost} = 'sql629.your-server.de';
+ #$self->{dbhost} = 'localhost';
$self->{dbname} = 'dks_lu';
$self->{dbuser} = 'dks_lu';
- $self->{dbpassword} = 'dks_lu';
- #$self->{dbpassword} = 'DcrWuLd4KU3u68xd';
+ #$self->{dbpassword} = 'dks_lu';
+ $self->{dbpassword} = 'DcrWuLd4KU3u68xd';
return $self;
}
#!/usr/bin/perl
use strict;
+use File::Basename qw/dirname basename/;
use lib ('./lib');
use lib ('./api/lib');
-use File::Basename;
+
use Template;
use CGI;
use CGI::Cookie;
my $sess = ();
my $se = session->new();
my $page = "index.tt";
-my $basepath = substr(dirname($0),length($ENV{"DOCUMENT_ROOT"}));
+my $basepath = substr(dirname($ENV{"SCRIPT_FILENAME"}),length($ENV{"DOCUMENT_ROOT"}));
+# my $basepath = $ENV{"DOCUMENT_ROOT"};
my $filepath = substr($cgi->url({-absolute=>1}),length($basepath)+1);
#if (exists($p->{p})){
if ($filepath ne ""){
# }
print $cgi->header(-type=>'text/html', -charset=>"utf-8",-cookie => $cookie);
-my $template = Template->new({INCLUDE_PATH => [dirname($0).'/tmpl']});
+my $template = Template->new({INCLUDE_PATH => [dirname($ENV{"SCRIPT_FILENAME"}).'/tmpl']});
my @lv = split(/\//,$filepath);
my $absnum = scalar(@lv)-1;
my $vars->{abspath} = "";
for (my $i=0;$i<$absnum;$i++){
$vars->{abspath} .= "../";
}
-
+$vars->{filepath} = $filepath;
$vars->{basepath} = $basepath;
$vars->{page} = $page;
$vars->{pagename} = basename($page);
$vars->{pagename} =~ s/\.tt$//;
my ($appname) = $ENV{REQUEST_URI} =~ /.*\/apps\/(\w+)\/.*/;
-# $vars->{requri} = $ENV{REQUEST_URI};
+#$vars->{requri} = $ENV{REQUEST_URI};
if ($p->{sid} ne ""){
$vars->{appname} = $appname;
if (exists($sess->{$appname})){
# for my $header ( keys %headers ) {
# print "$header: $headers{$header}<br/>";
# }
-# for my $e ( keys %ENV ) {
-# print "ENV: $e: ".$ENV{$e}."<br/>";
-# }
-# print '/*'.Dumper($vars).'*/';
-# print '/*'.Dumper($p).'*/';
-
}
-
+ var https = 'https';
$(document).ready(function() {
- app.baseurl = ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + location.pathname.substring(0,location.pathname.lastIndexOf('/apps/')+6);
- var tmpurl = ('https' == document.location.protocol ? 'https' : 'http') + '://' + location.host + location.pathname.substring(0,location.pathname.lastIndexOf('/'));
+
+ app.baseurl = https + '://' + location.host + location.pathname.substring(0,location.pathname.lastIndexOf('/apps/')+6);
+ var tmpurl = https + '://' + location.host + location.pathname.substring(0,location.pathname.lastIndexOf('/'));
app.appname = tmpurl.substring(app.baseurl.length);
app.getinfo();
app.loadsites();
+var https ='https';
function logout() {
- myurl = ('https:' == document.location.protocol ? 'https' : 'http') + '://'+ location.host + location.path;
+ myurl = https + '://'+ location.host + '/apps/';
$.ajax({
async: false,
url: myurl,
dbquery: function(sQuery){
var type='querysorted';
var result= {sqldata:[]};
-
+ //console.log(sQuery);
$.ajax({
encoding:"UTF-8",
[% END %]
</div>
</div>
- <!-- <button class="btn btn-default" id="mnubtn_calendar" onclick="app.loadpage('modules/calendar/index.html');"><img src="../img/modules/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier</button> -->
- <!-- <button class="btn btn-default" id="mnubtn_calorganisation" onclick="app.loadpage('modules/calendar/calorganisation.html');" ><img src="../img/modules/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier Organisation</button> -->
- <!-- <button class="btn btn-default" id="mnubtn_calvacancy" onclick="app.loadpage('modules/calendar/calvacancy.html');" ><img src="../img/modules/Calendar.svg" style="width: 32px; height: 32px;"/><br/>Calendrier Congés</button> -->
- [% IF creorga.modules.creche.menu %]
+
+ [% IF creorga.modules.staff.menu %]
<button class="btn btn-default" id="mnubtn_stafflist" onclick="app.loadpage('modules/staff/stafflist.html');" ><img src="../img/modules/Team.svg" style="width: 32px; height: 32px; "/><br/>Employé(e)s</button>
[% END %]
</div>
<div class="ml-auto">
<div class="btn-group" role="group" aria-label="Right">
<div class="btn-group">
+ [% IF creorga.modules.creche.menu %]
<button type="button" class="btn btn-default" id="mnubtn_creche" onclick="app.loadpage('modules/creche/creche.html');"><img src="../img/modules/Home.svg" style="width: 32px; height: 32px;"/><br/>Crèche</button>
+ [% END %]
<select id="crechelist" class="btn btn-default" class="form-control" onchange="app.changesite();">
</select>
<iframe src="modules/childs/index.html" id="appframe" style="width: 100%; height: calc(100vh - 90px); margin: 0px; padding: 0px;"></iframe>
- </main><!-- /.container -->
+ </main>
<script src="../vendor/jquery/jquery.min.js"></script>
<div class="field form-inline">
<label for="staff_iban" style="width: 140px;">Compte Bancaire</label> <input type="text" value="" style="width: 60%;" id="staff_iban" class="form-control">
</div>
- <div class="field" id="pwddata" style="display: none;">
- <label for="staff_password">Mot de Passe</label>
- <div class="input-group">
- <input type="password" value="" id="staff_password" class="form-control">
- <div class="input-group-addon">(Min: 4 charatères)</div>
- </div>
- </div>
+
</form>
</div>
var maxdayhours = null;
var maxhalfdayhours = null;
var tblvac = null;
-//var lictype = parent.apppref.getpreference("support.lictype");
+
function initdata() {
load_helpers();
pconfig = {};
}
parent.appdb.dbexec("update vacancycalendar set vacyear=strftime('%Y',datefrom) where vacyear is null;");
- //"get CoWorker cfg:" +JSON.stringify(pconfig) + "\n");
+
if (!pconfig.year) {
pconfig.year=new Date().getFullYear();
}
pconfig.printlayout = 'list';
parent.apppref.setpreference("coworker",pconfig);
}
- var cdatasql = "SELECT jobtitle, prename, surname, address, zip, city, country, entrydate, exitdate, iban, bic, accountname, phone, email, uuid,color,weekhours,maxdayhours,case when password is not null and length(password) > 3 then 1 else 0 end as passwordset FROM staff where uuid='" + pconfig.uuid + "';";
+ var cdatasql = "SELECT jobtitle, prename, surname, address, zip, city, country, entrydate, exitdate, iban, bic, accountname, phone, email, uuid,color,weekhours,maxdayhours FROM staff where uuid='" + pconfig.uuid + "';";
var cdata = parent.appdb.dbquery(cdatasql);
cdata = cdata.sqldata[0];
for (var ci in cdata) {
}
}
-
- // var crdata = parent.appdb.dbquery("select stafflist from creche;");
- // if ((crdata) && (crdata.sqldata[0].stafflist == "1")){
- // $("#pwddata").hide();
- // }
- // if (cdata) {
- // set_infoheader(cdata.prename + " " + cdata.surname);
- // }
$('#staff_color').minicolors({theme:'bootstrap'});
set_selectyears();
- //load_staff_selection('staffuuid');
-
if (pconfig && pconfig.activetab) {
$('a[href="#'+pconfig.activetab+'"]').tab('show');
}else{
$('a[href="#vacancy"]').tab('show');
pconfig.activetab = 'vacancy';
}
-
-// if (pconfig && pconfig.vacancyunit){
-// //dump("has vacancy unit:" + pconfig.vacancyunit + "\n");
-// $('#vacancy_unit').val(pconfig.vacancyunit);
-// }else {
pconfig.vacancyunit = "hours";
-// $('#vacancy_unit').val("days");
-// }
-
-
}
[% END %]
[% IF creorga.modules.staff.planning %]
function load_event_data() {
- //dump("Load event Table!\n");
+
var where = new Array();
where.push(" st.uuid in ('"+ pconfig.uuid + "')");
for (var c in caldata) {
var tblrow = "<tr>";
tblrow += '<td class="noprint"><button type="button" class="btn btn-primary" onclick="dlg_event({uuid:\''+caldata[c].uuid+'\'},\'upd\');" title="editer"><span class="glyphicon glyphicon-pencil"></span></button></td>';
- //tblrow += "<td><span style=\"display: none;\">"+caldata[c].description+"</span><strong style=\"color:"+ caldata[c].color +"\">" + caldata[c].description + "</strong></td>";
- //tblrow += "<td>" + caldata[c].staffnames + "</td>";
+
tblrow += "<td>" + caldata[c].tbldatefrom + "</td>";
tblrow += "<td>" + caldata[c].timefrom + "- " + caldata[c].timeto + "</td>";
tblrow += "<td>" + rule2.toText() + "</td>";
} catch (ex){
- //"ERROR! loading data!" + ex + " FREQ:" + freq2 + "\n");
+
}
tblrow += "</tr>";
tblbody.push(tblrow);
}
-
- //load table
+
$("#tbl_activity").append(tblbody.join(''));
$("#tbl_activity").append("</tbody>");
freq: '',
staffname: $("#staff_prename").val() + " " + $("#staff_surname").val()
};
- //jsdump(JSON.stringify(pconfig) + "\n");
- //jsdump(JSON.stringify(evdata) + "\n");
+
if (type == 'upd') {
var evsql = "SELECT uuid, strftime(\"%d.%m.%Y\",datefrom) as datefrom, strftime(\"%d.%m.%Y\",dateto) as dateto, timefrom, timeto, description, location, color, freq, '"+ pconfig.uuid+"' as staffuuid FROM eventcalendar ev left join staffplanning st on (ev.uuid=st.eventcalendaruuid) where ev.uuid='" + uuid.uuid + "' group by ev.uuid;";
evdata = parent.appdb.dbquery(evsql);
}
for (var w in evdata) {
if ($("#frmeditevent #" + w)) {
- // if (w == 'staffuuid') {
- // if (evdata[w] == '') {
- // $("#frmeditevent #" + w).multiselect('select',[]);
- // } else {
- // $("#frmeditevent #" + w).multiselect('select',evdata[w].split(','));
- // }
-
- // }
- // else if (w == 'color') {
- // $("#frmeditevent #color").val(evdata[w]);
- // $('#frmeditevent #color').minicolors('value',{color: evdata[w]});
- // }
- // else {
+
$("#frmeditevent #" + w).val(evdata[w]);
- // }
+
}
}
if ((evdata.freq == 'weekly') && (evdata.byday)) {
}
-// function load_staff_selection(objid,option){
-// var stdata = parent.appdb.dbquery("select uuid, coalesce(surname,'') || ' ' || coalesce(prename,'') as name,case when color is null then '#000' else color end as color from staff order by surname,prename");
-
-// stdata = stdata.sqldata;
-// for (var s in stdata){
-// $('#' + objid).append('<option value="'+ stdata[s].uuid+'"><span style="color: '+stdata[s].color+';" >' +stdata[s].name+ '</span></option>');
-// }
-
-// var copt = {};
-// if (option) {
-// copt = option;
-// }
-// copt['enableHTML'] = true;
-// copt['nonSelectedText']="Sélectionner un(e) employé(e)...";
-// copt['numberDisplayed']=5;
-// copt['allSelectedText']='Tous';
-// copt['nSelectedText']=' selections';
-
-// $('#' + objid).multiselect(copt);
-
-// }
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="generator" content="Own DKS Generator" />
- <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-touch-icon-57x57.png">
- <link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-touch-icon-60x60.png">
- <link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-touch-icon-72x72.png">
- <link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-touch-icon-76x76.png">
- <link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-touch-icon-114x114.png">
- <link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-touch-icon-120x120.png">
- <link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-touch-icon-144x144.png">
- <link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-touch-icon-152x152.png">
- <link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-touch-icon-180x180.png">
- <link rel="icon" type="image/png" href="img/favicon/favicon-32x32.png" sizes="32x32">
- <link rel="icon" type="image/png" href="img/favicon/android-chrome-192x192.png" sizes="192x192">
- <link rel="icon" type="image/png" href="imgfavicon/favicon-96x96.png" sizes="96x96">
- <link rel="icon" type="image/png" href="img/favicon/favicon-16x16.png" sizes="16x16">
+ <link rel="apple-touch-icon" sizes="57x57" href="[% abspath %]img/favicon/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="60x60" href="[% abspath %]img/favicon/apple-touch-icon-60x60.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="[% abspath %]img/favicon/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="[% abspath %]img/favicon/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="[% abspath %]img/favicon/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="[% abspath %]img/favicon/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="[% abspath %]img/favicon/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="[% abspath %]img/favicon/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="[% abspath %]img/favicon/apple-touch-icon-180x180.png">
+ <link rel="icon" type="image/png" href="[% abspath %]img/favicon/favicon-32x32.png" sizes="32x32">
+ <link rel="icon" type="image/png" href="[% abspath %]img/favicon/android-chrome-192x192.png" sizes="192x192">
+ <link rel="icon" type="image/png" href="[% abspath %]imgfavicon/favicon-96x96.png" sizes="96x96">
+ <link rel="icon" type="image/png" href="[% abspath %]img/favicon/favicon-16x16.png" sizes="16x16">
<meta name="theme-color" content="#ffffff">
- <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.min.css" >
- <link rel="stylesheet" href="css/apps.css" >
- <link rel="stylesheet" href="vendor/fontawesome/css/all.min.css" >
- <link rel="stylesheet" href="css/shop.css" >
+ <link rel="stylesheet" href="[% abspath %]vendor/bootstrap/css/bootstrap.min.css" >
+ <link rel="stylesheet" href="[% abspath %]css/apps.css" >
+ <link rel="stylesheet" href="[% abspath %]vendor/fontawesome/css/all.min.css" >
+ <link rel="stylesheet" href="[% abspath %]css/shop.css" >
<!-- <link rel="stylesheet" href="css/site.css" > -->
<title>DKS - Apps</title>
</head>
<div class="product-grid2">
<div class="product-image2">
<a href="javascript:window.open('creorga/index.html','_blank');">
- <img class="pic-1" src="img/apps/creorgalogo.svg">
- <img class="pic-2" src="img/apps/creorgalogo.svg">
+ <img class="pic-1" src="[% abspath %]img/apps/creorgalogo.svg">
+ <img class="pic-2" src="[% abspath %]img/apps/creorgalogo.svg">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/hourtraxlogo.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/hourtraxlogo.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/hourtraxlogo.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/hourtraxlogo.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/invoicejournallogo.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/invoicejournallogo.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/invoicejournallogo.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/invoicejournallogo.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/coloradiologo.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/coloradiologo.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/coloradiologo.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/coloradiologo.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/cashboxlogo.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/cashboxlogo.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/cashboxlogo.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/cashboxlogo.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/dkstools.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/dkstools.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/dkstools.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/dkstools.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/websiteeditorlogo.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/websiteeditorlogo.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/websiteeditorlogo.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/websiteeditorlogo.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<div class="product-grid2">
<div class="product-image2">
<a href="">
- <img class="pic-1" src="img/apps/dksvpn.svg" style="opacity: 0.2;">
- <img class="pic-2" src="img/apps/dksvpn.svg" style="opacity: 0.2;">
+ <img class="pic-1" src="[% abspath %]img/apps/dksvpn.svg" style="opacity: 0.2;">
+ <img class="pic-2" src="[% abspath %]img/apps/dksvpn.svg" style="opacity: 0.2;">
</a>
<!--<ul class="social">
<li><a href="#" data-tip="Quick View"><i class="fa fa-eye"></i></a></li>
<hr>
</div>
- <script src="vendor/jquery/jquery.min.js"></script>
- <script src="vendor/bootstrap/js/bootstrap.bundle.min.js" ></script>
- <script src="js/apps.js"></script>
+ <script src="[% abspath %]vendor/jquery/jquery.min.js"></script>
+ <script src="[% abspath %]vendor/bootstrap/js/bootstrap.bundle.min.js" ></script>
+ <script src="[% abspath %]js/apps.js"></script>
</body>
</html>
\ No newline at end of file
# print Dumper($vars);
my $skl = dirname($page);
# print Dumper($template);
-$template->process("skeleton/index.tt",$vars) || die "Template process failed: ", $template->error(), "\n";
+$template->process("skeleton/index.tt",$vars) || die "Template process failed X: ", $template->error(), "\n";
# my %headers = map { $_ => $cgi->http($_) } $cgi->http();
# print "Got the following headers:\n";
# for my $header ( keys %headers ) {
<strong>Links</strong>
</p>
<ul style="list-style: none;">
- <li class=""><a class="text-white" href="impressum.html">Impressum</a></li>
- <li class=""><a class="text-white" href="agb.html">AGB</a></li>
+ <li class=""><a class="text-white" href="[% abspath %]impressum.html">Impressum</a></li>
+ <li class=""><a class="text-white" href="[% abspath %]agb.html">AGB</a></li>
</ul>