/** * Get Js Options * * @return stdClass * @throws Exception */ private function jsOptions() { $model = $this->getModel(); $app = JFactory::getApplication(); $package = $app->getUserState('com_fabrik.package', 'fabrik'); $params = $model->getParams(); $Itemid = FabrikWorker::itemId(); $urls = new stdClass(); $calendar = $this->row; $j3 = FabrikWorker::j3(); $tpl = $params->get('fullcalendar_layout', $j3); // Get all list where statements - which are then included in the ajax call to ensure we get the correct data set loaded $urlFilters = new stdClass(); $urlFilters->where = $model->buildQueryWhere(); // Don't JRoute as its wont load with sef? $urls->del = 'index.php?option=com_' . $package . '&controller=visualization.fullcalendar&view=visualization&task=deleteEvent&format=raw&Itemid=' . $Itemid . '&id=' . $model->getId(); $urls->add = 'index.php?option=com_' . $package . '&view=visualization&format=raw&Itemid=' . $Itemid . '&id=' . $model->getId(); $options = new stdClass(); $options->url = $urls; $options->dateLimits = $model->getDateLimits(); $options->deleteables = $model->getDeleteAccess(); $options->eventLists = $model->getEventLists(); $options->calendarId = $calendar->id; $options->popwiny = $params->get('yoffset', 0); $options->urlfilters = $urlFilters; $options->canAdd = $this->canAdd; $options->showFullDetails = (bool) $params->get('show_full_details', false); $options->restFilterStart = FabrikWorker::getMenuOrRequestVar('resetfilters', 0, false, 'request'); $options->tmpl = $tpl; // $$$rob @TODO not sure this is need - it isn't in the timeline viz $model->setRequestFilters(); $options->filters = $model->filters; // End not sure $options->Itemid = $Itemid; $options->show_day = (bool) $params->get('show_day', true); $options->show_week = (bool) $params->get('show_week', true); $options->default_view = $params->get('fullcalendar_default_view', 'month'); $options->add_type = $params->get('add_type', 'both'); $options->time_format = $params->get('time_format', 'H(:mm)'); $options->first_week_day = (int) $params->get('first_week_day', 0); $options->minDuration = $params->get('minimum_duration', "00:30:00"); $options->open = $params->get('open-hour', "00:00:00"); $options->close = $params->get('close-hour', "23:59:59"); $options->lang = FabrikWorker::getShortLang(); $options->showweekends = (bool) $params->get('show-weekends', true); $options->greyscaledweekend = (bool) $params->get('greyscaled-weekend', false); $options->readonly = (bool) $params->get('calendar-read-only', false); $options->timeFormat = $params->get('time_format', '%X'); $options->readonlyMonth = (bool) $params->get('readonly_monthview', false); $options->j3 = FabrikWorker::j3(); $options->calOptions = $params->get('calOptions', '{}'); $options->startOffset = (int) $params->get('startdate_hour_offset', '0'); return $options; }
/** * Initialize the js * * @return void */ private function iniJs() { $model = $this->getModel(); $ref = $model->getJSRenderContext(); $json = json_encode($this->jsOptions()); $js = array(); $js[] = "\tvar {$ref} = new fabrikFullcalendar('{$ref}', {$json});"; $js[] = "\tFabrik.addBlock('" . $ref . "', {$ref});"; $js[] = "" . $model->getFilterJs(); $js = implode("\n", $js); $mediaFolder = FabrikHelperHTML::getMediaFolder(); $srcs = FabrikHelperHTML::framework(); $srcs['FbListFilter'] = $mediaFolder . '/listfilter.js'; $srcs['fabrikFullcalendar'] = 'plugins/fabrik_visualization/fullcalendar/fullcalendar.js'; $shim = $model->getShim(); $paths = array('fullcalendar' => 'plugins/fabrik_visualization/fullcalendar/libs/fullcalendar/fullcalendar.min'); $shim['fullcalendar'] = (object) array('deps' => array('lib/moment/moment')); $shim['viz/fullcalendar/fullcalendar'] = (object) array('deps' => array('fullcalendar', 'jquery')); $fcLangFolder = 'plugins/fabrik_visualization/fullcalendar/libs/fullcalendar/lang/'; // Figure out what language we are using $lang = strtolower(JFactory::getUser()->getParam('language', JFactory::getLanguage()->getTag())); if (file_exists(JPATH_BASE . '/' . $fcLangFolder . $lang . '.js') === false) { $lang = FabrikWorker::getShortLang(); if (file_exists(JPATH_BASE . '/' . $fcLangFolder . $lang . '.js') === false) { $lang = ''; } } if ($lang != '' && $lang != 'en-gb') { $shim['lang'] = (object) array('deps' => array('lib/moment/moment', 'fullcalendar')); $shim['viz/fullcalendar/fullcalendar']->deps[] = 'lang'; $paths['lang'] = 'plugins/fabrik_visualization/fullcalendar/libs/fullcalendar/lang/' . $lang; } FabrikHelperHTML::iniRequireJs($shim, $paths); FabrikHelperHTML::script($srcs, $js); }