/** * 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); }
/** * @param ilDataCollectionRecordListGUI $a_parent_obj * @param string $a_parent_cmd * @param ilDataCollectionTable $table * @param int $mode */ public function __construct(ilDataCollectionRecordListGUI $a_parent_obj, $a_parent_cmd, ilDataCollectionTable $table, $mode = ilDataCollectionRecordListGUI::MODE_VIEW) { global $lng, $ilCtrl; $identifier = 'dcl_rl' . $table->getId(); $this->setPrefix($identifier); $this->setFormName($identifier); $this->setId($identifier); parent::__construct($a_parent_obj, $a_parent_cmd); $this->table = $table; $this->parent_obj = $a_parent_obj; $this->setRowTemplate("tpl.record_list_row.html", "Modules/DataCollection"); $this->mode = $mode; // Setup columns and sorting columns if ($this->mode == ilDataCollectionRecordListGUI::MODE_MANAGE) { // Add checkbox columns $this->addColumn("", "", "1", true); $this->setSelectAllCheckbox("record_ids[]"); $this->addMultiCommand("confirmDeleteRecords", $lng->txt('dcl_delete_records')); } if (ilDataCollectionRecordViewGUI::hasTableValidViewDefinition($this->table)) { $this->addColumn("", "_front", '15px'); } $this->numeric_fields = array(); foreach ($this->table->getVisibleFields() as $field) { $title = $field->getTitle(); $sort_field = $title; if ($field->getId() == 'comments') { $sort_field = 'n_comments'; $this->numeric_fields[] = $title; } $this->addColumn($title, $sort_field); if ($field->getLearningProgress()) { $this->addColumn($lng->txt("dcl_status"), "_status_" . $field->getTitle()); } if ($field->getDatatypeId() == ilDataCollectionDatatype::INPUTFORMAT_NUMBER) { $this->numeric_fields[] = $title; } } $this->addColumn($lng->txt("actions"), "", "30px"); $this->setTopCommands(true); $this->setEnableHeader(true); $this->setShowRowsSelector(true); $this->setShowTemplates(true); $this->setEnableHeader(true); $this->setEnableTitle(true); $this->setDefaultOrderDirection($this->table->getDefaultSortFieldOrder()); // Set a default sorting? $default_sort_title = 'id'; if ($fieldId = $this->table->getDefaultSortField()) { if (ilDataCollectionStandardField::_isStandardField($fieldId)) { /** @var $stdField ilDataCollectionStandardField */ foreach (ilDataCollectionStandardField::_getStandardFields($this->table->getId()) as $stdField) { if ($stdField->getId() == $fieldId) { $default_sort_title = $stdField->getTitle(); break; } } } else { $default_sort_title = ilDataCollectionCache::getFieldCache($fieldId)->getTitle(); } $this->setDefaultOrderField($default_sort_title); } $this->setFormAction($ilCtrl->getFormAction($a_parent_obj, "applyFilter")); $this->initFilter(); $this->setStyle('table', $this->getStyle('table') . ' ' . 'dcl_record_list'); }
/** * @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(); } }