コード例 #1
0
 /**
  * getFieldValues
  */
 public function getValues()
 {
     $values = array('title' => $this->table->getTitle(), 'add_perm' => $this->table->getAddPerm(), 'edit_perm' => $this->table->getEditPerm(), 'delete_perm' => $this->table->getDeletePerm(), 'edit_by_owner' => $this->table->getEditByOwner(), 'export_enabled' => $this->table->getExportEnabled(), 'limited' => $this->table->getLimited(), 'limit_start' => array("date" => substr($this->table->getLimitStart(), 0, 10), "time" => substr($this->table->getLimitStart(), -8)), 'limit_end' => array("date" => substr($this->table->getLimitEnd(), 0, 10), "time" => substr($this->table->getLimitEnd(), -8)), 'is_visible' => $this->table->getIsVisible(), 'default_sort_field' => $this->table->getDefaultSortField(), 'default_sort_field_order' => $this->table->getDefaultSortFieldOrder(), 'description' => $this->table->getDescription(), 'public_comments' => $this->table->getPublicCommentsEnabled(), 'view_own_records_perm' => $this->table->getViewOwnRecordsPerm());
     if (!$this->table->getLimitStart()) {
         $values['limit_start'] = NULL;
     }
     if (!$this->table->getLimitEnd()) {
         $values['limit_end'] = NULL;
     }
     $this->form->setValuesByArray($values);
 }
コード例 #2
0
 /**
  * @description Parse data from record objects to an array that is then set to this table with ::setData()
  */
 private function buildData()
 {
     global $ilCtrl, $lng;
     $data = array();
     foreach ($this->object_data as $record) {
         $record_data = array();
         $record_data["_front"] = NULL;
         $record_data['_record'] = $record;
         foreach ($this->table->getVisibleFields() as $field) {
             $title = $field->getTitle();
             $record_data[$title] = $record->getRecordFieldHTML($field->getId());
             // Additional column filled in ::fillRow() method, showing the learning progress
             if ($field->getLearningProgress()) {
                 $record_data["_status_" . $title] = $this->getStatus($record, $field);
             }
             if ($field->getId() == 'comments') {
                 $record_data['n_comments'] = count($record->getComments());
             }
         }
         $ilCtrl->setParameterByClass("ildatacollectionfieldeditgui", "record_id", $record->getId());
         $ilCtrl->setParameterByClass("ildatacollectionrecordviewgui", "record_id", $record->getId());
         $ilCtrl->setParameterByClass("ildatacollectionrecordeditgui", "record_id", $record->getId());
         $ilCtrl->setParameterByClass("ildatacollectionrecordeditgui", "mode", $this->mode);
         if (ilDataCollectionRecordViewGUI::hasTableValidViewDefinition($this->table)) {
             $record_data["_front"] = $ilCtrl->getLinkTargetByClass("ildatacollectionrecordviewgui", 'renderRecord');
         }
         $alist = new ilAdvancedSelectionListGUI();
         $alist->setId($record->getId());
         $alist->setListTitle($lng->txt("actions"));
         if (ilDataCollectionRecordViewGUI::hasTableValidViewDefinition($this->table)) {
             $alist->addItem($lng->txt('view'), 'view', $ilCtrl->getLinkTargetByClass("ildatacollectionrecordviewgui", 'renderRecord'));
         }
         if ($record->hasPermissionToEdit($this->parent_obj->parent_obj->ref_id)) {
             $alist->addItem($lng->txt('edit'), 'edit', $ilCtrl->getLinkTargetByClass("ildatacollectionrecordeditgui", 'edit'));
         }
         if ($record->hasPermissionToDelete($this->parent_obj->parent_obj->ref_id)) {
             $alist->addItem($lng->txt('delete'), 'delete', $ilCtrl->getLinkTargetByClass("ildatacollectionrecordeditgui", 'confirmDelete'));
         }
         if ($this->table->getPublicCommentsEnabled()) {
             $alist->addItem($lng->txt('dcl_comments'), 'comment', '', '', '', '', '', '', $this->getCommentsAjaxLink($record->getId()));
         }
         $record_data["_actions"] = $alist->getHTML();
         $data[] = $record_data;
     }
     $this->setData($data);
 }
コード例 #3
0
 /**
  * @param bool $editComments
  */
 public function renderRecord($editComments = false)
 {
     global $ilTabs, $tpl, $ilCtrl, $lng;
     $rctpl = new ilTemplate("tpl.record_view.html", false, true, "Modules/DataCollection");
     $ilTabs->setTabActive("id_content");
     $view_id = self::_getViewDefinitionId($this->record_obj);
     if (!$view_id) {
         $ilCtrl->redirectByClass("ildatacollectionrecordlistgui", "listRecords");
     }
     // see ilObjDataCollectionGUI->executeCommand about instantiation
     include_once "./Modules/DataCollection/classes/class.ilDataCollectionRecordViewViewdefinitionGUI.php";
     $pageObj = new ilDataCollectionRecordViewViewdefinitionGUI($this->record_obj->getTableId(), $view_id);
     include_once "./Services/Style/classes/class.ilObjStyleSheet.php";
     $pageObj->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId(0, "dcl"));
     $html = $pageObj->getHTML();
     $rctpl->addCss("./Services/COPage/css/content.css");
     $rctpl->fillCssFiles();
     $table = ilDataCollectionCache::getTableCache($this->record_obj->getTableId());
     foreach ($table->getRecordFields() as $field) {
         //ILIAS_Ref_Links
         $pattern = '/\\[dcliln field="' . preg_quote($field->getTitle(), "/") . '"\\](.*?)\\[\\/dcliln\\]/';
         if (preg_match($pattern, $html)) {
             $html = preg_replace($pattern, $this->record_obj->getRecordFieldSingleHTML($field->getId(), $this->setOptions("\$1")), $html);
         }
         //DataCollection Ref Links
         $pattern = '/\\[dclrefln field="' . preg_quote($field->getTitle(), "/") . '"\\](.*?)\\[\\/dclrefln\\]/';
         if (preg_match($pattern, $html)) {
             $this->currentField = $field;
             $html = preg_replace_callback($pattern, array($this, "doReplace"), $html);
         }
         $pattern = '/\\[ext tableOf="' . preg_quote($field->getTitle(), "/") . '" field="(.*?)"\\]/';
         if (preg_match($pattern, $html)) {
             $this->currentField = $field;
             $html = preg_replace_callback($pattern, array($this, "doExtReplace"), $html);
         }
         $html = str_ireplace("[" . $field->getTitle() . "]", $this->record_obj->getRecordFieldSingleHTML($field->getId()), $html);
     }
     foreach ($table->getStandardFields() as $field) {
         $html = str_ireplace("[" . $field->getId() . "]", $this->record_obj->getRecordFieldSingleHTML($field->getId()), $html);
     }
     $rctpl->setVariable("CONTENT", $html);
     //Permanent Link
     $perma_link = new ilPermanentLinkGUI("dcl", $_GET["ref_id"], "_" . $_GET['record_id']);
     $tpl->setVariable('PRMLINK', $perma_link->getHTML());
     // Buttons for previous/next records
     if ($this->is_enabled_paging) {
         $prevNextLinks = $this->renderPrevNextLinks();
         $rctpl->setVariable('PREV_NEXT_RECORD_LINKS', $prevNextLinks);
         $ilCtrl->clearParameters($this);
         // #14083
         $rctpl->setVariable('FORM_ACTION', $ilCtrl->getFormAction($this));
         $rctpl->setVariable('RECORD', $lng->txt('dcl_record'));
         $rctpl->setVariable('RECORD_FROM_TOTAL', sprintf($lng->txt('dcl_record_from_total'), $this->current_record_position, count($this->record_ids)));
         $rctpl->setVariable('SELECT_OPTIONS', $this->renderSelectOptions());
     }
     // Edit Button
     if ($this->record_obj->hasPermissionToEdit((int) $_GET['ref_id'])) {
         $button = ilLinkButton::getInstance();
         $ilCtrl->setParameterByClass('ildatacollectionrecordeditgui', 'table_id', $this->table->getId());
         $ilCtrl->setParameterByClass('ildatacollectionrecordeditgui', 'redirect', ilDataCollectionRecordEditGUI::REDIRECT_DETAIL);
         $ilCtrl->saveParameterByClass('ildatacollectionrecordeditgui', 'record_id');
         $button->setUrl($ilCtrl->getLinkTargetByClass('ildatacollectionrecordeditgui', 'edit'));
         $button->setCaption($lng->txt('dcl_edit_record'), false);
         $rctpl->setVariable('EDIT_RECORD_BUTTON', $button->render());
     }
     // Comments
     if ($this->table->getPublicCommentsEnabled()) {
         $rctpl->setVariable('COMMENTS', $this->renderComments($editComments));
     }
     $tpl->setContent($rctpl->get());
 }
コード例 #4
0
 /**
  * @param ilDataCollectionTable $original
  */
 public function cloneStructure(ilDataCollectionTable $original)
 {
     $this->setTitle($original->getTitle());
     $this->setDescription($original->getDescription());
     $this->setIsVisible($original->getIsVisible());
     $this->setEditByOwner($original->getEditByOwner());
     $this->setAddPerm($original->getAddPerm());
     $this->setEditPerm($original->getEditPerm());
     $this->setDeletePerm($original->getDeletePerm());
     $this->setLimited($original->getLimited());
     $this->setLimitStart($original->getLimitStart());
     $this->setLimitEnd($original->getLimitEnd());
     $this->setViewOwnRecordsPerm($original->getViewOwnRecordsPerm());
     $this->setExportEnabled($original->getExportEnabled());
     $this->setPublicCommentsEnabled($original->getPublicCommentsEnabled());
     $this->setDefaultSortFieldOrder($original->getDefaultSortFieldOrder());
     $this->doCreate();
     // reset stdFields to get new for the created object
     $default_sort_field = 0;
     // Clone standard-fields
     $org_std_fields = $original->getStandardFields();
     foreach ($this->getStandardFields() as $element_key => $std_field) {
         $std_field->cloneStructure($org_std_fields[$element_key]);
         if ($std_field->getId() == $original->getDefaultSortField()) {
             $default_sort_field = $std_field->getId();
         }
     }
     // Clone fields
     $new_fields = array();
     foreach ($original->getFields() as $orig_field) {
         if (!$orig_field->isStandardField()) {
             $new_field = new ilDataCollectionField();
             $new_field->setTableId($this->getId());
             $new_field->cloneStructure($orig_field->getId());
             $new_fields[$orig_field->getId()] = $new_field;
             if ($orig_field->getId() == $original->getDefaultSortField()) {
                 $default_sort_field = $new_field->getId();
             }
         }
     }
     $this->setDefaultSortField($default_sort_field);
     $this->doUpdate();
     //TODO: Find better way to copy data (include referenced data)
     // Clone Records with recordfields
     /*foreach($original->getRecords() as $orig_record){
     			$new_record = new ilDataCollectionRecord();
     			$new_record->setTableId($this->getId());
     			$new_record->cloneStructure($orig_record->getId(), $new_fields);
     		}*/
     if ($old_view_id = ilDataCollectionRecordViewViewdefinition::getIdByTableId($original->getId())) {
         $old_view = new ilDataCollectionRecordViewViewdefinition($old_view_id);
         $old_view->setTableId($original->getId());
         $viewdef = new ilDataCollectionRecordViewViewdefinition();
         $viewdef->setTableId($this->id);
         $viewdef->setXMLContent($old_view->getXMLContent(false));
         $viewdef->create();
     }
 }