* @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ /** * Include parent class */ require_once("class.Bootstrap.php"); /** * Include class to preview documents */ require_once("SeedDMS/Preview.php"); /** * Class which outputs the html page for Calendar view * * @category DMS * @package SeedDMS * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann * @copyright Copyright (C) 2002-2005 Markus Westphal, * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, * 2010-2012 Uwe Steinmann * @version Release: @package_version@ */ class SeedDMS_View_Calendar extends SeedDMS_Bootstrap_Style { function iteminfo() { /* {{{ */ $dms = $this->params['dms']; $document = $this->params['document']; $version = $this->params['version']; $event = $this->params['event']; $strictformcheck = $this->params['strictformcheck']; $cachedir = $this->params['cachedir']; $previewwidthlist = $this->params['previewWidthList']; $previewwidthdetail = $this->params['previewWidthDetail']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; if($document) { // $this->contentHeading(getMLText("timeline_selected_item")); print ""; print "\n\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n\n\n"; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); echo $this->documentListRow($document, $previewer); echo "\n
".getMLText("name")."".getMLText("status")."".getMLText("action")."
\n"; } if($event) { // print_r($event); $this->contentHeading(getMLText('edit_event')); $this->contentContainerStart(); ?>
"> formField( getMLText("from"), $this->getDateChooser(date('Y-m-d', $event["start"]), "from") ); $this->formField( getMLText("to"), $this->getDateChooser(date('Y-m-d', $event["stop"]), "to") ); $this->formField( getMLText("name"), array( 'element'=>'input', 'type'=>'text', 'name'=>'name', 'value'=>htmlspecialchars($event["name"]) ) ); $this->formField( getMLText("comment"), array( 'element'=>'textarea', 'name'=>'comment', 'rows'=>4, 'cols'=>80, 'value'=>htmlspecialchars($event["comment"]), 'required'=>$strictformcheck ) ); $this->formSubmit(" ".getMLText('save')); ?>
contentContainerEnd(); $this->contentHeading(getMLText('rm_event')); $this->contentContainerStart(); ?>
">

htmlspecialchars($event["name"])));?>

contentContainerEnd(); } } /* }}} */ function itemsperday() { /* {{{ */ $dms = $this->params['dms']; $start = explode('-', $this->params['start']); $cachedir = $this->params['cachedir']; $previewwidthlist = $this->params['previewWidthList']; $previewwidthdetail = $this->params['previewWidthDetail']; $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; if($this->params['start']) { $from = makeTsFromLongDate($this->params['start'].' 00:00:00'); } else { $from = time(); } if($data = $dms->getTimeline($from)) { $this->contentHeading(getReadableDate($from)); print ""; print "\n\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n\n\n"; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); foreach($data as $i=>$item) { /* Filter out timeline events for the documents not happened on the * selected day */ if(substr($item['date'], 0, 10) == $this->params['start']) if($item['document']) { echo $this->documentListRow($item['document'], $previewer); } } echo "\n
".getMLText("name")."".getMLText("status")."".getMLText("action")."
\n"; } } /* }}} */ function events() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $calendar = $this->params['calendar']; $eventtype = $this->params['eventtype']; $start = explode('-', $this->params['start']); $end = explode('-', $this->params['end']); $arr = array(); switch($eventtype) { case 'regular': $events = $calendar->getEventsInInterval(mktime(0,0,0, $start[1], $start[2], $start[0]), mktime(23,59,59, $end[1], $end[2], $end[0])); foreach ($events as $event){ $arr[] = array('start'=>date('Y-m-d', $event["start"]), 'end'=>date('Y-m-d', $event["stop"]), 'title'=>$event["name"].($event['comment'] ? "\n".$event['comment'] : ''), 'eventid'=>$event["id"]); } break; case 'action': if($this->params['start']) { $from = makeTsFromLongDate($this->params['start'].' 00:00:00'); } else { $from = time()-7*86400; } if($this->params['end']) { $to = makeTsFromLongDate($this->params['end'].' 23:59:59'); } else { $to = time(); } if($data = $dms->getTimeline($from, $to)) { foreach($data as $i=>$item) { switch($item['type']) { case 'add_version': $color = '#20a820'; break; case 'add_file': $color = '#a82020'; break; case 'status_change': $color = '#a8a8a8'; break; default: $color = '#20a8a8'; } if ($item['document']->getAccessMode($user) >= M_READ) $arr[] = array( 'start'=>$item['date'], 'title'=>$item['document']->getName()."\n".$item['msg'], 'allDay'=>false, 'color'=>$color, 'type'=>$item['type'], 'documentid'=> (int) $item['document']->getID(), 'version'=> isset($item['version']) ? (int) $item['version'] : '', 'statusid'=> isset($item['statusid']) ? (int) $item['statusid'] : '', 'statuslogid'=> isset($item['statuslogid']) ? (int) $item['statuslogid'] : '', 'fileid'=> isset($item['fileid']) ? (int) $item['fileid'] : '' ); } } break; } header('Content-Type: application/json'); echo json_encode($arr); } /* }}} */ function js() { /* {{{ */ $strictformcheck = $this->params['strictformcheck']; header('Content-Type: application/javascript'); ?> $(document).ready(function() { $('#calendar').fullCalendar({ height: $(window).height()-210, locale: 'params['session']->getLanguage(), 0, 2); ?>', customButtons: { addEventButton: { text: '', click: function() { // alert('clicked the custom button!'); document.location.href = '../out/out.AddEvent.php'; } } }, header: { left: 'prev,next today addEventButton', center: 'title', right: 'month,agendaWeek,agendaDay,listWeek' }, defaultDate: '', navLinks: true, // can click day/week names to navigate views editable: false, weekNumbers: true, eventLimit: true, // allow "more" link when too many events eventDrop: function(event, delta, revertFunc) { // if (!confirm("Are you sure about this change?")) { // revertFunc(); // } $.post("../op/op.EditEvent.php", "formtoken=&eventid="+event.eventid+"&from="+event.start.format()+"&ajax=1", function(response) { noty({ text: response.message, type: response.success === true ? 'success' : 'error', dismissQueue: true, layout: 'topRight', theme: 'defaultTheme', timeout: 1500, }); $('#calendar').fullCalendar('refetchEvents'); }, "json"); }, eventSources: [ { url: 'out.Calendar.php?action=events', editable: true, eventStartEditable: false }, { url: 'out.Calendar.php?action=events&eventtype=action', editable: false } ], eventClick: function(event, element) { $('div.ajax.iteminfo').trigger('update', { documentid: event.documentid, version: event.version, eventid: event.eventid, statusid: event.statusid, statuslogid: event.statuslogid, fileid: event.fileid, callback: function() { $("#form1").validate({ debug: false, submitHandler: function(form) { $.post("../op/op.EditEvent.php", $(form).serialize()+"&ajax=1", function(response) { noty({ text: response.message, type: response.success === true ? 'success' : 'error', dismissQueue: true, layout: 'topRight', theme: 'defaultTheme', timeout: 1500, }); $('#calendar').fullCalendar('refetchEvents'); }, "json"); }, invalidHandler: function(e, validator) { noty({ text: (validator.numberOfInvalids() == 1) ? "".replace('#', validator.numberOfInvalids()) : "".replace('#', validator.numberOfInvalids()), type: 'error', dismissQueue: true, layout: 'topRight', theme: 'defaultTheme', timeout: 1500, }); }, messages: { name: "", comment: "" }, }); $('#fromdate, #todate') .datepicker() .on('changeDate', function(ev){ $(ev.currentTarget).datepicker('hide'); }); } }); $('div.ajax.itemsperday').html(''); }, dayClick: function(date, jsEvent, view) { $('div.ajax.itemsperday').trigger('update', {start: date.format()}); $('div.ajax.iteminfo').html(''); } }); }); /* function checkForm() { msg = new Array() if (document.form1.name.value == "") msg.push(""); if (document.form1.comment.value == "") msg.push(""); if (msg != "") { noty({ text: msg.join('
'), type: 'error', dismissQueue: true, layout: 'topRight', theme: 'defaultTheme', _timeout: 1500, }); return false; } else return true; } $(document).ready(function() { $('body').on('submit', '#form1', function(ev){ if(checkForm()) return; ev.preventDefault(); }); }); */ params['dms']; $user = $this->params['user']; $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'js'); $this->htmlAddHeader(''."\n", 'css'); $this->htmlAddHeader(''."\n", 'css'); $this->htmlStartPage(getMLText("calendar")); $this->globalNavigation(); $this->contentStart(); // $this->pageNavigation("", "calendar", array()); ?>
contentEnd(); $this->htmlEndPage(); } /* }}} */ } ?>