Application->LinkVar('module_key'); } /** * Prints list content using block specified * * @param Array $params * @return string * @access public */ function PrintList($params) { $list =& $this->GetList($params); $id_field = $this->Application->getUnitOption($this->Prefix,'IDField'); $list->Query(); $o = ''; $list->GoFirst(); $block_params=$this->prepareTagParams($params); // $block_params['name'] = $this->SelectParam($params, 'render_as,block'); $block_params['pass_params'] = 'true'; $block_params['IdField'] = $list->IDField; $prev_heading = ''; $next_block = $params['full_block']; $this->groupRecords($list->Records, 'heading'); $field_values = $this->Application->GetVar($this->getPrefixSpecial(true)); while (!$list->EOL()) { $this->Application->SetVar( $this->getPrefixSpecial().'_id', $list->GetDBField($id_field) ); // for edit/delete links using GET // using 2 blocks for drawing o row in case if current & next record titles match $next_item_prompt = $list->CurrentIndex + 1 < $list->RecordsCount ? $list->Records[$list->CurrentIndex + 1]['prompt'] : ''; $this_item_prompt = $list->GetDBField('prompt'); if ($next_item_prompt == $this_item_prompt) { $curr_block = $params['half_block1']; $next_block = $params['half_block2']; } else { $curr_block = $next_block; $next_block = $params['full_block']; } $block_params['name'] = $curr_block; $block_params['show_heading'] = ($prev_heading != $list->GetDBField('heading') ) ? 1 : 0; // set values from submit if any if ($field_values) { $list->SetDBField('VariableValue', $field_values[$list->GetDBField('VariableName')]['VariableValue']); } $o.= $this->Application->ParseBlock($block_params, 1); $prev_heading = $list->GetDBField('heading'); $list->GoNext(); } $this->Application->RemoveVar('ModuleRootCategory'); $this->Application->SetVar( $this->getPrefixSpecial().'_id', ''); return $o; } function getModuleItemName() { $module = $this->Application->GetVar('module'); $table = $this->Application->getUnitOption('confs', 'TableName'); $sql = 'SELECT ConfigHeader FROM '.$table.' WHERE ModuleName = '.$this->Conn->qstr($module); return $this->Conn->GetOne($sql); } function PrintConfList($params) { $list =& $this->GetList($params); $id_field = $this->Application->getUnitOption($this->Prefix, 'IDField'); $list->PerPage = -1; $list->Query(); $o = ''; $list->GoFirst(); $tmp_row = Array(); while (!$list->EOL()) { $rec = $list->getCurrentRecord(); $tmp_row[0][$rec['VariableName']] = $rec['VariableValue']; $tmp_row[0][$rec['VariableName'].'_prompt'] = $rec['prompt']; $list->GoNext(); } $list->Records = $tmp_row; $block_params = $this->prepareTagParams($params); $block_params['name'] = $this->SelectParam($params, 'render_as,block'); $block_params['module_key'] = $this->Application->GetVar('module_key'); $block_params['module_item'] = $this->getModuleItemName(); $list->GoFirst(); return $this->Application->ParseBlock($block_params, 1); } function ShowRelevance($params) { return $this->Application->GetVar('module_key') != '_'; } function ConfigValue($params) { return $this->Application->ConfigValue($params['name']); } function Error($params) { $object =& $this->Application->recallObject( $this->getPrefixSpecial() ); $field = $object->GetDBField($params['id_field']); $errors = $this->Application->GetVar('errormsgs'); $errors = $errors[$this->getPrefixSpecial()]; if (isset($errors[$field])) { $msg = $this->Application->Phrase($errors[$field]); } else { $msg = ''; } return $msg; } /** * Allows to show category path of selected module * * @param Array $params * @return string */ function CategoryPath($params) { $block_params['separator'] = $params['separator']; if (!isset($params['cat_id'])) { $params['cat_id'] = $this->ModuleRootCategory( Array() ); } if ($params['cat_id'] == 0) { $block_params['cat_id'] = 0; $block_params['cat_name'] = $this->Application->ProcessParsedTag('m', 'RootCategoryName', $params); $block_params['name'] = $this->SelectParam($params, 'root_cat_render_as,block_root_cat,rootcatblock,render_as'); return $this->Application->ParseBlock($block_params); } else { $ml_formatter =& $this->Application->recallObject('kMultiLanguage'); $navbar_field = $ml_formatter->LangFieldName('CachedNavBar'); $id_field = $this->Application->getUnitOption('c', 'IDField'); $table_name = $this->Application->getUnitOption('c', 'TableName'); $sql = 'SELECT '.$navbar_field.', ParentPath FROM '.$table_name.' WHERE '.$id_field.' = '.$params['cat_id']; $category_data = $this->Conn->GetRow($sql); $ret = ''; if ($category_data) { $category_names = explode('|', $category_data[$navbar_field]); $category_ids = explode('|', substr($category_data['ParentPath'], 1, -1)); // add "Home" category at beginning of path array_unshift($category_names, $this->Application->ProcessParsedTag('m', 'RootCategoryName', $params)); array_unshift($category_ids, 0); foreach ($category_ids as $category_pos => $category_id) { $block_params['cat_id'] = $category_id; $block_params['cat_name'] = $category_names[$category_pos]; $block_params['name'] = $this->SelectParam($params, 'render_as,block'); $this->Application->SetVar($this->Prefix.'_id', $category_id); $ret .= $this->Application->ParseBlock($block_params, 1); } } return $ret; } } /** * Shows edit warning in case if module root category changed but not saved * * @param Array $params * @return string */ function SaveWarning($params) { $temp_category_id = $this->Application->RecallVar('ModuleRootCategory'); if ($temp_category_id !== false) { return $this->Application->ParseBlock($params); } return ''; } function ModuleRootCategory($params) { $category_id = $this->Application->RecallVar('ModuleRootCategory'); if ($category_id === false) { $category_id = $this->Application->findModule('Name', $this->Application->GetVar('module'), 'RootCat'); } return $category_id; } } ?>