/** * Shows a form to add an event * will default to the current date if non is provided * @return */ function EditEventForm() { $db =& $this->db; $user =& $this->user; $response = new ResponseManager(); $eventID = Kit::GetParam('EventID', _GET, _INT, 0); if ($eventID == 0) { trigger_error(__('No event selected.'), E_USER_ERROR); } // Get the relevant details for this event $SQL = ""; $SQL .= "SELECT schedule.FromDT, "; $SQL .= " schedule.ToDT,"; $SQL .= " schedule.CampaignID, "; $SQL .= " schedule.userid, "; $SQL .= " schedule.is_priority, "; $SQL .= " schedule.DisplayGroupIDs, "; $SQL .= " schedule.recurrence_type, "; $SQL .= " schedule.recurrence_detail, "; $SQL .= " schedule.recurrence_range, "; $SQL .= " schedule.EventID, "; $SQL .= " schedule.DisplayOrder "; $SQL .= " FROM schedule "; $SQL .= " WHERE 1=1 "; $SQL .= sprintf(" AND schedule.EventID = %d", $eventID); Debug::LogEntry('audit', $SQL); if (!($result = $db->query($SQL))) { trigger_error($db->error()); trigger_error(__('Error getting details for this event.'), E_USER_ERROR); } $row = $db->get_assoc_row($result); $fromDT = Kit::ValidateParam($row['FromDT'], _INT); $toDT = Kit::ValidateParam($row['ToDT'], _INT); $displayGroupIds = explode(',', Kit::ValidateParam($row['DisplayGroupIDs'], _STRING)); $recType = Kit::ValidateParam($row['recurrence_type'], _STRING); $recDetail = Kit::ValidateParam($row['recurrence_detail'], _STRING); $recToDT = Kit::ValidateParam($row['recurrence_range'], _INT); $campaignId = Kit::ValidateParam($row['CampaignID'], _STRING); $isPriority = Kit::ValidateParam($row['is_priority'], _INT); $displayOrder = Kit::ValidateParam($row['DisplayOrder'], _INT); // Check that we have permission to edit this event. if (!$this->IsEventEditable($displayGroupIds)) { trigger_error(__('You do not have permission to edit this event.'), E_USER_ERROR); } $token_id = uniqid(); $token_field = '<input type="hidden" name="token_id" value="' . $token_id . '" />'; $token = Kit::Token($token_id); Theme::Set('form_id', 'EditEventForm'); Theme::Set('form_action', 'index.php?p=schedule&q=EditEvent'); Theme::Set('form_meta', $token_field . $token . '<input type="hidden" id="EventID" name="EventID" value="' . $eventID . '" />'); // Two tabs $tabs = array(); $tabs[] = FormManager::AddTab('general', __('General')); $tabs[] = FormManager::AddTab('repeats', __('Repeats')); Theme::Set('form_tabs', $tabs); $formFields = array(); // List of Display Groups $optionGroups = array(array('id' => 'group', 'label' => __('Groups')), array('id' => 'display', 'label' => __('Displays'))); $groups = array(); $displays = array(); $scheduleWithView = Config::GetSetting('SCHEDULE_WITH_VIEW_PERMISSION') == 'Yes'; foreach ($this->user->DisplayGroupList(-1) as $display) { // Can schedule with view, but no view permissions if ($scheduleWithView && $display['view'] != 1) { continue; } // Can't schedule with view, but no edit permissions if (!$scheduleWithView && $display['edit'] != 1) { continue; } $display['checked_text'] = in_array($display['displaygroupid'], $displayGroupIds) ? ' selected' : ''; if ($display['isdisplayspecific'] == 1) { $displays[] = $display; } else { $groups[] = $display; } } $formFields['general'][] = FormManager::AddMultiCombo('DisplayGroupIDs[]', __('Display'), $displayGroupIds, array('group' => $groups, 'display' => $displays), 'displaygroupid', 'displaygroup', __('Please select one or more displays / groups for this event to be shown on.'), 'd', '', true, '', '', '', $optionGroups, array(array('name' => 'data-live-search', 'value' => "true"), array('name' => 'data-selected-text-format', 'value' => "count > 4"))); // Time controls $formFields['general'][] = FormManager::AddText('starttimeControl', __('Start Time'), DateManager::getLocalDate($fromDT), __('Select the start time for this event'), 's', 'required'); $formFields['general'][] = FormManager::AddText('endtimeControl', __('End Time'), DateManager::getLocalDate($toDT), __('Select the end time for this event'), 'e', 'required'); // Add two hidden fields to always carry the ISO date $formFields['general'][] = FormManager::AddHidden('starttime', DateManager::getLocalDate($fromDT, "Y-m-d H:i", false)); $formFields['general'][] = FormManager::AddHidden('endtime', DateManager::getLocalDate($toDT, "Y-m-d H:i", false)); // Generate a list of layouts. $layouts = $user->CampaignList(NULL, false, false); $optionGroups = array(array('id' => 'campaign', 'label' => __('Campaigns')), array('id' => 'layout', 'label' => __('Layouts'))); $layoutOptions = array(); $campaignOptions = array(); foreach ($layouts as $layout) { if ($layout['islayoutspecific'] == 1) { $layoutOptions[] = array('id' => $layout['campaignid'], 'value' => $layout['campaign']); } else { $campaignOptions[] = array('id' => $layout['campaignid'], 'value' => $layout['campaign']); } } $formFields['general'][] = FormManager::AddCombo('CampaignID', __('Layout / Campaign'), $campaignId, array('campaign' => $campaignOptions, 'layout' => $layoutOptions), 'id', 'value', __('Please select a Layout or Campaign for this Event to show'), 'l', '', true, '', '', '', $optionGroups); $formFields['general'][] = FormManager::AddNumber('DisplayOrder', __('Display Order'), $displayOrder, __('Please select the order this event should appear in relation to others when there is more than one event scheduled'), 'o'); $formFields['general'][] = FormManager::AddCheckbox('is_priority', __('Priority'), $isPriority, __('Sets whether or not this event has priority. If set the event will be show in preference to other events.'), 'p'); $formFields['repeats'][] = FormManager::AddCombo('rec_type', __('Repeats'), $recType, array(array('id' => '', 'name' => __('None')), array('id' => 'Minute', 'name' => __('Per Minute')), array('id' => 'Hour', 'name' => __('Hourly')), array('id' => 'Day', 'name' => __('Daily')), array('id' => 'Week', 'name' => __('Weekly')), array('id' => 'Month', 'name' => __('Monthly')), array('id' => 'Year', 'name' => __('Yearly'))), 'id', 'name', __('What type of repeat is required?'), 'r'); $formFields['repeats'][] = FormManager::AddNumber('rec_detail', __('Repeat every'), $recDetail, __('How often does this event repeat?'), 'o', '', 'repeat-control-group'); $formFields['repeats'][] = FormManager::AddText('rec_rangeControl', __('Until'), $recToDT == 0 ? '' : DateManager::getLocalDate($recToDT), __('When should this event stop repeating?'), 'u', '', 'repeat-control-group'); $formFields['repeats'][] = FormManager::AddHidden('rec_range', DateManager::getLocalDate($recToDT, "Y-m-d H:i")); // Set some field dependencies $response->AddFieldAction('rec_type', 'init', '', array('.repeat-control-group' => array('display' => 'none'))); $response->AddFieldAction('rec_type', 'init', '', array('.repeat-control-group' => array('display' => 'block')), "not"); $response->AddFieldAction('rec_type', 'change', '', array('.repeat-control-group' => array('display' => 'none'))); $response->AddFieldAction('rec_type', 'change', '', array('.repeat-control-group' => array('display' => 'block')), "not"); Theme::Set('form_fields_general', $formFields['general']); Theme::Set('form_fields_repeats', $formFields['repeats']); $response->SetFormRequestResponse(NULL, __('Edit Event'), '800px', '600px'); $response->AddButton(__('Help'), "XiboHelpRender('index.php?p=help&q=Display&Topic=Schedule&Category=Edit')"); $response->AddButton(__('Delete'), 'XiboFormRender("index.php?p=schedule&q=DeleteForm&EventID=' . $eventID . '")'); $response->AddButton(__('Cancel'), 'XiboDialogClose()'); $response->AddButton(__('Save'), '$("#EditEventForm").attr("action", $("#EditEventForm").attr("action") + "&next=0").submit()'); $response->callBack = 'setupScheduleForm'; $response->Respond(); }
/** * Displays an Add/Edit form */ function displayForm() { $db =& $this->db; $user =& $this->user; $response = new ResponseManager(); $layoutId = Kit::GetParam('layoutid', _GET, _INT); // Get the layout if ($layoutId != 0) { $layout = $user->LayoutList(NULL, array('layoutId' => Kit::GetParam('layoutid', _GET, _INT))); if (count($layout) <= 0) { trigger_error(__('Unable to find Layout'), E_USER_ERROR); } $layout = $layout[0]; } Theme::Set('form_id', 'LayoutForm'); // Two tabs $tabs = array(); $tabs[] = FormManager::AddTab('general', __('General')); $tabs[] = FormManager::AddTab('description', __('Description')); Theme::Set('form_tabs', $tabs); $formFields = array(); $formFields['general'][] = FormManager::AddText('layout', __('Name'), isset($layout['layout']) ? $layout['layout'] : NULL, __('The Name of the Layout - (1 - 50 characters)'), 'n', 'required'); $formFields['general'][] = FormManager::AddText('tags', __('Tags'), isset($layout['tags']) ? $layout['tags'] : NULL, __('Tags for this layout - used when searching for it. Comma delimited. (1 - 250 characters)'), 't', 'maxlength="250"'); $formFields['description'][] = FormManager::AddMultiText('description', __('Description'), isset($layout['description']) ? $layout['description'] : NULL, __('An optional description of the Layout. (1 - 250 characters)'), 'd', 5, 'maxlength="250"'); if ($layoutId != 0) { // We are editing Theme::Set('form_action', 'index.php?p=layout&q=modify'); Theme::Set('form_meta', '<input type="hidden" name="layoutid" value="' . $layoutId . '">'); $formFields['general'][] = FormManager::AddCombo('retired', __('Retired'), $layout['retired'], array(array('retiredid' => '1', 'retired' => 'Yes'), array('retiredid' => '0', 'retired' => 'No')), 'retiredid', 'retired', __('Retire this layout or not? It will no longer be visible in lists'), 'r'); } else { // We are adding Theme::Set('form_action', 'index.php?p=layout&q=add'); $templates = $user->TemplateList(); array_unshift($templates, array('layoutid' => '0', 'layout' => 'None')); $formFields['general'][] = FormManager::AddCombo('templateid', __('Template'), NULL, $templates, 'layoutid', 'layout', __('Optionally choose a template you have saved before.'), 't'); $formFields['general'][] = FormManager::AddCombo('resolutionid', __('Resolution'), NULL, $user->ResolutionList(), 'resolutionid', 'resolution', __('Choose the resolution this Layout should be designed for.'), 'r', 'resolution-group'); $response->AddFieldAction('templateid', 'change', 0, array('.resolution-group' => array('display' => 'block'))); $response->AddFieldAction('templateid', 'change', 0, array('.resolution-group' => array('display' => 'none')), "not"); } Theme::Set('form_fields_general', $formFields['general']); Theme::Set('form_fields_description', $formFields['description']); // Initialise the template and capture the output $form = Theme::RenderReturn('form_render'); $dialogTitle = $this->layoutid == 0 ? __('Add Layout') : __('Edit Layout'); $response->SetFormRequestResponse($form, $dialogTitle, '350px', '275px'); $response->AddButton(__('Help'), 'XiboHelpRender("' . ($this->layoutid != '' ? HelpManager::Link('Layout', 'Edit') : HelpManager::Link('Layout', 'Add')) . '")'); $response->AddButton(__('Cancel'), 'XiboDialogClose()'); $response->AddButton(__('Save'), '$("#LayoutForm").submit()'); $response->Respond(); }
function ManualRegionPositionForm() { $db =& $this->db; $user =& $this->user; $response = new ResponseManager(); $regionid = Kit::GetParam('regionid', _GET, _STRING); $layoutid = Kit::GetParam('layoutid', _GET, _INT); $scale = Kit::GetParam('scale', _GET, _DOUBLE); $zoom = Kit::GetParam('zoom', _GET, _DOUBLE); // Load the region and get the dimensions, applying the scale factor if necessary (only v1 layouts will have a scale factor != 1) $region = new region($db); $regionNode = $region->getRegion($layoutid, $regionid); $top = round($regionNode->getAttribute('top') * $scale, 0); $left = round($regionNode->getAttribute('left') * $scale, 0); $width = round($regionNode->getAttribute('width') * $scale, 0); $height = round($regionNode->getAttribute('height') * $scale, 0); $zindex = $regionNode->getAttribute('zindex'); $ownerId = $region->GetOwnerId($layoutid, $regionid); $regionName = $regionNode->getAttribute('name'); $regionAuth = $this->user->RegionAssignmentAuth($ownerId, $layoutid, $regionid, true); if (!$regionAuth->edit) { trigger_error(__('You do not have permissions to edit this region'), E_USER_ERROR); } // Set some information about the form Theme::Set('form_id', 'RegionProperties'); Theme::Set('form_action', 'index.php?p=timeline&q=ManualRegionPosition'); Theme::Set('form_meta', '<input type="hidden" name="layoutid" value="' . $layoutid . '"><input type="hidden" name="regionid" value="' . $regionid . '"><input type="hidden" name="scale" value="' . $scale . '"><input type="hidden" name="zoom" value="' . $zoom . '">'); $formFields = array(); $formFields[] = FormManager::AddText('name', __('Name'), $regionName, __('Name of the Region'), 'n', 'maxlength="50"'); $formFields[] = FormManager::AddNumber('top', __('Top'), $top, __('Offset from the Top Corner'), 't'); $formFields[] = FormManager::AddNumber('left', __('Left'), $left, __('Offset from the Left Corner'), 'l'); $formFields[] = FormManager::AddNumber('width', __('Width'), $width, __('Width of the Region'), 'w'); $formFields[] = FormManager::AddNumber('height', __('Height'), $height, __('Height of the Region'), 'h'); // Transitions if (count($this->user->TransitionAuth('out')) > 0) { // Add none to the list $transitions = $this->user->TransitionAuth('out'); $transitions[] = array('code' => '', 'transition' => 'None', 'class' => ''); $formFields[] = FormManager::AddCombo('transitionType', __('Exit Transition'), $region->GetOption($layoutid, $regionid, 'transOut', ''), $transitions, 'code', 'transition', __('What transition should be applied when this region is finished?'), 't'); $formFields[] = FormManager::AddNumber('transitionDuration', __('Duration'), $region->GetOption($layoutid, $regionid, 'transOutDuration', 0), __('The duration for this transition, in milliseconds.'), 'l', '', 'transition-group'); // Compass points for direction $compassPoints = array(array('id' => 'N', 'name' => __('North')), array('id' => 'NE', 'name' => __('North East')), array('id' => 'E', 'name' => __('East')), array('id' => 'SE', 'name' => __('South East')), array('id' => 'S', 'name' => __('South')), array('id' => 'SW', 'name' => __('South West')), array('id' => 'W', 'name' => __('West')), array('id' => 'NW', 'name' => __('North West'))); $formFields[] = FormManager::AddCombo('transitionDirection', __('Direction'), $region->GetOption($layoutid, $regionid, 'transOutDirection', ''), $compassPoints, 'id', 'name', __('The direction for this transition. Only appropriate for transitions that move, such as Fly.'), 'd', 'transition-group transition-direction'); // Add some dependencies $response->AddFieldAction('transitionType', 'init', '', array('.transition-group' => array('display' => 'none'))); $response->AddFieldAction('transitionType', 'init', '', array('.transition-group' => array('display' => 'block')), 'not'); $response->AddFieldAction('transitionType', 'change', '', array('.transition-group' => array('display' => 'none'))); $response->AddFieldAction('transitionType', 'change', '', array('.transition-group' => array('display' => 'block')), 'not'); } $formFields[] = FormManager::AddCheckbox('loop', __('Loop?'), $region->GetOption($layoutid, $regionid, 'loop', 0), __('If there is only one item in this region should it loop? Not currently available for Windows Players.'), 'l'); $formFields[] = FormManager::AddNumber('zindex', __('Layer'), $zindex == 0 ? NULL : $zindex, __('The layering order of this region (z-index). Advanced use only. '), 'z'); Theme::Set('form_fields', $formFields); // Add some information about the whole layout to this request. $layout = new Layout(); $layoutInformation = $layout->LayoutInformation($layoutid); $response->extra['layoutInformation'] = array('width' => $layoutInformation['width'], 'height' => $layoutInformation['height']); $response->SetFormRequestResponse(NULL, __('Region Options'), '350px', '275px'); $response->AddButton(__('Cancel'), 'XiboDialogClose()'); $response->AddButton(__('Save'), '$("#RegionProperties").submit()'); $response->AddButton(__('Set Full Screen'), 'setFullScreenLayout()'); $response->Respond(); }