示例#1
0
 /**
  * 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();
 }
示例#2
0
 /**
  * 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();
 }
示例#3
0
 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();
 }