Prepare structure for upstream merge
This commit is contained in:
parent
98491ff277
commit
d9c567ca3d
@ -1,158 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) 2013 Jean-François Ferry <jfefe@aternatik.fr>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file resource/core/ajax/resource_action.json.php
|
|
||||||
* \ingroup resource
|
|
||||||
* \brief This file is used for resource planning
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php
|
|
||||||
if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
|
||||||
|
|
||||||
// Change this following line to use the correct relative path (../, ../../, etc)
|
|
||||||
$res=0;
|
|
||||||
if (! $res && file_exists("../../../main.inc.php")) $res=@include '../../../main.inc.php'; // to work if your module directory is into dolibarr root htdocs directory
|
|
||||||
if (! $res && file_exists("../../../../main.inc.php")) $res=@include '../../../../main.inc.php'; // to work if your module directory is into a subdir of root htdocs directory
|
|
||||||
|
|
||||||
if (! $res) die("Include of main fails");
|
|
||||||
// Change this following line to use the correct relative path from htdocs
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
|
|
||||||
|
|
||||||
dol_include_once('/resource/class/resource.class.php');
|
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
|
|
||||||
// Get parameters
|
|
||||||
$id = GETPOST('id','int');
|
|
||||||
$action = GETPOST('action','alpha');
|
|
||||||
|
|
||||||
$start = GETPOST('start','int');
|
|
||||||
$end = GETPOST('end','int');
|
|
||||||
$fk_resource = GETPOST('fk_resource','int');
|
|
||||||
|
|
||||||
|
|
||||||
// Get event in an array
|
|
||||||
$eventarray=array();
|
|
||||||
|
|
||||||
$sql = 'SELECT a.id,a.label,';
|
|
||||||
$sql.= ' a.datep,';
|
|
||||||
$sql.= ' a.datep2,';
|
|
||||||
$sql.= ' a.datea,';
|
|
||||||
$sql.= ' a.datea2,';
|
|
||||||
$sql.= ' a.percent,';
|
|
||||||
$sql.= ' a.fk_user_author,a.fk_user_action,a.fk_user_done,';
|
|
||||||
$sql.= ' a.priority, a.fulldayevent, a.location,';
|
|
||||||
$sql.= ' a.fk_soc, a.fk_contact,';
|
|
||||||
$sql.= ' ca.code';
|
|
||||||
$sql.= ' FROM ('.MAIN_DB_PREFIX.'c_actioncomm as ca,';
|
|
||||||
$sql.= " ".MAIN_DB_PREFIX.'user as u,';
|
|
||||||
$sql.= " ".MAIN_DB_PREFIX."actioncomm as a)";
|
|
||||||
if($fk_resource > 0) {
|
|
||||||
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'element_resources as r ON a.id = r.element_id ';
|
|
||||||
}
|
|
||||||
$sql.= ' WHERE a.fk_action = ca.id';
|
|
||||||
if($fk_resource > 0) {
|
|
||||||
$sql.= " AND r.resource_id = '".$db->escape($fk_resource)."'";
|
|
||||||
}
|
|
||||||
$sql.= ' AND a.fk_user_author = u.rowid';
|
|
||||||
$sql.= ' AND a.entity IN ('.getEntity().')';
|
|
||||||
if ($actioncode) $sql.=" AND ca.code='".$db->escape($actioncode)."'";
|
|
||||||
if ($pid) $sql.=" AND a.fk_project=".$db->escape($pid);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($type) $sql.= " AND ca.id = ".$type;
|
|
||||||
if ($status == 'done') { $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep2 <= '".$db->idate($now)."'))"; }
|
|
||||||
if ($status == 'todo') { $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep2 > '".$db->idate($now)."'))"; }
|
|
||||||
if ($filtera > 0 || $filtert > 0 || $filterd > 0)
|
|
||||||
{
|
|
||||||
$sql.= " AND (";
|
|
||||||
if ($filtera > 0) $sql.= " a.fk_user_author = ".$filtera;
|
|
||||||
if ($filtert > 0) $sql.= ($filtera>0?" OR ":"")." a.fk_user_action = ".$filtert;
|
|
||||||
if ($filterd > 0) $sql.= ($filtera>0||$filtert>0?" OR ":"")." a.fk_user_done = ".$filterd;
|
|
||||||
$sql.= ")";
|
|
||||||
}
|
|
||||||
$sql.= ' GROUP BY a.id';
|
|
||||||
// Sort on date
|
|
||||||
$sql.= ' ORDER BY datep';
|
|
||||||
//print $sql;
|
|
||||||
|
|
||||||
dol_syslog("comm/action/index.php sql=".$sql, LOG_DEBUG);
|
|
||||||
$resql=$db->query($sql);
|
|
||||||
if ($resql)
|
|
||||||
{
|
|
||||||
$num = $db->num_rows($resql);
|
|
||||||
$i=0;
|
|
||||||
while ($i < $num)
|
|
||||||
{
|
|
||||||
$obj = $db->fetch_object($resql);
|
|
||||||
|
|
||||||
// Create a new object action
|
|
||||||
$event=new ActionComm($db);
|
|
||||||
$event->id=$obj->id;
|
|
||||||
$event->datep=$db->jdate($obj->datep); // datep and datef are GMT date
|
|
||||||
$event->datef=$db->jdate($obj->datep2);
|
|
||||||
$event->type_code=$obj->code;
|
|
||||||
$event->libelle=$obj->label;
|
|
||||||
$event->percentage=$obj->percent;
|
|
||||||
$event->author->id=$obj->fk_user_author; // user id of creator
|
|
||||||
$event->usertodo->id=$obj->fk_user_action; // user id of owner
|
|
||||||
$event->userdone->id=$obj->fk_user_done; // deprecated
|
|
||||||
// $event->userstodo=... with s after user, in future version, will be an array with all id of user assigned to event
|
|
||||||
$event->priority=$obj->priority;
|
|
||||||
$event->fulldayevent=$obj->fulldayevent;
|
|
||||||
$event->location=$obj->location;
|
|
||||||
|
|
||||||
$event->societe->id=$obj->fk_soc;
|
|
||||||
$event->contact->id=$obj->fk_contact;
|
|
||||||
|
|
||||||
|
|
||||||
$eventarray[]=$event;
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dol_print_error($db);
|
|
||||||
}
|
|
||||||
|
|
||||||
//var_dump($eventarray);
|
|
||||||
foreach ($eventarray as $day => $event) {
|
|
||||||
$event_json[] = array(
|
|
||||||
'id' => $event->id,
|
|
||||||
'title' => $event->libelle,
|
|
||||||
'start' => $event->datep,
|
|
||||||
'end' => $event->datef,
|
|
||||||
'end' => $event->datef,
|
|
||||||
'allDay' => $event->fulldayevent?true:false,
|
|
||||||
'url' => dol_buildpath("/comm/action/fiche.php",1).'?id='. $event->id
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//var_dump($event_json);
|
|
||||||
echo json_encode($event_json);
|
|
||||||
|
|
||||||
|
|
||||||
$db->close();
|
|
||||||
?>
|
|
||||||
@ -278,23 +278,6 @@ class modResource extends DolibarrModules
|
|||||||
);
|
);
|
||||||
$r++;
|
$r++;
|
||||||
|
|
||||||
// Menus declaration
|
|
||||||
$this->menu[$r]=array(
|
|
||||||
'fk_menu'=>'fk_mainmenu=tools,fk_leftmenu=resource',
|
|
||||||
'type'=>'left',
|
|
||||||
'titre'=> 'MenuResourcePlanning',
|
|
||||||
'mainmenu'=>'tools',
|
|
||||||
'leftmenu'=> '',
|
|
||||||
'url'=> '/resource/resource_planning.php',
|
|
||||||
'langs'=> 'resource@resource',
|
|
||||||
'position'=> 101,
|
|
||||||
'enabled'=> '1',
|
|
||||||
'perms'=> '$user->rights->resource->read',
|
|
||||||
'user'=> 0
|
|
||||||
);
|
|
||||||
$r++;
|
|
||||||
|
|
||||||
|
|
||||||
// Exports
|
// Exports
|
||||||
$r = 1;
|
$r = 1;
|
||||||
|
|
||||||
@ -148,18 +148,6 @@ else
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Action Bar
|
|
||||||
print '<div class="tabsAction">';
|
|
||||||
print '<div class="inline-block divButAction">';
|
|
||||||
print '<a href="resource_planning.php" class="butAction">'.$langs->trans('ShowResourcePlanning').'</a>';
|
|
||||||
print '</div>';
|
|
||||||
print '</div>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|
||||||
$db->close();
|
$db->close();
|
||||||
@ -1,589 +0,0 @@
|
|||||||
/*!
|
|
||||||
* FullCalendar v1.6.4 Stylesheet
|
|
||||||
* Docs & License: http://arshaw.com/fullcalendar/
|
|
||||||
* (c) 2013 Adam Shaw
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
.fc {
|
|
||||||
direction: ltr;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
border-spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
html .fc,
|
|
||||||
.fc table {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc td,
|
|
||||||
.fc th {
|
|
||||||
padding: 0;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Header
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-header td {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header-left {
|
|
||||||
width: 25%;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header-center {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header-right {
|
|
||||||
width: 25%;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header-title {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header-title h2 {
|
|
||||||
margin-top: 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc .fc-header-space {
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header .fc-button {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* buttons edges butting together */
|
|
||||||
|
|
||||||
.fc-header .fc-button {
|
|
||||||
margin-right: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header .fc-corner-right, /* non-theme */
|
|
||||||
.fc-header .ui-corner-right { /* theme */
|
|
||||||
margin-right: 0; /* back to normal */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* button layering (for border precedence) */
|
|
||||||
|
|
||||||
.fc-header .fc-state-hover,
|
|
||||||
.fc-header .ui-state-hover {
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header .fc-state-down {
|
|
||||||
z-index: 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-header .fc-state-active,
|
|
||||||
.fc-header .ui-state-active {
|
|
||||||
z-index: 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Content
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-content {
|
|
||||||
clear: both;
|
|
||||||
zoom: 1; /* for IE7, gives accurate coordinates for [un]freezeContentHeight */
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-view {
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Cell Styles
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-widget-header, /* <th>, usually */
|
|
||||||
.fc-widget-content { /* <td>, usually */
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
|
|
||||||
background: #fcf8e3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-cell-overlay { /* semi-transparent rectangle while dragging */
|
|
||||||
background: #bce8f1;
|
|
||||||
opacity: .3;
|
|
||||||
filter: alpha(opacity=30); /* for IE */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Buttons
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-button {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 .6em;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 1.9em;
|
|
||||||
line-height: 1.9em;
|
|
||||||
white-space: nowrap;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-default { /* non-theme */
|
|
||||||
border: 1px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-default.fc-corner-left { /* non-theme */
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
border-bottom-left-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-default.fc-corner-right { /* non-theme */
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
border-bottom-right-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Our default prev/next buttons use HTML entities like ‹ › « »
|
|
||||||
and we'll try to make them look good cross-browser.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.fc-text-arrow {
|
|
||||||
margin: 0 .1em;
|
|
||||||
font-size: 2em;
|
|
||||||
font-family: "Courier New", Courier, monospace;
|
|
||||||
vertical-align: baseline; /* for IE7 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-button-prev .fc-text-arrow,
|
|
||||||
.fc-button-next .fc-text-arrow { /* for ‹ › */
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* icon (for jquery ui) */
|
|
||||||
|
|
||||||
.fc-button .fc-icon-wrap {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
top: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-button .ui-icon {
|
|
||||||
position: relative;
|
|
||||||
float: left;
|
|
||||||
margin-top: -50%;
|
|
||||||
*margin-top: 0;
|
|
||||||
*top: -50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
button states
|
|
||||||
borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
|
|
||||||
*/
|
|
||||||
|
|
||||||
.fc-state-default {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
|
||||||
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
|
||||||
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
|
||||||
background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
|
||||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
|
||||||
color: #333;
|
|
||||||
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
|
||||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-hover,
|
|
||||||
.fc-state-down,
|
|
||||||
.fc-state-active,
|
|
||||||
.fc-state-disabled {
|
|
||||||
color: #333333;
|
|
||||||
background-color: #e6e6e6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-hover {
|
|
||||||
color: #333333;
|
|
||||||
text-decoration: none;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
-webkit-transition: background-position 0.1s linear;
|
|
||||||
-moz-transition: background-position 0.1s linear;
|
|
||||||
-o-transition: background-position 0.1s linear;
|
|
||||||
transition: background-position 0.1s linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-down,
|
|
||||||
.fc-state-active {
|
|
||||||
background-color: #cccccc;
|
|
||||||
background-image: none;
|
|
||||||
outline: 0;
|
|
||||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-state-disabled {
|
|
||||||
cursor: default;
|
|
||||||
background-image: none;
|
|
||||||
opacity: 0.65;
|
|
||||||
filter: alpha(opacity=65);
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Global Event Styles
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-event-container > * {
|
|
||||||
z-index: 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-container > .ui-draggable-dragging,
|
|
||||||
.fc-event-container > .ui-resizable-resizing {
|
|
||||||
z-index: 9;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event {
|
|
||||||
border: 1px solid #3a87ad; /* default BORDER color */
|
|
||||||
background-color: #3a87ad; /* default BACKGROUND color */
|
|
||||||
color: #fff; /* default TEXT color */
|
|
||||||
font-size: .85em;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.fc-event {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.fc-event,
|
|
||||||
.fc-event-draggable {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-rtl .fc-event {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-inner {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-time,
|
|
||||||
.fc-event-title {
|
|
||||||
padding: 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc .ui-resizable-handle {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 99999;
|
|
||||||
overflow: hidden; /* hacky spaces (IE6/7) */
|
|
||||||
font-size: 300%; /* */
|
|
||||||
line-height: 50%; /* */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Horizontal Events
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-event-hori {
|
|
||||||
border-width: 1px 0;
|
|
||||||
margin-bottom: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-ltr .fc-event-hori.fc-event-start,
|
|
||||||
.fc-rtl .fc-event-hori.fc-event-end {
|
|
||||||
border-left-width: 1px;
|
|
||||||
border-top-left-radius: 3px;
|
|
||||||
border-bottom-left-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-ltr .fc-event-hori.fc-event-end,
|
|
||||||
.fc-rtl .fc-event-hori.fc-event-start {
|
|
||||||
border-right-width: 1px;
|
|
||||||
border-top-right-radius: 3px;
|
|
||||||
border-bottom-right-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* resizable */
|
|
||||||
|
|
||||||
.fc-event-hori .ui-resizable-e {
|
|
||||||
top: 0 !important; /* importants override pre jquery ui 1.7 styles */
|
|
||||||
right: -3px !important;
|
|
||||||
width: 7px !important;
|
|
||||||
height: 100% !important;
|
|
||||||
cursor: e-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-hori .ui-resizable-w {
|
|
||||||
top: 0 !important;
|
|
||||||
left: -3px !important;
|
|
||||||
width: 7px !important;
|
|
||||||
height: 100% !important;
|
|
||||||
cursor: w-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-hori .ui-resizable-handle {
|
|
||||||
_padding-bottom: 14px; /* IE6 had 0 height */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Reusable Separate-border Table
|
|
||||||
------------------------------------------------------------*/
|
|
||||||
|
|
||||||
table.fc-border-separate {
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-border-separate th,
|
|
||||||
.fc-border-separate td {
|
|
||||||
border-width: 1px 0 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-border-separate th.fc-last,
|
|
||||||
.fc-border-separate td.fc-last {
|
|
||||||
border-right-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-border-separate tr.fc-last th,
|
|
||||||
.fc-border-separate tr.fc-last td {
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-border-separate tbody tr.fc-first td,
|
|
||||||
.fc-border-separate tbody tr.fc-first th {
|
|
||||||
border-top-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Month View, Basic Week View, Basic Day View
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-grid th {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc .fc-week-number {
|
|
||||||
width: 22px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc .fc-week-number div {
|
|
||||||
padding: 0 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-grid .fc-day-number {
|
|
||||||
float: right;
|
|
||||||
padding: 0 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-grid .fc-other-month .fc-day-number {
|
|
||||||
opacity: 0.3;
|
|
||||||
filter: alpha(opacity=30); /* for IE */
|
|
||||||
/* opacity with small font can sometimes look too faded
|
|
||||||
might want to set the 'color' property instead
|
|
||||||
making day-numbers bold also fixes the problem */
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-grid .fc-day-content {
|
|
||||||
clear: both;
|
|
||||||
padding: 2px 2px 1px; /* distance between events and day edges */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* event styles */
|
|
||||||
|
|
||||||
.fc-grid .fc-event-time {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* right-to-left */
|
|
||||||
|
|
||||||
.fc-rtl .fc-grid .fc-day-number {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-rtl .fc-grid .fc-event-time {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Agenda Week View, Agenda Day View
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-agenda table {
|
|
||||||
border-collapse: separate;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-days th {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda .fc-agenda-axis {
|
|
||||||
width: 50px;
|
|
||||||
padding: 0 4px;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-align: right;
|
|
||||||
white-space: nowrap;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda .fc-week-number {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda .fc-day-content {
|
|
||||||
padding: 2px 2px 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make axis border take precedence */
|
|
||||||
|
|
||||||
.fc-agenda-days .fc-agenda-axis {
|
|
||||||
border-right-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-days .fc-col0 {
|
|
||||||
border-left-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* all-day area */
|
|
||||||
|
|
||||||
.fc-agenda-allday th {
|
|
||||||
border-width: 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-allday .fc-day-content {
|
|
||||||
min-height: 34px; /* TODO: doesnt work well in quirksmode */
|
|
||||||
_height: 34px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* divider (between all-day and slots) */
|
|
||||||
|
|
||||||
.fc-agenda-divider-inner {
|
|
||||||
height: 2px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-widget-header .fc-agenda-divider-inner {
|
|
||||||
background: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* slot rows */
|
|
||||||
|
|
||||||
.fc-agenda-slots th {
|
|
||||||
border-width: 1px 1px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-slots td {
|
|
||||||
border-width: 1px 0 0;
|
|
||||||
background: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-slots td div {
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-slots tr.fc-slot0 th,
|
|
||||||
.fc-agenda-slots tr.fc-slot0 td {
|
|
||||||
border-top-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-slots tr.fc-minor th,
|
|
||||||
.fc-agenda-slots tr.fc-minor td {
|
|
||||||
border-top-style: dotted;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda-slots tr.fc-minor th.ui-widget-header {
|
|
||||||
*border-top-style: solid; /* doesn't work with background in IE6/7 */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Vertical Events
|
|
||||||
------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-event-vert {
|
|
||||||
border-width: 0 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-vert.fc-event-start {
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-top-left-radius: 3px;
|
|
||||||
border-top-right-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-vert.fc-event-end {
|
|
||||||
border-bottom-width: 1px;
|
|
||||||
border-bottom-left-radius: 3px;
|
|
||||||
border-bottom-right-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-vert .fc-event-time {
|
|
||||||
white-space: nowrap;
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-vert .fc-event-inner {
|
|
||||||
position: relative;
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: #fff;
|
|
||||||
opacity: .25;
|
|
||||||
filter: alpha(opacity=25);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
|
|
||||||
.fc-select-helper .fc-event-bg {
|
|
||||||
display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* resizable */
|
|
||||||
|
|
||||||
.fc-event-vert .ui-resizable-s {
|
|
||||||
bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */
|
|
||||||
width: 100% !important;
|
|
||||||
height: 8px !important;
|
|
||||||
overflow: hidden !important;
|
|
||||||
line-height: 8px !important;
|
|
||||||
font-size: 11px !important;
|
|
||||||
font-family: monospace;
|
|
||||||
text-align: center;
|
|
||||||
cursor: s-resize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
|
|
||||||
_overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
7
js/fullcalendar/fullcalendar.min.js
vendored
7
js/fullcalendar/fullcalendar.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,32 +0,0 @@
|
|||||||
/*!
|
|
||||||
* FullCalendar v1.6.4 Print Stylesheet
|
|
||||||
* Docs & License: http://arshaw.com/fullcalendar/
|
|
||||||
* (c) 2013 Adam Shaw
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Include this stylesheet on your page to get a more printer-friendly calendar.
|
|
||||||
* When including this stylesheet, use the media='print' attribute of the <link> tag.
|
|
||||||
* Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Events
|
|
||||||
-----------------------------------------------------*/
|
|
||||||
|
|
||||||
.fc-event {
|
|
||||||
background: #fff !important;
|
|
||||||
color: #000 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* for vertical events */
|
|
||||||
|
|
||||||
.fc-event-bg {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fc-event .ui-resizable-handle {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,107 +0,0 @@
|
|||||||
/*!
|
|
||||||
* FullCalendar v1.6.4 Google Calendar Plugin
|
|
||||||
* Docs & License: http://arshaw.com/fullcalendar/
|
|
||||||
* (c) 2013 Adam Shaw
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function($) {
|
|
||||||
|
|
||||||
|
|
||||||
var fc = $.fullCalendar;
|
|
||||||
var formatDate = fc.formatDate;
|
|
||||||
var parseISO8601 = fc.parseISO8601;
|
|
||||||
var addDays = fc.addDays;
|
|
||||||
var applyAll = fc.applyAll;
|
|
||||||
|
|
||||||
|
|
||||||
fc.sourceNormalizers.push(function(sourceOptions) {
|
|
||||||
if (sourceOptions.dataType == 'gcal' ||
|
|
||||||
sourceOptions.dataType === undefined &&
|
|
||||||
(sourceOptions.url || '').match(/^(http|https):\/\/www.google.com\/calendar\/feeds\//)) {
|
|
||||||
sourceOptions.dataType = 'gcal';
|
|
||||||
if (sourceOptions.editable === undefined) {
|
|
||||||
sourceOptions.editable = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
fc.sourceFetchers.push(function(sourceOptions, start, end) {
|
|
||||||
if (sourceOptions.dataType == 'gcal') {
|
|
||||||
return transformOptions(sourceOptions, start, end);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
function transformOptions(sourceOptions, start, end) {
|
|
||||||
|
|
||||||
var success = sourceOptions.success;
|
|
||||||
var data = $.extend({}, sourceOptions.data || {}, {
|
|
||||||
'start-min': formatDate(start, 'u'),
|
|
||||||
'start-max': formatDate(end, 'u'),
|
|
||||||
'singleevents': true,
|
|
||||||
'max-results': 9999
|
|
||||||
});
|
|
||||||
|
|
||||||
var ctz = sourceOptions.currentTimezone;
|
|
||||||
if (ctz) {
|
|
||||||
data.ctz = ctz = ctz.replace(' ', '_');
|
|
||||||
}
|
|
||||||
|
|
||||||
return $.extend({}, sourceOptions, {
|
|
||||||
url: sourceOptions.url.replace(/\/basic$/, '/full') + '?alt=json-in-script&callback=?',
|
|
||||||
dataType: 'jsonp',
|
|
||||||
data: data,
|
|
||||||
startParam: false,
|
|
||||||
endParam: false,
|
|
||||||
success: function(data) {
|
|
||||||
var events = [];
|
|
||||||
if (data.feed.entry) {
|
|
||||||
$.each(data.feed.entry, function(i, entry) {
|
|
||||||
var startStr = entry['gd$when'][0]['startTime'];
|
|
||||||
var start = parseISO8601(startStr, true);
|
|
||||||
var end = parseISO8601(entry['gd$when'][0]['endTime'], true);
|
|
||||||
var allDay = startStr.indexOf('T') == -1;
|
|
||||||
var url;
|
|
||||||
$.each(entry.link, function(i, link) {
|
|
||||||
if (link.type == 'text/html') {
|
|
||||||
url = link.href;
|
|
||||||
if (ctz) {
|
|
||||||
url += (url.indexOf('?') == -1 ? '?' : '&') + 'ctz=' + ctz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (allDay) {
|
|
||||||
addDays(end, -1); // make inclusive
|
|
||||||
}
|
|
||||||
events.push({
|
|
||||||
id: entry['gCal$uid']['value'],
|
|
||||||
title: entry['title']['$t'],
|
|
||||||
url: url,
|
|
||||||
start: start,
|
|
||||||
end: end,
|
|
||||||
allDay: allDay,
|
|
||||||
location: entry['gd$where'][0]['valueString'],
|
|
||||||
description: entry['content']['$t']
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
var args = [events].concat(Array.prototype.slice.call(arguments, 1));
|
|
||||||
var res = applyAll(success, this, args);
|
|
||||||
if ($.isArray(res)) {
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
return events;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// legacy
|
|
||||||
fc.gcalFeed = function(url, sourceOptions) {
|
|
||||||
return $.extend({}, sourceOptions, { url: url, dataType: 'gcal' });
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
})(jQuery);
|
|
||||||
@ -1,122 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) ---Put here your own copyright and developer email---
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file dev/skeletons/skeleton_page.php
|
|
||||||
* \ingroup mymodule othermodule1 othermodule2
|
|
||||||
* \brief This file is an example of a php page
|
|
||||||
* Put here some comments
|
|
||||||
*/
|
|
||||||
|
|
||||||
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
|
|
||||||
//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1');
|
|
||||||
//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
|
|
||||||
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
|
|
||||||
//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check anti CSRF attack test
|
|
||||||
//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data
|
|
||||||
//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not check anti POST attack test
|
|
||||||
//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu
|
|
||||||
//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php
|
|
||||||
//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
|
||||||
//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session)
|
|
||||||
|
|
||||||
// Change this following line to use the correct relative path (../, ../../, etc)
|
|
||||||
$res=0;
|
|
||||||
if (! $res && file_exists("../main.inc.php")) $res=@include '../main.inc.php';
|
|
||||||
if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; // to work if your module directory is into dolibarr root htdocs directory
|
|
||||||
if (! $res && file_exists("../../../main.inc.php")) $res=@include '../../../main.inc.php'; // to work if your module directory is into a subdir of root htdocs directory
|
|
||||||
|
|
||||||
if (! $res) die("Include of main fails");
|
|
||||||
// Change this following line to use the correct relative path from htdocs
|
|
||||||
dol_include_once('/resource/class/resource.class.php');
|
|
||||||
dol_include_once('/resource/class/html.formresource.class.php');
|
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
|
|
||||||
// Get parameters
|
|
||||||
$id = GETPOST('id','int');
|
|
||||||
$action = GETPOST('action','alpha');
|
|
||||||
|
|
||||||
$start = GETPOST('start','int');
|
|
||||||
$end = GETPOST('end','int');
|
|
||||||
$fk_resource = GETPOST('fk_resource','int');
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************
|
|
||||||
* VIEW
|
|
||||||
*
|
|
||||||
* Put here all code to build page
|
|
||||||
****************************************************/
|
|
||||||
$morecss=array("/resource/js/fullcalendar/fullcalendar.css");
|
|
||||||
|
|
||||||
$morejs=array("/resource/js/fullcalendar/fullcalendar.js");
|
|
||||||
llxHeader('','ResourcePlaning','','','','',$morejs,$morecss,0,0);
|
|
||||||
|
|
||||||
$form=new Form($db);
|
|
||||||
|
|
||||||
|
|
||||||
// Put here content of your page
|
|
||||||
|
|
||||||
// Example 1 : Adding jquery code
|
|
||||||
print '<script type="text/javascript" language="javascript">
|
|
||||||
jQuery(document).ready(function() {
|
|
||||||
$("#calendar").fullCalendar({
|
|
||||||
header: {
|
|
||||||
left: \'prev,next today\',
|
|
||||||
center: \'title\',
|
|
||||||
right: \'month,agendaWeek,agendaDay\'
|
|
||||||
},
|
|
||||||
defaultView: \'agendaWeek\',
|
|
||||||
eventSources: [
|
|
||||||
|
|
||||||
// your event source
|
|
||||||
{
|
|
||||||
url: "'.dol_buildpath('/resource/core/ajax/resource_action.json.php',1).'",
|
|
||||||
type: "POST",
|
|
||||||
data: {
|
|
||||||
fk_resource: "'.$fk_resource.'"
|
|
||||||
},
|
|
||||||
error: function() {
|
|
||||||
alert("there was an error while fetching events!");
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>';
|
|
||||||
|
|
||||||
$formresource = new FormResource($db);
|
|
||||||
|
|
||||||
print $formresource->select_resource_list();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<div id="calendar"></div>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// End of page
|
|
||||||
llxFooter();
|
|
||||||
$db->close();
|
|
||||||
?>
|
|
||||||
@ -1,134 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
* Copyright (C) ---Put here your own copyright and developer email---
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file dev/skeletons/skeleton_page.php
|
|
||||||
* \ingroup mymodule othermodule1 othermodule2
|
|
||||||
* \brief This file is an example of a php page
|
|
||||||
* Put here some comments
|
|
||||||
*/
|
|
||||||
|
|
||||||
//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1');
|
|
||||||
//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1');
|
|
||||||
//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
|
|
||||||
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1');
|
|
||||||
//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check anti CSRF attack test
|
|
||||||
//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data
|
|
||||||
//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not check anti POST attack test
|
|
||||||
//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu
|
|
||||||
//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php
|
|
||||||
//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1');
|
|
||||||
//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session)
|
|
||||||
|
|
||||||
// Change this following line to use the correct relative path (../, ../../, etc)
|
|
||||||
$res=0;
|
|
||||||
if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; // to work if your module directory is into dolibarr root htdocs directory
|
|
||||||
if (! $res && file_exists("../../../main.inc.php")) $res=@include '../../../main.inc.php'; // to work if your module directory is into a subdir of root htdocs directory
|
|
||||||
|
|
||||||
if (! $res) die("Include of main fails");
|
|
||||||
// Change this following line to use the correct relative path from htdocs
|
|
||||||
dol_include_once('/resource/class/resource.class.php');
|
|
||||||
dol_include_once('/resource/class/html.formresource.class.php');
|
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("other");
|
|
||||||
|
|
||||||
// Get parameters
|
|
||||||
$id = GETPOST('id','int');
|
|
||||||
$action = GETPOST('action','alpha');
|
|
||||||
|
|
||||||
$start = GETPOST('start','int');
|
|
||||||
$end = GETPOST('end','int');
|
|
||||||
$fk_resource = GETPOST('fk_resource','int');
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************
|
|
||||||
* VIEW
|
|
||||||
*
|
|
||||||
* Put here all code to build page
|
|
||||||
****************************************************/
|
|
||||||
$morecss=array("/resource/js/fullcalendar/fullcalendar.css");
|
|
||||||
|
|
||||||
$morejs=array("http://api.simile-widgets.org/timeline/2.3.1/timeline-api.js?bundle=true");
|
|
||||||
llxHeader('','ResourcePlaning','','','','',$morejs,$morecss,0,0);
|
|
||||||
|
|
||||||
$form=new Form($db);
|
|
||||||
|
|
||||||
|
|
||||||
// Put here content of your page
|
|
||||||
|
|
||||||
// Example 1 : Adding jquery code
|
|
||||||
print '<script type="text/javascript" language="javascript">
|
|
||||||
|
|
||||||
|
|
||||||
var tl;
|
|
||||||
function onLoad() {
|
|
||||||
var bandInfos = [
|
|
||||||
Timeline.createBandInfo({
|
|
||||||
width: "70%",
|
|
||||||
intervalUnit: Timeline.DateTime.MONTH,
|
|
||||||
intervalPixels: 100
|
|
||||||
}),
|
|
||||||
Timeline.createBandInfo({
|
|
||||||
width: "30%",
|
|
||||||
intervalUnit: Timeline.DateTime.YEAR,
|
|
||||||
intervalPixels: 200
|
|
||||||
})
|
|
||||||
];
|
|
||||||
tl = Timeline.create(document.getElementById("my-timeline"), bandInfos);
|
|
||||||
}
|
|
||||||
|
|
||||||
var resizeTimerID = null;
|
|
||||||
function onResize() {
|
|
||||||
if (resizeTimerID == null) {
|
|
||||||
resizeTimerID = window.setTimeout(function() {
|
|
||||||
resizeTimerID = null;
|
|
||||||
tl.layout();
|
|
||||||
}, 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
jQuery(document).ready(function() {
|
|
||||||
|
|
||||||
$("body").load( function() { onLoad(); } );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>';
|
|
||||||
|
|
||||||
$formresource = new FormResource($db);
|
|
||||||
|
|
||||||
print $formresource->select_resource_list();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<div id="my-timeline" style="height: 350px; border: 1px solid #aaa"></div>
|
|
||||||
<noscript>
|
|
||||||
This page uses Javascript to show you a Timeline. Please enable Javascript in your browser to see the full page. Thank you.
|
|
||||||
</noscript>';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// End of page
|
|
||||||
llxFooter();
|
|
||||||
$db->close();
|
|
||||||
?>
|
|
||||||
Loading…
Reference in New Issue
Block a user